mastershinyrate
create global control for shiny rate, update it for standard encounters and breeding and make it script callable
This commit is contained in:
parent
7ead411d0a
commit
e5d543c945
|
@ -6,7 +6,28 @@ Public Class Pokemon
|
||||||
''' <summary>
|
''' <summary>
|
||||||
''' Defines which Pokémon in the default GameMode are considered "legendary".
|
''' Defines which Pokémon in the default GameMode are considered "legendary".
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Shared ReadOnly Legendaries() As Integer = {144, 145, 146, 150, 151, 243, 244, 245, 249, 250, 251, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 716, 717, 718, 719, 720, 721}
|
Public Shared ReadOnly Legendaries() As Integer = {144, 145, 146, 150, 151, 243, 244, 245, 249, 250, 251, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 716, 717, 718, 719, 720, 721, 772, 773, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898}
|
||||||
|
|
||||||
|
Public Shared ReadOnly Property MasterShinyRate(Optional ByVal adjusted As Boolean = True) As Integer
|
||||||
|
Get
|
||||||
|
Dim shinyRate As Integer = 4096
|
||||||
|
|
||||||
|
If adjusted Then
|
||||||
|
For Each mysteryEvent As MysteryEventScreen.MysteryEvent In MysteryEventScreen.ActivatedMysteryEvents
|
||||||
|
If mysteryEvent.EventType = MysteryEventScreen.EventTypes.ShinyMultiplier Then
|
||||||
|
shinyRate = CInt(shinyRate / CSng(mysteryEvent.Value.Replace(".", GameController.DecSeparator)))
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
'ShinyCharm
|
||||||
|
If Core.Player.Inventory.GetItemAmount(242) > 0 Then
|
||||||
|
shinyRate = CInt(shinyRate * 0.75F)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return shinyRate
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
#Region "Events"
|
#Region "Events"
|
||||||
|
|
||||||
|
@ -1834,20 +1855,20 @@ Public Class Pokemon
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Dim shinyRate As Integer = 4096
|
Dim shinyRate As Integer = MasterShinyRate
|
||||||
|
|
||||||
For Each mysteryEvent As MysteryEventScreen.MysteryEvent In MysteryEventScreen.ActivatedMysteryEvents
|
'For Each mysteryEvent As MysteryEventScreen.MysteryEvent In MysteryEventScreen.ActivatedMysteryEvents
|
||||||
If mysteryEvent.EventType = MysteryEventScreen.EventTypes.ShinyMultiplier Then
|
' If mysteryEvent.EventType = MysteryEventScreen.EventTypes.ShinyMultiplier Then
|
||||||
shinyRate = CInt(shinyRate / CSng(mysteryEvent.Value.Replace(".", GameController.DecSeparator)))
|
' shinyRate = CInt(shinyRate / CSng(mysteryEvent.Value.Replace(".", GameController.DecSeparator)))
|
||||||
End If
|
' End If
|
||||||
Next
|
'Next
|
||||||
|
|
||||||
'ShinyCharm
|
''ShinyCharm
|
||||||
If Core.Player.Inventory.GetItemAmount(242) > 0 Then
|
'If Core.Player.Inventory.GetItemAmount(242) > 0 Then
|
||||||
shinyRate = CInt(shinyRate * 0.75F)
|
' shinyRate = CInt(shinyRate * 0.75F)
|
||||||
End If
|
'End If
|
||||||
|
|
||||||
If Core.Random.Next(0, shinyRate) = 0 And Pokemon.Legendaries.Contains(Me.Number) = False Then
|
If Core.Random.Next(0, shinyRate) = 0 Then
|
||||||
Me.IsShiny = True
|
Me.IsShiny = True
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
|
@ -315,12 +315,12 @@
|
||||||
Dim Shiny1 As Boolean = parent1.IsShiny
|
Dim Shiny1 As Boolean = parent1.IsShiny
|
||||||
Dim Shiny2 As Boolean = parent2.IsShiny
|
Dim Shiny2 As Boolean = parent2.IsShiny
|
||||||
|
|
||||||
Dim chances As List(Of Integer) = {1, 4096}.ToList()
|
Dim chances As List(Of Integer) = {1, Pokemon.MasterShinyRate}.ToList()
|
||||||
|
|
||||||
If Shiny1 = True And Shiny2 = True Then
|
If Shiny1 = True And Shiny2 = True Then
|
||||||
chances = {12, 4096}.ToList()
|
chances = {12, Pokemon.MasterShinyRate}.ToList() '12/base rate odds
|
||||||
ElseIf Shiny1 = True Or Shiny2 = True Then
|
ElseIf Shiny1 = True Or Shiny2 = True Then
|
||||||
chances = {6, 4096}.ToList()
|
chances = {6, Pokemon.MasterShinyRate}.ToList() '6/base rate odds
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Core.Random.Next(0, chances(1)) < chances(0) Then
|
If Core.Random.Next(0, chances(1)) < chances(0) Then
|
||||||
|
|
|
@ -449,6 +449,12 @@
|
||||||
If Core.Player.Pokemons.Count - 1 >= index Then
|
If Core.Player.Pokemons.Count - 1 >= index Then
|
||||||
Return Core.Player.Pokemons(index).EggSteps
|
Return Core.Player.Pokemons(index).EggSteps
|
||||||
End If
|
End If
|
||||||
|
Case "mastershinyrate"
|
||||||
|
Dim adjusted As Boolean = True
|
||||||
|
If argument <> "" Then
|
||||||
|
adjusted = CBool(argument)
|
||||||
|
End If
|
||||||
|
Return Pokemon.MasterShinyRate(adjusted)
|
||||||
End Select
|
End Select
|
||||||
Return DEFAULTNULL
|
Return DEFAULTNULL
|
||||||
End Function
|
End Function
|
||||||
|
|
Loading…
Reference in New Issue