public void AddSummonedStack(BattleUnitsStack summoned) { BattleUnitsStack stack = (BattleUnitsStack)summoned.Clone(); battleUnitsStacks.Add(stack); refSummoned.Add(stack); }
public void AttackStack(BattleUnitsStack target) { ApplyAttackEffects?.Invoke(target); float totalDamage = Damage * (1 + 0.05f * Math.Abs(Attack - target.Defence)); target.GetDamage(totalDamage); }
public void StackFight(BattleUnitsStack target) { GameAction gameAction = new GameAction(Actor, target); gameAction.Fight(); StackAct(); }
public void StackCast(Skill skill, BattleUnitsStack target) { GameAction gameAction = new GameAction(Actor, target); gameAction.Cast(skill); StackAct(); }
protected override void Apply(BattleUnitsStack master) { BattleUnitsStack Master = this.master; Duration = 1; baseDefence = Master.Defence; Master.DefenceChange += HoldPosition; }
public void Wait() { BattleUnitsStack waiting = ActiveStack; queue.Remove(waiting); queue.Insert(queue.Count - (waitCount % queue.Count), waiting); waitCount++; Update(); }
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); } }
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); }
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--; } }
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(); }
internal void Use(BattleUnitsStack subject, BattleUnitsStack target) { Cast(subject, target); Used = true; }
protected abstract void Cast(BattleUnitsStack subject, BattleUnitsStack target);
public GameAction(BattleUnitsStack subject, BattleUnitsStack _object) { Subject = subject; Object = _object; }
protected abstract void Apply(BattleUnitsStack master);
public virtual void ApplyFeatures(BattleUnitsStack originStack) { }
public void ResurrectStack(BattleUnitsStack target) { battleUnitsStacks.Add(target); deadStacks.Remove(target); }
public void KillStack(BattleUnitsStack target) { battleUnitsStacks.Remove(target); deadStacks.Add(target); }
internal void ApplyEffect(BattleUnitsStack master) { this.master = master; Apply(master); }