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