public override AttackDataStat CreateAttack(CharacterStatController user, WeaponData weaponData) { AttackDataStat res = new AttackDataStat(weaponData); res.Damage = user.GetStat(statHeal); res.DamageVariance = user.GetStat(statHealVariance); return res; }
private bool ProcessLaunch(AttackDataStat attack, CharacterStatController target) { float variance = attack.LaunchDamage * (attack.LaunchDamageVariance * 0.01f); int rawDamage = (int)(attack.LaunchDamage + Random.Range(-variance, variance)); rawDamage -= (int)target.GetStat(statLaunchResistance); return (rawDamage > 0); }
private void CheckLaunch(AttackData attackData) { if (characterMovement.IsGrounded() == true && attackData.AttackDataStat.UserPosition.y-1 <= this.transform.position.y) { if (airborne == false) { airborne = true; characterMovement.ResetSpeedY(); characterMovement.Jump(5f - characterStatController.GetStat(statMass)); if(airborneClip != null) AudioManager.Instance.PlaySound(airborneClip); if (OnLaunch != null) OnLaunch.Invoke(); } } else if(airborne == true && bounce == false && attackData.AttackDataStat.UserPosition.y - 1 < this.transform.position.y) // Under the character { if (characterMovement.SpeedY <= 0) { characterMovement.ResetSpeedY(); //characterMovement.Jump(2f); } if (characterMovement.SpeedY < 4f) { //characterMovement.ResetSpeedY(); characterMovement.Jump(1.5f); } if (airborneClip != null) AudioManager.Instance.PlaySound(airborneClip); if (OnHitAerial != null) OnHitAerial.Invoke((int)Random.Range(attackData.AttackDataStat.FeverValue, attackData.AttackDataStat.FeverValueMax)); } else if (airborne == true && bounce == false && attackData.AttackDataStat.UserPosition.y + 1 >= this.transform.position.y) // Smackdown { bounce = true; if (OnSmackdown != null) OnSmackdown.Invoke(); } else if (characterAnimation.State == CharacterState.Jump && airborne == false && attackData.AttackDataStat.UserPosition.y - 1 <= this.transform.position.y) // Si l'ennemi a sauté et qu'on le knockback dans les air c'est bon { airborne = true; characterMovement.ResetSpeedY(); characterMovement.Jump(5f - characterStatController.GetStat(statMass)); if (airborneClip != null) AudioManager.Instance.PlaySound(airborneClip); if (OnLaunch != null) OnLaunch.Invoke(); } }
/* ======================================== *\ * FUNCTIONS * \* ======================================== */ public override AttackDataStat CreateAttack(CharacterStatController user, WeaponData weaponData) { AttackDataStat res = new AttackDataStat(weaponData); res.Damage = user.GetStat(statDamage); res.DamageVariance = user.GetStat(statDamageVariance); res.KnockbackDamage = user.GetStat(statKnockbackDamage); res.KnockbackDamageVariance = user.GetStat(statKnockbackDamageVariance); res.LaunchDamage = user.GetStat(statLaunchDamage); res.LaunchDamageVariance = user.GetStat(statLaunchDamageVariance); res.Accuracy = user.GetStat(statAccuracy); res.AccuracyVariance = user.GetStat(statAccuracyVariance); return res; }
public override DamageMessage ProcessAttack(AttackDataStat attack, CharacterStatController target) { DamageMessage res; int finalDamage = 0; float variance = attack.Damage * (attack.DamageVariance * 0.01f); int rawDamage = (int) (attack.Damage + Random.Range(-variance, variance+1)); rawDamage = (int)(rawDamage * target.GetStat(statDefense)); if (attack.ScratchDamage == true) { finalDamage = rawDamage; res = new DamageMessage(attack.AttackType, 0, finalDamage); // Exp if (target.Scratch + finalDamage > target.Hp) res.exp = (int)(target.Hp - target.Scratch); else res.exp = finalDamage; // Exp target.Scratch += finalDamage; } else { finalDamage = rawDamage + (int)target.Scratch; res = new DamageMessage(attack.AttackType, rawDamage, (int)target.Scratch); // Exp if (target.Hp - finalDamage < 0) res.exp = (int)target.Hp; else res.exp = finalDamage; // Exp target.Hp -= finalDamage; target.Scratch = 0; } if (ProcessKnockback(attack, target) == true) res.knockback = true; if (ProcessLaunch(attack, target) == true) res.launch = true; return res; }
public void CallStatChange(CharacterStatController stat) { characterMovement.SetSpeed(stat.GetStat("Speed")); }