* Restructured the code and moved the report creation to an independent module. Moved the IV sorting to the report module. The main module is now only doing IV finding.

* Changed the reported estimated CPs from values to formulas.
* Moved the localized Pokémon names from the DialogStrings to AddonConfiguration, so that they can also be used in the report, too.
* Changed the report logic to report the estimated maximum CPs of the last evolution forms, instead of several special rules.
* Localized the report headers.
This commit is contained in:
依瑪貓 2017-06-08 17:13:28 +08:00
parent 4a663f7449
commit 1e9835372f
17 changed files with 2743 additions and 1824 deletions

View File

@ -25,6 +25,7 @@ Type aStats
nAttack As Integer
nDefense As Integer
mEvolved () As String
bIsLastForm As Boolean
End Type
' The individual values of a Pokémon.
@ -33,15 +34,10 @@ Type aIV
nStamina As Integer
nAttack As Integer
nDefense As Integer
' For sorting
nTotal As Integer
nMaxCP As Integer
maEvolved () As aEvolvedStats
End Type
' The calculated evolved stats of a Pokémon.
Type aEvolvedStats
nCP As Integer
nMaxCP As Integer
nMaxMaxCP As Integer
End Type
' The parameters to find the individual values.
@ -76,49 +72,30 @@ Sub subMain
If UBound (maIVs) = -1 Then
MsgBox fnGetResString ("ErrorNotFound")
Else
subSaveIV (aBaseStats, aQuery, maIVs)
subCreateReport (aBaseStats, aQuery, maIVs)
End If
End Sub
' fnFindIV: Finds the possible individual values of the Pokémon
Function fnFindIV ( _
aBaseStats As aStats, aQuery As aFindIVParam) As Variant
Dim nEvolved As Integer
Dim maEvBaseStats () As New aStats, aTempStats As New aStats
Dim maIV () As New aIV, aTempIV As New aIV
Dim maIV () As New aIV, nN As Integer
Dim fLevel As Double, nStamina As Integer
Dim nAttack As Integer, nDefense As integer
Dim nI As Integer, nJ As Integer
Dim fStep As Double, nN As Integer, fMaxLevel As Double
Dim nI As Integer, nJ As Integer, fLevelStep As Double
If aQuery.sPokemonId = "" Then
fnFindIV = maIV
Exit Function
End If
If aQuery.bIsNew Then
fStep = 1
fLevelStep = 1
Else
fStep = 0.5
fLevelStep = 0.5
End If
subReadStardust
nEvolved = UBound (aBaseStats.mEvolved)
If nEvolved > -1 Then
ReDim Preserve maEvBaseStats (nEvolved) As New aStats
For nI = 0 To nEvolved
aTempStats = fnGetBaseStats (aBaseStats.mEvolved (nI))
With maEvBaseStats (nI)
.nAttack = aTempStats.nAttack
.nDefense = aTempStats.nDefense
.nStamina = aTempStats.nStamina
End With
Next nI
End If
nN = -1
fMaxLevel = aQuery.nPlayerLevel + 1.5
If fMaxLevel > 40 Then
fMaxLevel = 40
End If
For fLevel = 1 To UBound (mStardust) Step fStep
For fLevel = 1 To UBound (mStardust) Step fLevelStep
If mStardust (CInt (fLevel - 0.5)) = aQuery.nStardust Then
For nStamina = 0 To 15
If fnCalcHP (aBaseStats, fLevel, nStamina) = aQuery.nHP Then
@ -133,30 +110,7 @@ Function fnFindIV ( _
.nAttack = nAttack
.nDefense = nDefense
.nStamina = nStamina
.nTotal = nAttack _
+ nDefense + nStamina
End With
If aQuery.nPlayerLevel <> 0 Then
maIV (nN).nMaxCP = fnCalcCP ( _
aBaseStats, fMaxLevel, _
nAttack, nDefense, nStamina)
End If
maIV (nN).maEvolved _
= fnGetEvolvedArray (nEvolved)
For nI = 0 To nEvolved
maIV (nN).maEvolved (nI).nCP _
= fnCalcCP ( _
maEvBaseStats (nI), _
fLevel, nAttack, _
nDefense, nStamina)
If aQuery.nPlayerLevel <> 0 Then
maIV (nN).maEvolved (nI).nMaxCP _
= fnCalcCP ( _
maEvBaseStats (nI), _
fMaxLevel, nAttack, _
nDefense, nStamina)
End If
Next nI
End If
Next nDefense
Next nAttack
@ -164,309 +118,9 @@ Function fnFindIV ( _
Next nStamina
End If
Next fLevel
' Sorts the IVs
For nI = 0 To UBound (maIV) - 1
For nJ = nI + 1 To UBound (maIV)
If fnCompareIV (maIV (nI), maIV (nJ)) > 0 Then
' This is an array of data. The data are actually
' allocated in sequences. maIV (nI) is not a
' reference. They cannot simply be assigned.
subCopyIV (maIV (nI), aTempIV)
subCopyIV (maIV (nJ), maIV (nI))
subCopyIV (aTempIV, maIV (nJ))
End If
Next nJ
Next nI
fnFindIV = maIV
End Function
' fnCompareIV: Compare two IVs for sorting
Function fnCompareIV (aIVa As aIV, aIVb As aIV) As Double
Dim nCPa As Integer, nCPb As Integer, nI As Integer
nCPa = aIVa.nMaxCP
For nI = 0 To UBound (aIVa.maEvolved)
If nCPa < aIVa.maEvolved (nI).nMaxCP Then
nCPa = aIVa.maEvolved (nI).nMaxCP
End If
Next nI
nCPb = aIVb.nMaxCP
For nI = 0 To UBound (aIVb.maEvolved)
If nCPb < aIVb.maEvolved (nI).nMaxCP Then
nCPb = aIVb.maEvolved (nI).nMaxCP
End If
Next nI
fnCompareIV = nCPb - nCPa
If fnCompareIV <> 0 Then
Exit Function
End If
nCPa = 0
For nI = 0 To UBound (aIVa.maEvolved)
If nCPa < aIVa.maEvolved (nI).nCP Then
nCPa = aIVa.maEvolved (nI).nCP
End If
Next nI
nCPb = 0
For nI = 0 To UBound (aIVb.maEvolved)
If nCPb < aIVb.maEvolved (nI).nCP Then
nCPb = aIVb.maEvolved (nI).nCP
End If
Next nI
fnCompareIV = nCPb - nCPa
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nTotal - aIVa.nTotal
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.fLevel - aIVa.fLevel
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nStamina - aIVa.nStamina
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nAttack - aIVa.nAttack
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nDefense - aIVa.nDefense
If fnCompareIV <> 0 Then
Exit Function
End If
End Function
' subCopyIV: Copies one IV to another
Function subCopyIV (aFrom As aIV, aTo As aIV) As Double
Dim nI As Integer
With aTo
.nAttack = aFrom.nAttack
.nDefense = aFrom.nDefense
.nStamina = aFrom.nStamina
.nTotal = aFrom.nTotal
.nMaxCP = aFrom.nMaxCP
End With
aTo.maEvolved = fnGetEvolvedArray (UBound (aFrom.maEvolved))
For nI = 0 To UBound (aFrom.maEvolved)
With aTo.maEvolved (nI)
.nCP = aFrom.maEvolved (nI).nCP
.nMaxCP = aFrom.maEvolved (nI).nMaxCP
End With
Next nI
End Function
' subSaveIV: Saves the found IV
Sub subSaveIV ( _
aBaseStats As aStats, aQuery As aFindIVParam, maIVs () As aIV)
Dim oDoc As Object, oSheet As Object
Dim oRange As Object, oColumns As Object, oRows As Object
Dim nI As Integer, nJ As Integer, nFront As Integer
Dim nEvolved As Integer
Dim mData (Ubound (maIVs) + 1) As Variant, mRow () As Variant
Dim mProps () As New com.sun.star.beans.PropertyValue
oDoc = StarDesktop.loadComponentFromURL ( _
"private:factory/scalc", "_default", 0, mProps)
oSheet = oDoc.getSheets.getByIndex (0)
nEvolved = UBound (maIVs (0).maEvolved) + 1
mRow = Array ( _
"No", "Pokemon", "CP", "HP", "Stardust", _
"Lv", "Atk", "Def", "Sta", "IV")
nFront = UBound (mRow)
If aQuery.sPokemonId = "Eevee" Then
If aQuery.nPlayerLevel <> 0 Then
ReDim Preserve mRow (nFront + 6) As Variant
mRow (nFront + 1) = "CP as " _
& aBaseStats.mEvolved (0)
mRow (nFront + 2) = "Powered-up as " _
& aBaseStats.mEvolved (0)
mRow (nFront + 3) = "CP as " _
& aBaseStats.mEvolved (1)
mRow (nFront + 4) = "Powered-up as " _
& aBaseStats.mEvolved (1)
mRow (nFront + 5) = "CP as " _
& aBaseStats.mEvolved (2)
mRow (nFront + 6) = "Powered-up as " _
& aBaseStats.mEvolved (2)
Else
ReDim Preserve mRow (nFront + 3) As Variant
mRow (nFront + 1) = "CP as " _
& aBaseStats.mEvolved (0)
mRow (nFront + 2) = "CP as " _
& aBaseStats.mEvolved (1)
mRow (nFront + 3) = "CP as " _
& aBaseStats.mEvolved (2)
End If
Else
If nEvolved = 0 Then
If aQuery.nPlayerLevel <> 0 Then
ReDim Preserve mRow (nFront + 1) As Variant
mRow (nFront + 1) = "Powered-up"
End If
Else
If aQuery.nPlayerLevel <> 0 Then
ReDim Preserve mRow (nFront + nEvolved + 1) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = "CP as " _
& aBaseStats.mEvolved (nJ)
Next nJ
mRow (UBound (mRow)) = "Powered-up as " _
& aBaseStats.mEvolved (nEvolved - 1)
Else
ReDim Preserve mRow (nFront + nEvolved) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = "CP as " _
& aBaseStats.mEvolved (nJ)
Next nJ
End If
End If
End If
mData (0) = mRow
For nI = 0 To UBound (maIVs)
mRow = Array ( _
"", "", "", "", "", _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina, _
maIVs (nI).nTotal / 45)
If aQuery.sPokemonId = "Eevee" Then
If aQuery.nPlayerLevel <> 0 Then
ReDim Preserve mRow (nFront + 6) As Variant
mRow (nFront + 1) = maIVs (nI).maEvolved (0).nCP
mRow (nFront + 2) = maIVs (nI).maEvolved (0).nMaxCP
mRow (nFront + 3) = maIVs (nI).maEvolved (1).nCP
mRow (nFront + 4) = maIVs (nI).maEvolved (1).nMaxCP
mRow (nFront + 5) = maIVs (nI).maEvolved (2).nCP
mRow (nFront + 6) = maIVs (nI).maEvolved (2).nMaxCP
Else
ReDim Preserve mRow (nFront + 3) As Variant
mRow (nFront + 1) = maIVs (nI).maEvolved (0).nCP
mRow (nFront + 2) = maIVs (nI).maEvolved (1).nCP
mRow (nFront + 3) = maIVs (nI).maEvolved (2).nCP
End If
Else
If nEvolved = 0 Then
If aQuery.nPlayerLevel <> 0 Then
ReDim Preserve mRow (nFront + 1) As Variant
mRow (nFront + 1) = maIVs (nI).nMaxCP
End If
Else
If aQuery.nPlayerLevel <> 0 Then
ReDim Preserve mRow (nFront + nEvolved + 1) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = maIVs (nI).maEvolved (nJ).nCP
Next nJ
mRow (UBound (mRow)) = maIVs (nI).maEvolved (nEvolved - 1).nMaxCP
Else
ReDim Preserve mRow (nFront + nEvolved) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = maIVs (nI).maEvolved (nJ).nCP
Next nJ
End If
End If
End If
mData (nI + 1) = mRow
Next nI
' Fills the query information at the first row
mData (1) (0) = aBaseStats.sNo
mData (1) (1) = aQuery.sPokemonName
mData (1) (2) = aQuery.nCP
mData (1) (3) = aQuery.nHP
mData (1) (4) = aQuery.nStardust
oRange = oSheet.getCellRangeByPosition ( _
0, 0, UBound (mData (0)), UBound (mData))
oRange.setDataArray (mData)
oRange.setPropertyValue ("VertJustify", _
com.sun.star.table.CellVertJustify.TOP)
oRange = oSheet.getCellRangeByPosition ( _
0, 1, 0, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
1, 1, 1, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
2, 1, 2, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
3, 1, 3, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
4, 1, 4, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
9, 1, 9, UBound (mData))
oRange.setPropertyValue ("NumberFormat", 10)
If aQuery.sPokemonId = "Eevee" Then
oRange = oSheet.getCellRangeByPosition ( _
10, 0, 15, 0)
Else
If nEvolved = 0 Then
oRange = oSheet.getCellRangeByPosition ( _
10, 0, 10, 0)
Else
oRange = oSheet.getCellRangeByPosition ( _
10, 0, 10 + nEvolved + 1, 0)
End If
End If
oRange.setPropertyValue ("IsTextWrapped", True)
oRows = oSheet.getRows
oRows.getByIndex (0).setPropertyValue ("Height", 840)
oColumns = oSheet.getColumns
oColumns.getByIndex (0).setPropertyValue ("Width", 890)
oColumns.getByIndex (1).setPropertyValue ("Width", 2310)
oColumns.getByIndex (2).setPropertyValue ("Width", 890)
oColumns.getByIndex (3).setPropertyValue ("Width", 890)
oColumns.getByIndex (4).setPropertyValue ("Width", 1780)
oColumns.getByIndex (5).setPropertyValue ("Width", 860)
oColumns.getByIndex (6).setPropertyValue ("Width", 860)
oColumns.getByIndex (7).setPropertyValue ("Width", 860)
oColumns.getByIndex (8).setPropertyValue ("Width", 860)
oColumns.getByIndex (9).setPropertyValue ("Width", 1030)
If aQuery.sPokemonId = "Eevee" Then
If aQuery.nPlayerLevel <> 0 Then
For nI = 0 To 5 Step 2
oColumns.getByIndex (10 + nI).setPropertyValue ( _
"Width", 2310)
oColumns.getByIndex (10 + nI + 1).setPropertyValue ( _
"Width", 2810)
Next nI
Else
For nI = 0 To 2
oColumns.getByIndex (10 + nI).setPropertyValue ( _
"Width", 2310)
Next nI
End If
Else
If nEvolved = 0 Then
If aQuery.nPlayerLevel <> 0 Then
oColumns.getByIndex (10).setPropertyValue ( _
"Width", 2200)
End If
Else
For nI = 0 To nEvolved - 1
oColumns.getByIndex (10 + nI).setPropertyValue ( _
"Width", 2310)
Next nI
If aQuery.nPlayerLevel <> 0 Then
oColumns.getByIndex ( _
10 + nEvolved).setPropertyValue ( _
"Width", 2810)
End If
End If
End If
End Sub
' fnFilterAppraisals: Filters the IV by the appraisals.
Function fnFilterAppraisals (aQuery As aFindIVParam, _
nAttack As Integer, nDefense As Integer, _
@ -585,8 +239,8 @@ Function fnGetCPM (fLevel As Double) As Double
If CInt (fLevel) = fLevel Then
fnGetCPM = mCPM (fLevel)
Else
fnGetCPM = ((mCpm (fLevel - 0.5) ^ 2 _
+ mCpm (fLevel + 0.5) ^ 2) / 2) ^ 0.5
fnGetCPM = ((mCPM (fLevel - 0.5) ^ 2 _
+ mCPM (fLevel + 0.5) ^ 2) / 2) ^ 0.5
End If
End Function
@ -595,56 +249,6 @@ Function fnFloor (fNumber As Double) As Integer
fnFloor = CInt (fNumber - 0.5)
End Function
' fnMapPokemonIdToName: Maps the Pokémon IDs to their localized names.
Function fnMapPokemonIdToName (sId As String) As String
fnMapPokemonIdToName = fnGetResString ("Pokemon" & sId)
End Function
' subReadBaseStats: Reads the base stats table.
Sub subReadBaseStats
Dim mData As Variant, nI As Integer, nJ As Integer
DIm nEvolved As Integer
If UBound (maBaseStats) = -1 Then
mData = fnGetBaseStatsData
ReDim Preserve maBaseStats (UBound (mData)) As New aStats
For nI = 0 To UBound (mData)
With maBaseStats (nI)
.sNo = mData (nI) (1)
.sPokemonId = mData (nI) (0)
.nStamina = mData (nI) (2)
.nAttack = mData (nI) (3)
.nDefense = mData (nI) (4)
End With
nEvolved = UBound (mData (nI) (5))
maBaseStats (nI).mEvolved = fnGetStringArray (nEvolved)
For nJ = 0 To nEvolved
maBaseStats (nI).mEvolved (nJ) = mData (nI) (5) (nJ)
Next nJ
Next nI
End If
End Sub
' fnGetStringArray: Obtains a blank string array
Function fnGetStringArray (nUBound As Integer) As Variant
Dim mData () As String
If nUBound >= 0 Then
ReDim Preserve mData (nUBound) As String
End If
fnGetStringArray = mData
End Function
' fnGetEvolvedArray: Obtains a blank aEvolvedStats array
Function fnGetEvolvedArray (nUBound As Integer) As Variant
Dim mData () As New aEvolvedStats
If nUBound >= 0 Then
ReDim Preserve mData (nUBound) As New aEvolvedStats
End If
fnGetEvolvedArray = mData
End Function
' fnReplace: Replaces all occurrances of a term to another.
Function fnReplace ( _
sText As String, sFrom As String, sTo As String) As String
@ -660,6 +264,37 @@ Function fnReplace ( _
fnReplace = sResult
End Function
' subReadBaseStats: Reads the base stats table.
Sub subReadBaseStats
Dim mData As Variant, nI As Integer, nJ As Integer, nK As Integer
Dim nEvolved As Integer, mEvolved () As Variant
If UBound (maBaseStats) = -1 Then
mData = fnGetBaseStatsData
ReDim Preserve maBaseStats (UBound (mData)) As New aStats
For nI = 0 To UBound (mData)
With maBaseStats (nI)
.sNo = mData (nI) (1)
.sPokemonId = mData (nI) (0)
.nStamina = mData (nI) (2)
.nAttack = mData (nI) (3)
.nDefense = mData (nI) (4)
End With
nEvolved = UBound (mData (nI) (5)) + 1
mEvolved = Array ()
maBaseStats (nI).bIsLastForm = True
If nEvolved > 0 Then
ReDim mEvolved (nEvolved - 1) As Variant
For nJ = 0 To nEvolved - 1
mEvolved (nJ) = mData (nI) (5) (nJ)
Next nJ
maBaseStats (nI).mEvolved = mEvolved
maBaseStats (nI).bIsLastForm = False
End If
Next nI
End If
End Sub
' subReadCPM: Reads the CPM table.
Sub subReadCPM
If UBound (mCPM) = -1 Then

View File

@ -50,6 +50,19 @@ Function fnAskParam As aFindIVParam
oDialog.getControl ("cbxBest3").setVisible (False)
oDialog.getControl ("lstMax").setVisible (False)
' Adds the Pokémons by their localized names.
subReadBaseStats
ReDim mPokemons (UBound (maBaseStats)) As String
For nI = 0 To UBound (maBaseStats)
mPokemons (nI) = fnGetResString ( _
"Pokemon" & maBaseStats (nI).sPokemonId)
Next nI
oList = oDialog.getControl ("lstPokemon")
If oList.getItemCount > 0 Then
getItemCount.removeItems (0, oList.getItemCount)
End If
oList.addItems (mPokemons, 0)
oDialog.getControl ("imgPokemon").getModel.setPropertyValue ( _
"ImageURL", fnGetImageUrl ("Unknown"))
oDialog.getControl ("imgTeamLogo").getModel.setPropertyValue ( _

379
PokemonGoIV/2Report.vb Normal file
View File

@ -0,0 +1,379 @@
' Copyright (c) 2017 imacat.
'
' Licensed under the Apache License, Version 2.0 (the "License");
' you may not use this file except in compliance with the License.
' You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
' 2Report: The Pokémon GO IV report generator.
' by imacat <imacat@mail.imacat.idv.tw>, 2017-06-07
Option Explicit
' The base stats of a Pokémon.
Type aStats
sNo As String
sPokemonId As String
nStamina As Integer
nAttack As Integer
nDefense As Integer
mEvolved () As String
End Type
' The individual values of a Pokémon.
Type aIV
fLevel As Double
nStamina As Integer
nAttack As Integer
nDefense As Integer
' For sorting
nTotal As Integer
nMaxCP As Integer
nMaxMaxCP As Integer
End Type
' The parameters to find the individual values.
Type aFindIVParam
sPokemonId As String
sPokemonName As String
nCP As Integer
nHP As Integer
nStardust As Integer
nPlayerLevel As Integer
bIsNew As Boolean
nTotal As Integer
sBest As String
nMax As Integer
bIsCancelled As Boolean
End Type
' subCreateReport: Creates the Pokémon GO IV report.
Sub subCreateReport ( _
aBaseStats As aStats, aQuery As aFindIVParam, maIVs () As aIV)
Dim oDoc As Object, oSheet As Object
Dim oRange As Object, oColumns As Object, oRows As Object
Dim oCell As Object, sFormula As String
Dim nI As Integer, nJ As Integer, nCol As Integer
Dim nLeadCols As Integer, nTotalCols As Integer
Dim nEvolved As Integer, fMaxLevel As Double
Dim sCPM As String, sMaxCPM As String
Dim sColIVAttack As String, sColIVDefense As String
Dim sColIVStamina As String
Dim sPokemonName As String
Dim mData (Ubound (maIVs) + 1) As Variant, mRow () As Variant
Dim maEvBaseStats () As Variant
Dim mProps () As New com.sun.star.beans.PropertyValue
oDoc = StarDesktop.loadComponentFromURL ( _
"private:factory/scalc", "_default", 0, mProps)
oSheet = oDoc.getSheets.getByIndex (0)
nEvolved = UBound (aBaseStats.mEvolved) + 1
If nEvolved > 0 Then
ReDim maEvBaseStats (nEvolved - 1) As Variant
For nJ = 0 To nEvolved - 1
maEvBaseStats (nJ) = fnGetBaseStats (aBaseStats.mEvolved (nJ))
Next nJ
End If
If aQuery.nPlayerLevel <> 0 Then
fMaxLevel = aQuery.nPlayerLevel + 1.5
If fMaxLevel > 40 Then
fMaxLevel = 40
End If
Else
fMaxLevel = 40
End If
sMaxCPM = fnGetCPMFormula (fMaxLevel)
' Sorts the IVs
subSortIVs (aBaseStats, maEvBaseStats, maIVs, fMaxLevel)
' Fills in the report data.
mRow = Array ( _
fnGetResString ("ReportNo"), _
fnGetResString ("ReportPokemon"), _
fnGetResString ("ReportCP"), _
fnGetResString ("ReportHP"), _
fnGetResString ("ReportStardust"), _
fnGetResString ("ReportLevel"), _
fnGetResString ("ReportAttack"), _
fnGetResString ("ReportDefense"), _
fnGetResString ("ReportStamina"), _
fnGetResString ("ReportIVPercent"))
nLeadCols = UBound (mRow) + 1
nTotalCols = nLeadCols
If aBaseStats.bIsLastForm Then
nTotalCols = nTotalCols + 1
End If
For nJ = 0 To nEvolved - 1
nTotalCols = nTotalCols + 1
If maEvBaseStats (nJ).bIsLastForm Then
nTotalCols = nTotalCols + 1
End If
Next nJ
ReDim Preserve mRow (nTotalCols - 1) As Variant
nCol = nLeadCols
If aBaseStats.bIsLastForm Then
mRow (nCol) = fnReplace (fnGetResString ("ReportCPPowerUp"), _
"[Level]", fMaxLevel)
nCol = nCol + 1
End If
For nJ = 0 To nEvolved - 1
sPokemonName = fnGetResString ( _
"Pokemon" & aBaseStats.mEvolved (nJ))
mRow (nCol) = fnReplace (fnGetResString ("ReportCPEvolve"), _
"[Pokémon]", sPokemonName)
nCol = nCol + 1
If maEvBaseStats (nJ).bIsLastForm Then
mRow (nCol) = fnReplace (fnReplace ( _
fnGetResString ("ReportCPEvolvePowerUp"), _
"[Pokémon]", sPokemonName), _
"[Level]", fMaxLevel)
End If
Next nJ
mData (0) = mRow
For nI = 0 To UBound (maIVs)
mRow = Array ( _
"", "", "", "", "", _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina, "")
ReDim Preserve mRow (nTotalCols - 1) As Variant
For nJ = nLeadCols To nEvolved - 1
mRow (nJ) = ""
Next nJ
mData (nI + 1) = mRow
Next nI
' Fills the query information at the first row
mData (1) (0) = aBaseStats.sNo
mData (1) (1) = aQuery.sPokemonName
mData (1) (2) = aQuery.nCP
mData (1) (3) = aQuery.nHP
mData (1) (4) = aQuery.nStardust
oRange = oSheet.getCellRangeByPosition ( _
0, 0, UBound (mData (0)), UBound (mData))
oRange.setDataArray (mData)
oRange.setPropertyValue ("VertJustify", _
com.sun.star.table.CellVertJustify.TOP)
' Fills in the CP calculation.
For nI = 0 To UBound (maIVs)
sCPM = fnGetCPMFormula (maIVs (nI).fLevel)
sColIVAttack = "G" & (nI + 2)
sColIVDefense = "H" & (nI + 2)
sColIVStamina = "I" & (nI + 2)
oCell = oSheet.getCellByPosition (nLeadCols - 1, nI + 1)
sFormula = "=(" & sColIVAttack & "+" & sColIVDefense _
& "+" & sColIVStamina & ")/45"
oCell.setFormula (sFormula)
nCol = nLeadCols
If aBaseStats.bIsLastForm Then
oCell = oSheet.getCellByPosition (nCol, nI + 1)
sFormula = fnGetCPFormula (aBaseStats, _
sColIVAttack, sColIVDefense, sColIVStamina, sMaxCPM)
oCell.setFormula (sFormula)
nCol = nCol + 1
End If
For nJ = 0 To nEvolved - 1
oCell = oSheet.getCellByPosition (nCol, nI + 1)
sFormula = fnGetCPFormula (maEvBaseStats (nJ), _
sColIVAttack, sColIVDefense, sColIVStamina, sCPM)
oCell.setFormula (sFormula)
nCol = nCol + 1
If maEvBaseStats (nJ).bIsLastForm Then
oCell = oSheet.getCellByPosition (nCol, nI + 1)
sFormula = fnGetCPFormula (maEvBaseStats (nJ), _
sColIVAttack, sColIVDefense, sColIVStamina, sMaxCPM)
oCell.setFormula (sFormula)
nCol = nCol + 1
End If
Next nJ
Next nI
oRange = oSheet.getCellRangeByPosition ( _
0, 1, 0, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
1, 1, 1, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
2, 1, 2, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
3, 1, 3, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
4, 1, 4, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
9, 1, 9, UBound (mData))
oRange.setPropertyValue ("NumberFormat", 10)
oRange = oSheet.getCellRangeByPosition ( _
nLeadCols, 0, nTotalCols - 1, 0)
oRange.setPropertyValue ("IsTextWrapped", True)
oColumns = oSheet.getColumns
oColumns.getByIndex (0).setPropertyValue ("Width", 890)
oColumns.getByIndex (1).setPropertyValue ("Width", 2310)
oColumns.getByIndex (2).setPropertyValue ("Width", 890)
oColumns.getByIndex (3).setPropertyValue ("Width", 890)
oColumns.getByIndex (4).setPropertyValue ("Width", 1780)
oColumns.getByIndex (5).setPropertyValue ("Width", 860)
oColumns.getByIndex (6).setPropertyValue ("Width", 860)
oColumns.getByIndex (7).setPropertyValue ("Width", 860)
oColumns.getByIndex (8).setPropertyValue ("Width", 860)
oColumns.getByIndex (9).setPropertyValue ("Width", 1030)
For nJ = nLeadCols To nTotalCols - 1
oColumns.getByIndex (nJ).setPropertyValue ( _
"Width", 2810)
Next nJ
oRows = oSheet.getRows
oRows.getByIndex (0).setPropertyValue ("OptimalHeight", True)
End Sub
' subSortIVs: Sorts the IVs
Sub subSortIVs ( _
aBaseStats As aStats, maEvBaseStats () As aIV, _
maIVs () As aIV, fMaxLevel As Double)
Dim nI As Integer, nJ As Integer
Dim nCP As Integer
' Calculate the sorting keys.
For nI = 0 To UBound (maIVs) - 1
maIVs (nI).nTotal = maIVs (nI).nAttack + maIVs (nI).nDefense _
+ maIVs (nI).nStamina
maIVs (nI).nMaxCP = fnCalcCP (aBaseStats, _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
maIVs (nI).nMaxMaxCP = fnCalcCP (aBaseStats, _
fMaxLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
For nJ = 0 To UBound (aBaseStats.mEvolved)
nCP = fnCalcCP (maEvBaseStats (nJ), _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
If maIVs (nI).nMaxCP < nCP Then
maIVs (nI).nMaxCP = nCP
End If
nCP = fnCalcCP (maEvBaseStats (nJ), _
fMaxLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
If maIVs (nI).nMaxMaxCP < nCP Then
maIVs (nI).nMaxMaxCP = nCP
End If
Next nJ
Next nI
' Sort the IVs.
For nI = 0 To UBound (maIVs) - 1
For nJ = nI + 1 To UBound (maIVs)
If fnCompareIV (maIVs (nI), maIVs (nJ)) > 0 Then
' This is an array of data. The data are actually
' allocated in sequences. maIVs (nI) is not a
' reference. They cannot simply be assigned.
subSwapIV (maIVs (nI), maIVs (nJ))
End If
Next nJ
Next nI
End Sub
' fnCompareIV: Compare two IVs for sorting
Function fnCompareIV (aIVa As aIV, aIVb As aIV) As Double
Dim nCPa As Integer, nCPb As Integer, nI As Integer
fnCompareIV = aIVb.nMaxMaxCP - aIVa.nMaxMaxCP
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nMaxCP - aIVa.nMaxCP
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nTotal - aIVa.nTotal
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.fLevel - aIVa.fLevel
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nStamina - aIVa.nStamina
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nAttack - aIVa.nAttack
If fnCompareIV <> 0 Then
Exit Function
End If
fnCompareIV = aIVb.nDefense - aIVa.nDefense
If fnCompareIV <> 0 Then
Exit Function
End If
End Function
' subSwapIV: Swaps two IVs
Function subSwapIV (aIVa As aIV, aIVb As aIV) As Double
Dim aTempIV As New aIV
With aTempIV
.nAttack = aIVa.nAttack
.nDefense = aIVa.nDefense
.nStamina = aIVa.nStamina
.nTotal = aIVa.nTotal
.nMaxCP = aIVa.nMaxCP
.nMaxMaxCP = aIVa.nMaxMaxCP
End With
With aIVa
.nAttack = aIVb.nAttack
.nDefense = aIVb.nDefense
.nStamina = aIVb.nStamina
.nTotal = aIVb.nTotal
.nMaxCP = aIVb.nMaxCP
.nMaxMaxCP = aIVb.nMaxMaxCP
End With
With aIVb
.nAttack = aTempIV.nAttack
.nDefense = aTempIV.nDefense
.nStamina = aTempIV.nStamina
.nTotal = aTempIV.nTotal
.nMaxCP = aTempIV.nMaxCP
.nMaxMaxCP = aTempIV.nMaxMaxCP
End With
End Function
' fnGetCPFormula: Obtains the CP formula
Function fnGetCPFormula ( _
aBaseStats As aStats, sColIVAttack As String, _
sColIVDefense As String, sColIVStamina As String, _
sCPM As String) As String
fnGetCPFormula = "=FLOOR(" _
& "(" & aBaseStats.nAttack & "+" & sColIVAttack & ")" _
& "*SQRT(" & aBaseStats.nDefense & "+" & sColIVDefense & ")" _
& "*SQRT(" & aBaseStats.nStamina & "+" & sColIVStamina & ")" _
& "*POWER(" & sCPM & ";2)/10;1)"
End Function
' fnGetCPMFormula: Obtains the CPM
Function fnGetCPMFormula (fLevel As Double) As String
If fLevel = CInt (fLevel) Then
fnGetCPMFormula = "" & mCPM (fLevel)
Else
fnGetCPMFormula = "SQRT((" _
& "POWER(" & mCPM (fLevel - 0.5) & ";2)" _
& "+POWER(" & mCPM (fLevel + 0.5) & ";2))/2)"
End If
End Function

View File

@ -12,7 +12,7 @@
' See the License for the specific language governing permissions and
' limitations under the License.
' 2Data: The Pokémon GO data for IV calculation
' 3Data: The Pokémon GO data for IV calculation
' by imacat <imacat@mail.imacat.idv.tw>, 2017-03-01
' Generated with 9Load.subReadDataSheets ()

View File

@ -37,7 +37,7 @@ Sub subReadDataSheets
& "' See the License for the specific language governing permissions and" & Chr (10) _
& "' limitations under the License." & Chr (10) _
& Chr (10) _
& "' 2Data: The Pokémon GO data for IV calculation" & Chr (10) _
& "' 3Data: The Pokémon GO data for IV calculation" & Chr (10) _
& "' by imacat <imacat@mail.imacat.idv.tw>, " & Format (Date (), "yyyy-mm-dd") & Chr (10) _
& "' Generated with 9Load.subReadDataSheets ()" & Chr (10) _
& Chr (10) _

2
TODO
View File

@ -1,5 +1,7 @@
PokemonGoIV TODO
* Update the Pokémon database for the complex evolution forms
like Eevee, Slowpoke, etc.
* Center the dialog.
* Pokémons that are not released in the game yet, so their image
icons are missing.

File diff suppressed because it is too large Load Diff

View File

@ -27,6 +27,7 @@ Type aStats
nAttack As Integer
nDefense As Integer
mEvolved () As String
bIsLastForm As Boolean
End Type
&apos; The individual values of a Pokémon.
@ -35,15 +36,10 @@ Type aIV
nStamina As Integer
nAttack As Integer
nDefense As Integer
&apos; For sorting
nTotal As Integer
nMaxCP As Integer
maEvolved () As aEvolvedStats
End Type
&apos; The calculated evolved stats of a Pokémon.
Type aEvolvedStats
nCP As Integer
nMaxCP As Integer
nMaxMaxCP As Integer
End Type
&apos; The parameters to find the individual values.
@ -78,49 +74,30 @@ Sub subMain
If UBound (maIVs) = -1 Then
MsgBox fnGetResString (&quot;ErrorNotFound&quot;)
Else
subSaveIV (aBaseStats, aQuery, maIVs)
subCreateReport (aBaseStats, aQuery, maIVs)
End If
End Sub
&apos; fnFindIV: Finds the possible individual values of the Pokémon
Function fnFindIV ( _
aBaseStats As aStats, aQuery As aFindIVParam) As Variant
Dim nEvolved As Integer
Dim maEvBaseStats () As New aStats, aTempStats As New aStats
Dim maIV () As New aIV, aTempIV As New aIV
Dim maIV () As New aIV, nN As Integer
Dim fLevel As Double, nStamina As Integer
Dim nAttack As Integer, nDefense As integer
Dim nI As Integer, nJ As Integer
Dim fStep As Double, nN As Integer, fMaxLevel As Double
Dim nI As Integer, nJ As Integer, fLevelStep As Double
If aQuery.sPokemonId = &quot;&quot; Then
fnFindIV = maIV
Exit Function
End If
If aQuery.bIsNew Then
fStep = 1
fLevelStep = 1
Else
fStep = 0.5
fLevelStep = 0.5
End If
subReadStardust
nEvolved = UBound (aBaseStats.mEvolved)
If nEvolved &gt; -1 Then
ReDim Preserve maEvBaseStats (nEvolved) As New aStats
For nI = 0 To nEvolved
aTempStats = fnGetBaseStats (aBaseStats.mEvolved (nI))
With maEvBaseStats (nI)
.nAttack = aTempStats.nAttack
.nDefense = aTempStats.nDefense
.nStamina = aTempStats.nStamina
End With
Next nI
End If
nN = -1
fMaxLevel = aQuery.nPlayerLevel + 1.5
If fMaxLevel &gt; 40 Then
fMaxLevel = 40
End If
For fLevel = 1 To UBound (mStardust) Step fStep
For fLevel = 1 To UBound (mStardust) Step fLevelStep
If mStardust (CInt (fLevel - 0.5)) = aQuery.nStardust Then
For nStamina = 0 To 15
If fnCalcHP (aBaseStats, fLevel, nStamina) = aQuery.nHP Then
@ -135,30 +112,7 @@ Function fnFindIV ( _
.nAttack = nAttack
.nDefense = nDefense
.nStamina = nStamina
.nTotal = nAttack _
+ nDefense + nStamina
End With
If aQuery.nPlayerLevel &lt;&gt; 0 Then
maIV (nN).nMaxCP = fnCalcCP ( _
aBaseStats, fMaxLevel, _
nAttack, nDefense, nStamina)
End If
maIV (nN).maEvolved _
= fnGetEvolvedArray (nEvolved)
For nI = 0 To nEvolved
maIV (nN).maEvolved (nI).nCP _
= fnCalcCP ( _
maEvBaseStats (nI), _
fLevel, nAttack, _
nDefense, nStamina)
If aQuery.nPlayerLevel &lt;&gt; 0 Then
maIV (nN).maEvolved (nI).nMaxCP _
= fnCalcCP ( _
maEvBaseStats (nI), _
fMaxLevel, nAttack, _
nDefense, nStamina)
End If
Next nI
End If
Next nDefense
Next nAttack
@ -166,309 +120,9 @@ Function fnFindIV ( _
Next nStamina
End If
Next fLevel
&apos; Sorts the IVs
For nI = 0 To UBound (maIV) - 1
For nJ = nI + 1 To UBound (maIV)
If fnCompareIV (maIV (nI), maIV (nJ)) &gt; 0 Then
&apos; This is an array of data. The data are actually
&apos; allocated in sequences. maIV (nI) is not a
&apos; reference. They cannot simply be assigned.
subCopyIV (maIV (nI), aTempIV)
subCopyIV (maIV (nJ), maIV (nI))
subCopyIV (aTempIV, maIV (nJ))
End If
Next nJ
Next nI
fnFindIV = maIV
End Function
&apos; fnCompareIV: Compare two IVs for sorting
Function fnCompareIV (aIVa As aIV, aIVb As aIV) As Double
Dim nCPa As Integer, nCPb As Integer, nI As Integer
nCPa = aIVa.nMaxCP
For nI = 0 To UBound (aIVa.maEvolved)
If nCPa &lt; aIVa.maEvolved (nI).nMaxCP Then
nCPa = aIVa.maEvolved (nI).nMaxCP
End If
Next nI
nCPb = aIVb.nMaxCP
For nI = 0 To UBound (aIVb.maEvolved)
If nCPb &lt; aIVb.maEvolved (nI).nMaxCP Then
nCPb = aIVb.maEvolved (nI).nMaxCP
End If
Next nI
fnCompareIV = nCPb - nCPa
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
nCPa = 0
For nI = 0 To UBound (aIVa.maEvolved)
If nCPa &lt; aIVa.maEvolved (nI).nCP Then
nCPa = aIVa.maEvolved (nI).nCP
End If
Next nI
nCPb = 0
For nI = 0 To UBound (aIVb.maEvolved)
If nCPb &lt; aIVb.maEvolved (nI).nCP Then
nCPb = aIVb.maEvolved (nI).nCP
End If
Next nI
fnCompareIV = nCPb - nCPa
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nTotal - aIVa.nTotal
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.fLevel - aIVa.fLevel
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nStamina - aIVa.nStamina
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nAttack - aIVa.nAttack
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nDefense - aIVa.nDefense
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
End Function
&apos; subCopyIV: Copies one IV to another
Function subCopyIV (aFrom As aIV, aTo As aIV) As Double
Dim nI As Integer
With aTo
.nAttack = aFrom.nAttack
.nDefense = aFrom.nDefense
.nStamina = aFrom.nStamina
.nTotal = aFrom.nTotal
.nMaxCP = aFrom.nMaxCP
End With
aTo.maEvolved = fnGetEvolvedArray (UBound (aFrom.maEvolved))
For nI = 0 To UBound (aFrom.maEvolved)
With aTo.maEvolved (nI)
.nCP = aFrom.maEvolved (nI).nCP
.nMaxCP = aFrom.maEvolved (nI).nMaxCP
End With
Next nI
End Function
&apos; subSaveIV: Saves the found IV
Sub subSaveIV ( _
aBaseStats As aStats, aQuery As aFindIVParam, maIVs () As aIV)
Dim oDoc As Object, oSheet As Object
Dim oRange As Object, oColumns As Object, oRows As Object
Dim nI As Integer, nJ As Integer, nFront As Integer
Dim nEvolved As Integer
Dim mData (Ubound (maIVs) + 1) As Variant, mRow () As Variant
Dim mProps () As New com.sun.star.beans.PropertyValue
oDoc = StarDesktop.loadComponentFromURL ( _
&quot;private:factory/scalc&quot;, &quot;_default&quot;, 0, mProps)
oSheet = oDoc.getSheets.getByIndex (0)
nEvolved = UBound (maIVs (0).maEvolved) + 1
mRow = Array ( _
&quot;No&quot;, &quot;Pokemon&quot;, &quot;CP&quot;, &quot;HP&quot;, &quot;Stardust&quot;, _
&quot;Lv&quot;, &quot;Atk&quot;, &quot;Def&quot;, &quot;Sta&quot;, &quot;IV&quot;)
nFront = UBound (mRow)
If aQuery.sPokemonId = &quot;Eevee&quot; Then
If aQuery.nPlayerLevel &lt;&gt; 0 Then
ReDim Preserve mRow (nFront + 6) As Variant
mRow (nFront + 1) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (0)
mRow (nFront + 2) = &quot;Powered-up as &quot; _
&amp; aBaseStats.mEvolved (0)
mRow (nFront + 3) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (1)
mRow (nFront + 4) = &quot;Powered-up as &quot; _
&amp; aBaseStats.mEvolved (1)
mRow (nFront + 5) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (2)
mRow (nFront + 6) = &quot;Powered-up as &quot; _
&amp; aBaseStats.mEvolved (2)
Else
ReDim Preserve mRow (nFront + 3) As Variant
mRow (nFront + 1) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (0)
mRow (nFront + 2) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (1)
mRow (nFront + 3) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (2)
End If
Else
If nEvolved = 0 Then
If aQuery.nPlayerLevel &lt;&gt; 0 Then
ReDim Preserve mRow (nFront + 1) As Variant
mRow (nFront + 1) = &quot;Powered-up&quot;
End If
Else
If aQuery.nPlayerLevel &lt;&gt; 0 Then
ReDim Preserve mRow (nFront + nEvolved + 1) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (nJ)
Next nJ
mRow (UBound (mRow)) = &quot;Powered-up as &quot; _
&amp; aBaseStats.mEvolved (nEvolved - 1)
Else
ReDim Preserve mRow (nFront + nEvolved) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = &quot;CP as &quot; _
&amp; aBaseStats.mEvolved (nJ)
Next nJ
End If
End If
End If
mData (0) = mRow
For nI = 0 To UBound (maIVs)
mRow = Array ( _
&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina, _
maIVs (nI).nTotal / 45)
If aQuery.sPokemonId = &quot;Eevee&quot; Then
If aQuery.nPlayerLevel &lt;&gt; 0 Then
ReDim Preserve mRow (nFront + 6) As Variant
mRow (nFront + 1) = maIVs (nI).maEvolved (0).nCP
mRow (nFront + 2) = maIVs (nI).maEvolved (0).nMaxCP
mRow (nFront + 3) = maIVs (nI).maEvolved (1).nCP
mRow (nFront + 4) = maIVs (nI).maEvolved (1).nMaxCP
mRow (nFront + 5) = maIVs (nI).maEvolved (2).nCP
mRow (nFront + 6) = maIVs (nI).maEvolved (2).nMaxCP
Else
ReDim Preserve mRow (nFront + 3) As Variant
mRow (nFront + 1) = maIVs (nI).maEvolved (0).nCP
mRow (nFront + 2) = maIVs (nI).maEvolved (1).nCP
mRow (nFront + 3) = maIVs (nI).maEvolved (2).nCP
End If
Else
If nEvolved = 0 Then
If aQuery.nPlayerLevel &lt;&gt; 0 Then
ReDim Preserve mRow (nFront + 1) As Variant
mRow (nFront + 1) = maIVs (nI).nMaxCP
End If
Else
If aQuery.nPlayerLevel &lt;&gt; 0 Then
ReDim Preserve mRow (nFront + nEvolved + 1) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = maIVs (nI).maEvolved (nJ).nCP
Next nJ
mRow (UBound (mRow)) = maIVs (nI).maEvolved (nEvolved - 1).nMaxCP
Else
ReDim Preserve mRow (nFront + nEvolved) As Variant
For nJ = 0 To nEvolved - 1
mRow (nFront + nJ + 1) = maIVs (nI).maEvolved (nJ).nCP
Next nJ
End If
End If
End If
mData (nI + 1) = mRow
Next nI
&apos; Fills the query information at the first row
mData (1) (0) = aBaseStats.sNo
mData (1) (1) = aQuery.sPokemonName
mData (1) (2) = aQuery.nCP
mData (1) (3) = aQuery.nHP
mData (1) (4) = aQuery.nStardust
oRange = oSheet.getCellRangeByPosition ( _
0, 0, UBound (mData (0)), UBound (mData))
oRange.setDataArray (mData)
oRange.setPropertyValue (&quot;VertJustify&quot;, _
com.sun.star.table.CellVertJustify.TOP)
oRange = oSheet.getCellRangeByPosition ( _
0, 1, 0, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
1, 1, 1, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
2, 1, 2, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
3, 1, 3, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
4, 1, 4, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
9, 1, 9, UBound (mData))
oRange.setPropertyValue (&quot;NumberFormat&quot;, 10)
If aQuery.sPokemonId = &quot;Eevee&quot; Then
oRange = oSheet.getCellRangeByPosition ( _
10, 0, 15, 0)
Else
If nEvolved = 0 Then
oRange = oSheet.getCellRangeByPosition ( _
10, 0, 10, 0)
Else
oRange = oSheet.getCellRangeByPosition ( _
10, 0, 10 + nEvolved + 1, 0)
End If
End If
oRange.setPropertyValue (&quot;IsTextWrapped&quot;, True)
oRows = oSheet.getRows
oRows.getByIndex (0).setPropertyValue (&quot;Height&quot;, 840)
oColumns = oSheet.getColumns
oColumns.getByIndex (0).setPropertyValue (&quot;Width&quot;, 890)
oColumns.getByIndex (1).setPropertyValue (&quot;Width&quot;, 2310)
oColumns.getByIndex (2).setPropertyValue (&quot;Width&quot;, 890)
oColumns.getByIndex (3).setPropertyValue (&quot;Width&quot;, 890)
oColumns.getByIndex (4).setPropertyValue (&quot;Width&quot;, 1780)
oColumns.getByIndex (5).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (6).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (7).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (8).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (9).setPropertyValue (&quot;Width&quot;, 1030)
If aQuery.sPokemonId = &quot;Eevee&quot; Then
If aQuery.nPlayerLevel &lt;&gt; 0 Then
For nI = 0 To 5 Step 2
oColumns.getByIndex (10 + nI).setPropertyValue ( _
&quot;Width&quot;, 2310)
oColumns.getByIndex (10 + nI + 1).setPropertyValue ( _
&quot;Width&quot;, 2810)
Next nI
Else
For nI = 0 To 2
oColumns.getByIndex (10 + nI).setPropertyValue ( _
&quot;Width&quot;, 2310)
Next nI
End If
Else
If nEvolved = 0 Then
If aQuery.nPlayerLevel &lt;&gt; 0 Then
oColumns.getByIndex (10).setPropertyValue ( _
&quot;Width&quot;, 2200)
End If
Else
For nI = 0 To nEvolved - 1
oColumns.getByIndex (10 + nI).setPropertyValue ( _
&quot;Width&quot;, 2310)
Next nI
If aQuery.nPlayerLevel &lt;&gt; 0 Then
oColumns.getByIndex ( _
10 + nEvolved).setPropertyValue ( _
&quot;Width&quot;, 2810)
End If
End If
End If
End Sub
&apos; fnFilterAppraisals: Filters the IV by the appraisals.
Function fnFilterAppraisals (aQuery As aFindIVParam, _
nAttack As Integer, nDefense As Integer, _
@ -587,8 +241,8 @@ Function fnGetCPM (fLevel As Double) As Double
If CInt (fLevel) = fLevel Then
fnGetCPM = mCPM (fLevel)
Else
fnGetCPM = ((mCpm (fLevel - 0.5) ^ 2 _
+ mCpm (fLevel + 0.5) ^ 2) / 2) ^ 0.5
fnGetCPM = ((mCPM (fLevel - 0.5) ^ 2 _
+ mCPM (fLevel + 0.5) ^ 2) / 2) ^ 0.5
End If
End Function
@ -597,56 +251,6 @@ Function fnFloor (fNumber As Double) As Integer
fnFloor = CInt (fNumber - 0.5)
End Function
&apos; fnMapPokemonIdToName: Maps the Pokémon IDs to their localized names.
Function fnMapPokemonIdToName (sId As String) As String
fnMapPokemonIdToName = fnGetResString (&quot;Pokemon&quot; &amp; sId)
End Function
&apos; subReadBaseStats: Reads the base stats table.
Sub subReadBaseStats
Dim mData As Variant, nI As Integer, nJ As Integer
DIm nEvolved As Integer
If UBound (maBaseStats) = -1 Then
mData = fnGetBaseStatsData
ReDim Preserve maBaseStats (UBound (mData)) As New aStats
For nI = 0 To UBound (mData)
With maBaseStats (nI)
.sNo = mData (nI) (1)
.sPokemonId = mData (nI) (0)
.nStamina = mData (nI) (2)
.nAttack = mData (nI) (3)
.nDefense = mData (nI) (4)
End With
nEvolved = UBound (mData (nI) (5))
maBaseStats (nI).mEvolved = fnGetStringArray (nEvolved)
For nJ = 0 To nEvolved
maBaseStats (nI).mEvolved (nJ) = mData (nI) (5) (nJ)
Next nJ
Next nI
End If
End Sub
&apos; fnGetStringArray: Obtains a blank string array
Function fnGetStringArray (nUBound As Integer) As Variant
Dim mData () As String
If nUBound &gt;= 0 Then
ReDim Preserve mData (nUBound) As String
End If
fnGetStringArray = mData
End Function
&apos; fnGetEvolvedArray: Obtains a blank aEvolvedStats array
Function fnGetEvolvedArray (nUBound As Integer) As Variant
Dim mData () As New aEvolvedStats
If nUBound &gt;= 0 Then
ReDim Preserve mData (nUBound) As New aEvolvedStats
End If
fnGetEvolvedArray = mData
End Function
&apos; fnReplace: Replaces all occurrances of a term to another.
Function fnReplace ( _
sText As String, sFrom As String, sTo As String) As String
@ -662,6 +266,37 @@ Function fnReplace ( _
fnReplace = sResult
End Function
&apos; subReadBaseStats: Reads the base stats table.
Sub subReadBaseStats
Dim mData As Variant, nI As Integer, nJ As Integer, nK As Integer
Dim nEvolved As Integer, mEvolved () As Variant
If UBound (maBaseStats) = -1 Then
mData = fnGetBaseStatsData
ReDim Preserve maBaseStats (UBound (mData)) As New aStats
For nI = 0 To UBound (mData)
With maBaseStats (nI)
.sNo = mData (nI) (1)
.sPokemonId = mData (nI) (0)
.nStamina = mData (nI) (2)
.nAttack = mData (nI) (3)
.nDefense = mData (nI) (4)
End With
nEvolved = UBound (mData (nI) (5)) + 1
mEvolved = Array ()
maBaseStats (nI).bIsLastForm = True
If nEvolved &gt; 0 Then
ReDim mEvolved (nEvolved - 1) As Variant
For nJ = 0 To nEvolved - 1
mEvolved (nJ) = mData (nI) (5) (nJ)
Next nJ
maBaseStats (nI).mEvolved = mEvolved
maBaseStats (nI).bIsLastForm = False
End If
Next nI
End If
End Sub
&apos; subReadCPM: Reads the CPM table.
Sub subReadCPM
If UBound (mCPM) = -1 Then

View File

@ -52,6 +52,19 @@ Function fnAskParam As aFindIVParam
oDialog.getControl (&quot;cbxBest3&quot;).setVisible (False)
oDialog.getControl (&quot;lstMax&quot;).setVisible (False)
&apos; Adds the Pokémons by their localized names.
subReadBaseStats
ReDim mPokemons (UBound (maBaseStats)) As String
For nI = 0 To UBound (maBaseStats)
mPokemons (nI) = fnGetResString ( _
&quot;Pokemon&quot; &amp; maBaseStats (nI).sPokemonId)
Next nI
oList = oDialog.getControl (&quot;lstPokemon&quot;)
If oList.getItemCount &gt; 0 Then
getItemCount.removeItems (0, oList.getItemCount)
End If
oList.addItems (mPokemons, 0)
oDialog.getControl (&quot;imgPokemon&quot;).getModel.setPropertyValue ( _
&quot;ImageURL&quot;, fnGetImageUrl (&quot;Unknown&quot;))
oDialog.getControl (&quot;imgTeamLogo&quot;).getModel.setPropertyValue ( _

382
oxt/PokemonGoIV/2Report.xba Normal file
View File

@ -0,0 +1,382 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="2Report" script:language="StarBasic">&apos; Copyright (c) 2017 imacat.
&apos;
&apos; Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
&apos; you may not use this file except in compliance with the License.
&apos; You may obtain a copy of the License at
&apos;
&apos; http://www.apache.org/licenses/LICENSE-2.0
&apos;
&apos; Unless required by applicable law or agreed to in writing, software
&apos; distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
&apos; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
&apos; See the License for the specific language governing permissions and
&apos; limitations under the License.
&apos; 2Report: The Pokémon GO IV report generator.
&apos; by imacat &lt;imacat@mail.imacat.idv.tw&gt;, 2017-06-07
Option Explicit
&apos; The base stats of a Pokémon.
Type aStats
sNo As String
sPokemonId As String
nStamina As Integer
nAttack As Integer
nDefense As Integer
mEvolved () As String
End Type
&apos; The individual values of a Pokémon.
Type aIV
fLevel As Double
nStamina As Integer
nAttack As Integer
nDefense As Integer
&apos; For sorting
nTotal As Integer
nMaxCP As Integer
nMaxMaxCP As Integer
End Type
&apos; The parameters to find the individual values.
Type aFindIVParam
sPokemonId As String
sPokemonName As String
nCP As Integer
nHP As Integer
nStardust As Integer
nPlayerLevel As Integer
bIsNew As Boolean
nTotal As Integer
sBest As String
nMax As Integer
bIsCancelled As Boolean
End Type
&apos; subCreateReport: Creates the Pokémon GO IV report.
Sub subCreateReport ( _
aBaseStats As aStats, aQuery As aFindIVParam, maIVs () As aIV)
Dim oDoc As Object, oSheet As Object
Dim oRange As Object, oColumns As Object, oRows As Object
Dim oCell As Object, sFormula As String
Dim nI As Integer, nJ As Integer, nCol As Integer
Dim nLeadCols As Integer, nTotalCols As Integer
Dim nEvolved As Integer, fMaxLevel As Double
Dim sCPM As String, sMaxCPM As String
Dim sColIVAttack As String, sColIVDefense As String
Dim sColIVStamina As String
Dim sPokemonName As String
Dim mData (Ubound (maIVs) + 1) As Variant, mRow () As Variant
Dim maEvBaseStats () As Variant
Dim mProps () As New com.sun.star.beans.PropertyValue
oDoc = StarDesktop.loadComponentFromURL ( _
&quot;private:factory/scalc&quot;, &quot;_default&quot;, 0, mProps)
oSheet = oDoc.getSheets.getByIndex (0)
nEvolved = UBound (aBaseStats.mEvolved) + 1
If nEvolved &gt; 0 Then
ReDim maEvBaseStats (nEvolved - 1) As Variant
For nJ = 0 To nEvolved - 1
maEvBaseStats (nJ) = fnGetBaseStats (aBaseStats.mEvolved (nJ))
Next nJ
End If
If aQuery.nPlayerLevel &lt;&gt; 0 Then
fMaxLevel = aQuery.nPlayerLevel + 1.5
If fMaxLevel &gt; 40 Then
fMaxLevel = 40
End If
Else
fMaxLevel = 40
End If
sMaxCPM = fnGetCPMFormula (fMaxLevel)
&apos; Sorts the IVs
subSortIVs (aBaseStats, maEvBaseStats, maIVs, fMaxLevel)
&apos; Fills in the report data.
mRow = Array ( _
fnGetResString (&quot;ReportNo&quot;), _
fnGetResString (&quot;ReportPokemon&quot;), _
fnGetResString (&quot;ReportCP&quot;), _
fnGetResString (&quot;ReportHP&quot;), _
fnGetResString (&quot;ReportStardust&quot;), _
fnGetResString (&quot;ReportLevel&quot;), _
fnGetResString (&quot;ReportAttack&quot;), _
fnGetResString (&quot;ReportDefense&quot;), _
fnGetResString (&quot;ReportStamina&quot;), _
fnGetResString (&quot;ReportIVPercent&quot;))
nLeadCols = UBound (mRow) + 1
nTotalCols = nLeadCols
If aBaseStats.bIsLastForm Then
nTotalCols = nTotalCols + 1
End If
For nJ = 0 To nEvolved - 1
nTotalCols = nTotalCols + 1
If maEvBaseStats (nJ).bIsLastForm Then
nTotalCols = nTotalCols + 1
End If
Next nJ
ReDim Preserve mRow (nTotalCols - 1) As Variant
nCol = nLeadCols
If aBaseStats.bIsLastForm Then
mRow (nCol) = fnReplace (fnGetResString (&quot;ReportCPPowerUp&quot;), _
&quot;[Level]&quot;, fMaxLevel)
nCol = nCol + 1
End If
For nJ = 0 To nEvolved - 1
sPokemonName = fnGetResString ( _
&quot;Pokemon&quot; &amp; aBaseStats.mEvolved (nJ))
mRow (nCol) = fnReplace (fnGetResString (&quot;ReportCPEvolve&quot;), _
&quot;[Pokémon]&quot;, sPokemonName)
nCol = nCol + 1
If maEvBaseStats (nJ).bIsLastForm Then
mRow (nCol) = fnReplace (fnReplace ( _
fnGetResString (&quot;ReportCPEvolvePowerUp&quot;), _
&quot;[Pokémon]&quot;, sPokemonName), _
&quot;[Level]&quot;, fMaxLevel)
End If
Next nJ
mData (0) = mRow
For nI = 0 To UBound (maIVs)
mRow = Array ( _
&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina, &quot;&quot;)
ReDim Preserve mRow (nTotalCols - 1) As Variant
For nJ = nLeadCols To nEvolved - 1
mRow (nJ) = &quot;&quot;
Next nJ
mData (nI + 1) = mRow
Next nI
&apos; Fills the query information at the first row
mData (1) (0) = aBaseStats.sNo
mData (1) (1) = aQuery.sPokemonName
mData (1) (2) = aQuery.nCP
mData (1) (3) = aQuery.nHP
mData (1) (4) = aQuery.nStardust
oRange = oSheet.getCellRangeByPosition ( _
0, 0, UBound (mData (0)), UBound (mData))
oRange.setDataArray (mData)
oRange.setPropertyValue (&quot;VertJustify&quot;, _
com.sun.star.table.CellVertJustify.TOP)
&apos; Fills in the CP calculation.
For nI = 0 To UBound (maIVs)
sCPM = fnGetCPMFormula (maIVs (nI).fLevel)
sColIVAttack = &quot;G&quot; &amp; (nI + 2)
sColIVDefense = &quot;H&quot; &amp; (nI + 2)
sColIVStamina = &quot;I&quot; &amp; (nI + 2)
oCell = oSheet.getCellByPosition (nLeadCols - 1, nI + 1)
sFormula = &quot;=(&quot; &amp; sColIVAttack &amp; &quot;+&quot; &amp; sColIVDefense _
&amp; &quot;+&quot; &amp; sColIVStamina &amp; &quot;)/45&quot;
oCell.setFormula (sFormula)
nCol = nLeadCols
If aBaseStats.bIsLastForm Then
oCell = oSheet.getCellByPosition (nCol, nI + 1)
sFormula = fnGetCPFormula (aBaseStats, _
sColIVAttack, sColIVDefense, sColIVStamina, sMaxCPM)
oCell.setFormula (sFormula)
nCol = nCol + 1
End If
For nJ = 0 To nEvolved - 1
oCell = oSheet.getCellByPosition (nCol, nI + 1)
sFormula = fnGetCPFormula (maEvBaseStats (nJ), _
sColIVAttack, sColIVDefense, sColIVStamina, sCPM)
oCell.setFormula (sFormula)
nCol = nCol + 1
If maEvBaseStats (nJ).bIsLastForm Then
oCell = oSheet.getCellByPosition (nCol, nI + 1)
sFormula = fnGetCPFormula (maEvBaseStats (nJ), _
sColIVAttack, sColIVDefense, sColIVStamina, sMaxCPM)
oCell.setFormula (sFormula)
nCol = nCol + 1
End If
Next nJ
Next nI
oRange = oSheet.getCellRangeByPosition ( _
0, 1, 0, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
1, 1, 1, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
2, 1, 2, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
3, 1, 3, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
4, 1, 4, UBound (mData))
oRange.merge (True)
oRange = oSheet.getCellRangeByPosition ( _
9, 1, 9, UBound (mData))
oRange.setPropertyValue (&quot;NumberFormat&quot;, 10)
oRange = oSheet.getCellRangeByPosition ( _
nLeadCols, 0, nTotalCols - 1, 0)
oRange.setPropertyValue (&quot;IsTextWrapped&quot;, True)
oColumns = oSheet.getColumns
oColumns.getByIndex (0).setPropertyValue (&quot;Width&quot;, 890)
oColumns.getByIndex (1).setPropertyValue (&quot;Width&quot;, 2310)
oColumns.getByIndex (2).setPropertyValue (&quot;Width&quot;, 890)
oColumns.getByIndex (3).setPropertyValue (&quot;Width&quot;, 890)
oColumns.getByIndex (4).setPropertyValue (&quot;Width&quot;, 1780)
oColumns.getByIndex (5).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (6).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (7).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (8).setPropertyValue (&quot;Width&quot;, 860)
oColumns.getByIndex (9).setPropertyValue (&quot;Width&quot;, 1030)
For nJ = nLeadCols To nTotalCols - 1
oColumns.getByIndex (nJ).setPropertyValue ( _
&quot;Width&quot;, 2810)
Next nJ
oRows = oSheet.getRows
oRows.getByIndex (0).setPropertyValue (&quot;OptimalHeight&quot;, True)
End Sub
&apos; subSortIVs: Sorts the IVs
Sub subSortIVs ( _
aBaseStats As aStats, maEvBaseStats () As aIV, _
maIVs () As aIV, fMaxLevel As Double)
Dim nI As Integer, nJ As Integer
Dim nCP As Integer
&apos; Calculate the sorting keys.
For nI = 0 To UBound (maIVs) - 1
maIVs (nI).nTotal = maIVs (nI).nAttack + maIVs (nI).nDefense _
+ maIVs (nI).nStamina
maIVs (nI).nMaxCP = fnCalcCP (aBaseStats, _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
maIVs (nI).nMaxMaxCP = fnCalcCP (aBaseStats, _
fMaxLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
For nJ = 0 To UBound (aBaseStats.mEvolved)
nCP = fnCalcCP (maEvBaseStats (nJ), _
maIVs (nI).fLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
If maIVs (nI).nMaxCP &lt; nCP Then
maIVs (nI).nMaxCP = nCP
End If
nCP = fnCalcCP (maEvBaseStats (nJ), _
fMaxLevel, maIVs (nI).nAttack, _
maIVs (nI).nDefense, maIVs (nI).nStamina)
If maIVs (nI).nMaxMaxCP &lt; nCP Then
maIVs (nI).nMaxMaxCP = nCP
End If
Next nJ
Next nI
&apos; Sort the IVs.
For nI = 0 To UBound (maIVs) - 1
For nJ = nI + 1 To UBound (maIVs)
If fnCompareIV (maIVs (nI), maIVs (nJ)) &gt; 0 Then
&apos; This is an array of data. The data are actually
&apos; allocated in sequences. maIVs (nI) is not a
&apos; reference. They cannot simply be assigned.
subSwapIV (maIVs (nI), maIVs (nJ))
End If
Next nJ
Next nI
End Sub
&apos; fnCompareIV: Compare two IVs for sorting
Function fnCompareIV (aIVa As aIV, aIVb As aIV) As Double
Dim nCPa As Integer, nCPb As Integer, nI As Integer
fnCompareIV = aIVb.nMaxMaxCP - aIVa.nMaxMaxCP
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nMaxCP - aIVa.nMaxCP
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nTotal - aIVa.nTotal
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.fLevel - aIVa.fLevel
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nStamina - aIVa.nStamina
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nAttack - aIVa.nAttack
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
fnCompareIV = aIVb.nDefense - aIVa.nDefense
If fnCompareIV &lt;&gt; 0 Then
Exit Function
End If
End Function
&apos; subSwapIV: Swaps two IVs
Function subSwapIV (aIVa As aIV, aIVb As aIV) As Double
Dim aTempIV As New aIV
With aTempIV
.nAttack = aIVa.nAttack
.nDefense = aIVa.nDefense
.nStamina = aIVa.nStamina
.nTotal = aIVa.nTotal
.nMaxCP = aIVa.nMaxCP
.nMaxMaxCP = aIVa.nMaxMaxCP
End With
With aIVa
.nAttack = aIVb.nAttack
.nDefense = aIVb.nDefense
.nStamina = aIVb.nStamina
.nTotal = aIVb.nTotal
.nMaxCP = aIVb.nMaxCP
.nMaxMaxCP = aIVb.nMaxMaxCP
End With
With aIVb
.nAttack = aTempIV.nAttack
.nDefense = aTempIV.nDefense
.nStamina = aTempIV.nStamina
.nTotal = aTempIV.nTotal
.nMaxCP = aTempIV.nMaxCP
.nMaxMaxCP = aTempIV.nMaxMaxCP
End With
End Function
&apos; fnGetCPFormula: Obtains the CP formula
Function fnGetCPFormula ( _
aBaseStats As aStats, sColIVAttack As String, _
sColIVDefense As String, sColIVStamina As String, _
sCPM As String) As String
fnGetCPFormula = &quot;=FLOOR(&quot; _
&amp; &quot;(&quot; &amp; aBaseStats.nAttack &amp; &quot;+&quot; &amp; sColIVAttack &amp; &quot;)&quot; _
&amp; &quot;*SQRT(&quot; &amp; aBaseStats.nDefense &amp; &quot;+&quot; &amp; sColIVDefense &amp; &quot;)&quot; _
&amp; &quot;*SQRT(&quot; &amp; aBaseStats.nStamina &amp; &quot;+&quot; &amp; sColIVStamina &amp; &quot;)&quot; _
&amp; &quot;*POWER(&quot; &amp; sCPM &amp; &quot;;2)/10;1)&quot;
End Function
&apos; fnGetCPMFormula: Obtains the CPM
Function fnGetCPMFormula (fLevel As Double) As String
If fLevel = CInt (fLevel) Then
fnGetCPMFormula = &quot;&quot; &amp; mCPM (fLevel)
Else
fnGetCPMFormula = &quot;SQRT((&quot; _
&amp; &quot;POWER(&quot; &amp; mCPM (fLevel - 0.5) &amp; &quot;;2)&quot; _
&amp; &quot;+POWER(&quot; &amp; mCPM (fLevel + 0.5) &amp; &quot;;2))/2)&quot;
End If
End Function
</script:module>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="2Data" script:language="StarBasic">&apos; Copyright (c) 2016-2017 imacat.
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="3Data" script:language="StarBasic">&apos; Copyright (c) 2016-2017 imacat.
&apos;
&apos; Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
&apos; you may not use this file except in compliance with the License.
@ -14,7 +14,7 @@
&apos; See the License for the specific language governing permissions and
&apos; limitations under the License.
&apos; 2Data: The Pokémon GO data for IV calculation
&apos; 3Data: The Pokémon GO data for IV calculation
&apos; by imacat &lt;imacat@mail.imacat.idv.tw&gt;, 2017-03-01
&apos; Generated with 9Load.subReadDataSheets ()

View File

@ -39,7 +39,7 @@ Sub subReadDataSheets
&amp; &quot;&apos; See the License for the specific language governing permissions and&quot; &amp; Chr (10) _
&amp; &quot;&apos; limitations under the License.&quot; &amp; Chr (10) _
&amp; Chr (10) _
&amp; &quot;&apos; 2Data: The Pokémon GO data for IV calculation&quot; &amp; Chr (10) _
&amp; &quot;&apos; 3Data: The Pokémon GO data for IV calculation&quot; &amp; Chr (10) _
&amp; &quot;&apos; by imacat &lt;imacat@mail.imacat.idv.tw&gt;, &quot; &amp; Format (Date (), &quot;yyyy-mm-dd&quot;) &amp; Chr (10) _
&amp; &quot;&apos; Generated with 9Load.subReadDataSheets ()&quot; &amp; Chr (10) _
&amp; Chr (10) _

View File

@ -10,254 +10,3 @@
9.DlgMain.rdoTeamValor.Label=Team W~agemut
10.DlgMain.rdoTeamMystic.Label=Team W~eisheit
11.DlgMain.rdoTeamInstinct.Label=Team ~Intuition
1001.lstPokemon.StringItemList=Bisasam
1002.lstPokemon.StringItemList=Bisaknosp
1003.lstPokemon.StringItemList=Bisaflor
1004.lstPokemon.StringItemList=Glumanda
1005.lstPokemon.StringItemList=Glutexo
1006.lstPokemon.StringItemList=Glurak
1007.lstPokemon.StringItemList=Schiggy
1008.lstPokemon.StringItemList=Schillok
1009.lstPokemon.StringItemList=Turtok
1010.lstPokemon.StringItemList=Raupy
1011.lstPokemon.StringItemList=Safcon
1012.lstPokemon.StringItemList=Smettbo
1013.lstPokemon.StringItemList=Hornliu
1014.lstPokemon.StringItemList=Kokuna
1015.lstPokemon.StringItemList=Bibor
1016.lstPokemon.StringItemList=Taubsi
1017.lstPokemon.StringItemList=Tauboga
1018.lstPokemon.StringItemList=Tauboss
1019.lstPokemon.StringItemList=Rattfratz
1020.lstPokemon.StringItemList=Rattikarl
1021.lstPokemon.StringItemList=Habitak
1022.lstPokemon.StringItemList=Ibitak
1023.lstPokemon.StringItemList=Rettan
1024.lstPokemon.StringItemList=Arbok
1025.lstPokemon.StringItemList=Pikachu
1026.lstPokemon.StringItemList=Raichu
1027.lstPokemon.StringItemList=Sandan
1028.lstPokemon.StringItemList=Sandamer
1029.lstPokemon.StringItemList=Nidoran\u2640
1030.lstPokemon.StringItemList=Nidorina
1031.lstPokemon.StringItemList=Nidoqueen
1032.lstPokemon.StringItemList=Nidoran\u2642
1033.lstPokemon.StringItemList=Nidorino
1034.lstPokemon.StringItemList=Nidoking
1035.lstPokemon.StringItemList=Piepi
1036.lstPokemon.StringItemList=Pixi
1037.lstPokemon.StringItemList=Vulpix
1038.lstPokemon.StringItemList=Vulnona
1039.lstPokemon.StringItemList=Pummeluff
1040.lstPokemon.StringItemList=Knuddeluff
1041.lstPokemon.StringItemList=Zubat
1042.lstPokemon.StringItemList=Golbat
1043.lstPokemon.StringItemList=Myrapla
1044.lstPokemon.StringItemList=Duflor
1045.lstPokemon.StringItemList=Giflor
1046.lstPokemon.StringItemList=Paras
1047.lstPokemon.StringItemList=Parasek
1048.lstPokemon.StringItemList=Bluzuk
1049.lstPokemon.StringItemList=Omot
1050.lstPokemon.StringItemList=Digda
1051.lstPokemon.StringItemList=Digdri
1052.lstPokemon.StringItemList=Mauzi
1053.lstPokemon.StringItemList=Snobilikat
1054.lstPokemon.StringItemList=Enton
1055.lstPokemon.StringItemList=Entoron
1056.lstPokemon.StringItemList=Menki
1057.lstPokemon.StringItemList=Rasaff
1058.lstPokemon.StringItemList=Fukano
1059.lstPokemon.StringItemList=Arkani
1060.lstPokemon.StringItemList=Quapsel
1061.lstPokemon.StringItemList=Quaputzi
1062.lstPokemon.StringItemList=Quappo
1063.lstPokemon.StringItemList=Abra
1064.lstPokemon.StringItemList=Kadabra
1065.lstPokemon.StringItemList=Simsala
1066.lstPokemon.StringItemList=Machollo
1067.lstPokemon.StringItemList=Maschock
1068.lstPokemon.StringItemList=Machomei
1069.lstPokemon.StringItemList=Knofensa
1070.lstPokemon.StringItemList=Ultrigaria
1071.lstPokemon.StringItemList=Sarzenia
1072.lstPokemon.StringItemList=Tentacha
1073.lstPokemon.StringItemList=Tentoxa
1074.lstPokemon.StringItemList=Kleinstein
1075.lstPokemon.StringItemList=Georok
1076.lstPokemon.StringItemList=Geowaz
1077.lstPokemon.StringItemList=Ponita
1078.lstPokemon.StringItemList=Gallopa
1079.lstPokemon.StringItemList=Flegmon
1080.lstPokemon.StringItemList=Lahmus
1081.lstPokemon.StringItemList=Magnetilo
1082.lstPokemon.StringItemList=Magneton
1083.lstPokemon.StringItemList=Porenta
1084.lstPokemon.StringItemList=Dodu
1085.lstPokemon.StringItemList=Dodri
1086.lstPokemon.StringItemList=Jurob
1087.lstPokemon.StringItemList=Jugong
1088.lstPokemon.StringItemList=Sleima
1089.lstPokemon.StringItemList=Sleimok
1090.lstPokemon.StringItemList=Muschas
1091.lstPokemon.StringItemList=Austos
1092.lstPokemon.StringItemList=Nebulak
1093.lstPokemon.StringItemList=Alpollo
1094.lstPokemon.StringItemList=Gengar
1095.lstPokemon.StringItemList=Onix
1096.lstPokemon.StringItemList=Traumato
1097.lstPokemon.StringItemList=Hypno
1098.lstPokemon.StringItemList=Krabby
1099.lstPokemon.StringItemList=Kingler
1100.lstPokemon.StringItemList=Voltobal
1101.lstPokemon.StringItemList=Lektrobal
1102.lstPokemon.StringItemList=Owei
1103.lstPokemon.StringItemList=Kokowei
1104.lstPokemon.StringItemList=Tragosso
1105.lstPokemon.StringItemList=Knogga
1106.lstPokemon.StringItemList=Kicklee
1107.lstPokemon.StringItemList=Nockchan
1108.lstPokemon.StringItemList=Schlurp
1109.lstPokemon.StringItemList=Smogon
1110.lstPokemon.StringItemList=Smogmog
1111.lstPokemon.StringItemList=Rihorn
1112.lstPokemon.StringItemList=Rizeros
1113.lstPokemon.StringItemList=Chaneira
1114.lstPokemon.StringItemList=Tangela
1115.lstPokemon.StringItemList=Kangama
1116.lstPokemon.StringItemList=Seeper
1117.lstPokemon.StringItemList=Seemon
1118.lstPokemon.StringItemList=Goldini
1119.lstPokemon.StringItemList=Golking
1120.lstPokemon.StringItemList=Sterndu
1121.lstPokemon.StringItemList=Starmie
1122.lstPokemon.StringItemList=Pantimos
1123.lstPokemon.StringItemList=Sichlor
1124.lstPokemon.StringItemList=Rossana
1125.lstPokemon.StringItemList=Elektek
1126.lstPokemon.StringItemList=Magmar
1127.lstPokemon.StringItemList=Pinsir
1128.lstPokemon.StringItemList=Tauros
1129.lstPokemon.StringItemList=Karpador
1130.lstPokemon.StringItemList=Garados
1131.lstPokemon.StringItemList=Lapras
1132.lstPokemon.StringItemList=Ditto
1133.lstPokemon.StringItemList=Evoli
1134.lstPokemon.StringItemList=Aquana
1135.lstPokemon.StringItemList=Blitza
1136.lstPokemon.StringItemList=Flamara
1137.lstPokemon.StringItemList=Porygon
1138.lstPokemon.StringItemList=Amonitas
1139.lstPokemon.StringItemList=Amoroso
1140.lstPokemon.StringItemList=Kabuto
1141.lstPokemon.StringItemList=Kabutops
1142.lstPokemon.StringItemList=Aerodactyl
1143.lstPokemon.StringItemList=Relaxo
1144.lstPokemon.StringItemList=Arktos
1145.lstPokemon.StringItemList=Zapdos
1146.lstPokemon.StringItemList=Lavados
1147.lstPokemon.StringItemList=Dratini
1148.lstPokemon.StringItemList=Dragonir
1149.lstPokemon.StringItemList=Dragoran
1150.lstPokemon.StringItemList=Mewtu
1151.lstPokemon.StringItemList=Mew
1152.lstPokemon.StringItemList=Endivie
1153.lstPokemon.StringItemList=Lorblatt
1154.lstPokemon.StringItemList=Meganie
1155.lstPokemon.StringItemList=Feurigel
1156.lstPokemon.StringItemList=Igelavar
1157.lstPokemon.StringItemList=Tornupto
1158.lstPokemon.StringItemList=Karnimani
1159.lstPokemon.StringItemList=Tyracroc
1160.lstPokemon.StringItemList=Impergator
1161.lstPokemon.StringItemList=Wiesor
1162.lstPokemon.StringItemList=Wiesenior
1163.lstPokemon.StringItemList=Hoothoot
1164.lstPokemon.StringItemList=Noctuh
1165.lstPokemon.StringItemList=Ledyba
1166.lstPokemon.StringItemList=Ledian
1167.lstPokemon.StringItemList=Webarak
1168.lstPokemon.StringItemList=Ariados
1169.lstPokemon.StringItemList=Iksbat
1170.lstPokemon.StringItemList=Lampi
1171.lstPokemon.StringItemList=Lanturn
1172.lstPokemon.StringItemList=Pichu
1173.lstPokemon.StringItemList=Pii
1174.lstPokemon.StringItemList=Fluffeluff
1175.lstPokemon.StringItemList=Togepi
1176.lstPokemon.StringItemList=Togetic
1177.lstPokemon.StringItemList=Natu
1178.lstPokemon.StringItemList=Xatu
1179.lstPokemon.StringItemList=Voltilamm
1180.lstPokemon.StringItemList=Waaty
1181.lstPokemon.StringItemList=Ampharos
1182.lstPokemon.StringItemList=Blubella
1183.lstPokemon.StringItemList=Marill
1184.lstPokemon.StringItemList=Azumarill
1185.lstPokemon.StringItemList=Mogelbaum
1186.lstPokemon.StringItemList=Quaxo
1187.lstPokemon.StringItemList=Hoppspross
1188.lstPokemon.StringItemList=Hubelupf
1189.lstPokemon.StringItemList=Papungha
1190.lstPokemon.StringItemList=Griffel
1191.lstPokemon.StringItemList=Sonnkern
1192.lstPokemon.StringItemList=Sonnflora
1193.lstPokemon.StringItemList=Yanma
1194.lstPokemon.StringItemList=Felino
1195.lstPokemon.StringItemList=Morlord
1196.lstPokemon.StringItemList=Psiana
1197.lstPokemon.StringItemList=Nachtara
1198.lstPokemon.StringItemList=Kramurx
1199.lstPokemon.StringItemList=Laschoking
1200.lstPokemon.StringItemList=Traunfugil
1201.lstPokemon.StringItemList=Icognito
1202.lstPokemon.StringItemList=Woingenau
1203.lstPokemon.StringItemList=Girafarig
1204.lstPokemon.StringItemList=Tannza
1205.lstPokemon.StringItemList=Forstellka
1206.lstPokemon.StringItemList=Dummisel
1207.lstPokemon.StringItemList=Skorgla
1208.lstPokemon.StringItemList=Stahlos
1209.lstPokemon.StringItemList=Snubbull
1210.lstPokemon.StringItemList=Granbull
1211.lstPokemon.StringItemList=Baldorfish
1212.lstPokemon.StringItemList=Scherox
1213.lstPokemon.StringItemList=Pottrott
1214.lstPokemon.StringItemList=Skaraborn
1215.lstPokemon.StringItemList=Sniebel
1216.lstPokemon.StringItemList=Teddiursa
1217.lstPokemon.StringItemList=Ursaring
1218.lstPokemon.StringItemList=Schneckmag
1219.lstPokemon.StringItemList=Magcargo
1220.lstPokemon.StringItemList=Quiekel
1221.lstPokemon.StringItemList=Keifel
1222.lstPokemon.StringItemList=Corasonn
1223.lstPokemon.StringItemList=Remoraid
1224.lstPokemon.StringItemList=Octillery
1225.lstPokemon.StringItemList=Botogel
1226.lstPokemon.StringItemList=Mantax
1227.lstPokemon.StringItemList=Panzaeron
1228.lstPokemon.StringItemList=Hunduster
1229.lstPokemon.StringItemList=Hundemon
1230.lstPokemon.StringItemList=Seedraking
1231.lstPokemon.StringItemList=Phanpy
1232.lstPokemon.StringItemList=Donphan
1233.lstPokemon.StringItemList=Porygon2
1234.lstPokemon.StringItemList=Damhirplex
1235.lstPokemon.StringItemList=Farbeagle
1236.lstPokemon.StringItemList=Rabauz
1237.lstPokemon.StringItemList=Kapoera
1238.lstPokemon.StringItemList=Kussilla
1239.lstPokemon.StringItemList=Elekid
1240.lstPokemon.StringItemList=Magby
1241.lstPokemon.StringItemList=Miltank
1242.lstPokemon.StringItemList=Heiteira
1243.lstPokemon.StringItemList=Raikou
1244.lstPokemon.StringItemList=Entei
1245.lstPokemon.StringItemList=Suicune
1246.lstPokemon.StringItemList=Larvitar
1247.lstPokemon.StringItemList=Pupitar
1248.lstPokemon.StringItemList=Despotar
1249.lstPokemon.StringItemList=Lugia
1250.lstPokemon.StringItemList=Ho-Oh
1251.lstPokemon.StringItemList=Celebi

View File

@ -10,254 +10,3 @@
9.DlgMain.rdoTeamValor.Label=Team ~Valor
10.DlgMain.rdoTeamMystic.Label=Team ~Mystic
11.DlgMain.rdoTeamInstinct.Label=Team ~Instinct
1001.lstPokemon.StringItemList=Bulbasaur
1002.lstPokemon.StringItemList=Ivysaur
1003.lstPokemon.StringItemList=Venusaur
1004.lstPokemon.StringItemList=Charmander
1005.lstPokemon.StringItemList=Charmeleon
1006.lstPokemon.StringItemList=Charizard
1007.lstPokemon.StringItemList=Squirtle
1008.lstPokemon.StringItemList=Wartortle
1009.lstPokemon.StringItemList=Blastoise
1010.lstPokemon.StringItemList=Caterpie
1011.lstPokemon.StringItemList=Metapod
1012.lstPokemon.StringItemList=Butterfree
1013.lstPokemon.StringItemList=Weedle
1014.lstPokemon.StringItemList=Kakuna
1015.lstPokemon.StringItemList=Beedrill
1016.lstPokemon.StringItemList=Pidgey
1017.lstPokemon.StringItemList=Pidgeotto
1018.lstPokemon.StringItemList=Pidgeot
1019.lstPokemon.StringItemList=Rattata
1020.lstPokemon.StringItemList=Raticate
1021.lstPokemon.StringItemList=Spearow
1022.lstPokemon.StringItemList=Fearow
1023.lstPokemon.StringItemList=Ekans
1024.lstPokemon.StringItemList=Arbok
1025.lstPokemon.StringItemList=Pikachu
1026.lstPokemon.StringItemList=Raichu
1027.lstPokemon.StringItemList=Sandshrew
1028.lstPokemon.StringItemList=Sandslash
1029.lstPokemon.StringItemList=Nidoran\u2640
1030.lstPokemon.StringItemList=Nidorina
1031.lstPokemon.StringItemList=Nidoqueen
1032.lstPokemon.StringItemList=Nidoran\u2642
1033.lstPokemon.StringItemList=Nidorino
1034.lstPokemon.StringItemList=Nidoking
1035.lstPokemon.StringItemList=Clefairy
1036.lstPokemon.StringItemList=Clefable
1037.lstPokemon.StringItemList=Vulpix
1038.lstPokemon.StringItemList=Ninetales
1039.lstPokemon.StringItemList=Jigglypuff
1040.lstPokemon.StringItemList=Wigglytuff
1041.lstPokemon.StringItemList=Zubat
1042.lstPokemon.StringItemList=Golbat
1043.lstPokemon.StringItemList=Oddish
1044.lstPokemon.StringItemList=Gloom
1045.lstPokemon.StringItemList=Vileplume
1046.lstPokemon.StringItemList=Paras
1047.lstPokemon.StringItemList=Parasect
1048.lstPokemon.StringItemList=Venonat
1049.lstPokemon.StringItemList=Venomoth
1050.lstPokemon.StringItemList=Diglett
1051.lstPokemon.StringItemList=Dugtrio
1052.lstPokemon.StringItemList=Meowth
1053.lstPokemon.StringItemList=Persian
1054.lstPokemon.StringItemList=Psyduck
1055.lstPokemon.StringItemList=Golduck
1056.lstPokemon.StringItemList=Mankey
1057.lstPokemon.StringItemList=Primeape
1058.lstPokemon.StringItemList=Growlithe
1059.lstPokemon.StringItemList=Arcanine
1060.lstPokemon.StringItemList=Poliwag
1061.lstPokemon.StringItemList=Poliwhirl
1062.lstPokemon.StringItemList=Poliwrath
1063.lstPokemon.StringItemList=Abra
1064.lstPokemon.StringItemList=Kadabra
1065.lstPokemon.StringItemList=Alakazam
1066.lstPokemon.StringItemList=Machop
1067.lstPokemon.StringItemList=Machoke
1068.lstPokemon.StringItemList=Machamp
1069.lstPokemon.StringItemList=Bellsprout
1070.lstPokemon.StringItemList=Weepinbell
1071.lstPokemon.StringItemList=Victreebel
1072.lstPokemon.StringItemList=Tentacool
1073.lstPokemon.StringItemList=Tentacruel
1074.lstPokemon.StringItemList=Geodude
1075.lstPokemon.StringItemList=Graveler
1076.lstPokemon.StringItemList=Golem
1077.lstPokemon.StringItemList=Ponyta
1078.lstPokemon.StringItemList=Rapidash
1079.lstPokemon.StringItemList=Slowpoke
1080.lstPokemon.StringItemList=Slowbro
1081.lstPokemon.StringItemList=Magnemite
1082.lstPokemon.StringItemList=Magneton
1083.lstPokemon.StringItemList=Farfetch'd
1084.lstPokemon.StringItemList=Doduo
1085.lstPokemon.StringItemList=Dodrio
1086.lstPokemon.StringItemList=Seel
1087.lstPokemon.StringItemList=Dewgong
1088.lstPokemon.StringItemList=Grimer
1089.lstPokemon.StringItemList=Muk
1090.lstPokemon.StringItemList=Shellder
1091.lstPokemon.StringItemList=Cloyster
1092.lstPokemon.StringItemList=Gastly
1093.lstPokemon.StringItemList=Haunter
1094.lstPokemon.StringItemList=Gengar
1095.lstPokemon.StringItemList=Onix
1096.lstPokemon.StringItemList=Drowzee
1097.lstPokemon.StringItemList=Hypno
1098.lstPokemon.StringItemList=Krabby
1099.lstPokemon.StringItemList=Kingler
1100.lstPokemon.StringItemList=Voltorb
1101.lstPokemon.StringItemList=Electrode
1102.lstPokemon.StringItemList=Exeggcute
1103.lstPokemon.StringItemList=Exeggutor
1104.lstPokemon.StringItemList=Cubone
1105.lstPokemon.StringItemList=Marowak
1106.lstPokemon.StringItemList=Hitmonlee
1107.lstPokemon.StringItemList=Hitmonchan
1108.lstPokemon.StringItemList=Lickitung
1109.lstPokemon.StringItemList=Koffing
1110.lstPokemon.StringItemList=Weezing
1111.lstPokemon.StringItemList=Rhyhorn
1112.lstPokemon.StringItemList=Rhydon
1113.lstPokemon.StringItemList=Chansey
1114.lstPokemon.StringItemList=Tangela
1115.lstPokemon.StringItemList=Kangaskhan
1116.lstPokemon.StringItemList=Horsea
1117.lstPokemon.StringItemList=Seadra
1118.lstPokemon.StringItemList=Goldeen
1119.lstPokemon.StringItemList=Seaking
1120.lstPokemon.StringItemList=Staryu
1121.lstPokemon.StringItemList=Starmie
1122.lstPokemon.StringItemList=Mr. Mime
1123.lstPokemon.StringItemList=Scyther
1124.lstPokemon.StringItemList=Jynx
1125.lstPokemon.StringItemList=Electabuzz
1126.lstPokemon.StringItemList=Magmar
1127.lstPokemon.StringItemList=Pinsir
1128.lstPokemon.StringItemList=Tauros
1129.lstPokemon.StringItemList=Magikarp
1130.lstPokemon.StringItemList=Gyarados
1131.lstPokemon.StringItemList=Lapras
1132.lstPokemon.StringItemList=Ditto
1133.lstPokemon.StringItemList=Eevee
1134.lstPokemon.StringItemList=Vaporeon
1135.lstPokemon.StringItemList=Jolteon
1136.lstPokemon.StringItemList=Flareon
1137.lstPokemon.StringItemList=Porygon
1138.lstPokemon.StringItemList=Omanyte
1139.lstPokemon.StringItemList=Omastar
1140.lstPokemon.StringItemList=Kabuto
1141.lstPokemon.StringItemList=Kabutops
1142.lstPokemon.StringItemList=Aerodactyl
1143.lstPokemon.StringItemList=Snorlax
1144.lstPokemon.StringItemList=Articuno
1145.lstPokemon.StringItemList=Zapdos
1146.lstPokemon.StringItemList=Moltres
1147.lstPokemon.StringItemList=Dratini
1148.lstPokemon.StringItemList=Dragonair
1149.lstPokemon.StringItemList=Dragonite
1150.lstPokemon.StringItemList=Mewtwo
1151.lstPokemon.StringItemList=Mew
1152.lstPokemon.StringItemList=Chikorita
1153.lstPokemon.StringItemList=Bayleef
1154.lstPokemon.StringItemList=Meganium
1155.lstPokemon.StringItemList=Cyndaquil
1156.lstPokemon.StringItemList=Quilava
1157.lstPokemon.StringItemList=Typhlosion
1158.lstPokemon.StringItemList=Totodile
1159.lstPokemon.StringItemList=Croconaw
1160.lstPokemon.StringItemList=Feraligatr
1161.lstPokemon.StringItemList=Sentret
1162.lstPokemon.StringItemList=Furret
1163.lstPokemon.StringItemList=Hoothoot
1164.lstPokemon.StringItemList=Noctowl
1165.lstPokemon.StringItemList=Ledyba
1166.lstPokemon.StringItemList=Ledian
1167.lstPokemon.StringItemList=Spinarak
1168.lstPokemon.StringItemList=Ariados
1169.lstPokemon.StringItemList=Crobat
1170.lstPokemon.StringItemList=Chinchou
1171.lstPokemon.StringItemList=Lanturn
1172.lstPokemon.StringItemList=Pichu
1173.lstPokemon.StringItemList=Cleffa
1174.lstPokemon.StringItemList=Igglybuff
1175.lstPokemon.StringItemList=Togepi
1176.lstPokemon.StringItemList=Togetic
1177.lstPokemon.StringItemList=Natu
1178.lstPokemon.StringItemList=Xatu
1179.lstPokemon.StringItemList=Mareep
1180.lstPokemon.StringItemList=Flaaffy
1181.lstPokemon.StringItemList=Ampharos
1182.lstPokemon.StringItemList=Bellossom
1183.lstPokemon.StringItemList=Marill
1184.lstPokemon.StringItemList=Azumarill
1185.lstPokemon.StringItemList=Sudowoodo
1186.lstPokemon.StringItemList=Politoed
1187.lstPokemon.StringItemList=Hoppip
1188.lstPokemon.StringItemList=Skiploom
1189.lstPokemon.StringItemList=Jumpluff
1190.lstPokemon.StringItemList=Aipom
1191.lstPokemon.StringItemList=Sunkern
1192.lstPokemon.StringItemList=Sunflora
1193.lstPokemon.StringItemList=Yanma
1194.lstPokemon.StringItemList=Wooper
1195.lstPokemon.StringItemList=Quagsire
1196.lstPokemon.StringItemList=Espeon
1197.lstPokemon.StringItemList=Umbreon
1198.lstPokemon.StringItemList=Murkrow
1199.lstPokemon.StringItemList=Slowking
1200.lstPokemon.StringItemList=Misdreavus
1201.lstPokemon.StringItemList=Unown
1202.lstPokemon.StringItemList=Wobbuffet
1203.lstPokemon.StringItemList=Girafarig
1204.lstPokemon.StringItemList=Pineco
1205.lstPokemon.StringItemList=Forretress
1206.lstPokemon.StringItemList=Dunsparce
1207.lstPokemon.StringItemList=Gligar
1208.lstPokemon.StringItemList=Steelix
1209.lstPokemon.StringItemList=Snubbull
1210.lstPokemon.StringItemList=Granbull
1211.lstPokemon.StringItemList=Qwilfish
1212.lstPokemon.StringItemList=Scizor
1213.lstPokemon.StringItemList=Shuckle
1214.lstPokemon.StringItemList=Heracross
1215.lstPokemon.StringItemList=Sneasel
1216.lstPokemon.StringItemList=Teddiursa
1217.lstPokemon.StringItemList=Ursaring
1218.lstPokemon.StringItemList=Slugma
1219.lstPokemon.StringItemList=Magcargo
1220.lstPokemon.StringItemList=Swinub
1221.lstPokemon.StringItemList=Piloswine
1222.lstPokemon.StringItemList=Corsola
1223.lstPokemon.StringItemList=Remoraid
1224.lstPokemon.StringItemList=Octillery
1225.lstPokemon.StringItemList=Delibird
1226.lstPokemon.StringItemList=Mantine
1227.lstPokemon.StringItemList=Skarmory
1228.lstPokemon.StringItemList=Houndour
1229.lstPokemon.StringItemList=Houndoom
1230.lstPokemon.StringItemList=Kingdra
1231.lstPokemon.StringItemList=Phanpy
1232.lstPokemon.StringItemList=Donphan
1233.lstPokemon.StringItemList=Porygon2
1234.lstPokemon.StringItemList=Stantler
1235.lstPokemon.StringItemList=Smeargle
1236.lstPokemon.StringItemList=Tyrogue
1237.lstPokemon.StringItemList=Hitmontop
1238.lstPokemon.StringItemList=Smoochum
1239.lstPokemon.StringItemList=Elekid
1240.lstPokemon.StringItemList=Magby
1241.lstPokemon.StringItemList=Miltank
1242.lstPokemon.StringItemList=Blissey
1243.lstPokemon.StringItemList=Raikou
1244.lstPokemon.StringItemList=Entei
1245.lstPokemon.StringItemList=Suicune
1246.lstPokemon.StringItemList=Larvitar
1247.lstPokemon.StringItemList=Pupitar
1248.lstPokemon.StringItemList=Tyranitar
1249.lstPokemon.StringItemList=Lugia
1250.lstPokemon.StringItemList=Ho-Oh
1251.lstPokemon.StringItemList=Celebi

View File

@ -10,254 +10,3 @@
9.DlgMain.rdoTeamValor.Label=\u6b66\u52c7\u968a(~V)
10.DlgMain.rdoTeamMystic.Label=\u53e1\u667a\u968a(~M)
11.DlgMain.rdoTeamInstinct.Label=\u9748\u7280\u968a(~I)
1001.lstPokemon.StringItemList=\u5999\u86d9\u7a2e\u5b50
1002.lstPokemon.StringItemList=\u5999\u86d9\u8349
1003.lstPokemon.StringItemList=\u5999\u86d9\u82b1
1004.lstPokemon.StringItemList=\u5c0f\u706b\u9f8d
1005.lstPokemon.StringItemList=\u706b\u6050\u9f8d
1006.lstPokemon.StringItemList=\u5674\u706b\u9f8d
1007.lstPokemon.StringItemList=\u5091\u5c3c\u9f9c
1008.lstPokemon.StringItemList=\u5361\u54aa\u9f9c
1009.lstPokemon.StringItemList=\u6c34\u7bad\u9f9c
1010.lstPokemon.StringItemList=\u7da0\u6bdb\u87f2
1011.lstPokemon.StringItemList=\u9435\u7532\u86f9
1012.lstPokemon.StringItemList=\u5df4\u5927\u8776
1013.lstPokemon.StringItemList=\u7368\u89d2\u87f2
1014.lstPokemon.StringItemList=\u9435\u6bbc\u86f9
1015.lstPokemon.StringItemList=\u5927\u91dd\u8702
1016.lstPokemon.StringItemList=\u6ce2\u6ce2
1017.lstPokemon.StringItemList=\u6bd4\u6bd4\u9ce5
1018.lstPokemon.StringItemList=\u5927\u6bd4\u9ce5
1019.lstPokemon.StringItemList=\u5c0f\u62c9\u9054
1020.lstPokemon.StringItemList=\u62c9\u9054
1021.lstPokemon.StringItemList=\u70c8\u96c0
1022.lstPokemon.StringItemList=\u5927\u5634\u96c0
1023.lstPokemon.StringItemList=\u963f\u67cf\u86c7
1024.lstPokemon.StringItemList=\u963f\u67cf\u602a
1025.lstPokemon.StringItemList=\u76ae\u5361\u4e18
1026.lstPokemon.StringItemList=\u96f7\u4e18
1027.lstPokemon.StringItemList=\u7a7f\u5c71\u9f20
1028.lstPokemon.StringItemList=\u7a7f\u5c71\u738b
1029.lstPokemon.StringItemList=\u5c3c\u591a\u862d
1030.lstPokemon.StringItemList=\u5c3c\u591a\u5a1c
1031.lstPokemon.StringItemList=\u5c3c\u591a\u540e
1032.lstPokemon.StringItemList=\u5c3c\u591a\u6717
1033.lstPokemon.StringItemList=\u5c3c\u591a\u5229\u8afe
1034.lstPokemon.StringItemList=\u5c3c\u591a\u738b
1035.lstPokemon.StringItemList=\u76ae\u76ae
1036.lstPokemon.StringItemList=\u76ae\u53ef\u897f
1037.lstPokemon.StringItemList=\u516d\u5c3e
1038.lstPokemon.StringItemList=\u4e5d\u5c3e
1039.lstPokemon.StringItemList=\u80d6\u4e01
1040.lstPokemon.StringItemList=\u80d6\u53ef\u4e01
1041.lstPokemon.StringItemList=\u8d85\u97f3\u8760
1042.lstPokemon.StringItemList=\u5927\u5634\u8760
1043.lstPokemon.StringItemList=\u8d70\u8def\u8349
1044.lstPokemon.StringItemList=\u81ed\u81ed\u82b1
1045.lstPokemon.StringItemList=\u9738\u738b\u82b1
1046.lstPokemon.StringItemList=\u6d3e\u62c9\u65af
1047.lstPokemon.StringItemList=\u6d3e\u62c9\u65af\u7279
1048.lstPokemon.StringItemList=\u6bdb\u7403
1049.lstPokemon.StringItemList=\u6469\u9b6f\u86fe
1050.lstPokemon.StringItemList=\u5730\u9f20
1051.lstPokemon.StringItemList=\u4e09\u5730\u9f20
1052.lstPokemon.StringItemList=\u55b5\u55b5
1053.lstPokemon.StringItemList=\u8c93\u8001\u5927
1054.lstPokemon.StringItemList=\u53ef\u9054\u9d28
1055.lstPokemon.StringItemList=\u54e5\u9054\u9d28
1056.lstPokemon.StringItemList=\u7334\u602a
1057.lstPokemon.StringItemList=\u706b\u7206\u7334
1058.lstPokemon.StringItemList=\u5361\u8482\u72d7
1059.lstPokemon.StringItemList=\u98a8\u901f\u72d7
1060.lstPokemon.StringItemList=\u868a\u9999\u874c\u86aa
1061.lstPokemon.StringItemList=\u868a\u9999\u541b
1062.lstPokemon.StringItemList=\u868a\u9999\u6cf3\u58eb
1063.lstPokemon.StringItemList=\u51f1\u897f
1064.lstPokemon.StringItemList=\u52c7\u57fa\u62c9
1065.lstPokemon.StringItemList=\u80e1\u5730
1066.lstPokemon.StringItemList=\u8155\u529b
1067.lstPokemon.StringItemList=\u8c6a\u529b
1068.lstPokemon.StringItemList=\u602a\u529b
1069.lstPokemon.StringItemList=\u5587\u53ed\u82bd
1070.lstPokemon.StringItemList=\u53e3\u5446\u82b1
1071.lstPokemon.StringItemList=\u5927\u98df\u82b1
1072.lstPokemon.StringItemList=\u746a\u7459\u6c34\u6bcd
1073.lstPokemon.StringItemList=\u6bd2\u523a\u6c34\u6bcd
1074.lstPokemon.StringItemList=\u5c0f\u62f3\u77f3
1075.lstPokemon.StringItemList=\u9686\u9686\u77f3
1076.lstPokemon.StringItemList=\u9686\u9686\u5ca9
1077.lstPokemon.StringItemList=\u5c0f\u706b\u99ac
1078.lstPokemon.StringItemList=\u70c8\u7130\u99ac
1079.lstPokemon.StringItemList=\u5446\u5446\u7378
1080.lstPokemon.StringItemList=\u5446\u6bbc\u7378
1081.lstPokemon.StringItemList=\u5c0f\u78c1\u602a
1082.lstPokemon.StringItemList=\u4e09\u5408\u4e00\u78c1\u602a
1083.lstPokemon.StringItemList=\u5927\u8525\u9d28
1084.lstPokemon.StringItemList=\u561f\u561f
1085.lstPokemon.StringItemList=\u561f\u561f\u5229
1086.lstPokemon.StringItemList=\u5c0f\u6d77\u7345
1087.lstPokemon.StringItemList=\u767d\u6d77\u7345
1088.lstPokemon.StringItemList=\u81ed\u6ce5
1089.lstPokemon.StringItemList=\u81ed\u81ed\u6ce5
1090.lstPokemon.StringItemList=\u5927\u820c\u8c9d
1091.lstPokemon.StringItemList=\u523a\u7532\u8c9d
1092.lstPokemon.StringItemList=\u9b3c\u65af
1093.lstPokemon.StringItemList=\u9b3c\u65af\u901a
1094.lstPokemon.StringItemList=\u803f\u9b3c
1095.lstPokemon.StringItemList=\u5927\u5ca9\u86c7
1096.lstPokemon.StringItemList=\u50ac\u7720\u8c98
1097.lstPokemon.StringItemList=\u5f15\u5922\u8c98\u4eba
1098.lstPokemon.StringItemList=\u5927\u9257\u87f9
1099.lstPokemon.StringItemList=\u5de8\u9257\u87f9
1100.lstPokemon.StringItemList=\u9739\u9742\u96fb\u7403
1101.lstPokemon.StringItemList=\u9811\u76ae\u96f7\u5f48
1102.lstPokemon.StringItemList=\u86cb\u86cb
1103.lstPokemon.StringItemList=\u6930\u86cb\u6a39
1104.lstPokemon.StringItemList=\u5361\u62c9\u5361\u62c9
1105.lstPokemon.StringItemList=\u560e\u5566\u560e\u5566
1106.lstPokemon.StringItemList=\u98db\u817f\u90ce
1107.lstPokemon.StringItemList=\u5feb\u62f3\u90ce
1108.lstPokemon.StringItemList=\u5927\u820c\u982d
1109.lstPokemon.StringItemList=\u74e6\u65af\u86cb
1110.lstPokemon.StringItemList=\u96d9\u5f48\u74e6\u65af
1111.lstPokemon.StringItemList=\u7368\u89d2\u7280\u725b
1112.lstPokemon.StringItemList=\u947d\u89d2\u7280\u7378
1113.lstPokemon.StringItemList=\u5409\u5229\u86cb
1114.lstPokemon.StringItemList=\u8513\u85e4\u602a
1115.lstPokemon.StringItemList=\u888b\u7378
1116.lstPokemon.StringItemList=\u58a8\u6d77\u99ac
1117.lstPokemon.StringItemList=\u6d77\u523a\u9f8d
1118.lstPokemon.StringItemList=\u89d2\u91d1\u9b5a
1119.lstPokemon.StringItemList=\u91d1\u9b5a\u738b
1120.lstPokemon.StringItemList=\u6d77\u661f\u661f
1121.lstPokemon.StringItemList=\u5bf6\u77f3\u6d77\u661f
1122.lstPokemon.StringItemList=\u9b54\u7246\u4eba\u5076
1123.lstPokemon.StringItemList=\u98db\u5929\u87b3\u8782
1124.lstPokemon.StringItemList=\u8ff7\u5507\u59d0
1125.lstPokemon.StringItemList=\u96fb\u64ca\u7378
1126.lstPokemon.StringItemList=\u9d28\u5634\u706b\u7378
1127.lstPokemon.StringItemList=\u51f1\u7f85\u65af
1128.lstPokemon.StringItemList=\u80af\u6cf0\u7f85
1129.lstPokemon.StringItemList=\u9bc9\u9b5a\u738b
1130.lstPokemon.StringItemList=\u66b4\u9bc9\u9f8d
1131.lstPokemon.StringItemList=\u62c9\u666e\u62c9\u65af
1132.lstPokemon.StringItemList=\u767e\u8b8a\u602a
1133.lstPokemon.StringItemList=\u4f0a\u5e03
1134.lstPokemon.StringItemList=\u6c34\u4f0a\u5e03
1135.lstPokemon.StringItemList=\u96f7\u4f0a\u5e03
1136.lstPokemon.StringItemList=\u706b\u4f0a\u5e03
1137.lstPokemon.StringItemList=\u591a\u908a\u7378
1138.lstPokemon.StringItemList=\u83ca\u77f3\u7378
1139.lstPokemon.StringItemList=\u591a\u523a\u83ca\u77f3\u7378
1140.lstPokemon.StringItemList=\u5316\u77f3\u76d4
1141.lstPokemon.StringItemList=\u942e\u5200\u76d4
1142.lstPokemon.StringItemList=\u5316\u77f3\u7ffc\u9f8d
1143.lstPokemon.StringItemList=\u5361\u6bd4\u7378
1144.lstPokemon.StringItemList=\u6025\u51cd\u9ce5
1145.lstPokemon.StringItemList=\u9583\u96fb\u9ce5
1146.lstPokemon.StringItemList=\u706b\u7130\u9ce5
1147.lstPokemon.StringItemList=\u8ff7\u4f60\u9f8d
1148.lstPokemon.StringItemList=\u54c8\u514b\u9f8d
1149.lstPokemon.StringItemList=\u5feb\u9f8d
1150.lstPokemon.StringItemList=\u8d85\u5922
1151.lstPokemon.StringItemList=\u5922\u5e7b
1152.lstPokemon.StringItemList=\u83ca\u8349\u8449
1153.lstPokemon.StringItemList=\u6708\u6842\u8449
1154.lstPokemon.StringItemList=\u5927\u7afa\u8475
1155.lstPokemon.StringItemList=\u706b\u7403\u9f20
1156.lstPokemon.StringItemList=\u706b\u5ca9\u9f20
1157.lstPokemon.StringItemList=\u706b\u7206\u7378
1158.lstPokemon.StringItemList=\u5c0f\u92f8\u9c77
1159.lstPokemon.StringItemList=\u85cd\u9c77
1160.lstPokemon.StringItemList=\u5927\u529b\u9c77
1161.lstPokemon.StringItemList=\u5c3e\u7acb
1162.lstPokemon.StringItemList=\u5927\u5c3e\u7acb
1163.lstPokemon.StringItemList=\u5495\u5495
1164.lstPokemon.StringItemList=\u8c93\u982d\u591c\u9df9
1165.lstPokemon.StringItemList=\u82ad\u74e2\u87f2
1166.lstPokemon.StringItemList=\u5b89\u74e2\u87f2
1167.lstPokemon.StringItemList=\u5713\u7d72\u86db
1168.lstPokemon.StringItemList=\u963f\u5229\u591a\u65af
1169.lstPokemon.StringItemList=\u53c9\u5b57\u8760
1170.lstPokemon.StringItemList=\u71c8\u7c60\u9b5a
1171.lstPokemon.StringItemList=\u96fb\u71c8\u602a
1172.lstPokemon.StringItemList=\u76ae\u4e18
1173.lstPokemon.StringItemList=\u76ae\u5bf6\u5bf6
1174.lstPokemon.StringItemList=\u5bf6\u5bf6\u4e01
1175.lstPokemon.StringItemList=\u6ce2\u514b\u6bd4
1176.lstPokemon.StringItemList=\u6ce2\u514b\u57fa\u53e4
1177.lstPokemon.StringItemList=\u5929\u7136\u96c0
1178.lstPokemon.StringItemList=\u5929\u7136\u9ce5
1179.lstPokemon.StringItemList=\u54a9\u5229\u7f8a
1180.lstPokemon.StringItemList=\u8338\u8338\u7f8a
1181.lstPokemon.StringItemList=\u96fb\u9f8d
1182.lstPokemon.StringItemList=\u7f8e\u9e97\u82b1
1183.lstPokemon.StringItemList=\u746a\u529b\u9732
1184.lstPokemon.StringItemList=\u746a\u529b\u9732\u9e97
1185.lstPokemon.StringItemList=\u6a39\u624d\u602a
1186.lstPokemon.StringItemList=\u868a\u9999\u86d9\u7687
1187.lstPokemon.StringItemList=\u6bfd\u5b50\u8349
1188.lstPokemon.StringItemList=\u6bfd\u5b50\u82b1
1189.lstPokemon.StringItemList=\u6bfd\u5b50\u68c9
1190.lstPokemon.StringItemList=\u9577\u5c3e\u602a\u624b
1191.lstPokemon.StringItemList=\u5411\u65e5\u7a2e\u5b50
1192.lstPokemon.StringItemList=\u5411\u65e5\u82b1\u602a
1193.lstPokemon.StringItemList=\u873b\u873b\u8713
1194.lstPokemon.StringItemList=\u70cf\u6ce2
1195.lstPokemon.StringItemList=\u6cbc\u738b
1196.lstPokemon.StringItemList=\u592a\u967d\u4f0a\u5e03
1197.lstPokemon.StringItemList=\u6708\u4eae\u4f0a\u5e03
1198.lstPokemon.StringItemList=\u9ed1\u6697\u9d09
1199.lstPokemon.StringItemList=\u5446\u5446\u738b
1200.lstPokemon.StringItemList=\u5922\u5996
1201.lstPokemon.StringItemList=\u672a\u77e5\u5716\u9a30
1202.lstPokemon.StringItemList=\u679c\u7136\u7fc1
1203.lstPokemon.StringItemList=\u9e92\u9e9f\u5947
1204.lstPokemon.StringItemList=\u699b\u679c\u7403
1205.lstPokemon.StringItemList=\u4f5b\u70c8\u6258\u65af
1206.lstPokemon.StringItemList=\u571f\u9f8d\u5f1f\u5f1f
1207.lstPokemon.StringItemList=\u5929\u880d
1208.lstPokemon.StringItemList=\u5927\u92fc\u86c7
1209.lstPokemon.StringItemList=\u5e03\u9b6f
1210.lstPokemon.StringItemList=\u5e03\u9b6f\u7687
1211.lstPokemon.StringItemList=\u5343\u91dd\u9b5a
1212.lstPokemon.StringItemList=\u5de8\u9257\u87b3\u8782
1213.lstPokemon.StringItemList=\u58fa\u58fa
1214.lstPokemon.StringItemList=\u8d6b\u62c9\u514b\u7f85\u65af
1215.lstPokemon.StringItemList=\u72c3\u62c9
1216.lstPokemon.StringItemList=\u718a\u5bf6\u5bf6
1217.lstPokemon.StringItemList=\u5708\u5708\u718a
1218.lstPokemon.StringItemList=\u7194\u5ca9\u87f2
1219.lstPokemon.StringItemList=\u7194\u5ca9\u8778\u725b
1220.lstPokemon.StringItemList=\u5c0f\u5c71\u8c6c
1221.lstPokemon.StringItemList=\u9577\u6bdb\u8c6c
1222.lstPokemon.StringItemList=\u592a\u967d\u73ca\u745a
1223.lstPokemon.StringItemList=\u9435\u70ae\u9b5a
1224.lstPokemon.StringItemList=\u7ae0\u9b5a\u6876
1225.lstPokemon.StringItemList=\u4fe1\u4f7f\u9ce5
1226.lstPokemon.StringItemList=\u5de8\u7fc5\u98db\u9b5a
1227.lstPokemon.StringItemList=\u76d4\u7532\u9ce5
1228.lstPokemon.StringItemList=\u6234\u9b6f\u6bd4
1229.lstPokemon.StringItemList=\u9ed1\u9b6f\u52a0
1230.lstPokemon.StringItemList=\u523a\u9f8d\u738b
1231.lstPokemon.StringItemList=\u5c0f\u5c0f\u8c61
1232.lstPokemon.StringItemList=\u9813\u7532
1233.lstPokemon.StringItemList=\u591a\u908a\u7378\u2161
1234.lstPokemon.StringItemList=\u9a5a\u89d2\u9e7f
1235.lstPokemon.StringItemList=\u5716\u5716\u72ac
1236.lstPokemon.StringItemList=\u7121\u754f\u5c0f\u5b50
1237.lstPokemon.StringItemList=\u6230\u821e\u90ce
1238.lstPokemon.StringItemList=\u8ff7\u5507\u5a03
1239.lstPokemon.StringItemList=\u96fb\u64ca\u602a
1240.lstPokemon.StringItemList=\u9d28\u5634\u5bf6\u5bf6
1241.lstPokemon.StringItemList=\u5927\u5976\u7f50
1242.lstPokemon.StringItemList=\u5e78\u798f\u86cb
1243.lstPokemon.StringItemList=\u96f7\u516c
1244.lstPokemon.StringItemList=\u708e\u5e1d
1245.lstPokemon.StringItemList=\u6c34\u541b
1246.lstPokemon.StringItemList=\u5e7c\u57fa\u62c9\u65af
1247.lstPokemon.StringItemList=\u6c99\u57fa\u62c9\u65af
1248.lstPokemon.StringItemList=\u73ed\u57fa\u62c9\u65af
1249.lstPokemon.StringItemList=\u6d1b\u5947\u4e9e
1250.lstPokemon.StringItemList=\u9cf3\u738b
1251.lstPokemon.StringItemList=\u6642\u62c9\u6bd4

View File

@ -11,257 +11,6 @@
<dlg:text dlg:id="txtPokemon" dlg:tab-index="16" dlg:left="5" dlg:top="26" dlg:width="30" dlg:height="8" dlg:value="&amp;2.DlgMain.txtPokemon.Label"/>
<dlg:menulist dlg:id="lstPokemon" dlg:tab-index="0" dlg:left="35" dlg:top="24" dlg:width="55" dlg:height="12" dlg:spin="true" dlg:linecount="20">
<dlg:menupopup>
<dlg:menuitem dlg:value="&amp;1001.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1002.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1003.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1004.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1005.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1006.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1007.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1008.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1009.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1010.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1011.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1012.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1013.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1014.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1015.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1016.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1017.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1018.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1019.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1020.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1021.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1022.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1023.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1024.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1025.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1026.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1027.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1028.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1029.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1030.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1031.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1032.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1033.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1034.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1035.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1036.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1037.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1038.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1039.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1040.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1041.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1042.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1043.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1044.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1045.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1046.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1047.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1048.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1049.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1050.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1051.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1052.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1053.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1054.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1055.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1056.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1057.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1058.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1059.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1060.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1061.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1062.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1063.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1064.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1065.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1066.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1067.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1068.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1069.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1070.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1071.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1072.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1073.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1074.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1075.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1076.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1077.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1078.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1079.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1080.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1081.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1082.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1083.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1084.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1085.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1086.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1087.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1088.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1089.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1090.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1091.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1092.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1093.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1094.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1095.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1096.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1097.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1098.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1099.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1100.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1101.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1102.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1103.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1104.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1105.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1106.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1107.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1108.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1109.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1110.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1111.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1112.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1113.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1114.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1115.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1116.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1117.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1118.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1119.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1120.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1121.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1122.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1123.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1124.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1125.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1126.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1127.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1128.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1129.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1130.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1131.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1132.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1133.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1134.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1135.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1136.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1137.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1138.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1139.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1140.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1141.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1142.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1143.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1144.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1145.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1146.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1147.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1148.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1149.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1150.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1151.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1152.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1153.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1154.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1155.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1156.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1157.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1158.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1159.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1160.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1161.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1162.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1163.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1164.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1165.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1166.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1167.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1168.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1169.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1170.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1171.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1172.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1173.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1174.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1175.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1176.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1177.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1178.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1179.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1180.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1181.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1182.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1183.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1184.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1185.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1186.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1187.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1188.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1189.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1190.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1191.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1192.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1193.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1194.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1195.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1196.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1197.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1198.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1199.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1200.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1201.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1202.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1203.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1204.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1205.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1206.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1207.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1208.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1209.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1210.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1211.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1212.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1213.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1214.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1215.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1216.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1217.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1218.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1219.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1220.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1221.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1222.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1223.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1224.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1225.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1226.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1227.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1228.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1229.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1230.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1231.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1232.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1233.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1234.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1235.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1236.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1237.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1238.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1239.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1240.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1241.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1242.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1243.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1244.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1245.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1246.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1247.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1248.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1249.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1250.lstPokemon.StringItemList"/>
<dlg:menuitem dlg:value="&amp;1251.lstPokemon.StringItemList"/>
</dlg:menupopup>
<script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.script:PokemonGoIV.1Dialog.subLstPokemonSelected?language=Basic&amp;location=application" script:language="Script"/>
</dlg:menulist>

View File

@ -2,9 +2,10 @@
<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
<library:library xmlns:library="http://openoffice.org/2000/library" library:name="PokemonGoIV" library:readonly="false" library:passwordprotected="false">
<library:element library:name="0Main"/>
<library:element library:name="2Data"/>
<library:element library:name="3Data"/>
<library:element library:name="9Load"/>
<library:element library:name="8Width"/>
<library:element library:name="1Dialog"/>
<library:element library:name="7Registry"/>
<library:element library:name="2Report"/>
</library:library>