Esempio n. 1
0
 public static void GetComplexUnionData()
 {
     if (Main.netMode == 1)
     {
         ModPacket p = ServerSideCharacter2.Instance.GetPacket();
         p.Write((int)SSCMessageType.UnionInfoComplex);
         p.Send();
     }
 }
Esempio n. 2
0
        public override bool PreKill(double damage, int hitDirection, bool pvp, ref bool playSound, ref bool genGore, ref PlayerDeathReason damageSource)
        {
            if (heroLives > 0)
            {
                heroLives--;

                if (Main.netMode == NetmodeID.MultiplayerClient)
                {
                    ModPacket packet = mod.GetPacket();

                    packet.Write((byte)ExampleModMessageType.HeroLives);
                    packet.Write(player.whoAmI);
                    packet.Write(heroLives);

                    packet.Send();
                }

                if (heroLives > 0)
                {
                    player.statLife = player.statLifeMax2;
                    player.HealEffect(player.statLifeMax2);
                    player.immune     = true;
                    player.immuneTime = player.longInvince ? 180 : 120;

                    for (int k = 0; k < player.hurtCooldowns.Length; k++)
                    {
                        player.hurtCooldowns[k] = player.longInvince ? 180 : 120;
                    }

                    SoundEngine.PlaySound(SoundID.Item29, player.position);

                    reviveTime = 60;

                    return(false);
                }
            }

            if (healHurt > 0 && damage == 10.0 && hitDirection == 0 && damageSource.SourceOtherIndex == 8)
            {
                damageSource = PlayerDeathReason.ByCustomReason(" was dissolved by holy powers");
            }

            return(true);
        }
Esempio n. 3
0
        public override void OnEnterWorld(Player player)
        {
            BossLogUI.PageNum = -3;
            durationLastFight = hitsTakenLastFight = healthLossLastFight = -1;
            RecordTimers      = new List <int>();
            BrinkChecker      = new List <int>();
            MaxHealth         = new List <int>();
            DeathTracker      = new List <bool>();
            DodgeTimer        = new List <int>();
            AttackCounter     = new List <int>();

            foreach (BossInfo boss in BossChecklist.bossTracker.SortedBosses)
            {
                RecordTimers.Add(0);
                BrinkChecker.Add(0);
                MaxHealth.Add(0);
                DeathTracker.Add(false);
                DodgeTimer.Add(0);
                AttackCounter.Add(0);
            }

            int bossCount = BossChecklist.bossTracker.SortedBosses.Count;

            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                // Essentially to get "BossAssist.ServerCollectedRecords[player.whoAmI] = AllBossRecords;"
                ModPacket packet = mod.GetPacket();
                packet.Write((byte)PacketMessageType.SendRecordsToServer);
                for (int i = 0; i < bossCount; i++)
                {
                    BossStats stat = AllBossRecords[i].stat;
                    packet.Write(stat.kills);
                    packet.Write(stat.deaths);
                    packet.Write(stat.durationBest);
                    packet.Write(stat.durationPrev);
                    packet.Write(stat.hitsTakenBest);
                    packet.Write(stat.hitsTakenPrev);
                    packet.Write(stat.dodgeTimeBest);
                    packet.Write(stat.healthLossBest);
                    packet.Write(stat.healthLossPrev);
                }
                packet.Send();                 // To server
            }
        }
        public override void SyncPlayer(int toWho, int fromWho, bool newPlayer)
        {
            ModPacket packet = mod.GetPacket();

            packet.Write((byte)AlchemistNPC.AlchemistNPCMessageType.LifeAndManaSync);
            packet.Write((byte)player.whoAmI);
            packet.Write(LifeElixir);
            packet.Write(Fuaran);
            packet.Write(KeepBuffs);
            packet.Write(WellFed);
            packet.Write(BillIsDowned);
            packet.Write(BBP);
            packet.Write(SnatcherCounter);
            packet.Send(toWho, fromWho);
        }
Esempio n. 5
0
        public static void Send(byte type, int toWho = -1, int fromWho = -1, int i = 0, float f = 0f, float f2 = 0f, int i2 = 0, bool b = false, float f3 = 0f, float f4 = 0f, float f5 = 0f)
        {
            ModPacket packet = mod.GetPacket();

            packet.Write(type);
            packet.Write(i);
            packet.Write(f);
            packet.Write(f2);
            packet.Write(i2);
            packet.Write(b);
            packet.Write(f3);
            packet.Write(f4);
            packet.Write(f5);
            packet.Send(toWho, fromWho);
        }
Esempio n. 6
0
        public override void SyncPlayer(int toWho, int fromWho, bool newPlayer)
        {
            base.SyncPlayer(toWho, fromWho, newPlayer);

            ModPacket packet = Mod.GetPacket();

            packet.Write((byte)PacketType.PlayerSync);
            AddSyncToPacket(packet);
            packet.Send();
        }
        ///// <summary>
        ///// Player tells server that they are performing an ability
        ///// </summary>
        ///// <param name="mod"></param>
        ///// <param name="abilityID"></param>
        //public static void ClientAbility(Mod mod, int abilityID, int level = 1, double rand = 0)
        //{
        //    if (Main.netMode != 1) return;

        //    ModPacket packet = mod.GetPacket();
        //    packet.Write((byte)ExpModMessageType.ClientAbility);
        //    packet.Write(Main.LocalPlayer.whoAmI);
        //    packet.Write(abilityID);
        //    packet.Write(level);
        //    packet.Write(rand);
        //    packet.Send();
        //}

        /* ~~~~~~~~~~~~~~~~~~~~~ Packet Senders - Server ~~~~~~~~~~~~~~~~~~~~~ */

        /// <summary>
        /// Server giving a player debuff immunities
        /// </summary>
        /// <param name="player_index"></param>
        /// <param name="immunity_indecies"></param>
        /// <param name="duration_seconds"></param>
        public static void ServerDebuffImmunity(int player_index_source, int player_index_target, List <int> immunity_indecies, double duration_seconds)
        {
            if ((Main.netMode != 2) || (immunity_indecies.Count == 0))
            {
                return;
            }

            ModPacket packet = ExperienceAndClasses.mod.GetPacket();

            packet.Write((byte)ExpModMessageType.ServerDebuffImmunity);
            packet.Write(player_index_source);     //sender (int)
            packet.Write(duration_seconds);        //duration (double)
            packet.Write(immunity_indecies.Count); //number of immunities (int)
            foreach (int i in immunity_indecies)
            {
                packet.Write(i); //immunity indicies (int)
            }
            packet.Send(player_index_target);
        }
Esempio n. 8
0
 public static void SyncQE()
 {
     if (Main.netMode == NetmodeID.MultiplayerClient)
     {
         ModPacket packet = PortableStorage.Instance.GetPacket();
         packet.Write((byte)MessageType.SyncQE);
         TagIO.Write(PortableStorage.Instance.GetModWorld <PSWorld>().Save(), packet);
         packet.Send();
     }
 }
Esempio n. 9
0
        public static void ReceiveCraftRequest(BinaryReader reader, int sender)
        {
            int ent   = reader.ReadInt32();
            int count = reader.ReadInt32();

            if (Main.netMode != 2)
            {
                //Still need to read the data for exceptions to not be thrown
                for (int i = 0; i < count; i++)
                {
                    ItemIO.Receive(reader, true);
                }

                ItemIO.Receive(reader, true);
                return;
            }
            if (!TileEntity.ByID.ContainsKey(ent) || !(TileEntity.ByID[ent] is TEStorageHeart))
            {
                return;
            }
            TEStorageHeart heart      = (TEStorageHeart)TileEntity.ByID[ent];
            List <Item>    toWithdraw = new List <Item>();

            for (int k = 0; k < count; k++)
            {
                toWithdraw.Add(ItemIO.Receive(reader, true));
            }
            Item        result = ItemIO.Receive(reader, true);
            List <Item> items  = CraftingGUI.DoCraft(heart, toWithdraw, result);

            if (items.Count > 0)
            {
                ModPacket packet = MagicStorage.Instance.GetPacket();
                packet.Write((byte)MessageType.CraftResult);
                packet.Write(items.Count);
                foreach (Item item in items)
                {
                    ItemIO.Send(item, packet, true);
                }
                packet.Send(sender);
            }
            SendRefreshNetworkItems(ent);
        }
Esempio n. 10
0
 public static void SendStationSlotClick(int ent, Item item, int slot)
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = PrepareStationOperation(ent, 2);
         ItemIO.Send(item, packet, true);
         packet.Write((byte)slot);
         packet.Send();
     }
 }
Esempio n. 11
0
 public static void Write(int whoAmI, int level, bool force = false)
 {
     if (Main.netMode == NetmodeID.MultiplayerClient)
     {
         ModPacket packet = Ethereal.Instance.GetPacket();
         packet.Write((byte)Message.SyncLevel);
         packet.Write(whoAmI);
         packet.Write(level);
         packet.Send();
     }
     else if (force)
     {
         ModPacket packet = Ethereal.Instance.GetPacket();
         packet.Write((byte)Message.SyncLevel);
         packet.Write(whoAmI);
         packet.Write(level);
         packet.Send();
     }
 }
        public void NetSync(int whoAmI)
        {
            if (Main.netMode == NetmodeID.SinglePlayer)
            {
                return;
            }

            ModPacket packet = mod.GetPacket();

            packet.Write((byte)22); // New maso sync packet id
            packet.Write(whoAmI);

            foreach (EModeNPCBehaviour behaviour in EModeNpcBehaviours)
            {
                behaviour.NetSend(packet);
            }

            packet.Send();
        }
 public void SyncData()
 {
     if (Main.netMode == 1)
     {
         ModPacket packet = NetRouter.GetPacketTo(mod.GetTileEntity <TransferFilterTileEntity>(), mod);
         packet.Write(ID);
         packet.WriteItem(item);
         packet.Send();
     }
 }
Esempio n. 14
0
        /// <summary>
        /// Send a packet out with specified info.
        /// </summary>
        /// <param name="info">Information.</param>
        public void SendPacket(params object[] info)
        {
            ModPacket packet = ModContent.GetInstance <Erilipah>().GetPacket();

            packet.Write(ID);

            WritePacket(packet, info);

            packet.Send();
        }
Esempio n. 15
0
        void ReceiveAddDodgeChanceBuffPlayer(BinaryReader reader, int fromWho)
        {
            byte  playerID     = reader.ReadByte();
            float chance       = reader.ReadSingle();
            int   duraionTicks = reader.ReadInt32();

            Player player = Main.player[playerID];

            player.GetModPlayer <BuffPlayer>().AddDodgeChanceBuff(player, chance, duraionTicks, false);

            if (Main.netMode == NetmodeID.Server)
            {
                ModPacket packet = GetPacket((byte)PacketType.AddDodgeChanceBuffPlayer);
                packet.Write(playerID);
                packet.Write(chance);
                packet.Write(duraionTicks);
                packet.Send(-1, fromWho);
            }
        }
Esempio n. 16
0
        void ReceiveAddChilledBuffPlayer(BinaryReader reader, int fromWho)
        {
            int   playerID   = reader.ReadByte();
            float multiplier = reader.ReadSingle();
            int   time       = reader.ReadInt32();

            Player player = Main.player[playerID];

            player.GetModPlayer <BuffPlayer>().AddChilledBuff(player, multiplier, time, false);

            if (Main.netMode == NetmodeID.Server)
            {
                ModPacket packet = GetPacket((byte)PacketType.AddChilledBuffPlayer);
                packet.Write((byte)playerID);
                packet.Write(multiplier);
                packet.Write(time);
                packet.Send(-1, fromWho);
            }
        }
Esempio n. 17
0
        void ReceiveAddGreavesMoveSpeedBuffPlayer(BinaryReader reader, int fromWho)
        {
            byte  playerID     = reader.ReadByte();
            float speedBoost   = reader.ReadSingle();
            int   dutaionTicks = reader.ReadInt32();

            Player player = Main.player[playerID];

            player.GetModPlayer <BuffPlayer>().AddGreavesMoveSpeedBuff(player, speedBoost, dutaionTicks, false);

            if (Main.netMode == NetmodeID.Server)
            {
                ModPacket packet = GetPacket((byte)PacketType.AddGreavesMoveSpeedBuffPlayer);
                packet.Write(playerID);
                packet.Write(speedBoost);
                packet.Write(dutaionTicks);
                packet.Send(-1, fromWho);
            }
        }
 public override void NPCLoot()
 {
     if (SGAWorld.downedCaliburnGuardians < 3)
     {
         SGAWorld.downedCaliburnGuardians += 1;
         if (Main.netMode != 2)
         {
             SGAWorld.downedCaliburnGuardiansPoints += 1;
         }
     }
     if (Main.netMode != 2)
     {
         ModPacket packet = SGAmod.Instance.GetPacket();
         packet.Write((int)996);
         packet.Write(SGAWorld.downedCaliburnGuardiansPoints);
         packet.Send();
     }
     Achivements.SGAAchivements.UnlockAchivement("Caliburn", Main.LocalPlayer);
 }
Esempio n. 19
0
 public static void SendRefreshNetworkItems(int ent)
 {
     if (Main.netMode == NetmodeID.Server)
     {
         ModPacket packet = MagicStorageTwo.Instance.GetPacket();
         packet.Write((byte)MessageType.RefreshNetworkItems);
         //packet.Write(ent);
         packet.Send();
     }
 }
        private void SendClientMessage(ExtractorMessage clientMsg, short mud = 0)
        {
            if (Main.netMode != NetmodeID.MultiplayerClient)
            {
                return;
            }

            bool      AddMud = clientMsg == ExtractorMessage.SyncMud;
            ModPacket packet = GadgetBox.Instance.GetPacket(MessageType.ExtractorMessage, AddMud ? 7 : 5);

            packet.Write(ID);
            packet.Write((byte)clientMsg);
            if (AddMud)
            {
                packet.Write(mud);
            }

            packet.Send();
        }
Esempio n. 21
0
        public static void Send(Rectangle area)
        {
            ModPacket packet = ErgophobiaMod.Instance.GetPacket();

            packet.Write((int)area.X);
            packet.Write((int)area.Y);
            packet.Write((ushort)area.Width);
            packet.Write((ushort)area.Height);

            for (int i = area.Left; i < area.Right; i++)
            {
                for (int j = area.Top; j < area.Bottom; j++)
                {
                    TileStreamLibraries.ToStream(packet, Main.tile[i, j], true, true, false);
                }
            }

            packet.Send();
        }
Esempio n. 22
0
 public void SendAmmoShaderPacket()
 {
     if (Main.netMode == NetmodeID.MultiplayerClient)
     {
         ModPacket pak = GetPacket();
         pak.Write((byte)PacketType.AMMO);
         ShaderID.Write(pak, ammoShaders[Main.myPlayer]);
         pak.Send();
     }
 }
Esempio n. 23
0
        public static void SerializeAndSend(
            Mod mod,
            float newVelocityX,
            float newVelocityY,
            int npcIndex)
        {
            if (Main.netMode != NetmodeID.SinglePlayer)
            {
                ModPacket newPacket = mod.GetPacket();

                newPacket.Write((int)mPacketMessageType);

                newPacket.Write(newVelocityX);
                newPacket.Write(newVelocityY);
                newPacket.Write(npcIndex);

                newPacket.Send();
            }
        }
Esempio n. 24
0
        private void HandleSlotChange(int owner, SlotKind kind, int slot)
        {
            if (Main.netMode == 2)
            {
                ModPacket packet = NetRouter.GetPacketTo(this, mod);
                packet.Write(owner);
                packet.Write((byte)kind);
                packet.Write(slot);

                Item[] targetInventory = GetInventoryFromKind(owner, kind);
                ItemIO.Send(targetInventory[slot], packet, true, true);

                packet.Send();
            }
            else if (Main.netMode == 0)
            {
                Recipe.FindRecipes();
            }
        }
        public static void SerializeAndSend(
            Mod mod,
            int playerId,
            bool overrideSpecialVariable,
            int playerModSpecialVariable)
        {
            if (Main.netMode != NetmodeID.SinglePlayer)
            {
                ModPacket newPacket = mod.GetPacket();

                newPacket.Write((int)mPacketMessageType);

                newPacket.Write(playerId);
                newPacket.Write(overrideSpecialVariable);
                newPacket.Write(playerModSpecialVariable);

                newPacket.Send();
            }
        }
Esempio n. 26
0
        public override void AI()
        {
            if (npc.ai[3] < 1)
            {
                npc.velocity.X = npc.ai[0];
                npc.velocity.Y = npc.ai[1];
                npc.damage     = (int)npc.ai[2];
                npc.ai[3]      = 1;
                if (Main.netMode != 0)
                {
                    ModPacket packet = mod.GetPacket();
                    packet.Write((byte)JoostModMessageType.NPCpos);
                    packet.Write(npc.whoAmI);
                    packet.WriteVector2(npc.position);
                    packet.WriteVector2(npc.velocity);
                    ModPacket netMessage = packet;
                    netMessage.Send();
                }
                npc.netUpdate = true;
            }
            Dust.NewDustDirect(npc.position, npc.width, npc.height, DustID.Fire, -npc.velocity.X / 5, -npc.velocity.Y / 5, 100, default(Color), 2f + (Main.rand.Next(20) * 0.1f)).noGravity = true;
            npc.ai[3]++;
            bool colliding = (npc.ai[3] > 2 && (npc.oldVelocity.X != 0 && npc.velocity.X == 0) || (npc.oldVelocity.Y != 0 && npc.velocity.Y == 0));

            for (int i = 0; i < Main.maxNPCs && !colliding; i++)
            {
                NPC target = Main.npc[i];
                if (!target.friendly && !target.dontTakeDamage && npc.Hitbox.Intersects(target.Hitbox))
                {
                    colliding = true;
                    break;
                }
            }
            if (npc.ai[3] > 300 || colliding)
            {
                npc.life = 0;
                npc.HitEffect(0, 0);
                npc.checkDead();
            }
            npc.rotation  = (float)Math.Atan2(npc.velocity.Y, npc.velocity.X) + 1.57f;
            npc.lifeRegen = 0;
        }
Esempio n. 27
0
        private void Box_OnClick(UIMouseEvent evt, UIElement listeningElement)
        {
            if (Main.keyState.IsKeyDown(Keys.LeftAlt) || Main.keyState.IsKeyDown(Keys.RightAlt))
            {
                boss.hidden = !boss.hidden;
                if (boss.hidden)
                {
                    BossChecklistWorld.HiddenBosses.Add(boss.name);
                }
                else
                {
                    BossChecklistWorld.HiddenBosses.Remove(boss.name);
                }
                BossChecklist.instance.bossChecklistUI.UpdateCheckboxes();
                if (Main.netMode == NetmodeID.MultiplayerClient)
                {
                    ModPacket packet = BossChecklist.instance.GetPacket();
                    packet.Write((byte)BossChecklistMessageType.RequestHideBoss);
                    packet.Write(boss.name);
                    packet.Write(boss.hidden);
                    packet.Send();
                }
                return;
            }

            UIBossCheckbox clicked = listeningElement as UIBossCheckbox;

            foreach (var item in BossChecklist.instance.bossChecklistUI.checklistList._items)
            {
                UIBossCheckbox box = (item as UIBossCheckbox);
                if (box != clicked)
                {
                    box.expanded      = false;
                    box.Height.Pixels = 15;
                    box.Recalculate();
                }
            }

            expanded      = !expanded;
            Height.Pixels = expanded ? 15 + descriptionHeight : 15;
            Recalculate();
        }
Esempio n. 28
0
        public static void CatchNPC(int npcIndex, int who = -1, bool fromMelee = true)
        {
            NPC npc = Main.npc[npcIndex];

            if (!npc.active)
            {
                return;
            }
            if (Main.netMode == NetmodeID.MultiplayerClient)
            {
                ModPacket packet = GadgetBox.Instance.GetPacket(MessageType.CatchNPC, 2);
                packet.Write((byte)npcIndex);
                packet.Write(fromMelee);
                packet.Send();
                npc.active = false;
                return;
            }
            if (npc.catchItem > 0)
            {
                npc.active = false;
                NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npcIndex);
                if (npc.SpawnedFromStatue)
                {
                    Vector2 position = npc.Center - new Vector2(20);
                    Utils.PoofOfSmoke(position);
                    if (Main.netMode == NetmodeID.Server)
                    {
                        NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npcIndex);
                        NetMessage.SendData(MessageID.PoofOfSmoke, -1, -1, null, (int)position.X, position.Y);
                    }
                    return;
                }
                if (fromMelee)
                {
                    Item.NewItem(Main.player[who].Center, 0, 0, npc.catchItem, 1, false, 0, true);
                }
                else
                {
                    Item.NewItem(npc.Center, 0, 0, npc.catchItem);
                }
            }
        }
Esempio n. 29
0
        public override void RightClick(int i, int j)
        {
            Point16 origin  = GetOrigin(i, j);
            Point16 topLeft = origin - tileObjectData.Origin;

            if (Main.netMode == 0)
            {
                Wiring.TripWire(topLeft.X, topLeft.Y, 2, 2);
            }
            else
            {
                ModPacket packet = NetRouter.GetPacketTo(this, mod);
                packet.Write(topLeft.X);
                packet.Write(topLeft.Y);
                packet.Send();
            }
            mod.GetModWorld <ButtonDelayWorld>().setPoint(topLeft);

            Main.PlaySound(SoundID.MenuTick);
        }
Esempio n. 30
0
        public static void SendGuardianItemUseUpdate(int GuardianWhoAmID, int ToWho = -1, int FromWho = -1)
        {
            if (!MultiplayerActive || Main.netMode == 0 || !MainMod.ActiveGuardians.ContainsKey(GuardianWhoAmID))
            {
                return;
            }
            ModPacket     packet          = StartNewMessage(MessageIDs.GuardianItemUseUpdate);
            TerraGuardian tg              = MainMod.ActiveGuardians[GuardianWhoAmID];
            BitsByte      ActionPress     = new BitsByte(tg.Action, tg.OffHandAction);
            BitsByte      LastActionPress = new BitsByte(tg.LastAction, tg.LastOffHandAction);
            Vector2       MousePosition   = tg.AimDirection;

            packet.Write(GuardianWhoAmID);
            packet.Write(ActionPress);
            packet.Write(LastActionPress);
            packet.WriteVector2(MousePosition);
            packet.Write(tg.SelectedItem);
            packet.Write(tg.SelectedOffhand);
            packet.Send(ToWho, FromWho);
        }