public override void PostUpdateBuffs()
 {
     if (Calamity != null)
     {
         ModPlayer calPlayer     = player.GetModPlayer(Calamity, "CalamityPlayer");
         FieldInfo field         = calPlayer.GetType().GetField("ZoneSunkenSea");
         var       zoneSunkenSea = field.GetValue(calPlayer);           // for getting the value of the field
         if ((bool)zoneSunkenSea && player.wet)
         {
             player.AddBuff(Main.hardMode ? ModContent.BuffType <ForcedZen>() : ModContent.BuffType <ForcedPeace>(), 2);
         }
     }
     if (Thorium != null)
     {
         ModPlayer thoriumPlayer     = player.GetModPlayer(Thorium, "ThoriumPlayer");
         FieldInfo field             = thoriumPlayer.GetType().GetField("ZoneAqua");
         var       zoneAquaticDepths = field.GetValue(thoriumPlayer);           // for getting the value of the field
         if ((bool)zoneAquaticDepths && !ThorWorldBools.DownedJellyfishJam)
         {
             player.AddBuff(ModContent.BuffType <DontGoIntoTheFuckingAquaticDepthsBeforeQueen>(), 2);                    //hahayes
             player.AddBuff(BuffID.NoBuilding, 2);
         }
         if (player.ZoneJungle && !ThorWorldBools.DownedCoolBloomFacts)
         {
             player.AddBuff(ThorBuffIDs.TaintedHearts, 2);
         }
     }
 }
Example #2
0
        internal void RestoreData(Player player)
        {
            int k = 0;

            while (k < data.Count)
            {
                Mod       mod       = ModLoader.GetMod(data[k].modName);
                ModPlayer modPlayer = mod == null ? null : player.GetModPlayer(mod, data[k].name);
                if (modPlayer == null)
                {
                    k++;
                }
                else
                {
                    using (MemoryStream memoryStream = new MemoryStream(data[k].data))
                    {
                        using (BinaryReader reader = new BinaryReader(memoryStream))
                        {
                            modPlayer.LoadCustomData(reader);
                        }
                    }
                    data.RemoveAt(k);
                }
            }
        }
Example #3
0
        public override void SendClientChanges(ModPlayer clientPlayer)
        {
            if (clientPlayer is GradiusModPlayer clone)
            {
                ModPacket packet = mod.GetPacket();

                if (clone.isFreezing != isFreezing)
                {
                    packet.Write((byte)ChensGradiusMod.PacketMessageType.ClientChangesFreezeOption);
                    packet.Write((byte)player.whoAmI);
                    packet.Write(isFreezing);
                    packet.Send();
                }

                if (clone.rotateMode != rotateMode)
                {
                    packet.Write((byte)ChensGradiusMod.PacketMessageType.ClientChangesRotateOption);
                    packet.Write((byte)player.whoAmI);
                    packet.Write(rotateMode);
                    packet.Write(revolveDirection);
                    packet.Write(wasHolding);
                    packet.Send();
                }
            }
        }
        public override void clientClone(ModPlayer clone)
        {
            base.clientClone(clone);
            var myclone = (CapitalismPlayer)clone;

            myclone.Logic = this.Logic;
        }
Example #5
0
        public override void clientClone(ModPlayer clientClone)
        {
            ShieldPlayer clone = clientClone as ShieldPlayer;

            // Here we would make a backup clone of values that are only correct on the local players Player instance.
            clone.barrierDyeItem = barrierDyeItem;
        }
Example #6
0
        public override void clientClone(ModPlayer clientClone)
        {
            GradiusModPlayer clone = clientClone as GradiusModPlayer;

            clone.isFreezing = isFreezing;
            clone.rotateMode = rotateMode;
        }
Example #7
0
        public override void SendClientChanges(ModPlayer clientPlayer)
        {
            UniqueItemsPlayer clone = clientPlayer as UniqueItemsPlayer;

            if (clone.SoulEffect != SoulEffect)
            {
                var packet = mod.GetPacket();
                packet.Write(SoulEffect);
                packet.Write(SoulCharge);

                packet.Send();
            }
            if (clone.ManaVampirism != ManaVampirism)
            {
                var packet = mod.GetPacket();
                packet.Write(ManaVampirism);
                packet.Send();
            }
            if (clone.ManaShield != ManaShield)
            {
                var packet = mod.GetPacket();
                packet.Write(ManaShield);
                packet.Send();
            }
        }
Example #8
0
        public void Broadcaster_Msg(Il2CppStructArray <byte> messageBytes)
        {
            var msg    = Deserialize <JSRM_Message>(messageBytes);
            var player = SessionData.playersWithMod.FirstOrDefault(p => p.PeerID == msg.PeerID);

            if (player == null)
            {
                var newPlayer = new ModPlayer()
                {
                    PeerID     = msg.PeerID.Value,
                    PlayerName = msg.PlayerName
                };

                SessionData.playersWithMod.Add(newPlayer);

                if (!string.IsNullOrEmpty(newPlayer.PlayerName))
                {
                    SessionData.Chat.UpdateChatLog($"{newPlayer.PlayerName} has joined as Player {newPlayer.PeerID}!", "Notification");
                }
                else
                {
                    SessionData.Chat.UpdateChatLog($"Player {newPlayer.PeerID} has joined!", "Notification");
                }

                JSRM_Msg();
                return;
            }


            //SessionData.Chat.UpdateChatLog($"{player.PlayerName} has joined as Player {player.PeerID}!", "Notification");
        }
Example #9
0
        public override void SendClientChanges(ModPlayer clientPlayer)
        {
            // Here we would sync something like an RPG stat whenever the player changes it.
            LPlayer clone = clientPlayer as LPlayer;
            bool    send  = false;

            for (int i = 0; i < LansToggleableBuffs.instance.getBuffLength(); i++)
            {
                if (clone.boughtbuffsavail[i] != boughtbuffsavail[i])
                {
                    send = true;
                    break;
                }
                if (clone.buffsavail[i] != buffsavail[i])
                {
                    send = true;
                    break;
                }
            }

            if (send)
            {
                var packet = mod.GetPacket();
                packet.Write((byte)ModMessageType.Change);
                packet.Write((byte)player.whoAmI);
                for (int i = 0; i < LansToggleableBuffs.instance.getBuffLength(); i++)
                {
                    packet.Write(boughtbuffsavail[i]);
                    packet.Write(buffsavail[i]);
                }
                packet.Send();
            }
        }
Example #10
0
        protected override bool PreReceive(BinaryReader reader, int fromWho)
        {
            bool result = base.PreReceive(reader, fromWho);

            if (!ModPlayer.Initialized)
            {
                ModPlayer.Init();
            }

            for (int i = 1; i < ModPlayer.Inventory.Page.Length; i += 1)
            {
                for (int j = 0; j < ModPlayer.Inventory.Page[i].item.Length; j += 1)
                {
                    ModPlayer.Inventory.Page[i].item[j] = ItemIO.Receive(reader, true, true);
                }
            }

            foreach (AlignmentStat stat in ModPlayer.Character.AlignmentStats.Values)
            {
                if (stat.DoSave)
                {
                    stat.BaseAmount = reader.ReadInt32();
                }
            }

            foreach (MinorStat stat in ModPlayer.Character.MinorStats.Values)
            {
                if (stat.DoSave)
                {
                    stat.BaseAmount = reader.ReadSingle();
                }
            }

            return(result);
        }
Example #11
0
        public override void NPCLoot(NPC npc)
        {
            Player    player  = Main.player[Main.myPlayer];
            ModPlayer mplayer = (ModPlayer)player.GetModPlayer(mod, "mplayer");

            if (npc.lifeMax >= 10 && npc.lifeMax < 20)
            {
                Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 6;
            }
            else if (npc.lifeMax >= 20 && npc.lifeMax < 30)
            {
                Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 10;
            }
            else if (npc.lifeMax >= 30 && npc.lifeMax < 40)
            {
                Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 14;
            }
            else if (npc.lifeMax >= 40 && npc.lifeMax < 50)
            {
                Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 20;
            }
            else if (npc.lifeMax >= 50 && npc.lifeMax < 60)
            {
                Main.LocalPlayer.GetModPlayer <mPlayer>().Exp += 28;
            }

            base.NPCLoot(npc);
        }
Example #12
0
        public override void clientClone(ModPlayer clone)
        {
            var myclone = (BetterBuffsPlayer)clone;

            myclone.MaxBuffTimes = this.MaxBuffTimes;
            myclone.BuffLocks    = this.BuffLocks;
        }
        public override void clientClone(ModPlayer clientClone)
        {
            AlchemistNPCPlayer clone = clientClone as AlchemistNPCPlayer;

            clone.BBP             = BBP;
            clone.SnatcherCounter = SnatcherCounter;
        }
Example #14
0
        private void gridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex != 3 || e.RowIndex == -1)
            {
                return;
            }
            DataGridViewRow item         = this.gridView.Rows[e.RowIndex];
            string          fileName     = ModsSelector.GetFileName(item);
            ModPack         selectedPack = ModsSelector.GetSelectedPack(item);

            try
            {
                if (!this.IsDisabled(item))
                {
                    ModPlayer.Play(selectedPack.Files.FindByName(fileName));
                }
                else
                {
                    ModPlayer.Play(GlobalData.ElswordFilesInfo.FindByName(fileName));
                }
            }
            catch (Exception exception)
            {
                MsgBox.Error(exception.Message);
            }
        }
Example #15
0
        ////////////////

        private static void RemoveWingSlotProperty(ModPlayer mywingplayer, string propName)
        {
            object wingEquipSlot;

            if (ReflectionLibraries.Get(mywingplayer, propName, out wingEquipSlot) && wingEquipSlot != null)
            {
                Item wingItem;

                if (ReflectionLibraries.Get(wingEquipSlot, "Item", out wingItem))
                {
                    if (wingItem != null && !wingItem.IsAir)
                    {
                        ReflectionLibraries.Set(wingEquipSlot, "Item", new Item());
                        ReflectionLibraries.Set(mywingplayer, propName, wingEquipSlot);
                    }
                }
                else
                {
                    LogLibraries.Warn("Invalid Wing Mod item slot for " + propName);
                }
            }
            else
            {
                LogLibraries.Log("No Wing Mod item slot recognized for " + propName);
            }
        }
Example #16
0
        public override void clientClone(ModPlayer clientClone)
        {
            SoulPlayer clone = clientClone as SoulPlayer;

            for (int i = 0; i < this.activeSouls.GetLength(0); ++i)
            {
                for (int j = 0; j < this.activeSouls.GetLength(1); ++j)
                {
                    if (this.activeSouls[i, j] == null)
                    {
                        this.activeSouls[i, j] = new NetSoulData();
                    }

                    clone.activeSouls[i, j].stack   = this.activeSouls[i, j].stack;
                    clone.activeSouls[i, j].soulNPC = this.activeSouls[i, j].soulNPC;
                }
            }

            clone.seaSnailSoul        = seaSnailSoul;
            clone.lacBeetleSoul       = lacBeetleSoul;
            clone.cyanBeetleSoul      = cyanBeetleSoul;
            clone.cochinealBeetleSoul = cochinealBeetleSoul;
            clone.iceTortoiseSoul     = iceTortoiseSoul;

            clone.eocSoulDash = eocSoulDash;
        }
Example #17
0
        private void CloseApp_Click(object sender, EventArgs e)
        {
            ModPlayer.Player_Stop();

            ModDriver.MikMod_Exit();
            this.Close();
        }
Example #18
0
        internal void RestoreData(Player player)
        {
            int k = 0;

            while (k < data.Count)
            {
                Mod       mod       = ModLoader.GetMod(data[k].modName);
                ModPlayer modPlayer = mod == null ? null : player.GetModPlayer(mod, data[k].name);
                if (modPlayer == null)
                {
                    k++;
                }
                else
                {
                    using (MemoryStream memoryStream = new MemoryStream(data[k].data))
                    {
                        using (BinaryReader reader = new BinaryReader(memoryStream))
                        {
                            try
                            {
                                modPlayer.LoadCustomData(reader);
                            }
                            catch (Exception e)
                            {
                                throw new CustomModDataException(mod,
                                                                 "Error in loading custom player data for " + mod.Name, e);
                            }
                        }
                    }
                    data.RemoveAt(k);
                }
            }
        }
Example #19
0
        internal static void ReadCustomData(Player player, BinaryReader reader)
        {
            int count = reader.ReadUInt16();

            for (int k = 0; k < count; k++)
            {
                string    modName   = reader.ReadString();
                string    name      = reader.ReadString();
                byte[]    data      = reader.ReadBytes(reader.ReadUInt16());
                Mod       mod       = ModLoader.GetMod(modName);
                ModPlayer modPlayer = mod == null ? null : player.GetModPlayer(mod, name);
                if (modPlayer != null)
                {
                    using (MemoryStream stream = new MemoryStream(data))
                    {
                        using (BinaryReader customReader = new BinaryReader(stream))
                        {
                            modPlayer.LoadCustomData(customReader);
                        }
                    }
                    if (modName == "ModLoader" && name == "MysteryPlayer")
                    {
                        ((MysteryPlayer)modPlayer).RestoreData(player);
                    }
                }
                else
                {
                    ModPlayer mystery = player.GetModPlayer(ModLoader.GetMod("ModLoader"), "MysteryPlayer");
                    ((MysteryPlayer)mystery).AddData(modName, name, data);
                }
            }
        }
Example #20
0
 // In MP, other clients need accurate information about your player or else bugs happen.
 // clientClone, SyncPlayer, and SendClientChanges, ensure that information is correct.
 // We only need to do this for data that is changed by code not executed by all clients,
 // or data that needs to be shared while joining a world.
 // For example, examplePet doesn't need to be synced because all clients know that the player is wearing the ExamplePet item in an equipment slot.
 // The examplePet bool is set for that player on every clients computer independently (via the Buff.Update), keeping that data in sync.
 // ExampleLifeFruits, however might be out of sync. For example, when joining a server, we need to share the exampleLifeFruits variable with all other clients.
 public override void clientClone(ModPlayer clientClone)
 {
     PlayerModded clone = clientClone as PlayerModded;
     // Here we would make a backup clone of values that are only correct on the local players Player instance.
     // Some examples would be RPG stats from a GUI, Hotkey states, and Extra Item Slots
     // clone.someLocalVariable = someLocalVariable;
 }
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            ACCPlayer accPlayer = Main.player[player.whoAmI].GetModPlayer <ACCPlayer>();

            if (ExpSentriesMod != null)
            {
                player.GetModPlayer <ApacchiisClassesMod.MyPlayer>().hasEquippedClass = true;
                accPlayer.hasDefender = true;

                //Reflection for cross-mod compatability without hard references
                ModPlayer esPlayer     = player.GetModPlayer(ExpSentriesMod, "ESPlayer");
                Type      esPlayerType = esPlayer.GetType();

                // Sentry Damage
                FieldInfo sentryDamage    = esPlayerType.GetField("sentryDamage", BindingFlags.Instance | BindingFlags.Public);
                float     oldSentryDamage = (float)sentryDamage.GetValue(esPlayer);
                sentryDamage.SetValue(esPlayer, oldSentryDamage + .09f);

                // Sentry Range
                FieldInfo sentryRange    = esPlayerType.GetField("sentryRange", BindingFlags.Instance | BindingFlags.Public);
                float     oldSentryRange = (float)sentryRange.GetValue(esPlayer);
                sentryRange.SetValue(esPlayer, oldSentryRange + .15f);

                // Sentry Speed
                FieldInfo sentrySpeed    = esPlayerType.GetField("sentrySpeed", BindingFlags.Instance | BindingFlags.Public);
                float     oldSentrySpeed = (float)sentrySpeed.GetValue(esPlayer);
                sentrySpeed.SetValue(esPlayer, oldSentrySpeed + .075f);

                player.maxTurrets += 2;
                accPlayer.defenderAbility1Damage = 250;
            }
        }
Example #22
0
        public static object GetModPlayerConditions(string modname, Player player, string playername, string ConditionName, bool nopub = false, bool sta = false)
        {
            object condition = null;

            if (ModLoader.GetMod(modname) != null)
            {
                Mod mod = ModLoader.GetMod(modname);
                try
                {
                    ModPlayer modplayer = player.GetModPlayer(mod, playername);
                    if (player != null)
                    {
                        BindingFlags binding = (sta? BindingFlags.Static : BindingFlags.Instance) | (nopub? BindingFlags.NonPublic : BindingFlags.Public);
                        return(modplayer.GetType().GetField(ConditionName, binding).GetValue(modplayer));
                    }
                }
                catch
                {
                    return(null);

                    throw new Exception("Error in reading modplayer data.");
                }
            }
            return(condition);
        }
        public override void UpdateAccessory(Player player, bool hideVisual)
        {
            ACCPlayer accPlayer = Main.player[player.whoAmI].GetModPlayer <ACCPlayer>();

            if (EsperClassMod != null)
            {
                player.GetModPlayer <ApacchiisClassesMod.MyPlayer>().hasEquippedClass = true;
                accPlayer.hasEsper      = true;
                accPlayer.hasClassPath2 = true;

                //Reflection for cross-mod compatability without hard references
                ModPlayer ECPlayer     = player.GetModPlayer(EsperClassMod, "ECPlayer");
                Type      ECPlayerType = ECPlayer.GetType();

                // Telekinetic Damage
                FieldInfo tkDamage    = ECPlayerType.GetField("tkDamage", BindingFlags.Instance | BindingFlags.Public);
                float     oldtkDamage = (float)tkDamage.GetValue(ECPlayer);
                tkDamage.SetValue(ECPlayer, oldtkDamage + 0.245f);

                // Telekinetic Crit
                FieldInfo tkCrit    = ECPlayerType.GetField("tkCrit", BindingFlags.Instance | BindingFlags.Public);
                int       oldtkCrit = (int)tkCrit.GetValue(ECPlayer);
                tkCrit.SetValue(ECPlayer, oldtkCrit + 14);

                // Telekinetic Velocity
                FieldInfo tkVel    = ECPlayerType.GetField("tkVel", BindingFlags.Instance | BindingFlags.Public);
                float     oldtkVel = (float)tkVel.GetValue(ECPlayer);
                tkVel.SetValue(ECPlayer, oldtkVel + 0.7f);

                // Max Psychosis
                FieldInfo maxPsychosis2    = ECPlayerType.GetField("maxPsychosis2", BindingFlags.Instance | BindingFlags.Public);
                int       oldmaxPsychosis2 = (int)maxPsychosis2.GetValue(ECPlayer);
                maxPsychosis2.SetValue(ECPlayer, oldmaxPsychosis2 + 5);
            }
        }
Example #24
0
        public override void clientClone(ModPlayer clientClone)
        {
            PlayerAssist clone = clientClone as PlayerAssist;

            clone.BossTrophies   = BossTrophies;
            clone.AllBossRecords = AllBossRecords;
        }
Example #25
0
        public override void clientClone(ModPlayer clientClone)
        {
            TLPlayer clone = (TLPlayer)clientClone;

            clone.Level      = Level;
            clone.Experience = Experience;
        }
Example #26
0
        private void PlayPauseMod_Click(object sender, EventArgs e)
        {
            if (m_Playing)
            {
                m_Playing          = false;
                m_WasPlaying       = true;
                PlayPauseMod.Image = global::SharpMikTester.Properties.Resources.PlayHS;
                ModPlayer.Player_TogglePause();
            }
            else
            {
                m_Playing          = true;
                PlayPauseMod.Image = global::SharpMikTester.Properties.Resources.PauseHS;

                if (m_WasPlaying)
                {
                    ModPlayer.Player_TogglePause();
                }
                else
                {
                    m_Player.Play(m_Mod);

                    StopMod.Enabled = true;

                    OpenMod.Enabled = false;
                }
            }
        }
Example #27
0
        protected int speed_to_finetune(uint speed, int sample)
        {
            int ctmp = 0, tmp, note = 1, finetune = 0;

            speed >>= 1;

            while ((tmp = (int)(ModPlayer.getfrequency(m_Module.flags, (uint)ModPlayer.getlinearperiod((ushort)(note << 1), (uint)0)))) < speed)
            {
                ctmp = tmp;
                note++;
            }

            if (tmp != speed)
            {
                if ((tmp - speed) < (speed - ctmp))
                {
                    while (tmp > speed)
                    {
                        tmp = (int)(ModPlayer.getfrequency(m_Module.flags, (uint)ModPlayer.getlinearperiod((ushort)(note << 1), (uint)(--finetune))));
                    }
                }
                else
                {
                    note--;
                    while (ctmp < speed)
                    {
                        ctmp = (int)(ModPlayer.getfrequency(m_Module.flags, (uint)ModPlayer.getlinearperiod((ushort)(note << 1), (uint)(++finetune))));
                    }
                }
            }

            noteindex[sample] = note - 4 * SharpMikCommon.Octave;
            return(finetune);
        }
Example #28
0
 private static void TimeStateChanged(ModPlayer modPlayer, int duration, bool stopped)
 {
     new TimeStateChangedPacket
     {
         Duration = !stopped ? 0 : duration, Stopped = stopped
     }.Send();
 }
Example #29
0
        internal static void StopTime(ModPlayer modPlayer, int duration)
        {
            MainTime      = Main.time;
            MainRainTimer = Main.rainTime;

            for (int i = 0; i < Main.npc.Length; i++)
            {
                NPC npc = Main.npc[i];

                if (!npc.active || IsNPCImmune(npc))
                {
                    continue;
                }

                RegisterStoppedNPC(npc);
            }


            for (int i = 0; i < Main.projectile.Length - 1; i++)
            {
                Projectile projectile = Main.projectile[i];

                if (TBAMod.Instance.TimeStopImmuneProjectiles.Contains(projectile.type))
                {
                    continue;
                }

                if (!projectile.active || projectile.modProjectile is IProjectileHasImmunityToTimeStop phitts && phitts.IsNativelyImmuneToTimeStop())
                {
                    continue;
                }

                ModProjectile modProjectile = projectile.modProjectile as Stand;

                if (modProjectile != null && modProjectile.projectile.owner == modPlayer.player.whoAmI)
                {
                    continue;
                }

                RegisterStoppedProjectile(projectile);
            }


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

                if (!item.active || IsImmune(item))
                {
                    continue;
                }

                RegisterStoppedItem(item);
            }


            TimeStopper    = modPlayer;
            TimeStoppedFor = duration;
        }
Example #30
0
        public override void OnHitNPC(NPC target, int damage, float knockback, bool crit)
        {
            knockback         = 5f;
            target.stepSpeed -= 3;
            ModPlayer player = mod.GetPlayer("MainPlayer");

            player.player.AddBuff(mod.BuffType("StandAsideCD"), 300);
        }
	public Notifier(ModPlayer.Achievement ac) {
		this.ac = ac;
	}
Example #32
0
 internal static bool WriteCustomData(ModPlayer modPlayer, BinaryWriter writer)
 {
     byte[] data;
     using (MemoryStream stream = new MemoryStream())
     {
         using (BinaryWriter customWriter = new BinaryWriter(stream))
         {
             modPlayer.SaveCustomData(customWriter);
             customWriter.Flush();
             data = stream.ToArray();
         }
     }
     if (data.Length > 0)
     {
         writer.Write(modPlayer.mod.Name);
         writer.Write(modPlayer.Name);
         writer.Write((ushort)data.Length);
         writer.Write(data);
         return true;
     }
     return false;
 }