850 lines
41 KiB
VB.net
850 lines
41 KiB
VB.net
Namespace ScriptVersion2
|
|
|
|
Partial Class ScriptCommander
|
|
|
|
' --------------------------------------------------------------------------------------------------------------------------
|
|
' Contains the @pokemon commands.
|
|
' --------------------------------------------------------------------------------------------------------------------------
|
|
|
|
Private Shared Sub DoPokemon(ByVal subClass As String)
|
|
Dim command As String = ScriptComparer.GetSubClassArgumentPair(subClass).Command
|
|
Dim argument As String = ScriptComparer.GetSubClassArgumentPair(subClass).Argument
|
|
|
|
Select Case command.ToLower()
|
|
Case "cry"
|
|
Dim PokemonID As Integer = int(argument)
|
|
|
|
Dim p As Pokemon = Pokemon.GetPokemonByID(PokemonID)
|
|
p.PlayCry()
|
|
Case "remove"
|
|
Dim index As Integer = int(argument)
|
|
If Core.Player.Pokemons.Count - 1 >= index Then
|
|
Logger.Debug("Remove Pokémon (" & Core.Player.Pokemons(index).GetDisplayName() & ") at index " & index)
|
|
Core.Player.Pokemons.RemoveAt(index)
|
|
End If
|
|
Case "add"
|
|
' PokemonID,Level,Method,Ball,Location,IsEgg,TrainerName,HeldItem
|
|
|
|
If argument.StartsWith("{") = True Or argument.Remove(0, 1).StartsWith(",{") = True Then
|
|
Dim insertIndex As Integer = Core.Player.Pokemons.Count
|
|
If argument.Remove(0, 1).StartsWith(",{") = True Then
|
|
insertIndex = int(argument.GetSplit(0))
|
|
End If
|
|
|
|
argument = argument.Remove(0, argument.IndexOf("{"))
|
|
|
|
Dim p As Pokemon = Pokemon.GetPokemonByData(argument.Replace("§", ",").Replace("«", "[").Replace("»", "]"))
|
|
Core.Player.Pokemons.Insert(insertIndex, p)
|
|
|
|
Dim pokedexType As Integer = 2
|
|
If p.IsShiny = True Then
|
|
pokedexType = 3
|
|
End If
|
|
|
|
If p.IsEgg() = False Then
|
|
Core.Player.PokedexData = Pokedex.ChangeEntry(Core.Player.PokedexData, p.Number, pokedexType)
|
|
End If
|
|
Else
|
|
Dim commas As Integer = 0
|
|
For Each c As Char In argument
|
|
If c = "," Then
|
|
commas += 1
|
|
End If
|
|
Next
|
|
|
|
Dim PokemonID As Integer = int(argument.GetSplit(0))
|
|
Dim Level As Integer = int(argument.GetSplit(1))
|
|
|
|
Dim catchMethod As String = "random reason"
|
|
If commas > 1 Then
|
|
catchMethod = argument.GetSplit(2)
|
|
End If
|
|
|
|
Dim catchBall As Item = Item.GetItemByID(1)
|
|
If commas > 2 Then
|
|
catchBall = Item.GetItemByID(int(argument.GetSplit(3)))
|
|
End If
|
|
|
|
Dim catchLocation As String = Screen.Level.MapName
|
|
If commas > 3 Then
|
|
catchLocation = argument.GetSplit(4)
|
|
End If
|
|
|
|
Dim isEgg As Boolean = False
|
|
If commas > 4 Then
|
|
isEgg = CBool(argument.GetSplit(5))
|
|
End If
|
|
|
|
Dim catchTrainer As String = Core.Player.Name
|
|
If commas > 5 And argument.GetSplit(6) <> "<playername>" Then
|
|
catchTrainer = argument.GetSplit(6)
|
|
End If
|
|
|
|
Dim heldItem As Integer = 0
|
|
If commas > 6 Then
|
|
heldItem = CInt(argument.GetSplit(7))
|
|
End If
|
|
|
|
Dim isShiny As Boolean = False
|
|
If commas > 7 Then
|
|
isShiny = CBool(argument.GetSplit(8))
|
|
End If
|
|
|
|
Dim Pokemon As Pokemon = Pokemon.GetPokemonByID(PokemonID)
|
|
Pokemon.Generate(Level, True)
|
|
|
|
Pokemon.CatchTrainerName = catchTrainer
|
|
Pokemon.OT = Core.Player.OT
|
|
|
|
Pokemon.CatchLocation = catchLocation
|
|
Pokemon.CatchBall = catchBall
|
|
Pokemon.CatchMethod = catchMethod
|
|
|
|
If isEgg = True Then
|
|
Pokemon.EggSteps = 1
|
|
Pokemon.SetCatchInfos(Item.GetItemByID(5), "obtained at")
|
|
Else
|
|
Pokemon.EggSteps = 0
|
|
End If
|
|
|
|
If heldItem <> 0 Then
|
|
Pokemon.Item = Item.GetItemByID(heldItem)
|
|
End If
|
|
|
|
Pokemon.IsShiny = isShiny
|
|
|
|
Core.Player.Pokemons.Add(Pokemon)
|
|
|
|
Dim pokedexType As Integer = 2
|
|
If Pokemon.IsShiny = True Then
|
|
pokedexType = 3
|
|
End If
|
|
|
|
If Pokemon.IsEgg() = False Then
|
|
Core.Player.PokedexData = Pokedex.ChangeEntry(Core.Player.PokedexData, Pokemon.Number, pokedexType)
|
|
End If
|
|
End If
|
|
Case "setadditionalvalue", "setadditionaldata"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim AdditionalValue As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).AdditionalData = AdditionalValue
|
|
End If
|
|
Case "setnickname"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim NickName As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).NickName = NickName
|
|
End If
|
|
Case "setstat"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim stat As String = argument.GetSplit(1, ",")
|
|
Dim statValue As Integer = int(argument.GetSplit(2, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
With Core.Player.Pokemons(Index)
|
|
Select Case stat.ToLower()
|
|
Case "maxhp", "hp"
|
|
.MaxHP = statValue
|
|
Case "chp"
|
|
.HP = statValue
|
|
Case "atk", "attack"
|
|
.Attack = statValue
|
|
Case "def", "defense"
|
|
.Defense = statValue
|
|
Case "spatk", "specialattack", "spattack"
|
|
.SpAttack = statValue
|
|
Case "spdef", "specialdefense", "spdefense"
|
|
.SpDefense = statValue
|
|
Case "speed"
|
|
.Speed = statValue
|
|
End Select
|
|
End With
|
|
End If
|
|
Case "clear"
|
|
Core.Player.Pokemons.Clear()
|
|
Case "removeattack"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim attackIndex As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Dim p As Pokemon = Core.Player.Pokemons(Index)
|
|
|
|
If p.Attacks.Count - 1 >= attackIndex Then
|
|
p.Attacks.RemoveAt(attackIndex)
|
|
End If
|
|
End If
|
|
Case "removeattackid"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim attackId As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Dim p As Pokemon = Core.Player.Pokemons(Index)
|
|
|
|
For a = 0 To (p.Attacks.Count - 1)
|
|
If p.Attacks(a).ID = attackId Then
|
|
p.Attacks.RemoveAt(a)
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Case "clearattacks"
|
|
Dim Index As Integer = int(argument)
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).Attacks.Clear()
|
|
End If
|
|
Case "addattack"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim attackID As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Dim p As Pokemon = Core.Player.Pokemons(Index)
|
|
|
|
If p.Attacks.Count < 4 Then
|
|
Dim newAttack As BattleSystem.Attack = BattleSystem.Attack.GetAttackByID(attackID)
|
|
p.Attacks.Add(newAttack)
|
|
End If
|
|
End If
|
|
Case "setshiny"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim isShiny As Boolean = CBool(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).IsShiny = isShiny
|
|
End If
|
|
Case "setshinyall"
|
|
Dim isShiny As Boolean = CBool(argument.GetSplit(0, ","))
|
|
For i = 0 To Core.Player.Pokemons.Count - 1
|
|
Core.Player.Pokemons(i).IsShiny = isShiny
|
|
Next
|
|
Case "changelevel"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim newLevel As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).Level = newLevel
|
|
End If
|
|
Case "gainexp"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim exp As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).Experience += exp
|
|
End If
|
|
Case "setnature"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim Nature As Pokemon.Natures = Pokemon.ConvertIDToNature(int(argument.GetSplit(1, ",")))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).Nature = Nature
|
|
End If
|
|
Case "npctrade"
|
|
Dim splits() As String = argument.Split(CChar("|"))
|
|
Script.SaveNPCTrade = splits
|
|
|
|
Dim selScreen = New PartyScreen(Core.CurrentScreen, Item.GetItemByID(5), AddressOf Script.DoNPCTrade, "Choose Pokémon for trade", True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True}
|
|
AddHandler selScreen.SelectedObject, AddressOf Script.DoNPCTradeHandler
|
|
|
|
Core.SetScreen(selScreen)
|
|
|
|
CType(Core.CurrentScreen, PartyScreen).ExitedSub = AddressOf Script.ExitedNPCTrade
|
|
|
|
CanContinue = False
|
|
Case "hide"
|
|
Screen.Level.OverworldPokemon.Visible = False
|
|
Case "rename"
|
|
Dim index As String = argument
|
|
Dim renameOTcheck As Boolean = False
|
|
Dim canRename As Boolean = True
|
|
|
|
If argument.Contains(",") = True Then
|
|
index = argument.GetSplit(0)
|
|
renameOTcheck = CBool(argument.GetSplit(1))
|
|
End If
|
|
|
|
Dim PokemonIndex As Integer = 0
|
|
Select Case index.ToLower()
|
|
Case "last"
|
|
PokemonIndex = Core.Player.Pokemons.Count - 1
|
|
Case Else
|
|
PokemonIndex = int(index)
|
|
End Select
|
|
|
|
If renameOTcheck = True Then
|
|
If Core.Player.Pokemons(PokemonIndex).OT = Core.Player.OT Then
|
|
canRename = False
|
|
End If
|
|
End If
|
|
|
|
If Core.Player.Pokemons(PokemonIndex).IsEgg() = False Then
|
|
If canRename = True Then
|
|
Core.SetScreen(New NameObjectScreen(Core.CurrentScreen, Core.Player.Pokemons(PokemonIndex)))
|
|
Else
|
|
Screen.TextBox.Show("I cannot rename this~Pokémon because the~OT is different!*Did you receive it in~a trade or something?")
|
|
End If
|
|
Else
|
|
Screen.TextBox.Show("I cannot rename~this egg...")
|
|
End If
|
|
|
|
CanContinue = False
|
|
Case "read"
|
|
Dim p As Pokemon = Core.Player.Pokemons(int(argument))
|
|
|
|
Dim message As String = "Hm... I see your~" & p.GetDisplayName()
|
|
Dim addmessage As String = "~is very stable with~"
|
|
|
|
If p.EVAttack > p.EVDefense And p.EVAttack > p.EVHP And p.EVAttack > p.EVSpAttack And p.EVAttack > p.EVSpDefense And p.EVAttack > p.EVSpeed Then
|
|
addmessage &= "performing physical moves."
|
|
End If
|
|
If p.EVDefense > p.EVAttack And p.EVDefense > p.EVHP And p.EVDefense > p.EVSpAttack And p.EVDefense > p.EVSpDefense And p.EVDefense > p.EVSpeed Then
|
|
addmessage &= "taking hits."
|
|
End If
|
|
If p.EVHP > p.EVAttack And p.EVHP > p.EVDefense And p.EVHP > p.EVSpAttack And p.EVHP > p.EVSpDefense And p.EVHP > p.EVSpeed Then
|
|
addmessage &= "taking damage."
|
|
End If
|
|
If p.EVSpAttack > p.EVAttack And p.EVSpAttack > p.EVDefense And p.EVSpAttack > p.EVHP And p.EVSpAttack > p.EVSpDefense And p.EVSpAttack > p.EVSpeed Then
|
|
addmessage &= "performing complex strategies."
|
|
End If
|
|
If p.EVSpDefense > p.EVAttack And p.EVSpDefense > p.EVDefense And p.EVSpDefense > p.EVHP And p.EVSpDefense > p.EVSpAttack And p.EVSpDefense > p.EVSpeed Then
|
|
addmessage &= "breaking strategies."
|
|
End If
|
|
If p.EVSpeed > p.EVAttack And p.EVSpeed > p.EVDefense And p.EVSpeed > p.EVHP And p.EVSpeed > p.EVSpAttack And p.EVSpeed > p.EVSpDefense Then
|
|
addmessage &= "speeding the others out."
|
|
End If
|
|
|
|
If addmessage = "~is very stable with~" Then
|
|
addmessage = "~is very well balanced."
|
|
End If
|
|
|
|
message &= addmessage
|
|
|
|
message &= "*...~...*What that means?~I am not sure..."
|
|
|
|
Screen.TextBox.Show(message, {}, False, False)
|
|
|
|
CanContinue = False
|
|
Case "heal"
|
|
If argument = "" Then
|
|
Core.Player.HealParty()
|
|
Else
|
|
If argument.Contains(",") = True Then
|
|
Dim data() As String = argument.Split(CChar(","))
|
|
Dim Members As New List(Of Integer)
|
|
For Each member As String In data
|
|
Members.Add(int(member))
|
|
Next
|
|
Core.Player.HealParty(Members.ToArray())
|
|
Else
|
|
Core.Player.HealParty({int(argument)})
|
|
End If
|
|
End If
|
|
Case "setfriendship"
|
|
Dim index As Integer = int(argument.GetSplit(0))
|
|
Dim amount As Integer = int(argument.GetSplit(1))
|
|
|
|
Core.Player.Pokemons(index).Friendship = amount
|
|
Case "addfriendship"
|
|
Dim index As Integer = int(argument.GetSplit(0))
|
|
Dim amount As Integer = int(argument.GetSplit(1))
|
|
|
|
Core.Player.Pokemons(index).Friendship += amount
|
|
Case "select"
|
|
Dim canExit As Boolean = False
|
|
Dim canChooseEgg As Boolean = True
|
|
Dim canChooseFainted As Boolean = True
|
|
|
|
If argument <> "" Then
|
|
Dim data() As String = argument.Split(CChar(","))
|
|
|
|
If data.Length > 0 Then
|
|
canExit = CBool(data(0))
|
|
End If
|
|
If data.Length > 1 Then
|
|
canChooseFainted = CBool(data(1))
|
|
End If
|
|
If data.Length > 2 Then
|
|
canChooseEgg = CBool(data(2))
|
|
End If
|
|
End If
|
|
|
|
Dim selScreen = New PartyScreen(Core.CurrentScreen, Item.GetItemByID(5), Nothing, "Choose Pokémon", canExit, canChooseFainted, canChooseEgg) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = canExit}
|
|
AddHandler selScreen.SelectedObject, Nothing
|
|
|
|
Core.SetScreen(selScreen)
|
|
|
|
CanContinue = False
|
|
Case "selectmove"
|
|
Dim index As Integer = 0
|
|
Dim canHMMOve As Boolean = True
|
|
Dim canExit As Boolean = False
|
|
|
|
If argument.Contains(",") = True Then
|
|
Dim args As List(Of String) = argument.Split(CChar(",")).ToList()
|
|
|
|
For i = 0 To args.Count - 1
|
|
Dim arg As String = args(i)
|
|
|
|
Select Case i
|
|
Case 0
|
|
index = int(arg)
|
|
Case 1
|
|
canHMMOve = CBool(arg)
|
|
Case 2
|
|
canExit = CBool(arg)
|
|
End Select
|
|
Next
|
|
Else
|
|
index = int(argument)
|
|
End If
|
|
|
|
Core.SetScreen(New ChooseAttackScreen(Core.CurrentScreen, Core.Player.Pokemons(index), canHMMOve, canExit, Nothing))
|
|
|
|
CanContinue = False
|
|
Case "calcstats"
|
|
Dim index As Integer = int(argument)
|
|
Core.Player.Pokemons(index).CalculateStats()
|
|
Case "learnattack"
|
|
Dim index As Integer = int(argument.GetSplit(0))
|
|
Dim attackID As Integer = int(argument.GetSplit(1))
|
|
|
|
Core.SetScreen(New LearnAttackScreen(Core.CurrentScreen, Core.Player.Pokemons(index), BattleSystem.Attack.GetAttackByID(attackID)))
|
|
|
|
CanContinue = False
|
|
Case "setgender"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim Gender As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index And Gender >= 0 And Gender <= 2 Then
|
|
Core.Player.Pokemons(Index).Gender = CType(Gender, Pokemon.Genders)
|
|
End If
|
|
Case "setability"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim abilityID As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).Ability = Ability.GetAbilityByID(abilityID)
|
|
End If
|
|
Case "setev"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim ev As String = argument.GetSplit(1, ",")
|
|
Dim evValue As Integer = int(argument.GetSplit(2, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
With Core.Player.Pokemons(Index)
|
|
Select Case ev.ToLower()
|
|
Case "hp"
|
|
.EVHP = evValue
|
|
Case "atk", "attack"
|
|
.EVAttack = evValue
|
|
Case "def", "defense"
|
|
.EVDefense = evValue
|
|
Case "spatk", "specialattack", "spattack"
|
|
.EVSpAttack = evValue
|
|
Case "spdef", "specialdefense", "spdefense"
|
|
.EVSpDefense = evValue
|
|
Case "speed"
|
|
.EVSpeed = evValue
|
|
End Select
|
|
End With
|
|
End If
|
|
Case "setallevs"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
With Core.Player.Pokemons(Index)
|
|
.EVHP = Clamp(int(argument.GetSplit(1, ",")), 0, 252)
|
|
.EVAttack = Clamp(int(argument.GetSplit(2, ",")), 0, 252)
|
|
.EVDefense = Clamp(int(argument.GetSplit(3, ",")), 0, 252)
|
|
.EVSpAttack = Clamp(int(argument.GetSplit(4, ",")), 0, 252)
|
|
.EVSpDefense = Clamp(int(argument.GetSplit(5, ",")), 0, 252)
|
|
.EVSpeed = Clamp(int(argument.GetSplit(6, ",")), 0, 252)
|
|
End With
|
|
End If
|
|
Case "setiv"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim dv As String = argument.GetSplit(1, ",")
|
|
Dim dvValue As Integer = int(argument.GetSplit(2, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
With Core.Player.Pokemons(Index)
|
|
Select Case dv.ToLower()
|
|
Case "hp"
|
|
.IVHP = dvValue
|
|
Case "atk", "attack"
|
|
.IVAttack = dvValue
|
|
Case "def", "defense"
|
|
.IVDefense = dvValue
|
|
Case "spatk", "specialattack", "spattack"
|
|
.IVSpAttack = dvValue
|
|
Case "spdef", "specialdefense", "spdefense"
|
|
.IVSpDefense = dvValue
|
|
Case "speed"
|
|
.IVSpeed = dvValue
|
|
End Select
|
|
End With
|
|
End If
|
|
Case "setallivs"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
With Core.Player.Pokemons(Index)
|
|
.IVHP = Clamp(int(argument.GetSplit(1, ",")), 0, 31)
|
|
.IVAttack = Clamp(int(argument.GetSplit(2, ",")), 0, 31)
|
|
.IVDefense = Clamp(int(argument.GetSplit(3, ",")), 0, 31)
|
|
.IVSpAttack = Clamp(int(argument.GetSplit(4, ",")), 0, 31)
|
|
.IVSpDefense = Clamp(int(argument.GetSplit(5, ",")), 0, 31)
|
|
.IVSpeed = Clamp(int(argument.GetSplit(6, ",")), 0, 31)
|
|
End With
|
|
End If
|
|
Case "registerhalloffame"
|
|
Dim count As Integer = -1
|
|
Dim NewHallOfFameData As String = ""
|
|
If Core.Player.HallOfFameData <> "" Then
|
|
Dim data() As String = Core.Player.HallOfFameData.SplitAtNewline()
|
|
|
|
For Each l As String In data
|
|
Dim id As Integer = CInt(l.Remove(l.IndexOf(",")))
|
|
If id > count Then
|
|
count = id
|
|
End If
|
|
Next
|
|
|
|
For Each l As String In data
|
|
Dim id As Integer = CInt(l.Remove(l.IndexOf(",")))
|
|
If id > (count - 19) OrElse id = 0 Then 'last 20 entries saved, plus the first entry
|
|
NewHallOfFameData &= l & Environment.NewLine
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
count += 1
|
|
|
|
Dim time As String = TimeHelpers.GetDisplayTime(TimeHelpers.GetCurrentPlayTime(), True)
|
|
|
|
Dim newData As String
|
|
|
|
If Core.Player.IsGameJoltSave Then
|
|
newData = count & ",(" & Core.Player.Name & "|" & time & "|" & GameJoltSave.Points & "|" & Core.Player.OT & "|" & Core.Player.Skin & ")"
|
|
Else
|
|
newData = count & ",(" & Core.Player.Name & "|" & time & "|" & Core.Player.Points & "|" & Core.Player.OT & "|" & Core.Player.Skin & ")"
|
|
End If
|
|
|
|
For Each p As Pokemon In Core.Player.Pokemons
|
|
If p.IsEgg() = False Then
|
|
Dim pData As String = p.GetHallOfFameData()
|
|
newData &= Environment.NewLine & count & "," & pData
|
|
End If
|
|
Next
|
|
|
|
NewHallOfFameData &= newData
|
|
Core.Player.HallOfFameData = NewHallOfFameData
|
|
Case "setot"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim OT As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).OT = OT
|
|
End If
|
|
Case "setitem"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim newItem As Item = Item.GetItemByID(int(argument.GetSplit(1, ",")))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).Item = newItem
|
|
End If
|
|
Case "removeitem"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
|
|
Core.Player.Pokemons(Index).Item = Nothing
|
|
Case "setitemdata"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim itemData As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
If Not Core.Player.Pokemons(Index).Item Is Nothing Then
|
|
Core.Player.Pokemons(Index).Item.AdditionalData = itemData
|
|
End If
|
|
End If
|
|
Case "setcatchtrainer"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim Trainer As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).CatchTrainerName = Trainer
|
|
End If
|
|
Case "setcatchball"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim catchBall As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).CatchBall = Item.GetItemByID(catchBall)
|
|
End If
|
|
Case "setcatchmethod"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim method As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).CatchMethod = method
|
|
End If
|
|
Case "setcatchplace", "setcatchlocation"
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim place As String = argument.GetSplit(1, ",")
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).CatchLocation = place
|
|
End If
|
|
Case "newroaming"
|
|
' PokémonID,Level,regionID,startLevelFile,MusicLoop
|
|
Dim data() As String = argument.Split(CChar(","))
|
|
Dim p As Pokemon = Pokemon.GetPokemonByID(CInt(data(0)))
|
|
p.Generate(CInt(data(1)), True)
|
|
|
|
If Core.Player.RoamingPokemonData <> "" Then
|
|
Core.Player.RoamingPokemonData &= Environment.NewLine
|
|
End If
|
|
|
|
Core.Player.RoamingPokemonData &= data(0) & "|" & data(1) & "|" & data(2) & "|" & data(3) & "|" & data(4) & "|" & p.GetSaveData()
|
|
Case "evolve"
|
|
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
|
|
|
|
If p.CanEvolve(trigger, evolutionArg) = True Then
|
|
Core.SetScreen(New TransitionScreen(Core.CurrentScreen,
|
|
New EvolutionScreen(Core.CurrentScreen, {int(args(0))}.ToList(),
|
|
evolutionArg,
|
|
trigger,
|
|
False), Color.Black, False))
|
|
|
|
CanContinue = False
|
|
Else
|
|
Logger.Log(Logger.LogTypes.Message, "ScriptCommander.vb: The Pokémon is not able to evolve with the given conditions.")
|
|
End If
|
|
Case "reload"
|
|
Dim PokemonIndex As Integer = int(argument)
|
|
If Core.Player.Pokemons.Count - 1 >= PokemonIndex Then
|
|
Core.Player.Pokemons(PokemonIndex).ReloadDefinitions()
|
|
Core.Player.Pokemons(PokemonIndex).CalculateStats()
|
|
End If
|
|
Case "reloadall"
|
|
For i = 0 To Core.Player.Pokemons.Count - 1
|
|
Core.Player.Pokemons(i).ReloadDefinitions()
|
|
Core.Player.Pokemons(i).CalculateStats()
|
|
Next
|
|
|
|
''Just debug testing tools.
|
|
''Make sure X and Y megas hold the correct stone. Other megas may have no stone.
|
|
Case "megaevolve"
|
|
Dim p As Pokemon = Core.Player.Pokemons(int(argument))
|
|
If p.Item IsNot Nothing Then
|
|
Select Case p.Item.ID
|
|
Case 516, 529
|
|
p.AdditionalData = "mega_x"
|
|
Case 517, 530
|
|
p.AdditionalData = "mega_y"
|
|
Case Else
|
|
p.AdditionalData = "mega"
|
|
End Select
|
|
Else
|
|
p.AdditionalData = "mega"
|
|
End If
|
|
p.ReloadDefinitions()
|
|
p.CalculateStats()
|
|
p.LoadAltAbility()
|
|
Case "megaevolveall"
|
|
For i = 0 To Core.Player.Pokemons.Count - 1
|
|
Dim p As Pokemon = Core.Player.Pokemons(i)
|
|
If p.Item IsNot Nothing Then
|
|
Select Case p.Item.ID
|
|
Case 516, 529
|
|
p.AdditionalData = "mega_x"
|
|
Case 517, 530
|
|
p.AdditionalData = "mega_y"
|
|
Case Else
|
|
p.AdditionalData = "mega"
|
|
End Select
|
|
Else
|
|
p.AdditionalData = "mega"
|
|
End If
|
|
p.ReloadDefinitions()
|
|
p.CalculateStats()
|
|
p.LoadAltAbility()
|
|
Next
|
|
|
|
Case "clone"
|
|
Dim PokemonIndex As Integer = int(argument)
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= PokemonIndex And Core.Player.Pokemons.Count < 6 Then
|
|
Core.Player.Pokemons.Add(Core.Player.Pokemons(PokemonIndex))
|
|
End If
|
|
Case "sendtostorage"
|
|
' @Pokemon.SendToStorage(PokeIndex, [BoxIndex])
|
|
|
|
Dim Data() As String = argument.Split(CChar(","))
|
|
|
|
If Data.Length = 1 Then
|
|
Dim PokemonIndex As Integer = int(Data(0))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= PokemonIndex Then
|
|
StorageSystemScreen.DepositPokemon(Core.Player.Pokemons(PokemonIndex))
|
|
Core.Player.Pokemons.RemoveAt(PokemonIndex)
|
|
End If
|
|
ElseIf Data.Length = 2 Then
|
|
Dim PokemonIndex As Integer = int(Data(0))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= PokemonIndex Then
|
|
StorageSystemScreen.DepositPokemon(Core.Player.Pokemons(PokemonIndex), int(Data(1)))
|
|
Core.Player.Pokemons.RemoveAt(PokemonIndex)
|
|
End If
|
|
End If
|
|
Case "addtostorage"
|
|
' @Pokemon.AddToStorage([BoxIndex], PokemonData)
|
|
' @Pokemon.AddToStorage(PokemonID, Level, [Method], [BallID], [Location], [isEgg], [trainerName], [heldItem], [isShiny])
|
|
|
|
If argument.StartsWith("{") = True Or argument.Remove(0, argument.IndexOf(",")).StartsWith(",{") = True Then
|
|
Dim insertIndex As Integer = -1
|
|
If argument.Remove(0, argument.IndexOf(",")).StartsWith(",{") = True Then
|
|
insertIndex = int(argument.GetSplit(0))
|
|
End If
|
|
|
|
argument = argument.Remove(0, argument.IndexOf("{"))
|
|
|
|
Dim p As Pokemon = Pokemon.GetPokemonByData(argument.Replace("§", ",").Replace("«", "[").Replace("»", "]"))
|
|
StorageSystemScreen.DepositPokemon(p, insertIndex)
|
|
|
|
Dim pokedexType As Integer = 2
|
|
If p.IsShiny = True Then
|
|
pokedexType = 3
|
|
End If
|
|
|
|
If p.IsEgg() = False Then
|
|
Core.Player.PokedexData = Pokedex.ChangeEntry(Core.Player.PokedexData, p.Number, pokedexType)
|
|
End If
|
|
Else
|
|
Dim commas As Integer = 0
|
|
For Each c As Char In argument
|
|
If c = "," Then
|
|
commas += 1
|
|
End If
|
|
Next
|
|
|
|
Dim PokemonID As Integer = int(argument.GetSplit(0))
|
|
Dim Level As Integer = int(argument.GetSplit(1))
|
|
|
|
Dim catchMethod As String = "random reason"
|
|
If commas > 1 Then
|
|
catchMethod = argument.GetSplit(2)
|
|
End If
|
|
|
|
Dim catchBall As Item = Item.GetItemByID(1)
|
|
If commas > 2 Then
|
|
catchBall = Item.GetItemByID(int(argument.GetSplit(3)))
|
|
End If
|
|
|
|
Dim catchLocation As String = Screen.Level.MapName
|
|
If commas > 3 Then
|
|
catchLocation = argument.GetSplit(4)
|
|
End If
|
|
|
|
Dim isEgg As Boolean = False
|
|
If commas > 4 Then
|
|
isEgg = CBool(argument.GetSplit(5))
|
|
End If
|
|
|
|
Dim catchTrainer As String = Core.Player.Name
|
|
If commas > 5 And argument.GetSplit(6) <> "<playername>" Then
|
|
catchTrainer = argument.GetSplit(6)
|
|
End If
|
|
|
|
Dim heldItem As Integer = 0
|
|
If commas > 6 Then
|
|
heldItem = CInt(argument.GetSplit(7))
|
|
End If
|
|
|
|
Dim isShiny As Boolean = False
|
|
If commas > 7 Then
|
|
isShiny = CBool(argument.GetSplit(8))
|
|
End If
|
|
|
|
Dim Pokemon As Pokemon = Pokemon.GetPokemonByID(PokemonID)
|
|
Pokemon.Generate(Level, True)
|
|
|
|
Pokemon.CatchTrainerName = catchTrainer
|
|
Pokemon.OT = Core.Player.OT
|
|
|
|
Pokemon.CatchLocation = catchLocation
|
|
Pokemon.CatchBall = catchBall
|
|
Pokemon.CatchMethod = catchMethod
|
|
|
|
If isEgg = True Then
|
|
Pokemon.EggSteps = 1
|
|
Pokemon.SetCatchInfos(Item.GetItemByID(5), "obtained at")
|
|
Else
|
|
Pokemon.EggSteps = 0
|
|
End If
|
|
|
|
If heldItem <> 0 Then
|
|
Pokemon.Item = Item.GetItemByID(heldItem)
|
|
End If
|
|
|
|
Pokemon.IsShiny = isShiny
|
|
|
|
StorageSystemScreen.DepositPokemon(Pokemon)
|
|
|
|
Dim pokedexType As Integer = 2
|
|
If Pokemon.IsShiny = True Then
|
|
pokedexType = 3
|
|
End If
|
|
|
|
If Pokemon.IsEgg() = False Then
|
|
Core.Player.PokedexData = Pokedex.ChangeEntry(Core.Player.PokedexData, Pokemon.Number, pokedexType)
|
|
End If
|
|
End If
|
|
Case "addsteps"
|
|
' @Pokemon.AddSteps(PokemonIndex, StepsToAdd)
|
|
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim StepsToAdd As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).EggSteps += StepsToAdd
|
|
End If
|
|
Case "setsteps"
|
|
' @Pokemon.SetSteps(PokemonIndex, StepsToSet)
|
|
|
|
Dim Index As Integer = int(argument.GetSplit(0, ","))
|
|
Dim StepsToSet As Integer = int(argument.GetSplit(1, ","))
|
|
|
|
If Core.Player.Pokemons.Count - 1 >= Index Then
|
|
Core.Player.Pokemons(Index).EggSteps = StepsToSet
|
|
End If
|
|
End Select
|
|
|
|
IsReady = True
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
End Namespace |