Namespace ScriptVersion2 Partial Class ScriptComparer ' -------------------------------------------------------------------------------------------------------------------------- ' Contains the constructs. ' -------------------------------------------------------------------------------------------------------------------------- Private Shared Function DoPokemon(ByVal subClass As String) As Object Dim command As String = GetSubClassArgumentPair(subClass).Command Dim argument As String = GetSubClassArgumentPair(subClass).Argument Select Case command.ToLower() Case "id", "number" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Number Case "data" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).GetSaveData().Replace(",", "§").Replace("[", "«").Replace("]", "»") Case "level" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Level Case "hasfullhp" Dim index As Integer = int(argument.GetSplit(0)) If Core.Player.Pokemons(index).HP = Core.Player.Pokemons(index).MaxHP Then Return ReturnBoolean(True) Else Return ReturnBoolean(False) End If Case "hp" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).HP Case "atk" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Attack Case "def" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Defense Case "spatk" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).SpAttack Case "spdef" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).SpDefense Case "speed" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Speed Case "maxhp" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).MaxHP Case "isegg" Dim index As Integer = int(argument.GetSplit(0)) Return ReturnBoolean(Core.Player.Pokemons(index).IsEgg()) Case "additionaldata" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).AdditionalData Case "nickname" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).NickName Case "hasnickname" Dim index As Integer = int(argument.GetSplit(0)) Return (Core.Player.Pokemons(index).NickName = "") Case "name" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).OriginalName Case "ot" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).OT Case "trainer" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).CatchTrainerName Case "itemid" Dim index As Integer = int(argument.GetSplit(0)) If Core.Player.Pokemons(index).Item Is Nothing Then Return 0 Else Return Core.Player.Pokemons(index).Item.ID End If Case "friendship" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Friendship.ToString() Case "itemname", "item" Dim index As Integer = int(argument.GetSplit(0)) If Core.Player.Pokemons(index).Item Is Nothing Then Return "" Else Return Core.Player.Pokemons(index).Item.Name End If Case "catchball" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).CatchBall.ID Case "catchmethod" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).CatchMethod Case "catchlocation" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).CatchLocation Case "hasattackinparty" Dim attackID As Integer = int(argument.GetSplit(0)) Dim i As Integer = 0 For Each p As Pokemon In Core.Player.Pokemons For Each a As BattleSystem.Attack In p.Attacks If a.ID = attackID Then Return i End If Next i += 1 Next Return "-1" Case "hasattack" Dim index As Integer = int(argument.GetSplit(0)) Dim attackID As Integer = int(argument.GetSplit(1)) Dim has As Boolean = False For Each a As BattleSystem.Attack In Core.Player.Pokemons(index).Attacks If a.ID = attackID Then has = True Exit For End If Next Return ReturnBoolean(has) Case "countattacks" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Attacks.Count Case "attackname" Dim pokeIndex As Integer = int(argument.GetSplit(0)) Dim moveIndex As Integer = int(argument.GetSplit(1)) Return Core.Player.Pokemons(pokeIndex).Attacks(moveIndex).Name Case "isshiny" Dim index As Integer = int(argument.GetSplit(0)) Return ReturnBoolean(Core.Player.Pokemons(index).IsShiny) Case "nature" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Nature.ToString() Case "ownpokemon" Dim index As Integer = int(argument.GetSplit(0)) If Core.Player.Pokemons(index).OT = Core.Player.OT Then Return ReturnBoolean(True) Else Return ReturnBoolean(False) End If Case "islegendary" Dim index As Integer = int(argument.GetSplit(0)) Return ReturnBoolean(Pokemon.Legendaries.Contains(Core.Player.Pokemons(index).Number)) Case "freeplaceinparty" Return ReturnBoolean((Core.Player.Pokemons.Count < 6)) Case "nopokemon" Return ReturnBoolean((Core.Player.Pokemons.Count = 0)) Case "count" Return Core.Player.Pokemons.Count Case "countbattle" Dim c As Integer = 0 For Each p As Pokemon In Core.Player.Pokemons If p.IsEgg() = False And p.HP > 0 And p.Status <> Pokemon.StatusProblems.Fainted Then c += 1 End If Next Return c Case "has" Dim has As Boolean = False Dim PokemonID As Integer = int(argument.GetSplit(0)) For Each p As Pokemon In Core.Player.Pokemons If p.Number = PokemonID Then has = True Exit For End If Next Return ReturnBoolean(has) Case "selected" Return PartyScreen.Selected Case "selectedmove" Return ChooseAttackScreen.Selected Case "hasegg" Dim hasEgg As Boolean = False For Each p As Pokemon In Core.Player.Pokemons If p.IsEgg = True Then hasEgg = True Exit For End If Next Return ReturnBoolean(hasEgg) Case "maxpartylevel" Dim maxLevel As Integer = 0 For Each p As Pokemon In Core.Player.Pokemons If maxLevel < p.Level Then maxLevel = p.Level End If Next Return maxLevel Case "evhp" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).EVHP Case "evatk" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).EVAttack Case "evdef" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).EVDefense Case "evspatk" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).EVSpAttack Case "evspdef" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).EVSpDefense Case "evspeed" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).EVSpeed Case "ivhp" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).IVHP Case "ivatk" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).IVAttack Case "ivdef" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).IVDefense Case "ivspatk" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).IVSpAttack Case "ivspdef" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).IVSpDefense Case "ivspeed" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).IVSpeed Case "itemdata" Dim data As String = "" Dim index As Integer = int(argument) If Not Core.Player.Pokemons(index).Item Is Nothing Then data = Core.Player.Pokemons(index).Item.AdditionalData End If Return data Case "counthalloffame" Return HallOfFameScreen.GetHallOfFameCount() Case "learnedtutormove" Return ReturnBoolean(TeachMovesScreen.LearnedMove) Case "totalexp" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).Experience Case "needexp" Dim index As Integer = int(argument.GetSplit(0)) Dim p As Pokemon = Core.Player.Pokemons(index) Return p.NeedExperience(p.Level + 1) - p.Experience Case "currentexp" Dim index As Integer = int(argument.GetSplit(0)) Dim p As Pokemon = Core.Player.Pokemons(index) Return p.Experience - p.NeedExperience(p.Level) Case "generatefrontier" Dim level As Integer = int(argument.GetSplit(0)) level = level.Clamp(1, CInt(GameModeManager.GetGameRuleValue("MaxLevel", "100"))) Dim pokemon_class As Integer = int(argument.GetSplit(1)) Dim IDPreset As List(Of Integer) = Nothing If argument.CountSeperators(",") > 1 Then For i = 2 To argument.CountSeperators(",") Dim s As String = argument.GetSplit(i) If s.Contains("-") = True Then Dim min As Integer = int(s.Remove(s.IndexOf("-"))) Dim max As Integer = int(s.Remove(0, s.IndexOf("-") + 1)) For c = min To max If IDPreset Is Nothing Then IDPreset = {c}.ToList() Else IDPreset.Add(c) End If Next Else If IDPreset Is Nothing Then IDPreset = {int(argument.GetSplit(i))}.ToList() Else IDPreset.Add(int(argument.GetSplit(i))) End If End If Next End If Return FrontierSpawner.GetPokemon(level, pokemon_class, IDPreset).GetSaveData().Replace(",", "§").Replace("[", "«").Replace("]", "»") Case "spawnwild" Return Spawner.GetPokemon(Screen.Level.LevelFile, CType(int(argument), Spawner.EncounterMethods)).GetSaveData().Replace(",", "§").Replace("[", "«").Replace("]", "»") Case "spawn" Dim ID As Integer = int(argument.GetSplit(0)) Dim level As Integer = int(argument.GetSplit(1)) Dim p As Pokemon = Pokemon.GetPokemonByID(ID) p.Generate(level, True) Return p.GetSaveData().Replace(",", "§").Replace("[", "«").Replace("]", "»") Case "otmatch" ' Arguments: has: returns boolean, ID: returns Pokédex number, Name: returns name, maxhits: returns the maximum number of equal chars. Dim maxDigits As Integer = 0 Dim maxName As String = "[EMPTY]" Dim maxID As Integer = 0 Dim checkOT As String = argument.GetSplit(0) While checkOT.Length < 5 checkOT = "0" & checkOT End While Dim d As String = checkOT Dim checkDigits() = {d(0), d(1), d(2), d(3), d(4)} Dim ps As List(Of Pokemon) = StorageSystemScreen.GetAllBoxPokemon() For Each p As Pokemon In Core.Player.Pokemons ps.Add(p) Next ps = ps.ToArray().Randomize().ToList() For Each p As Pokemon In ps Dim currentCount As Integer = 0 Dim pOT As String = p.OT While pOT.Length < 5 pOT = "0" & pOT End While Dim pDigits() As String = {pOT(0), pOT(1), pOT(2), pOT(3), pOT(4)} For i = 4 To 0 Step -1 If pDigits(i) = checkDigits(i) Then currentCount += 1 Else Exit For End If Next If currentCount > maxDigits Then maxDigits = currentCount maxName = p.GetDisplayName() maxID = p.Number End If Next Dim arg As String = argument.Split(CChar(","))(1) Select Case arg.ToLower() Case "has" If maxDigits > 0 Then Return ReturnBoolean(True) Else Return ReturnBoolean(False) End If Case "id", "number" Return maxID Case "name" Return maxName Case "maxhits" Return maxDigits End Select Return "INVALID ARGUMENT" Case "randomot" Dim n As String = Core.Random.Next(0, 100000).ToString() While n.Length < 5 n = "0" & n End While Return n Case "status" Dim index As Integer = int(argument) Return Core.Player.Pokemons(index).Status.ToString() Case "canevolve" Dim args() As String = argument.Split(CChar(",")) Dim triggerStr As String = "level" If args.Count > 1 Then triggerStr = args(1) End If Dim trigger As EvolutionCondition.EvolutionTrigger = EvolutionCondition.EvolutionTrigger.LevelUp Dim evolutionArg As String = "" If args.Count > 2 Then evolutionArg = args(2) End If Dim p As Pokemon = Core.Player.Pokemons(int(args(0))) Select Case triggerStr Case "level", "levelup", "level up", "level-up" trigger = EvolutionCondition.EvolutionTrigger.LevelUp Case "none" trigger = EvolutionCondition.EvolutionTrigger.None Case "itemuse", "item use", "item", "item-use" trigger = EvolutionCondition.EvolutionTrigger.ItemUse Case "trade", "trading" trigger = EvolutionCondition.EvolutionTrigger.Trading End Select Return ReturnBoolean(p.CanEvolve(trigger, evolutionArg)) Case "type1" Dim p As Pokemon = Core.Player.Pokemons(int(argument)) Return p.Type1.ToString() Case "type2" Dim p As Pokemon = Core.Player.Pokemons(int(argument)) Return p.Type2.ToString() Case "istype" Dim args() As String = argument.Split(CChar(",")) Dim p As Pokemon = Core.Player.Pokemons(int(args(0))) Dim checkType As String = args(1) Return ReturnBoolean(p.IsType(New Element(checkType).Type)) Case "displayname" Dim index As Integer = int(argument.GetSplit(0)) Return Core.Player.Pokemons(index).GetDisplayName() Case "menusprite" 'Dim index As Integer = int(argument.GetSplit(0)) ' 'Dim p As Pokemon = Core.Player.Pokemons(index) ' 'Dim pos As Vector2 = PokemonForms.GetMenuImagePosition(p) 'Dim size As Size = PokemonForms.GetMenuImageSize(p) ' 'Dim sheet As String = "GUI\PokemonMenu" 'If p.IsShiny = True Then 'sheet = "GUI\PokemonMenuShiny" 'End If ' 'Return sheet & "|" & CStr(pos.X * 32) & "|" & CStr(pos.Y * 32) & "|" & CStr(size.Width) & "|" & CStr(size.Height) Dim index As Integer = int(argument.GetSplit(0)) Dim p As Pokemon = Core.Player.Pokemons(index) Dim v As Vector2 = PokemonForms.GetMenuImagePosition(p) Dim s As Size = PokemonForms.GetMenuImageSize(p) Dim sheet As String = PokemonForms.GetSheetName(p) Dim shinypos As Integer = 0 If p.IsShiny = True Then shinypos = 512 End If Return "GUI\PokemonMenu\" & sheet & "|" & CStr(CInt(v.X) * 32 + shinypos) & "|" & CStr(CInt(v.Y) * 32) & "|" & CStr(s.Width) & "|" & CStr(s.Height) Case "getsteps" ' Dim index As Integer = int(argument.GetSplit(0)) If Core.Player.Pokemons.Count - 1 >= index Then Return Core.Player.Pokemons(index).EggSteps End If End Select Return DEFAULTNULL End Function End Class End Namespace