Пример #1
0
        public void AddSummonedStack(BattleUnitsStack summoned)
        {
            BattleUnitsStack stack = (BattleUnitsStack)summoned.Clone();

            battleUnitsStacks.Add(stack);
            refSummoned.Add(stack);
        }
Пример #2
0
        public void AttackStack(BattleUnitsStack target)
        {
            ApplyAttackEffects?.Invoke(target);
            float totalDamage = Damage * (1 + 0.05f * Math.Abs(Attack - target.Defence));

            target.GetDamage(totalDamage);
        }
Пример #3
0
        public void StackFight(BattleUnitsStack target)
        {
            GameAction gameAction = new GameAction(Actor, target);

            gameAction.Fight();
            StackAct();
        }
Пример #4
0
        public void StackCast(Skill skill, BattleUnitsStack target)
        {
            GameAction gameAction = new GameAction(Actor, target);

            gameAction.Cast(skill);
            StackAct();
        }
Пример #5
0
        protected override void Apply(BattleUnitsStack master)
        {
            BattleUnitsStack Master = this.master;

            Duration              = 1;
            baseDefence           = Master.Defence;
            Master.DefenceChange += HoldPosition;
        }
Пример #6
0
            public void Wait()
            {
                BattleUnitsStack waiting = ActiveStack;

                queue.Remove(waiting);
                queue.Insert(queue.Count - (waitCount % queue.Count), waiting);
                waitCount++;
                Update();
            }
Пример #7
0
 public BattleArmy(Army army)
 {
     Name = army.Name;
     battleUnitsStacks = new List <BattleUnitsStack>(9);
     refSummoned       = new List <BattleUnitsStack>(3);
     deadStacks        = new List <BattleUnitsStack>();
     foreach (var item in army.UnitsStacks)
     {
         BattleUnitsStack stack = new BattleUnitsStack(item.UnitClass, item.Count);
         battleUnitsStacks.Add(stack);
     }
 }
Пример #8
0
        public override object Clone()
        {
            UnitsStack       us       = (UnitsStack)base.Clone();
            BattleUnitsStack newStack = new BattleUnitsStack(us.UnitClass, us.Count);

            newStack.canRetaliate      = canRetaliate;
            newStack.LastUnitHitPoints = LastUnitHitPoints;
            newStack.StartCount        = StartCount;
            newStack.Count             = Count;
            newStack.Side = Side;
            return(newStack);
        }
Пример #9
0
            public void Add(BattleUnitsStack stack)
            {
                int i = queue.Count - waitCount;

                queue.Insert(i, stack);
                while (i > 0 && queue[i - 1].Initiative < queue[i].Initiative)
                {
                    BattleUnitsStack temp = queue[i - 1];
                    queue[i - 1] = queue[i];
                    queue[i]     = temp;
                    i--;
                }
            }
Пример #10
0
        public void Fight()
        {
            ApplyModifiers();
            BattleUnitsStack attacker = Subject;
            BattleUnitsStack target   = Object;

            attacker.AttackStack(target);
            Attacked?.Invoke();
            if (target.canRetaliate)
            {
                target.AttackStack(attacker);
            }
            target.canRetaliate = false;
            Revenged?.Invoke();
        }
Пример #11
0
 internal void Use(BattleUnitsStack subject, BattleUnitsStack target)
 {
     Cast(subject, target);
     Used = true;
 }
Пример #12
0
 protected abstract void Cast(BattleUnitsStack subject, BattleUnitsStack target);
Пример #13
0
 public GameAction(BattleUnitsStack subject, BattleUnitsStack _object)
 {
     Subject = subject;
     Object  = _object;
 }
Пример #14
0
 protected abstract void Apply(BattleUnitsStack master);
Пример #15
0
 public virtual void ApplyFeatures(BattleUnitsStack originStack)
 {
 }
Пример #16
0
 public void ResurrectStack(BattleUnitsStack target)
 {
     battleUnitsStacks.Add(target);
     deadStacks.Remove(target);
 }
Пример #17
0
 public void KillStack(BattleUnitsStack target)
 {
     battleUnitsStacks.Remove(target);
     deadStacks.Add(target);
 }
Пример #18
0
 internal void ApplyEffect(BattleUnitsStack master)
 {
     this.master = master;
     Apply(master);
 }