示例#1
0
        public bool manageArrival(StateGameLayer.Troop troop, int Target)
        {
            bool troopDie = true;
            if (troop.ObjectType != stateGame.factory.factories[Target].ObjectType)
            {
                int beforeBattleFactoryHP = stateGame.factory.factories[Target].HitPoints;
                int beforeBattleTroopHP = troop.HitPoints;

                int attackTroop = Math.Max(troop.Damage - stateGame.factory.factories[Target].Defense, 0);
                int shieldsFactory = stateGame.factory.factories[Target].Shields + (stateGame.factory.factories[Target].Shields / 20) * stateGame.factory.factories[Target].Elements;
                stateGame.factory.factories[Target].Shields = Math.Max(stateGame.factory.factories[Target].Shields - attackTroop, 0);
                attackTroop = Math.Max(attackTroop - shieldsFactory, 0);
                stateGame.factory.factories[Target].HitPoints = stateGame.factory.factories[Target].HitPoints - attackTroop;

                int attackFactory = Math.Max(stateGame.factory.factories[Target].Damage + (stateGame.factory.factories[Target].Damage / 20) * stateGame.factory.factories[Target].Elements - troop.Defense, 0);
                int shieldsTroop = troop.Shields;
                troop.Shields = Math.Max(troop.Shields - attackFactory, 0);
                attackFactory = Math.Max(attackFactory - shieldsTroop, 0);
                troop.HitPoints = troop.HitPoints - attackFactory;

                stateGame.factory.factories[Target].recalculateElements(beforeBattleFactoryHP);
                troop.recalculateElements(beforeBattleTroopHP);

                if (stateGame.factory.factories[Target].isDead() && !troop.isDead())
                {
                    stateGame.factory.factories[Target].Elements = troop.Elements;
                    stateGame.factory.factories[Target].Elements = Math.Min(stateGame.factory.factories[Target].Elements, stateGame.factory.factories[Target].MaxElements);
                    stateGame.factory.factories[Target].ObjectType = troop.ObjectType;
                    stateGame.factory.factories[Target].HitPoints = stateGame.factory.factories[Target].MaxHitPoints;
                    stateGame.factory.factories[Target].Shields = stateGame.factory.factories[Target].MaxShields;
                    stateGame.factory.factories[Target].Selected = false;
                    troop.HitPoints = 0;
                    troopDie = false;
                    stateGame.factory.change = true;
                }
                else if (stateGame.factory.factories[Target].isDead() && troop.isDead())
                {
                    stateGame.factory.factories[Target].HitPoints = stateGame.factory.factories[Target].MaxHitPoints / 10;
                    troopDie = true;
                }
            }
            else
            {
                stateGame.factory.factories[Target].Elements += troop.Elements;
                stateGame.factory.factories[Target].Elements = Math.Min(stateGame.factory.factories[Target].Elements, stateGame.factory.factories[Target].MaxElements);
                troop.HitPoints = 0;
                troopDie = false;
            }
            if (troop.isDead())
            {
                stateGame.factory.factories[Target].UnderAttack = false;
                if(troopDie)
                    return true;
            }
            return false;
        }
示例#2
0
        public void manageArrival(StateGameLayer.Troop troop)
        {
            if (!troop.EnemyTroop.isDead())
            {
                int beforeBattleTroopHP = troop.HitPoints;
                int beforeBattleEnemyHP = troop.EnemyTroop.HitPoints;

                int attackTroop = Math.Max(troop.Damage - troop.EnemyTroop.Defense, 0);
                int shieldsEnemy = troop.EnemyTroop.Shields;
                troop.EnemyTroop.Shields = Math.Max(troop.EnemyTroop.Shields - attackTroop, 0);
                attackTroop = Math.Max(attackTroop - shieldsEnemy, 0);
                troop.EnemyTroop.HitPoints = troop.EnemyTroop.HitPoints - attackTroop;

                int attackEnemy = Math.Max(troop.EnemyTroop.Damage - troop.Defense, 0);
                int shieldsTroop = troop.Shields;
                troop.Shields = Math.Max(troop.Shields - attackEnemy, 0);
                attackEnemy = Math.Max(attackEnemy - shieldsTroop, 0);
                troop.HitPoints = troop.HitPoints - attackEnemy;

                troop.EnemyTroop.recalculateElements(beforeBattleEnemyHP);
                troop.recalculateElements(beforeBattleTroopHP);

                troop.EnemyTroop.StartTime = 0;
            }
            if (troop.EnemyTroop.isDead())
            {

                removeLaser(troop.EnemyTroop);

                troop.Fighting = false;
                troop.EnemyTroop = null;
                troop.EnemyEngaged = false;
            }
        }