Moved item data constants into module ItemData

This commit is contained in:
Maruno17
2020-10-17 00:56:30 +01:00
parent 2b4f1e1aba
commit 7e627453da
10 changed files with 104 additions and 95 deletions

View File

@@ -41,7 +41,7 @@ class PokeBattle_Battle
#============================================================================= #=============================================================================
def pbConsumeItemInBag(item,idxBattler) def pbConsumeItemInBag(item,idxBattler)
return if item==0 return if item==0
useType = pbGetItemData(item,ITEM_BATTLE_USE) useType = pbGetItemData(item,ItemData::BATTLE_USE)
return if !useType || useType==0 || (useType>=6 && useType<=10) # Not consumed upon use return if !useType || useType==0 || (useType>=6 && useType<=10) # Not consumed upon use
if pbOwnedByPlayer?(idxBattler) if pbOwnedByPlayer?(idxBattler)
if !$PokemonBag.pbDeleteItem(item) if !$PokemonBag.pbDeleteItem(item)
@@ -60,7 +60,7 @@ class PokeBattle_Battle
def pbReturnUnusedItemToBag(item,idxBattler) def pbReturnUnusedItemToBag(item,idxBattler)
return if item==0 return if item==0
useType = pbGetItemData(item,ITEM_BATTLE_USE) useType = pbGetItemData(item,ItemData::BATTLE_USE)
return if !useType || useType==0 || (useType>=6 && useType<=10) # Not consumed upon use return if !useType || useType==0 || (useType>=6 && useType<=10) # Not consumed upon use
if pbOwnedByPlayer?(idxBattler) if pbOwnedByPlayer?(idxBattler)
if $PokemonBag && $PokemonBag.pbCanStore?(item) if $PokemonBag && $PokemonBag.pbCanStore?(item)

View File

@@ -70,7 +70,7 @@ class PokeBattle_Battle
b.lastMoveFailed = false # Counts as a successful move for Stomping Tantrum b.lastMoveFailed = false # Counts as a successful move for Stomping Tantrum
item = @choices[b.index][1] item = @choices[b.index][1]
next if !item || item<=0 next if !item || item<=0
useType = pbGetItemData(item,ITEM_BATTLE_USE) useType = pbGetItemData(item,ItemData::BATTLE_USE)
next if !useType next if !useType
case useType case useType
when 1, 2, 6, 7 # Use on Pokémon/Pokémon's move when 1, 2, 6, 7 # Use on Pokémon/Pokémon's move

View File

@@ -7,7 +7,7 @@ class PokeBattle_AI
item, idxTarget = pbEnemyItemToUse(idxBattler) item, idxTarget = pbEnemyItemToUse(idxBattler)
return false if item==0 return false if item==0
# Determine target of item (always the Pokémon choosing the action) # Determine target of item (always the Pokémon choosing the action)
useType = pbGetItemData(item,ITEM_BATTLE_USE) useType = pbGetItemData(item,ItemData::BATTLE_USE)
if useType && (useType==1 || useType==6) # Use on Pokémon if useType && (useType==1 || useType==6) # Use on Pokémon
idxTarget = @battle.battlers[idxTarget].pokemonIndex # Party Pokémon idxTarget = @battle.battlers[idxTarget].pokemonIndex # Party Pokémon
end end

View File

@@ -200,7 +200,7 @@ class PokeBattle_Scene
# Start Bag screen # Start Bag screen
itemScene = PokemonBag_Scene.new itemScene = PokemonBag_Scene.new
itemScene.pbStartScene($PokemonBag,true,Proc.new { |item| itemScene.pbStartScene($PokemonBag,true,Proc.new { |item|
useType = pbGetItemData(item,ITEM_BATTLE_USE) useType = pbGetItemData(item,ItemData::BATTLE_USE)
next useType && useType>0 next useType && useType>0
},false) },false)
# Loop while in Bag screen # Loop while in Bag screen
@@ -211,7 +211,7 @@ class PokeBattle_Scene
break if item==0 break if item==0
# Choose a command for the selected item # Choose a command for the selected item
itemName = PBItems.getName(item) itemName = PBItems.getName(item)
useType = pbGetItemData(item,ITEM_BATTLE_USE) useType = pbGetItemData(item,ItemData::BATTLE_USE)
cmdUse = -1 cmdUse = -1
commands = [] commands = []
commands[cmdUse = commands.length] = _INTL("Use") if useType && useType!=0 commands[cmdUse = commands.length] = _INTL("Use") if useType && useType!=0

View File

@@ -263,7 +263,7 @@ def pbDayCareGenerateEgg
itemsData = pbLoadItemsData itemsData = pbLoadItemsData
for i in 0...itemsData.length for i in 0...itemsData.length
next if !itemsData[i] next if !itemsData[i]
atk = itemsData[i][ITEM_MACHINE] atk = itemsData[i][ItemData::MOVE]
next if !atk || atk==0 next if !atk || atk==0
next if !egg.compatibleWithMove?(atk) next if !egg.compatibleWithMove?(atk)
next if !movefather.hasMove?(atk) next if !movefather.hasMove?(atk)

View File

@@ -1,16 +1,18 @@
#=============================================================================== #===============================================================================
# Item data # Item data
#=============================================================================== #===============================================================================
ITEM_ID = 0 module ItemData
ITEM_NAME = 1 ID = 0
ITEM_PLURAL = 2 NAME = 1
ITEM_POCKET = 3 NAME_PLURAL = 2
ITEM_PRICE = 4 POCKET = 3
ITEM_DESCRIPTION = 5 PRICE = 4
ITEM_FIELD_USE = 6 DESCRIPTION = 5
ITEM_BATTLE_USE = 7 FIELD_USE = 6
ITEM_TYPE = 8 BATTLE_USE = 7
ITEM_MACHINE = 9 TYPE = 8
MOVE = 9
end
@@ -42,92 +44,92 @@ def pbClearData
end end
def pbGetPocket(item) def pbGetPocket(item)
ret = pbGetItemData(item,ITEM_POCKET) ret = pbGetItemData(item,ItemData::POCKET)
return ret || 0 return ret || 0
end end
def pbGetPrice(item) def pbGetPrice(item)
ret = pbGetItemData(item,ITEM_PRICE) ret = pbGetItemData(item,ItemData::PRICE)
return ret || 0 return ret || 0
end end
def pbGetMachine(item) def pbGetMachine(item)
ret = pbGetItemData(item,ITEM_MACHINE) ret = pbGetItemData(item,ItemData::MOVE)
return ret || 0 return ret || 0
end end
def pbIsTechnicalMachine?(item) def pbIsTechnicalMachine?(item)
ret = pbGetItemData(item,ITEM_FIELD_USE) ret = pbGetItemData(item,ItemData::FIELD_USE)
return ret && ret==3 return ret && ret==3
end end
def pbIsHiddenMachine?(item) def pbIsHiddenMachine?(item)
ret = pbGetItemData(item,ITEM_FIELD_USE) ret = pbGetItemData(item,ItemData::FIELD_USE)
return ret && ret==4 return ret && ret==4
end end
def pbIsMachine?(item) def pbIsMachine?(item)
ret = pbGetItemData(item,ITEM_FIELD_USE) ret = pbGetItemData(item,ItemData::FIELD_USE)
return ret && (ret==3 || ret==4) return ret && (ret==3 || ret==4)
end end
def pbIsMail?(item) def pbIsMail?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && (ret==1 || ret==2) return ret && (ret==1 || ret==2)
end end
def pbIsMailWithPokemonIcons?(item) def pbIsMailWithPokemonIcons?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==2 return ret && ret==2
end end
def pbIsPokeBall?(item) def pbIsPokeBall?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && (ret==3 || ret==4) return ret && (ret==3 || ret==4)
end end
def pbIsSnagBall?(item) def pbIsSnagBall?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && (ret==3 || (ret==4 && $PokemonGlobal.snagMachine)) return ret && (ret==3 || (ret==4 && $PokemonGlobal.snagMachine))
end end
def pbIsBerry?(item) def pbIsBerry?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==5 return ret && ret==5
end end
def pbIsKeyItem?(item) def pbIsKeyItem?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==6 return ret && ret==6
end end
def pbIsEvolutionStone?(item) def pbIsEvolutionStone?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==7 return ret && ret==7
end end
def pbIsFossil?(item) def pbIsFossil?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==8 return ret && ret==8
end end
def pbIsApricorn?(item) def pbIsApricorn?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==9 return ret && ret==9
end end
def pbIsGem?(item) def pbIsGem?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==10 return ret && ret==10
end end
def pbIsMulch?(item) def pbIsMulch?(item)
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==11 return ret && ret==11
end end
def pbIsMegaStone?(item) # Does NOT include Red Orb/Blue Orb def pbIsMegaStone?(item) # Does NOT include Red Orb/Blue Orb
ret = pbGetItemData(item,ITEM_TYPE) ret = pbGetItemData(item,ItemData::TYPE)
return ret && ret==12 return ret && ret==12
end end
@@ -135,9 +137,9 @@ end
def pbIsImportantItem?(item) def pbIsImportantItem?(item)
itemData = pbLoadItemsData[getID(PBItems,item)] itemData = pbLoadItemsData[getID(PBItems,item)]
return false if !itemData return false if !itemData
return true if itemData[ITEM_TYPE] && itemData[ITEM_TYPE]==6 # Key item return true if itemData[ItemData::TYPE] && itemData[ItemData::TYPE]==6 # Key item
return true if itemData[ITEM_FIELD_USE] && itemData[ITEM_FIELD_USE]==4 # HM return true if itemData[ItemData::FIELD_USE] && itemData[ItemData::FIELD_USE]==4 # HM
return true if itemData[ITEM_FIELD_USE] && itemData[ITEM_FIELD_USE]==3 && INFINITE_TMS # TM return true if itemData[ItemData::FIELD_USE] && itemData[ItemData::FIELD_USE]==3 && INFINITE_TMS # TM
return false return false
end end
@@ -681,7 +683,7 @@ end
# Use an item from the Bag and/or on a Pokémon # Use an item from the Bag and/or on a Pokémon
#=============================================================================== #===============================================================================
def pbUseItem(bag,item,bagscene=nil) def pbUseItem(bag,item,bagscene=nil)
useType = pbGetItemData(item,ITEM_FIELD_USE) useType = pbGetItemData(item,ItemData::FIELD_USE)
if pbIsMachine?(item) # TM or HM if pbIsMachine?(item) # TM or HM
if $Trainer.pokemonCount==0 if $Trainer.pokemonCount==0
pbMessage(_INTL("There is no Pokémon.")) pbMessage(_INTL("There is no Pokémon."))
@@ -782,7 +784,7 @@ def pbUseItemOnPokemon(item,pkmn,scene)
ret = ItemHandlers.triggerUseOnPokemon(item,pkmn,scene) ret = ItemHandlers.triggerUseOnPokemon(item,pkmn,scene)
scene.pbClearAnnotations scene.pbClearAnnotations
scene.pbHardRefresh scene.pbHardRefresh
useType = pbGetItemData(item,ITEM_FIELD_USE) useType = pbGetItemData(item,ItemData::FIELD_USE)
if ret && useType && useType==1 # Usable on Pokémon, consumed if ret && useType && useType==1 # Usable on Pokémon, consumed
$PokemonBag.pbDeleteItem(item) $PokemonBag.pbDeleteItem(item)
if !$PokemonBag.pbHasItem?(item) if !$PokemonBag.pbHasItem?(item)

View File

@@ -635,26 +635,26 @@ def pbItemEditor
else else
data = [getConstantName(PBItems,selection)] data = [getConstantName(PBItems,selection)]
itemdata = pbLoadItemsData itemdata = pbLoadItemsData
data.push(itemdata[selection][ITEM_NAME]) data.push(itemdata[selection][ItemData::NAME])
data.push(itemdata[selection][ITEM_PLURAL]) data.push(itemdata[selection][ItemData::NAME_PLURAL])
data.push(itemdata[selection][ITEM_POCKET]) data.push(itemdata[selection][ItemData::POCKET])
data.push(itemdata[selection][ITEM_PRICE]) data.push(itemdata[selection][ItemData::PRICE])
data.push(itemdata[selection][ITEM_DESCRIPTION]) data.push(itemdata[selection][ItemData::DESCRIPTION])
data.push(itemdata[selection][ITEM_FIELD_USE]) data.push(itemdata[selection][ItemData::FIELD_USE])
data.push(itemdata[selection][ITEM_BATTLE_USE]) data.push(itemdata[selection][ItemData::BATTLE_USE])
data.push(itemdata[selection][ITEM_TYPE]) data.push(itemdata[selection][ItemData::TYPE])
data.push(itemdata[selection][ITEM_MACHINE]) data.push(itemdata[selection][ItemData::MOVE])
save = pbPropertyList(data[ITEM_NAME],data,items,true) save = pbPropertyList(data[ItemData::NAME],data,items,true)
if save if save
itemdata[selection][ITEM_NAME] = data[ITEM_NAME] itemdata[selection][ItemData::NAME] = data[ItemData::NAME]
itemdata[selection][ITEM_PLURAL] = data[ITEM_PLURAL] itemdata[selection][ItemData::NAME_PLURAL] = data[ItemData::NAME_PLURAL]
itemdata[selection][ITEM_POCKET] = data[ITEM_POCKET] itemdata[selection][ItemData::POCKET] = data[ItemData::POCKET]
itemdata[selection][ITEM_PRICE] = data[ITEM_PRICE] itemdata[selection][ItemData::PRICE] = data[ItemData::PRICE]
itemdata[selection][ITEM_DESCRIPTION] = data[ITEM_DESCRIPTION] itemdata[selection][ItemData::DESCRIPTION] = data[ItemData::DESCRIPTION]
itemdata[selection][ITEM_FIELD_USE] = data[ITEM_FIELD_USE] itemdata[selection][ItemData::FIELD_USE] = data[ItemData::FIELD_USE]
itemdata[selection][ITEM_BATTLE_USE] = data[ITEM_BATTLE_USE] itemdata[selection][ItemData::BATTLE_USE] = data[ItemData::BATTLE_USE]
itemdata[selection][ITEM_TYPE] = data[ITEM_TYPE] itemdata[selection][ItemData::TYPE] = data[ItemData::TYPE]
itemdata[selection][ITEM_MACHINE] = data[ITEM_MACHINE] itemdata[selection][ItemData::MOVE] = data[ItemData::MOVE]
save_data(itemdata,"Data/items.dat") save_data(itemdata,"Data/items.dat")
$PokemonTemp.itemsData = nil $PokemonTemp.itemsData = nil
pbSaveItems pbSaveItems
@@ -711,15 +711,15 @@ def pbItemEditorNew(defaultname)
return -1 if price==-1 return -1 if price==-1
desc = StringProperty.set(_INTL("Description"),"") desc = StringProperty.set(_INTL("Description"),"")
# Item list will create record automatically # Item list will create record automatically
itemdata[index][ITEM_ID] = index itemdata[index][ItemData::ID] = index
itemdata[index][ITEM_NAME] = itemname itemdata[index][ItemData::NAME] = itemname
itemdata[index][ITEM_POCKET] = pocket itemdata[index][ItemData::POCKET] = pocket
itemdata[index][ITEM_PRICE] = price itemdata[index][ItemData::PRICE] = price
itemdata[index][ITEM_DESCRIPTION] = desc itemdata[index][ItemData::DESCRIPTION] = desc
itemdata[index][ITEM_FIELD_USE] = 0 itemdata[index][ItemData::FIELD_USE] = 0
itemdata[index][ITEM_BATTLE_USE] = 0 itemdata[index][ItemData::BATTLE_USE] = 0
itemdata[index][ITEM_TYPE] = 0 itemdata[index][ItemData::TYPE] = 0
itemdata[index][ITEM_MACHINE] = 0 itemdata[index][ItemData::MOVE] = 0
PBItems.const_set(cname,index) PBItems.const_set(cname,index)
save_data(itemdata,"Data/items.dat") save_data(itemdata,"Data/items.dat")
$PokemonTemp.itemsData = nil $PokemonTemp.itemsData = nil

View File

@@ -242,19 +242,26 @@ def pbSaveItems
data = itemData[i] data = itemData[i]
cname = getConstantName(PBItems,i) rescue sprintf("ITEM%03d",i) cname = getConstantName(PBItems,i) rescue sprintf("ITEM%03d",i)
next if !cname || cname=="" || data[0]==0 next if !cname || cname=="" || data[0]==0
if curpocket!=data[ITEM_POCKET] if curpocket!=data[ItemData::POCKET]
curpocket = data[ITEM_POCKET] curpocket = data[ItemData::POCKET]
f.write("\#-------------------------------\r\n") f.write("\#-------------------------------\r\n")
end end
machine = "" machine = ""
if data[ITEM_MACHINE]>0 if data[ItemData::MOVE]>0
machine = getConstantName(PBMoves,data[ITEM_MACHINE]) rescue pbGetMoveConst(data[ITEM_MACHINE]) rescue "" machine = getConstantName(PBMoves,data[ItemData::MOVE]) rescue pbGetMoveConst(data[ItemData::MOVE]) rescue ""
end end
f.write(sprintf("%d,%s,%s,%s,%d,%d,%s,%d,%d,%d,%s", f.write(sprintf("%d,%s,%s,%s,%d,%d,%s,%d,%d,%d,%s",
data[ITEM_ID],csvQuote(cname),csvQuote(data[ITEM_NAME]), data[ItemData::ID],
csvQuote(data[ITEM_PLURAL]),data[ITEM_POCKET],data[ITEM_PRICE], csvQuote(cname),
csvQuoteAlways(data[ITEM_DESCRIPTION]),data[ITEM_FIELD_USE], csvQuote(data[ItemData::NAME]),
data[ITEM_BATTLE_USE],data[ITEM_TYPE],csvQuote(machine))) csvQuote(data[ItemData::NAME_PLURAL]),
data[ItemData::POCKET],
data[ItemData::PRICE],
csvQuoteAlways(data[ItemData::DESCRIPTION]),
data[ItemData::FIELD_USE],
data[ItemData::BATTLE_USE],
data[ItemData::TYPE],
csvQuote(machine)))
f.write("\r\n") f.write("\r\n")
end end
} }

View File

@@ -408,8 +408,8 @@ class ItemLister
cmds = [] cmds = []
for i in 1..PBItems.maxValue for i in 1..PBItems.maxValue
next if !@itemdata[i] next if !@itemdata[i]
name = @itemdata[i][ITEM_NAME] name = @itemdata[i][ItemData::NAME]
if name && name!="" && @itemdata[i][ITEM_POCKET]!=0 if name && name!="" && @itemdata[i][ItemData::POCKET]!=0
cmds.push([i,name]) cmds.push([i,name])
end end
end end

View File

@@ -546,24 +546,24 @@ def pbCompileItems
linerecord = pbGetCsvRecord(line,lineno,[0,"vnssuusuuUN"]) linerecord = pbGetCsvRecord(line,lineno,[0,"vnssuusuuUN"])
id = linerecord[0] id = linerecord[0]
record = [] record = []
record[ITEM_ID] = id record[ItemData::ID] = id
constant = linerecord[1] constant = linerecord[1]
constants += "#{constant}=#{id}\r\n" constants += "#{constant}=#{id}\r\n"
record[ITEM_NAME] = linerecord[2] record[ItemData::NAME] = linerecord[2]
itemnames[id] = linerecord[2] itemnames[id] = linerecord[2]
record[ITEM_PLURAL] = linerecord[3] record[ItemData::NAME_PLURAL] = linerecord[3]
itempluralnames[id] = linerecord[3] itempluralnames[id] = linerecord[3]
record[ITEM_POCKET] = linerecord[4] record[ItemData::POCKET] = linerecord[4]
record[ITEM_PRICE] = linerecord[5] record[ItemData::PRICE] = linerecord[5]
record[ITEM_DESCRIPTION] = linerecord[6] record[ItemData::DESCRIPTION] = linerecord[6]
itemdescs[id] = linerecord[6] itemdescs[id] = linerecord[6]
record[ITEM_FIELD_USE] = linerecord[7] record[ItemData::FIELD_USE] = linerecord[7]
record[ITEM_BATTLE_USE] = linerecord[8] record[ItemData::BATTLE_USE] = linerecord[8]
record[ITEM_TYPE] = linerecord[9] record[ItemData::TYPE] = linerecord[9]
if record[ITEM_TYPE]!="" && linerecord[10] if record[ItemData::TYPE]!="" && linerecord[10]
record[ITEM_MACHINE] = parseMove(linerecord[10]) record[ItemData::MOVE] = parseMove(linerecord[10])
else else
record[ITEM_MACHINE] = 0 record[ItemData::MOVE] = 0
end end
maxValue = [maxValue,id].max maxValue = [maxValue,id].max
records[id] = record records[id] = record