コード例 #1
0
        ////////////////

        public override void SetStaticDefaults()
        {
            this.DisplayName.SetDefault("Powered Exoskeleton Frame");
            this.Tooltip.SetDefault("Attacks, movement, and jumping draw less stamina"
                                    + '\n' + "Negates fall damage and knockback"
                                    + '\n' + "'Oil Can not included.'");

            ExtendedPlayerHooks.AddArmorEquipAction("Stamina:ExoskeletonEquip", delegate(Player player, int slot, Item myitem) {
                if (myitem.type != ModContent.ItemType <ExoskeletonItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingExoskeleton = true;
            });

            ExtendedPlayerHooks.AddArmorUnequipAction("Stamina:ExoskeletonUnequip", delegate(Player player, int slot, int itemType) {
                if (itemType != ModContent.ItemType <ExoskeletonItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingExoskeleton = false;
            });
        }
コード例 #2
0
        ////////////////

        public override void SetStaticDefaults()
        {
            this.DisplayName.SetDefault("Champion Belt");
            this.Tooltip.SetDefault("Attacks draw less stamina"
                                    + '\n' + "'We are the champions!'");

            ExtendedPlayerHooks.AddArmorEquipAction("Stamina:ChampionBeltEquip", delegate(Player player, int slot, Item myitem) {
                if (myitem.type != ModContent.ItemType <ChampionBeltItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingMuscleBelt = true;
            });

            ExtendedPlayerHooks.AddArmorUnequipAction("Stamina:ChampionBeltUnequip", delegate(Player player, int slot, int itemType) {
                if (itemType != ModContent.ItemType <ChampionBeltItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingMuscleBelt = false;
            });
        }
コード例 #3
0
        ////////////////

        public override void SetStaticDefaults()
        {
            this.DisplayName.SetDefault("Leg Spring");
            this.Tooltip.SetDefault("Jumps draw less stamina"
                                    + '\n' + "Negates fall damage"
                                    + '\n' + "'Puts a spring in your step.'");

            ExtendedPlayerHooks.AddArmorEquipAction("Stamina:LegSprintEquip", delegate(Player player, int slot, Item myitem) {
                if (myitem.type != ModContent.ItemType <LegSpringItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingLegSprings = true;
            });

            ExtendedPlayerHooks.AddArmorUnequipAction("Stamina:LegSprintUnequip", delegate(Player player, int slot, int itemType) {
                if (itemType != ModContent.ItemType <LegSpringItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingLegSprings = false;
            });
        }
コード例 #4
0
        ////////////////

        public override void SetStaticDefaults()
        {
            this.DisplayName.SetDefault("Joint Bracer");
            this.Tooltip.SetDefault("Non-jump movements draw less stamina"
                                    + '\n' + "Negates knockback"
                                    + '\n' + "'For when push comes to shove.'");

            ExtendedPlayerHooks.AddArmorEquipAction("Stamina:JointBracerEquip", delegate(Player player, int slot, Item myitem) {
                if (myitem.type != ModContent.ItemType <JointBracerItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var modplayer = player.GetModPlayer <StaminaPlayer>();
                modplayer.IsWearingJointBracer = true;
            });

            ExtendedPlayerHooks.AddArmorUnequipAction("Stamina:JointBracerUnequip", delegate(Player player, int slot, int itemType) {
                if (itemType != ModContent.ItemType <JointBracerItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var modplayer = player.GetModPlayer <StaminaPlayer>();
                modplayer.IsWearingJointBracer = false;
            });
        }
コード例 #5
0
        ////////////////

        public override void SetStaticDefaults()
        {
            this.DisplayName.SetDefault("Exercise Supplements");
            this.Tooltip.SetDefault("Makes exercise easier");

            ExtendedPlayerHooks.AddArmorEquipAction("Stamina:ExerciseSupplementsEquip", delegate(Player player, int slot, Item myitem) {
                if (myitem.type != ModContent.ItemType <ExerciseSupplementsItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsUsingSupplements = true;
            });

            ExtendedPlayerHooks.AddArmorUnequipAction("Stamina:ExerciseSupplementsUnequip", delegate(Player player, int slot, int itemType) {
                if (itemType != ModContent.ItemType <ExerciseSupplementsItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsUsingSupplements = false;
            });
        }
コード例 #6
0
        ////////////////

        public override void SetStaticDefaults()
        {
            this.DisplayName.SetDefault("Rage Headband");
            this.Tooltip.SetDefault("Trades exhaustion for health loss"
                                    + '\n' + "'Feel the burn!'");

            ExtendedPlayerHooks.AddArmorEquipAction("Stamina:RageHeadbandEquip", delegate(Player player, int slot, Item myitem) {
                if (myitem.type != ModContent.ItemType <RageHeadbandItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingRageBandana = true;
            });

            ExtendedPlayerHooks.AddArmorUnequipAction("Stamina:RageHeadbandUnequip", delegate(Player player, int slot, int itemType) {
                if (itemType != ModContent.ItemType <RageHeadbandItem>())
                {
                    return;
                }
                if (!PlayerItemHelpers.IsAccessorySlot(player, slot))
                {
                    return;
                }

                var myplayer = player.GetModPlayer <StaminaPlayer>();
                myplayer.IsWearingRageBandana = false;
            });
        }
コード例 #7
0
        private void CheckArmorEquipHooks(Player player)
        {
            bool equipChange = false;

            for (int i = 0; i < player.armor.Length; i++)
            {
                Item item = player.armor[i];

                if (item != null && !item.IsAir)
                {
                    bool hadAnEquip = this.EquipSlotsToItemTypes.ContainsKey(i);

                    if (hadAnEquip)
                    {
                        if (item.type != this.EquipSlotsToItemTypes[i])
                        {
                            ExtendedPlayerHooks.OnArmorUnequip(player, i, this.EquipSlotsToItemTypes[i]);
                            ExtendedPlayerHooks.OnArmorEquip(player, i, item);
                            this.EquipSlotsToItemTypes[i] = item.type;
                            equipChange = true;
                        }
                    }
                    else
                    {
                        this.EquipSlotsToItemTypes[i] = item.type;
                        ExtendedPlayerHooks.OnArmorEquip(player, i, item);
                        equipChange = true;
                    }
                }
                else
                {
                    if (this.EquipSlotsToItemTypes.ContainsKey(i))
                    {
                        ExtendedPlayerHooks.OnArmorUnequip(player, i, this.EquipSlotsToItemTypes[i]);
                        this.EquipSlotsToItemTypes.Remove(i);
                        equipChange = true;
                    }
                }
            }

            if (equipChange)
            {
                if (Main.netMode == 1)
                {
                    if (this.CanUpdateData)
                    {
                        this.CanUpdateData = false;

                        Timers.SetTimer("ModHelpersPlayerDataAntiHammer", 60 * 3, () => {
                            this.CanUpdateData = true;
                            return(false);
                        });

                        PlayerDataProtocol.SyncToEveryone(this.PermaBuffsById, this.HasBuffIds, this.EquipSlotsToItemTypes);
                    }
                }
            }
        }
コード例 #8
0
        public void UnloadModules()
        {
            this.Loadables.OnModsUnload();

            this.Loadables                  = null;
            this.ReflectionHelpers          = null;
            this.PacketProtocolMngr         = null;
            this.ExceptionMngr              = null;
            this.Timers                     = null;
            this.LogHelpers                 = null;
            this.ModFeaturesHelpers         = null;
            this.BuffHelpers                = null;
            this.NetHelpers                 = null;
            this.NPCAttributeHelpers        = null;
            this.ProjectileAttributeHelpers = null;
            this.BuffIdentityHelpers        = null;
            this.NPCBannerHelpers           = null;
            this.RecipeFinderHelpers        = null;
            this.RecipeGroupHelpers         = null;
            this.PlayerHooks                = null;
            this.LoadHelpers                = null;
            this.GetModInfo                 = null;
            this.GetModTags                 = null;
            this.WorldStateHelpers          = null;
            this.ModLock                    = null;
            this.EntityGroups               = null;
            this.AnimatedColors             = null;
            this.AnimatedTextures           = null;
            this.PlayerMessages             = null;
            this.Inbox                 = null;
            this.ControlPanel          = null;
            this.MenuItemMngr          = null;
            this.MenuContextMngr       = null;
            this.MusicHelpers          = null;
            this.PlayerIdentityHelpers = null;
            this.LoadHooks             = null;
            this.CustomLoadHooks       = null;
            this.DataStore             = null;
            this.CustomHotkeys         = null;
            this.XnaHelpers            = null;
            this.Server                = null;
            //this.PlayerDataMngr = null;
            this.SupportInfo          = null;
            this.RecipeHack           = null;
            this.ModListHelpers       = null;
            this.ItemAttributeHelpers = null;
            this.WorldTimeHooks       = null;

            this.ControlPanelHotkey = null;
            this.DataDumpHotkey     = null;
        }
コード例 #9
0
        ////////////////

        private void CheckBuffHooks(Player player)
        {
            bool buffChange = false;

            // Add new buffs
            for (int i = 0; i < player.buffTime.Length; i++)
            {
                if (player.buffTime[i] > 0)
                {
                    int buffId = player.buffType[i];

                    if (!this.HasBuffIds.Contains(buffId))
                    {
                        this.HasBuffIds.Add(buffId);
                        buffChange = true;
                    }
                }
            }

            // Remove old buffs + fire hooks
            foreach (int buffId in this.HasBuffIds.ToArray())
            {
                if (player.FindBuffIndex(buffId) == -1)
                {
                    this.HasBuffIds.Remove(buffId);
                    buffChange = true;

                    ExtendedPlayerHooks.OnBuffExpire(player, buffId);
                }
            }

            if (buffChange)
            {
                if (Main.netMode == 1)
                {
                    if (this.CanUpdateData)
                    {
                        this.CanUpdateData = false;

                        Timers.SetTimer("ModHelpersPlayerDataAntiHammer", 60 * 3, () => {
                            this.CanUpdateData = true;
                            return(false);
                        });

                        PlayerDataProtocol.SyncToEveryone(this.PermaBuffsById, this.HasBuffIds, this.EquipSlotsToItemTypes);
                    }
                }
            }
        }
コード例 #10
0
        public override void PostSetupContent()
        {
            if (!Main.dedServ)
            {
                // Add player stats tab
                this.PlayerStatsUI = new UIPlayerStatsTab(UITheme.Vanilla);
                ControlPanelTabs.AddTab(PlayerStatisticsMod.ControlPanelName, this.PlayerStatsUI);

                // Register boss kills to indicate progress
                ExtendedPlayerHooks.AddNpcKillHook((plr, npc) => {
                    var myplayer = TmlHelpers.SafelyGetModPlayer <PlayerStatisticsPlayer>(plr);
                    myplayer.RegisterNpcKillIfBoss(npc);
                });
            }
        }
コード例 #11
0
        ////////////////

        private void NPCKilledByPlayer(NPC npc)
        {
            if (Main.netMode == NetmodeID.Server)
            {
                Player toPlayer = Main.player[npc.lastInteraction];

                if (toPlayer != null && toPlayer.active)
                {
                    ExtendedPlayerHooks.RunNpcKillHooks(toPlayer, npc);
                }
            }
            else if (Main.netMode == NetmodeID.SinglePlayer)
            {
                ExtendedPlayerHooks.RunNpcKillHooks(Main.LocalPlayer, npc);
            }
        }
コード例 #12
0
        public void UnloadOuter()
        {
            this.ReflectionHelpers         = null;
            this.PacketProtocolMngr        = null;
            this.ExceptionMngr             = null;
            this.Timers                    = null;
            this.ConfigJson                = null;
            this.LogHelpers                = null;
            this.ModFeaturesHelpers        = null;
            this.BuffHelpers               = null;
            this.NetHelpers                = null;
            this.ItemIdentityHelpers       = null;
            this.NPCIdentityHelpers        = null;
            this.ProjectileIdentityHelpers = null;
            this.BuffIdentityHelpers       = null;
            this.NPCBannerHelpers          = null;
            this.RecipeIdentityHelpers     = null;
            this.RecipeGroupHelpers        = null;
            this.PlayerHooks               = null;
            this.LoadHelpers               = null;
            this.GetModInfo                = null;
            this.GetModTags                = null;
            this.WorldStateHelpers         = null;
            this.ModLock                   = null;
            this.EntityGroups              = null;
            this.AnimatedColors            = null;
            this.PlayerMessages            = null;
            this.Inbox                 = null;
            this.ControlPanel          = null;
            this.MenuItemMngr          = null;
            this.MenuContextMngr       = null;
            this.MusicHelpers          = null;
            this.PlayerIdentityHelpers = null;
            this.CustomEntMngr         = null;
            this.Promises              = null;
            this.DataStore             = null;
            this.CustomHotkeys         = null;
            this.XnaHelpers            = null;
            this.ServerInfo            = null;
            //this.PlayerDataMngr = null;
            this.SupportInfo    = null;
            this.RecipeHack     = null;
            this.ModListHelpers = null;

            this.ControlPanelHotkey = null;
            this.DataDumpHotkey     = null;
        }
コード例 #13
0
        private void LoadModules()
        {
            this.Loadables.OnModsLoad();

            this.ReflectionHelpers = new ReflectionHelpers();
            this.DataStore         = new DataStore();
            this.LoadHooks         = new LoadHooks();
            this.CustomLoadHooks   = new CustomLoadHooks();
            this.LoadHelpers       = new LoadHelpers();

            this.Timers             = new Timers();
            this.LogHelpers         = new LogHelpers();
            this.ModFeaturesHelpers = new ModFeaturesHelpers();
            this.PacketProtocolMngr = new PacketProtocolManager();

            this.BuffHelpers                = new BuffHelpers();
            this.NetHelpers                 = new NetPlayHelpers();
            this.NPCAttributeHelpers        = new NPCAttributeHelpers();
            this.ProjectileAttributeHelpers = new ProjectileAttributeHelpers();
            this.BuffIdentityHelpers        = new BuffAttributesHelpers();
            this.NPCBannerHelpers           = new NPCBannerHelpers();
            this.RecipeFinderHelpers        = new RecipeFinderHelpers();
            this.RecipeGroupHelpers         = new RecipeGroupHelpers();
            this.PlayerHooks                = new ExtendedPlayerHooks();
            this.WorldTimeHooks             = new WorldTimeHooks();
            this.WorldStateHelpers          = new WorldStateHelpers();
            this.ControlPanel               = new UIControlPanel();
            this.ModLock               = new ModLockService();
            this.EntityGroups          = new EntityGroups();
            this.PlayerMessages        = new PlayerMessages();
            this.Inbox                 = new InboxControl();
            this.GetModInfo            = new GetModInfo();
            this.GetModTags            = new GetModTags();
            this.MenuItemMngr          = new MenuItemManager();
            this.MenuContextMngr       = new MenuContextServiceManager();
            this.MusicHelpers          = new MusicHelpers();
            this.PlayerIdentityHelpers = new PlayerIdentityHelpers();
            this.CustomHotkeys         = new CustomHotkeys();
            this.XnaHelpers            = new XNAHelpers();
            this.Server                = new Server();
            //this.PlayerDataMngr = new PlayerDataManager();
            this.SupportInfo          = new SupportInfoDisplay();
            this.RecipeHack           = new RecipeHack();
            this.ModListHelpers       = new ModListHelpers();
            this.ItemAttributeHelpers = new ItemAttributeHelpers();
        }
コード例 #14
0
        ////////////////

        private void NpcKilledByPlayer(NPC npc)
        {
            var mymod = (ModHelpersMod)this.mod;

            if (Main.netMode == 2)
            {
                Player toPlayer = Main.player[npc.lastInteraction];

                if (toPlayer != null && toPlayer.active)
                {
                    ExtendedPlayerHooks.RunNpcKillHooks(toPlayer, npc);
                }
            }
            else if (Main.netMode == 0)
            {
                ExtendedPlayerHooks.RunNpcKillHooks(Main.LocalPlayer, npc);
            }
        }
コード例 #15
0
 public static bool AddBuffExpireAction(string which, Action <Player, int> action)
 {
     return(ExtendedPlayerHooks.AddBuffExpireAction(which, action));
 }
コード例 #16
0
 public static bool AddArmorUnequipAction(string which, Action <Player, int, int> action)
 {
     return(ExtendedPlayerHooks.AddArmorUnequipAction(which, action));
 }