Exemplo n.º 1
0
 static HookResult OnPreNetDefaults(NPC npc, ref int type, ref NPCSpawnParams npcSpawnParams)
 {
     if (_hookManager.InvokeNpcNetDefaults(ref type, npc))
     {
         return(HookResult.Cancel);
     }
     return(HookResult.Continue);
 }
        public override void Run()
        {
            var vanilla = this.Method(() => (new Terraria.NPC()).SetDefaults(0, default));

            int            tmp         = 0;
            NPCSpawnParams spawnparams = default(NPCSpawnParams);
            var            cbkBegin    = this.Method(() => OTAPI.Callbacks.Terraria.Npc.SetDefaultsByIdBegin(null, ref tmp, ref spawnparams));
            var            cbkEnd      = this.Method(() => OTAPI.Callbacks.Terraria.Npc.SetDefaultsByIdEnd(null, tmp, spawnparams));

            vanilla.Wrap
            (
                beginCallback: cbkBegin,
                endCallback: cbkEnd,
                beginIsCancellable: true,
                noEndHandling: false,
                allowCallbackInstance: true
            );
        }
Exemplo n.º 3
0
        public override void Run()
        {
            var vanilla = this.Type <Terraria.NPC>().Method("SetDefaultsFromNetId");

            int            tmp         = 0;
            NPCSpawnParams spawnparams = default(NPCSpawnParams);
            var            cbkBegin    = this.Method(() => OTAPI.Callbacks.Terraria.Npc.NetDefaultsBegin(null, ref tmp, ref spawnparams));
            var            cbkEnd      = this.Method(() => OTAPI.Callbacks.Terraria.Npc.NetDefaultsEnd(null, ref tmp, ref spawnparams));

            vanilla.Wrap
            (
                beginCallback: cbkBegin,
                endCallback: cbkEnd,
                beginIsCancellable: true,
                noEndHandling: false,
                allowCallbackInstance: true
            );
        }
Exemplo n.º 4
0
        public bool ValidateAndCollectNecessaryInfo(ref BigProgressBarInfo info)
        {
            if (info.npcIndexToAimAt < 0 || info.npcIndexToAimAt > 200)
            {
                return(false);
            }
            NPC npc1 = Main.npc[info.npcIndexToAimAt];

            if ((!npc1.active || this.IsInBadAI(npc1)) && !this.TryFindingAnotherMoonLordPiece(ref info))
            {
                return(false);
            }
            int            num1        = 0;
            NPCSpawnParams spawnparams = new NPCSpawnParams()
            {
                strengthMultiplierOverride = new float?(npc1.strengthMultiplier),
                playerCountForMultiplayerDifficultyOverride = new int?(npc1.statsAreScaledForThisManyPlayers)
            };

            this._referenceDummy.SetDefaults(398, spawnparams);
            int num2 = num1 + this._referenceDummy.lifeMax;

            this._referenceDummy.SetDefaults(396, spawnparams);
            int num3 = num2 + this._referenceDummy.lifeMax;

            this._referenceDummy.SetDefaults(397, spawnparams);
            int   num4 = num3 + this._referenceDummy.lifeMax + this._referenceDummy.lifeMax;
            float num5 = 0.0f;

            for (int index = 0; index < 200; ++index)
            {
                NPC npc2 = Main.npc[index];
                if (npc2.active && this.ValidIds.Contains(npc2.type) && !this.IsInBadAI(npc2))
                {
                    num5 += (float)npc2.life;
                }
            }
            this._lifePercentToShow = Utils.Clamp <float>(num5 / (float)num4, 0.0f, 1f);
            return(true);
        }
Exemplo n.º 5
0
        public bool ValidateAndCollectNecessaryInfo(BigProgressBarInfo info)
        {
            if (info.npcIndexToAimAt < 0 || info.npcIndexToAimAt > 200)
            {
                return(false);
            }
            NPC nPC = Main.npc[info.npcIndexToAimAt];

            if ((!nPC.active || IsInBadAI(nPC)) && !TryFindingAnotherMoonLordPiece(info))
            {
                return(false);
            }
            int            num            = 0;
            NPCSpawnParams nPCSpawnParams = default(NPCSpawnParams);

            nPCSpawnParams.strengthMultiplierOverride = nPC.strengthMultiplier;
            nPCSpawnParams.playerCountForMultiplayerDifficultyOverride = nPC.statsAreScaledForThisManyPlayers;
            NPCSpawnParams spawnparams = nPCSpawnParams;

            _referenceDummy.SetDefaults(398, spawnparams);
            num += _referenceDummy.lifeMax;
            _referenceDummy.SetDefaults(396, spawnparams);
            num += _referenceDummy.lifeMax;
            _referenceDummy.SetDefaults(397, spawnparams);
            num += _referenceDummy.lifeMax;
            num += _referenceDummy.lifeMax;
            float num2 = 0f;

            for (int i = 0; i < 200; i++)
            {
                NPC nPC2 = Main.npc[i];
                if (nPC2.active && ValidIds.Contains(nPC2.type) && !IsInBadAI(nPC2))
                {
                    num2 += (float)nPC2.life;
                }
            }
            _lifePercentToShow = Utils.Clamp(num2 / (float)num, 0f, 1f);
            return(true);
        }
Exemplo n.º 6
0
 /// <summary>
 /// This method is injected into the end of the NetDefaults method.
 /// </summary>
 internal static void NetDefaultsEnd(global::Terraria.NPC npc, ref int type, ref NPCSpawnParams spawnparams) =>
 Hooks.Npc.PostNetDefaults?.Invoke(npc, ref type, ref spawnparams);
Exemplo n.º 7
0
        /// <summary>
        /// This method is injected into the start of the NetDefaults method.
        /// The return value will dictate if normal vanilla code should continue to run.
        /// </summary>
        /// <returns>True to continue on to vanilla code, otherwise false</returns>
        internal static bool NetDefaultsBegin(global::Terraria.NPC npc, ref int type, ref NPCSpawnParams spawnparams)
        {
            var res = Hooks.Npc.PreNetDefaults?.Invoke(npc, ref type, ref spawnparams);

            if (res.HasValue)
            {
                return(res.Value == HookResult.Continue);
            }
            return(true);
        }
Exemplo n.º 8
0
 /// <summary>
 /// This method is injected into the end of the SetDefaults(int,bool) method.
 /// </summary>
 internal static void SetDefaultsByIdEnd(global::Terraria.NPC npc, int type, NPCSpawnParams spawnparams) =>
 Hooks.Npc.PostSetDefaultsById?.Invoke(npc, type, spawnparams);