private void InitializeWithSync(NPC npc) { if (this.AwaitsInitialization || this.IsInitialized || !ElementsNPC.CanHaveElements(npc)) { return; } this.AwaitsInitialization = true; LoadHooks.AddPostWorldLoadOnceHook(() => { this.IsInitialized = true; this.AwaitsInitialization = false; if (ElementsAPI.PreNPCInitialize(npc)) { if (this.AutoInitializeElement(npc)) { if (Main.netMode == 2) { NPCElementsProtocol.Broadcast(npc.whoAmI); } else { this.InitializeColorAnimation(); } } } }); }
//// private void ApplyHit(NPC npc, ref int damage, ISet <ElementDefinition> attackElements, ISet <ElementDefinition> targetElements) { ISet <ElementDefinition> absorbedElems, afflictedElems; damage = ElementsNPC.ComputeDamage( npc, damage, attackElements, targetElements, out absorbedElems, out afflictedElems ); if (absorbedElems.Count > 0) { this.AbsorbedElements = absorbedElems; this.AbsorbAnimation = 120; } else if (afflictedElems.Count > 0) { this.AfflictedElements = afflictedElems; } }