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)
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
if pbOwnedByPlayer?(idxBattler)
if !$PokemonBag.pbDeleteItem(item)
@@ -60,7 +60,7 @@ class PokeBattle_Battle
def pbReturnUnusedItemToBag(item,idxBattler)
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
if pbOwnedByPlayer?(idxBattler)
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
item = @choices[b.index][1]
next if !item || item<=0
useType = pbGetItemData(item,ITEM_BATTLE_USE)
useType = pbGetItemData(item,ItemData::BATTLE_USE)
next if !useType
case useType
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)
return false if item==0
# 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
idxTarget = @battle.battlers[idxTarget].pokemonIndex # Party Pokémon
end

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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