public bool CureEntity(IEffectable toCure, float noop) { SOEffect thisEffect = SOEffect.GetByID(CONSTANTS.EFFECT_CURE); if (applyAffect(thisEffect, toCure)) { toCure.RemoveEffect(SOEffect.GetByID(CONSTANTS.EFFECT_POISON)); } toCure.RemoveEffect(thisEffect); return(false); }
IEnumerator ShrinkLarge(float targetScale, float time, IEffectable target, SOEffect effect) { Vector3 tagetScaleV3 = target.GetDefaultScale() * targetScale; for (float i = 0; i < time; i = i + 1f) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } Transform t2 = target.GetTransform(); t2.localScale = tagetScaleV3; target.SetTransform(t2); yield return(new WaitForSeconds(1)); } Transform t = target.GetTransform(); t.localScale = target.GetDefaultScale(); target.SetTransform(t); target.RemoveEffect(effect); }
IEnumerator DoT(float ammount, int time, IEffectable target, SOEffect effect) { if (ammount != 0) { bool isHeal = (effect.ID == CONSTANTS.EFFECT_REGEN || effect.ID == CONSTANTS.EFFECT_HEAL); for (int i = 0; i < time; i++) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } if (isHeal) { // hurting target.Heal(ammount); } else { // healing target.Harm(ammount); } yield return(new WaitForSeconds(1)); } target.RemoveEffect(effect); } }
public bool KillEntity(IEffectable toKill, float noop) { SOEffect thisEffect = SOEffect.GetByID(CONSTANTS.EFFECT_DEATH); if (applyAffect(thisEffect, toKill)) { toKill.Harm(toKill.MaxHP); } toKill.RemoveEffect(thisEffect); return(true); }
public bool HealEntity(IEffectable toHeal, float potency) { float value = 20; SOEffect thisEffect = SOEffect.GetByID(CONSTANTS.EFFECT_HEAL); if (applyAffect(thisEffect, toHeal)) { toHeal.Heal(value * potency); } toHeal.RemoveEffect(thisEffect); return(true); }
public bool HighGravEntity(IEffectable target, float potency) { float scaleup = 5f; float time = 10; // Conflicting target.RemoveEffect(SOEffect.GetByID(CONSTANTS.EFFECT_LOW_GRAV)); SOEffect thisEffect = SOEffect.GetByID(CONSTANTS.EFFECT_HIGH_GRAV); if (applyAffect(thisEffect, target)) { StartCoroutine(Gravupdown(scaleup, time * potency, target, thisEffect)); } return(true); }
public bool SlowEntity(IEffectable target, float potency) { float scaleup = 0.5f; float time = 10; // Conflicting target.RemoveEffect(SOEffect.GetByID(CONSTANTS.EFFECT_SPEED)); SOEffect thisEffect = SOEffect.GetByID(CONSTANTS.EFFECT_SLOW); if (applyAffect(thisEffect, target)) { StartCoroutine(SpeedSlow(scaleup, time * potency, target, thisEffect)); } return(true); }
public bool ShrinkEntity(IEffectable target, float potency) { float scaleup = 0.5f; float time = 10; // Conflicting target.RemoveEffect(SOEffect.GetByID(CONSTANTS.EFFECT_ENLARGE)); SOEffect thisEffect = SOEffect.GetByID(CONSTANTS.EFFECT_SHRINK); if (applyAffect(thisEffect, target)) { StartCoroutine(ShrinkLarge(scaleup, time * potency, target, thisEffect)); } return(true); }
IEnumerator SpeedSlow(float factor, float time, IEffectable target, SOEffect effect) { float targetSpeed = target.GetDefaultSpeed() * factor; for (float i = 0; i < time; i = i + 1f) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } target.SetSpeed(targetSpeed); yield return(new WaitForSeconds(1)); } target.SetSpeed(target.GetDefaultSpeed()); target.RemoveEffect(effect); }
IEnumerator Gravupdown(float factor, float time, IEffectable target, SOEffect effect) { float targetGrav = target.GetDefaultGravity() * factor; float jumpHeight = target.GetDefaultJumpHeight() / factor; for (float i = 0; i < time; i = i + 1f) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } target.SetGravity(targetGrav); target.SetJumpHeight(jumpHeight); yield return(new WaitForSeconds(1)); } target.SetGravity(target.GetDefaultGravity()); target.SetJumpHeight(target.GetDefaultJumpHeight()); target.RemoveEffect(effect); }
bool DevCommandRemoveEffect(string[] parms) { if (parms.Length != 1) { DeveloperConsole.instance.writeError("Missing Effect ID or too many parameters."); return(false); } if (!Int32.TryParse(parms[0].Trim(), out int id)) { DeveloperConsole.instance.writeError("Effect ID must be a number."); return(false); } SOEffect s = SOEffect.GetByID(id); if (s == null) { DeveloperConsole.instance.writeError("Unknown Effect ID " + id); return(false); } GameObject charo = gc.GetCharacter(); if (charo == null) { DeveloperConsole.instance.writeError("Unable to get player.(1)"); return(false); } IEffectable toEffect = charo.GetComponent <IEffectable>(); if (toEffect == null) { DeveloperConsole.instance.writeError("Unable to get player.(2)"); return(false); } toEffect.RemoveEffect(s); DeveloperConsole.instance.writeMessage("Removed effect " + s.PrintString() + " from player"); return(true); }