private void NPC_VanillaHitEffect(On.Terraria.NPC.orig_VanillaHitEffect orig, NPC self, int hitDirection, double dmg) { if (!TimeStopped || TimeStopStockOwner(self)) { orig.Invoke(self, hitDirection, dmg); } else { TBARGlobalNPC.Get(self).AccumulatedDamage += (int)dmg; self.life += (int)dmg; } }
public static TBARBuff ExtendForNpc <T>(NPC target, int duration) where T : TBARBuff { TBARGlobalNPC globalNPC = TBARGlobalNPC.Get(target); TBARBuff buff = globalNPC.CustomBuffs.Find(x => x is T); if (buff != null) { buff.Duration += duration; } return(buff); }
public static TBARBuff AddToNpc <T>(NPC target, int duration, Entity inflictor = null, BuffAddStyle style = BuffAddStyle.Default) where T : TBARBuff { TBARGlobalNPC globalNPC = TBARGlobalNPC.Get(target); TBARBuff buff = (TBARBuff)Activator.CreateInstance(typeof(T)); if (inflictor != null) { buff.Owner = inflictor; } buff.Initialize(); buff.Duration = duration; TBARBuff temp = null; switch (style) { case BuffAddStyle.Default: globalNPC.CustomBuffs.Add(buff); break; case BuffAddStyle.Replace: temp = globalNPC.CustomBuffs.Find(x => x is T); if (temp != null) { globalNPC.CustomBuffs.Remove(temp); } globalNPC.CustomBuffs.Add(buff); break; case BuffAddStyle.Extend: temp = globalNPC.CustomBuffs.Find(x => x is T); if (temp != null) { temp.Duration += duration; return(temp); } else { globalNPC.CustomBuffs.Add(buff); } break; } return(buff); }
public static TBARBuff ExtendForNpcIf <T>(NPC target, int duration, Predicate <TBARBuff> predicate) where T : TBARBuff { TBARGlobalNPC globalNPC = TBARGlobalNPC.Get(target); predicate += x => x is T; TBARBuff buff = globalNPC.CustomBuffs.Find(predicate); if (buff != null) { buff.Duration += duration; } return(buff); }
public void RestoreOrder() { // if we are playing as a client, then only the server should handle this if (Main.netMode == NetmodeID.MultiplayerClient) { return; } foreach (NPC npc in Main.npc) { if (!npc.active) { continue; } TBARGlobalNPC.RestoreAction(npc); } HasOrderToRestore = false; }
public override void Update(NPC npc, ref int buffIndex) { TBARGlobalNPC.Get(npc).RedBinded = true; TBARGlobalNPC.Get(npc).Shocked = true; }