Implemented usage of GameData::Item

This commit is contained in:
Maruno17
2020-11-08 22:45:59 +00:00
parent ff70791104
commit 1955d3698e
82 changed files with 1986 additions and 2195 deletions

View File

@@ -10,7 +10,7 @@ def pbLoadBerryPlantData
if pbRgssExists?("Data/berry_plants.dat")
$PokemonTemp.berryPlantData = load_data("Data/berry_plants.dat")
else
$PokemonTemp.berryPlantData = []
$PokemonTemp.berryPlantData = {}
end
end
return $PokemonTemp.berryPlantData
@@ -19,7 +19,7 @@ end
def pbGetBerryPlantData(item)
data = pbLoadBerryPlantData
return data[item] if data[item]
return [3,15,2,5] # Hours/stage, drying/hour, min yield, max yield
return [3, 15, 2, 5] # Hours/stage, drying/hour, min yield, max yield
end
alias __berryPlant__pbClearData pbClearData
@@ -77,7 +77,7 @@ class BerryPlantMoistureSprite
def update
return if !@light || !@event
newmoisture=-1
if @event.variable && @event.variable.length>6 && @event.variable[1]>0
if @event.variable && @event.variable.length>6 && @event.variable[1]
# Berry was planted, show moisture patch
newmoisture=(@event.variable[4]>50) ? 2 : (@event.variable[4]>0) ? 1 : 0
end
@@ -153,16 +153,17 @@ class BerryPlantSprite
dryingrate=berryvalues[1]
maxreplants=REPLANTS
ripestages=4
if isConst?(berryData[7],PBItems,:GROWTHMULCH)
timeperstage=(timeperstage*0.75).to_i
dryingrate=(dryingrate*1.5).ceil
elsif isConst?(berryData[7],PBItems,:DAMPMULCH)
timeperstage=(timeperstage*1.25).to_i
dryingrate=(dryingrate*0.5).floor
elsif isConst?(berryData[7],PBItems,:GOOEYMULCH)
maxreplants=(maxreplants*1.5).ceil
elsif isConst?(berryData[7],PBItems,:STABLEMULCH)
ripestages=6
case berryData[7]
when :GROWTHMULCH
timeperstage = (timeperstage * 0.75).to_i
dryingrate = (dryingrate * 1.5).ceil
when :DAMPMULCH
timeperstage = (timeperstage * 1.25).to_i
dryingrate = (dryingrate * 0.5).floor
when :GOOEYMULCH
maxreplants = (maxreplants * 1.5).ceil
when :STABLEMULCH
ripestages = 6
end
# Cycle through all replants since last check
loop do
@@ -281,8 +282,10 @@ class BerryPlantSprite
@event.character_name="berrytreeplanted" # Common to all berries
@event.turn_down
else
filename=sprintf("berrytree%s",getConstantName(PBItems,berryData[1])) rescue nil
filename=sprintf("berrytree%03d",berryData[1]) if !pbResolveBitmap("Graphics/Characters/"+filename)
filename=sprintf("berrytree%s",GameData::Item.get(berryData[1]).id.to_s) rescue nil
if !pbResolveBitmap("Graphics/Characters/"+filename)
filename=sprintf("berrytree%03d",GameData::Item.get(berryData[1]).id_number)
end
if pbResolveBitmap("Graphics/Characters/"+filename)
@event.character_name=filename
case berryData[0]
@@ -310,9 +313,9 @@ def pbBerryPlant
berryData=interp.getVariable
if !berryData
if NEW_BERRY_PLANTS
berryData=[0,0,0,0,0,0,0,0]
berryData=[0,nil,0,0,0,0,0,0]
else
berryData=[0,0,false,0,0,0]
berryData=[0,nil,false,0,0,0]
end
end
# Stop the event turning towards the player
@@ -323,12 +326,7 @@ def pbBerryPlant
when 4; thisEvent.turn_right # X flowering
when 5; thisEvent.turn_up # X berries
end
watering=[]
watering.push(getConst(PBItems,:SPRAYDUCK))
watering.push(getConst(PBItems,:SQUIRTBOTTLE))
watering.push(getConst(PBItems,:WAILMERPAIL))
watering.push(getConst(PBItems,:SPRINKLOTAD))
watering.compact!
watering = [:SPRAYDUCK, :SQUIRTBOTTLE, :WAILMERPAIL, :SPRINKLOTAD]
berry=berryData[1]
case berryData[0]
when 0 # empty
@@ -344,19 +342,19 @@ def pbBerryPlant
pbFadeOutIn {
scene = PokemonBag_Scene.new
screen = PokemonBagScreen.new(scene,$PokemonBag)
ret = screen.pbChooseItemScreen(Proc.new { |item| pbIsMulch?(item) })
ret = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_mulch? })
}
if ret>0
if pbIsMulch?(ret)
if ret
if GameData::Item.get(ret).is_mulch?
berryData[7]=ret
pbMessage(_INTL("The {1} was scattered on the soil.\1",PBItems.getName(ret)))
pbMessage(_INTL("The {1} was scattered on the soil.\1",GameData::Item.get(ret).name))
if pbConfirmMessage(_INTL("Want to plant a Berry?"))
pbFadeOutIn {
scene = PokemonBag_Scene.new
screen = PokemonBagScreen.new(scene,$PokemonBag)
berry = screen.pbChooseItemScreen(Proc.new { |item| pbIsBerry?(item) })
berry = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_berry? })
}
if berry>0
if berry
timenow=pbGetTimeNow
berryData[0]=1 # growth stage (1-5)
berryData[1]=berry # item ID of planted berry
@@ -367,7 +365,7 @@ def pbBerryPlant
berryData[6]=0 # yield penalty
$PokemonBag.pbDeleteItem(berry,1)
pbMessage(_INTL("The {1} was planted in the soft, earthy soil.",
PBItems.getName(berry)))
GameData::Item.get(berry).name))
end
end
interp.setVariable(berryData)
@@ -380,9 +378,9 @@ def pbBerryPlant
pbFadeOutIn {
scene = PokemonBag_Scene.new
screen = PokemonBagScreen.new(scene,$PokemonBag)
berry = screen.pbChooseItemScreen(Proc.new { |item| pbIsBerry?(item) })
berry = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_berry? })
}
if berry>0
if berry
timenow=pbGetTimeNow
berryData[0]=1 # growth stage (1-5)
berryData[1]=berry # item ID of planted berry
@@ -393,20 +391,20 @@ def pbBerryPlant
berryData[6]=0 # yield penalty
$PokemonBag.pbDeleteItem(berry,1)
pbMessage(_INTL("The {1} was planted in the soft, earthy soil.",
PBItems.getName(berry)))
GameData::Item.get(berry).name))
interp.setVariable(berryData)
end
return
end
else
pbMessage(_INTL("{1} has been laid down.\1",PBItems.getName(berryData[7])))
pbMessage(_INTL("{1} has been laid down.\1",GameData::Item.get(berryData[7]).name))
if pbConfirmMessage(_INTL("Want to plant a Berry?"))
pbFadeOutIn {
scene = PokemonBag_Scene.new
screen = PokemonBagScreen.new(scene,$PokemonBag)
berry = screen.pbChooseItemScreen(Proc.new { |item| pbIsBerry?(item) })
berry = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_berry? })
}
if berry>0
if berry
timenow=pbGetTimeNow
berryData[0]=1 # growth stage (1-5)
berryData[1]=berry # item ID of planted berry
@@ -417,7 +415,7 @@ def pbBerryPlant
berryData[6]=0 # yield penalty
$PokemonBag.pbDeleteItem(berry,1)
pbMessage(_INTL("The {1} was planted in the soft, earthy soil.",
PBItems.getName(berry)))
GameData::Item.get(berry).name))
interp.setVariable(berryData)
end
return
@@ -429,9 +427,9 @@ def pbBerryPlant
pbFadeOutIn {
scene = PokemonBag_Scene.new
screen = PokemonBagScreen.new(scene,$PokemonBag)
berry = screen.pbChooseItemScreen(Proc.new { |item| pbIsBerry?(item) })
berry = screen.pbChooseItemScreen(Proc.new { |item| GameData::Item.get(item).is_berry? })
}
if berry>0
if berry
timenow=pbGetTimeNow
berryData[0]=1 # growth stage (1-5)
berryData[1]=berry # item ID of planted berry
@@ -442,33 +440,33 @@ def pbBerryPlant
berryData[6]=nil; berryData[7]=nil; berryData.compact! # for compatibility
$PokemonBag.pbDeleteItem(berry,1)
pbMessage(_INTL("{1} planted a {2} in the soft loamy soil.",
$Trainer.name,PBItems.getName(berry)))
$Trainer.name,GameData::Item.get(berry).name))
interp.setVariable(berryData)
end
return
end
end
when 1 # X planted
pbMessage(_INTL("A {1} was planted here.",PBItems.getName(berry)))
pbMessage(_INTL("A {1} was planted here.",GameData::Item.get(berry).name))
when 2 # X sprouted
pbMessage(_INTL("The {1} has sprouted.",PBItems.getName(berry)))
pbMessage(_INTL("The {1} has sprouted.",GameData::Item.get(berry).name))
when 3 # X taller
pbMessage(_INTL("The {1} plant is growing bigger.",PBItems.getName(berry)))
pbMessage(_INTL("The {1} plant is growing bigger.",GameData::Item.get(berry).name))
when 4 # X flowering
if NEW_BERRY_PLANTS
pbMessage(_INTL("This {1} plant is in bloom!",PBItems.getName(berry)))
pbMessage(_INTL("This {1} plant is in bloom!",GameData::Item.get(berry).name))
else
case berryData[4]
when 4
pbMessage(_INTL("This {1} plant is in fabulous bloom!",PBItems.getName(berry)))
pbMessage(_INTL("This {1} plant is in fabulous bloom!",GameData::Item.get(berry).name))
when 3
pbMessage(_INTL("This {1} plant is blooming very beautifully!",PBItems.getName(berry)))
pbMessage(_INTL("This {1} plant is blooming very beautifully!",GameData::Item.get(berry).name))
when 2
pbMessage(_INTL("This {1} plant is blooming prettily!",PBItems.getName(berry)))
pbMessage(_INTL("This {1} plant is blooming prettily!",GameData::Item.get(berry).name))
when 1
pbMessage(_INTL("This {1} plant is blooming cutely!",PBItems.getName(berry)))
pbMessage(_INTL("This {1} plant is blooming cutely!",GameData::Item.get(berry).name))
else
pbMessage(_INTL("This {1} plant is in bloom!",PBItems.getName(berry)))
pbMessage(_INTL("This {1} plant is in bloom!",GameData::Item.get(berry).name))
end
end
when 5 # X berries
@@ -487,7 +485,9 @@ def pbBerryPlant
berrycount=berryvalues[2]
end
end
itemname=(berrycount>1) ? PBItems.getNamePlural(berry) : PBItems.getName(berry)
item = GameData::Item.get(berry)
itemname = (berrycount>1) ? item.name_plural : item.name
pocket = item.pocket
if berrycount>1
message=_INTL("There are {1} \\c[1]{2}\\c[0]!\nWant to pick them?",berrycount,itemname)
else
@@ -504,15 +504,14 @@ def pbBerryPlant
else
pbMessage(_INTL("You picked the \\c[1]{1}\\c[0].\\wtnp[30]",itemname))
end
pocket = pbGetPocket(berry)
pbMessage(_INTL("{1} put the \\c[1]{2}\\c[0] in the <icon=bagPocket{3}>\\c[1]{4}\\c[0] Pocket.\1",
$Trainer.name,itemname,pocket,PokemonBag.pocketNames()[pocket]))
if NEW_BERRY_PLANTS
pbMessage(_INTL("The soil returned to its soft and earthy state."))
berryData=[0,0,0,0,0,0,0,0]
berryData=[0,nil,0,0,0,0,0,0]
else
pbMessage(_INTL("The soil returned to its soft and loamy state."))
berryData=[0,0,false,0,0,0]
berryData=[0,nil,false,0,0,0]
end
interp.setVariable(berryData)
end
@@ -520,38 +519,37 @@ def pbBerryPlant
case berryData[0]
when 1, 2, 3, 4
for i in watering
if i!=0 && $PokemonBag.pbHasItem?(i)
if pbConfirmMessage(_INTL("Want to sprinkle some water with the {1}?",PBItems.getName(i)))
if berryData.length>6
# Gen 4 berry watering mechanics
berryData[4]=100
else
# Gen 3 berry watering mechanics
if berryData[2]==false
berryData[4]+=1
berryData[2]=true
end
end
interp.setVariable(berryData)
pbMessage(_INTL("{1} watered the plant.\\wtnp[40]",$Trainer.name))
if NEW_BERRY_PLANTS
pbMessage(_INTL("There! All happy!"))
else
pbMessage(_INTL("The plant seemed to be delighted."))
next if !GameData::Item.exists?(i) || !$PokemonBag.pbHasItem?(i)
if pbConfirmMessage(_INTL("Want to sprinkle some water with the {1}?",GameData::Item.get(i).name))
if berryData.length>6
# Gen 4 berry watering mechanics
berryData[4]=100
else
# Gen 3 berry watering mechanics
if berryData[2]==false
berryData[4]+=1
berryData[2]=true
end
end
break
interp.setVariable(berryData)
pbMessage(_INTL("{1} watered the plant.\\wtnp[40]",$Trainer.name))
if NEW_BERRY_PLANTS
pbMessage(_INTL("There! All happy!"))
else
pbMessage(_INTL("The plant seemed to be delighted."))
end
end
break
end
end
end
def pbPickBerry(berry,qty=1)
def pbPickBerry(berry, qty = 1)
interp=pbMapInterpreter
thisEvent=interp.get_character(0)
berryData=interp.getVariable
berry=getID(PBItems,berry)
itemname=(qty>1) ? PBItems.getNamePlural(berry) : PBItems.getName(berry)
berry=GameData::Item.get(berry)
itemname=(qty>1) ? berry.name_plural : berry.name
if qty>1
message=_INTL("There are {1} \\c[1]{2}\\c[0]!\nWant to pick them?",qty,itemname)
else
@@ -568,15 +566,15 @@ def pbPickBerry(berry,qty=1)
else
pbMessage(_INTL("You picked the \\c[1]{1}\\c[0].\\wtnp[30]",itemname))
end
pocket = pbGetPocket(berry)
pocket = berry.pocket
pbMessage(_INTL("{1} put the \\c[1]{2}\\c[0] in the <icon=bagPocket{3}>\\c[1]{4}\\c[0] Pocket.\1",
$Trainer.name,itemname,pocket,PokemonBag.pocketNames()[pocket]))
if NEW_BERRY_PLANTS
pbMessage(_INTL("The soil returned to its soft and earthy state."))
berryData=[0,0,0,0,0,0,0,0]
berryData=[0,nil,0,0,0,0,0,0]
else
pbMessage(_INTL("The soil returned to its soft and loamy state."))
berryData=[0,0,false,0,0,0]
berryData=[0,nil,false,0,0,0]
end
interp.setVariable(berryData)
pbSetSelfSwitch(thisEvent.id,"A",true)