Exemplo n.º 1
0
 private void OnCombatEventOccurred(UnitCombatResults results)
 {
     if (results.Attacker == ObjectToDisplay || results.Defender == ObjectToDisplay)
     {
         Refresh();
     }
 }
Exemplo n.º 2
0
        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");
        }
Exemplo n.º 6
0
        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");
        }