public void TestAttackSpellEventsTimeout() { AllPlayers.Invalidate(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Monster joeTheVineBlight = MonsterBuilder.BuildVineBlight("Joe"); Spell zzzRangeSpell = AllSpells.Get("ZZZ Test Range Spell", merkin, 3); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(merkin); game.AddMonster(joeTheVineBlight); game.EnteringCombat(); merkin.Cast(zzzRangeSpell, joeTheVineBlight); List <CastedSpell> activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(0, activeSpells.Count); Assert.AreEqual("onCasting", Expressions.GetStr("Get(_spellState)", merkin)); const int hiddenThreshold = 12; merkin.ReadyRollDice(DiceRollType.Attack, "1d20(:score),2d8(:damage),1d6(:damage)", hiddenThreshold); Assert.AreEqual("onCast", Expressions.GetStr("Get(_spellState)", merkin)); const int damage = 7; merkin.DieRollStopped(hiddenThreshold, damage); game.AdvanceClock(DndTimeSpan.FromMinutes(1)); Assert.AreEqual("onDispel", Expressions.GetStr("Get(_spellState)", merkin)); activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(0, activeSpells.Count); game.ExitingCombat(); }
public void TestAllFeatureExpressions() { void Expressions_ExceptionThrown(object sender, DndCoreExceptionEventArgs ea) { throw ea.Ex; } DndGame game = DndGame.Instance; game.GetReadyToPlay(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); Character willy = AllPlayers.GetFromId(PlayerID.Willy); Character lady = AllPlayers.GetFromId(PlayerID.Lady); Character fred = AllPlayers.GetFromId(PlayerID.Fred); game.AddPlayer(merkin); game.AddPlayer(ava); game.AddPlayer(willy); game.AddPlayer(lady); Expressions.ExceptionThrown += Expressions_ExceptionThrown; merkin.TestEvaluateAllExpressions(); ava.TestEvaluateAllExpressions(); willy.TestEvaluateAllExpressions(); lady.TestEvaluateAllExpressions(); fred.TestEvaluateAllExpressions(); // TODO: Test shortcut AvailableWhen expression. // TODO: Test spell events. // TODO: Test all data-driven Properties and Functions. }
public void TestMods() { Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); Assert.AreEqual(3, Expressions.GetInt("Mod(strength)", ava)); Assert.AreEqual(0, Expressions.GetInt("Mod(dexterity)", ava)); Assert.AreEqual(2, Expressions.GetInt("Mod(constitution)", ava)); Assert.AreEqual(-1, Expressions.GetInt("Mod(intelligence)", ava)); Assert.AreEqual(-1, Expressions.GetInt("Mod(wisdom)", ava)); Assert.AreEqual(4, Expressions.GetInt("Mod(charisma)", ava)); Character fred = AllPlayers.GetFromId(PlayerID.Fred); Assert.AreEqual(3, Expressions.GetInt("Mod(strength)", fred)); Assert.AreEqual(3, Expressions.GetInt("Mod(dexterity)", fred)); Assert.AreEqual(4, Expressions.GetInt("Mod(constitution)", fred)); Assert.AreEqual(-1, Expressions.GetInt("Mod(intelligence)", fred)); Assert.AreEqual(0, Expressions.GetInt("Mod(wisdom)", fred)); Assert.AreEqual(-1, Expressions.GetInt("Mod(charisma)", fred)); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Assert.AreEqual(-1, Expressions.GetInt("Mod(strength)", merkin)); Assert.AreEqual(2, Expressions.GetInt("Mod(dexterity)", merkin)); Assert.AreEqual(2, Expressions.GetInt("Mod(constitution)", merkin)); Assert.AreEqual(1, Expressions.GetInt("Mod(intelligence)", merkin)); Assert.AreEqual(1, Expressions.GetInt("Mod(wisdom)", merkin)); Assert.AreEqual(3, Expressions.GetInt("Mod(charisma)", merkin)); }
public void TestAutoAdvanceRound() { DndGame game = DndGame.Instance; game.GetReadyToPlay(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Monster joeTheVineBlight = MonsterBuilder.BuildVineBlight("Joe"); game.AddPlayer(merkin); game.AddMonster(joeTheVineBlight); game.EnteringCombat(); DateTime enterCombatTime = game.Time; Assert.AreEqual(1, game.RoundNumber); Spell zzzSaveSpell = AllSpells.Get("ZZZ Test Save Spell", merkin, 3); merkin.CastTest(zzzSaveSpell, joeTheVineBlight); joeTheVineBlight.PrepareAttack(merkin, joeTheVineBlight.GetAttack(AttackNames.Constrict)); merkin.CastTest(zzzSaveSpell, joeTheVineBlight); Assert.AreEqual(2, game.RoundNumber); DateTime exitCombatTime = game.Time; TimeSpan totalCombatTime = exitCombatTime - enterCombatTime; Assert.AreEqual((game.RoundNumber - 1) * 6 /*seconds*/, totalCombatTime.TotalSeconds); game.ExitingCombat(); Assert.AreEqual(1, game.RoundNumber); }
public void TestSaveSpellEvents() { AllPlayers.Invalidate(); History.TimeClock = new DndTimeClock(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Monster joeTheVineBlight = MonsterBuilder.BuildVineBlight("Joe"); Spell zzzSaveSpell = AllSpells.Get("ZZZ Test Save Spell", merkin, 3); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(merkin); game.AddMonster(joeTheVineBlight); merkin.Cast(zzzSaveSpell, joeTheVineBlight); merkin.ReadyRollDice(DiceRollType.DamageOnly, "3d6(fire)", 12); List <CastedSpell> activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(1, activeSpells.Count); Assert.AreEqual("onCast", Expressions.GetStr("Get(_spellState)", merkin)); game.AdvanceClock(DndTimeSpan.FromMinutes(1)); Assert.AreEqual("onDispel", Expressions.GetStr("Get(_spellState)", merkin)); activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); Assert.AreEqual(0, activeSpells.Count); }
public void TestStateChangeEvents() { string lastAvaKey = string.Empty; object lastAvaOldValue = null; object lastAvaNewValue = null; void Ava_StateChanged(object sender, StateChangedEventArgs ea) { lastAvaKey = ea.Key; lastAvaOldValue = ea.OldValue; lastAvaNewValue = ea.NewValue; } Character ava = AllPlayers.GetFromId(PlayerID.Ava); ava.ClearStateVariables(); ava.StateChanged += Ava_StateChanged; Expressions.Do("Set(Rage,true)", ava); Assert.AreEqual("Rage", lastAvaKey); Assert.IsTrue((bool)lastAvaNewValue); Assert.IsNull(lastAvaOldValue); Expressions.Do("Set(Rage,false)", ava); Assert.IsFalse((bool)lastAvaNewValue); Assert.IsTrue((bool)lastAvaOldValue); }
public void TestBarbarianMeleeDamageOffset() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); fred.StartTurnResetState(); Assert.AreEqual(0, fred.damageOffsetThisRoll); fred.ActivateFeature("BarbarianMelee"); Assert.AreEqual(2, fred.damageOffsetThisRoll); fred.DeactivateFeature("BarbarianMelee"); CharacterClass barbarianClass = fred.Classes.FirstOrDefault(x => x.Name == "Barbarian"); Assert.IsNotNull(barbarianClass); fred.ResetPlayerActionBasedState(); barbarianClass.Level = 9; fred.ActivateFeature("BarbarianMelee"); Assert.AreEqual(3, fred.damageOffsetThisRoll); fred.DeactivateFeature("BarbarianMelee"); fred.ResetPlayerActionBasedState(); barbarianClass.Level = 16; fred.ActivateFeature("BarbarianMelee"); Assert.AreEqual(4, fred.damageOffsetThisRoll); }
public void TestGetSet() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); Character ava = AllPlayers.GetFromId(PlayerID.Ava); Expressions.Do("Set(Rage,true)", ava); Expressions.Do("Set(Rage,false)", fred); Assert.IsTrue(Expressions.GetBool("Get(Rage)", ava)); Assert.IsFalse(Expressions.GetBool("Get(Rage)", fred)); // Now swap them... Expressions.Do("Set(Rage,false)", ava); Expressions.Do("Set(Rage,true)", fred); // And verify new results are written: Assert.IsTrue(Expressions.GetBool("Get(Rage)", fred)); Assert.IsFalse(Expressions.GetBool("Get(Rage)", ava)); // Now swap them with an expression... Expressions.Do("Set(Rage,!Get(Rage))", ava); Expressions.Do("Set(Rage,!Get(Rage))", fred); // Did the last expression swap work? Assert.IsTrue(Expressions.GetBool("Get(Rage)", ava)); Assert.IsFalse(Expressions.GetBool("Get(Rage)", fred)); // And finally, make sure the Expressions engine agrees: Assert.IsTrue(Expressions.GetBool("Get(Rage) == true", ava)); Assert.IsTrue(Expressions.GetBool("Get(Rage) == false", fred)); }
public void TestBarbarianMeleeConditionsWithVariousWeapons() { AllPlayers.Invalidate(); History.TimeClock = new DndTimeClock(); Character fred = AllPlayers.GetFromId(PlayerID.Fred); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(fred); game.Start(); fred.StartTurnResetState(); AssignedFeature barbarianMelee = fred.GetFeature("BarbarianMelee"); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); fred.ActivateFeature("WildSurgeRage"); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); // Not yet. We need to be using the right weapon. PlayerActionShortcut greataxe = fred.GetShortcut("Greataxe"); Assert.IsNotNull(greataxe); fred.PrepareWeaponAttack(greataxe); Assert.IsTrue(Expressions.GetBool("InRage", fred)); Assert.IsTrue(Expressions.GetBool("AttackIsMelee", fred)); Assert.IsTrue(Expressions.GetBool("AttackingWith(strength)", fred)); Assert.IsTrue(barbarianMelee.ShouldActivateNow()); PlayerActionShortcut longbow = fred.GetShortcut("Longbow"); fred.PrepareWeaponAttack(longbow); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); }
public void TestBarbarianMeleeConditionsWithFinesseWeapons() { History.TimeClock = new DndTimeClock(); Character fred = AllPlayers.GetFromId(PlayerID.Fred); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(fred); game.Start(); fred.StartTurnResetState(); AssignedFeature barbarianMelee = fred.GetFeature("BarbarianMelee"); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); fred.ActivateFeature("WildSurgeRage"); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); // Not yet. We need to be using the right weapon. PlayerActionShortcut dagger = fred.GetShortcut("Dagger"); Assert.IsNotNull(dagger); fred.PrepareWeaponAttack(dagger); Assert.IsTrue(barbarianMelee.ShouldActivateNow()); fred.baseDexterity = 18; fred.baseStrength = 10; dagger.UpdatePlayerAttackingAbility(fred, false); fred.PrepareWeaponAttack(dagger); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); // Should not be satisfied because dexterity is now the ability of choice to use with this finesse weapon. }
public void TestBarbarianMeleeRageExpiration() { AllPlayers.Invalidate(); AllFeatures.Invalidate(); History.TimeClock = new DndTimeClock(); Character fred = AllPlayers.GetFromId(PlayerID.Fred); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(fred); game.Start(); fred.StartTurnResetState(); AssignedFeature barbarianMelee = fred.GetFeature("BarbarianMelee"); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); fred.ActivateFeature("WildSurgeRage"); PlayerActionShortcut greataxe = fred.GetShortcut("Greataxe"); fred.PrepareWeaponAttack(greataxe); Assert.IsTrue(barbarianMelee.ShouldActivateNow()); // Now test alarm system to turn off rage after one minute.... History.TimeClock.Advance(DndTimeSpan.FromSeconds(59)); Assert.IsTrue(barbarianMelee.ShouldActivateNow()); History.TimeClock.Advance(DndTimeSpan.FromSeconds(1)); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); }
public void TestConditionsChanged() { Conditions oldConditions = Conditions.None; Conditions newConditions = Conditions.None; void Ava_ConditionsChanged(object sender, ConditionsChangedEventArgs ea) { oldConditions = ea.OldConditions; newConditions = ea.NewConditions; } Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); ava.ConditionsChanged += Ava_ConditionsChanged; ava.ActiveConditions = Conditions.None; Assert.AreEqual(Conditions.None, oldConditions); Assert.AreEqual(Conditions.None, newConditions); ava.ActiveConditions = Conditions.Paralyzed | Conditions.Petrified; Assert.AreEqual(Conditions.None, oldConditions); Assert.AreEqual(Conditions.Paralyzed | Conditions.Petrified, newConditions); ava.ActiveConditions = Conditions.Prone; Assert.AreEqual(Conditions.Paralyzed | Conditions.Petrified, oldConditions); Assert.AreEqual(Conditions.Prone, newConditions); }
public void TestAttackSpellEventsOnPlayerAttacks() { AllPlayers.Invalidate(); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Monster joeVineBlight = MonsterBuilder.BuildVineBlight("Joe"); Spell zzzSaveSpell = AllSpells.Get("ZZZ Test Save Spell", merkin, 3); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(merkin); game.AddMonster(joeVineBlight); game.EnteringCombat(); merkin.Cast(zzzSaveSpell, joeVineBlight); const int hiddenThreshold = 12; const int damage = 7; Assert.AreEqual("onCasting", Expressions.GetStr("Get(_spellState)", merkin)); merkin.ReadyRollDice(DiceRollType.DamageOnly, "1d6(fire)"); Assert.AreEqual("onCast", Expressions.GetStr("Get(_spellState)", merkin)); merkin.WillAttack(joeVineBlight, Attack.Melee("Unarmed Strike", 5, 5)); Assert.AreEqual("onPlayerAttacks", Expressions.GetStr("Get(_spellState)", merkin)); merkin.ReadyRollDice(DiceRollType.Attack, "1d20(:score),2d8(:damage),1d6(:damage)", hiddenThreshold); merkin.DieRollStopped(hiddenThreshold, damage); Assert.AreEqual("onPlayerHitsTarget", Expressions.GetStr("Get(_spellState)", merkin)); List <CastedSpell> activeSpells = merkin.GetActiveSpells(); Assert.IsNotNull(activeSpells); game.ExitingCombat(); }
public void TestTableAccess() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Assert.AreEqual(4, Expressions.GetInt("Table(\"Barbarian\", \"Rages\", \"Level\", Level(\"Barbarian\"))", fred)); Assert.AreEqual(1, Expressions.GetInt("Table(\"Sorcerer\", \"Slot5Spells\", \"Level\", 9)")); Assert.AreEqual(6, Expressions.GetInt("Table(\"Sorcerer\", \"SorceryPoints\", \"Level\", 6)", merkin)); }
public void SetTests() { Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); Expressions.Do("Set(proficiencyBonus, 4)", ava); Assert.AreEqual(4, ava.proficiencyBonus); Expressions.Do("Set(proficiencyBonus, 8)", ava); Assert.AreEqual(8, ava.proficiencyBonus); Expressions.Do("Set(ActiveConditions, Petrified | Prone)", ava); Assert.AreEqual(Conditions.Petrified | Conditions.Prone, ava.ActiveConditions); }
public void TestLevel() { AllPlayers.Invalidate(); Character fred = AllPlayers.GetFromId(PlayerID.Fred); Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); Assert.AreEqual(6, Expressions.Get("Level(\"Barbarian\")", fred)); Assert.AreEqual(0, Expressions.Get("Level(\"Fighter\")", fred)); Assert.AreEqual(0, Expressions.Get("Level(\"Fighter\")", ava)); Assert.AreEqual(6, Expressions.Get("Level(\"Paladin\")", ava)); }
public void TestUnarmoredDefense() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); fred.baseArmorClass = 0; Assert.AreEqual(0, fred.baseArmorClass); Expressions.Do("Set(baseArmorClass, 10 + Mod(dexterity) + Mod(constitution) + ShieldBonus)", fred); Assert.AreEqual(17, fred.baseArmorClass); fred.ShieldBonus = 2; Expressions.Do("Set(baseArmorClass, 10 + Mod(dexterity) + Mod(constitution) + ShieldBonus)", fred); Assert.AreEqual(19, fred.baseArmorClass); }
public void TestGetProperties() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); Character merkin = AllPlayers.GetFromId(PlayerID.Merkin); Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); Assert.AreEqual(3, Expressions.GetInt("Get(proficiencyBonus)", ava)); Assert.AreEqual(Ability.charisma, Expressions.Get <Ability>("Get(spellCastingAbility)", ava)); Assert.AreEqual(Ability.charisma, Expressions.Get <Ability>("Get(spellCastingAbility)", merkin)); Assert.AreEqual(Ability.none, Expressions.Get <Ability>("Get(spellCastingAbility)", fred)); Assert.AreEqual(4, Expressions.GetInt("Get(charismaMod)", ava)); }
public void TestPropertyAccess() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); Character ava = AllPlayers.GetFromId(PlayerID.LilCutie); Assert.AreEqual(0, Expressions.Get("leftMostPriority", fred)); Assert.AreEqual(5, Expressions.Get("leftMostPriority", ava)); Assert.AreEqual(52, Expressions.GetInt("hitPoints", ava)); Assert.AreEqual(30, Expressions.GetInt("WalkingSpeed", ava)); Assert.AreEqual(3, Expressions.GetInt("Max(dexterityMod,strengthMod)", ava)); Assert.AreEqual(0, Expressions.GetInt("Min(dexterityMod,strengthMod)", ava)); Assert.AreEqual("Ava Wolfhard", Expressions.Get("name", ava)); }
public void TestOffset() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); fred.StartTurnResetState(); Expressions.Do("Set(RageCount,0)", fred); Expressions.Do("Set(MyOffset,4)", fred); Assert.AreEqual(0, Expressions.GetInt("Get(RageCount)", fred)); Expressions.Do("Offset(RageCount, 1)", fred); Assert.AreEqual(1, Expressions.GetInt("Get(RageCount)", fred)); Expressions.Do("Offset(RageCount, MyOffset)", fred); Assert.AreEqual(5, Expressions.GetInt("Get(RageCount)", fred)); }
public void TestBarbarianMeleeDeactivate() { AllPlayers.Invalidate(); AllFeatures.Invalidate(); DndGame game = DndGame.Instance; game.GetReadyToPlay(); Character fred = AllPlayers.GetFromId(PlayerID.Fred); game.AddPlayer(fred); game.Start(); PlayerActionShortcut greataxe = fred.GetShortcut("Greataxe"); fred.Use(greataxe); CharacterClass barbarianClass = fred.Classes.FirstOrDefault(x => x.Name == "Barbarian"); Assert.IsNotNull(barbarianClass); barbarianClass.Level = 16; fred.ResetPlayerActionBasedState(); Assert.AreEqual(0, fred.damageOffsetThisRoll); fred.ActivateFeature("WildSurgeRage"); Assert.AreEqual(0, fred.damageOffsetThisRoll); fred.Use(greataxe); Assert.AreEqual(4, fred.damageOffsetThisRoll); AssignedFeature rageFeature = fred.GetFeature("WildSurgeRage"); Assert.IsTrue(rageFeature.Feature.IsActive); Expressions.Do("Set(_rage,false)", fred); Assert.IsFalse(rageFeature.Feature.IsActive); Assert.IsFalse(fred.GetFeature("BarbarianMelee").Feature.IsActive); fred.Use(greataxe); Assert.IsFalse(fred.GetFeature("BarbarianMelee").Feature.IsActive); Assert.AreEqual(0, fred.damageOffsetThisRoll); fred.ActivateFeature("WildSurgeRage"); Assert.IsTrue(fred.GetFeature("BarbarianMelee").Feature.IsActive); Assert.AreEqual(4, fred.damageOffsetThisRoll); fred.DeactivateFeature("WildSurgeRage"); Assert.IsFalse(fred.GetFeature("BarbarianMelee").Feature.IsActive); Assert.AreEqual(0, fred.damageOffsetThisRoll); }
public Character GetSingleRollingPlayer() { if (multiplayerSummary == null) { return(AllPlayers.GetFromId(playerID)); } if (multiplayerSummary.Count == 1) { return(AllPlayers.GetFromId(multiplayerSummary[0].playerId)); } return(null); }
public void TestRaceClass() { Character oldFred = AllPlayers.Get("Old Fred"); Assert.AreEqual("Lizardfolk Fighter 4 / Barbarian 1", oldFred.raceClass); Character fred = AllPlayers.GetFromId(PlayerID.Fred); Assert.AreEqual("Lizardfolk Barbarian 6", fred.raceClass); Character ava = AllPlayers.GetFromId(PlayerID.Ava); Assert.AreEqual("Human Paladin 6", ava.raceClass); }
public static void TargetAllPlayersInTaleSpire() { foreach (CreatureStats creatureStats in PlayerStatManager.Players) { if (creatureStats.IsTargeted) { Character player = AllPlayers.GetFromId(creatureStats.CreatureId); if (player != null) { TaleSpireClient.SetTargeted(player.taleSpireId, true); } } } }
public static Creature GetCreatureFromId(int creatureId) { if (creatureId >= 0) { return(AllPlayers.GetFromId(creatureId)); } else { InGameCreature inGameCreature = AllInGameCreatures.GetByIndex(-creatureId); if (inGameCreature != null) { return(inGameCreature.Creature); } } return(null); }
public void TestBarbarianMeleeConditions() { Character fred = AllPlayers.GetFromId(PlayerID.Fred); DndGame game = DndGame.Instance; game.GetReadyToPlay(); game.AddPlayer(fred); game.Start(); fred.StartTurnResetState(); AssignedFeature barbarianMelee = fred.GetFeature("BarbarianMelee"); Assert.IsFalse(barbarianMelee.ShouldActivateNow()); Expressions.Do("Set(_rage,true)", fred); fred.GetAttackingAbilityModifier(WeaponProperties.Melee, AttackType.Melee); Assert.IsTrue(barbarianMelee.ShouldActivateNow()); }
public static List <Creature> GetTargets() { List <Creature> creatures = new List <Creature>(); foreach (CreatureStats creatureStats in PlayerStatManager.Players) { if (creatureStats.IsTargeted) { creatures.Add(AllPlayers.GetFromId(creatureStats.CreatureId)); } } creatures.AddRange(AllInGameCreatures.GetTargeted()); return(creatures); }
private void AddConcentrationSaveForPlayer(DiceRoll diceRoll, int playerId) { string backgroundColor, textColor; Character player = AllPlayers.GetFromId(playerId); GetPlayerDieColor(player, out backgroundColor, out textColor); string name = ""; if (player != null) { name = player.name; } DiceDto diceDto = CreateDie(playerId, backgroundColor, textColor, name, 20, STR_ConcentrationSave); diceDto.Label = STR_ConcentrationSave; diceRoll.DiceDtos.Add(diceDto); }
public void TestTurnEvents() { AllPlayers.Invalidate(); DndGame game = DndGame.Instance; game.GetReadyToPlay(); Character ava = game.AddPlayer(AllPlayers.GetFromId(PlayerID.LilCutie)); Creature joe = game.AddCreature(MonsterBuilder.BuildVineBlight("Joe")); PlayerActionShortcut greatsword = ava.GetShortcut("Greatsword"); game.EnteringCombat(); Assert.IsNull(game.ActiveCreature); ava.TestStartTurn(); Assert.AreEqual(ava, game.ActiveCreature); ava.PrepareAttack(joe, greatsword); game.SetHiddenThreshold(ava, 12, DiceRollType.Attack); //DiceRoll diceRoll = ava.GetRoll(); game.ExitingCombat(); }
private static void TargetCreaturesByTaleSpireId(List <string> targetCreatureIds) { foreach (CreatureStats creatureStats in PlayerStatManager.Players) { Character player = AllPlayers.GetFromId(creatureStats.CreatureId); if (player != null) { creatureStats.IsTargeted = targetCreatureIds.Contains(player.taleSpireId); } else { creatureStats.IsTargeted = false; } } foreach (InGameCreature creature in AllInGameCreatures.Creatures) { creature.IsTargeted = targetCreatureIds.Contains(creature.TaleSpireId); } }