603 lines
24 KiB
VB.net
603 lines
24 KiB
VB.net
Public Class Daycare
|
|
|
|
Public Shared Function ProduceEgg(ByVal daycareID As Integer) As Pokemon
|
|
Dim parent1 As Pokemon = Nothing
|
|
Dim parent2 As Pokemon = Nothing
|
|
|
|
Dim EggID As Integer = 0
|
|
|
|
For Each line As String In Core.Player.DaycareData.SplitAtNewline()
|
|
If line.StartsWith(daycareID.ToString() & "|0|") = True Then
|
|
Dim data As String = line.Remove(0, line.IndexOf("{"))
|
|
parent1 = P3D.Pokemon.GetPokemonByData(data)
|
|
ElseIf line.StartsWith(daycareID.ToString() & "|1|") = True Then
|
|
Dim data As String = line.Remove(0, line.IndexOf("{"))
|
|
parent2 = P3D.Pokemon.GetPokemonByData(data)
|
|
ElseIf line.StartsWith(daycareID.ToString() & "|Egg|") = True Then
|
|
EggID = CInt(line.Split(CChar("|"))(2))
|
|
End If
|
|
Next
|
|
|
|
Dim DittoAsParent As Integer = 0
|
|
If parent1.EggGroup1 = Pokemon.EggGroups.Ditto Or parent1.EggGroup2 = Pokemon.EggGroups.Ditto Then
|
|
DittoAsParent = 1
|
|
ElseIf parent2.EggGroup1 = Pokemon.EggGroups.Ditto Or parent2.EggGroup2 = Pokemon.EggGroups.Ditto Then
|
|
DittoAsParent = 2
|
|
End If
|
|
|
|
If Not parent1 Is Nothing And Not parent2 Is Nothing And EggID <> 0 Then
|
|
Dim p As Pokemon = Pokemon.GetPokemonByID(EggID)
|
|
p.Generate(1, True)
|
|
p.EggSteps = 1
|
|
p.SetCatchInfos(Item.GetItemByID(5), "obtained at")
|
|
p.CatchBall = Item.GetItemByID(GetEggPokeballID({parent1, parent2}.ToList()))
|
|
|
|
' Adding Egg Moves:
|
|
Dim EggMoves As New List(Of BattleSystem.Attack)
|
|
|
|
' Level-Up moves:
|
|
If DittoAsParent = 0 Then
|
|
For Each m1 As BattleSystem.Attack In parent1.Attacks
|
|
For Each m2 As BattleSystem.Attack In parent2.Attacks
|
|
If m1.ID = m2.ID Then
|
|
Dim newAttack As BattleSystem.Attack = BattleSystem.Attack.GetAttackByID(m1.ID)
|
|
EggMoves.Add(newAttack)
|
|
End If
|
|
Next
|
|
Next
|
|
End If
|
|
|
|
' Technical/Hidden Machine moves:
|
|
Dim male As Integer = -1
|
|
If parent1.Gender = P3D.Pokemon.Genders.Male Then
|
|
male = 0
|
|
End If
|
|
If parent2.Gender = P3D.Pokemon.Genders.Male Then
|
|
male = 1
|
|
End If
|
|
If male > -1 Then
|
|
Dim cParent As Pokemon = Nothing
|
|
Select Case male
|
|
Case 0
|
|
cParent = parent1
|
|
Case 1
|
|
cParent = parent2
|
|
End Select
|
|
For Each THMMove As BattleSystem.Attack In p.AttackLearns.Values
|
|
For Each m1 As BattleSystem.Attack In cParent.Attacks
|
|
If m1.ID = THMMove.ID Then
|
|
Dim newAttack As BattleSystem.Attack = BattleSystem.Attack.GetAttackByID(m1.ID)
|
|
EggMoves.Add(newAttack)
|
|
End If
|
|
Next
|
|
Next
|
|
End If
|
|
|
|
' Egg Moves:
|
|
male = -1
|
|
If parent1.Gender = P3D.Pokemon.Genders.Male Then
|
|
male = 0
|
|
End If
|
|
If parent2.Gender = P3D.Pokemon.Genders.Male Then
|
|
male = 1
|
|
End If
|
|
If male > -1 Then
|
|
For Each BreedMove As Integer In p.EggMoves
|
|
For Each m1 As BattleSystem.Attack In parent1.Attacks
|
|
If m1.ID = BreedMove Then
|
|
GameJolt.Emblem.AchieveEmblem("eggsplosion")
|
|
|
|
Dim newAttack As BattleSystem.Attack = BattleSystem.Attack.GetAttackByID(m1.ID)
|
|
EggMoves.Add(newAttack)
|
|
End If
|
|
Next
|
|
For Each m1 As BattleSystem.Attack In parent2.Attacks
|
|
If m1.ID = BreedMove Then
|
|
GameJolt.Emblem.AchieveEmblem("eggsplosion")
|
|
|
|
Dim newAttack As BattleSystem.Attack = BattleSystem.Attack.GetAttackByID(m1.ID)
|
|
EggMoves.Add(newAttack)
|
|
End If
|
|
Next
|
|
Next
|
|
End If
|
|
' Volt Tackle for Pikachu:
|
|
If (parent1.Item IsNot Nothing AndAlso parent1.Item.Name.ToLower = "light ball") OrElse (parent2.Item IsNot Nothing AndAlso parent2.Item.Name.ToLower = "light ball") Then
|
|
Dim newAttack As BattleSystem.Attack = BattleSystem.Attack.GetAttackByID(344)
|
|
EggMoves.Add(newAttack)
|
|
End If
|
|
|
|
Dim learnMoves As New List(Of BattleSystem.Attack)
|
|
If EggMoves.Count <= 4 Then
|
|
learnMoves.AddRange(EggMoves.ToArray())
|
|
Else
|
|
For i = EggMoves.Count - 4 To EggMoves.Count - 1
|
|
learnMoves.Add(EggMoves(i))
|
|
Next
|
|
End If
|
|
|
|
While p.Attacks.Count + learnMoves.Count > 4
|
|
p.Attacks.RemoveAt(0)
|
|
End While
|
|
|
|
For Each learnMove As BattleSystem.Attack In learnMoves
|
|
Dim hasAttack As Boolean = False
|
|
For Each m As BattleSystem.Attack In p.Attacks
|
|
If m.ID = learnMove.ID Then
|
|
hasAttack = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
If hasAttack = False Then
|
|
p.Attacks.Add(learnMove)
|
|
End If
|
|
Next
|
|
|
|
' Inherit stats:
|
|
Dim IV1 As New List(Of String)
|
|
Dim IV2 As New List(Of String)
|
|
|
|
Dim EVStat1 As String = ""
|
|
Dim EVStat2 As String = ""
|
|
|
|
Dim EVItems() As String = {"power weight", "power bracer", "power belt", "power lens", "power band", "power anklet"}
|
|
If Not parent1.Item Is Nothing Then
|
|
If EVItems.Contains(parent1.Item.Name.ToLower()) = True Then
|
|
Select Case parent1.Item.Name.ToLower()
|
|
Case "power weight"
|
|
EVStat1 = "HP"
|
|
Case "power bracer"
|
|
EVStat1 = "Attack"
|
|
Case "power belt"
|
|
EVStat1 = "Defense"
|
|
Case "power lens"
|
|
EVStat1 = "Special Attack"
|
|
Case "power band"
|
|
EVStat1 = "Special Defense"
|
|
Case "power anklet"
|
|
EVStat1 = "Speed"
|
|
End Select
|
|
End If
|
|
End If
|
|
If Not parent2.Item Is Nothing Then
|
|
If EVItems.Contains(parent2.Item.Name.ToLower()) = True Then
|
|
Select Case parent2.Item.Name.ToLower()
|
|
Case "power weight"
|
|
EVStat2 = "HP"
|
|
Case "power bracer"
|
|
EVStat2 = "Attack"
|
|
Case "power belt"
|
|
EVStat2 = "Defense"
|
|
Case "power lens"
|
|
EVStat2 = "Special Attack"
|
|
Case "power band"
|
|
EVStat2 = "Special Defense"
|
|
Case "power anklet"
|
|
EVStat2 = "Speed"
|
|
End Select
|
|
End If
|
|
End If
|
|
|
|
If EVStat1 <> "" And EVStat2 = "" Then
|
|
IV1.Add(EVStat1)
|
|
ElseIf EVStat1 = "" And EVStat2 <> "" Then
|
|
IV2.Add(EVStat2)
|
|
ElseIf EVStat1 <> "" And EVStat2 <> "" Then
|
|
If Core.Random.Next(0, 2) = 0 Then
|
|
IV1.Add(EVStat1)
|
|
Else
|
|
IV2.Add(EVStat2)
|
|
End If
|
|
End If
|
|
|
|
While IV1.Count + IV2.Count < 3
|
|
Dim newStat As String = ""
|
|
While newStat = "" Or IV1.Contains(newStat) = True Or IV2.Contains(newStat) = True
|
|
Select Case Core.Random.Next(0, 6)
|
|
Case 0
|
|
newStat = "Attack"
|
|
Case 1
|
|
newStat = "Defense"
|
|
Case 2
|
|
newStat = "Special Attack"
|
|
Case 3
|
|
newStat = "Special Defense"
|
|
Case 4
|
|
newStat = "Speed"
|
|
Case 5
|
|
newStat = "HP"
|
|
End Select
|
|
End While
|
|
|
|
Select Case Core.Random.Next(0, 2)
|
|
Case 0
|
|
IV1.Add(newStat)
|
|
Case 1
|
|
IV2.Add(newStat)
|
|
End Select
|
|
End While
|
|
|
|
For Each IV As String In IV1
|
|
Select Case IV
|
|
Case "HP"
|
|
p.IVHP = parent1.IVHP
|
|
Case "Attack"
|
|
p.IVAttack = parent1.IVAttack
|
|
Case "Defense"
|
|
p.IVDefense = parent1.IVDefense
|
|
Case "Special Attack"
|
|
p.IVSpAttack = parent1.IVSpAttack
|
|
Case "Special Defense"
|
|
p.IVSpDefense = parent1.IVSpDefense
|
|
Case "Speed"
|
|
p.IVSpeed = parent1.IVSpeed
|
|
End Select
|
|
Next
|
|
For Each IV As String In IV2
|
|
Select Case IV
|
|
Case "HP"
|
|
p.IVHP = parent2.IVHP
|
|
Case "Attack"
|
|
p.IVAttack = parent2.IVAttack
|
|
Case "Defense"
|
|
p.IVDefense = parent2.IVDefense
|
|
Case "Special Attack"
|
|
p.IVSpAttack = parent2.IVSpAttack
|
|
Case "Special Defense"
|
|
p.IVSpDefense = parent2.IVSpDefense
|
|
Case "Speed"
|
|
p.IVSpeed = parent2.IVSpeed
|
|
End Select
|
|
Next
|
|
|
|
' Natures:
|
|
Dim EStone1 As Boolean = False
|
|
Dim EStone2 As Boolean = False
|
|
|
|
If Not parent1.Item Is Nothing Then
|
|
If parent1.Item.Name.ToLower() = "everstone" Then
|
|
EStone1 = True
|
|
End If
|
|
End If
|
|
If Not parent2.Item Is Nothing Then
|
|
If parent2.Item.Name.ToLower() = "everstone" Then
|
|
EStone2 = True
|
|
End If
|
|
End If
|
|
|
|
If EStone1 = True And EStone2 = False Then
|
|
p.Nature = parent1.Nature
|
|
ElseIf EStone1 = False And EStone2 = True Then
|
|
p.Nature = parent2.Nature
|
|
ElseIf EStone1 = True And EStone2 = True Then
|
|
If Core.Random.Next(0, 2) = 0 Then
|
|
p.Nature = parent1.Nature
|
|
Else
|
|
p.Nature = parent2.Nature
|
|
End If
|
|
End If
|
|
|
|
' Abilities:
|
|
If DittoAsParent = 0 Then
|
|
Dim female As Pokemon = parent1
|
|
If parent2.Gender = P3D.Pokemon.Genders.Female Then
|
|
female = parent2
|
|
End If
|
|
|
|
If Core.Random.Next(0, 100) < 80 Then
|
|
p.Ability = female.Ability
|
|
End If
|
|
End If
|
|
|
|
' Hidden Ability:
|
|
If DittoAsParent <> 0 Then
|
|
If DittoAsParent = 1 Then
|
|
If parent2.IsUsingHiddenAbility = True And p.HasHiddenAbility = True And Core.Random.Next(0, 100) < 80 Then
|
|
p.Ability = p.HiddenAbility
|
|
End If
|
|
Else
|
|
If parent1.IsUsingHiddenAbility = True And p.HasHiddenAbility = True And Core.Random.Next(0, 100) < 80 Then
|
|
p.Ability = p.HiddenAbility
|
|
End If
|
|
End If
|
|
Else
|
|
Dim female As Pokemon = parent1
|
|
If parent2.Gender = P3D.Pokemon.Genders.Female Then
|
|
female = parent2
|
|
End If
|
|
|
|
If female.IsUsingHiddenAbility = True And p.HasHiddenAbility = True And Core.Random.Next(0, 100) < 80 Then
|
|
p.Ability = p.HiddenAbility
|
|
End If
|
|
End If
|
|
|
|
' Shiny:
|
|
Dim Shiny1 As Boolean = parent1.IsShiny
|
|
Dim Shiny2 As Boolean = parent2.IsShiny
|
|
|
|
Dim chances As List(Of Integer) = {1, 4096}.ToList()
|
|
|
|
If Shiny1 = True And Shiny2 = True Then
|
|
chances = {12, 4096}.ToList()
|
|
ElseIf Shiny1 = True Or Shiny2 = True Then
|
|
chances = {6, 4096}.ToList()
|
|
End If
|
|
|
|
If Core.Random.Next(0, chances(1)) < chances(0) Then
|
|
p.IsShiny = True
|
|
Else
|
|
p.IsShiny = False
|
|
End If
|
|
|
|
Return p
|
|
End If
|
|
|
|
Return Nothing
|
|
End Function
|
|
|
|
Public Shared Function CanBreed(ByVal Pokemon As List(Of Pokemon)) As Integer
|
|
Dim chance As Integer = 0
|
|
|
|
If Pokemon.Count = 2 Then
|
|
Dim p1 As Pokemon = Pokemon(0)
|
|
Dim p2 As Pokemon = Pokemon(1)
|
|
|
|
If p1.CanBreed = False Or p2.CanBreed = False Then
|
|
Return 0
|
|
End If
|
|
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Undiscovered Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Undiscovered Or p2.EggGroup1 = P3D.Pokemon.EggGroups.Undiscovered Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Undiscovered Then
|
|
Return 0
|
|
End If
|
|
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
If p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
Return 0
|
|
End If
|
|
End If
|
|
|
|
If p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
Return 0
|
|
End If
|
|
End If
|
|
|
|
If p1.IsGenderless = True Then
|
|
If p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
chance = -1
|
|
Else
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
chance = -1
|
|
End If
|
|
End If
|
|
ElseIf p2.IsGenderless = True Then
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
chance = -1
|
|
Else
|
|
If p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
chance = -1
|
|
End If
|
|
End If
|
|
ElseIf p1.IsGenderless = False And p2.IsGenderless = False Then
|
|
If p1.Gender <> p2.Gender Then
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
chance = -1
|
|
Else
|
|
If p1.EggGroup1 = p2.EggGroup1 And p1.EggGroup1 <> P3D.Pokemon.EggGroups.None Or
|
|
p1.EggGroup2 = p2.EggGroup1 And p1.EggGroup2 <> P3D.Pokemon.EggGroups.None Or
|
|
p1.EggGroup1 = p2.EggGroup2 And p1.EggGroup1 <> P3D.Pokemon.EggGroups.None Or
|
|
p1.EggGroup2 = p2.EggGroup2 And p1.EggGroup2 <> P3D.Pokemon.EggGroups.None Then
|
|
chance = -1
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
If chance = -1 Then
|
|
If p1.Number = p2.Number And p1.OT <> p2.OT Then
|
|
chance = 70
|
|
End If
|
|
If p1.Number = p2.Number And p1.OT = p2.OT Then
|
|
chance = 50
|
|
End If
|
|
If p1.Number <> p2.Number And p1.OT <> p2.OT Then
|
|
chance = 50
|
|
End If
|
|
If p1.Number <> p2.Number And p1.OT = p2.OT Then
|
|
chance = 20
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
If chance > 0 Then
|
|
If Core.Player.Inventory.GetItemAmount(241) > 0 Then
|
|
chance = CInt(chance * 1.3F)
|
|
End If
|
|
End If
|
|
|
|
Return chance
|
|
End Function
|
|
|
|
Public Shared Function CanBreed(ByVal daycareID As Integer) As Integer
|
|
Dim l As New List(Of Pokemon)
|
|
|
|
For Each line As String In Core.Player.DaycareData.SplitAtNewline()
|
|
If line.StartsWith(daycareID.ToString() & "|") = True Then
|
|
Dim data As String = line.Remove(0, line.IndexOf("{"))
|
|
Dim p As Pokemon = P3D.Pokemon.GetPokemonByData(data)
|
|
l.Add(p)
|
|
End If
|
|
Next
|
|
|
|
Return CanBreed(l)
|
|
End Function
|
|
|
|
Public Shared Function CanBreed(ByVal Pokemon As Dictionary(Of Integer, Pokemon)) As Integer
|
|
Dim l As New List(Of Pokemon)
|
|
For i = 0 To Pokemon.Count - 1
|
|
l.Add(Pokemon.Values(i))
|
|
Next
|
|
Return CanBreed(l)
|
|
End Function
|
|
|
|
Private Shared Function GetEggPokemonID(ByVal Pokemon As Dictionary(Of Integer, Pokemon)) As Integer
|
|
If Pokemon.Count = 2 Then
|
|
Dim p1 As Pokemon = Pokemon.Values(0)
|
|
Dim p2 As Pokemon = Pokemon.Values(1)
|
|
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
Return p2.Number
|
|
End If
|
|
If p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
Return p1.Number
|
|
End If
|
|
|
|
If p1.Gender = P3D.Pokemon.Genders.Female Then
|
|
Return p1.Number
|
|
End If
|
|
If p2.Gender = P3D.Pokemon.Genders.Female Then
|
|
Return p2.Number
|
|
End If
|
|
End If
|
|
|
|
Return 0
|
|
End Function
|
|
|
|
Private Shared Function GetEggPokeballID(ByVal Pokemon As List(Of Pokemon)) As Integer
|
|
Dim ballID As Integer = 5
|
|
|
|
If Pokemon.Count = 2 Then
|
|
Dim p1 As Pokemon = Pokemon(0)
|
|
Dim p2 As Pokemon = Pokemon(1)
|
|
|
|
' First Pokémon is Ditto:
|
|
If p1.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p1.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
' If the first Pokémon is Ditto, then the other Pokémon must be female to inherit the Poké Ball.
|
|
If p2.Gender = P3D.Pokemon.Genders.Female Then
|
|
ballID = p2.CatchBall.ID
|
|
End If
|
|
End If
|
|
'Second Pokémon is Ditto.
|
|
If p2.EggGroup1 = P3D.Pokemon.EggGroups.Ditto Or p2.EggGroup2 = P3D.Pokemon.EggGroups.Ditto Then
|
|
'If the second Pokémon is Ditto, then the other Pokémon must be female to inherit the Poké Ball.
|
|
If p1.Gender = P3D.Pokemon.Genders.Female Then
|
|
ballID = p1.CatchBall.ID
|
|
End If
|
|
End If
|
|
' No Pokémon is Ditto:
|
|
If p1.EggGroup1 <> P3D.Pokemon.EggGroups.Ditto And p1.EggGroup2 <> P3D.Pokemon.EggGroups.Ditto And p2.EggGroup1 <> P3D.Pokemon.EggGroups.Ditto And p2.EggGroup2 <> P3D.Pokemon.EggGroups.Ditto Then
|
|
' First Pokémon is female:
|
|
If p1.Gender = P3D.Pokemon.Genders.Female Then
|
|
ballID = p1.CatchBall.ID
|
|
End If
|
|
' Second Pokémon is female:
|
|
If p2.Gender = P3D.Pokemon.Genders.Female Then
|
|
ballID = p2.CatchBall.ID
|
|
End If
|
|
End If
|
|
|
|
' Check for: Master Ball, Cherish Ball: Set to Poké Ball
|
|
If ballID = 1 Or ballID = 45 Then
|
|
ballID = 5
|
|
End If
|
|
End If
|
|
|
|
' Return BallID (Standard is 5 for Pokéball):
|
|
Return ballID
|
|
End Function
|
|
|
|
Public Shared Sub ObtainEgg()
|
|
Dim Data() As String = Core.Player.DaycareData.SplitAtNewline()
|
|
|
|
Dim IDs As New List(Of Integer)
|
|
|
|
For Each line As String In Data
|
|
If line <> "" And line.Contains("|") = True Then
|
|
Dim newID As Integer = CInt(line.GetSplit(0, "|"))
|
|
If IDs.Contains(newID) = False Then
|
|
IDs.Add(newID)
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Logger.Debug("Daycare circle complete!")
|
|
|
|
For Each DaycareID As Integer In IDs
|
|
Logger.Debug("Daycare ID: " & DaycareID)
|
|
|
|
Dim Pokemon As New Dictionary(Of Integer, Pokemon)
|
|
|
|
Dim hasEgg As Boolean = False
|
|
Dim EggID As Integer = 0
|
|
|
|
For Each line As String In Data
|
|
If line.StartsWith(DaycareID & "|") = True Then
|
|
If line.GetSplit(1, "|") = "Egg" Then
|
|
hasEgg = True
|
|
EggID = CInt(line.GetSplit(2, "|"))
|
|
Else
|
|
Dim PlaceID As Integer = CInt(line.GetSplit(1, "|"))
|
|
Dim startStep As Integer = CInt(line.GetSplit(2, "|"))
|
|
Dim Level As Integer = CInt(line.GetSplit(3, "|"))
|
|
Dim PokemonData As String = line.GetSplit(4, "|")
|
|
|
|
If Pokemon.ContainsKey(PlaceID) = False Then
|
|
Dim p As Pokemon = P3D.Pokemon.GetPokemonByData(PokemonData)
|
|
|
|
Pokemon.Add(PlaceID, p)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Logger.Debug("Pokémon count: " & Pokemon.Count)
|
|
Logger.Debug("Has Egg: " & hasEgg.ToString())
|
|
|
|
If hasEgg = False Then
|
|
Dim breedChance As Integer = CanBreed(Pokemon)
|
|
If breedChance > 0 Then
|
|
Logger.Debug("Breed chance: " & breedChance)
|
|
If Core.Random.Next(0, 100) < breedChance Then
|
|
Dim parentID As Integer = GetEggPokemonID(Pokemon)
|
|
|
|
Dim newEggID As Integer = P3D.Pokemon.GetPokemonByID(parentID).EggPokemon
|
|
Dim s As String = DaycareID.ToString() & "|Egg|" & newEggID.ToString()
|
|
|
|
Logger.Debug("Egg created!" & Environment.NewLine & "EggID: " & newEggID)
|
|
TriggerCall(DaycareID)
|
|
|
|
Dim oldData As String = Core.Player.DaycareData
|
|
If oldData <> "" Then
|
|
oldData &= Environment.NewLine
|
|
End If
|
|
oldData &= s
|
|
Core.Player.DaycareData = oldData
|
|
End If
|
|
Else
|
|
Logger.Debug("Pokémon in Daycare " & DaycareID & " cannot breed.")
|
|
End If
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Public Shared Sub TriggerCall(ByVal daycareID As Integer)
|
|
If ActionScript.IsRegistered("daycare_callid_" & daycareID.ToString()) = True Then
|
|
Dim c() As Object = ActionScript.GetRegisterValue("daycare_callid_" & daycareID.ToString())
|
|
If Not c(0) Is Nothing And Not c(1) Is Nothing Then
|
|
Dim callID As String = CStr(c(0))
|
|
|
|
GameJolt.PokegearScreen.CallID(callID, True, False)
|
|
Else
|
|
Logger.Debug("Cannot initialize call for Daycare ID " & daycareID.ToString() & ".")
|
|
End If
|
|
Else
|
|
Logger.Debug("Cannot initialize call for Daycare ID " & daycareID.ToString() & ".")
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Sub EggCircle()
|
|
Core.Player.PlayerTemp.DayCareCycle = 256
|
|
ObtainEgg()
|
|
End Sub
|
|
|
|
End Class |