Exemple #1
0
    //this is pseudo private
    public void AddStatusEffectFromTemplate(StatusEffectTemplate template)
    {
        StatusEffect effect  = template.Create(entity);
        OldContext   context = template.GetContext(entity);

        effect.Apply(entity, context);
        statusList.Add(effect);
    }
    public static StatusEffectInstance NewStatus(StatusEffectTemplate template = null, Character caster = null, Character target = null)
    {
        StatusEffectInstance instance = GetNextInstance();

        instance.Template = template;
        instance.Caster   = caster;
        instance.Target   = target;
        instance.Data.Reset();
        instance.modifierList.Clear();
        instance.persistentSfxList.Clear();
        return(instance);
    }
 public virtual void AddStatusComponentsFromTemplate(StatusEffectTemplate template)
 {
     if (template.additionalComponents == null)
     {
         return;
     }
     for (int i = 0; i < template.additionalComponents.Length; i++)
     {
         StatusEffectComponent component = template.additionalComponents[i];
         components[i].caster  = caster;
         components[i].target  = target;
         components[i].context = context;
         components.Add(component);
     }
 }
    public void ApplyStatus(StatusEffectTemplate statusTemplate, Character target)
    {
        if (!statusTemplate.AllowMultiple)
        {
            StatusEffectInstance preexistingStatus = target.StatusHandler.FindStatus(statusTemplate);
            if (preexistingStatus != null)
            {
                preexistingStatus.Reset();
                preexistingStatus.AddStack();
                Changed();
                return;
            }
        }

        StatusEffectInstance status = StatusEffectInstance.NewStatus(statusTemplate, owner, target);

        target.StatusHandler.statuses.Add(status);
        status.OnApply();
        Changed();
    }
 //this is pseudo private
 public void AddStatusEffectFromTemplate(StatusEffectTemplate template) {
     StatusEffect effect = template.Create(entity);
     OldContext context = template.GetContext(entity);
     effect.Apply(entity, context);
     statusList.Add(effect);
 }
 public StatusEffectInstance FindStatus(StatusEffectTemplate statusTemplate)
 {
     return(statuses.FirstOrDefault(status => status.Template == statusTemplate));
 }