packages feed

Cabal revisions of LambdaHack-0.5.0.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-name:           LambdaHack--- The package version. See the Haskell package versioning policy (PVP)--- for standards guiding when and how versions should be incremented.--- http://www.haskell.org/haskellwiki/Package_versioning_policy--- PVP summary:+-+------- breaking API changes---             | | +----- non-breaking API additions---             | | | +--- code changes with no API change-version:       0.5.0.0-synopsis:      A game engine library for roguelike dungeon crawlers-description:   LambdaHack is a game engine library for roguelike games-               of arbitrary theme, size and complexity,-               packaged together with a small example dungeon crawler.-               .-               <<https://raw.githubusercontent.com/LambdaHack/media/master/screenshot/safari1.png>>-               .-               When completed, the engine will let you specify content-               to be procedurally generated, define the AI behaviour-               on top of the generic content-independent rules-               and compile a ready-to-play game binary, using either-               the supplied or a custom-made main loop.-               Several frontends are available (GTK is the default)-               and many other generic engine components are easily overridden,-               but the fundamental source of flexibility lies-               in the strict and type-safe separation of code from the content-               and of clients (human and AI-controlled) from the server.-               Please see the changelog file for recent improvements-               and the issue tracker for short-term plans. Long term vision-               revolves around procedural content generation and includes-               in-game content creation, auto-balancing and persistent-               content modification based on player behaviour.-               .-               Games known to use the LambdaHack library:-               .-               * Allure of the Stars, a near-future Sci-Fi game,-               <http://hackage.haskell.org/package/Allure>-               .-               * Space Privateers, an adventure game set in far future,-               <http://hackage.haskell.org/package/SpacePrivateers>-               .-               Note: All modules in this library are kept visible,-               to let games override and reuse them.-               OTOH, to reflect that some modules are implementation details-               relative to others, the source code adheres to the following-               convention. If a module has the same name as a directory,-               the module is the exclusive interface to the directory.-               No references to the modules in the directory are allowed-               except from the interface module. This policy is only binding-               when developing the library --- library users are free-               to access any modules, since the library authors are in-               no position to guess their particular needs.-homepage:      http://github.com/LambdaHack/LambdaHack-bug-reports:   http://github.com/LambdaHack/LambdaHack/issues-license:       BSD3-license-file:  LICENSE-tested-with:   GHC == 7.6, GHC == 7.8, GHC == 7.10-data-files:    GameDefinition/config.ui.default, GameDefinition/scores-               GameDefinition/PLAYING.md, README.md, LICENSE, CREDITS,-               CHANGELOG.md-extra-source-files: GameDefinition/MainMenu.ascii, Makefile-author:        Andres Loeh, Mikolaj Konarski-maintainer:    Mikolaj Konarski <mikolaj.konarski@funktory.com>-category:      Game Engine, Game-build-type:    Simple-cabal-version: >= 1.10--source-repository head-  type:               git-  location:           git://github.com/LambdaHack/LambdaHack.git--flag vty-  description:        switch to the vty frontend-  default:            False-  manual:             True--flag curses-  description:        switch to the curses frontend (not fully supported)-  default:            False-  manual:             True--flag expose_internal-  description:        expose internal functions and types, but don't switch on any other release mode options-  default:            False-  manual:             True--flag with_expensive_assertions-  description:        turn on expensive assertions of well-tested code-  default:            False-  manual:             True--flag release-  description:        prepare for a release (expose, optimize, etc.)-  default:            True-  manual:             True--library-  exposed-modules:    Game.LambdaHack.Atomic-                      Game.LambdaHack.Atomic.CmdAtomic,-                      Game.LambdaHack.Atomic.BroadcastAtomicWrite,-                      Game.LambdaHack.Atomic.HandleAtomicWrite,-                      Game.LambdaHack.Atomic.MonadAtomic,-                      Game.LambdaHack.Atomic.MonadStateWrite,-                      Game.LambdaHack.Atomic.PosAtomicRead,-                      Game.LambdaHack.Client,-                      Game.LambdaHack.Client.AI-                      Game.LambdaHack.Client.AI.ConditionClient,-                      Game.LambdaHack.Client.AI.HandleAbilityClient,-                      Game.LambdaHack.Client.AI.PickActorClient-                      Game.LambdaHack.Client.AI.PickTargetClient-                      Game.LambdaHack.Client.AI.Preferences-                      Game.LambdaHack.Client.AI.Strategy,-                      Game.LambdaHack.Client.Bfs,-                      Game.LambdaHack.Client.BfsClient,-                      Game.LambdaHack.Client.CommonClient,-                      Game.LambdaHack.Client.HandleAtomicClient,-                      Game.LambdaHack.Client.HandleResponseClient,-                      Game.LambdaHack.Client.ItemSlot,-                      Game.LambdaHack.Client.Key,-                      Game.LambdaHack.Client.LoopClient,-                      Game.LambdaHack.Client.MonadClient,-                      Game.LambdaHack.Client.ProtocolClient,-                      Game.LambdaHack.Client.State,-                      Game.LambdaHack.Client.UI,-                      Game.LambdaHack.Client.UI.Animation,-                      Game.LambdaHack.Client.UI.Config,-                      Game.LambdaHack.Client.UI.Content.KeyKind-                      Game.LambdaHack.Client.UI.DrawClient,-                      Game.LambdaHack.Client.UI.DisplayAtomicClient,-                      Game.LambdaHack.Client.UI.Frontend,-                      Game.LambdaHack.Client.UI.Frontend.Chosen,-                      Game.LambdaHack.Client.UI.Frontend.Std,-                      Game.LambdaHack.Client.UI.HandleHumanGlobalClient,-                      Game.LambdaHack.Client.UI.HandleHumanLocalClient,-                      Game.LambdaHack.Client.UI.HandleHumanClient,-                      Game.LambdaHack.Client.UI.HumanCmd,-                      Game.LambdaHack.Client.UI.InventoryClient,-                      Game.LambdaHack.Client.UI.KeyBindings,-                      Game.LambdaHack.Client.UI.MonadClientUI,-                      Game.LambdaHack.Client.UI.MsgClient,-                      Game.LambdaHack.Client.UI.RunClient,-                      Game.LambdaHack.Client.UI.StartupFrontendClient-                      Game.LambdaHack.Client.UI.WidgetClient,-                      Game.LambdaHack.Common.Ability,-                      Game.LambdaHack.Common.Actor,-                      Game.LambdaHack.Common.ActorState,-                      Game.LambdaHack.Common.ClientOptions,-                      Game.LambdaHack.Common.Color,-                      Game.LambdaHack.Common.ContentDef,-                      Game.LambdaHack.Common.Dice,-                      Game.LambdaHack.Common.EffectDescription,-                      Game.LambdaHack.Common.Faction,-                      Game.LambdaHack.Common.File,-                      Game.LambdaHack.Common.Flavour,-                      Game.LambdaHack.Common.Frequency,-                      Game.LambdaHack.Common.HighScore,-                      Game.LambdaHack.Common.Item,-                      Game.LambdaHack.Common.ItemDescription,-                      Game.LambdaHack.Common.ItemStrongest,-                      Game.LambdaHack.Common.Kind,-                      Game.LambdaHack.Common.Level,-                      Game.LambdaHack.Common.LQueue,-                      Game.LambdaHack.Common.Misc,-                      Game.LambdaHack.Common.MonadStateRead,-                      Game.LambdaHack.Common.Msg,-                      Game.LambdaHack.Common.Perception,-                      Game.LambdaHack.Common.PointArray,-                      Game.LambdaHack.Common.Point,-                      Game.LambdaHack.Common.Random,-                      Game.LambdaHack.Common.RingBuffer,-                      Game.LambdaHack.Common.Save,-                      Game.LambdaHack.Common.Request,-                      Game.LambdaHack.Common.Response,-                      Game.LambdaHack.Common.State,-                      Game.LambdaHack.Common.Thread,-                      Game.LambdaHack.Common.Tile,-                      Game.LambdaHack.Common.Time,-                      Game.LambdaHack.Common.Vector,-                      Game.LambdaHack.Content.CaveKind,-                      Game.LambdaHack.Content.ItemKind,-                      Game.LambdaHack.Content.ModeKind,-                      Game.LambdaHack.Content.PlaceKind,-                      Game.LambdaHack.Content.RuleKind,-                      Game.LambdaHack.Content.TileKind,-                      Game.LambdaHack.SampleImplementation.SampleMonadClient,-                      Game.LambdaHack.SampleImplementation.SampleMonadServer,-                      Game.LambdaHack.Server,-                      Game.LambdaHack.Server.Commandline,-                      Game.LambdaHack.Server.CommonServer,-                      Game.LambdaHack.Server.DebugServer,-                      Game.LambdaHack.Server.DungeonGen,-                      Game.LambdaHack.Server.DungeonGen.Area,-                      Game.LambdaHack.Server.DungeonGen.AreaRnd,-                      Game.LambdaHack.Server.DungeonGen.Cave,-                      Game.LambdaHack.Server.DungeonGen.Place,-                      Game.LambdaHack.Server.EndServer,-                      Game.LambdaHack.Server.Fov,-                      Game.LambdaHack.Server.Fov.Common,-                      Game.LambdaHack.Server.Fov.Digital,-                      Game.LambdaHack.Server.Fov.Permissive,-                      Game.LambdaHack.Server.Fov.Shadow,-                      Game.LambdaHack.Server.HandleEffectServer,-                      Game.LambdaHack.Server.HandleRequestServer,-                      Game.LambdaHack.Server.ItemRev,-                      Game.LambdaHack.Server.ItemServer,-                      Game.LambdaHack.Server.LoopServer,-                      Game.LambdaHack.Server.MonadServer,-                      Game.LambdaHack.Server.PeriodicServer,-                      Game.LambdaHack.Server.ProtocolServer,-                      Game.LambdaHack.Server.StartServer,-                      Game.LambdaHack.Server.State-  other-modules:      Paths_LambdaHack-  build-depends:      array      >= 0.3.0.3 && < 1,-                      assert-failure >= 0.1 && < 1,-                      async      >= 2       && < 3,-                      base       >= 4       && < 5,-                      binary     >= 0.7     && < 1,-                      bytestring >= 0.9.2   && < 1,-                      containers >= 0.5.3.0 && < 1,-                      data-default,-                      deepseq    >= 1.3     && < 2,-                      directory  >= 1.1.0.1 && < 2,-                      enummapset-th >= 0.6.0.0 && < 1,-                      filepath   >= 1.2.0.1 && < 2,-                      ghc-prim   >= 0.2,-                      hashable   >= 1.1.2.5 && < 2,-                      hsini      >= 0.2     && < 2,-                      keys       >= 3       && < 4,-                      miniutter  >= 0.4.4   && < 2,-                      mtl        >= 2.0.1   && < 3,-                      old-time   >= 1.0.0.7 && < 2,-                      pretty-show >= 1.6    && < 2,-                      random     >= 1.1     && < 2,-                      stm        >= 2.4     && < 3,-                      text       >= 0.11.2.3 && < 2,-                      transformers >= 0.3   && < 1,-                      unordered-containers >= 0.2.3 && < 1,-                      vector     >= 0.10    && < 1,-                      vector-binary-instances >= 0.2 && < 1,-                      zlib       >= 0.5.3.1 && < 1--  default-language:   Haskell2010-  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings-                      BangPatterns, RecordWildCards, NamedFieldPuns-  other-extensions:   CPP, TemplateHaskell, MultiParamTypeClasses, RankNTypes,-                      TypeFamilies, FlexibleContexts, FlexibleInstances,-                      DeriveFunctor, FunctionalDependencies,-                      GeneralizedNewtypeDeriving, TupleSections,-                      DeriveFoldable, DeriveTraversable,-                      ExistentialQuantification, GADTs, StandaloneDeriving,-                      DataKinds, KindSignatures---, DeriveGeneric-  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-  ghc-options:        -fno-ignore-asserts -funbox-strict-fields-  ghc-prof-options:   -fprof-auto-calls--  if flag(curses) {-    other-modules:    Game.LambdaHack.Client.UI.Frontend.Curses-    build-depends:    hscurses >= 1.4.1 && < 2-    cpp-options:      -DCURSES-  } else { if flag(vty) {-    other-modules:    Game.LambdaHack.Client.UI.Frontend.Vty-    build-depends:    vty >= 5 && < 6-    cpp-options:      -DVTY-  } else {-    if impl(ghc > 7.8) {-      other-modules:    Game.LambdaHack.Client.UI.Frontend.Gtk-      build-depends:    gtk >= 0.12.1 && < 0.14-      pkgconfig-depends: gtk+-2.0-    } else {-      other-modules:    Game.LambdaHack.Client.UI.Frontend.Gtk-      build-depends:    gtk >= 0.12.1 && < 0.13-      pkgconfig-depends: gtk+-2.0-    }-  } }--  if flag(expose_internal)-    cpp-options:      -DEXPOSE_INTERNAL--  if flag(with_expensive_assertions)-    cpp-options:      -DWITH_EXPENSIVE_ASSERTIONS--  if flag(release) {-    cpp-options:      -DEXPOSE_INTERNAL--- 7.6.3 has broken -O2, apparently-    if impl(ghc > 7.8)-      ghc-options:      -O2 -fno-ignore-asserts-  }--executable LambdaHack-  hs-source-dirs:     GameDefinition-  main-is:            Main.hs-  other-modules:      Client.UI.Content.KeyKind,-                      Content.CaveKind,-                      Content.ItemKind,-                      Content.ItemKindActor,-                      Content.ItemKindOrgan,-                      Content.ItemKindBlast,-                      Content.ItemKindTemporary,-                      Content.ModeKind,-                      Content.ModeKindPlayer,-                      Content.PlaceKind,-                      Content.RuleKind,-                      Content.TileKind,-                      TieKnot,-                      Paths_LambdaHack-  build-depends:      LambdaHack,-                      template-haskell >= 2.6 && < 3,--                      array      >= 0.3.0.3 && < 1,-                      assert-failure >= 0.1 && < 1,-                      async      >= 2       && < 3,-                      base       >= 4       && < 5,-                      binary     >= 0.7     && < 1,-                      bytestring >= 0.9.2   && < 1,-                      containers >= 0.5.3.0 && < 1,-                      data-default,-                      deepseq    >= 1.3     && < 2,-                      directory  >= 1.1.0.1 && < 2,-                      enummapset-th >= 0.6.0.0 && < 1,-                      filepath   >= 1.2.0.1 && < 2,-                      ghc-prim   >= 0.2,-                      hashable   >= 1.1.2.5 && < 2,-                      hsini      >= 0.2     && < 2,-                      keys       >= 3       && < 4,-                      miniutter  >= 0.4.4   && < 2,-                      mtl        >= 2.0.1   && < 3,-                      old-time   >= 1.0.0.7 && < 2,-                      pretty-show >= 1.6    && < 2,-                      random     >= 1.1     && < 2,-                      stm        >= 2.4     && < 3,-                      text       >= 0.11.2.3 && < 2,-                      transformers >= 0.3   && < 1,-                      unordered-containers >= 0.2.3 && < 1,-                      vector     >= 0.10    && < 1,-                      vector-binary-instances >= 0.2 && < 1,-                      zlib       >= 0.5.3.1 && < 1--  default-language:   Haskell2010-  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings-                      BangPatterns, RecordWildCards, NamedFieldPuns-  other-extensions:   TemplateHaskell-  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-  ghc-options:        -fno-ignore-asserts -funbox-strict-fields-  ghc-options:        -threaded "-with-rtsopts=-C0.005" -rtsopts--  if flag(release)-    ghc-options:      -O2 -fno-ignore-asserts "-with-rtsopts=-N1"--- TODO: -N--test-suite test-  type:               exitcode-stdio-1.0-  hs-source-dirs:     GameDefinition, test-  main-is:            test.hs-  build-depends:      LambdaHack,-                      template-haskell >= 2.6 && < 3,--                      array      >= 0.3.0.3 && < 1,-                      assert-failure >= 0.1 && < 1,-                      async      >= 2       && < 3,-                      base       >= 4       && < 5,-                      binary     >= 0.7     && < 1,-                      bytestring >= 0.9.2   && < 1,-                      containers >= 0.5.3.0 && < 1,-                      data-default,-                      deepseq    >= 1.3     && < 2,-                      directory  >= 1.1.0.1 && < 2,-                      enummapset-th >= 0.6.0.0 && < 1,-                      filepath   >= 1.2.0.1 && < 2,-                      ghc-prim   >= 0.2,-                      hashable   >= 1.1.2.5 && < 2,-                      hsini      >= 0.2     && < 2,-                      keys       >= 3       && < 4,-                      miniutter  >= 0.4.4   && < 2,-                      mtl        >= 2.0.1   && < 3,-                      old-time   >= 1.0.0.7 && < 2,-                      pretty-show >= 1.6    && < 2,-                      random     >= 1.1     && < 2,-                      stm        >= 2.4     && < 3,-                      text       >= 0.11.2.3 && < 2,-                      transformers >= 0.3   && < 1,-                      unordered-containers >= 0.2.3 && < 1,-                      vector     >= 0.10    && < 1,-                      vector-binary-instances >= 0.2 && < 1,-                      zlib       >= 0.5.3.1 && < 1--  default-language:   Haskell2010-  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings-                      BangPatterns, RecordWildCards, NamedFieldPuns-  other-extensions:   TemplateHaskell-  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-  ghc-options:        -fno-ignore-asserts -funbox-strict-fields-  ghc-options:        -threaded "-with-rtsopts=-C0.005" -rtsopts--  if flag(release)-    ghc-options:      -O2 -fno-ignore-asserts "-with-rtsopts=-N1"--- TODO: -N+name:           LambdaHack
+-- The package version. See the Haskell package versioning policy (PVP)
+-- for standards guiding when and how versions should be incremented.
+-- http://www.haskell.org/haskellwiki/Package_versioning_policy
+-- PVP summary:+-+------- breaking API changes
+--             | | +----- non-breaking API additions
+--             | | | +--- code changes with no API change
+version:       0.5.0.0
+x-revision: 1
+synopsis:      A game engine library for roguelike dungeon crawlers
+description:   LambdaHack is a game engine library for roguelike games
+               of arbitrary theme, size and complexity,
+               packaged together with a small example dungeon crawler.
+               .
+               <<https://raw.githubusercontent.com/LambdaHack/media/master/screenshot/safari1.png>>
+               .
+               When completed, the engine will let you specify content
+               to be procedurally generated, define the AI behaviour
+               on top of the generic content-independent rules
+               and compile a ready-to-play game binary, using either
+               the supplied or a custom-made main loop.
+               Several frontends are available (GTK is the default)
+               and many other generic engine components are easily overridden,
+               but the fundamental source of flexibility lies
+               in the strict and type-safe separation of code from the content
+               and of clients (human and AI-controlled) from the server.
+               Please see the changelog file for recent improvements
+               and the issue tracker for short-term plans. Long term vision
+               revolves around procedural content generation and includes
+               in-game content creation, auto-balancing and persistent
+               content modification based on player behaviour.
+               .
+               Games known to use the LambdaHack library:
+               .
+               * Allure of the Stars, a near-future Sci-Fi game,
+               <http://hackage.haskell.org/package/Allure>
+               .
+               * Space Privateers, an adventure game set in far future,
+               <http://hackage.haskell.org/package/SpacePrivateers>
+               .
+               Note: All modules in this library are kept visible,
+               to let games override and reuse them.
+               OTOH, to reflect that some modules are implementation details
+               relative to others, the source code adheres to the following
+               convention. If a module has the same name as a directory,
+               the module is the exclusive interface to the directory.
+               No references to the modules in the directory are allowed
+               except from the interface module. This policy is only binding
+               when developing the library --- library users are free
+               to access any modules, since the library authors are in
+               no position to guess their particular needs.
+homepage:      http://github.com/LambdaHack/LambdaHack
+bug-reports:   http://github.com/LambdaHack/LambdaHack/issues
+license:       BSD3
+license-file:  LICENSE
+tested-with:   GHC == 7.6, GHC == 7.8, GHC == 7.10
+data-files:    GameDefinition/config.ui.default, GameDefinition/scores
+               GameDefinition/PLAYING.md, README.md, LICENSE, CREDITS,
+               CHANGELOG.md
+extra-source-files: GameDefinition/MainMenu.ascii, Makefile
+author:        Andres Loeh, Mikolaj Konarski
+maintainer:    Mikolaj Konarski <mikolaj.konarski@funktory.com>
+category:      Game Engine, Game
+build-type:    Simple
+cabal-version: >= 1.10
+
+source-repository head
+  type:               git
+  location:           git://github.com/LambdaHack/LambdaHack.git
+
+flag vty
+  description:        switch to the vty frontend
+  default:            False
+  manual:             True
+
+flag curses
+  description:        switch to the curses frontend (not fully supported)
+  default:            False
+  manual:             True
+
+flag expose_internal
+  description:        expose internal functions and types, but don't switch on any other release mode options
+  default:            False
+  manual:             True
+
+flag with_expensive_assertions
+  description:        turn on expensive assertions of well-tested code
+  default:            False
+  manual:             True
+
+flag release
+  description:        prepare for a release (expose, optimize, etc.)
+  default:            True
+  manual:             True
+
+library
+  exposed-modules:    Game.LambdaHack.Atomic
+                      Game.LambdaHack.Atomic.CmdAtomic,
+                      Game.LambdaHack.Atomic.BroadcastAtomicWrite,
+                      Game.LambdaHack.Atomic.HandleAtomicWrite,
+                      Game.LambdaHack.Atomic.MonadAtomic,
+                      Game.LambdaHack.Atomic.MonadStateWrite,
+                      Game.LambdaHack.Atomic.PosAtomicRead,
+                      Game.LambdaHack.Client,
+                      Game.LambdaHack.Client.AI
+                      Game.LambdaHack.Client.AI.ConditionClient,
+                      Game.LambdaHack.Client.AI.HandleAbilityClient,
+                      Game.LambdaHack.Client.AI.PickActorClient
+                      Game.LambdaHack.Client.AI.PickTargetClient
+                      Game.LambdaHack.Client.AI.Preferences
+                      Game.LambdaHack.Client.AI.Strategy,
+                      Game.LambdaHack.Client.Bfs,
+                      Game.LambdaHack.Client.BfsClient,
+                      Game.LambdaHack.Client.CommonClient,
+                      Game.LambdaHack.Client.HandleAtomicClient,
+                      Game.LambdaHack.Client.HandleResponseClient,
+                      Game.LambdaHack.Client.ItemSlot,
+                      Game.LambdaHack.Client.Key,
+                      Game.LambdaHack.Client.LoopClient,
+                      Game.LambdaHack.Client.MonadClient,
+                      Game.LambdaHack.Client.ProtocolClient,
+                      Game.LambdaHack.Client.State,
+                      Game.LambdaHack.Client.UI,
+                      Game.LambdaHack.Client.UI.Animation,
+                      Game.LambdaHack.Client.UI.Config,
+                      Game.LambdaHack.Client.UI.Content.KeyKind
+                      Game.LambdaHack.Client.UI.DrawClient,
+                      Game.LambdaHack.Client.UI.DisplayAtomicClient,
+                      Game.LambdaHack.Client.UI.Frontend,
+                      Game.LambdaHack.Client.UI.Frontend.Chosen,
+                      Game.LambdaHack.Client.UI.Frontend.Std,
+                      Game.LambdaHack.Client.UI.HandleHumanGlobalClient,
+                      Game.LambdaHack.Client.UI.HandleHumanLocalClient,
+                      Game.LambdaHack.Client.UI.HandleHumanClient,
+                      Game.LambdaHack.Client.UI.HumanCmd,
+                      Game.LambdaHack.Client.UI.InventoryClient,
+                      Game.LambdaHack.Client.UI.KeyBindings,
+                      Game.LambdaHack.Client.UI.MonadClientUI,
+                      Game.LambdaHack.Client.UI.MsgClient,
+                      Game.LambdaHack.Client.UI.RunClient,
+                      Game.LambdaHack.Client.UI.StartupFrontendClient
+                      Game.LambdaHack.Client.UI.WidgetClient,
+                      Game.LambdaHack.Common.Ability,
+                      Game.LambdaHack.Common.Actor,
+                      Game.LambdaHack.Common.ActorState,
+                      Game.LambdaHack.Common.ClientOptions,
+                      Game.LambdaHack.Common.Color,
+                      Game.LambdaHack.Common.ContentDef,
+                      Game.LambdaHack.Common.Dice,
+                      Game.LambdaHack.Common.EffectDescription,
+                      Game.LambdaHack.Common.Faction,
+                      Game.LambdaHack.Common.File,
+                      Game.LambdaHack.Common.Flavour,
+                      Game.LambdaHack.Common.Frequency,
+                      Game.LambdaHack.Common.HighScore,
+                      Game.LambdaHack.Common.Item,
+                      Game.LambdaHack.Common.ItemDescription,
+                      Game.LambdaHack.Common.ItemStrongest,
+                      Game.LambdaHack.Common.Kind,
+                      Game.LambdaHack.Common.Level,
+                      Game.LambdaHack.Common.LQueue,
+                      Game.LambdaHack.Common.Misc,
+                      Game.LambdaHack.Common.MonadStateRead,
+                      Game.LambdaHack.Common.Msg,
+                      Game.LambdaHack.Common.Perception,
+                      Game.LambdaHack.Common.PointArray,
+                      Game.LambdaHack.Common.Point,
+                      Game.LambdaHack.Common.Random,
+                      Game.LambdaHack.Common.RingBuffer,
+                      Game.LambdaHack.Common.Save,
+                      Game.LambdaHack.Common.Request,
+                      Game.LambdaHack.Common.Response,
+                      Game.LambdaHack.Common.State,
+                      Game.LambdaHack.Common.Thread,
+                      Game.LambdaHack.Common.Tile,
+                      Game.LambdaHack.Common.Time,
+                      Game.LambdaHack.Common.Vector,
+                      Game.LambdaHack.Content.CaveKind,
+                      Game.LambdaHack.Content.ItemKind,
+                      Game.LambdaHack.Content.ModeKind,
+                      Game.LambdaHack.Content.PlaceKind,
+                      Game.LambdaHack.Content.RuleKind,
+                      Game.LambdaHack.Content.TileKind,
+                      Game.LambdaHack.SampleImplementation.SampleMonadClient,
+                      Game.LambdaHack.SampleImplementation.SampleMonadServer,
+                      Game.LambdaHack.Server,
+                      Game.LambdaHack.Server.Commandline,
+                      Game.LambdaHack.Server.CommonServer,
+                      Game.LambdaHack.Server.DebugServer,
+                      Game.LambdaHack.Server.DungeonGen,
+                      Game.LambdaHack.Server.DungeonGen.Area,
+                      Game.LambdaHack.Server.DungeonGen.AreaRnd,
+                      Game.LambdaHack.Server.DungeonGen.Cave,
+                      Game.LambdaHack.Server.DungeonGen.Place,
+                      Game.LambdaHack.Server.EndServer,
+                      Game.LambdaHack.Server.Fov,
+                      Game.LambdaHack.Server.Fov.Common,
+                      Game.LambdaHack.Server.Fov.Digital,
+                      Game.LambdaHack.Server.Fov.Permissive,
+                      Game.LambdaHack.Server.Fov.Shadow,
+                      Game.LambdaHack.Server.HandleEffectServer,
+                      Game.LambdaHack.Server.HandleRequestServer,
+                      Game.LambdaHack.Server.ItemRev,
+                      Game.LambdaHack.Server.ItemServer,
+                      Game.LambdaHack.Server.LoopServer,
+                      Game.LambdaHack.Server.MonadServer,
+                      Game.LambdaHack.Server.PeriodicServer,
+                      Game.LambdaHack.Server.ProtocolServer,
+                      Game.LambdaHack.Server.StartServer,
+                      Game.LambdaHack.Server.State
+  other-modules:      Paths_LambdaHack
+  build-depends:      array      >= 0.3.0.3 && < 1,
+                      assert-failure >= 0.1 && < 1,
+                      async      >= 2       && < 3,
+                      base       >= 4       && < 5,
+                      binary     >= 0.7     && < 1,
+                      bytestring >= 0.9.2   && < 1,
+                      containers >= 0.5.3.0 && < 1,
+                      data-default,
+                      deepseq    >= 1.3     && < 2,
+                      directory  >= 1.1.0.1 && < 2,
+                      enummapset-th >= 0.6.0.0 && < 1,
+                      filepath   >= 1.2.0.1 && < 2,
+                      ghc-prim   >= 0.2,
+                      hashable   >= 1.1.2.5 && < 2,
+                      hsini      >= 0.2     && < 2,
+                      keys       >= 3       && < 4,
+                      miniutter  >= 0.4.4   && < 2,
+                      mtl        >= 2.0.1   && < 3,
+                      old-time   >= 1.0.0.7 && < 2,
+                      pretty-show >= 1.6    && < 2,
+                      random     >= 1.1     && < 2,
+                      stm        >= 2.4     && < 3,
+                      text       >= 0.11.2.3 && < 2,
+                      transformers >= 0.3   && < 1,
+                      unordered-containers >= 0.2.3 && < 1,
+                      vector     >= 0.10    && < 1,
+                      vector-binary-instances >= 0.2 && < 1,
+                      zlib       >= 0.5.3.1 && < 1
+
+  default-language:   Haskell2010
+  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings
+                      BangPatterns, RecordWildCards, NamedFieldPuns
+  other-extensions:   CPP, TemplateHaskell, MultiParamTypeClasses, RankNTypes,
+                      TypeFamilies, FlexibleContexts, FlexibleInstances,
+                      DeriveFunctor, FunctionalDependencies,
+                      GeneralizedNewtypeDeriving, TupleSections,
+                      DeriveFoldable, DeriveTraversable,
+                      ExistentialQuantification, GADTs, StandaloneDeriving,
+                      DataKinds, KindSignatures
+--, DeriveGeneric
+  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
+  ghc-options:        -fno-ignore-asserts -funbox-strict-fields
+  ghc-prof-options:   -fprof-auto-calls
+
+  if flag(curses) {
+    other-modules:    Game.LambdaHack.Client.UI.Frontend.Curses
+    build-depends:    hscurses >= 1.4.1 && < 2
+    cpp-options:      -DCURSES
+  } else { if flag(vty) {
+    other-modules:    Game.LambdaHack.Client.UI.Frontend.Vty
+    build-depends:    vty >= 5 && < 6
+    cpp-options:      -DVTY
+  } else {
+    if impl(ghc > 7.8) {
+      other-modules:    Game.LambdaHack.Client.UI.Frontend.Gtk
+      build-depends:    gtk >= 0.12.1
+      pkgconfig-depends: gtk+-2.0
+    } else {
+      other-modules:    Game.LambdaHack.Client.UI.Frontend.Gtk
+      build-depends:    gtk >= 0.12.1
+      pkgconfig-depends: gtk+-2.0
+    }
+  } }
+
+  if flag(expose_internal)
+    cpp-options:      -DEXPOSE_INTERNAL
+
+  if flag(with_expensive_assertions)
+    cpp-options:      -DWITH_EXPENSIVE_ASSERTIONS
+
+  if flag(release) {
+    cpp-options:      -DEXPOSE_INTERNAL
+-- 7.6.3 has broken -O2, apparently
+    if impl(ghc > 7.8)
+      ghc-options:      -O2 -fno-ignore-asserts
+  }
+
+executable LambdaHack
+  hs-source-dirs:     GameDefinition
+  main-is:            Main.hs
+  other-modules:      Client.UI.Content.KeyKind,
+                      Content.CaveKind,
+                      Content.ItemKind,
+                      Content.ItemKindActor,
+                      Content.ItemKindOrgan,
+                      Content.ItemKindBlast,
+                      Content.ItemKindTemporary,
+                      Content.ModeKind,
+                      Content.ModeKindPlayer,
+                      Content.PlaceKind,
+                      Content.RuleKind,
+                      Content.TileKind,
+                      TieKnot,
+                      Paths_LambdaHack
+  build-depends:      LambdaHack,
+                      template-haskell >= 2.6 && < 3,
+
+                      array      >= 0.3.0.3 && < 1,
+                      assert-failure >= 0.1 && < 1,
+                      async      >= 2       && < 3,
+                      base       >= 4       && < 5,
+                      binary     >= 0.7     && < 1,
+                      bytestring >= 0.9.2   && < 1,
+                      containers >= 0.5.3.0 && < 1,
+                      data-default,
+                      deepseq    >= 1.3     && < 2,
+                      directory  >= 1.1.0.1 && < 2,
+                      enummapset-th >= 0.6.0.0 && < 1,
+                      filepath   >= 1.2.0.1 && < 2,
+                      ghc-prim   >= 0.2,
+                      hashable   >= 1.1.2.5 && < 2,
+                      hsini      >= 0.2     && < 2,
+                      keys       >= 3       && < 4,
+                      miniutter  >= 0.4.4   && < 2,
+                      mtl        >= 2.0.1   && < 3,
+                      old-time   >= 1.0.0.7 && < 2,
+                      pretty-show >= 1.6    && < 2,
+                      random     >= 1.1     && < 2,
+                      stm        >= 2.4     && < 3,
+                      text       >= 0.11.2.3 && < 2,
+                      transformers >= 0.3   && < 1,
+                      unordered-containers >= 0.2.3 && < 1,
+                      vector     >= 0.10    && < 1,
+                      vector-binary-instances >= 0.2 && < 1,
+                      zlib       >= 0.5.3.1 && < 1
+
+  default-language:   Haskell2010
+  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings
+                      BangPatterns, RecordWildCards, NamedFieldPuns
+  other-extensions:   TemplateHaskell
+  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
+  ghc-options:        -fno-ignore-asserts -funbox-strict-fields
+  ghc-options:        -threaded "-with-rtsopts=-C0.005" -rtsopts
+
+  if flag(release)
+    ghc-options:      -O2 -fno-ignore-asserts "-with-rtsopts=-N1"
+-- TODO: -N
+
+test-suite test
+  type:               exitcode-stdio-1.0
+  hs-source-dirs:     GameDefinition, test
+  main-is:            test.hs
+  build-depends:      LambdaHack,
+                      template-haskell >= 2.6 && < 3,
+
+                      array      >= 0.3.0.3 && < 1,
+                      assert-failure >= 0.1 && < 1,
+                      async      >= 2       && < 3,
+                      base       >= 4       && < 5,
+                      binary     >= 0.7     && < 1,
+                      bytestring >= 0.9.2   && < 1,
+                      containers >= 0.5.3.0 && < 1,
+                      data-default,
+                      deepseq    >= 1.3     && < 2,
+                      directory  >= 1.1.0.1 && < 2,
+                      enummapset-th >= 0.6.0.0 && < 1,
+                      filepath   >= 1.2.0.1 && < 2,
+                      ghc-prim   >= 0.2,
+                      hashable   >= 1.1.2.5 && < 2,
+                      hsini      >= 0.2     && < 2,
+                      keys       >= 3       && < 4,
+                      miniutter  >= 0.4.4   && < 2,
+                      mtl        >= 2.0.1   && < 3,
+                      old-time   >= 1.0.0.7 && < 2,
+                      pretty-show >= 1.6    && < 2,
+                      random     >= 1.1     && < 2,
+                      stm        >= 2.4     && < 3,
+                      text       >= 0.11.2.3 && < 2,
+                      transformers >= 0.3   && < 1,
+                      unordered-containers >= 0.2.3 && < 1,
+                      vector     >= 0.10    && < 1,
+                      vector-binary-instances >= 0.2 && < 1,
+                      zlib       >= 0.5.3.1 && < 1
+
+  default-language:   Haskell2010
+  default-extensions: MonoLocalBinds, ScopedTypeVariables, OverloadedStrings
+                      BangPatterns, RecordWildCards, NamedFieldPuns
+  other-extensions:   TemplateHaskell
+  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
+  ghc-options:        -fno-ignore-asserts -funbox-strict-fields
+  ghc-options:        -threaded "-with-rtsopts=-C0.005" -rtsopts
+
+  if flag(release)
+    ghc-options:      -O2 -fno-ignore-asserts "-with-rtsopts=-N1"
+-- TODO: -N
revision 2
 --             | | +----- non-breaking API additions
 --             | | | +--- code changes with no API change
 version:       0.5.0.0
-x-revision: 1
+x-revision: 2
 synopsis:      A game engine library for roguelike dungeon crawlers
 description:   LambdaHack is a game engine library for roguelike games
                of arbitrary theme, size and complexity,
                       Game.LambdaHack.Server.State
   other-modules:      Paths_LambdaHack
   build-depends:      array      >= 0.3.0.3 && < 1,
-                      assert-failure >= 0.1 && < 1,
+                      assert-failure == 0.1,
                       async      >= 2       && < 3,
                       base       >= 4       && < 5,
                       binary     >= 0.7     && < 1,
                       template-haskell >= 2.6 && < 3,
 
                       array      >= 0.3.0.3 && < 1,
-                      assert-failure >= 0.1 && < 1,
+                      assert-failure == 0.1,
                       async      >= 2       && < 3,
                       base       >= 4       && < 5,
                       binary     >= 0.7     && < 1,
                       template-haskell >= 2.6 && < 3,
 
                       array      >= 0.3.0.3 && < 1,
-                      assert-failure >= 0.1 && < 1,
+                      assert-failure == 0.1,
                       async      >= 2       && < 3,
                       base       >= 4       && < 5,
                       binary     >= 0.7     && < 1,
revision 3
 --             | | +----- non-breaking API additions
 --             | | | +--- code changes with no API change
 version:       0.5.0.0
-x-revision: 2
+x-revision: 3
 synopsis:      A game engine library for roguelike dungeon crawlers
 description:   LambdaHack is a game engine library for roguelike games
                of arbitrary theme, size and complexity,
                       Game.LambdaHack.Server.State
   other-modules:      Paths_LambdaHack
   build-depends:      array      >= 0.3.0.3 && < 1,
-                      assert-failure == 0.1,
+                      assert-failure == 0.1.2.1,
                       async      >= 2       && < 3,
                       base       >= 4       && < 5,
                       binary     >= 0.7     && < 1,
                       template-haskell >= 2.6 && < 3,
 
                       array      >= 0.3.0.3 && < 1,
-                      assert-failure == 0.1,
+                      assert-failure == 0.1.2.1,
                       async      >= 2       && < 3,
                       base       >= 4       && < 5,
                       binary     >= 0.7     && < 1,
                       template-haskell >= 2.6 && < 3,
 
                       array      >= 0.3.0.3 && < 1,
-                      assert-failure == 0.1,
+                      assert-failure == 0.1.2.1,
                       async      >= 2       && < 3,
                       base       >= 4       && < 5,
                       binary     >= 0.7     && < 1,
revision 4
 --             | | +----- non-breaking API additions
 --             | | | +--- code changes with no API change
 version:       0.5.0.0
-x-revision: 3
+x-revision: 4
 synopsis:      A game engine library for roguelike dungeon crawlers
 description:   LambdaHack is a game engine library for roguelike games
                of arbitrary theme, size and complexity,
                       mtl        >= 2.0.1   && < 3,
                       old-time   >= 1.0.0.7 && < 2,
                       pretty-show >= 1.6    && < 2,
-                      random     >= 1.1     && < 2,
+                      random     == 1.1,
                       stm        >= 2.4     && < 3,
                       text       >= 0.11.2.3 && < 2,
                       transformers >= 0.3   && < 1,
                       mtl        >= 2.0.1   && < 3,
                       old-time   >= 1.0.0.7 && < 2,
                       pretty-show >= 1.6    && < 2,
-                      random     >= 1.1     && < 2,
+                      random     == 1.1,
                       stm        >= 2.4     && < 3,
                       text       >= 0.11.2.3 && < 2,
                       transformers >= 0.3   && < 1,
                       mtl        >= 2.0.1   && < 3,
                       old-time   >= 1.0.0.7 && < 2,
                       pretty-show >= 1.6    && < 2,
-                      random     >= 1.1     && < 2,
+                      random     == 1.1,
                       stm        >= 2.4     && < 3,
                       text       >= 0.11.2.3 && < 2,
                       transformers >= 0.3   && < 1,