public double GetDamage(Boxer defender, AbstractAttack attack, double attackIntensityFactor) {
     double result;
     if (defender.IsCastingAttack) {
         result = attack.FullDamage * COUNTER_ATTACK_DAMAGE_MULTIPLIER;
     }
     else {
         switch (defender.BoxerStance) {
             case Boxer.Stance.NORMAL:
                 result = attack.FullDamage;
                 break;
             case Boxer.Stance.BLOCKING:
                 result = attack.BlockedDamage;
                 break;
             case Boxer.Stance.DODGING:
                 result = attack.IsDodgeable ? 0 : attack.FullDamage;
                 break;
             case Boxer.Stance.STAGGERING:
                 result = attack.FullDamage * STAGGERING_DAMAGE_MULTIPLIER;
                 break;
             default:
                 throw new InvalidOperationException();
         }
     }
     return result * attackIntensityFactor;
 }
 public void StartAttack(Boxer attacker, AbstractAttack attack) {
     UpdateStaminaSlider(attacker);
     string className = attack.GetType().Name;
     string attackTrigger = String.Format("Attack{0}", className);
     float speedMultiplier = 1000f / attack.CastTimeInMs;
     boxerAnimator.SetFloat(ATTACK_ANIMATION_SPEED, speedMultiplier);
     boxerAnimator.SetTrigger(attackTrigger);
 }
 public int GetStunDuration(Boxer boxer, AbstractAttack attack, double attackIntensityFactor) {
     return attack.StunDurationInMs;
 }
Beispiel #4
0
 public void Attack(AbstractAttack attack) {
     ResolveAccumulatedStun();
     boxer.Attack(attack);
 }
 public BoxerAttackEventArgs(AbstractAttack attack) {
     this.Attack = attack;
 }