Пример #1
0
        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();
                        }
                    }
                }
            });
        }
Пример #2
0
        ////

        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;
            }
        }