Added loading the spreadsheet data into Basic data array text, and loading the data from the Basic data array instead of the sheet, in order to remove dependency from the data sheet.
This commit is contained in:
parent
f2e8f46e7b
commit
860e2d1ef4
122
_0Main.vb
122
_0Main.vb
@ -17,12 +17,6 @@ Type aStats
|
|||||||
nMaxCP As Integer
|
nMaxCP As Integer
|
||||||
End Type
|
End Type
|
||||||
|
|
||||||
' The combat power multiplier.
|
|
||||||
Type aCPM
|
|
||||||
fLevel As Double
|
|
||||||
fCPM As Double
|
|
||||||
End Type
|
|
||||||
|
|
||||||
' The amount of star dust to power-up.
|
' The amount of star dust to power-up.
|
||||||
Type aStarDust
|
Type aStarDust
|
||||||
fLevel As Double
|
fLevel As Double
|
||||||
@ -42,8 +36,8 @@ Type aFindIVParam
|
|||||||
nAppraisal2 As Integer
|
nAppraisal2 As Integer
|
||||||
End Type
|
End Type
|
||||||
|
|
||||||
Private maBaseStats () As New aStats, maCPM () As New aCPM
|
Private maBaseStats () As New aStats
|
||||||
Private maStarDust () As New aStarDust
|
Private mCPM () As Double, mStarDust () As Integer
|
||||||
|
|
||||||
' subMain: The main program
|
' subMain: The main program
|
||||||
Sub subMain
|
Sub subMain
|
||||||
@ -84,7 +78,7 @@ Function fnFindIV (aQuery As aFindIVParam) As Variant
|
|||||||
Dim fLevel As Double, nStamina As Integer
|
Dim fLevel As Double, nStamina As Integer
|
||||||
Dim nAttack As Integer, nDefense As integer
|
Dim nAttack As Integer, nDefense As integer
|
||||||
Dim nI As Integer, nJ As Integer
|
Dim nI As Integer, nJ As Integer
|
||||||
Dim nStep As Integer, nCount As Integer
|
Dim fStep As Double, nCount As Integer
|
||||||
Dim aEvBaseStats As new aStats, aTempIV As New aStats
|
Dim aEvBaseStats As new aStats, aTempIV As New aStats
|
||||||
|
|
||||||
If aQuery.sPokemon = "" Then
|
If aQuery.sPokemon = "" Then
|
||||||
@ -92,26 +86,28 @@ Function fnFindIV (aQuery As aFindIVParam) As Variant
|
|||||||
Exit Function
|
Exit Function
|
||||||
End If
|
End If
|
||||||
If aQuery.bIsNew Then
|
If aQuery.bIsNew Then
|
||||||
nStep = 2
|
fStep = 1
|
||||||
Else
|
Else
|
||||||
nStep = 1
|
fStep = 0.5
|
||||||
End If
|
End If
|
||||||
aBaseStats = fnGetBaseStats (aQuery.sPokemon)
|
aBaseStats = fnGetBaseStats (aQuery.sPokemon)
|
||||||
aEvBaseStats = fnGetBaseStats (aBaseStats.sEvolveInto)
|
aEvBaseStats = fnGetBaseStats (aBaseStats.sEvolveInto)
|
||||||
subReadStarDust
|
subReadStarDust
|
||||||
nCount = -1
|
nCount = -1
|
||||||
For nI = 0 To UBound (maStarDust) Step nStep
|
For fLevel = 1 To UBound (mStarDust) Step fStep
|
||||||
fLevel = maStarDust (nI).fLevel
|
If mStarDust (CInt (fLevel - 0.5)) = aQuery.nStarDust Then
|
||||||
If maStarDust (nI).nStarDust = aQuery.nStarDust Then
|
'For nI = 0 To UBound (maStarDust) Step nStep
|
||||||
|
' fLevel = maStarDust (nI).fLevel
|
||||||
|
' If maStarDust (nI).nStarDust = aQuery.nStarDust Then
|
||||||
For nStamina = 0 To 15
|
For nStamina = 0 To 15
|
||||||
If fnCalcHP (aBaseStats, fLevel, nStamina) = aQuery.nHP Then
|
If fnCalcHP (aBaseStats, fLevel, nStamina) = aQuery.nHP Then
|
||||||
For nAttack = 0 To 15
|
For nAttack = 0 To 15
|
||||||
For nDefense = 0 To 15
|
For nDefense = 0 To 15
|
||||||
If fnCalcCP (aBaseStats, fLevel, nAttack, nDefense, nStamina) = aQuery.nCP _
|
If fnCalcCP (aBaseStats, fLevel, nAttack, nDefense, nStamina) = aQuery.nCP _
|
||||||
And Not (fnFilterAppraisals (aQuery, nAttack, nDefense, nStamina)) Then
|
And Not (fnFilterAppraisals (aQuery, nAttack, nDefense, nStamina)) Then
|
||||||
nCount = nCount + 1
|
nCount = nCount + 1
|
||||||
ReDim Preserve maIV (nCount) As New aStats
|
ReDim Preserve maIV (nCount) As New aStats
|
||||||
With maIV (nCount)
|
With maIV (nCount)
|
||||||
.sNo = aBaseStats.sNo
|
.sNo = aBaseStats.sNo
|
||||||
.sPokemon = aQuery.sPokemon
|
.sPokemon = aQuery.sPokemon
|
||||||
.fLevel = fLevel
|
.fLevel = fLevel
|
||||||
@ -133,7 +129,7 @@ Function fnFindIV (aQuery As aFindIVParam) As Variant
|
|||||||
End If
|
End If
|
||||||
Next nStamina
|
Next nStamina
|
||||||
End If
|
End If
|
||||||
Next nI
|
Next fLevel
|
||||||
' Sorts the IVs
|
' Sorts the IVs
|
||||||
For nI = 0 To UBound (maIV) - 1
|
For nI = 0 To UBound (maIV) - 1
|
||||||
For nJ = nI + 1 To UBound (maIV)
|
For nJ = nI + 1 To UBound (maIV)
|
||||||
@ -343,20 +339,20 @@ Function fnGetBaseStats (sPokemon As String) As aStats
|
|||||||
Exit Function
|
Exit Function
|
||||||
End If
|
End If
|
||||||
Next nI
|
Next nI
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
' fnGetCPM: Returns the combat power multiplier.
|
' fnGetCPM: Returns the combat power multiplier.
|
||||||
Function fnGetCPM (fLevel As Double) As Double
|
Function fnGetCPM (fLevel As Double) As Double
|
||||||
Dim nI As Integer
|
Dim nI As Integer
|
||||||
|
|
||||||
subReadCPM
|
subReadCPM
|
||||||
For nI = 0 To UBound (maCPM)
|
If CInt (fLevel) = fLevel Then
|
||||||
If maCPM (nI).fLevel = fLevel Then
|
fnGetCPM = mCPM (fLevel)
|
||||||
fnGetCPM = maCPM (nI).fCPM
|
Else
|
||||||
Exit Function
|
fnGetCPM = ((mCpm (fLevel - 0.5) ^ 2 _
|
||||||
End If
|
+ mCpm (fLevel + 0.5) ^ 2) / 2) ^ 0.5
|
||||||
Next nI
|
End If
|
||||||
End Function
|
End Function
|
||||||
|
|
||||||
' fnFloor: Returns the floor of the number
|
' fnFloor: Returns the floor of the number
|
||||||
Function fnFloor (fNumber As Double) As Integer
|
Function fnFloor (fNumber As Double) As Integer
|
||||||
@ -365,72 +361,34 @@ End Function
|
|||||||
|
|
||||||
' subReadBaseStats: Reads the base stats table.
|
' subReadBaseStats: Reads the base stats table.
|
||||||
Sub subReadBaseStats
|
Sub subReadBaseStats
|
||||||
Dim oSheet As Object, oRange As Object, mData As Variant
|
Dim mData As Variant, nI As Integer
|
||||||
Dim nCount As Integer, nRow As Integer, nColumn As Integer
|
|
||||||
|
|
||||||
If UBound (maBaseStats) = -1 Then
|
If UBound (maBaseStats) = -1 Then
|
||||||
oSheet = ThisComponent.getSheets.getByName ("basestat")
|
mData = fnGetBaseStatsData
|
||||||
oRange = oSheet.getCellRangeByName ("BaseStats")
|
ReDim Preserve maBaseStats (UBound (mData)) As New aStats
|
||||||
mData = oRange.getDataArray
|
For nI = 0 To UBound (mData)
|
||||||
nCount = -1
|
With maBaseStats (nI)
|
||||||
For nRow = 1 To UBound (mData) - 1
|
.sNo = mData (nI) (1)
|
||||||
nCount = nCount + 1
|
.sPokemon = mData (nI) (0)
|
||||||
ReDim Preserve maBaseStats (nCount) As New aStats
|
.nStamina = mData (nI) (2)
|
||||||
With maBaseStats (nCount)
|
.nAttack = mData (nI) (3)
|
||||||
.sNo = mData (nRow) (1)
|
.nDefense = mData (nI) (4)
|
||||||
.sPokemon = mData (nRow) (0)
|
.sEvolveInto = mData (nI) (5)
|
||||||
.nStamina = mData (nRow) (3)
|
|
||||||
.nAttack = mData (nRow) (4)
|
|
||||||
.nDefense = mData (nRow) (5)
|
|
||||||
End With
|
End With
|
||||||
For nColumn = 9 To 7 Step -1
|
Next nI
|
||||||
If mData (nRow) (nColumn) <> "" Then
|
|
||||||
maBaseStats (nCount).sEvolveInto = mData (nRow) (nColumn)
|
|
||||||
nColumn = 6
|
|
||||||
End If
|
|
||||||
Next nColumn
|
|
||||||
Next nRow
|
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
' subReadCPM: Reads the CPM table.
|
' subReadCPM: Reads the CPM table.
|
||||||
Sub subReadCPM
|
Sub subReadCPM
|
||||||
Dim oSheet As Object, oRange As Object, mData As Variant
|
If UBound (mCPM) = -1 Then
|
||||||
Dim nCount As Integer, nRow As Integer
|
mCPM = fnGetCPMData
|
||||||
|
|
||||||
If UBound (maCPM) = -1 Then
|
|
||||||
oSheet = ThisComponent.getSheets.getByName ("cpm")
|
|
||||||
oRange = oSheet.getCellRangeByName ("CPM")
|
|
||||||
mData = oRange.getDataArray
|
|
||||||
nCount = -1
|
|
||||||
For nRow = 1 To UBound (mData) - 1
|
|
||||||
nCount = nCount + 1
|
|
||||||
ReDim Preserve maCPM (nCount) As New aCPM
|
|
||||||
With maCPM (nCount)
|
|
||||||
.fLevel = mData (nRow) (0)
|
|
||||||
.fCPM = mData (nRow) (1)
|
|
||||||
End With
|
|
||||||
Next nRow
|
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
' subReadStarDust: Reads the star dust table.
|
' subReadStarDust: Reads the star dust table.
|
||||||
Sub subReadStarDust
|
Sub subReadStarDust
|
||||||
Dim oSheet As Object, oRange As Object, mData As Variant
|
If UBound (mStarDust) = -1 Then
|
||||||
Dim nCount As Integer, nRow As Integer
|
mStarDust = fnGetStarDustData
|
||||||
|
|
||||||
If UBound (maStarDust) = -1 Then
|
|
||||||
oSheet = ThisComponent.getSheets.getByName ("lvup")
|
|
||||||
oRange = oSheet.getCellRangeByName ("A2:D81")
|
|
||||||
mData = oRange.getDataArray
|
|
||||||
nCount = -1
|
|
||||||
For nRow = 1 To UBound (mData) - 1
|
|
||||||
nCount = nCount + 1
|
|
||||||
ReDim Preserve maStarDust (nCount) As New aStarDust
|
|
||||||
With maStarDust (nCount)
|
|
||||||
.fLevel = mData (nRow) (0)
|
|
||||||
.nStarDust = mData (nRow) (2)
|
|
||||||
End With
|
|
||||||
Next nRow
|
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
29
_1Dialog.vb
29
_1Dialog.vb
@ -29,13 +29,13 @@ Function fnAskParam As aFindIVParam
|
|||||||
' Creates a dialog
|
' Creates a dialog
|
||||||
oDialogModel = CreateUnoService ( _
|
oDialogModel = CreateUnoService ( _
|
||||||
"com.sun.star.awt.UnoControlDialogModel")
|
"com.sun.star.awt.UnoControlDialogModel")
|
||||||
oDialogModel.setPropertyValue ("PositionX", 200)
|
oDialogModel.setPropertyValue ("PositionX", 100)
|
||||||
oDialogModel.setPropertyValue ("PositionY", 200)
|
oDialogModel.setPropertyValue ("PositionY", 100)
|
||||||
oDialogModel.setPropertyValue ("Height", 150)
|
oDialogModel.setPropertyValue ("Height", 140)
|
||||||
oDialogModel.setPropertyValue ("Width", 220)
|
oDialogModel.setPropertyValue ("Width", 220)
|
||||||
oDialogModel.setPropertyValue ("Title", "Pokémon Parameters")
|
oDialogModel.setPropertyValue ("Title", "Pokémon Parameters")
|
||||||
|
|
||||||
' Adds the Pokémon list.
|
' Adds a text label for the Pokémon list.
|
||||||
oTextModel = oDialogModel.createInstance ( _
|
oTextModel = oDialogModel.createInstance ( _
|
||||||
"com.sun.star.awt.UnoControlFixedTextModel")
|
"com.sun.star.awt.UnoControlFixedTextModel")
|
||||||
oTextModel.setPropertyValue ("PositionX", 5)
|
oTextModel.setPropertyValue ("PositionX", 5)
|
||||||
@ -116,13 +116,13 @@ Function fnAskParam As aFindIVParam
|
|||||||
subReadStarDust
|
subReadStarDust
|
||||||
sTemp = " "
|
sTemp = " "
|
||||||
ReDim mListItems () As String
|
ReDim mListItems () As String
|
||||||
nCount = -1
|
nCount = -1
|
||||||
For nI = 0 To UBound (maStarDust)
|
For nI = 1 To UBound (mStarDust)
|
||||||
If InStr (sTemp, " " & CStr (maStarDust (nI).nStarDust) & " ") = 0 Then
|
If InStr (sTemp, " " & CStr (mStarDust (nI)) & " ") = 0 Then
|
||||||
nCount = nCount + 1
|
nCount = nCount + 1
|
||||||
ReDim Preserve mListItems (nCount) As String
|
ReDim Preserve mListItems (nCount) As String
|
||||||
mListItems (nCount) = CStr (maStarDust (nI).nStarDust)
|
mListItems (nCount) = CStr (mStarDust (nI))
|
||||||
sTemp = sTemp & CStr (maStarDust (nI).nStarDust) & " "
|
sTemp = sTemp & CStr (mStarDust (nI)) & " "
|
||||||
End If
|
End If
|
||||||
Next nI
|
Next nI
|
||||||
oListModel = oDialogModel.createInstance ( _
|
oListModel = oDialogModel.createInstance ( _
|
||||||
@ -177,7 +177,7 @@ Function fnAskParam As aFindIVParam
|
|||||||
"com.sun.star.awt.UnoControlGroupBoxModel")
|
"com.sun.star.awt.UnoControlGroupBoxModel")
|
||||||
oGroupModel.setPropertyValue ("PositionX", 5)
|
oGroupModel.setPropertyValue ("PositionX", 5)
|
||||||
oGroupModel.setPropertyValue ("PositionY", 50)
|
oGroupModel.setPropertyValue ("PositionY", 50)
|
||||||
oGroupModel.setPropertyValue ("Height", 60)
|
oGroupModel.setPropertyValue ("Height", 65)
|
||||||
oGroupModel.setPropertyValue ("Width", 210)
|
oGroupModel.setPropertyValue ("Width", 210)
|
||||||
oGroupModel.setPropertyValue ("Label", "Apprasals")
|
oGroupModel.setPropertyValue ("Label", "Apprasals")
|
||||||
oDialogModel.insertByName ("grpApprasals", oGroupModel)
|
oDialogModel.insertByName ("grpApprasals", oGroupModel)
|
||||||
@ -257,19 +257,20 @@ Function fnAskParam As aFindIVParam
|
|||||||
' Adds the OK button.
|
' Adds the OK button.
|
||||||
oButtonModel = oDialogModel.createInstance ( _
|
oButtonModel = oDialogModel.createInstance ( _
|
||||||
"com.sun.star.awt.UnoControlButtonModel")
|
"com.sun.star.awt.UnoControlButtonModel")
|
||||||
oButtonModel.setPropertyValue ("PositionX", 10)
|
oButtonModel.setPropertyValue ("PositionX", 35)
|
||||||
oButtonModel.setPropertyValue ("PositionY", 130)
|
oButtonModel.setPropertyValue ("PositionY", 120)
|
||||||
oButtonModel.setPropertyValue ("Height", 15)
|
oButtonModel.setPropertyValue ("Height", 15)
|
||||||
oButtonModel.setPropertyValue ("Width", 60)
|
oButtonModel.setPropertyValue ("Width", 60)
|
||||||
oButtonModel.setPropertyValue ("PushButtonType", _
|
oButtonModel.setPropertyValue ("PushButtonType", _
|
||||||
com.sun.star.awt.PushButtonType.OK)
|
com.sun.star.awt.PushButtonType.OK)
|
||||||
|
oButtonModel.setPropertyValue ("DefaultButton", True)
|
||||||
oDialogModel.insertByName ("btnOK", oButtonModel)
|
oDialogModel.insertByName ("btnOK", oButtonModel)
|
||||||
|
|
||||||
' Adds the cancel button.
|
' Adds the cancel button.
|
||||||
oButtonModel = oDialogModel.createInstance ( _
|
oButtonModel = oDialogModel.createInstance ( _
|
||||||
"com.sun.star.awt.UnoControlButtonModel")
|
"com.sun.star.awt.UnoControlButtonModel")
|
||||||
oButtonModel.setPropertyValue ("PositionX", 80)
|
oButtonModel.setPropertyValue ("PositionX", 125)
|
||||||
oButtonModel.setPropertyValue ("PositionY", 130)
|
oButtonModel.setPropertyValue ("PositionY", 120)
|
||||||
oButtonModel.setPropertyValue ("Height", 15)
|
oButtonModel.setPropertyValue ("Height", 15)
|
||||||
oButtonModel.setPropertyValue ("Width", 60)
|
oButtonModel.setPropertyValue ("Width", 60)
|
||||||
oButtonModel.setPropertyValue ("PushButtonType", _
|
oButtonModel.setPropertyValue ("PushButtonType", _
|
||||||
|
252
_2Data.vb
Normal file
252
_2Data.vb
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
' _2Data: The Pokémon Go IV data
|
||||||
|
' by imacat <imacat@mail.imacat.idv.tw>, 2016-11-28
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
' fnGetBaseStatsData: Returns the base stats table
|
||||||
|
Function fnGetBaseStatsData As Variant
|
||||||
|
fnGetBaseStatsData = Array( _
|
||||||
|
Array ("Bulbasaur", "001", 90, 118, 118, "Venusaur"), _
|
||||||
|
Array ("Ivysaur", "002", 120, 151, 151, "Venusaur"), _
|
||||||
|
Array ("Venusaur", "003", 160, 198, 198, "Venusaur"), _
|
||||||
|
Array ("Charmander", "004", 78, 116, 96, "Charizard"), _
|
||||||
|
Array ("Charmeleon", "005", 116, 158, 129, "Charizard"), _
|
||||||
|
Array ("Charizard", "006", 156, 223, 176, "Charizard"), _
|
||||||
|
Array ("Squirtle", "007", 88, 94, 122, "Blastoise"), _
|
||||||
|
Array ("Wartortle", "008", 118, 126, 155, "Blastoise"), _
|
||||||
|
Array ("Blastoise", "009", 158, 171, 210, "Blastoise"), _
|
||||||
|
Array ("Caterpie", "010", 90, 55, 62, "Butterfree"), _
|
||||||
|
Array ("Metapod", "011", 100, 45, 64, "Butterfree"), _
|
||||||
|
Array ("Butterfree", "012", 120, 167, 151, "Butterfree"), _
|
||||||
|
Array ("Weedle", "013", 80, 63, 55, "Beedrill"), _
|
||||||
|
Array ("Kakuna", "014", 90, 46, 86, "Beedrill"), _
|
||||||
|
Array ("Beedrill", "015", 130, 169, 150, "Beedrill"), _
|
||||||
|
Array ("Pidgey", "016", 80, 85, 76, "Pidgeot"), _
|
||||||
|
Array ("Pidgeotto", "017", 126, 117, 108, "Pidgeot"), _
|
||||||
|
Array ("Pidgeot", "018", 166, 166, 157, "Pidgeot"), _
|
||||||
|
Array ("Rattata", "019", 60, 103, 70, "Raticate"), _
|
||||||
|
Array ("Raticate", "020", 110, 161, 144, "Raticate"), _
|
||||||
|
Array ("Spearow", "021", 80, 112, 61, "Fearow"), _
|
||||||
|
Array ("Fearow", "022", 130, 182, 135, "Fearow"), _
|
||||||
|
Array ("Ekans", "023", 70, 110, 102, "Arbok"), _
|
||||||
|
Array ("Arbok", "024", 120, 167, 158, "Arbok"), _
|
||||||
|
Array ("Pikachu", "025", 70, 112, 101, "Raichu"), _
|
||||||
|
Array ("Raichu", "026", 120, 193, 165, "Raichu"), _
|
||||||
|
Array ("Sandshrew", "027", 100, 126, 145, "Sandslash"), _
|
||||||
|
Array ("Sandslash", "028", 150, 182, 202, "Sandslash"), _
|
||||||
|
Array ("Nidoran♀", "029", 110, 86, 94, "Nidoqueen"), _
|
||||||
|
Array ("Nidorina", "030", 140, 117, 126, "Nidoqueen"), _
|
||||||
|
Array ("Nidoqueen", "031", 180, 180, 174, "Nidoqueen"), _
|
||||||
|
Array ("Nidoran♂", "032", 92, 105, 76, "Nidoking"), _
|
||||||
|
Array ("Nidorino", "033", 122, 137, 112, "Nidoking"), _
|
||||||
|
Array ("Nidoking", "034", 162, 204, 157, "Nidoking"), _
|
||||||
|
Array ("Clefairy", "035", 140, 107, 116, "Clefable"), _
|
||||||
|
Array ("Clefable", "036", 190, 178, 171, "Clefable"), _
|
||||||
|
Array ("Vulpix", "037", 76, 96, 122, "Ninetales"), _
|
||||||
|
Array ("Ninetales", "038", 146, 169, 204, "Ninetales"), _
|
||||||
|
Array ("Jigglypuff", "039", 230, 80, 44, "Wigglytuff"), _
|
||||||
|
Array ("Wigglytuff", "040", 280, 156, 93, "Wigglytuff"), _
|
||||||
|
Array ("Zubat", "041", 80, 83, 76, "Golbat"), _
|
||||||
|
Array ("Golbat", "042", 150, 161, 153, "Golbat"), _
|
||||||
|
Array ("Oddish", "043", 90, 131, 116, "Vileplume"), _
|
||||||
|
Array ("Gloom", "044", 120, 153, 139, "Vileplume"), _
|
||||||
|
Array ("Vileplume", "045", 150, 202, 170, "Vileplume"), _
|
||||||
|
Array ("Paras", "046", 70, 121, 99, "Parasect"), _
|
||||||
|
Array ("Parasect", "047", 120, 165, 146, "Parasect"), _
|
||||||
|
Array ("Venonat", "048", 120, 100, 102, "Venomoth"), _
|
||||||
|
Array ("Venomoth", "049", 140, 179, 150, "Venomoth"), _
|
||||||
|
Array ("Diglett", "050", 20, 109, 88, "Dugtrio"), _
|
||||||
|
Array ("Dugtrio", "051", 70, 167, 147, "Dugtrio"), _
|
||||||
|
Array ("Meowth", "052", 80, 92, 81, "Persian"), _
|
||||||
|
Array ("Persian", "053", 130, 150, 139, "Persian"), _
|
||||||
|
Array ("Psyduck", "054", 100, 122, 96, "Golduck"), _
|
||||||
|
Array ("Golduck", "055", 160, 191, 163, "Golduck"), _
|
||||||
|
Array ("Mankey", "056", 80, 148, 87, "Primeape"), _
|
||||||
|
Array ("Primeape", "057", 130, 207, 144, "Primeape"), _
|
||||||
|
Array ("Growlithe", "058", 110, 136, 96, "Arcanine"), _
|
||||||
|
Array ("Arcanine", "059", 180, 227, 166, "Arcanine"), _
|
||||||
|
Array ("Poliwag", "060", 80, 101, 82, "Poliwrath"), _
|
||||||
|
Array ("Poliwhirl", "061", 130, 130, 130, "Poliwrath"), _
|
||||||
|
Array ("Poliwrath", "062", 180, 182, 187, "Poliwrath"), _
|
||||||
|
Array ("Abra", "063", 50, 195, 103, "Alakazam"), _
|
||||||
|
Array ("Kadabra", "064", 80, 232, 138, "Alakazam"), _
|
||||||
|
Array ("Alakazam", "065", 110, 271, 194, "Alakazam"), _
|
||||||
|
Array ("Machop", "066", 140, 137, 88, "Machamp"), _
|
||||||
|
Array ("Machoke", "067", 160, 177, 130, "Machamp"), _
|
||||||
|
Array ("Machamp", "068", 180, 234, 162, "Machamp"), _
|
||||||
|
Array ("Bellsprout", "069", 100, 139, 64, "Victreebel"), _
|
||||||
|
Array ("Weepinbell", "070", 130, 172, 95, "Victreebel"), _
|
||||||
|
Array ("Victreebel", "071", 160, 207, 138, "Victreebel"), _
|
||||||
|
Array ("Tentacool", "072", 80, 97, 182, "Tentacruel"), _
|
||||||
|
Array ("Tentacruel", "073", 160, 166, 237, "Tentacruel"), _
|
||||||
|
Array ("Geodude", "074", 80, 132, 163, "Golem"), _
|
||||||
|
Array ("Graveler", "075", 110, 164, 196, "Golem"), _
|
||||||
|
Array ("Golem", "076", 160, 211, 229, "Golem"), _
|
||||||
|
Array ("Ponyta", "077", 100, 170, 132, "Rapidash"), _
|
||||||
|
Array ("Rapidash", "078", 130, 207, 167, "Rapidash"), _
|
||||||
|
Array ("Slowpoke", "079", 180, 109, 109, "Slowbro"), _
|
||||||
|
Array ("Slowbro", "080", 190, 177, 194, "Slowbro"), _
|
||||||
|
Array ("Magnemite", "081", 50, 165, 128, "Magneton"), _
|
||||||
|
Array ("Magneton", "082", 100, 223, 182, "Magneton"), _
|
||||||
|
Array ("Farfetch'd", "083", 104, 124, 118, "Farfetch'd"), _
|
||||||
|
Array ("Doduo", "084", 70, 158, 88, "Dodrio"), _
|
||||||
|
Array ("Dodrio", "085", 120, 218, 145, "Dodrio"), _
|
||||||
|
Array ("Seel", "086", 130, 85, 128, "Dewgong"), _
|
||||||
|
Array ("Dewgong", "087", 180, 139, 184, "Dewgong"), _
|
||||||
|
Array ("Grimer", "088", 160, 135, 90, "Muk"), _
|
||||||
|
Array ("Muk", "089", 210, 190, 184, "Muk"), _
|
||||||
|
Array ("Shellder", "090", 60, 116, 168, "Cloyster"), _
|
||||||
|
Array ("Cloyster", "091", 100, 186, 323, "Cloyster"), _
|
||||||
|
Array ("Gastly", "092", 60, 186, 70, "Gengar"), _
|
||||||
|
Array ("Haunter", "093", 90, 223, 112, "Gengar"), _
|
||||||
|
Array ("Gengar", "094", 120, 261, 156, "Gengar"), _
|
||||||
|
Array ("Onix", "095", 70, 85, 288, "Onix"), _
|
||||||
|
Array ("Drowzee", "096", 120, 89, 158, "Hypno"), _
|
||||||
|
Array ("Hypno", "097", 170, 144, 215, "Hypno"), _
|
||||||
|
Array ("Krabby", "098", 60, 181, 156, "Kingler"), _
|
||||||
|
Array ("Kingler", "099", 110, 240, 214, "Kingler"), _
|
||||||
|
Array ("Voltorb", "100", 80, 109, 114, "Electrode"), _
|
||||||
|
Array ("Electrode", "101", 120, 173, 179, "Electrode"), _
|
||||||
|
Array ("Exeggcute", "102", 120, 107, 140, "Exeggutor"), _
|
||||||
|
Array ("Exeggutor", "103", 190, 233, 158, "Exeggutor"), _
|
||||||
|
Array ("Cubone", "104", 100, 90, 165, "Marowak"), _
|
||||||
|
Array ("Marowak", "105", 120, 144, 200, "Marowak"), _
|
||||||
|
Array ("Hitmonlee", "106", 100, 224, 211, "Hitmonlee"), _
|
||||||
|
Array ("Hitmonchan", "107", 100, 193, 212, "Hitmonchan"), _
|
||||||
|
Array ("Lickitung", "108", 180, 108, 137, "Lickitung"), _
|
||||||
|
Array ("Koffing", "109", 80, 119, 164, "Weezing"), _
|
||||||
|
Array ("Weezing", "110", 130, 174, 221, "Weezing"), _
|
||||||
|
Array ("Rhyhorn", "111", 160, 140, 157, "Rhydon"), _
|
||||||
|
Array ("Rhydon", "112", 210, 222, 206, "Rhydon"), _
|
||||||
|
Array ("Chansey", "113", 500, 60, 176, "Chansey"), _
|
||||||
|
Array ("Tangela", "114", 130, 183, 205, "Tangela"), _
|
||||||
|
Array ("Kangaskhan", "115", 210, 181, 165, "Kangaskhan"), _
|
||||||
|
Array ("Horsea", "116", 60, 129, 125, "Seadra"), _
|
||||||
|
Array ("Seadra", "117", 110, 187, 182, "Seadra"), _
|
||||||
|
Array ("Goldeen", "118", 90, 123, 115, "Seaking"), _
|
||||||
|
Array ("Seaking", "119", 160, 175, 154, "Seaking"), _
|
||||||
|
Array ("Staryu", "120", 60, 137, 112, "Starmie"), _
|
||||||
|
Array ("Starmie", "121", 120, 210, 184, "Starmie"), _
|
||||||
|
Array ("Mr. Mime", "122", 80, 192, 233, "Mr. Mime"), _
|
||||||
|
Array ("Scyther", "123", 140, 218, 170, "Scyther"), _
|
||||||
|
Array ("Jynx", "124", 130, 223, 182, "Jynx"), _
|
||||||
|
Array ("Electabuzz", "125", 130, 198, 173, "Electabuzz"), _
|
||||||
|
Array ("Magmar", "126", 130, 206, 169, "Magmar"), _
|
||||||
|
Array ("Pinsir", "127", 130, 238, 197, "Pinsir"), _
|
||||||
|
Array ("Tauros", "128", 150, 198, 197, "Tauros"), _
|
||||||
|
Array ("Magikarp", "129", 40, 29, 102, "Gyarados"), _
|
||||||
|
Array ("Gyarados", "130", 190, 237, 197, "Gyarados"), _
|
||||||
|
Array ("Lapras", "131", 260, 186, 190, "Lapras"), _
|
||||||
|
Array ("Ditto", "132", 96, 91, 91, "Ditto"), _
|
||||||
|
Array ("Eevee", "133", 110, 104, 121, "Vaporeon"), _
|
||||||
|
Array ("Vaporeon", "134", 260, 205, 177, "Vaporeon"), _
|
||||||
|
Array ("Jolteon", "135", 130, 232, 201, "Jolteon"), _
|
||||||
|
Array ("Flareon", "136", 130, 246, 204, "Flareon"), _
|
||||||
|
Array ("Porygon", "137", 130, 153, 139, "Porygon"), _
|
||||||
|
Array ("Omanyte", "138", 70, 155, 174, "Omastar"), _
|
||||||
|
Array ("Omastar", "139", 140, 207, 227, "Omastar"), _
|
||||||
|
Array ("Kabuto", "140", 60, 148, 162, "Kabutops"), _
|
||||||
|
Array ("Kabutops", "141", 120, 220, 203, "Kabutops"), _
|
||||||
|
Array ("Aerodactyl", "142", 160, 221, 164, "Aerodactyl"), _
|
||||||
|
Array ("Snorlax", "143", 320, 190, 190, "Snorlax"), _
|
||||||
|
Array ("Articuno", "144", 180, 192, 249, "Articuno"), _
|
||||||
|
Array ("Zapdos", "145", 180, 253, 188, "Zapdos"), _
|
||||||
|
Array ("Moltres", "146", 180, 251, 184, "Moltres"), _
|
||||||
|
Array ("Dratini", "147", 82, 119, 94, "Dragonite"), _
|
||||||
|
Array ("Dragonair", "148", 122, 163, 138, "Dragonite"), _
|
||||||
|
Array ("Dragonite", "149", 182, 263, 201, "Dragonite"), _
|
||||||
|
Array ("Mewtwo", "150", 212, 330, 200, "Mewtwo"), _
|
||||||
|
Array ("Mew", "151", 200, 210, 209, "Mew"))
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' fnGetCPMData: Returns the combat power multiplier table
|
||||||
|
Function fnGetCPMData As Variant
|
||||||
|
fnGetCPMData = Array( _
|
||||||
|
-1, _
|
||||||
|
9.4E-02, _
|
||||||
|
0.16639787, _
|
||||||
|
0.21573247, _
|
||||||
|
0.25572005, _
|
||||||
|
0.29024988, _
|
||||||
|
0.3210876, _
|
||||||
|
0.34921268, _
|
||||||
|
0.37523559, _
|
||||||
|
0.39956728, _
|
||||||
|
0.42250001, _
|
||||||
|
0.44310755, _
|
||||||
|
0.46279839, _
|
||||||
|
0.48168495, _
|
||||||
|
0.49985844, _
|
||||||
|
0.51739395, _
|
||||||
|
0.53435433, _
|
||||||
|
0.55079269, _
|
||||||
|
0.56675452, _
|
||||||
|
0.58227891, _
|
||||||
|
0.59740001, _
|
||||||
|
0.61215729, _
|
||||||
|
0.62656713, _
|
||||||
|
0.64065295, _
|
||||||
|
0.65443563, _
|
||||||
|
0.667934, _
|
||||||
|
0.68116492, _
|
||||||
|
0.69414365, _
|
||||||
|
0.70688421, _
|
||||||
|
0.71939909, _
|
||||||
|
0.7317, _
|
||||||
|
0.73776948, _
|
||||||
|
0.74378943, _
|
||||||
|
0.74976104, _
|
||||||
|
0.75568551, _
|
||||||
|
0.76156384, _
|
||||||
|
0.76739717, _
|
||||||
|
0.7731865, _
|
||||||
|
0.77893275, _
|
||||||
|
0.78463697, _
|
||||||
|
0.78463697)
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' fnGetStarDustData: Returns the star dust table
|
||||||
|
Function fnGetStarDustData As Variant
|
||||||
|
fnGetStarDustData = Array( _
|
||||||
|
-1, _
|
||||||
|
200, _
|
||||||
|
200, _
|
||||||
|
400, _
|
||||||
|
400, _
|
||||||
|
600, _
|
||||||
|
600, _
|
||||||
|
800, _
|
||||||
|
800, _
|
||||||
|
1000, _
|
||||||
|
1000, _
|
||||||
|
1300, _
|
||||||
|
1300, _
|
||||||
|
1600, _
|
||||||
|
1600, _
|
||||||
|
1900, _
|
||||||
|
1900, _
|
||||||
|
2200, _
|
||||||
|
2200, _
|
||||||
|
2500, _
|
||||||
|
2500, _
|
||||||
|
3000, _
|
||||||
|
3000, _
|
||||||
|
3500, _
|
||||||
|
3500, _
|
||||||
|
4000, _
|
||||||
|
4000, _
|
||||||
|
4500, _
|
||||||
|
4500, _
|
||||||
|
5000, _
|
||||||
|
5000, _
|
||||||
|
6000, _
|
||||||
|
6000, _
|
||||||
|
7000, _
|
||||||
|
7000, _
|
||||||
|
8000, _
|
||||||
|
8000, _
|
||||||
|
9000, _
|
||||||
|
9000, _
|
||||||
|
10000, _
|
||||||
|
10000)
|
||||||
|
End Function
|
162
_3Load.vb
Normal file
162
_3Load.vb
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
' _3Load: The Pokémon Go IV data
|
||||||
|
' by imacat <imacat@mail.imacat.idv.tw>, 2016-11-28
|
||||||
|
|
||||||
|
Option Explicit
|
||||||
|
|
||||||
|
' subReadDataSheets: Reads the data sheets and shows the data as
|
||||||
|
' OpenOffice Basic arrays
|
||||||
|
Sub subReadDataSheets
|
||||||
|
Dim sOutput as String, mData As Variant
|
||||||
|
|
||||||
|
sOutput = "" _
|
||||||
|
& "' _2Data: The Pokémon Go IV data" & Chr (10) _
|
||||||
|
& "' by imacat <imacat@mail.imacat.idv.tw>, " & Format (Date (), "yyyy-mm-dd") & Chr (10) _
|
||||||
|
& Chr (10) _
|
||||||
|
& "Option Explicit"
|
||||||
|
sOutput = sOutput & Chr (10) & Chr (10) & fnReadBaseStatsSheet
|
||||||
|
sOutput = sOutput & Chr (10) & Chr (10) & fnReadCPMSheet
|
||||||
|
sOutput = sOutput & Chr (10) & Chr (10) & fnReadStarDustSheet
|
||||||
|
subShowBasicData (sOutput)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' subShowBasicData: Shows the data table as Basic arrays
|
||||||
|
Sub subShowBasicData (sContent As String)
|
||||||
|
Dim oDialog As Object, oDialogModel As Object
|
||||||
|
Dim oEditModel As Object, oButtonModel As Object
|
||||||
|
|
||||||
|
' Creates a dialog
|
||||||
|
oDialogModel = CreateUnoService ( _
|
||||||
|
"com.sun.star.awt.UnoControlDialogModel")
|
||||||
|
oDialogModel.setPropertyValue ("PositionX", 100)
|
||||||
|
oDialogModel.setPropertyValue ("PositionY", 100)
|
||||||
|
oDialogModel.setPropertyValue ("Height", 130)
|
||||||
|
oDialogModel.setPropertyValue ("Width", 200)
|
||||||
|
oDialogModel.setPropertyValue ("Title", "Pokémon Go Data")
|
||||||
|
|
||||||
|
' Adds the content area
|
||||||
|
oEditModel = oDialogModel.createInstance ( _
|
||||||
|
"com.sun.star.awt.UnoControlEditModel")
|
||||||
|
oEditModel.setPropertyValue ("PositionX", 5)
|
||||||
|
oEditModel.setPropertyValue ("PositionY", 5)
|
||||||
|
oEditModel.setPropertyValue ("Height", 100)
|
||||||
|
oEditModel.setPropertyValue ("Width", 190)
|
||||||
|
oEditModel.setPropertyValue ("MultiLine", True)
|
||||||
|
oEditModel.setPropertyValue ("Text", sContent)
|
||||||
|
oEditModel.setPropertyValue ("ReadOnly", True)
|
||||||
|
oDialogModel.insertByName ("edtContent", oEditModel)
|
||||||
|
|
||||||
|
' Adds the OK button.
|
||||||
|
oButtonModel = oDialogModel.createInstance ( _
|
||||||
|
"com.sun.star.awt.UnoControlButtonModel")
|
||||||
|
oButtonModel.setPropertyValue ("PositionX", 70)
|
||||||
|
oButtonModel.setPropertyValue ("PositionY", 110)
|
||||||
|
oButtonModel.setPropertyValue ("Height", 15)
|
||||||
|
oButtonModel.setPropertyValue ("Width", 60)
|
||||||
|
oButtonModel.setPropertyValue ("PushButtonType", _
|
||||||
|
com.sun.star.awt.PushButtonType.OK)
|
||||||
|
oButtonModel.setPropertyValue ("DefaultButton", True)
|
||||||
|
oDialogModel.insertByName ("btnOK", oButtonModel)
|
||||||
|
|
||||||
|
' Adds the dialog model to the control and runs it.
|
||||||
|
oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog")
|
||||||
|
oDialog.setModel (oDialogModel)
|
||||||
|
oDialog.setVisible (True)
|
||||||
|
oDialog.execute
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
' fnReadBaseStatsSheet: Reads the base stats sheet.
|
||||||
|
Function fnReadBaseStatsSheet As String
|
||||||
|
Dim oSheet As Object, oRange As Object, mData As Variant
|
||||||
|
Dim nI As Integer, sOutput As String
|
||||||
|
Dim nJ As Integer, sEvolveInto As String
|
||||||
|
|
||||||
|
oSheet = ThisComponent.getSheets.getByName ("basestat")
|
||||||
|
oRange = oSheet.getCellRangeByName ("BaseStats")
|
||||||
|
mData = oRange.getDataArray
|
||||||
|
|
||||||
|
sOutput = "" _
|
||||||
|
& "' fnGetBaseStatsData: Returns the base stats table" & Chr (10) _
|
||||||
|
& "Function fnGetBaseStatsData As Variant" & Chr (10) _
|
||||||
|
& Chr (9) & "fnGetBaseStatsData = Array( _" & Chr (10)
|
||||||
|
For nI = 1 To UBound (mData) - 1
|
||||||
|
For nJ = 9 To 7 Step -1
|
||||||
|
If mData (nI) (nJ) <> "" Then
|
||||||
|
sEvolveInto = mData (nI) (nJ)
|
||||||
|
nJ = 6
|
||||||
|
End If
|
||||||
|
Next nJ
|
||||||
|
sOutput = sOutput _
|
||||||
|
& Chr (9) & Chr (9) & "Array (""" & mData (nI) (0) _
|
||||||
|
& """, """ & mData (nI) (1) _
|
||||||
|
& """, " & mData (nI) (3) _
|
||||||
|
& ", " & mData (nI) (4) _
|
||||||
|
& ", " & mData (nI) (5) _
|
||||||
|
& ", """ & sEvolveInto & """), _" & Chr (10)
|
||||||
|
Next nI
|
||||||
|
nI = UBound (mData)
|
||||||
|
For nJ = 9 To 7 Step -1
|
||||||
|
If mData (nI) (nJ) <> "" Then
|
||||||
|
sEvolveInto = mData (nI) (nJ)
|
||||||
|
nJ = 6
|
||||||
|
End If
|
||||||
|
Next nJ
|
||||||
|
sOutput = sOutput _
|
||||||
|
& Chr (9) & Chr (9) & "Array (""" & mData (nI) (0) _
|
||||||
|
& """, """ & mData (nI) (1) _
|
||||||
|
& """, " & mData (nI) (3) _
|
||||||
|
& ", " & mData (nI) (4) _
|
||||||
|
& ", " & mData (nI) (5) _
|
||||||
|
& ", """ & sEvolveInto & """))" & Chr (10) _
|
||||||
|
& "End Function"
|
||||||
|
fnReadBaseStatsSheet = sOutput
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' fnReadCPMSheet: Reads the combat power multiplier sheet.
|
||||||
|
Function fnReadCPMSheet As String
|
||||||
|
Dim oSheet As Object, oRange As Object, mData As Variant
|
||||||
|
Dim nI As Integer, sOutput As String
|
||||||
|
|
||||||
|
oSheet = ThisComponent.getSheets.getByName ("cpm")
|
||||||
|
oRange = oSheet.getCellRangeByName ("CPM")
|
||||||
|
mData = oRange.getDataArray
|
||||||
|
|
||||||
|
sOutput = "" _
|
||||||
|
& "' fnGetCPMData: Returns the combat power multiplier table" & Chr (10) _
|
||||||
|
& "Function fnGetCPMData As Variant" & Chr (10) _
|
||||||
|
& Chr (9) & "fnGetCPMData = Array( _" & Chr (10) _
|
||||||
|
& Chr (9) & Chr (9) & "-1, _" & Chr (10)
|
||||||
|
For nI = 1 To UBound (mData) - 2 Step 2
|
||||||
|
sOutput = sOutput _
|
||||||
|
& Chr (9) & Chr (9) & mData (nI) (1) & ", _" & Chr (10)
|
||||||
|
Next nI
|
||||||
|
nI = UBound (mData) - 2
|
||||||
|
sOutput = sOutput _
|
||||||
|
& Chr (9) & Chr (9) & mData (nI) (1) & ")" & Chr (10) _
|
||||||
|
& "End Function"
|
||||||
|
fnReadCPMSheet = sOutput
|
||||||
|
End Function
|
||||||
|
|
||||||
|
' fnReadStarDustSheet: Reads the star dust sheet.
|
||||||
|
Function fnReadStarDustSheet As String
|
||||||
|
Dim oSheet As Object, oRange As Object, mData As Variant
|
||||||
|
Dim nI As Integer, sOutput As String
|
||||||
|
|
||||||
|
oSheet = ThisComponent.getSheets.getByName ("lvup")
|
||||||
|
oRange = oSheet.getCellRangeByName ("A2:D81")
|
||||||
|
mData = oRange.getDataArray
|
||||||
|
|
||||||
|
sOutput = "" _
|
||||||
|
& "' fnGetStarDustData: Returns the star dust table" & Chr (10) _
|
||||||
|
& "Function fnGetStarDustData As Variant" & Chr (10) _
|
||||||
|
& Chr (9) & "fnGetStarDustData = Array( _" & Chr (10) _
|
||||||
|
& Chr (9) & Chr (9) & "-1, _" & Chr (10)
|
||||||
|
For nI = 1 To UBound (mData) - 1 Step 2
|
||||||
|
sOutput = sOutput _
|
||||||
|
& Chr (9) & Chr (9) & mData (nI) (2) & ", _" & Chr (10)
|
||||||
|
Next nI
|
||||||
|
nI = UBound (mData)
|
||||||
|
sOutput = sOutput _
|
||||||
|
& Chr (9) & Chr (9) & mData (nI) (2) & ")" & Chr (10) _
|
||||||
|
& "End Function"
|
||||||
|
fnReadStarDustSheet = sOutput
|
||||||
|
End Function
|
Loading…
Reference in New Issue
Block a user