public DamageOverTimeModifier(ModifierInfo info, Entity casterEntity, Entity targetEntity, Environment environment, Skill parentSkill, SkillId skillId, CollectionOfInteractions modifierInteractionCollection) : base(info, casterEntity, targetEntity, environment, modifierInteractionCollection) { this.info = (DamageOverTimeInfo)info; this.environment = environment; this.parentSkill = parentSkill; this.skillId = skillId; bool found; StatsComponent casterStats = casterEntity.GetComponent <StatsComponent>(); casterAtk = (int)casterStats.CharacterStats.FindStats(StatsType.RawAtk, out found).BakedFloatValue; timeUntilNextDamage = this.info.DotModifierConfig.interval; targetHealthComponent = targetEntity.GetComponent <HealthComponent>(); targetMovementComponent = targetEntity.GetComponent <MovementComponent>(); characterStats = casterStats.CharacterStats; casterCleanupComponent = casterEntity.GetComponent <CleanupComponent>(); }
protected override List <Lifetime> CreateLifetimes(ModifierInfo modifierInfo) { DamageOverTimeInfo doti = (DamageOverTimeInfo)modifierInfo; StatsComponent casterStatsComponent = casterEntity.GetComponent <StatsComponent>(); Stats casterBurnDurationUpScaleStats = casterStatsComponent.CharacterStats.FindStats(StatsType.BurnDurationUpScale); StatsComponent targetStatsComponent = targetEntity.GetComponent <StatsComponent>(); Stats targetBurnDurationDownScaleStats = targetStatsComponent.CharacterStats.FindStats(StatsType.BurnDurationDownScale); float duration = doti.DotModifierConfig.ShowDurationInSeconds(); _1HpLifetime = new UnpredictableDurationLifetime(); return(new List <Lifetime>(new Lifetime[] { new DurationBasedLifetime( duration * (1 + targetBurnDurationDownScaleStats.BakedFloatValue) * (1 + casterBurnDurationUpScaleStats.BakedFloatValue) ), _1HpLifetime })); }