1 using System.Collections.ObjectModel;
4 using Microsoft.Xna.Framework;
5 using Microsoft.Xna.Framework.Graphics;
10 namespace Loot.Api.Delegators
15 internal sealed
class ModifierDelegatorItem :
GlobalItem 17 public override bool InstancePerEntity =>
false;
18 public override bool CloneNewInstances =>
false;
21 public override bool AltFunctionUse(Item item, Player player)
23 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
25 return base.AltFunctionUse(item, player);
28 bool b = base.AltFunctionUse(item, player);
32 b &= m.AltFunctionUse(item, player);
38 public override bool CanEquipAccessory(Item item, Player player,
int slot)
40 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
42 return base.CanEquipAccessory(item, player, slot);
45 bool b = base.CanEquipAccessory(item, player, slot);
49 b &= m.CanEquipAccessory(item, player, slot);
55 public override bool? CanHitNPC(Item item, Player player, NPC target)
57 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
59 return base.CanHitNPC(item, player, target);
62 bool? b = base.CanHitNPC(item, player, target);
66 b &= m.CanHitNPC(item, player, target);
72 public override bool CanHitPvp(Item item, Player player, Player target)
74 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
76 return base.CanHitPvp(item, player, target);
79 bool b = base.CanHitPvp(item, player, target);
83 b &= m.CanHitPvp(item, player, target);
89 public override bool CanPickup(Item item, Player player)
91 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
93 return base.CanPickup(item, player);
96 bool b = base.CanPickup(item, player);
100 b &= m.CanPickup(item, player);
106 public override bool CanRightClick(Item item)
108 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
110 return base.CanRightClick(item);
113 bool b = base.CanRightClick(item);
117 b &= m.CanRightClick(item);
123 public override bool CanUseItem(Item item, Player player)
125 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
127 return base.CanUseItem(item, player);
130 bool b = base.CanUseItem(item, player);
134 b &= m.CanUseItem(item, player);
140 public override int ChoosePrefix(Item item, UnifiedRandom rand)
142 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
147 int p = base.ChoosePrefix(item, rand);
166 public override bool ConsumeAmmo(Item item, Player player)
168 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
170 return base.ConsumeAmmo(item, player);
173 bool b = base.ConsumeAmmo(item, player);
177 b &= m.ConsumeAmmo(item, player);
183 public override void OnConsumeAmmo(Item item, Player player)
185 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
190 base.OnConsumeAmmo(item, player);
194 m.OnConsumeAmmo(item, player);
198 public override bool ConsumeItem(Item item, Player player)
200 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
202 return base.ConsumeItem(item, player);
205 bool b = base.ConsumeItem(item, player);
209 b &= m.ConsumeItem(item, player);
215 public override void OnConsumeItem(Item item, Player player)
217 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
222 base.OnConsumeItem(item, player);
226 m.OnConsumeItem(item, player);
230 public override Color? GetAlpha(Item item, Color lightColor)
232 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
234 return base.GetAlpha(item, lightColor);
237 Color? a = base.GetAlpha(item, lightColor);
245 a = m.GetAlpha(item, lightColor);
256 public override void GetWeaponCrit(Item item, Player player, ref
int crit)
258 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
263 base.GetWeaponCrit(item, player, ref crit);
267 m.GetWeaponCrit(item, player, ref crit);
271 public override void GetHealMana(Item item, Player player,
bool quickHeal, ref
int healValue)
273 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
278 base.GetHealMana(item, player, quickHeal, ref healValue);
282 m.GetHealMana(item, player, quickHeal, ref healValue);
286 public override void ModifyWeaponDamage(Item item, Player player, ref
float add, ref
float mult, ref
float flat)
288 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
293 base.ModifyWeaponDamage(item, player, ref add, ref mult, ref flat);
297 m.ModifyWeaponDamage(item, player, ref add, ref mult, ref flat);
301 public override void GetWeaponKnockback(Item item, Player player, ref
float knockback)
303 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
308 base.GetWeaponKnockback(item, player, ref knockback);
312 m.GetWeaponKnockback(item, player, ref knockback);
316 public override void GrabRange(Item item, Player player, ref
int grabRange)
318 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
323 base.GrabRange(item, player, ref grabRange);
327 m.GrabRange(item, player, ref grabRange);
331 public override bool GrabStyle(Item item, Player player)
333 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
335 return base.GrabStyle(item, player);
338 bool b = base.GrabStyle(item, player);
342 b &= m.GrabStyle(item, player);
348 public override void HoldItem(Item item, Player player)
350 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
355 base.HoldItem(item, player);
359 m.HoldItem(item, player);
363 public override bool HoldItemFrame(Item item, Player player)
365 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
367 return base.HoldItemFrame(item, player);
370 bool b = base.HoldItemFrame(item, player);
374 b &= m.HoldItemFrame(item, player);
380 public override void HoldStyle(Item item, Player player)
382 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
387 base.HoldStyle(item, player);
391 m.HoldStyle(item, player);
395 public override void HorizontalWingSpeeds(Item item, Player player, ref
float speed, ref
float acceleration)
397 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
402 base.HorizontalWingSpeeds(item, player, ref speed, ref acceleration);
406 m.HorizontalWingSpeeds(item, player, ref speed, ref acceleration);
410 public override bool ItemSpace(Item item, Player player)
412 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
414 return base.ItemSpace(item, player);
417 bool b = base.ItemSpace(item, player);
421 b &= m.ItemSpace(item, player);
427 public override void MeleeEffects(Item item, Player player, Rectangle hitbox)
429 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
434 base.MeleeEffects(item, player, hitbox);
438 m.MeleeEffects(item, player, hitbox);
442 public override float MeleeSpeedMultiplier(Item item, Player player)
444 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
446 return base.MeleeSpeedMultiplier(item, player);
449 float mult = base.MeleeSpeedMultiplier(item, player);
457 mult = m.MeleeSpeedMultiplier(item, player);
468 public override void GetHealLife(Item item, Player player,
bool quickHeal, ref
int healValue)
470 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
477 m.GetHealLife(item, player, quickHeal, ref healValue);
481 public override void ModifyHitNPC(Item item, Player player, NPC target, ref
int damage, ref
float knockBack, ref
bool crit)
483 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
488 base.ModifyHitNPC(item, player, target, ref damage, ref knockBack, ref crit);
492 m.ModifyHitNPC(item, player, target, ref damage, ref knockBack, ref crit);
496 public override void ModifyHitPvp(Item item, Player player, Player target, ref
int damage, ref
bool crit)
498 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
503 base.ModifyHitPvp(item, player, target, ref damage, ref crit);
507 m.ModifyHitPvp(item, player, target, ref damage, ref crit);
511 public override bool NewPreReforge(Item item)
513 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
515 return base.NewPreReforge(item);
518 bool b = base.NewPreReforge(item);
522 b &= m.NewPreReforge(item);
528 public override void OnCraft(Item item, Recipe recipe)
530 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
535 base.OnCraft(item, recipe);
543 public override void OnHitNPC(Item item, Player player, NPC target,
int damage,
float knockBack,
bool crit)
545 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
550 base.OnHitNPC(item, player, target, damage, knockBack, crit);
554 m.OnHitNPC(item, player, target, damage, knockBack, crit);
558 public override void OnHitPvp(Item item, Player player, Player target,
int damage,
bool crit)
560 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
565 base.OnHitPvp(item, player, target, damage, crit);
569 m.OnHitPvp(item, player, target, damage, crit);
573 public override bool OnPickup(Item item, Player player)
575 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
577 return base.OnPickup(item, player);
580 bool b = base.OnPickup(item, player);
584 b &= m.OnPickup(item, player);
590 public override void PickAmmo(Item item, Player player, ref
int type, ref
float speed, ref
int damage, ref
float knockback)
592 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
597 base.PickAmmo(item, player, ref type, ref speed, ref damage, ref knockback);
601 m.PickAmmo(item, player, ref type, ref speed, ref damage, ref knockback);
605 public override void PostDrawInInventory(Item item, SpriteBatch spriteBatch, Vector2 position, Rectangle frame, Color drawColor, Color itemColor, Vector2 origin,
float scale)
607 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
612 base.PostDrawInInventory(item, spriteBatch, position, frame, drawColor, itemColor, origin, scale);
616 m.PostDrawInInventory(item, spriteBatch, position, frame, drawColor, itemColor, origin, scale);
620 public override void PostDrawInWorld(Item item, SpriteBatch spriteBatch, Color lightColor, Color alphaColor,
float rotation,
float scale,
int whoAmI)
622 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
627 base.PostDrawInWorld(item, spriteBatch, lightColor, alphaColor, rotation, scale, whoAmI);
631 m.PostDrawInWorld(item, spriteBatch, lightColor, alphaColor, rotation, scale, whoAmI);
635 public override void PostDrawTooltip(Item item, ReadOnlyCollection<DrawableTooltipLine> lines)
637 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
642 base.PostDrawTooltip(item, lines);
646 m.PostDrawTooltip(item, lines);
650 public override void PostDrawTooltipLine(Item item, DrawableTooltipLine line)
652 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
657 base.PostDrawTooltipLine(item, line);
661 m.PostDrawTooltipLine(item, line);
665 public override void PostReforge(Item item)
667 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
672 base.PostReforge(item);
680 public override void PostUpdate(Item item)
682 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
687 base.PostUpdate(item);
695 public override bool PreDrawInInventory(Item item, SpriteBatch spriteBatch, Vector2 position, Rectangle frame, Color drawColor, Color itemColor, Vector2 origin,
float scale)
697 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
699 return base.PreDrawInInventory(item, spriteBatch, position, frame, drawColor, itemColor, origin, scale);
702 bool b = base.PreDrawInInventory(item, spriteBatch, position, frame, drawColor, itemColor, origin, scale);
706 b &= m.PreDrawInInventory(item, spriteBatch, position, frame, drawColor, itemColor, origin, scale);
712 public override bool PreDrawInWorld(Item item, SpriteBatch spriteBatch, Color lightColor, Color alphaColor, ref
float rotation, ref
float scale,
int whoAmI)
714 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
716 return base.PreDrawInWorld(item, spriteBatch, lightColor, alphaColor, ref rotation, ref scale, whoAmI);
719 bool b = base.PreDrawInWorld(item, spriteBatch, lightColor, alphaColor, ref rotation, ref scale, whoAmI);
723 b &= m.PreDrawInWorld(item, spriteBatch, lightColor, alphaColor, ref rotation, ref scale, whoAmI);
729 public override bool PreDrawTooltip(Item item, ReadOnlyCollection<TooltipLine> lines, ref
int x, ref
int y)
731 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
733 return base.PreDrawTooltip(item, lines, ref x, ref y);
736 bool b = base.PreDrawTooltip(item, lines, ref x, ref y);
740 b &= m.PreDrawTooltip(item, lines, ref x, ref y);
746 public override bool PreDrawTooltipLine(Item item, DrawableTooltipLine line, ref
int yOffset)
748 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
750 return base.PreDrawTooltipLine(item, line, ref yOffset);
753 bool b = base.PreDrawTooltipLine(item, line, ref yOffset);
757 b &= m.PreDrawTooltipLine(item, line, ref yOffset);
763 public override bool ReforgePrice(Item item, ref
int reforgePrice, ref
bool canApplyDiscount)
765 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
767 return base.ReforgePrice(item, ref reforgePrice, ref canApplyDiscount);
770 bool b = base.ReforgePrice(item, ref reforgePrice, ref canApplyDiscount);
774 b &= m.ReforgePrice(item, ref reforgePrice, ref canApplyDiscount);
780 public override void RightClick(Item item, Player player)
782 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
787 base.RightClick(item, player);
791 m.RightClick(item, player);
795 public override void SetDefaults(Item item)
797 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
810 public override bool Shoot(Item item, Player player, ref Vector2 position, ref
float speedX, ref
float speedY, ref
int type, ref
int damage, ref
float knockBack)
812 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
814 return base.Shoot(item, player, ref position, ref speedX, ref speedY, ref type, ref damage, ref knockBack);
819 bool b = base.Shoot(item, player, ref position, ref speedX, ref speedY, ref type, ref damage, ref knockBack);
823 b &= m.Shoot(item, player, ref position, ref speedX, ref speedY, ref type, ref damage, ref knockBack);
829 public override void Update(Item item, ref
float gravity, ref
float maxFallSpeed)
831 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, Main.LocalPlayer))
836 base.Update(item, ref gravity, ref maxFallSpeed);
840 m.Update(item, ref gravity, ref maxFallSpeed);
844 public override void UpdateAccessory(Item item, Player player,
bool hideVisual)
846 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
851 base.UpdateAccessory(item, player, hideVisual);
855 m.UpdateAccessory(item, player, hideVisual);
859 public override void UpdateEquip(Item item, Player player)
861 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
866 base.UpdateEquip(item, player);
870 m.UpdateEquip(item, player);
874 public override void UpdateInventory(Item item, Player player)
876 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
881 base.UpdateInventory(item, player);
885 m.UpdateInventory(item, player);
889 public override bool UseItem(Item item, Player player)
891 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
893 return base.UseItem(item, player);
896 bool b = base.UseItem(item, player);
900 b &= m.UseItem(item, player);
906 public override bool UseItemFrame(Item item, Player player)
908 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
910 return base.UseItemFrame(item, player);
913 bool b = base.UseItemFrame(item, player);
917 b &= m.UseItemFrame(item, player);
923 public override void UseItemHitbox(Item item, Player player, ref Rectangle hitbox, ref
bool noHitbox)
925 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
930 base.UseItemHitbox(item, player, ref hitbox, ref noHitbox);
934 m.UseItemHitbox(item, player, ref hitbox, ref noHitbox);
938 public override void UseStyle(Item item, Player player)
940 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
945 base.UseStyle(item, player);
949 m.UseStyle(item, player);
953 public override float UseTimeMultiplier(Item item, Player player)
955 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
957 return base.UseTimeMultiplier(item, player);
960 float f = base.UseTimeMultiplier(item, player);
968 f = m.UseTimeMultiplier(item, player);
979 public override void VerticalWingSpeeds(Item item, Player player, ref
float ascentWhenFalling, ref
float ascentWhenRising, ref
float maxCanAscendMultiplier, ref
float maxAscentMultiplier, ref
float constantAscend)
981 if (GetActivatedModifierItem(item).ShouldBeIgnored(item, player))
986 base.VerticalWingSpeeds(item, player, ref ascentWhenFalling, ref ascentWhenRising, ref maxCanAscendMultiplier, ref maxAscentMultiplier, ref constantAscend);
990 m.VerticalWingSpeeds(item, player, ref ascentWhenFalling, ref ascentWhenRising, ref maxCanAscendMultiplier, ref maxAscentMultiplier, ref constantAscend);
Defines a modifier, which is an unloaded GlobalItem Making it a GlobalItem gives easy access to all h...
Can detect if an item was activated via cheats
Defines an item that may be modified by modifiers from mods
static List< Modifier > GetActivePool(Item item)
sealed override void SetDefaults(Item item)
sealed override int ChoosePrefix(Item item, UnifiedRandom rand)
static CheatedItemHackGlobalItem GetInfo(Item item)
sealed override void OnCraft(Item item, Recipe recipe)