148 lines
4.8 KiB
VB.net
148 lines
4.8 KiB
VB.net
Namespace Abilities
|
|
|
|
Public Class Pickup
|
|
|
|
Inherits Ability
|
|
|
|
Public Sub New()
|
|
MyBase.New(53, "Pickup", "The Pokémon may pick up items.")
|
|
End Sub
|
|
|
|
Public Shared Sub Pickup()
|
|
For Each p As Pokemon In Core.Player.Pokemons
|
|
If p.Ability IsNot Nothing AndAlso p.Ability.Name.ToLower() = "pickup" Then
|
|
If p.Item Is Nothing Then
|
|
Dim chance As Integer = Core.Random.Next(0, 100)
|
|
Dim itemList As New List(Of Integer)
|
|
If chance < 30 Then
|
|
itemList = Get30(p)
|
|
ElseIf chance >= 30 And chance < 40 Then
|
|
itemList = Get10(p)
|
|
ElseIf chance >= 40 And chance < 44 Then
|
|
itemList = Get4(p)
|
|
ElseIf chance = 44 Then
|
|
itemList = Get1(p)
|
|
End If
|
|
If itemList.Count > 0 Then
|
|
p.Item = Item.GetItemByID(itemList(Core.Random.Next(0, itemList.Count)).ToString)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Shared Function GetLevelStep(ByVal p As Pokemon) As Integer
|
|
Return CInt(Math.Ceiling(p.Level / 10))
|
|
End Function
|
|
|
|
Private Shared Function Get30(ByVal p As Pokemon) As List(Of Integer)
|
|
Dim l As New List(Of Integer)
|
|
Select Case GetLevelStep(p)
|
|
Case 1
|
|
l.Add(18)
|
|
Case 2
|
|
l.Add(9)
|
|
Case 3
|
|
l.Add(17)
|
|
Case 4
|
|
l.Add(4)
|
|
Case 5
|
|
l.Add(20)
|
|
Case 6
|
|
l.Add(19)
|
|
Case 7
|
|
l.Add(38)
|
|
Case 8
|
|
l.Add(16)
|
|
Case 9
|
|
l.Add(2)
|
|
Case 10
|
|
l.Add(39)
|
|
End Select
|
|
Return l
|
|
End Function
|
|
|
|
Private Shared Function Get10(ByVal p As Pokemon) As List(Of Integer)
|
|
Dim l As New List(Of Integer)
|
|
Select Case GetLevelStep(p)
|
|
Case 1
|
|
l.AddRange({9, 17, 4, 20, 19, 38})
|
|
Case 2
|
|
l.AddRange({17, 4, 20, 19, 38, 16})
|
|
Case 3
|
|
l.AddRange({4, 20, 19, 38, 16, 2})
|
|
Case 4
|
|
l.AddRange({20, 19, 38, 16, 2, 39})
|
|
Case 5
|
|
l.AddRange({19, 38, 16, 2, 39, 32})
|
|
Case 6
|
|
l.AddRange({38, 16, 2, 39, 32, 169})
|
|
Case 7
|
|
l.AddRange({16, 2, 39, 32, 169, 8})
|
|
Case 8
|
|
l.AddRange({2, 39, 32, 169, 8, 190})
|
|
Case 9
|
|
l.AddRange({39, 32, 169, 8, 190, 14})
|
|
Case 10
|
|
l.AddRange({32, 169, 8, 190, 14, 40})
|
|
End Select
|
|
Return l
|
|
End Function
|
|
|
|
Private Shared Function Get4(ByVal p As Pokemon) As List(Of Integer)
|
|
Dim l As New List(Of Integer)
|
|
Select Case GetLevelStep(p)
|
|
Case 1
|
|
l.AddRange({16, 2})
|
|
Case 2
|
|
l.AddRange({2, 39})
|
|
Case 3
|
|
l.AddRange({39, 32})
|
|
Case 4
|
|
l.AddRange({32, 169})
|
|
Case 5
|
|
l.AddRange({169, 8})
|
|
Case 6
|
|
l.AddRange({8, 190})
|
|
Case 7
|
|
l.AddRange({190, 14})
|
|
Case 8
|
|
l.AddRange({14, 40})
|
|
Case 9
|
|
l.AddRange({40, 62})
|
|
Case 10
|
|
l.AddRange({62, 21})
|
|
End Select
|
|
Return l
|
|
End Function
|
|
|
|
Private Shared Function Get1(ByVal p As Pokemon) As List(Of Integer)
|
|
Dim l As New List(Of Integer)
|
|
Select Case GetLevelStep(p)
|
|
Case 1
|
|
l.AddRange({36, 32})
|
|
Case 2
|
|
l.AddRange({32, 82})
|
|
Case 3
|
|
l.AddRange({82, 14})
|
|
Case 4
|
|
l.AddRange({14, 63})
|
|
Case 5
|
|
l.AddRange({63, 28})
|
|
Case 6
|
|
l.AddRange({28, 83})
|
|
Case 7
|
|
l.AddRange({83, 112})
|
|
Case 8
|
|
l.AddRange({65, 83})
|
|
Case 9
|
|
l.AddRange({83, 146})
|
|
Case 10
|
|
l.AddRange({146, 83})
|
|
End Select
|
|
Return l
|
|
End Function
|
|
|
|
End Class
|
|
|
|
End Namespace |