module Content.ModeKind
( content
) where
import Prelude ()
import Game.LambdaHack.Core.Prelude
import Content.ModeKindPlayer
import Game.LambdaHack.Content.CaveKind (CaveKind)
import Game.LambdaHack.Content.ModeKind
import Game.LambdaHack.Core.Dice
import Game.LambdaHack.Definition.Defs
content :: [ModeKind]
content :: [ModeKind]
content =
[ModeKind
raid, ModeKind
brawl, ModeKind
shootout, ModeKind
hunt, ModeKind
escape, ModeKind
zoo, ModeKind
ambush, ModeKind
crawl, ModeKind
crawlEmpty, ModeKind
crawlSurvival, ModeKind
dig, ModeKind
see, ModeKind
safari, ModeKind
safariSurvival, ModeKind
battle, ModeKind
battleDefense, ModeKind
battleSurvival, ModeKind
defense, ModeKind
defenseEmpty, ModeKind
screensaverRaid, ModeKind
screensaverBrawl, ModeKind
screensaverShootout, ModeKind
screensaverHunt, ModeKind
screensaverEscape, ModeKind
screensaverZoo, ModeKind
screensaverAmbush, ModeKind
screensaverCrawl, ModeKind
screensaverSafari]
raid, brawl, shootout, hunt, escape, zoo, ambush, crawl, crawlEmpty, crawlSurvival, dig, see, safari, safariSurvival, battle, battleDefense, battleSurvival, defense, defenseEmpty, screensaverRaid, screensaverBrawl, screensaverShootout, screensaverHunt, screensaverEscape, screensaverZoo, screensaverAmbush, screensaverCrawl, screensaverSafari :: ModeKind
raid :: ModeKind
raid = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'r'
, mname :: Text
mname = "solo raid (1)"
, mfreq :: Freqs ModeKind
mfreq = [("solo", 1), ("raid", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterRaid
, mcaves :: Caves
mcaves = Caves
cavesRaid
, mendMsg :: [(Outcome, Text)]
mendMsg = [ (Outcome
Killed, "This expedition has gone wrong. However, scientific mind does not despair, but analyzes and corrects. Did you perchance awake one animal too many? Did you remember to try using all consumables at your disposal for your immediate survival? Did you choose a challenge with difficulty level within your means? Answer honestly, ponder wisely, experiment methodically.")
, (Outcome
Defeated, "Regrettably, the other team snatched the grant, while you were busy contemplating natural phenomena. Science is a competitive sport, as sad as it sounds. It's not enough to make a discovery, you have to get there first.")
, (Outcome
Escape, "You've got hold of the machine! Think of the hours of fun taking it apart and putting it back together again! That's a great first step on your quest to solve the typing problems of the world.") ]
, mdesc :: Text
mdesc = "An incredibly advanced typing machine worth 100 gold is buried at the exit of this maze. Be the first to find it and fund a research team that makes typing accurate and dependable forever."
}
brawl :: ModeKind
brawl = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'k'
, mname :: Text
mname = "melee brawl (2)"
, mfreq :: Freqs ModeKind
mfreq = [("melee", 1), ("brawl", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterBrawl
, mcaves :: Caves
mcaves = Caves
cavesBrawl
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Your engineering team disagrees over a drink with some gentlemen scientists about premises of a relative completeness theorem and there's only one way to settle that. Remember to keep your party together, or the opposing team might be tempted to gang upon a solitary disputant."
}
shootout :: ModeKind
shootout = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 's'
, mname :: Text
mname = "foggy shootout (3)"
, mfreq :: Freqs ModeKind
mfreq = [("foggy", 1), ("shootout", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterShootout
, mcaves :: Caves
mcaves = Caves
cavesShootout
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Whose arguments are most striking and whose ideas fly fastest? Let's scatter up, attack the problems from different angles and find out. (To display the trajectory of any soaring entity, point it with the crosshair in aiming mode.)"
}
hunt :: ModeKind
hunt = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'h'
, mname :: Text
mname = "perilous hunt (4)"
, mfreq :: Freqs ModeKind
mfreq = [("perilous", 1), ("hunt", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterHunt
, mcaves :: Caves
mcaves = Caves
cavesHunt
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Who is the hunter and who is the prey?"
}
escape :: ModeKind
escape = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'e'
, mname :: Text
mname = "night escape (5)"
, mfreq :: Freqs ModeKind
mfreq = [("night", 1), ("escape", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterEscape
, mcaves :: Caves
mcaves = Caves
cavesEscape
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Dwelling into dark matters is dangerous, so avoid the crowd of firebrand disputants, catch any gems of thought, find a way out and bring back a larger team to shed new light on the field."
}
zoo :: ModeKind
zoo = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'b'
, mname :: Text
mname = "burning zoo (6)"
, mfreq :: Freqs ModeKind
mfreq = [("burning", 1), ("zoo", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterZoo
, mcaves :: Caves
mcaves = Caves
cavesZoo
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "The heat of the dispute reaches the nearby Wonders of Science and Nature exhibition, igniting greenery, nets and cages. Crazed animals must be dissuaded from ruining precious scientific equipment and setting back the otherwise fruitful exchange of ideas."
}
ambush :: ModeKind
ambush = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'm'
, mname :: Text
mname = "ranged ambush (7)"
, mfreq :: Freqs ModeKind
mfreq = [("ranged", 1), ("ambush", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterAmbush
, mcaves :: Caves
mcaves = Caves
cavesAmbush
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Prevent hijacking of your ideas at all cost! Be stealthy, be observant, be aggressive. Fast execution is what makes or breaks a creative team."
}
crawl :: ModeKind
crawl = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'c'
, mname :: Text
mname = "deep crawl (long)"
, mfreq :: Freqs ModeKind
mfreq = [("deep", 1), ("crawl", 1), ("campaign scenario", 1)]
, mroster :: Roster
mroster = Roster
rosterCrawl
, mcaves :: Caves
mcaves = Caves
cavesCrawl
, mendMsg :: [(Outcome, Text)]
mendMsg = [ (Outcome
Killed, "To think that followers of science and agents of enlightenment would earn death as their reward! Where did we err in our ways? Perhaps nature should not have been disturbed so brashly and the fell beasts woken up from their slumber so eagerly? Perhaps the gathered items should have been used for scientific experiments on the spot rather than hoarded as if of base covetousness? Or perhaps the challenge, chosen freely but without the foreknowledge of the grisly difficulty, was insurmountable and forlorn from the start, despite the enormous power of educated reason at out disposal?")
, (Outcome
Escape, "It's better to live to tell the tale than to choke on more than one can swallow. There was no more exquisite cultural artifacts and glorious scientific wonders in these forbidding tunnels anyway. Or were there?") ]
, mdesc :: Text
mdesc = "Enjoy the peaceful seclusion of these cold austere tunnels, but don't let wanton curiosity, greed and the ever-creeping abstraction madness keep you down there for too long. If you find survivors (whole or perturbed or segmented) of the past scientific missions, exercise extreme caution and engage or ignore at your discretion."
}
safari :: ModeKind
safari = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'f'
, mname :: Text
mname = "safari"
, mfreq :: Freqs ModeKind
mfreq = [("safari", 1)]
, mroster :: Roster
mroster = Roster
rosterSafari
, mcaves :: Caves
mcaves = Caves
cavesSafari
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "\"In this enactment you'll discover the joys of hunting the most exquisite of Earth's flora and fauna, both animal and semi-intelligent. Exit at the bottommost level.\" This is a drama script recovered from a monster nest debris."
}
dig :: ModeKind
dig = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'd'
, mname :: Text
mname = "dig"
, mfreq :: Freqs ModeKind
mfreq = [("dig", 1)]
, mroster :: Roster
mroster = Roster
rosterCrawlEmpty
, mcaves :: Caves
mcaves = Caves
cavesDig
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Delve deeper!"
}
see :: ModeKind
see = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'a'
, mname :: Text
mname = "see"
, mfreq :: Freqs ModeKind
mfreq = [("see", 1)]
, mroster :: Roster
mroster = Roster
rosterCrawlEmpty
, mcaves :: Caves
mcaves = Caves
cavesSee
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "See all!"
}
crawlEmpty :: ModeKind
crawlEmpty = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'c'
, mname :: Text
mname = "crawl empty"
, mfreq :: Freqs ModeKind
mfreq = [("crawl empty", 1)]
, mroster :: Roster
mroster = Roster
rosterCrawlEmpty
, mcaves :: Caves
mcaves = Caves
cavesCrawl
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Enjoy the free space."
}
crawlSurvival :: ModeKind
crawlSurvival = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'd'
, mname :: Text
mname = "crawl survival"
, mfreq :: Freqs ModeKind
mfreq = [("crawl survival", 1)]
, mroster :: Roster
mroster = Roster
rosterCrawlSurvival
, mcaves :: Caves
mcaves = Caves
cavesCrawl
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Lure the human intruders deeper and deeper."
}
safariSurvival :: ModeKind
safariSurvival = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'u'
, mname :: Text
mname = "safari survival"
, mfreq :: Freqs ModeKind
mfreq = [("safari survival", 1)]
, mroster :: Roster
mroster = Roster
rosterSafariSurvival
, mcaves :: Caves
mcaves = Caves
cavesSafari
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "In this enactment you'll discover the joys of being hunted among the most exquisite of Earth's flora and fauna, both animal and semi-intelligent."
}
battle :: ModeKind
battle = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'b'
, mname :: Text
mname = "battle"
, mfreq :: Freqs ModeKind
mfreq = [("battle", 1)]
, mroster :: Roster
mroster = Roster
rosterBattle
, mcaves :: Caves
mcaves = Caves
cavesBattle
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Odds are stacked against those that unleash the horrors of abstraction."
}
battleDefense :: ModeKind
battleDefense = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'f'
, mname :: Text
mname = "battle defense"
, mfreq :: Freqs ModeKind
mfreq = [("battle defense", 1)]
, mroster :: Roster
mroster = Roster
rosterBattleDefense
, mcaves :: Caves
mcaves = Caves
cavesBattle
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Odds are stacked for those that breathe mathematics."
}
battleSurvival :: ModeKind
battleSurvival = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'i'
, mname :: Text
mname = "battle survival"
, mfreq :: Freqs ModeKind
mfreq = [("battle survival", 1)]
, mroster :: Roster
mroster = Roster
rosterBattleSurvival
, mcaves :: Caves
mcaves = Caves
cavesBattle
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Odds are stacked for those that ally with the strongest."
}
defense :: ModeKind
defense = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'e'
, mname :: Text
mname = "defense"
, mfreq :: Freqs ModeKind
mfreq = [("defense", 1)]
, mroster :: Roster
mroster = Roster
rosterDefense
, mcaves :: Caves
mcaves = Caves
cavesCrawl
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Don't let human interlopers defile your abstract secrets and flee unpunished!"
}
defenseEmpty :: ModeKind
defenseEmpty = $WModeKind :: Char
-> Text
-> Freqs ModeKind
-> Roster
-> Caves
-> [(Outcome, Text)]
-> Text
-> ModeKind
ModeKind
{ msymbol :: Char
msymbol = 'e'
, mname :: Text
mname = "defense empty"
, mfreq :: Freqs ModeKind
mfreq = [("defense empty", 1)]
, mroster :: Roster
mroster = Roster
rosterDefenseEmpty
, mcaves :: Caves
mcaves = Caves
cavesCrawl
, mendMsg :: [(Outcome, Text)]
mendMsg = []
, mdesc :: Text
mdesc = "Lord over."
}
screensave :: AutoLeader -> Roster -> Roster
screensave :: AutoLeader -> Roster -> Roster
screensave auto :: AutoLeader
auto r :: Roster
r =
let f :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Player, [(Int, Dice, GroupName ItemKind)])]
f [] = []
f ((player :: Player
player, initial :: [(Int, Dice, GroupName ItemKind)]
initial) : rest :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rest) =
(Player
player {fleaderMode :: LeaderMode
fleaderMode = AutoLeader -> LeaderMode
LeaderAI AutoLeader
auto}, [(Int, Dice, GroupName ItemKind)]
initial) (Player, [(Int, Dice, GroupName ItemKind)])
-> [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Player, [(Int, Dice, GroupName ItemKind)])]
forall a. a -> [a] -> [a]
: [(Player, [(Int, Dice, GroupName ItemKind)])]
rest
in Roster
r {rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Player, [(Int, Dice, GroupName ItemKind)])]
f ([(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Player, [(Int, Dice, GroupName ItemKind)])])
-> [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Player, [(Int, Dice, GroupName ItemKind)])]
forall a b. (a -> b) -> a -> b
$ Roster -> [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList Roster
r}
screensaverRaid :: ModeKind
screensaverRaid = ModeKind
raid
{ mname :: Text
mname = "auto-raid (1)"
, mfreq :: Freqs ModeKind
mfreq = [("insert coin", 1), ("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterRaid
}
screensaverBrawl :: ModeKind
screensaverBrawl = ModeKind
brawl
{ mname :: Text
mname = "auto-brawl (2)"
, mfreq :: Freqs ModeKind
mfreq = [("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterBrawl
}
screensaverShootout :: ModeKind
screensaverShootout = ModeKind
shootout
{ mname :: Text
mname = "auto-shootout (3)"
, mfreq :: Freqs ModeKind
mfreq = [("insert coin", 1), ("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterShootout
}
screensaverHunt :: ModeKind
screensaverHunt = ModeKind
hunt
{ mname :: Text
mname = "auto-hunt (4)"
, mfreq :: Freqs ModeKind
mfreq = [("insert coin", 1), ("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterHunt
}
screensaverEscape :: ModeKind
screensaverEscape = ModeKind
escape
{ mname :: Text
mname = "auto-escape (5)"
, mfreq :: Freqs ModeKind
mfreq = [("insert coin", 1), ("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterEscape
}
screensaverZoo :: ModeKind
screensaverZoo = ModeKind
zoo
{ mname :: Text
mname = "auto-zoo (6)"
, mfreq :: Freqs ModeKind
mfreq = [("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterZoo
}
screensaverAmbush :: ModeKind
screensaverAmbush = ModeKind
ambush
{ mname :: Text
mname = "auto-ambush (7)"
, mfreq :: Freqs ModeKind
mfreq = [("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterAmbush
}
screensaverCrawl :: ModeKind
screensaverCrawl = ModeKind
crawl
{ mname :: Text
mname = "auto-crawl (long)"
, mfreq :: Freqs ModeKind
mfreq = [("no confirms", 1)]
, mroster :: Roster
mroster = AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False) Roster
rosterCrawl
}
screensaverSafari :: ModeKind
screensaverSafari = ModeKind
safari
{ mname :: Text
mname = "auto-safari"
, mfreq :: Freqs ModeKind
mfreq = [("insert coin", 1), ("no confirms", 1)]
, mroster :: Roster
mroster =
AutoLeader -> Roster -> Roster
screensave (Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
True) Roster
rosterSafari
}
rosterRaid, rosterBrawl, rosterShootout, rosterHunt, rosterEscape, rosterZoo, rosterAmbush, rosterCrawl, rosterCrawlEmpty, rosterCrawlSurvival, rosterSafari, rosterSafariSurvival, rosterBattle, rosterBattleDefense, rosterBattleSurvival, rosterDefense, rosterDefenseEmpty :: Roster
rosterRaid :: Roster
rosterRaid = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero {fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroShort}
, [(-2, 1, "hero")] )
, ( Player
playerAntiHero { fname :: Text
fname = "Indigo Founder"
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroShort }
, [(-2, 1, "hero")] )
, ( Player
playerAnimal
, [(-2, 2, "animal")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Animal Kingdom")
, ("Explorer", "Horror Den")
, ("Indigo Founder", "Animal Kingdom")
, ("Indigo Founder", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterBrawl :: Roster
rosterBrawl = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-3, 3, "hero")] )
, ( Player
playerAntiHero { fname :: Text
fname = "Indigo Researcher"
, fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-3, 3, "hero")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Indigo Researcher")
, ("Explorer", "Horror Den")
, ("Indigo Researcher", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterShootout :: Roster
rosterShootout = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-5, 1, "scout hero"), (-5, 2, "ranger hero")] )
, ( Player
playerAntiHero { fname :: Text
fname = "Indigo Researcher"
, fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-5, 1, "scout hero"), (-5, 2, "ranger hero")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Indigo Researcher")
, ("Explorer", "Horror Den")
, ("Indigo Researcher", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterHunt :: Roster
rosterHunt = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-6, 7, "soldier hero")] )
, ( Player
playerAntiHero { fname :: Text
fname = "Indigo Researcher"
, fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-6, 1, "scout hero"), (-6, 6, "ambusher hero")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Indigo Researcher")
, ("Explorer", "Horror Den")
, ("Indigo Researcher", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterEscape :: Roster
rosterEscape = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero {fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium}
, [(-7, 1, "scout hero"), (-7, 2, "escapist hero")] )
, ( Player
playerAntiHero { fname :: Text
fname = "Indigo Researcher"
, fcanEscape :: Bool
fcanEscape = Bool
False
, fneverEmpty :: Bool
fneverEmpty = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-7, 1, "scout hero"), (-7, 6, "ambusher hero")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Indigo Researcher")
, ("Explorer", "Horror Den")
, ("Indigo Researcher", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterZoo :: Roster
rosterZoo = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroLong }
, [(-8, 5, "soldier hero")] )
, ( Player
playerAnimal {fneverEmpty :: Bool
fneverEmpty = Bool
True}
, [(-8, 100, "mobile animal")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Animal Kingdom")
, ("Explorer", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterAmbush :: Roster
rosterAmbush = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-9, 1, "scout hero"), (-9, 5, "ambusher hero")] )
, ( Player
playerAntiHero { fname :: Text
fname = "Indigo Researcher"
, fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroMedium }
, [(-9, 12, "soldier hero")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Indigo Researcher")
, ("Explorer", "Horror Den")
, ("Indigo Researcher", "Horror Den") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterCrawl :: Roster
rosterCrawl = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero
, [(-1, 3, "hero")] )
, ( Player
playerMonster
, [(-4, 1, "scout monster"), (-4, 3, "monster")] )
, ( Player
playerAnimal
,
[ (-1, 1 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 2, "animal")
, (-10, 100, "mobile animal") ] ) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Monster Hive")
, ("Explorer", "Animal Kingdom") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [("Monster Hive", "Animal Kingdom")] }
rosterCrawlEmpty :: Roster
rosterCrawlEmpty = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero
, [(-1, 1, "hero")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = []
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
rosterCrawlSurvival :: Roster
rosterCrawlSurvival = Roster
rosterCrawl
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerAntiHero
, [(-1, 3, "hero")] )
, ( Player
playerMonster
, [(-4, 1, "scout monster"), (-4, 3, "monster")] )
, ( Player
playerAnimal {fhasUI :: Bool
fhasUI = Bool
True}
,
[ (-1, 1 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 2, "animal")
, (-10, 100, "mobile animal") ] ) ] }
rosterSafari :: Roster
rosterSafari = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerMonsterTourist
, [(-4, 15, "monster")] )
, ( Player
playerHunamConvict
, [(-4, 2, "civilian")] )
, ( Player
playerAnimalMagnificent
, [(-7, 15, "mobile animal")] )
, ( Player
playerAnimalExquisite
, [(-10, 20, "mobile animal")] ) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Monster Tourist Office", "Hunam Convict")
, ( "Monster Tourist Office"
, "Animal Magnificent Specimen Variety" )
, ( "Monster Tourist Office"
, "Animal Exquisite Herds and Packs Galore" )
, ( "Animal Magnificent Specimen Variety"
, "Hunam Convict" )
, ( "Hunam Convict"
, "Animal Exquisite Herds and Packs Galore" ) ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [ ( "Animal Magnificent Specimen Variety"
, "Animal Exquisite Herds and Packs Galore" ) ] }
rosterSafariSurvival :: Roster
rosterSafariSurvival = Roster
rosterSafari
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerMonsterTourist
{ fleaderMode :: LeaderMode
fleaderMode = AutoLeader -> LeaderMode
LeaderAI (AutoLeader -> LeaderMode) -> AutoLeader -> LeaderMode
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> AutoLeader
AutoLeader Bool
True Bool
True
, fhasUI :: Bool
fhasUI = Bool
False }
, [(-4, 15, "monster")] )
, ( Player
playerHunamConvict
, [(-4, 3, "civilian")] )
, ( Player
playerAnimalMagnificent
{ fleaderMode :: LeaderMode
fleaderMode = AutoLeader -> LeaderMode
LeaderUI (AutoLeader -> LeaderMode) -> AutoLeader -> LeaderMode
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> AutoLeader
AutoLeader Bool
True Bool
False
, fhasUI :: Bool
fhasUI = Bool
True }
, [(-7, 20, "mobile animal")] )
, ( Player
playerAnimalExquisite
, [(-10, 30, "mobile animal")] ) ] }
rosterBattle :: Roster
rosterBattle = $WRoster :: [(Player, [(Int, Dice, GroupName ItemKind)])]
-> [(Text, Text)] -> [(Text, Text)] -> Roster
Roster
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroLong }
, [(-5, 5, "soldier hero")] )
, ( Player
playerMonster {fneverEmpty :: Bool
fneverEmpty = Bool
True}
, [(-5, 35, "mobile monster")] )
, ( Player
playerAnimal {fneverEmpty :: Bool
fneverEmpty = Bool
True}
, [(-5, 30, "mobile animal")] ) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = [ ("Explorer", "Monster Hive")
, ("Explorer", "Animal Kingdom") ]
, rosterAlly :: [(Text, Text)]
rosterAlly = [("Monster Hive", "Animal Kingdom")] }
rosterBattleDefense :: Roster
rosterBattleDefense = Roster
rosterBattle
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroLong
, fleaderMode :: LeaderMode
fleaderMode =
AutoLeader -> LeaderMode
LeaderAI (AutoLeader -> LeaderMode) -> AutoLeader -> LeaderMode
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False
, fhasUI :: Bool
fhasUI = Bool
False }
, [(-5, 5, "soldier hero")] )
, ( Player
playerMonster { fneverEmpty :: Bool
fneverEmpty = Bool
True
, fhasUI :: Bool
fhasUI = Bool
True }
, [(-5, 35, "mobile monster")] )
, ( Player
playerAnimal {fneverEmpty :: Bool
fneverEmpty = Bool
True}
, [(-5, 30, "mobile animal")] ) ] }
rosterBattleSurvival :: Roster
rosterBattleSurvival = Roster
rosterBattle
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerHero { fcanEscape :: Bool
fcanEscape = Bool
False
, fhiCondPoly :: HiCondPoly
fhiCondPoly = HiCondPoly
hiHeroLong
, fleaderMode :: LeaderMode
fleaderMode =
AutoLeader -> LeaderMode
LeaderAI (AutoLeader -> LeaderMode) -> AutoLeader -> LeaderMode
forall a b. (a -> b) -> a -> b
$ Bool -> Bool -> AutoLeader
AutoLeader Bool
False Bool
False
, fhasUI :: Bool
fhasUI = Bool
False }
, [(-5, 5, "soldier hero")] )
, ( Player
playerMonster {fneverEmpty :: Bool
fneverEmpty = Bool
True}
, [(-5, 35, "mobile monster")] )
, ( Player
playerAnimal { fneverEmpty :: Bool
fneverEmpty = Bool
True
, fhasUI :: Bool
fhasUI = Bool
True }
, [(-5, 30, "mobile animal")] ) ] }
rosterDefense :: Roster
rosterDefense = Roster
rosterCrawl
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerAntiHero
, [(-1, 3, "hero")] )
, ( Player
playerAntiMonster
, [(-4, 1, "scout monster"), (-4, 3, "monster")] )
, ( Player
playerAnimal
, [ (-1, 1 Dice -> Dice -> Dice
forall a. Num a => a -> a -> a
+ 1 Int -> Int -> Dice
`d` 2, "animal")
, (-10, 100, "mobile animal") ] ) ] }
rosterDefenseEmpty :: Roster
rosterDefenseEmpty = Roster
rosterCrawl
{ rosterList :: [(Player, [(Int, Dice, GroupName ItemKind)])]
rosterList = [ ( Player
playerAntiMonster {fneverEmpty :: Bool
fneverEmpty = Bool
True}
, [(-4, 1, "scout monster")] )
, (Player
playerHorror, []) ]
, rosterEnemy :: [(Text, Text)]
rosterEnemy = []
, rosterAlly :: [(Text, Text)]
rosterAlly = [] }
cavesRaid, cavesBrawl, cavesShootout, cavesHunt, cavesEscape, cavesZoo, cavesAmbush, cavesCrawl, cavesDig, cavesSee, cavesSafari, cavesBattle :: Caves
cavesRaid :: Caves
cavesRaid = [([-2], ["caveRaid"])]
cavesBrawl :: Caves
cavesBrawl = [([-3], ["caveBrawl"])]
cavesShootout :: Caves
cavesShootout = [([-5], ["caveShootout"])]
cavesHunt :: Caves
cavesHunt = [([-6], ["caveHunt"])]
cavesEscape :: Caves
cavesEscape = [([-7], ["caveEscape"])]
cavesZoo :: Caves
cavesZoo = [([-8], ["caveZoo"])]
cavesAmbush :: Caves
cavesAmbush = [([-9], ["caveAmbush"])]
listCrawl :: [([Int], [GroupName CaveKind])]
listCrawl :: Caves
listCrawl =
[ ([-1], ["caveOutermost"])
, ([-2], ["caveShallowRogue"])
, ([-3], ["caveEmpty"])
, ([-4, -5, -6], ["default random", "caveRogue", "caveArena"])
, ([-7, -8], ["caveRogue", "caveSmoking"])
, ([-9], ["caveLaboratory"])
, ([-10], ["caveMine"]) ]
cavesCrawl :: Caves
cavesCrawl = Caves
listCrawl
renumberCaves :: Int -> ([Int], [GroupName CaveKind])
-> ([Int], [GroupName CaveKind])
renumberCaves :: Int
-> ([Int], [GroupName CaveKind]) -> ([Int], [GroupName CaveKind])
renumberCaves offset :: Int
offset (ns :: [Int]
ns, l :: [GroupName CaveKind]
l) = ((Int -> Int) -> [Int] -> [Int]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
offset) [Int]
ns, [GroupName CaveKind]
l)
cavesDig :: Caves
cavesDig = [Caves] -> Caves
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([Caves] -> Caves) -> [Caves] -> Caves
forall a b. (a -> b) -> a -> b
$ (Int -> Caves -> Caves) -> [Int] -> [Caves] -> [Caves]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith ((([Int], [GroupName CaveKind]) -> ([Int], [GroupName CaveKind]))
-> Caves -> Caves
forall a b. (a -> b) -> [a] -> [b]
map ((([Int], [GroupName CaveKind]) -> ([Int], [GroupName CaveKind]))
-> Caves -> Caves)
-> (Int
-> ([Int], [GroupName CaveKind]) -> ([Int], [GroupName CaveKind]))
-> Int
-> Caves
-> Caves
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int
-> ([Int], [GroupName CaveKind]) -> ([Int], [GroupName CaveKind])
renumberCaves)
[0, -10 ..]
(Int -> Caves -> [Caves]
forall a. Int -> a -> [a]
replicate 100 Caves
listCrawl)
cavesSee :: Caves
cavesSee = let numberCaves :: a -> a -> ([a], [a])
numberCaves n :: a
n c :: a
c = ([a
n], [a
c])
in (Int -> GroupName CaveKind -> ([Int], [GroupName CaveKind]))
-> [Int] -> [GroupName CaveKind] -> Caves
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith Int -> GroupName CaveKind -> ([Int], [GroupName CaveKind])
forall a a. a -> a -> ([a], [a])
numberCaves [-1, -2 ..]
([GroupName CaveKind] -> Caves) -> [GroupName CaveKind] -> Caves
forall a b. (a -> b) -> a -> b
$ (GroupName CaveKind -> [GroupName CaveKind])
-> [GroupName CaveKind] -> [GroupName CaveKind]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap (Int -> GroupName CaveKind -> [GroupName CaveKind]
forall a. Int -> a -> [a]
replicate 8) [GroupName CaveKind]
allCaves
allCaves :: [GroupName CaveKind]
allCaves :: [GroupName CaveKind]
allCaves =
[ "caveRaid", "caveBrawl", "caveShootout", "caveHunt", "caveEscape", "caveZoo"
, "caveAmbush"
, "caveRogue", "caveLaboratory", "caveEmpty", "caveArena", "caveSmoking"
, "caveNoise", "caveMine" ]
cavesSafari :: Caves
cavesSafari = [ ([-4], ["caveSafari1"])
, ([-7], ["caveSafari2"])
, ([-10], ["caveSafari3"]) ]
cavesBattle :: Caves
cavesBattle = [([-5], ["caveBattle"])]