public ModPacket GetPacket(TerramonMod mod)
        {
            var packet = mod.GetPacket();

            packet.Write(PacketName);
            return(packet);
        }
예제 #2
0
        /// <summary>
        /// Returns the BaseMove learned at the specified level. Don't use to get moves for a level 1, instead use BaseMove.DefaultMoves().
        /// </summary>
        /// <param name="t">The ParentPokemon type</param>
        /// <param name="targetlevel">The query level to search the database for</param>
        /// <returns></returns>

        public static BaseMove LearnAt(ParentPokemon t, int targetlevel)
        {
            string match = t.Name;

            foreach (MoveDb pokemon in moveDb) // Loop through MoveDb
            {
                if (pokemon.Name == match)
                {
                    foreach (Dictionary <string, long> move in pokemon.LearnAtLevel)
                    {
                        foreach (string key in move.Keys)
                        {
                            if (move[key] == targetlevel)
                            {
                                BaseMove type = TerramonMod.GetMove(key);
                                if (type == null)
                                {
                                    return(null);
                                }
                                return(type);
                            }
                        }
                    }
                }
            }
            return(null);
        }
예제 #3
0
        public void Send(TerramonMod mod, int id)
        {
            var p = GetPacket(mod);

            p.Write(id);
            p.Send();
        }
        public void Send(TerramonMod mod, BaseMove move)
        {
            var p = GetPacket(mod);

            p.Write(move.GetType().Name);
            p.Send();
        }
예제 #5
0
        public void Send(TerramonMod mod, string mon)
        {
            var packet = GetPacket(mod);

            packet.Write(mon);
            packet.Send(256);
        }
예제 #6
0
        public void Send(TerramonMod mod, BattleState state, Player battleWith)
        {
            var p = GetPacket(mod);

            p.Write((int)state);
            p.Write(battleWith.whoAmI);
            p.Send();
        }
        public void Send(TerramonMod mod, int npcID, int projID)
        {
            var p = GetPacket(mod);

            p.Write(npcID);
            p.Write(projID);
            p.Send();
        }
        public override void Update(GameTime gameTime)
        {
            // Don't delete this or the UIElements attached to this UIState will cease to function.
            base.Update(gameTime);
            if (partyslot1.Item.IsAir)
            {
                PokemonGoesHere.SetText("Place a Pokémon in the first slot.");
                mainPanel.RemoveChild(partyslot2);
            }
            else
            {
                if (partyslot1.Item.modItem is BaseCaughtClass pokeball)
                {
                    var mon = TerramonMod.GetPokemon(pokeball.CapturedPokemon);
                    if (mon != null && mon.CanEvolve)
                    {
                        if (mon.EvolveItem == EvolveItem.RareCandy)
                        {
                            //Set preference to RareCandy
                            partyslot2.ValidItemFunc = item => item.IsAir || item.modItem is RareCandy;

                            PokemonGoesHere.SetText($"Place {mon.EvolveCost} Rare Candies in the second slot.");
                            mainPanel.Append(partyslot2);
                            if (!partyslot2.Item.IsAir && partyslot2.Item.modItem is RareCandy && partyslot2.Item.stack == mon.EvolveCost)
                            {
                                PokemonGoesHere.SetText("Great! Press the evolve button!");
                                mainPanel.Append(SaveButton);
                            }
                            else
                            {
                                mainPanel.RemoveChild(SaveButton);
                            }
                        }
                        else if (mon.EvolveItem == EvolveItem.LinkCable)
                        {
                            //Set preference to LinkCable
                            partyslot2.ValidItemFunc = item => item.IsAir || item.modItem is LinkCable;

                            PokemonGoesHere.SetText($"Place {mon.EvolveCost} Link Cable in the second slot.");
                            mainPanel.Append(partyslot2);
                            if (!partyslot2.Item.IsAir && partyslot2.Item.modItem is LinkCable && partyslot2.Item.stack == mon.EvolveCost)
                            {
                                PokemonGoesHere.SetText("Great! Press the evolve button!");
                                mainPanel.Append(SaveButton);
                            }
                            else
                            {
                                mainPanel.RemoveChild(SaveButton);
                            }
                        }
                    }
                    else
                    {
                        PokemonGoesHere.SetText("This Pokémon cannot evolve!");
                    }
                }
            }
        }
예제 #9
0
        public void Send(TerramonMod mod, BattleState state, PokemonData data, int projID)
        {
            var p = GetPacket(mod);

            p.Write((int)state);
            p.Write(data);
            p.Write(projID);
            p.Send();
        }
예제 #10
0
 public override void Action(CommandCaller caller, string input, string[] args)
 {
     if (args.Length == 0)
     {
         TerramonMod terramonMod = ModContent.GetInstance <TerramonMod>();
         terramonMod._battle.SetState(BattleMode.UI = new BattleUI());
         terramonMod.summaryUIInterface.SetState(terramonMod.summaryUI = new AnimatorUI());
         //Process.Start("https://terrariamods.gamepedia.com/Terramon");
     }
 }
예제 #11
0
        public override void UpdateInventory(Player player)
        {
            currentWaitTime++;
            if (currentWaitTime < WaitTime * 60)
            {
                return;
            }

            if (PokemonName == null || PokemonName == string.Empty)
            {
                item.TurnToAir();//This is invalid item
                return;
            }

            ParentPokemon hatchedPokemon = TerramonMod.GetPokemon(PokemonName);
            string        pokemonName    = hatchedPokemon?.GetType().Name;

            if (player.whoAmI != Main.myPlayer)
            {
                return;
            }

            switch (Main.netMode)
            {
            case NetmodeID.MultiplayerClient:
            {
                var packet = new BaseCatchPacket();
                packet.Send((TerramonMod)mod, pokemonName, pokemonName, player.getRect(),
                            ItemType <PokeballCaught>());
                break;
            }

            case NetmodeID.Server:
            {
                BaseCaughtClass.writeDetour(pokemonName, pokemonName,
                                            GetSmallSpritePath(pokemonName), 1, "", false); //This force server to write data when SetDefault() was called
                Item.NewItem(player.position, ItemType <PokeballCaught>());                 // Within this call SetDefault was called
                break;
            }

            default:
            {
                int             pokeballIndex = Item.NewItem(player.position, ItemType <PokeballCaught>());
                BaseCaughtClass pokeballItem  = Main.item[pokeballIndex].modItem as BaseCaughtClass;
                pokeballItem.PokemonName     = pokeballItem.CapturedPokemon = pokemonName;
                pokeballItem.SmallSpritePath = GetSmallSpritePath(pokemonName);
                break;
            }
            }

            Main.NewText(player.name + " the " + pokemonName + " Egg has hatched!", Color.Orange);
            player.ConsumeItem(item.type);
            currentWaitTime = 0;
        }
예제 #12
0
        public void Send(TerramonMod mod, TerramonPlayer pl)
        {
            if (Main.netMode == NetmodeID.Server)
            {
                return;
            }
            var p = GetPacket(mod);

            p.Write(pl.ActivePartySlot);
            p.Send();
        }
        public void Send(TerramonMod mod, TerramonPlayer pl, int target = -1)
        {
            if (Main.netMode == NetmodeID.Server)
            {
                return;
            }
            var p = GetPacket(mod);

            p.Write(pl.Save());
            p.Send();
        }
예제 #14
0
        public override void Initialize()
        {
            InitializePokeballs();
            //Initialise active pets bools
            var list = TerramonMod.GetPokemonsNames();

            ActivePet = new Dictionary <string, bool>();
            foreach (var it in list)
            {
                ActivePet.Add(it, false);
            }
        }
        private void EvolveButtonClicked(UIMouseEvent evt, UIElement listeningElement)
        {
            int whicheverballtype = TerramonMod.PokeballFactory.GetPokeballType(partyslot1.Item.modItem);

            // stuff break
            if (partyslot1.Item.modItem is BaseCaughtClass pokeball)
            {
                var mon = TerramonMod.GetPokemon(pokeball.CapturedPokemon);
                if (mon == null)
                {
                    Main.NewText("This Pokémon cannot evolve!");
                    return;
                }

                var evolved = TerramonMod.GetPokemon(mon.EvolveTo.Name);
                if (evolved == null)
                {
                    Main.NewText("This Pokémon cannot evolve!");
                    return;
                }

                if (Main.netMode == NetmodeID.MultiplayerClient)
                {
                    BaseCatchPacket packet = new BaseCatchPacket();
                    packet.Send(TerramonMod.Instance, evolved.GetType().Name, evolved.GetType().Name, Main.LocalPlayer.getRect(), whicheverballtype);
                }
                else
                {
                    int index = Item.NewItem(Main.LocalPlayer.getRect(), whicheverballtype);
                    if (index >= 400)
                    {
                        return;
                    }
                    if (Main.item[index].modItem is BaseCaughtClass item)
                    {
                        item.PokemonName     = evolved.GetType().Name;
                        item.CapturedPokemon = evolved.GetType().Name;
                    }
                }
            }

            Visible = false;
            partyslot1.Item.TurnToAir();
            partyslot2.Item.TurnToAir();
            mainPanel.RemoveChild(SaveButton);
            Main.LocalPlayer.talkNPC = 0;
        }
        public override bool PreDrawInInventory(SpriteBatch spriteBatch, Vector2 position, Rectangle frame, Color drawColor, Color itemColor, Vector2 origin, float scale)
        {
            if (SmallSpritePath == null)
            {
                var mon = TerramonMod.GetPokemon(CapturedPokemon);
                if (mon == null)
                {
                    return(true);
                }
                SmallSpritePath = mon.IconName;
            }

            Texture2D pokemonTexture = ModContent.GetTexture(SmallSpritePath);
            Texture2D itemTexture    = Main.itemTexture[item.type];

            spriteBatch.Draw(itemTexture, position, frame, drawColor, 0f, origin, scale, SpriteEffects.None, 0);
            spriteBatch.Draw(pokemonTexture, position + itemTexture.Size() * Main.inventoryScale - new Vector2(4, 4), pokemonTexture.Frame(), drawColor, 0f, pokemonTexture.Size() / 2f, Main.inventoryScale, SpriteEffects.None, 0);
            return(false);
        }
 public void Send(TerramonMod mod, string type, string name, Rectangle rect, int pokeType)
 {
     try
     {
         var packet = GetPacket(mod);
         packet.Write(type);
         packet.Write(name);
         //packet.Write("v2");
         packet.Write(rect.X);
         packet.Write(rect.Y);
         packet.Write(rect.Width);
         packet.Write(rect.Height);
         packet.Write(pokeType);
         packet.Send(256);
     }
     catch (Exception e)
     {
         mod.Logger.ErrorFormat("Please report this stacktrace to Terramon devs:\n\n{0}\n\n{1}", e.Message, e.StackTrace);
     }
 }
예제 #18
0
 public void Send(TerramonMod mod)
 {
     GetPacket(mod).Send();
 }