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();
            }
        }
Ejemplo n.º 2
0
 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);
 }