* 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:
		| @@ -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 | ||||
|   | ||||
| @@ -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
									
								
							
							
						
						
									
										379
									
								
								PokemonGoIV/2Report.vb
									
									
									
									
									
										Normal 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 | ||||
| @@ -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 () | ||||
| 
 | ||||
| @@ -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
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								TODO
									
									
									
									
									
								
							| @@ -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
											
										
									
								
							| @@ -27,6 +27,7 @@ Type aStats | ||||
| 	nAttack As Integer | ||||
| 	nDefense As Integer | ||||
| 	mEvolved () As String | ||||
| 	bIsLastForm As Boolean | ||||
| End Type | ||||
|  | ||||
| ' The individual values of a Pokémon. | ||||
| @@ -35,15 +36,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. | ||||
| @@ -78,49 +74,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 | ||||
| @@ -135,30 +112,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 | ||||
| @@ -166,309 +120,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, _ | ||||
| @@ -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 | ||||
|  | ||||
| ' 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 | ||||
| @@ -662,6 +266,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 | ||||
|   | ||||
| @@ -52,6 +52,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 ( _ | ||||
|   | ||||
							
								
								
									
										382
									
								
								oxt/PokemonGoIV/2Report.xba
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										382
									
								
								oxt/PokemonGoIV/2Report.xba
									
									
									
									
									
										Normal 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">' 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 | ||||
| </script:module> | ||||
| @@ -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">' Copyright (c) 2016-2017 imacat. | ||||
| <script:module xmlns:script="http://openoffice.org/2000/script" script:name="3Data" script:language="StarBasic">' Copyright (c) 2016-2017 imacat. | ||||
| '  | ||||
| ' Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| ' you may not use this file except in compliance with the License. | ||||
| @@ -14,7 +14,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 () | ||||
| 
 | ||||
| @@ -39,7 +39,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) _ | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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="&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="&1001.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1002.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1003.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1004.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1005.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1006.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1007.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1008.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1009.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1010.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1011.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1012.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1013.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1014.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1015.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1016.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1017.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1018.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1019.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1020.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1021.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1022.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1023.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1024.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1025.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1026.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1027.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1028.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1029.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1030.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1031.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1032.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1033.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1034.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1035.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1036.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1037.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1038.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1039.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1040.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1041.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1042.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1043.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1044.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1045.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1046.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1047.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1048.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1049.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1050.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1051.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1052.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1053.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1054.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1055.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1056.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1057.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1058.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1059.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1060.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1061.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1062.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1063.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1064.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1065.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1066.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1067.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1068.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1069.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1070.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1071.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1072.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1073.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1074.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1075.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1076.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1077.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1078.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1079.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1080.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1081.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1082.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1083.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1084.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1085.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1086.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1087.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1088.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1089.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1090.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1091.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1092.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1093.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1094.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1095.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1096.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1097.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1098.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1099.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1100.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1101.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1102.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1103.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1104.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1105.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1106.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1107.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1108.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1109.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1110.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1111.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1112.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1113.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1114.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1115.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1116.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1117.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1118.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1119.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1120.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1121.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1122.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1123.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1124.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1125.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1126.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1127.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1128.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1129.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1130.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1131.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1132.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1133.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1134.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1135.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1136.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1137.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1138.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1139.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1140.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1141.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1142.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1143.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1144.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1145.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1146.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1147.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1148.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1149.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1150.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1151.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1152.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1153.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1154.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1155.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1156.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1157.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1158.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1159.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1160.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1161.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1162.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1163.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1164.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1165.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1166.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1167.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1168.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1169.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1170.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1171.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1172.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1173.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1174.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1175.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1176.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1177.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1178.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1179.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1180.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1181.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1182.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1183.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1184.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1185.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1186.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1187.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1188.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1189.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1190.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1191.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1192.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1193.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1194.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1195.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1196.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1197.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1198.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1199.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1200.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1201.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1202.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1203.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1204.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1205.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1206.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1207.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1208.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1209.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1210.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1211.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1212.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1213.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1214.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1215.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1216.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1217.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1218.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1219.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1220.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1221.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1222.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1223.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1224.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1225.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1226.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1227.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1228.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1229.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1230.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1231.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1232.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1233.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1234.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1235.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1236.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1237.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1238.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1239.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1240.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1241.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1242.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1243.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1244.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1245.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1246.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1247.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1248.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1249.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1250.lstPokemon.StringItemList"/> | ||||
|     <dlg:menuitem dlg:value="&1251.lstPokemon.StringItemList"/> | ||||
|    </dlg:menupopup> | ||||
|    <script:event script:event-name="on-itemstatechange" script:macro-name="vnd.sun.star.script:PokemonGoIV.1Dialog.subLstPokemonSelected?language=Basic&location=application" script:language="Script"/> | ||||
|   </dlg:menulist> | ||||
|   | ||||
| @@ -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> | ||||
		Reference in New Issue
	
	Block a user