private void OnCombatEventOccurred(UnitCombatResults results) { if (results.Attacker == ObjectToDisplay || results.Defender == ObjectToDisplay) { Refresh(); } }
private void OnRangedCombat(UnitCombatResults combatResults) { var attacker = combatResults.Attacker; var defender = combatResults.Defender; if (defender.Type == UnitType.Civilian) { return; } if (attacker.Type != UnitType.City && attacker.CurrentHitpoints > 0) { if (defender.Type != UnitType.City || combatResults.DamageToDefender > 0) { attacker.Experience += Mathf.RoundToInt( Config.RangedAttackerExperience * UnitModifiers.ExperienceGain.GetValueForUnit(attacker) ); } } if (defender.Type != UnitType.City && defender.CurrentHitpoints > 0) { defender.Experience += Mathf.RoundToInt( Config.RangedDefenderExperience * UnitModifiers.ExperienceGain.GetValueForUnit(defender) ); } }
public void MeleeCombatWithUnitFired_GoldTransferLimitedByDefenderStockpile() { var attackerOwner = BuildCivilization(100); var defenderOwner = BuildCivilization(2); var attacker = BuildUnit(attackerOwner, UnitType.Melee, 1f); var defender = BuildUnit(defenderOwner, UnitType.City); Container.Resolve <GoldRaidingLogic>(); var results = new UnitCombatResults(attacker, defender, 50, 50, new CombatInfo()); UnitSignals.MeleeCombatWithUnit.OnNext(results); Assert.AreEqual(102, attackerOwner.GoldStockpile, "AttackerOwner.GoldStockpile has an unexpected value"); Assert.AreEqual(0, defenderOwner.GoldStockpile, "DefenderOwner.GoldStockpile has an unexpected value"); }
public void MeleeCombatWithUnitFired_TransfersGoldBasedOnDamageAndGoldRaiding() { var attackerOwner = BuildCivilization(100); var defenderOwner = BuildCivilization(200); var attacker = BuildUnit(attackerOwner, UnitType.Melee, 0.5f); var defender = BuildUnit(defenderOwner, UnitType.City); Container.Resolve <GoldRaidingLogic>(); var results = new UnitCombatResults(attacker, defender, 50, 50, new CombatInfo()); UnitSignals.MeleeCombatWithUnit.OnNext(results); Assert.AreEqual(125, attackerOwner.GoldStockpile, "AttackerOwner.GoldStockpile has an unexpected value"); Assert.AreEqual(175, defenderOwner.GoldStockpile, "DefenderOwner.GoldStockpile has an unexpected value"); }
public void MeleeCombatWithUnitFired_DoesNothingIfDefenderNotCity() { var attackerOwner = BuildCivilization(100); var defenderOwner = BuildCivilization(200); var attacker = BuildUnit(attackerOwner, UnitType.Melee, 0.5f); var defender = BuildUnit(defenderOwner, UnitType.Melee); Container.Resolve <GoldRaidingLogic>(); var results = new UnitCombatResults(attacker, defender, 20, 20, new CombatInfo()); UnitSignals.MeleeCombatWithUnit.OnNext(results); Assert.AreEqual(100, attackerOwner.GoldStockpile, "AttackerOwner.GoldStockpile has an unexpected value"); Assert.AreEqual(200, defenderOwner.GoldStockpile, "DefenderOwner.GoldStockpile has an unexpected value"); }
public int DefenderExperienceGainFromRangedCombatTests(CombatExperienceGainTestData testData) { SetupConfig(testData.UnitConfig); var attacker = BuildUnit(testData.Attacker); var defender = BuildUnit(testData.Defender); var results = new UnitCombatResults(attacker, defender, 0, testData.DamageToDefender, null); Container.Resolve <UnitExperienceLogic>(); var unitSignals = Container.Resolve <UnitSignals>(); unitSignals.RangedCombatWithUnit.OnNext(results); return(defender.Experience); }
public void RangedCombatWithUnitFired_AttackerDeadAndDefenderDead_NoGoldBountyGained() { var attackerOwner = BuildCivilization(0); var defenderOwner = BuildCivilization(0); var attacker = BuildUnit(attackerOwner, BuildUnitTemplate(100), 0); var defender = BuildUnit(defenderOwner, BuildUnitTemplate(200), 0); MockGoldBountyPerProductionModifier.Setup(modifier => modifier.GetValueForCiv(attackerOwner)).Returns(1.5f); MockGoldBountyPerProductionModifier.Setup(modifier => modifier.GetValueForCiv(defenderOwner)).Returns(2.5f); Container.Resolve <GoldRaidingLogic>(); var results = new UnitCombatResults(attacker, defender, 0, 0, new CombatInfo()); UnitSignals.RangedCombatWithUnit.OnNext(results); Assert.AreEqual(0, attackerOwner.GoldStockpile, "AttackerOwner has an unexpected gold stockpile"); Assert.AreEqual(0, defenderOwner.GoldStockpile, "DefenderOwner has an unexpected gold stockpile"); }