2 using System.Collections.Generic;
9 namespace Loot.Api.Delegators
17 public override bool InstancePerEntity =>
true;
18 public override bool CloneNewInstances =>
true;
23 clone.SnapshotDebuffChances =
new List<(int type, int time, float chance)>(SnapshotDebuffChances);
32 public float SnapshotHealthyFoesMulti = 1f;
33 public float SnapshotCritMulti = 1f;
34 public List<(int type, int time, float chance)> SnapshotDebuffChances =
new List<(int type, int time, float chance)>();
38 foreach (var x
in SnapshotDebuffChances)
40 if (Main.rand.NextFloat() < x.chance)
42 target.AddBuff(x.type, x.time);
49 foreach (var x
in SnapshotDebuffChances)
51 if (Main.rand.NextFloat() < x.chance)
53 target.AddBuff(x.type, x.time);
58 private void HealthyBonus(Projectile projectile, ref
int damage, NPC target)
60 if (target.life == target.lifeMax)
62 damage = (int) Math.Ceiling(damage * SnapshotHealthyFoesMulti);
66 private void HealthyBonus(Projectile projectile, ref
int damage, Player target)
68 if (target.statLife == target.statLifeMax2)
70 damage = (int) Math.Ceiling(damage * SnapshotHealthyFoesMulti);
74 private void CritBonus(Projectile projectile, ref
int damage,
bool crit)
78 damage = (int) Math.Ceiling(damage * GetInfo(projectile).SnapshotCritMulti);
82 public override bool PreAI(Projectile projectile)
84 var mproj = GetInfo(projectile);
88 mproj.FirstTick =
true;
91 if (projectile.owner != 255 && projectile.friendly && projectile.owner == Main.myPlayer)
96 if (!projectile.minion)
101 else if (projectile.owner == 255)
109 mproj.SnapshotHealthyFoesMulti = 1f;
110 mproj.SnapshotDebuffChances.Clear();
113 return base.PreAI(projectile);
118 public override void ModifyHitNPC(Projectile projectile, NPC target, ref
int damage, ref
float knockback, ref
bool crit, ref
int hitDirection)
120 HealthyBonus(projectile, ref damage, target);
121 CritBonus(projectile, ref damage, crit);
122 base.ModifyHitNPC(projectile, target, ref damage, ref knockback, ref crit, ref hitDirection);
126 public override void ModifyHitPlayer(Projectile projectile, Player target, ref
int damage, ref
bool crit)
128 HealthyBonus(projectile, ref damage, target);
129 CritBonus(projectile, ref damage, crit);
130 base.ModifyHitPlayer(projectile, target, ref damage, ref crit);
133 public override void ModifyHitPvp(Projectile projectile, Player target, ref
int damage, ref
bool crit)
135 HealthyBonus(projectile, ref damage, target);
136 CritBonus(projectile, ref damage, crit);
137 base.ModifyHitPvp(projectile, target, ref damage, ref crit);
140 public override void OnHitNPC(Projectile projectile, NPC target,
int damage,
float knockback,
bool crit)
142 AttemptDebuff(projectile, target);
143 base.OnHitNPC(projectile, target, damage, knockback, crit);
146 public override void OnHitPlayer(Projectile projectile, Player target,
int damage,
bool crit)
148 AttemptDebuff(projectile, target);
149 base.OnHitPlayer(projectile, target, damage, crit);
152 public override void OnHitPvp(Projectile projectile, Player target,
int damage,
bool crit)
154 AttemptDebuff(projectile, target);
155 base.OnHitPvp(projectile, target, damage, crit);
void AttemptDebuff(Projectile projectile, Player target)
ModifierEffect GetEffect(Type type)
override void OnHitPlayer(Projectile projectile, Player target, int damage, bool crit)
void CritBonus(Projectile projectile, ref int damage, bool crit)
override GlobalProjectile Clone()
void AttemptDebuff(Projectile projectile, NPC target)
override void ModifyHitNPC(Projectile projectile, NPC target, ref int damage, ref float knockback, ref bool crit, ref int hitDirection)
override void OnHitNPC(Projectile projectile, NPC target, int damage, float knockback, bool crit)
override void ModifyHitPlayer(Projectile projectile, Player target, ref int damage, ref bool crit)
void HealthyBonus(Projectile projectile, ref int damage, Player target)
void HealthyBonus(Projectile projectile, ref int damage, NPC target)
override void ModifyHitPvp(Projectile projectile, Player target, ref int damage, ref bool crit)
Holds player-entity data and handles it
override bool PreAI(Projectile projectile)
Provides delegation for projectiles
override void OnHitPvp(Projectile projectile, Player target, int damage, bool crit)