packages feed

Allure 0.8.1.2 → 0.8.3.0

raw patch · 14 files changed

+155/−129 lines, 14 filesdep ~LambdaHack

Dependency ranges changed: LambdaHack

Files

Allure.cabal view
@@ -5,13 +5,13 @@ -- PVP summary:+-+------- breaking API changes --             | | +----- minor or non-breaking API additions --             | | | +--- code changes with no API change-version:       0.8.1.2+version:       0.8.3.0 synopsis:      Near-future Sci-Fi roguelike and tactical squad game description:   Allure of the Stars is a near-future Sci-Fi roguelike                and tactical squad game. Binaries and the game manual-               are available at the homepage, where you can also-               try the game out in the browser:-               <http://allureofthestars.com/play>+               are available at homepage, where you can also+               try the game out in the browser at+               <http://allureofthestars.com/play>.                (It runs fastest on Chrome. Keyboard commands and savefiles                are supported only on recent enough versions of browsers.                Mouse should work everywhere.)@@ -79,7 +79,7 @@                       Implementation.MonadServerImplementation,                       Implementation.TieKnot,                       Paths_Allure-  build-depends:      LambdaHack >= 0.8.1.0 && < 0.8.2.0,+  build-depends:      LambdaHack >= 0.8.3.0 && < 0.8.4.0,                       template-haskell >= 2.6,                        async      >= 2,
CHANGELOG.md view
@@ -1,3 +1,13 @@+## [v0.8.3.0](https://github.com/AllureOfTheStars/Allure/compare/v0.8.1.2...v0.8.3.0)++- Add a hack to run SDL2 on the main thread, fixing the OS X crash+- Warn visually when impressed and Calm running low, risking domination+- Display actor as red when low Calm and impressed or when low HP+- Fix, complete and fine tune UI, AI and server skill and weapon checks+- Fix a bug where item aspects look different to clients than to the server+- Change the requirements for the main menu ASCII art+- Tweak loot and terrain a tiny bit+ ## [v0.8.1.2](https://github.com/AllureOfTheStars/Allure/compare/v0.8.1.1...v0.8.1.2)  - Fix typos detected by lintian
CREDITS view
@@ -5,6 +5,7 @@ Mikolaj Konarski Krzysztof Pławski @Peritract+Pablo Reszczynski   Fonts 16x16x.fon, 8x8x.fon and 8x8xb.fon are are taken from
GameDefinition/Content/CaveKind.hs view
@@ -140,8 +140,8 @@   { csymbol       = 'E'   , cname         = "Construction site"   , cfreq         = [("caveEmpty", 1)]-  , cgrid         = DiceXY 1 1-  , cminPlaceSize = DiceXY 12 12+  , cgrid         = DiceXY 2 2+  , cminPlaceSize = DiceXY 12 9   , cmaxPlaceSize = DiceXY 48 32  -- favour large rooms   , cdarkChance   = 1 `d` 100 + 1 `dL` 100   , cnightChance  = 0  -- always day@@ -254,7 +254,7 @@   , cdesc         = "The black sky outside sucks light through the oriels."   } emptyExit = empty-  { cname         = "Shuttle servicing area"+  { cname         = "Shuttle servicing level"   , cfreq         = [("caveEmptyExit", 1)]   , cdefTile      = "emptyExitSet"   , cdarkCorTile  = "transport route"
GameDefinition/Content/ItemKind.hs view
@@ -244,7 +244,8 @@ light1 = ItemKind   { isymbol  = symbolLight   , iname    = "torch"-  , ifreq    = [("common item", 100), ("light source", 100), ("wooden torch", 1)]+  , ifreq    = [ ("common item", 100), ("light source", 100)+               , ("wooden torch", 1) ]   , iflavour = zipPlain [Brown]   , icount   = 1 `dL` 4   , irarity  = [(1, 15)]@@ -256,7 +257,7 @@   , ieffects = [Burn 1]   , ifeature = [Lobable, Equipable, EqpSlot EqpSlotLightSource]                  -- not Fragile; reusable flare-  , idesc    = "A torch improvised with cloth soaked in tar on a stick."+  , idesc    = "A puttering torch improvised with polymer sheets soaked in lubricant on a stick."   , ikit     = []   } light2 = ItemKind@@ -272,7 +273,7 @@   , iaspects = [AddShine 3, AddSight (-1)]   , ieffects = [Burn 1, Paralyze 6, OnSmash (Explode "burning oil 3")]   , ifeature = [Lobable, Fragile, Equipable, EqpSlot EqpSlotLightSource ]-  , idesc    = "A sizable restaurant glass lamp filled with plant oil feeding a wick."+  , idesc    = "A sizable restaurant glass lamp filled with plant oil feeding a slender wick."   , ikit     = []   } light3 = ItemKind@@ -1458,7 +1459,7 @@ gem5 = gem1   { isymbol  = symbolSpecial   , iname    = "stimpack"-  , ifreq    = [ ("treasure", 100), ("gem", 25), ("any jewelry", 25)+  , ifreq    = [ ("treasure", 100), ("gem", 25), ("any jewelry", 10)                , ("valuable", 100) ]   , iflavour = zipPlain [BrYellow]   , irarity  = [(1, 40), (10, 40)]
GameDefinition/Content/ItemKindBlast.hs view
@@ -755,7 +755,7 @@   , iaspects = []   , ieffects = [toOrganGood "resolute" (5 + 1 `d` 2), DropBestWeapon]   , ifeature = [toVelocity 5, Fragile, Blast]  -- 1 step, 1 turn-  , idesc    = "The fitful holographic clip shows a couple that laughs, watches in silence Saturn's rings through a huge window, throws treats to a little rhino frolicking in reduced gravity, runs through corridors wearing alien masks in a mock chase. An exited female voice proclaims: \"...safety and security, comfort, imagination...for each of your senses...robot servants...personalized life support zones...\""+  , idesc    = "The fitful holographic clip shows a couple that laughs, watches in silence Saturn's rings through a huge window, throws treats to a little rhino frolicking in reduced gravity, runs through corridors wearing alien masks in a mock chase. An exited female voice proclaims: \"...safety, security and comfort...for each of your senses...personalized life support zones...robot servants...guessing your every wish...\""   , ikit     = []   } outerAdHologram = cruiseAdHologram
GameDefinition/Content/RuleKind.hs view
@@ -50,17 +50,10 @@   -- The keybindings overwrite places marked with left curly brace signs.   -- This sign is forbidden anywhere else in the picture.   -- The picture and the whole main menu is displayed dull white on black.-  ---  -- The picture should be exactly 60 rows by 110 columns,-  -- but only the middle rectangle of 24 rows by 80 columns is partially-  -- overwritten with UI information and the curly brace signs are allowed-  -- only there. So, the rectangle is 15 characters distant from the left-  -- and 18 from top. For screen sizes larger than 60 by 100,-  -- the picture is centered and padded with spaces, so it makes sense-  -- for some or all of the picture borders to be spaces, as well.-  -- If the screen is smaller than 60 by 100, borders of the picture-  -- are cut off. Minimal screes size is 24 by 80 and the picture-  -- should look well at this size, as well.+  -- The glyphs, or at least the character cells, are perfect squares.+  -- The picture should be exactly 45 rows by 80 columns.+  -- For larger screen sizes, the picture is centered and padded with spaces,+  -- so it makes sense for some or all of the picture borders to be spaces.   , rmainMenuArt = $(do       let path = "GameDefinition/MainMenu.ascii"       qAddDependentFile path
GameDefinition/Content/TileKind.hs view
@@ -24,11 +24,11 @@   [unknown, unknownOuterFence, basicOuterFence, wall, wallSuspect, wallObscured, wallObscuredDefaced, wallObscuredFrescoed, pillar, pillarCache, lampPost, signboardUnread, signboardRead, tree, treeBurnt, treeBurning, rubble, rubbleSpice, doorTrapped, doorClosed, stairsUp, stairsTrappedUp, stairsOutdoorUp, stairsGatedUp, stairsDown, stairsTrappedDown, stairsOutdoorDown, stairsGatedDown, escapeUp, escapeDown, escapeOutdoorDown, wallGlass, wallGlassSpice, pillarIce, pulpit, bush, bushBurnt, bushBurning, floorFog, floorFogDark, floorSmoke, floorSmokeDark, doorOpen, floorCorridor, floorArena, floorNoise, floorDirt, floorDirtSpice, floorActor, floorActorItem, floorRed, floorBlue, floorGreen, floorBrown, floorArenaShade ]   ++ map makeDarkColor ldarkColorable   -- Allure-specific-  ++ [oriel, outerHullWall, doorlessWall, machineWall, wallObscuredSafety, wallObscured3dBillboard, rock, pillarCache2, stairsLiftUp, stairsLiftTrappedUp, stairsLiftDown, stairsLiftTrappedDown, escapeSpaceshipDown, floorWindow]+  ++ [oriel, outerHullWall, doorlessWall, machineWall, rubbleSpiceBurning, wallObscuredSafety, wallObscured3dBillboard, rock, pillarCache2, stairsLiftUp, stairsLiftTrappedUp, stairsLiftDown, stairsLiftTrappedDown, escapeSpaceshipDown, floorWindow]  unknown,    unknownOuterFence, basicOuterFence, wall, wallSuspect, wallObscured, wallObscuredDefaced, wallObscuredFrescoed, pillar, pillarCache, lampPost, signboardUnread, signboardRead, tree, treeBurnt, treeBurning, rubble, rubbleSpice, doorTrapped, doorClosed, stairsUp, stairsTrappedUp, stairsOutdoorUp, stairsGatedUp, stairsDown, stairsTrappedDown, stairsOutdoorDown, stairsGatedDown, escapeUp, escapeDown, escapeOutdoorDown, wallGlass, wallGlassSpice, pillarIce, pulpit, bush, bushBurnt, bushBurning, floorFog, floorFogDark, floorSmoke, floorSmokeDark, doorOpen, floorCorridor, floorArena, floorNoise, floorDirt, floorDirtSpice, floorActor, floorActorItem, floorRed, floorBlue, floorGreen, floorBrown, floorArenaShade :: TileKind -- Allure-specific-oriel,       outerHullWall, doorlessWall, machineWall, wallObscuredSafety, wallObscured3dBillboard, rock, pillarCache2, stairsLiftUp, stairsLiftTrappedUp, stairsLiftDown, stairsLiftTrappedDown, escapeSpaceshipDown, floorWindow :: TileKind+oriel,       outerHullWall, doorlessWall, machineWall, rubbleSpiceBurning, wallObscuredSafety, wallObscured3dBillboard, rock, pillarCache2, stairsLiftUp, stairsLiftTrappedUp, stairsLiftDown, stairsLiftTrappedDown, escapeSpaceshipDown, floorWindow :: TileKind  ldarkColorable :: [TileKind] ldarkColorable = [tree, bush, floorCorridor, floorArena, floorNoise, floorDirt, floorDirtSpice, floorActor, floorActorItem, floorWindow]@@ -90,7 +90,7 @@   , tname    = "wall"   , tfreq    = [ ("fillerWall", 1), ("legendLit", 100), ("legendDark", 100)                , ("cachable deposit", 80), ("cachable jewelry", 80)-               , ("stair terminal", 100)+               , ("stair terminal", 30)                , ("battleSet", 250), ("rectWindowsOver_%_Lit", 80) ]   , tcolor   = BrWhite   , tcolor2  = defFG@@ -106,7 +106,7 @@   , talter   = 2   , tfeature = [ RevealAs "trapped door"                , ObscureAs "obscured wall"-                ]+               ]   } wallObscured = TileKind   { tsymbol  = '#'@@ -117,7 +117,6 @@   , talter   = 5   , tfeature = [ Embed "scratch on wall"                , HideAs "suspect wall"-                ]   } wallObscuredDefaced = TileKind@@ -129,7 +128,6 @@   , talter   = 5   , tfeature = [ Embed "obscene pictogram"                , HideAs "suspect wall"-                ]   } wallObscuredFrescoed = TileKind@@ -141,7 +139,6 @@   , talter   = 5   , tfeature = [ Embed "subtle fresco"                , HideAs "suspect wall"-                ]  -- a bit beneficial, but AI would loop if allowed to trigger                   -- so no @ConsideredByAI@   }@@ -185,7 +182,6 @@   , talter   = 5   , tfeature = [ ConsideredByAI  -- changes after use, so safe for AI                , RevealAs "signboard"  -- to display as hidden-                ]   } signboardRead = TileKind@@ -216,7 +212,7 @@   } treeBurning = tree   { tname    = "burning tree"-  , tfreq    = [("zooSet", 70), ("tree with fire", 70)]+  , tfreq    = [("zooSet", 40), ("tree with fire", 70)]   , tcolor   = BrRed   , tcolor2  = Red   , talter   = 5@@ -241,9 +237,9 @@ rubbleSpice = TileKind   { tsymbol  = '&'   , tname    = "rubble pile"-  , tfreq    = [ ("smokeClumpOver_f_Lit", 1), ("emptySet", 1)-               , ("emptyExitSet", 1), ("noiseSet", 10), ("zooSet", 100)-               , ("ambushSet", 20) ]+  , tfreq    = [ ("rubbleSpice", 1), ("smokeClumpOver_f_Lit", 1)+               , ("emptySet", 1), ("emptyExitSet", 1), ("noiseSet", 9)+               , ("zooSet", 100), ("ambushSet", 18), ("stair terminal", 30) ]   , tcolor   = BrYellow   , tcolor2  = Brown   , talter   = 4  -- boss can dig through@@ -413,7 +409,7 @@   } bushBurning = bush   { tname    = "burning bush"-  , tfreq    = [("ambushSet", 40), ("zooSet", 300), ("bush with fire", 30)]+  , tfreq    = [("ambushSet", 40), ("zooSet", 290), ("bush with fire", 30)]   , tcolor   = BrRed   , tcolor2  = Red   , talter   = 5@@ -545,6 +541,8 @@  -- ** Not walkable +-- *** Not clear+ oriel = TileKind   { tsymbol  = '%'  -- story-wise it's transparent, hence the symbol   , tname    = "oriel"@@ -567,15 +565,16 @@   , talter   = 100   , tfeature = [HideAs "fillerWall"]   }-machineWall = TileKind-  { tsymbol  = '%'-  , tname    = "hardware rack"-  , tfreq    = [ ("noiseSet", 35), ("emptyExitSet", 7)-               , ("doorlessWallOver_#", 80) ]-  , tcolor   = White-  , tcolor2  = BrBlack-  , talter   = 100-  , tfeature = [Spice, Clear]+rubbleSpiceBurning = TileKind+  { tsymbol  = '&'+  , tname    = "burning installation"+  , tfreq    = [ ("smokeClumpOver_f_Lit", 1), ("emptySet", 1)+               , ("emptyExitSet", 1), ("noiseSet", 1)+               , ("ambushSet", 2), ("zooSet", 40), ("stair terminal", 40) ]+  , tcolor   = BrRed+  , tcolor2  = Red+  , talter   = 4  -- boss can dig through+  , tfeature = [Spice, OpenTo "rubbleSpice", Embed "big fire"]   } wallObscuredSafety = TileKind   { tsymbol  = '#'@@ -586,7 +585,6 @@   , talter   = 5   , tfeature = [ Embed "ruined first aid kit"                , HideAs "suspect wall"-                ]   } wallObscured3dBillboard = TileKind@@ -598,7 +596,6 @@   , talter   = 5   , tfeature = [ Embed "3D display"                , HideAs "suspect wall"-                ]   } rock = pillar@@ -656,6 +653,19 @@   , tcolor   = defFG   , tcolor2  = defFG   , tfeature = Embed "black starry sky" : tfeature floorCorridor+  }++-- *** Clear++machineWall = TileKind+  { tsymbol  = '%'+  , tname    = "hardware rack"+  , tfreq    = [ ("noiseSet", 35), ("emptyExitSet", 6)+               , ("doorlessWallOver_#", 80) ]+  , tcolor   = White+  , tcolor2  = BrBlack+  , talter   = 100+  , tfeature = [Spice, Clear]   }  -- ** Walkable
GameDefinition/Implementation/MonadClientImplementation.hs view
@@ -25,7 +25,6 @@  import           Game.LambdaHack.Atomic (MonadStateWrite (..), putState) import           Game.LambdaHack.Client-import           Game.LambdaHack.Client.ClientOptions import           Game.LambdaHack.Client.HandleAtomicM import           Game.LambdaHack.Client.HandleResponseM import           Game.LambdaHack.Client.LoopM
GameDefinition/Implementation/MonadServerImplementation.hs view
@@ -83,7 +83,7 @@   chanSaveServer = SerImplementation $ gets serToSave   liftIO         = SerImplementation . IO.liftIO -instance MonadServerReadRequest SerImplementation where+instance MonadServerComm SerImplementation where   {-# INLINE getsDict #-}   getsDict   f = SerImplementation $ gets $ f . serDict   {-# INLINE modifyDict #-}
GameDefinition/Main.hs view
@@ -14,6 +14,7 @@  import Game.LambdaHack.Common.Prelude +import           Control.Concurrent import           Control.Concurrent.Async import qualified Control.Exception as Ex import qualified Options.Applicative as OA@@ -25,9 +26,9 @@ import qualified System.IO as SIO  import Game.LambdaHack.Common.File (tryCreateDir)-import Game.LambdaHack.Common.Misc #endif +import Game.LambdaHack.Common.Misc import Game.LambdaHack.Server (serverOptionsPI)  import Implementation.TieKnot@@ -36,9 +37,14 @@ -- run the game and handle exit. main :: IO () main = do+  -- This may be broken with JS and also bloats the outcome file, so disabled. #ifndef USE_JSFILE-  -- For the case when the game is started not on a console.-  -- This is broken with JS and also bloats the outcome file.+  -- Special case hack, when the game is started not on a console.+  -- Without this, any attempt to output on stdout crashes a Windows exe+  -- (at least on Windows Vista) launched from the desktop or start menu.+  -- This is very crude and results in the inability to, e.g., process+  -- the output of @--help@ through a unix pipe. However, this should be+  -- effective on all Windows version, without the need to test all.   isTerminal <- SIO.hIsTerminalDevice SIO.stdout   unless isTerminal $ do     dataDir <- appDataDir@@ -47,12 +53,23 @@     fstderr <- SIO.openFile (dataDir </> "stderr.txt") SIO.WriteMode     GHC.IO.Handle.hDuplicateTo fstdout SIO.stdout     GHC.IO.Handle.hDuplicateTo fstderr SIO.stderr+  let fillWorkaround =+        -- Set up void workaround if nothing specific required.+        void $ tryPutMVar workaroundOnMainThreadMVar $ return () #endif   -- Fail here, not inside server code, so that savefiles are not removed,   -- because they are not the source of the failure.   !serverOptions <- OA.execParser serverOptionsPI   -- Avoid the bound thread that would slow down the communication.   a <- async $ tieKnot serverOptions+#ifndef USE_JSFILE+               `Ex.finally` fillWorkaround+  -- Run a (possibly void) workaround. It's needed for architectures/frontends+  -- that need to perform some actions on the main thread+  -- (not just any bound thread), e.g., newer OS X drawing with SDL2.+  workaround <- takeMVar workaroundOnMainThreadMVar+  workaround+#endif   resOrEx <- waitCatch a   let unwrapEx e = #if MIN_VERSION_async(2,2,1)
GameDefinition/MainMenu.ascii view
@@ -1,60 +1,45 @@-                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -               ... jiii;.LGEDEi.  . .   .    .   ;KEKEGLLGEDt                :tfL:,ittjjjjfffff               -               .. tii;,iGEWDL;    .      .  .    . fEDEDGfLDDG              . Lf.;itjjjfffLLLLf               -               .tti;, GDKLt,        . . .    . .   ,itLDEGLLGED.           :.fi.;ttjjfffLEWW#DL               -               .tti;::GELti    Allure of the Stars  .KtGDEDLfGEDt        ...j;:;ttjjffLD#WWW#Kf               -               .tti;.jGDt                  .  .  ..   ,LDEDLfGEDt      ...t.:itjjfffL WWWWW#K;                -               jtti,iLDLt    <allureofthestars.com>  .  ;jDEEGLGEDt      ,t :itjjffLG  WKWWWWE                -               jtii: GEf;                                ,iGDEDGGEDt.   tt :itjjffLG  GWEWWWKE                -               jtii: GGj;   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{.fGDEDGLDDt  tt :itjfffLG   KKKWWWEL                -               jtti. GDj,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  DLDEDGLDD.tj :itjjffLD   LWDKWWWD                 -               jtti  GDj,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{   ELDEDGL.jj :itjjffLD   jKDEWWWEL                 -               jtti  GGf,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{    ELDEE.ff::itjjffLG   fKEDKWKKD                  -               ftti  LGt:   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     ELE.Lf: ijjjffLG   tEEDEWKWG                   -               fjjt.,jGf,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     ,K:Gf,.ijjtffLD..tjEDGDKKWEE                   -               tti;,i;GL.   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     .:ftt itiiffLGDGDDDGLDKGKfE                    -               Ltjt;, jLj   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     :Lf;iitjifLLGfDDLijGEKEKDE..                   -               Lffjif.Lft   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  .,:LL;,ijjfffLGLGLLLGDKKEELK . .                  -               ffjt iiGfj;  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{...:LL;;ijffffLGDEKKKKKEEKDj.......                 -               .Lffj:j fDi  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{:::fL;,itjfffLGLGDEEDEKDGtK..........               -               . Lfffifiif  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{,.Lf;.ijjfffLL,,Lfijjt,E,::..........               -               .  fffj:i;t;                              .tfj,.tjjfffLL;ijfLGGGGGLjt;,::......                -               .. Lfffjjiii,                       ...  :LL;,,tjjfffLL;;;;iiiiiiii,;;;,:::::..                -               .. LfffijijjLfi;                   ,:::,ffj,j;tjffffLG;;;;;;;;;;;;;;;;;,,:::::..               -               ... LLLff,i;jGLLLL                   LiLt:::tjjffffLG:,,,,,,,,,;;;;,,,,::.......               -               .Version X.X.X (frontend: xxx, engine: LambdaHack X.X.X) ,,,,,,,,,,,:::::..    .               -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              -                                                                                                              +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +... jiii;.LGEDEi.  . .   .    .   ;KEKEGLLGEDt                :tfL:,ittjjjjfffff+.. tii;,iGEWDL;    .      .  .    . fEDEDGfLDDG              . Lf.;itjjjfffLLLLf+.tti;, GDKLt,        . . .    . .   ,itLDEGLLGED.           :.fi.;ttjjfffLEWW#DL+.tti;::GELti    Allure of the Stars  .KtGDEDLfGEDt        ...j;:;ttjjffLD#WWW#Kf+.tti;.jGDt                  .  .  ..   ,LDEDLfGEDt      ...t.:itjjfffL WWWWW#K; +jtti,iLDLt    <allureofthestars.com>  .  ;jDEEGLGEDt      ,t :itjjffLG  WKWWWWE +jtii: GEf;                                ,iGDEDGGEDt.   tt :itjjffLG  GWEWWWKE +jtii: GGj;   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{.fGDEDGLDDt  tt :itjfffLG   KKKWWWEL +jtti. GDj,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  DLDEDGLDD.tj :itjjffLD   LWDKWWWD  +jtti  GDj,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{   ELDEDGL.jj :itjjffLD   jKDEWWWEL  +jtti  GGf,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{    ELDEE.ff::itjjffLG   fKEDKWKKD   +ftti  LGt:   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     ELE.Lf: ijjjffLG   tEEDEWKWG    +fjjt.,jGf,   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     ,K:Gf,.ijjtffLD..tjEDGDKKWEE    +tti;,i;GL.   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     .:ftt itiiffLGDGDDDGLDKGKfE     +Ltjt;, jLj   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{     :Lf;iitjifLLGfDDLijGEKEKDE..    +Lffjif.Lft   {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  .,:LL;,ijjfffLGLGLLLGDKKEELK . .   +ffjt iiGfj;  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{...:LL;;ijffffLGDEKKKKKEEKDj.......  +.Lffj:j fDi  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{:::fL;,itjfffLGLGDEEDEKDGtK..........+. Lfffifiif  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{,.Lf;.ijjfffLL,,Lfijjt,E,::..........+.  fffj:i;t;                              .tfj,.tjjfffLL;ijfLGGGGGLjt;,::...... +.. Lfffjjiii,                       ...  :LL;,,tjjfffLL;;;;iiiiiiii,;;;,:::::.. +.. LfffijijjLfi;                   ,:::,ffj,j;tjffffLG;;;;;;;;;;;;;;;;;,,:::::..+... LLLff,i;jGLLLL                   LiLt:::tjjffffLG:,,,,,,,,,;;;;,,,,::.......+.Version X.X.X (frontend: xxx, engine: LambdaHack X.X.X) ,,,,,,,,,,,:::::..    .+                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                +                                                                                
Makefile view
@@ -89,7 +89,7 @@ 	dist/build/Allure/Allure --dbgMsgSer --logPriority 4 --newGame 3 --maxFps 100000 --frontendNull --benchmark --stopAfterFrames 7000 --automateAll --keepAutomated --gameMode battle --setDungeonRng 7 --setMainRng 7  benchFrontendBattle:-	dist/build/Allure/Allure --dbgMsgSer --logPriority 4 --newGame 3 --noAnim --maxFps 100000 --benchmark --stopAfterFrames 1500 --automateAll --keepAutomated --gameMode battle --setDungeonRng 7 --setMainRng 7+	dist/build/Allure/Allure --dbgMsgSer --logPriority 4 --newGame 3 --noAnim --maxFps 100000 --benchmark --stopAfterFrames 2000 --automateAll --keepAutomated --gameMode battle --setDungeonRng 7 --setMainRng 7  benchCrawl: 	dist/build/Allure/Allure --dbgMsgSer --logPriority 4 --newGame 1 --noAnim --maxFps 100000 --frontendNull --benchmark --stopAfterFrames 7000 --automateAll --keepAutomated --gameMode crawl --setDungeonRng 0 --setMainRng 0@@ -227,11 +227,18 @@ 	cp COPYLEFT AllureOfTheStars 	cp CREDITS AllureOfTheStars -build-binary: build-binary-common+build-binary-ubuntu: build-binary-common 	cp AllureOfTheStarsInstall/bin/Allure AllureOfTheStars 	dist/build/Allure/Allure --version > /dev/null; \ 	LH_VERSION=$$(cat ~/.Allure/stdout.txt); \ 	tar -czf Allure_$${LH_VERSION}_ubuntu-16.04-amd64.tar.gz AllureOfTheStars++build-binary-macosx: build-binary-common+	cp AllureOfTheStarsInstall/bin/Allure AllureOfTheStars+	dist/build/Allure/Allure --version > /dev/null; \+	LH_VERSION=$$(cat ~/.Allure/stdout.txt); \+	OS_VERSION=$$(sw_vers -productVersion); \+	tar -czf Allure_$${LH_VERSION}_macosx-$${OS_VERSION}-amd64.tar.gz AllureOfTheStars  new-build-dev: 	cabal new-build --datadir=. --disable-optimization -j1 all
README.md view
@@ -7,8 +7,8 @@  Allure of the Stars is a near-future Sci-Fi roguelike[2] and tactical squad game. Binaries and the game manual-are available at the homepage[6], where you can also-try the game out in the browser: http://allureofthestars.com/play+are available at homepage[6], where you can also+try the game out in the browser at http://allureofthestars.com/play. (It runs fastest on Chrome. Keyboard commands and savefiles are supported only on recent enough versions of browsers. Mouse should work everywhere.)@@ -40,16 +40,19 @@ you may prefer to use a native binary for your architecture, if it exists.  Pre-compiled game binaries are available through-the release page[11] (and continuously from AppVeyor[18]).-Note that Windows binaries no longer work on Windows XP, since Cygwin-and MSYS2 dropped support for XP. To use a pre-compiled binary archive,-unpack it and run the executable in the unpacked directory-or use program shortcuts from the installer, if available.+the release page[11] (and, for Windows, continuously from AppVeyor[18]).+To use a pre-compiled binary archive, unpack it and run the executable+in the unpacked directory or use program shortcuts from the installer,+if available.  On Linux, make sure you have the SDL2 libraries installed on your system-(e.g., libsdl2-2.0-0, libsdl2-ttf-2.0-0 on Ubuntu; also libdw1).-For Windows, the SDL2 and all other needed libraries are already contained-in the game's binary archive.+(e.g., libsdl2-2.0-0, libsdl2-ttf-2.0-0 on Ubuntu).+On Mac OS X, you need SDL2 installed, e.g.,+from [libsdlorg](https://www.libsdl.org/download-2.0.php).+For Windows, the SDL2 and all other needed libraries are already+contained in the game's binary archive.+Note that Windows binaries no longer work on Windows XP, since Cygwin+and MSYS2 dropped support for XP.   Screen and keyboard configuration@@ -104,9 +107,9 @@     cabal update     cabal install Allure -For a newer version, install a matching LambdaHack library snapshot-from a development branch, download the game source from github[5]-and run `cabal install` from the main directory.+For a newer version, install a matching LambdaHack library snapshot,+clone the game source from github[5] and run `cabal install`+from the main directory.   Testing and debugging@@ -192,7 +195,7 @@   [10]: http://github.com/LambdaHack/LambdaHack-[11]: https://github.com/AllureOfTheStars/Allure/releases/latest+[11]: https://github.com/AllureOfTheStars/Allure/releases [15]: https://github.com/ghcjs/ghcjs [16]: https://www.npmjs.com/package/google-closure-compiler [18]: https://ci.appveyor.com/project/Mikolaj/allure/build/artifacts