Implemented GameData::Move

This commit is contained in:
Maruno17
2020-11-19 21:00:29 +00:00
parent 52ffae9e8a
commit 3cd8d59918
71 changed files with 1443 additions and 1584 deletions

View File

@@ -34,7 +34,7 @@ class MoveSelectionSprite < SpriteWrapper
self.x = 240
self.y = 92+(self.index*64)
self.y -= 76 if @fifthmove
self.y += 20 if @fifthmove && self.index==4
self.y += 20 if @fifthmove && self.index==Pokemon::MAX_MOVES # Add a gap
self.bitmap = @movesel.bitmap
if self.preselected
self.src_rect.set(0,h,w,h)
@@ -166,7 +166,7 @@ class PokemonSummary_Scene
pbFadeInAndShow(@sprites) { pbUpdate }
end
def pbStartForgetScene(party,partyindex,moveToLearn)
def pbStartForgetScene(party,partyindex,move_to_learn)
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z = 99999
@party = party
@@ -182,11 +182,12 @@ class PokemonSummary_Scene
@sprites["pokeicon"].setOffset(PictureOrigin::Center)
@sprites["pokeicon"].x = 46
@sprites["pokeicon"].y = 92
@sprites["movesel"] = MoveSelectionSprite.new(@viewport,moveToLearn>0)
@sprites["movesel"] = MoveSelectionSprite.new(@viewport,!move_to_learn.nil?)
@sprites["movesel"].visible = false
@sprites["movesel"].visible = true
@sprites["movesel"].index = 0
drawSelectedMove(moveToLearn,@pokemon.moves[0].id)
new_move = (move_to_learn) ? PBMove.new(move_to_learn) : nil
drawSelectedMove(new_move,@pokemon.moves[0])
pbFadeInAndShow(@sprites)
end
@@ -678,19 +679,19 @@ class PokemonSummary_Scene
imagepos = []
# Write move names, types and PP amounts for each known move
yPos = 98
for i in 0...@pokemon.moves.length
for i in 0...Pokemon::MAX_MOVES
move=@pokemon.moves[i]
if move.id>0
if move
imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,move.type*28,64,28])
textpos.push([PBMoves.getName(move.id),316,yPos,0,moveBase,moveShadow])
if move.totalpp>0
textpos.push([move.name,316,yPos,0,moveBase,moveShadow])
if move.total_pp>0
textpos.push([_INTL("PP"),342,yPos+32,0,moveBase,moveShadow])
ppfraction = 0
if move.pp==0; ppfraction = 3
elsif move.pp*4<=move.totalpp; ppfraction = 2
elsif move.pp*2<=move.totalpp; ppfraction = 1
if move.pp==0; ppfraction = 3
elsif move.pp*4<=move.total_pp; ppfraction = 2
elsif move.pp*2<=move.total_pp; ppfraction = 1
end
textpos.push([sprintf("%d/%d",move.pp,move.totalpp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
textpos.push([sprintf("%d/%d",move.pp,move.total_pp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
end
else
textpos.push(["-",316,yPos,0,moveBase,moveShadow])
@@ -703,47 +704,7 @@ class PokemonSummary_Scene
pbDrawImagePositions(overlay,imagepos)
end
def drawSelectedMove(moveToLearn,moveid)
# Draw all of page four, except selected move's details
drawMoveSelection(moveToLearn)
# Set various values
overlay = @sprites["overlay"].bitmap
base = Color.new(64,64,64)
shadow = Color.new(176,176,176)
@sprites["pokemon"].visible = false if @sprites["pokemon"]
@sprites["pokeicon"].pokemon = @pokemon
@sprites["pokeicon"].visible = true
@sprites["itemicon"].visible = false if @sprites["itemicon"]
# Get data for selected move
moveData = pbGetMoveData(moveid)
basedamage = moveData[MoveData::BASE_DAMAGE]
category = moveData[MoveData::CATEGORY]
accuracy = moveData[MoveData::ACCURACY]
textpos = []
# Write power and accuracy values for selected move
if basedamage==0 # Status move
textpos.push(["---",216,154,1,base,shadow])
elsif basedamage==1 # Variable power move
textpos.push(["???",216,154,1,base,shadow])
else
textpos.push([sprintf("%d",basedamage),216,154,1,base,shadow])
end
if accuracy==0
textpos.push(["---",216,186,1,base,shadow])
else
textpos.push([sprintf("%d%",accuracy),216+overlay.text_size("%").width,186,1,base,shadow])
end
# Draw all text
pbDrawTextPositions(overlay,textpos)
# Draw selected move's damage category icon
imagepos = [["Graphics/Pictures/category",166,124,0,category*28,64,28]]
pbDrawImagePositions(overlay,imagepos)
# Draw selected move's description
drawTextEx(overlay,4,218,230,5,
pbGetMessage(MessageTypes::MoveDescriptions,moveid),base,shadow)
end
def drawMoveSelection(moveToLearn)
def drawPageFourSelecting(move_to_learn)
overlay = @sprites["overlay"].bitmap
overlay.clear
base = Color.new(248,248,248)
@@ -759,7 +720,7 @@ class PokemonSummary_Scene
Color.new(144,72,24), # 1/4 of total PP or less
Color.new(136,48,48)] # Zero PP
# Set background image
if moveToLearn!=0
if move_to_learn
@sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_learnmove")
else
@sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_movedetail")
@@ -774,24 +735,25 @@ class PokemonSummary_Scene
imagepos = []
# Write move names, types and PP amounts for each known move
yPos = 98
yPos -= 76 if moveToLearn!=0
for i in 0...5
yPos -= 76 if move_to_learn
limit = (move_to_learn) ? Pokemon::MAX_MOVES + 1 : Pokemon::MAX_MOVES
for i in 0...limit
move = @pokemon.moves[i]
if i==4
move = PBMove.new(moveToLearn) if moveToLearn!=0
if i==Pokemon::MAX_MOVES
move = move_to_learn
yPos += 20
end
if move && move.id>0
if move
imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,move.type*28,64,28])
textpos.push([PBMoves.getName(move.id),316,yPos,0,moveBase,moveShadow])
if move.totalpp>0
textpos.push([move.name,316,yPos,0,moveBase,moveShadow])
if move.total_pp>0
textpos.push([_INTL("PP"),342,yPos+32,0,moveBase,moveShadow])
ppfraction = 0
if move.pp==0; ppfraction = 3
elsif move.pp*4<=move.totalpp; ppfraction = 2
elsif move.pp*2<=move.totalpp; ppfraction = 1
if move.pp==0; ppfraction = 3
elsif move.pp*4<=move.total_pp; ppfraction = 2
elsif move.pp*2<=move.total_pp; ppfraction = 1
end
textpos.push([sprintf("%d/%d",move.pp,move.totalpp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
textpos.push([sprintf("%d/%d",move.pp,move.total_pp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
end
else
textpos.push(["-",316,yPos,0,moveBase,moveShadow])
@@ -813,6 +775,38 @@ class PokemonSummary_Scene
end
end
def drawSelectedMove(move_to_learn, selected_move)
# Draw all of page four, except selected move's details
drawPageFourSelecting(move_to_learn)
# Set various values
overlay = @sprites["overlay"].bitmap
base = Color.new(64, 64, 64)
shadow = Color.new(176, 176, 176)
@sprites["pokemon"].visible = false if @sprites["pokemon"]
@sprites["pokeicon"].pokemon = @pokemon
@sprites["pokeicon"].visible = true
@sprites["itemicon"].visible = false if @sprites["itemicon"]
textpos = []
# Write power and accuracy values for selected move
case selected_move.base_damage
when 0 then textpos.push(["---", 216, 154, 1, base, shadow]) # Status move
when 1 then textpos.push(["???", 216, 154, 1, base, shadow]) # Variable power move
else textpos.push([selected_move.base_damage.to_s, 216, 154, 1, base, shadow])
end
if selected_move.accuracy == 0
textpos.push(["---", 216, 186, 1, base, shadow])
else
textpos.push([sprintf("%d%", selected_move.accuracy), 216 + overlay.text_size("%").width, 186, 1, base, shadow])
end
# Draw all text
pbDrawTextPositions(overlay, textpos)
# Draw selected move's damage category icon
imagepos = [["Graphics/Pictures/category", 166, 124, 0, selected_move.category * 28, 64, 28]]
pbDrawImagePositions(overlay, imagepos)
# Draw selected move's description
drawTextEx(overlay, 4, 218, 230, 5, selected_move.description, base, shadow)
end
def drawPageFive
overlay = @sprites["overlay"].bitmap
@sprites["uparrow"].visible = false
@@ -903,7 +897,7 @@ class PokemonSummary_Scene
selmove = 0
oldselmove = 0
switching = false
drawSelectedMove(0,@pokemon.moves[selmove].id)
drawSelectedMove(nil,@pokemon.moves[selmove])
loop do
Graphics.update
Input.update
@@ -920,7 +914,7 @@ class PokemonSummary_Scene
switching = false
elsif Input.trigger?(Input::C)
pbPlayDecisionSE
if selmove==4
if selmove==Pokemon::MAX_MOVES
break if !switching
@sprites["movepresel"].visible = false
switching = false
@@ -937,30 +931,28 @@ class PokemonSummary_Scene
@pokemon.moves[selmove] = tmpmove
@sprites["movepresel"].visible = false
switching = false
drawSelectedMove(0,@pokemon.moves[selmove].id)
drawSelectedMove(nil,@pokemon.moves[selmove])
end
end
end
elsif Input.trigger?(Input::UP)
selmove -= 1
if selmove<4 && selmove>=@pokemon.numMoves
if selmove<Pokemon::MAX_MOVES && selmove>=@pokemon.numMoves
selmove = @pokemon.numMoves-1
end
selmove = 0 if selmove>=4
selmove = 0 if selmove>=Pokemon::MAX_MOVES
selmove = @pokemon.numMoves-1 if selmove<0
@sprites["movesel"].index = selmove
newmove = @pokemon.moves[selmove].id
pbPlayCursorSE
drawSelectedMove(0,newmove)
drawSelectedMove(nil,@pokemon.moves[selmove])
elsif Input.trigger?(Input::DOWN)
selmove += 1
selmove = 0 if selmove<4 && selmove>=@pokemon.numMoves
selmove = 0 if selmove>=4
selmove = 4 if selmove<0
selmove = 0 if selmove<Pokemon::MAX_MOVES && selmove>=@pokemon.numMoves
selmove = 0 if selmove>=Pokemon::MAX_MOVES
selmove = Pokemon::MAX_MOVES if selmove<0
@sprites["movesel"].index = selmove
newmove = @pokemon.moves[selmove].id
pbPlayCursorSE
drawSelectedMove(0,newmove)
drawSelectedMove(nil,@pokemon.moves[selmove])
end
end
@sprites["movesel"].visible=false
@@ -1194,16 +1186,17 @@ class PokemonSummary_Scene
return dorefresh
end
def pbChooseMoveToForget(moveToLearn)
def pbChooseMoveToForget(move_to_learn)
new_move = (move_to_learn) ? PBMove.new(move_to_learn) : nil
selmove = 0
maxmove = (moveToLearn>0) ? 4 : 3
maxmove = (new_move) ? Pokemon::MAX_MOVES : Pokemon::MAX_MOVES - 1
loop do
Graphics.update
Input.update
pbUpdate
if Input.trigger?(Input::B)
selmove = 4
pbPlayCloseMenuSE if moveToLearn>0
selmove = Pokemon::MAX_MOVES
pbPlayCloseMenuSE if new_move
break
elsif Input.trigger?(Input::C)
pbPlayDecisionSE
@@ -1211,24 +1204,24 @@ class PokemonSummary_Scene
elsif Input.trigger?(Input::UP)
selmove -= 1
selmove = maxmove if selmove<0
if selmove<4 && selmove>=@pokemon.numMoves
if selmove<Pokemon::MAX_MOVES && selmove>=@pokemon.numMoves
selmove = @pokemon.numMoves-1
end
@sprites["movesel"].index = selmove
newmove = (selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
drawSelectedMove(moveToLearn,newmove)
selected_move = (selmove==Pokemon::MAX_MOVES) ? new_move : @pokemon.moves[selmove]
drawSelectedMove(new_move,selected_move)
elsif Input.trigger?(Input::DOWN)
selmove += 1
selmove = 0 if selmove>maxmove
if selmove<4 && selmove>=@pokemon.numMoves
selmove = (moveToLearn>0) ? maxmove : 0
if selmove<Pokemon::MAX_MOVES && selmove>=@pokemon.numMoves
selmove = (new_move) ? maxmove : 0
end
@sprites["movesel"].index = selmove
newmove = (selmove==4) ? moveToLearn : @pokemon.moves[selmove].id
drawSelectedMove(moveToLearn,newmove)
selected_move = (selmove==Pokemon::MAX_MOVES) ? new_move : @pokemon.moves[selmove]
drawSelectedMove(new_move,selected_move)
end
end
return (selmove==4) ? -1 : selmove
return (selmove==Pokemon::MAX_MOVES) ? -1 : selmove
end
def pbScene
@@ -1317,16 +1310,14 @@ class PokemonSummaryScreen
return ret
end
def pbStartForgetScreen(party,partyindex,moveToLearn)
def pbStartForgetScreen(party,partyindex,move_to_learn)
ret = -1
@scene.pbStartForgetScene(party,partyindex,moveToLearn)
@scene.pbStartForgetScene(party,partyindex,move_to_learn)
loop do
ret = @scene.pbChooseMoveToForget(moveToLearn)
if ret>=0 && moveToLearn!=0 && pbIsHiddenMove?(party[partyindex].moves[ret].id) && !$DEBUG
pbMessage(_INTL("HM moves can't be forgotten now.")) { @scene.pbUpdate }
else
break
end
ret = @scene.pbChooseMoveToForget(move_to_learn)
break if ret < 0 || !move_to_learn
break if $DEBUG || !party[partyindex].moves[ret].hidden_move?
pbMessage(_INTL("HM moves can't be forgotten now.")) { @scene.pbUpdate }
end
@scene.pbEndScene
return ret
@@ -1334,15 +1325,12 @@ class PokemonSummaryScreen
def pbStartChooseMoveScreen(party,partyindex,message)
ret = -1
@scene.pbStartForgetScene(party,partyindex,0)
@scene.pbStartForgetScene(party,partyindex,nil)
pbMessage(message) { @scene.pbUpdate }
loop do
ret = @scene.pbChooseMoveToForget(0)
if ret<0
pbMessage(_INTL("You must choose a move!")) { @scene.pbUpdate }
else
break
end
ret = @scene.pbChooseMoveToForget(nil)
break if ret >= 0
pbMessage(_INTL("You must choose a move!")) { @scene.pbUpdate }
end
@scene.pbEndScene
return ret