def t (test): for y in fight_and_horror_check (5, 5, 5): yield y # +1 horror yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for y in [5] * (5 + (3 if undead else 0)): yield y yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def actions(self): yield fun.matchclass(arkham.GameplayAction_Stay) yield fun.matchclass(arkham.GameplayAction_DealWithMonster) yield fun.matchclass(arkham.GameplayAction_Evade) yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) for roll in (5,): yield roll
def cast_spell(damage, *roll): yield fun.matchclass(arkham.GameplayAction_Multiple) # cast spell if damage: yield fun.matchclass(arkham.GameplayAction_IncurDamage) # spell damage yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) # lore check for i in roll: yield i
def actions(self): yield fun.matchclass(arkham.GameplayAction_Multiple) yield fun.matchclass(arkham.GameplayAction_IncurDamage) yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 5 # succeed lore check yield fun.matchclass( arkham.GameplayAction_Stay) # the damage got reduced out
def test3 (test): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Evade) yield fun.matchclass (arkham.GameplayAction_Multiple) yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def actions (self): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Evade) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for roll in 4,: yield roll yield fun.matchclass (arkham.GameplayAction_FailRoll)
def test17 (test): for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for y in 1,1,1,1,1,1,1,1,6: yield y yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test1 (test, name): yield fun.and_ (action_bound_item_named (name), fun.matchclass (arkham.GameplayAction_Multiple)) clues = test.inv.clues () yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for dice in 5,5: yield dice assert test.inv.clues () == clues + 3 raise tester.EndTest (True)
def actions(cls, test): yield fun.matchclass(arkham.GameplayAction_Stay) yield fun.take_first() yield fun.matchclass(arkham.GameplayAction_Fight) yield fun.matchclass(arkham.GameplayAction_Multiple) yield fun.matchclass(arkham.GameplayAction_IncurDamage) assert len(test.inv.trophies()) == 5 raise tester.EndTest(True)
def test11(test, name): yield fun.and_(action_bound_item_named(name), fun.matchclass(arkham.GameplayAction_Multiple)) clues = test.inv.clues() yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 5 assert test.inv.clues() == clues + 4 raise tester.EndTest(True)
def actions (cls, test): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.take_first () yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_Multiple) yield fun.matchclass (arkham.GameplayAction_IncurDamage) assert len (test.inv.trophies ()) == 5 raise tester.EndTest (True)
def test2 (test, name): yield fun.and_ (action_bound_item_named (name), fun.matchclass (arkham.GameplayAction_Multiple)) items1 = set (item.proto () for item in test.inv.m_items) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for dice in 5,5: yield dice items2 = set (item.proto () for item in test.inv.m_items) discard_gain_new (items1, items2) raise tester.EndTest (True)
def test5(test, name): items1 = set(item.proto() for item in test.inv.m_items) yield fun.and_(action_bound_item_named(name), fun.matchclass(arkham.GameplayAction_Multiple)) yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 5 items2 = set(item.proto() for item in test.inv.m_items) discard_gain_new(items1, items2) raise tester.EndTest(True)
def test12 (test): trophies = len (test.inv.trophies ()) for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for i in 5, 5, 5, 5, 5, 5, 5: yield i assert trophies == len (test.inv.trophies ()) yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def t(test): h = test.inv.health (arkham.health_stamina) hv = h.cur () for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for y in 1, 1, 1, 1, 1, 5, 5: yield y # pass combat check assert h.cur () == hv - n yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def actions (cls, test): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Fight) trophies = len (test.inv.trophies ()) yield fun.if_else (action_bound_item_named (cls.item_name), fun.matchclass (arkham.GameplayAction_Multiple)) yield fun.matchclass (arkham.GameplayAction_IncurDamage) assert len (test.inv.trophies ()) == trophies + 1 raise tester.EndTest (True)
def actions(cls, test): yield fun.matchclass(arkham.GameplayAction_Stay) yield fun.matchclass(arkham.GameplayAction_DealWithMonster) yield fun.matchclass(arkham.GameplayAction_Fight) trophies = len(test.inv.trophies()) yield fun.if_else(action_bound_item_named(cls.item_name), fun.matchclass(arkham.GameplayAction_Multiple)) yield fun.matchclass(arkham.GameplayAction_IncurDamage) assert len(test.inv.trophies()) == trophies + 1 raise tester.EndTest(True)
def t (test): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Evade) yield lambda action: (" lore(%+d) " % awareness) in action.name () yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # lore check for i in range (3 + awareness): yield 5 yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def t (test, name): h = test.inv.health (arkham.health_stamina) h.reduce (5) hv = h.cur () yield fun.matchclass (arkham.GameplayAction_Stay) # wait for next round for y in cast_spell (True, *list (5 if i < n else 1 for i in range (4))): yield y yield lambda action: " %d " % n in action.name () assert h.cur () == hv + n yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test4 (test): for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for i in xrange (5): yield 1 # fail combat hook yield fun.matchclass (arkham.GameplayAction_FailRoll) stamina = test.inv.health (arkham.health_stamina).cur () yield fun.matchclass (arkham.GameplayAction_Multiple) # cancel stamina, discard assert stamina == test.inv.health (arkham.health_stamina).cur () yield fun.matchclass (arkham.GameplayAction_Fight) raise tester.EndTest (True)
def t(test, name): h = test.inv.health(arkham.health_stamina) h.reduce(5) hv = h.cur() yield fun.matchclass(arkham.GameplayAction_Stay) # wait for next round for y in cast_spell(True, *list(5 if i < n else 1 for i in range(4))): yield y yield lambda action: " %d " % n in action.name() assert h.cur() == hv + n yield fun.matchclass(arkham.GameplayAction_Stay) raise tester.EndTest(True)
def test4(test, name): items1 = set(item.proto() for item in test.inv.m_items) yield fun.and_(action_bound_item_named(name), fun.matchclass(arkham.GameplayAction_Multiple)) clues = test.inv.clues() yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 1 # failure assert test.inv.clues() == clues + 2 yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 5 # pass items2 = set(item.proto() for item in test.inv.m_items) discard_gain_new(items1, items2) raise tester.EndTest(True)
def test15 (test): for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for y in 1,1,1,1,1,1: yield y yield lambda action: "reroll" in action.name () for y in 1,1,1,1,1,1: yield y # now only "spend clue token" matches this, meaning that "exhaust # & reroll" option is gone. yield fun.matchclass (arkham.GameplayAction_Multiple) yield 5 yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test4 (test, name): items1 = set (item.proto () for item in test.inv.m_items) yield fun.and_ (action_bound_item_named (name), fun.matchclass (arkham.GameplayAction_Multiple)) clues = test.inv.clues () yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) yield 1 # failure assert test.inv.clues () == clues + 2 yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) yield 5 # pass items2 = set (item.proto () for item in test.inv.m_items) discard_gain_new (items1, items2) raise tester.EndTest (True)
def test14 (test): for y in cast_spell (True, 5, 5): yield y for y in fight_and_horror_check (5, 5, 5): yield y # note: +1 in effect yield fun.matchclass (arkham.GameplayAction_Evade) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # evade check # evade check: 3 base, +1 monster, +1 Voice of Ra for y in 5, 5, 5, 5, 5: yield y for y in fight_and_horror_check (5, 5): yield y # note: +1 not in effect anymore yield fun.matchclass (arkham.GameplayAction_Evade) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # evade check # evade check: 3 base, +1 monster for y in 5, 5, 5, 5: yield y yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test3(test, name): # turn 1 yield fun.and_(action_bound_item_named(name), fun.matchclass(arkham.GameplayAction_Multiple)) sanity = test.inv.health(arkham.health_sanity).cur() stamina = test.inv.health(arkham.health_stamina).cur() yield fun.matchclass(arkham.GameplayAction_IncurDamage) assert test.inv.health(arkham.health_sanity).cur() == sanity - 1 yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 1 # failure sanity = test.inv.health(arkham.health_sanity).cur() yield fun.matchclass(arkham.GameplayAction_IncurDamage) assert test.inv.health(arkham.health_stamina).cur() == stamina - 2 test.inv.health(arkham.health_sanity).add(4) yield fun.matchclass(arkham.GameplayAction_Stay) # turn 2 yield fun.and_(action_bound_item_named(name), fun.matchclass(arkham.GameplayAction_Multiple)) sanity = test.inv.health(arkham.health_sanity).cur() yield fun.matchclass(arkham.GameplayAction_IncurDamage) assert test.inv.health(arkham.health_sanity).cur() == sanity - 1 yield fun.matchclass(arkham.GameplayAction_NormalCheckHook) yield 5 # success clues = test.inv.clues() yield lambda arg: "gain" in arg.name() and "clues" in arg.name() assert test.inv.clues() == clues + 3 raise tester.EndTest(True)
def test3 (test, name): # turn 1 yield fun.and_ (action_bound_item_named (name), fun.matchclass (arkham.GameplayAction_Multiple)) sanity = test.inv.health (arkham.health_sanity).cur () stamina = test.inv.health (arkham.health_stamina).cur () yield fun.matchclass (arkham.GameplayAction_IncurDamage) assert test.inv.health (arkham.health_sanity).cur () == sanity - 1 yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) yield 1 # failure sanity = test.inv.health (arkham.health_sanity).cur () yield fun.matchclass (arkham.GameplayAction_IncurDamage) assert test.inv.health (arkham.health_stamina).cur () == stamina - 2 test.inv.health (arkham.health_sanity).add (4) yield fun.matchclass (arkham.GameplayAction_Stay) # turn 2 yield fun.and_ (action_bound_item_named (name), fun.matchclass (arkham.GameplayAction_Multiple)) sanity = test.inv.health (arkham.health_sanity).cur () yield fun.matchclass (arkham.GameplayAction_IncurDamage) assert test.inv.health (arkham.health_sanity).cur () == sanity - 1 yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) yield 5 # success clues = test.inv.clues () yield lambda arg: "gain" in arg.name () and "clues" in arg.name () assert test.inv.clues () == clues + 3 raise tester.EndTest (True)
def do(game, investigator, subject, item, check_base, bonus): for ability in subject.special_abilities(): if fun.matchclass(arkham.MonsterResistance)(ability): if ability.family() == bonus.family(): reslev = subject.special_ability_param(ability) bonus = reslev.modify(bonus) return bonus
def test3(): class A: def __init__(self, a): self.m_a = a def a(self): return self.m_a class B: pass x = fun.Function(object, object) @x.match(fun.any, fun.any) def do(i, j): return "%s, %s" % (i, j) @x.match(fun.matchclass(B), fun.any) def do(i, j): return "some B, %s" % j @x.match(fun.any, fun.val == 5) def do(i, j): return "%s, value 5" % i @x.match(fun.bind(X=fun.catch(lambda arg: arg.a())), fun.any) def do(i, j): return "a=%s, %s" % (X, j) assert (x(1, 2) == "1, 2") assert (x(A(1), 2) == "a=1, 2") assert (x(B(), 2) == "some B, 2") assert (x(1, 5) == "1, value 5")
def test3 (): class A: def __init__ (self, a): self.m_a = a def a (self): return self.m_a class B: pass x = fun.Function (object, object) @x.match (fun.any, fun.any) def do (i, j): return "%s, %s" % (i, j) @x.match (fun.matchclass (B), fun.any) def do (i, j): return "some B, %s" % j @x.match (fun.any, fun.val == 5) def do (i, j): return "%s, value 5" % i @x.match (fun.bind (X = fun.catch (lambda arg: arg.a ())), fun.any) def do (i, j): return "a=%s, %s" % (X, j) assert (x (1, 2) == "1, 2") assert (x (A (1), 2) == "a=1, 2") assert (x (B (), 2) == "some B, 2") assert (x (1, 5) == "1, value 5")
def actions (self): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for roll in 5,: yield roll # pass horror check for i in 1,2: yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for roll in 1,1,1: yield roll yield fun.matchclass (arkham.GameplayAction_FailRoll) yield fun.matchclass (arkham.GameplayAction_EndCauseHarmLoop) yield fun.matchclass (arkham.GameplayAction_IncurDamage) yield fun.matchclass (mod_ah.GameplayAction_Incapacitated) assert self.inv.location ().attributes ().flag ("hospital") raise tester.EndTest (True)
def do (game, investigator, subject, item, check_base, bonus): for ability in subject.special_abilities (): if fun.matchclass (arkham.MonsterResistance) (ability): if ability.family () == bonus.family (): reslev = subject.special_ability_param (ability) bonus = reslev.modify (bonus) return bonus
def t(test): h = test.inv.health (arkham.health_sanity) hv = h.cur () for y in fight_and_horror_check (5, 5): yield y assert h.cur () == hv - n yield fun.matchclass (arkham.GameplayAction_Fight) raise tester.EndTest (True)
def test2 (test): for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for i in xrange (14): yield 1 # fail combat hook yield fun.matchclass (arkham.GameplayAction_IncurDamage) # after-use damage yield fun.matchclass (arkham.GameplayAction_FailRoll) yield fun.matchclass (arkham.GameplayAction_EndCauseHarmLoop) yield fun.matchclass (arkham.GameplayAction_IncurDamage) # monster hit yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for i in xrange (5): yield 5 # pass combat hook, this time with fewer die yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test13 (test): trophies = len (test.inv.trophies ()) for y in fight_and_horror_check (5, 5): yield y for y in cast_spell (True, 5, 5): yield y e1 = look_for_action (lambda action: True, lambda action: "endless" in action.name ()) yield e1 assert e1.seen == 2 # we expect two matches, not three, # because magical immunity has to be # ignored yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for i in 5, 1, 1, 1, 1, : yield i # check that one success is # enough even for toughness 2 # monster assert len (test.inv.trophies ()) == trophies + 1 yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test7 (test): for y in fight_and_horror_check (5, 5): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for y in 1, 1, 1, 1, 1: yield y # fail first roll with five die yield fun.matchclass (arkham.GameplayAction_FailRoll) yield fun.matchclass (arkham.GameplayAction_EndCauseHarmLoop) yield fun.matchclass (arkham.GameplayAction_IncurDamage) # monster hit for y in cast_spell (True, 5, 5, 5): yield y yield fun.matchclass (arkham.GameplayAction_ForCombat) yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for y in 1, 1, 1, 1, 1, 5, 5: yield y # pass second roll with seven die yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def test (test): for y in fight_and_horror_check (5, 5): yield y for y in cast_spell (True, *[5 if i < combat_successes else 1 for i in range (7)]): yield y yield fun.matchclass (arkham.GameplayAction_Stay) assert len (test.inv.m_temporary_items) == 0 # check the spell didn't get stuck assert len (test.inv.m_active_items) == 0 # check the spell was discarded assert len (test.inv.m_items) == 0 # check the spell was discarded raise tester.EndTest (True)
def actions(self): x = self.module.heal_action_times() y = self.module.expected_increment(x) h = self.inv.health(self.aspect).cur() for i in range(x): for action in self.module.actions(): yield action if y != _damage: yield fun.matchclass(arkham.GameplayAction_IncurDamage) assert self.inv.health(self.aspect).cur() == h - _damage + y raise tester.EndTest(True)
def test7(test, name): h = [] for aspect in arkham.health_sanity, arkham.health_stamina: health = test.inv.health(aspect) health.reduce(1) h.append(health.cur()) yield fun.matchclass(arkham.GameplayAction_Stay) yield lambda arg: arg.name().find("sanity") >= 0 assert test.inv.health(arkham.health_sanity).cur() == h[0] + 1 yield fun.matchclass(arkham.GameplayAction_Stay) # Use matchclass now to make sure that we have only one available # match: to heal stamina. yield lambda arg: "stamina" in arg.name() assert test.inv.health(arkham.health_stamina).cur() == h[1] + 1 yield fun.matchclass(arkham.GameplayAction_Stay) raise tester.EndTest(True)
def test7 (test, name): h = [] for aspect in arkham.health_sanity, arkham.health_stamina: health = test.inv.health (aspect) health.reduce (1) h.append (health.cur ()) yield fun.matchclass (arkham.GameplayAction_Stay) yield lambda arg: arg.name ().find ("sanity") >= 0 assert test.inv.health (arkham.health_sanity).cur () == h[0] + 1 yield fun.matchclass (arkham.GameplayAction_Stay) # Use matchclass now to make sure that we have only one available # match: to heal stamina. yield lambda arg: "stamina" in arg.name () assert test.inv.health (arkham.health_stamina).cur () == h[1] + 1 yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def actions (self): yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) yield 5 # pass horror check yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for die in roll: yield die yield fun.matchclass (arkham.GameplayAction_Stay) raise tester.EndTest (True)
def t (test): for y in fight_and_horror_check (5, 5): yield y for y in cast_spell (damage, *list (5 for i in xrange (3 + lore_mod))): yield y yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for i in xrange (5 + combat_mod): yield 1 # fail combat hook yield fun.matchclass (arkham.GameplayAction_FailRoll) yield fun.matchclass (arkham.GameplayAction_EndCauseHarmLoop) yield fun.matchclass (arkham.GameplayAction_IncurDamage) # monster hit yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) # combat check for i in xrange (5 + combat_mod): yield 5 # check we still have the bonus yield fun.matchclass (arkham.GameplayAction_Stay) assert len (test.inv.m_temporary_items) == 0 # check the spell didn't get stuck raise tester.EndTest (True)
def actions (self): self.inv.health (arkham.health_sanity).reduce (3) yield fun.matchclass (arkham.GameplayAction_Stay) yield fun.matchclass (arkham.GameplayAction_DealWithMonster) yield fun.matchclass (arkham.GameplayAction_Fight) yield fun.matchclass (arkham.GameplayAction_NormalCheckHook) for roll in 1,: yield roll # fail horror check yield fun.matchclass (arkham.GameplayAction_FailRoll) yield fun.matchclass (arkham.GameplayAction_IncurDamage) yield fun.matchclass (mod_ah.GameplayAction_Incapacitated) assert self.inv.location ().attributes ().flag ("asylum") raise tester.EndTest (True)