protected BaseModifier(ModifierInfo info, Entity casterEntity, Entity targetEntity, Environment environment, CollectionOfInteractions modifierInteractionCollection) { NotNullReference nnr = new NotNullReference(); nnr.Check(info, "modifier info"); nnr.Check(casterEntity, "caster entity"); nnr.Check(targetEntity, "target entity"); this.info = info; this.casterEntity = casterEntity; this.targetEntity = targetEntity; this.environment = environment; this.modifierInteractionCollection = modifierInteractionCollection; this.vfxs = info.ShowVfxConfig(); pendingVfxs.AddRange(vfxs); targetGameObject = targetEntity.GetComponent <EntityGameObjectComponent>().GameObject; targetAnimation = targetEntity.GetComponent <AnimationComponent>().Animation; target = targetEntity.GetComponent <SkillComponent>().Character; mainLifetimes = CreateLifetimes(info); for (int kIndex = 0; kIndex < mainLifetimes.Count; kIndex++) { Lifetime l = mainLifetimes[kIndex]; if (l.ShowType() == LifetimeType.Duration) { ((DurationBasedLifetime)l).SetDelay(info.DelayToApply()); } } }