Fixed X items being unusable by AI, finally fixed step after battle caused by a turn

This commit is contained in:
Maruno17
2020-10-29 19:53:57 +00:00
parent 66aea40198
commit c40f95838a
5 changed files with 67 additions and 119 deletions

View File

@@ -265,8 +265,6 @@ class Game_Character
@pattern = 0 if @walk_anime or @step_anime @pattern = 0 if @walk_anime or @step_anime
@anime_count = 0 @anime_count = 0
@prelock_direction = 0 @prelock_direction = 0
@moved_last_frame = false
@moved_this_frame = false
end end
def force_move_route(move_route) def force_move_route(move_route)
@@ -434,48 +432,34 @@ class Game_Character
end end
end end
def move_up(turn_enabled = true) def move_generic(dir, turn_enabled = true)
turn_up if turn_enabled turn_generic(dir) if turn_enabled
if passable?(@x, @y, 8) x_offset = (dir == 4) ? -1 : (dir == 6) ? 1 : 0
turn_up y_offset = (dir == 8) ? -1 : (dir == 2) ? 1 : 0
@y -= 1 if passable?(@x, @y, dir)
turn_generic(dir)
@x += x_offset
@y += y_offset
increase_steps increase_steps
else else
check_event_trigger_touch(@x, @y-1) check_event_trigger_touch(@x + x_offset, @y + y_offset)
end end
end end
def move_down(turn_enabled = true) def move_down(turn_enabled = true)
turn_down if turn_enabled move_generic(2, turn_enabled)
if passable?(@x, @y, 2)
turn_down
@y += 1
increase_steps
else
check_event_trigger_touch(@x, @y+1)
end
end end
def move_left(turn_enabled = true) def move_left(turn_enabled = true)
turn_left if turn_enabled move_generic(4, turn_enabled)
if passable?(@x, @y, 4)
turn_left
@x -= 1
increase_steps
else
check_event_trigger_touch(@x-1, @y)
end
end end
def move_right(turn_enabled = true) def move_right(turn_enabled = true)
turn_right if turn_enabled move_generic(6, turn_enabled)
if passable?(@x, @y, 6) end
turn_right
@x += 1 def move_up(turn_enabled = true)
increase_steps move_generic(8, turn_enabled)
else
check_event_trigger_touch(@x+1, @y)
end
end end
def move_upper_left def move_upper_left
@@ -698,7 +682,7 @@ class Game_Character
end end
end end
def turnGeneric(dir) def turn_generic(dir)
return if @direction_fix return if @direction_fix
oldDirection = @direction oldDirection = @direction
@direction = dir @direction = dir
@@ -706,10 +690,10 @@ class Game_Character
pbCheckEventTriggerAfterTurning if dir != oldDirection pbCheckEventTriggerAfterTurning if dir != oldDirection
end end
def turn_up; turnGeneric(8); end def turn_down; turn_generic(2); end
def turn_down; turnGeneric(2); end def turn_left; turn_generic(4); end
def turn_left; turnGeneric(4); end def turn_right; turn_generic(6); end
def turn_right; turnGeneric(6); end def turn_up; turn_generic(8); end
def turn_right_90 def turn_right_90
case @direction case @direction

View File

@@ -64,75 +64,36 @@ class Game_Player < Game_Character
@bump_se = Graphics.frame_rate/4 @bump_se = Graphics.frame_rate/4
end end
def move_down(turn_enabled = true) def move_generic(dir, turn_enabled = true)
turn_down if turn_enabled turn_generic(dir, true) if turn_enabled
if passable?(@x, @y, 2) if !$PokemonTemp.encounterTriggered
return if pbLedge(0,1) x_offset = (dir == 4) ? -1 : (dir == 6) ? 1 : 0
return if pbEndSurf(0,1) y_offset = (dir == 8) ? -1 : (dir == 2) ? 1 : 0
turn_down if passable?(@x, @y, dir)
@y += 1 return if pbLedge(x_offset, y_offset)
$PokemonTemp.dependentEvents.pbMoveDependentEvents return if pbEndSurf(x_offset, y_offset)
increase_steps turn_generic(dir, true)
else if !$PokemonTemp.encounterTriggered
if !check_event_trigger_touch(@x, @y+1) @x += x_offset
bump_into_object @y += y_offset
$PokemonTemp.dependentEvents.pbMoveDependentEvents
increase_steps
end
else
if !check_event_trigger_touch(@x + x_offset, @y + y_offset)
bump_into_object
end
end end
end end
$PokemonTemp.encounterTriggered = false
end end
def move_left(turn_enabled = true) def turn_generic(dir, keep_enc_indicator = false)
turn_left if turn_enabled
if passable?(@x, @y, 4)
return if pbLedge(-1,0)
return if pbEndSurf(-1,0)
turn_left
@x -= 1
$PokemonTemp.dependentEvents.pbMoveDependentEvents
increase_steps
else
if !check_event_trigger_touch(@x-1, @y)
bump_into_object
end
end
end
def move_right(turn_enabled = true)
turn_right if turn_enabled
if passable?(@x, @y, 6)
return if pbLedge(1,0)
return if pbEndSurf(1,0)
turn_right
@x += 1
$PokemonTemp.dependentEvents.pbMoveDependentEvents
increase_steps
else
if !check_event_trigger_touch(@x+1, @y)
bump_into_object
end
end
end
def move_up(turn_enabled = true)
turn_up if turn_enabled
if passable?(@x, @y, 8)
return if pbLedge(0,-1)
return if pbEndSurf(0,-1)
turn_up
@y -= 1
$PokemonTemp.dependentEvents.pbMoveDependentEvents
increase_steps
else
if !check_event_trigger_touch(@x, @y-1)
bump_into_object
end
end
end
def turnGeneric(dir)
old_direction = @direction old_direction = @direction
super super
if @direction != old_direction && !@move_route_forcing && !pbMapInterpreterRunning? if @direction != old_direction && !@move_route_forcing && !pbMapInterpreterRunning?
Events.onChangeDirection.trigger(self, self) Events.onChangeDirection.trigger(self, self)
$PokemonTemp.encounterTriggered = false if !keep_enc_indicator
end end
end end
@@ -170,8 +131,7 @@ class Game_Player < Game_Character
return result return result
end end
def pbCheckEventTriggerAfterTurning def pbCheckEventTriggerAfterTurning; end
end
def pbCheckEventTriggerFromDistance(triggers) def pbCheckEventTriggerFromDistance(triggers)
ret = pbTriggeredTrainerEvents(triggers) ret = pbTriggeredTrainerEvents(triggers)
@@ -385,17 +345,18 @@ class Game_Player < Game_Character
def update_command_new def update_command_new
dir = Input.dir4 dir = Input.dir4
unless pbMapInterpreterRunning? or $game_temp.message_window_showing or unless pbMapInterpreterRunning? || $game_temp.message_window_showing ||
$PokemonTemp.miniupdate or $game_temp.in_menu $PokemonTemp.miniupdate || $game_temp.in_menu
# Move player in the direction the directional button is being pressed # Move player in the direction the directional button is being pressed
if @moved_last_frame || (dir==@lastdir && Graphics.frame_count-@lastdirframe>Graphics.frame_rate/20) if @moved_last_frame ||
(dir > 0 && dir == @lastdir && Graphics.frame_count - @lastdirframe > Graphics.frame_rate / 20)
case dir case dir
when 2; move_down when 2; move_down
when 4; move_left when 4; move_left
when 6; move_right when 6; move_right
when 8; move_up when 8; move_up
end end
elsif dir!=@lastdir elsif dir != @lastdir
case dir case dir
when 2; turn_down when 2; turn_down
when 4; turn_left when 4; turn_left
@@ -405,7 +366,7 @@ class Game_Player < Game_Character
end end
end end
# Record last direction input # Record last direction input
@lastdirframe = Graphics.frame_count if dir!=@lastdir @lastdirframe = Graphics.frame_count if dir != @lastdir
@lastdir = dir @lastdir = dir
end end

View File

@@ -83,7 +83,7 @@ class PokeBattle_Battle
end end
end end
# Uses an item on a Pokémon in the player's party. # Uses an item on a Pokémon in the trainer's party.
def pbUseItemOnPokemon(item,idxParty,userBattler) def pbUseItemOnPokemon(item,idxParty,userBattler)
trainerName = pbGetOwnerName(userBattler.index) trainerName = pbGetOwnerName(userBattler.index)
pbUseItemMessage(item,trainerName) pbUseItemMessage(item,trainerName)
@@ -100,14 +100,14 @@ class PokeBattle_Battle
pbReturnUnusedItemToBag(item,userBattler.index) pbReturnUnusedItemToBag(item,userBattler.index)
end end
# Uses an item on a Pokémon in battle that belongs to the player. # Uses an item on a Pokémon in battle that belongs to the trainer.
def pbUseItemOnBattler(item,idxParty,userBattler) def pbUseItemOnBattler(item,idxBattler,userBattler)
trainerName = pbGetOwnerName(userBattler.index) trainerName = pbGetOwnerName(userBattler.index)
pbUseItemMessage(item,trainerName) pbUseItemMessage(item,trainerName)
pkmn = pbParty(userBattler.index)[idxParty] idxBattler = userBattler.index if idxBattler<0
battler = pbFindBattler(idxParty,userBattler.index) battler = @battlers[idxBattler]
ch = @choices[userBattler.index] ch = @choices[userBattler.index]
if ItemHandlers.triggerCanUseInBattle(item,pkmn,battler,ch[3],true,self,@scene,false) if ItemHandlers.triggerCanUseInBattle(item,battler.pokemon,battler,ch[3],true,self,@scene,false)
ItemHandlers.triggerBattleUseOnBattler(item,battler,@scene) ItemHandlers.triggerBattleUseOnBattler(item,battler,@scene)
ch[1] = 0 # Delete item from choice ch[1] = 0 # Delete item from choice
return return

View File

@@ -368,32 +368,34 @@ def pbOnStepTaken(eventTriggered)
Events.onStepTakenTransferPossible.trigger(nil,handled) Events.onStepTakenTransferPossible.trigger(nil,handled)
return if handled[0] return if handled[0]
pbBattleOnStepTaken(repel) if !eventTriggered && !$game_temp.in_menu pbBattleOnStepTaken(repel) if !eventTriggered && !$game_temp.in_menu
$PokemonTemp.encounterTriggered = false # This info isn't needed
end end
# Start wild encounters while turning on the spot # Start wild encounters while turning on the spot
Events.onChangeDirection += proc { Events.onChangeDirection += proc {
repel = ($PokemonGlobal.repel>0) repel = ($PokemonGlobal.repel > 0)
pbBattleOnStepTaken(repel) if !$game_temp.in_menu pbBattleOnStepTaken(repel) if !$game_temp.in_menu
} }
def pbBattleOnStepTaken(repel=false) def pbBattleOnStepTaken(repel = false)
return if $Trainer.ablePokemonCount==0 return if $Trainer.ablePokemonCount == 0
encounterType = $PokemonEncounters.pbEncounterType encounterType = $PokemonEncounters.pbEncounterType
return if encounterType<0 return if encounterType < 0
return if !$PokemonEncounters.isEncounterPossibleHere? return if !$PokemonEncounters.isEncounterPossibleHere?
$PokemonTemp.encounterType = encounterType $PokemonTemp.encounterType = encounterType
encounter = $PokemonEncounters.pbGenerateEncounter(encounterType) encounter = $PokemonEncounters.pbGenerateEncounter(encounterType)
encounter = EncounterModifier.trigger(encounter) encounter = EncounterModifier.trigger(encounter)
if $PokemonEncounters.pbCanEncounter?(encounter,repel) if $PokemonEncounters.pbCanEncounter?(encounter, repel)
if !$PokemonTemp.forceSingleBattle && !pbInSafari? && ($PokemonGlobal.partner || if !$PokemonTemp.forceSingleBattle && !pbInSafari? && ($PokemonGlobal.partner ||
($Trainer.ablePokemonCount>1 && PBTerrain.isDoubleWildBattle?(pbGetTerrainTag) && rand(100)<30)) ($Trainer.ablePokemonCount > 1 && PBTerrain.isDoubleWildBattle?(pbGetTerrainTag) && rand(100) < 30))
encounter2 = $PokemonEncounters.pbEncounteredPokemon(encounterType) encounter2 = $PokemonEncounters.pbEncounteredPokemon(encounterType)
encounter2 = EncounterModifier.trigger(encounter2) encounter2 = EncounterModifier.trigger(encounter2)
pbDoubleWildBattle(encounter[0],encounter[1],encounter2[0],encounter2[1]) pbDoubleWildBattle(encounter[0], encounter[1], encounter2[0], encounter2[1])
else else
pbWildBattle(encounter[0],encounter[1]) pbWildBattle(encounter[0], encounter[1])
end end
$PokemonTemp.encounterType = -1 $PokemonTemp.encounterType = -1
$PokemonTemp.encounterTriggered = true
end end
$PokemonTemp.forceSingleBattle = false $PokemonTemp.forceSingleBattle = false
EncounterModifier.triggerEncounterEnd EncounterModifier.triggerEncounterEnd

View File

@@ -11,6 +11,7 @@ end
class PokemonTemp class PokemonTemp
attr_accessor :encounterTriggered
attr_accessor :encounterType attr_accessor :encounterType
attr_accessor :evolutionLevels attr_accessor :evolutionLevels