diff options
Diffstat (limited to 'src/Main.hs')
-rw-r--r-- | src/Main.hs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/Main.hs b/src/Main.hs index 8f44db8..9a6a486 100644 --- a/src/Main.hs +++ b/src/Main.hs | |||
@@ -95,6 +95,8 @@ main = do | |||
95 | , cmd "test" rollTest "Roll a test using the stats of the currently focused entity" | 95 | , cmd "test" rollTest "Roll a test using the stats of the currently focused entity" |
96 | , cmd "combat" entitySeqVal "Roll sequence value for the current focus and enter combat" | 96 | , cmd "combat" entitySeqVal "Roll sequence value for the current focus and enter combat" |
97 | , cmd "combat'" factionSeqVal "Roll sequence values for all members of a faction and have them enter combat" | 97 | , cmd "combat'" factionSeqVal "Roll sequence values for all members of a faction and have them enter combat" |
98 | , cmd "uncombat" clearEntitySeqVal "Drop the focused entity out of combat" | ||
99 | , cmd "uncombat'" clearFactionSeqVal "Drop all members of a faction out of combat" | ||
98 | , cmd "spend" spendSeq "Spend some of the current focus´ AP" | 100 | , cmd "spend" spendSeq "Spend some of the current focus´ AP" |
99 | , cmd "delay" delay "Spend AP until the current focus´ sequence is no higher than the next highest and focus that one" | 101 | , cmd "delay" delay "Spend AP until the current focus´ sequence is no higher than the next highest and focus that one" |
100 | , cmd "note" addNote "Add a note to the current focus" | 102 | , cmd "note" addNote "Add a note to the current focus" |
@@ -307,7 +309,13 @@ entitySeqVal = withFocus entitySeqVal' | |||
307 | factionSeqVal :: Completable Faction -> Sh GameState () | 309 | factionSeqVal :: Completable Faction -> Sh GameState () |
308 | factionSeqVal = withArg $ \qFaction -> use gEntities >>= mapM_ (entitySeqVal') . Map.keys . Map.filter ((==) qFaction . view eFaction) | 310 | factionSeqVal = withArg $ \qFaction -> use gEntities >>= mapM_ (entitySeqVal') . Map.keys . Map.filter ((==) qFaction . view eFaction) |
309 | 311 | ||
310 | entitySeqVal' :: EntityIdentifier -> Sh GameState () | 312 | clearEntitySeqVal :: Sh GameState () |
313 | clearEntitySeqVal = withFocus clearEntitySeqVal' | ||
314 | |||
315 | clearFactionSeqVal :: Completable Faction -> Sh GameState () | ||
316 | clearFactionSeqVal = withArg $ \qFaction -> use gEntities >>= mapM_ (clearEntitySeqVal') . Map.keys . Map.filter ((==) qFaction . view eFaction) | ||
317 | |||
318 | entitySeqVal', clearEntitySeqVal' :: EntityIdentifier -> Sh GameState () | ||
311 | entitySeqVal' ident = void . runMaybeT $ do | 319 | entitySeqVal' ident = void . runMaybeT $ do |
312 | entity <- MaybeT $ preuse (gEntities . ix ident) | 320 | entity <- MaybeT $ preuse (gEntities . ix ident) |
313 | let sVal = fromMaybe (val ignored ["Sequenzwert"] False) $ preview (eStats . sSeqVal) entity | 321 | let sVal = fromMaybe (val ignored ["Sequenzwert"] False) $ preview (eStats . sSeqVal) entity |
@@ -320,6 +328,7 @@ entitySeqVal' ident = void . runMaybeT $ do | |||
320 | & set seqEpsilon (entity ^. eStats . sSeqEpsilon) | 328 | & set seqEpsilon (entity ^. eStats . sSeqEpsilon) |
321 | gEntities . at ident .= Just (newEntity & set eSeqVal val) | 329 | gEntities . at ident .= Just (newEntity & set eSeqVal val) |
322 | gLog <>= pure (ident, "Sequence: " ++ show sNum) | 330 | gLog <>= pure (ident, "Sequence: " ++ show sNum) |
331 | clearEntitySeqVal' ident = gEntities . ix ident . eSeqVal .= Nothing | ||
323 | 332 | ||
324 | spendSeq :: Int -> String -> Sh GameState () | 333 | spendSeq :: Int -> String -> Sh GameState () |
325 | spendSeq n logStr = withFocus $ \focusId -> do | 334 | spendSeq n logStr = withFocus $ \focusId -> do |