// Returns the base stat value for a given stat public float BaseStat(RPGStats.Stats stat) { switch (stat) { case RPGStats.Stats.Speed: return(speedStat); case RPGStats.Stats.Str: return(strStat); case RPGStats.Stats.Def: return(defStat); case RPGStats.Stats.Int: return(intStat); case RPGStats.Stats.Mind: return(mindStat); case RPGStats.Stats.Hp: return(hpStat); case RPGStats.Stats.Mp: return(mpStat); case RPGStats.Stats.Dex: return(dexStat); case RPGStats.Stats.Agi: return(agiStat); default: return(-1); } }
public override void UpdateEffect(Character chara) { //if damage over time, ticks down that stat if (StatusEffects.effect == StatusEffectType.DamageOverTime) { RPGStats.Stats tmp = FindStatModified(StatusEffects.statBuff, chara); chara.CharaStats[tmp] -= StatusEffects.amount; } base.UpdateEffect(chara); }
public void SetBaseStat(RPGStats.Stats stat, float value) { switch (stat) { case RPGStats.Stats.Speed: speedStat = value; break; case RPGStats.Stats.Str: strStat = value; break; case RPGStats.Stats.Def: defStat = value; break; case RPGStats.Stats.Int: intStat = value; break; case RPGStats.Stats.Mind: mindStat = value; break; case RPGStats.Stats.Hp: hpStat = value; break; case RPGStats.Stats.Mp: mpStat = value; break; case RPGStats.Stats.Dex: dexStat = value; break; case RPGStats.Stats.Agi: agiStat = value; break; default: throw new System.ArgumentOutOfRangeException(); } }
RPGStats.Stats FindStatModified(RPGStats.Stats statType, Character target) { //return RPGStats.Stats switch (statType) { case RPGStats.Stats.Speed: return(RPGStats.Stats.Speed); case RPGStats.Stats.Str: return(RPGStats.Stats.Str); case RPGStats.Stats.Def: return(RPGStats.Stats.Def); case RPGStats.Stats.Int: return(RPGStats.Stats.Int); case RPGStats.Stats.Mind: return(RPGStats.Stats.Mind); case RPGStats.Stats.Hp: return(RPGStats.Stats.Hp); case RPGStats.Stats.Mp: return(RPGStats.Stats.Mp); case RPGStats.Stats.Dex: return(RPGStats.Stats.Dex); case RPGStats.Stats.Agi: return(RPGStats.Stats.Agi); default: break; } //defaults to strength return(RPGStats.Stats.Str); }
void ResetStats(Character target) { //does effect here, fix later(not sustainable) switch (StatusEffects.effect) { case StatusEffectType.Buff: { //target.Str += StatusEffects.amount; RPGStats.Stats tmp = FindStatModified(StatusEffects.statBuff, target); target.CharaStats[tmp] -= StatusEffects.amount; break; } case StatusEffectType.Debuff: { RPGStats.Stats tmp = FindStatModified(StatusEffects.statBuff, target); target.CharaStats[tmp] += StatusEffects.amount; break; } default: Debug.Log("error"); break; } }
public void ApplyItemEffects(RPGItems.Item item, bool removing = false) { // Do nothing if passed null item if (item == null) { return; } float multiplier = removing ? -1 : 1; foreach (RPGsys.Status buff in item.Effect.currentEffects) { //HACK if (buff is RPGsys.Buff) { RPGsys.Buff b = (RPGsys.Buff)buff; RPGStats.Stats tgtStat = b.StatusEffects.statBuff; float amount = b.StatusEffects.amount * multiplier; switch (b.StatusEffects.effect) { case Status.StatusEffectType.Heal: //HACK change tgtStat to hp? case Status.StatusEffectType.Buff: break; case Status.StatusEffectType.Debuff: amount *= -1; break; } // Add to dictionary, or add to already existing value float currentChange = 0; changes.TryGetValue(tgtStat, out currentChange); changes[tgtStat] = currentChange + amount; } } }
void SetStats(Character target) { //RPGStats.Stats tmp = 0; switch (StatusEffects.effect) { case StatusEffectType.Buff: { //target.Str += StatusEffects.amount; RPGStats.Stats tmp = FindStatModified(StatusEffects.statBuff, target); target.CharaStats[tmp] += StatusEffects.amount; break; } case StatusEffectType.Debuff: { RPGStats.Stats tmp = FindStatModified(StatusEffects.statBuff, target); target.CharaStats[tmp] -= StatusEffects.amount; break; } case StatusEffectType.Heal: { //caps HP to the max so you can't overheal target.Hp += StatusEffects.amount; if (target.Hp > target.hpStat) { target.Hp = target.hpStat; } //HACK check if in battle so it doesn't try making effect when using potion in inventory if (GameController.Instance.state == GameController.EGameStates.Battle) { GetScreenLoc tempLoc = new GetScreenLoc(); Vector2 location = tempLoc.getScreenPos(target.transform); if (target.tag == "Enemy") { FloatingTextController.CreateHealEnemyText((StatusEffects.amount).ToString(), location); } else if (target.tag == "Player") { FloatingTextController.CreateHealAllyText((StatusEffects.amount).ToString(), location); } } break; } case StatusEffectType.ManaHeal: { target.Mp += StatusEffects.amount; if (target.Mp > target.mpStat) { target.Mp = target.mpStat; } //HACK check if in battle so it doesn't try making effect when using potion in inventory if (GameController.Instance.state == GameController.EGameStates.Battle) { GetScreenLoc tempLoc = new GetScreenLoc(); Vector2 location = tempLoc.getScreenPos(target.transform); if (target.tag == "Enemy") { FloatingTextController.CreateHealEnemyText((StatusEffects.amount).ToString(), location); } else if (target.tag == "Player") { FloatingTextController.CreateHealAllyText((StatusEffects.amount).ToString(), location); } } break; } default: Debug.Log("error"); break; } }