packages feed

Allure 0.4.3 → 0.4.4

raw patch · 9 files changed

+184/−94 lines, 9 filesdep ~LambdaHack

Dependency ranges changed: LambdaHack

Files

Allure.cabal view
@@ -1,9 +1,9 @@ cabal-version: >= 1.10 name:          Allure-version:       0.4.3+version:       0.4.4 license:       OtherLicense license-file:  LICENSE-tested-with:   GHC == 7.2.2, GHC == 7.4+tested-with:   GHC == 7.2.2, GHC == 7.4.1 data-files:    LICENSE, CREDITS, PLAYING.md, README.md,                config.default, config.bot, scores author:        Andres Loeh, Mikolaj Konarski and others@@ -13,6 +13,9 @@                The game is barely fun at this stage and not yet                really Sci-Fi. See the wiki for design notes and contribute.                .+               New in this release are missiles flying for three turns+               (by an old kosmikus' idea), visual feedback for targeting+               and animations of combat and individual monster moves.                Long term goals are high replayability and auto-balancing                through procedural content generation and persistent content                modification based on player behaviour.@@ -41,7 +44,7 @@                    ConfigDefault   hs-source-dirs:  src   other-modules:   Paths_Allure-  build-depends:   LambdaHack >= 0.2.0   && < 0.2.1,+  build-depends:   LambdaHack >= 0.2.1   && < 0.2.2,                    template-haskell >= 2.6 && < 3,                    ConfigFile >= 1.1.1   && < 2,                    array      >= 0.3.0.3 && < 1,@@ -60,6 +63,6 @@                       BangPatterns, RecordWildCards, NamedFieldPuns   other-extensions: CPP, QuasiQuotes   ghc-options:     -Wall -fwarn-orphans -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates -fwarn-monomorphism-restriction -fwarn-unrecognised-pragmas-  ghc-options:     -fno-warn-auto-orphans -fno-warn-implicit-prelude -fno-warn-unused-do-bind+  ghc-options:     -fno-warn-auto-orphans -fno-warn-implicit-prelude   ghc-options:     -fno-ignore-asserts -funbox-strict-fields-  ghc-options:     -threaded+  ghc-options:     -threaded -with-rtsopts=-C0.005
PLAYING.md view
@@ -55,11 +55,8 @@                 /|\       /|\                1 2 3     b j n -Shift and a movement key make the hero run in the indicated direction,-until anything of interest is spotted. '5' and '.' skip a turn.-(Note that If you are using the curses or vty frontends,-numerical keypad may not work correctly depending on the versions-of curses, terminfo and terminal emulators. Vi keys should work regardless.)+SHIFT (or CTRL) and a movement key make the hero run in the indicated+direction, until anything of interest is spotted. '5' and '.' skip a turn. Melee, searching for secret doors and opening closed doors can be done by bumping into a monster, a wall and a door, respectively. @@ -67,22 +64,22 @@ are specialized versions of 'a' and 'p', offering narrower default item choice. The commands that take player time are marked with a *. -               key    command-               <      ascend a level*-               >      descend a level*-               ?      display help-               Q      quit without saving-               X      save and exit the game-               a      apply a consumable*-               c      close a door*-               d      drop an object*-               g      get an object*-               i      display inventory-               p      project a projectile*-               q      quaff a drink*-               r      read a comm*-               t      throw a missile*-               z      zap a mechanism*+               key     command+               <       ascend a level*+               >       descend a level*+               ?       display help+               Q       quit without saving+               X       save and exit the game+               a       apply a consumable*+               c       close a door*+               d       drop an object*+               g       get an object*+               i       display inventory+               p       project a projectile*+               q       quaff a drink*+               r       read a comm*+               t       throw a missile*+               z       zap a mechanism*  To make a ranged attack, you need to set your target first, using targeting mode. Note that the target, for the few commands that require any,@@ -95,28 +92,29 @@ than the selected hero). The targeting commands and all the less used commands are listed below. None of them takes hero time. -               key    command-               ESC    cancel action-               RET    accept choice-               SPACE  clear messages-               TAB    cycle among heroes on level-               *      target monster-               /      target location-               D      dump current configuration-               P      display previous messages-               V      display game version-               [      target next shallower level-               ]      target next deeper level-               {      target 10 levels shallower-               }      target 10 levels deeper-               0--9   select a hero anywhere in the spaceship (gtk only)+               key     command+               ESC     cancel action+               RET     accept choice+               SPACE   clear messages+               TAB     cycle among heroes on level+               *       target monster+               /       target location+               D       dump current configuration+               P       display previous messages+               V       display game version+               [       target next shallower level+               ]       target next deeper level+               {       target 10 levels shallower+               }       target 10 levels deeper+               0--9    select a hero anywhere in the spaceship -There are also some debug and cheat keys. Use at your own peril!+There are also some debug and cheat keys, all entered with the CTRL+key modifier. Use at your own peril! -               key    command-               O      toggle "omniscience"-               I      inform about level meta-data-               R      rotate display modes+               key     command+               CTRL-o  toggle "omniscience"+               CTRL-i  inform about level meta-data+               CTRL-r  rotate vision modes (effective next turn)   Monsters
README.md view
@@ -23,12 +23,21 @@ and run 'cabal install' from the main directory.  -Compatibility note-------------------+Compatibility notes+-------------------  The current code was tested with GHC 7.2.2 and several pre-release versions of GHC 7.4. A [few tweaks] [7] are needed to compile with 7.0 and some more are needed for 6.12.++If you are using the curses or vty frontends,+numerical keypad may not work correctly depending on the versions+of curses, terminfo and terminal emulators.+Selecting heroes via number keys or SHIFT-keypad keys is disabled+with curses, because CTRL-keypad for running does not work there,+so the numbers produced by the keypad have to be used. With vty on xterm,+CTRL-direction keys seem to work OK, but on rxvt they do not.+Vi keys (ykuhlbjn) should work everywhere regardless. Gtk works fine, too.   Further information
config.default view
@@ -22,18 +22,20 @@ ; braceright:   TgtAscend (-10) ; slash: TgtFloor ; asterisk: TgtEnemy+; plus: EpsIncr True+; minus: EpsIncr False ; Tab: HeroCycle ; ; ; ; Items. ; g: Pickup ; d: Drop ; i: Inventory-; a: Apply { verb = "apply", object = "consumable", syms = "!?" }-; p: Project { verb = "project", object = "projectile", syms = "/|" }+; a: Apply { verb = "apply", object = "consumable", syms = "!?,_~" }+; p: Project { verb = "project", object = "missile", syms = "-}{" } ; q: Apply { verb = "quaff", object = "drink", syms = "!" }-; r: Apply { verb = "read", object = "comm", syms = "?" }-; z: Project { verb = "zap", object = "mechanism", syms = "/" }-; t: Project { verb = "throw", object = "missile", syms = "|" }+; r: Apply { verb = "read", object = "tablet", syms = "?" }+; z: Project { verb = "zap", object = "mechanism", syms = "-" }+; t: Project { verb = "throw", object = "projectile", syms = "}{" } ; ; ; ; Saving or ending the game. ; X: GameSave@@ -95,7 +97,7 @@ ; period: KP_Begin  ; [monsters]-; smellTimeout: 1000+; smellTimeout: 100  ; [ui] ; font: Terminus,Monospace normal normal normal normal 12
scores view

binary file changed (226 → 90 bytes)

src/Content/ActorKind.hs view
@@ -10,6 +10,7 @@ import qualified Game.LambdaHack.Content as Content import Game.LambdaHack.Content.ActorKind import Game.LambdaHack.Random+import Game.LambdaHack.Time  cdefs :: Content.CDefs ActorKind cdefs = Content.CDefs@@ -18,9 +19,9 @@   , getFreq = afreq   , validate = avalidate   , content =-      [hero, eye, fastEye, nose]+      [hero, projectile, eye, fastEye, nose]   }-hero,        eye, fastEye, nose :: ActorKind+hero,        projectile, eye, fastEye, nose :: ActorKind  hero = ActorKind   { asymbol = '@'@@ -28,24 +29,37 @@   , afreq   = [("hero", 1)]  -- Does not appear randomly in the dungeon.   , acolor  = BrWhite  -- Heroes white, monsters colorful.   , ahp     = RollDice 60 1-  , aspeed  = 10+  , aspeed  = toSpeed 2   , asight  = True   , asmell  = False   , aiq     = 13  -- Can see hidden doors, when he is under alien control.-  , aregen  = 5000+  , aregen  = 500   } +projectile = ActorKind  -- includes homing missiles+  { asymbol = '*'+  , aname   = "projectile"+  , afreq   = [("projectile", 1)]  -- Does not appear randomly in the dungeon.+  , acolor  = BrWhite+  , ahp     = RollDice 0 0+  , aspeed  = toSpeed 0+  , asight  = False+  , asmell  = False+  , aiq     = 0+  , aregen  = maxBound+  }+ eye = ActorKind   { asymbol = 'r'   , aname   = "deranged household robot"   , afreq   = [("monster", 60), ("summon", 50)]   , acolor  = BrYellow   , ahp     = RollDice 3 4-  , aspeed  = 10+  , aspeed  = toSpeed 2   , asight  = True   , asmell  = False   , aiq     = 8-  , aregen  = 1000+  , aregen  = 100   } fastEye = ActorKind   { asymbol = 'm'@@ -53,11 +67,11 @@   , afreq   = [("monster", 15)]   , acolor  = BrMagenta   , ahp     = RollDice 1 4-  , aspeed  = 5+  , aspeed  = toSpeed 4   , asight  = True   , asmell  = False   , aiq     = 12-  , aregen  = 50  -- Regenerates fast (at max HP most of the time!).+  , aregen  = 5  -- Regenerates fast (at max HP most of the time!).   } nose = ActorKind   { asymbol = 'h'@@ -65,9 +79,9 @@   , afreq   = [("monster", 20), ("summon", 100)]   , acolor  = Green   , ahp     = RollDice 7 2-  , aspeed  = 11+  , aspeed  = toSpeed 1.8   , asight  = False   , asmell  = True   , aiq     = 0-  , aregen  = 1000+  , aregen  = 100   }
src/Content/CaveKind.hs view
@@ -41,8 +41,12 @@   , copenChance   = 1%10   , chiddenChance = 1%5   , citemNum      = RollDice 5 2-  , cdefTile      = "fillerWall"-  , ccorTile      = "darkCorridor"+  , cdefaultTile    = "fillerWall"+  , ccorridorTile   = "darkCorridor"+  , cfillerTile     = "fillerWall"+  , cdarkLegendTile = "darkLegend"+  , clitLegendTile  = "litLegend"+  , chiddenTile     = "hidden"   } arena = rogue   { csymbol       = 'A'@@ -54,8 +58,8 @@   , cvoidChance   = 1%3   , cnonVoidMin   = 2   , citemNum      = RollDice 3 2  -- few rooms-  , cdefTile      = "floorArenaLit"-  , ccorTile      = "path"+  , cdefaultTile  = "floorArenaLit"+  , ccorridorTile = "path"   } empty = rogue   { csymbol       = '.'@@ -69,8 +73,8 @@   , cnonVoidMin   = 1   , cminStairDist = 50   , citemNum      = RollDice 6 2  -- whole floor strewn with treasure-  , cdefTile      = "floorRoomLit"-  , ccorTile      = "floorRoomLit"+  , cdefaultTile  = "floorRoomLit"+  , ccorridorTile = "floorRoomLit"   } noise = rogue   { csymbol       = '!'@@ -82,6 +86,6 @@   , cvoidChance   = 0   , cnonVoidMin   = 0   , citemNum      = RollDice 3 2  -- few rooms-  , cdefTile      = "noiseSet"-  , ccorTile      = "path"+  , cdefaultTile  = "noiseSet"+  , ccorridorTile = "path"   }
src/Content/ItemKind.hs view
@@ -6,6 +6,8 @@ -- | Weapons and treasure for Allure of the Stars. module Content.ItemKind ( cdefs ) where +import qualified Data.List as L+ import Game.LambdaHack.Color import qualified Game.LambdaHack.Content as Content import Game.LambdaHack.Effect@@ -20,14 +22,37 @@   , getFreq = ifreq   , validate = ivalidate   , content =-      [necklace, dart, gem1, gem2, gem3, gold, javelin, potion1, potion2, potion3, ring, scroll1, scroll2, scroll3, sword, wand, fist, foot, tentacle, weight]+      [necklace, dart, gem1, gem2, gem3, gold, javelin, kitchenKnife, potion1, potion2, potion3, ring, scroll1, scroll2, scroll3, sword, wand, fist, foot, tentacle, weight]   }-necklace,        dart, gem1, gem2, gem3, gold, javelin, potion1, potion2, potion3, ring, scroll1, scroll2, scroll3, sword, wand, fist, foot, tentacle, weight :: ItemKind+necklace,        dart, gem1, gem2, gem3, gold, javelin, kitchenKnife, potion1, potion2, potion3, ring, scroll1, scroll2, scroll3, sword, wand, fist, foot, tentacle, weight :: ItemKind  gem, potion, scroll :: ItemKind  -- generic templates  -- rollDeep (aDb, xDy) = rollDice aDb + lvl * rollDice xDy / depth +{- Item group symbols (from Angband, only as an informal convention for now):++! potion, flask, concoction, bottle, jar, vial, canister+? scroll, book, note, tablet, remote+, food+- magical wand, magical rod, transmitter, pistol, rifle+_ magical staff, scanner+= ring+" necklace+$ gold, gem+~ light, tool+/ polearm+| edged weapon+\ hafted weapon+} launcher+{ projectile+( clothes+[ torso armour+] misc. armour+) shield++-}+ necklace = ItemKind   { isymbol  = '"'   , iname    = "necklace"@@ -37,29 +62,35 @@   , icount   = intToDeep 1   , ipower   = (RollDice 2 3, RollDice 1 10)   , iverbApply   = "tear down"-  , iverbProject = "throw"+  , iverbProject = "cast"+  , iweight  = 30+  , itoThrow = -50  -- not dense enough   } dart = ItemKind-  { isymbol  = '|'+  { isymbol  = '{'   , iname    = "billiard ball"   , ifreq    = [("dng", 30)]-  , iflavour = zipPlain [Cyan]+  , iflavour = zipPlain [BrWhite]   , ieffect  = Wound (RollDice 1 1)   , icount   = (RollDice 3 3, RollDice 0 0)   , ipower   = intToDeep 0-  , iverbApply   = "snap"-  , iverbProject = "throw"+  , iverbApply   = "splinter"+  , iverbProject = "hurl"+  , iweight  = 50+  , itoThrow = 0  -- a cheap dart   } gem = ItemKind-  { isymbol  = '*'+  { isymbol  = '$'   , iname    = "precious gem"   , ifreq    = [("dng", 20)]       -- x3, but rare on shallow levels-  , iflavour = zipPlain brightCol  -- natural, so not fancy+  , iflavour = zipPlain $ L.delete BrYellow brightCol  -- natural, so not fancy   , ieffect  = NoEffect   , icount   = intToDeep 0   , ipower   = intToDeep 0   , iverbApply   = "crush"-  , iverbProject = "throw"+  , iverbProject = "toss"+  , iweight  = 50+  , itoThrow = 0   } gem1 = gem   { icount   = (RollDice 0 0, RollDice 1 1)  -- appears on max depth@@ -79,22 +110,39 @@   , icount   = (RollDice 0 0, RollDice 10 10)   , ipower   = intToDeep 0   , iverbApply   = "grind"-  , iverbProject = "throw"+  , iverbProject = "toss"+  , iweight  = 31+  , itoThrow = 0   } javelin = ItemKind-  { isymbol  = '|'-  , iname    = "kitchen knife"+  { isymbol  = '{'+  , iname    = "javelin"   , ifreq    = [("dng", 30)]   , iflavour = zipPlain [Brown]   , ieffect  = Wound (RollDice 1 2)-  , icount   = (RollDice 0 0, RollDice 2 2)+  , icount   = (RollDice 0 0, RollDice 1 1)   , ipower   = (RollDice 1 1, RollDice 2 2)   , iverbApply   = "break up"+  , iverbProject = "hurl"+  , iweight  = 2000+  , itoThrow = 0  -- cheap but deadly+  }+kitchenKnife = ItemKind+  { isymbol  = '{'+  , iname    = "kitchen knife"+  , ifreq    = [("dng", 30)]+  , iflavour = zipPlain [BrCyan]+  , ieffect  = Wound (RollDice 1 1)+  , icount   = (RollDice 0 0, RollDice 1 2)+  , ipower   = (RollDice 0 0, RollDice 1 2)+  , iverbApply   = "bend"   , iverbProject = "throw"+  , iweight  = 200+  , itoThrow = -50  -- too flexible and the handle causes air resistance   } potion = ItemKind   { isymbol  = '!'-  , iname    = "concoction"+  , iname    = "vial"   , ifreq    = [("dng", 15)]   , iflavour = zipFancy stdCol   , ieffect  = NoEffect@@ -102,6 +150,8 @@   , ipower   = intToDeep 0   , iverbApply   = "gulp down"   , iverbProject = "lob"+  , iweight  = 200+  , itoThrow = -50  -- oily, bad grip   } potion1 = potion   { ifreq    = [("dng", 5)]@@ -125,18 +175,22 @@   , icount   = intToDeep 1   , ipower   = (RollDice 1 6, RollDice 3 2)   , iverbApply   = "squeeze down"-  , iverbProject = "throw"+  , iverbProject = "toss"+  , iweight  = 15+  , itoThrow = 0   } scroll = ItemKind   { isymbol  = '?'-  , iname    = "comm tablet"+  , iname    = "tablet"   , ifreq    = [("dng", 6)]   , iflavour = zipFancy darkCol  -- arcane and old   , ieffect  = NoEffect   , icount   = intToDeep 1   , ipower   = intToDeep 0   , iverbApply   = "dial"-  , iverbProject = "throw"+  , iverbProject = "lob"+  , iweight  = 700+  , itoThrow = -25  -- bad grip   } scroll1 = scroll   { ieffect  = SummonFriend@@ -149,19 +203,21 @@   { ieffect  = Descend   } sword = ItemKind-  { isymbol  = ')'+  { isymbol  = '/'   , iname    = "sharpened pipe"   , ifreq    = [("dng", 60)]-  , iflavour = zipPlain [BrCyan]+  , iflavour = zipPlain [Cyan]   , ieffect  = Wound (RollDice 3 1)   , icount   = intToDeep 1   , ipower   = (RollDice 1 2, RollDice 4 2)   , iverbApply   = "hit"   , iverbProject = "heave"+  , iweight  = 3000+  , itoThrow = -25  -- bad grip   } wand = ItemKind-  { isymbol  = '/'-  , iname    = "transmitter"+  { isymbol  = '-'+  , iname    = "injector"   , ifreq    = [("dng", 15)]   , iflavour = zipFancy [BrRed]   , ieffect  = Dominate@@ -169,6 +225,8 @@   , ipower   = intToDeep 0   , iverbApply   = "snap"   , iverbProject = "zap"+  , iweight  = 300+  , itoThrow = 25  -- jet   } fist = sword   { isymbol  = '@'
src/Content/RuleKind.hs view
@@ -37,4 +37,6 @@   , rtitle         = "Allure of the Stars"   , rpathsDataFile = Self.getDataFileName   , rpathsVersion  = Self.version+  , ritemMelee     = "/|\\"+  , ritemProject   = "!?,-~}{"   }