public void SkillProcess(GameObject target, GameObject user, Skills.HitType hitType) { BattleManager bm = GameManager.Instance.BattleManager; bm.IsHealing = false; ActorSlot actor = user.GetComponent <ActorSlot>(); if (!actor.IsAI) { actor.Actor.CurStats.MP -= Cost; float curMP = actor.Actor.CurStats.MP; float result = curMP / actor.Actor.MaxStats.MP; actor.MPForeground.fillAmount = result; actor.MP.text = curMP.ToString(); } int tempAttack = 0; int tempDefense = 0; int modifier; int popupText; ActorSlot Attacker = user.GetComponent <ActorSlot>(); ActorSlot Defender = target.GetComponent <ActorSlot>(); string readThis = ""; if (hitType == Skills.HitType.Physical || hitType == Skills.HitType.Magical) { tempDefense = Defender.Actor.CurStats.Will; switch (hitType) { case Skills.HitType.Physical: tempAttack = Attacker.Actor.CurStats.Muscle; break; case Skills.HitType.Magical: tempAttack = Attacker.Actor.CurStats.Vigor; break; } modifier = BaseDamage * tempAttack - tempDefense; //This is where we'd plug elements in if (modifier < 0) { modifier = 0; } //this is where we would calculate magic affecting the damage, here it would not matter if //it was below 0, since magic damage can turn into negative // Debug.Log(Name + "HP Before using " + " " + Defender.Actor.CurStats.HP); Defender.Actor.CurStats.HP -= modifier; if (Defender.Actor.CurStats.HP < 0) { Defender.Actor.CurStats.HP = 0; } if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP) { Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP; } popupText = modifier * -1; if (UAP_AccessibilityManager.IsEnabled()) { bm.StartSpawn(0f, popupText, Defender); } else { bm.StartSpawn(DestructTimer, popupText, Defender); if (!actor.IsAI) { if (Name == "Attack") { SFXManager.Main.Play(actor.Actor.AttackVoices.Get()); } else { SFXManager.Main.Play(actor.Actor.DefaultSpecialVoices.Get()); } } } readThis = string.Format("{0} hits {1} for {2} damage.", user.GetComponent <ActorSlot>().Actor.Name, Defender.Actor.Name, modifier.ToString()); //UAP_AccessibilityManager.Say() } else { switch (hitType) { case Skills.HitType.Heal: bm.IsHealing = true; tempAttack = Attacker.Actor.CurStats.Vigor; modifier = BaseDamage * tempAttack; popupText = Defender.Actor.CurStats.HP; Defender.Actor.CurStats.HP += modifier; if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP) { Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP; } popupText = Defender.Actor.CurStats.HP - popupText; if (UAP_AccessibilityManager.IsEnabled()) { bm.StartSpawn(0f, popupText, Defender); } else { if (!actor.IsAI) { SFXManager.Main.Play(actor.Actor.HealingVoices.Get()); } bm.StartSpawn(DestructTimer, popupText, Defender); } readThis = string.Format("{0} heals {1} for {2} health.", user.GetComponent <ActorSlot>().Actor.Name, Defender.Actor.Name, modifier.ToString()); break; case Skills.HitType.Status: //not touched in demo break; } } UAP_AccessibilityManager.Say(readThis, false); }
public void SkillProcess(GameObject target, GameObject user, Skills.HitType hitType) { BattleManager bm = GameManager.Instance.BattleManager; ActorSlot actor = user.GetComponent <ActorSlot>(); if (!actor.IsAI) { actor.Actor.CurStats.MP -= Cost; float curMP = actor.Actor.CurStats.MP; float result = curMP / actor.Actor.MaxStats.MP; actor.MPForeground.fillAmount = result; actor.MP.text = curMP.ToString(); } int tempAttack = 0; int tempDefense = 0; int modifier; int popupText; ActorSlot Attacker = user.GetComponent <ActorSlot>(); ActorSlot Defender = target.GetComponent <ActorSlot>(); if (hitType == Skills.HitType.Physical || hitType == Skills.HitType.Magical) { tempDefense = Defender.Actor.CurStats.Will; switch (hitType) { case Skills.HitType.Physical: tempAttack = Attacker.Actor.CurStats.Muscle; break; case Skills.HitType.Magical: tempAttack = Attacker.Actor.CurStats.Vigor; break; } modifier = BaseDamage * tempAttack - tempDefense; //This is where we'd plug elements in if (modifier < 0) { modifier = 0; } //this is where we would calculate magic affecting the damage, here it would not matter if //it was below 0, since magic damage can turn into negative // Debug.Log(Name + "HP Before using " + " " + Defender.Actor.CurStats.HP); Defender.Actor.CurStats.HP -= modifier; if (Defender.Actor.CurStats.HP < 0) { Defender.Actor.CurStats.HP = 0; } if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP) { Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP; } popupText = modifier * -1; bm.StartSpawn(DestructTimer, popupText, Defender); } else { switch (hitType) { case Skills.HitType.Heal: tempAttack = Attacker.Actor.CurStats.Vigor; modifier = BaseDamage * tempAttack; popupText = Defender.Actor.CurStats.HP; Defender.Actor.CurStats.HP += modifier; if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP) { Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP; } popupText = Defender.Actor.CurStats.HP - popupText; bm.StartSpawn(DestructTimer, popupText, Defender, true); break; case Skills.HitType.Status: //not touched in demo break; } } }