private static BaseCombatant LoadCombatantFromReference(ISaveGame saveGame, CombatantReference reference) { var character = BaseCharacterDatabase.Instance.GetCharacter(reference.CharacterId); if (saveGame != null) { var savedCharacter = saveGame.GetCharacterByName(reference.Name); if (savedCharacter != null) { character = savedCharacter; } } var id = reference.Id; if (id == null) { id = Guid.NewGuid().ToString(); } var result = new BaseCombatant(character, reference.Army) { Position = reference.Position, Id = id }; return(result); }
public override void Execute() { var view = SpawningUnit.GetComponent <CombatantView>(); var dimensions = Model.Dimensions; var position = dimensions.GetGridPositionForWorldPosition(SpawningUnit.transform.position); var save = SaveGameService.CurrentSave; ICharacter character; if (save != null) { character = save.GetCharacterByName(view.CharacterName); } else { character = BaseCharacterDatabase.Instance.GetCharacter(view.CharacterId); } var combatant = new BaseCombatant(character, view.Army) { Position = position, Id = view.CombatantId }; Model.Battle.SpawnCombatant(combatant); }
public RandomEffectAreaSpell(Spell spell, BaseCombatant holder) : base(spell, holder) { Timer = new Timer(); CurrentEffectCount = 0; IsEnding = false; }
public void TestBasicFight() { var attackerCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(13) .Strength(7) .Build()) .Weapons("Shortsword") .Build(); var defenderCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(13) .Strength(3) .Build()) .Weapons("Shortsword") .Build(); var attacker = new BaseCombatant(attackerCharacter, ArmyType.Friendly); var defender = new BaseCombatant(defenderCharacter, ArmyType.Friendly); attacker.Position = new Vector2(0, 1); defender.Position = new Vector2(0, 0); var map = new Map(); map.AddCombatant(attacker); map.AddCombatant(defender); var skillDatabase = new SkillDatabase(map); var forecaster = new FightForecaster(map, skillDatabase); var forecast = forecaster.Forecast(attacker, defender, SkillType.Melee); var finalizer = new FightFinalizer(skillDatabase); var final = finalizer.Finalize(forecast, new ConstantRandomizer(100)); var initialPhase = final.InitialPhase; Assert.NotNull(initialPhase); var initialDamage = initialPhase.Effects.GetDefenderDamage(); Assert.AreEqual(5, initialDamage); var counterPhase = final.CounterPhase; Assert.NotNull(counterPhase); var counterDamage = counterPhase.Effects.GetDefenderDamage(); Assert.AreEqual(1, counterDamage); }
public void TakeDamage() { var barrelCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(50) .Defense(0) .Build()) .Build(); var fuckingBarrel = new BaseCombatant(barrelCharacter, ArmyType.Other); var damage = new Damage(100); damage.Apply(fuckingBarrel); Assert.AreEqual(0, fuckingBarrel.Health); Assert.IsFalse(fuckingBarrel.IsAlive); }
public void TestAttackerKillsOnDouble() { var attackerCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(33) .Strength(10) .Build()) .Weapons("Shortsword") .Build(); var defenderCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(0) .Special(0) .Speed(13) .Strength(7) .Build()) .Stats(new StatsBuilder() .ParryChance(0) .Build()) .Weapons("Shortsword") .Build(); var attacker = new BaseCombatant(attackerCharacter, ArmyType.Friendly); var defender = new BaseCombatant(defenderCharacter, ArmyType.Friendly); attacker.Position = new Vector2(0, 0); defender.Position = new Vector2(0, 1); var map = new Map(); var skillDatabase = new SkillDatabase(map); var forecaster = new FightForecaster(map, skillDatabase); var forecast = forecaster.Forecast(attacker, defender, SkillType.Melee); var finalizer = new FightFinalizer(skillDatabase); var final = finalizer.Finalize(forecast, new ConstantRandomizer(100)); Assert.NotNull(final.InitialPhase); Assert.NotNull(final.CounterPhase); Assert.NotNull(final.DoubleAttackPhase); Assert.Null(final.FlankerPhase); }
public override void Build(InfoPanelBox.BuildInfo buildInfo) { base.Build(buildInfo); if (CurrentCombatant != null) CurrentCombatant.OnStatusChange -= new CombatantStatusChangeEventHandler(CurrentCombatant_OnStatusChange); CurrentCombatant = buildInfo.GetArg<BaseCombatant>("Combatant"); CurrentCombatant.OnStatusChange += new CombatantStatusChangeEventHandler(CurrentCombatant_OnStatusChange); UpdateData(); AddItem(0, NameLabel); AddItem(0, HpLabel); AddItem(0, SpLabel); AddItem(0, MpLabel); }
public CombatSpell(Spell spell, BaseCombatant holder) { Spell = spell; Holder = holder; }
void CurrentCombatant_OnMoveEnding(BaseCombatant sender, CombatantMoveEventArgs e) { CurrentCombatant.OnMoveEnding -= new CombatantMoveEventHandler(CurrentCombatant_OnMoveEnding); Combat.ChangeState(BlazeraLib.Combat.EState.ActionSelection); }
void CurrentCombatant_OnStatusChange(BaseCombatant sender, CombatantStatusChangeEventArgs e) { UpdateData(); }
public void TestRangedCounter() { var attackerCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(13) .Strength(7) .Build()) .Stats(new StatsBuilder() .ParryChance(0) .Build()) .Weapons("Slim Recurve") .Build(); var defenderCharacter = new CharacterBuilder() .Attributes(new AttributesBuilder() .Health(15) .Skill(12) .Defense(2) .Special(0) .Speed(13) .Strength(7) .Build()) .Stats(new StatsBuilder() .ParryChance(0) .Build()) .Weapons("Slim Recurve") .Build(); var attacker = new BaseCombatant(attackerCharacter, ArmyType.Friendly); var defender = new BaseCombatant(defenderCharacter, ArmyType.Friendly); attacker.Position = new Vector2(0, 0); defender.Position = new Vector2(0, 2); var map = new Map(); map.AddCombatant(attacker); map.AddCombatant(defender); var skillDatabase = new SkillDatabase(map); var forecaster = new FightForecaster(map, skillDatabase); var forecast = forecaster.Forecast(attacker, defender, SkillType.Ranged); var finalizer = new FightFinalizer(skillDatabase); var final = finalizer.Finalize(forecast, new ConstantRandomizer(100)); var initialPhase = final.InitialPhase; Assert.NotNull(initialPhase); var initialEffects = initialPhase.Effects; Assert.AreEqual(5, initialEffects.GetDefenderDamage()); var counterPhase = final.CounterPhase; Assert.NotNull(counterPhase); var counterEffects = counterPhase.Effects; Assert.AreEqual(5, counterEffects.GetDefenderDamage()); Assert.Null(final.DoubleAttackPhase); Assert.Null(final.FlankerPhase); }