public override void Update(Delta delta) { if (currentStatusEffectIndex >= partyMember.StatusEffects.Count || !partyMember.Alive) { Finish(); return; } bool statusEffectFinished = false; StatusEffect statusEffect = partyMember.StatusEffects[currentStatusEffectIndex]; StatusEffects.IInflictable inflictable = statusEffect as StatusEffects.IInflictable; if (inflictable != null && (inflictable.Inflictor == null || !inflictable.Inflictor.Alive)) { partyMember.StatusEffects.RemoveAt(currentStatusEffectIndex); --currentStatusEffectIndex; statusEffectFinished = true; } if (!statusEffectFinished) { switch (statusEffectEvent) { case StatusEffectEvent.BeforeAct: if (statusEffect.BeforeActIsFinished()) { statusEffectFinished = true; } else { statusEffect.BeforeActUpdate(thinkAction, delta); } break; case StatusEffectEvent.EndTurn: if (statusEffect.EndTurnIsFinished()) { statusEffectFinished = true; } else { statusEffect.EndTurnUpdate(partyMember, delta); } break; default: break; } } if (statusEffectFinished && partyMember.BattleEntity.AnimationState.Animation.Name == partyMember.GetBattleEntityIdleAnimationName()) { getNextStatusEffect(); } }
public bool HasStatusEffect(StatusEffect otherStatusEffect) { foreach (StatusEffect statusEffect in StatusEffects) { if (statusEffect.Type == otherStatusEffect.Type) { StatusEffects.IInflictable inflictable = otherStatusEffect as StatusEffects.IInflictable; if (inflictable == null) { return(true); } else if (inflictable.Inflictor == (statusEffect as SuperFantasticSteampunk.StatusEffects.IInflictable).Inflictor) { return(true); } } } return(false); }