mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
wild fusions
This commit is contained in:
@@ -32,7 +32,6 @@ module RPG
|
||||
end
|
||||
|
||||
def self.need_clearing()
|
||||
p @cache.size
|
||||
return @cache.size >= 100
|
||||
end
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
# Constant checks
|
||||
#===============================================================================
|
||||
# Pokérus check
|
||||
Events.onMapUpdate += proc { |_sender,_e|
|
||||
Events.onMapUpdate += proc { |_sender, _e|
|
||||
next if !$Trainer
|
||||
last = $PokemonGlobal.pokerusTime
|
||||
now = pbGetTimeNow
|
||||
if !last || last.year!=now.year || last.month!=now.month || last.day!=now.day
|
||||
if !last || last.year != now.year || last.month != now.month || last.day != now.day
|
||||
for i in $Trainer.pokemon_party
|
||||
i.lowerPokerusCount
|
||||
end
|
||||
@@ -19,21 +19,17 @@ Events.onMapUpdate += proc { |_sender,_e|
|
||||
def pbPokerus?
|
||||
return false if $game_switches[Settings::SEEN_POKERUS_SWITCH]
|
||||
for i in $Trainer.party
|
||||
return true if i.pokerusStage==1
|
||||
return true if i.pokerusStage == 1
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
|
||||
class PokemonTemp
|
||||
attr_accessor :batterywarning
|
||||
attr_accessor :cueBGM
|
||||
attr_accessor :cueFrames
|
||||
end
|
||||
|
||||
|
||||
|
||||
def pbBatteryLow?
|
||||
pstate = System.power_state
|
||||
# If it's not discharging, it doesn't matter if it's low
|
||||
@@ -46,12 +42,12 @@ def pbBatteryLow?
|
||||
return false
|
||||
end
|
||||
|
||||
Events.onMapUpdate += proc { |_sender,_e|
|
||||
Events.onMapUpdate += proc { |_sender, _e|
|
||||
if !$PokemonTemp.batterywarning && pbBatteryLow?
|
||||
if !$game_temp.in_menu && !$game_temp.in_battle &&
|
||||
!$game_player.move_route_forcing && !$game_temp.message_window_showing &&
|
||||
!pbMapInterpreterRunning?
|
||||
if pbGetTimeNow.sec==0
|
||||
!$game_player.move_route_forcing && !$game_temp.message_window_showing &&
|
||||
!pbMapInterpreterRunning?
|
||||
if pbGetTimeNow.sec == 0
|
||||
pbMessage(_INTL("The game has detected that the battery is low. You should save soon to avoid losing your progress."))
|
||||
$PokemonTemp.batterywarning = true
|
||||
end
|
||||
@@ -59,17 +55,15 @@ Events.onMapUpdate += proc { |_sender,_e|
|
||||
end
|
||||
if $PokemonTemp.cueFrames
|
||||
$PokemonTemp.cueFrames -= 1
|
||||
if $PokemonTemp.cueFrames<=0
|
||||
if $PokemonTemp.cueFrames <= 0
|
||||
$PokemonTemp.cueFrames = nil
|
||||
if $game_system.getPlayingBGM==nil
|
||||
if $game_system.getPlayingBGM == nil
|
||||
pbBGMPlay($PokemonTemp.cueBGM)
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Checks per step
|
||||
#===============================================================================
|
||||
@@ -77,19 +71,19 @@ Events.onMapUpdate += proc { |_sender,_e|
|
||||
Events.onStepTaken += proc {
|
||||
$PokemonGlobal.happinessSteps = 0 if !$PokemonGlobal.happinessSteps
|
||||
$PokemonGlobal.happinessSteps += 1
|
||||
if $PokemonGlobal.happinessSteps>=128
|
||||
if $PokemonGlobal.happinessSteps >= 128
|
||||
for pkmn in $Trainer.able_party
|
||||
pkmn.changeHappiness("walking") if rand(2)==0
|
||||
pkmn.changeHappiness("walking") if rand(2) == 0
|
||||
end
|
||||
$PokemonGlobal.happinessSteps = 0
|
||||
end
|
||||
}
|
||||
|
||||
# Poison party Pokémon
|
||||
Events.onStepTakenTransferPossible += proc { |_sender,e|
|
||||
Events.onStepTakenTransferPossible += proc { |_sender, e|
|
||||
handled = e[0]
|
||||
next if handled[0]
|
||||
if $PokemonGlobal.stepcount%4==0 && Settings::POISON_IN_FIELD
|
||||
if $PokemonGlobal.stepcount % 4 == 0 && Settings::POISON_IN_FIELD
|
||||
flashed = false
|
||||
for i in $Trainer.able_party
|
||||
if i.status == :POISON && !i.hasAbility?(:IMMUNITY)
|
||||
@@ -97,15 +91,15 @@ Events.onStepTakenTransferPossible += proc { |_sender,e|
|
||||
pbFlash(Color.new(163, 73, 164, 128), 8)
|
||||
flashed = true
|
||||
end
|
||||
i.hp -= 1 if i.hp>1 || Settings::POISON_FAINT_IN_FIELD
|
||||
if i.hp==1 && !Settings::POISON_FAINT_IN_FIELD
|
||||
i.hp -= 1 if i.hp > 1 || Settings::POISON_FAINT_IN_FIELD
|
||||
if i.hp == 1 && !Settings::POISON_FAINT_IN_FIELD
|
||||
i.status = :NONE
|
||||
pbMessage(_INTL("{1} survived the poisoning.\\nThe poison faded away!\1",i.name))
|
||||
pbMessage(_INTL("{1} survived the poisoning.\\nThe poison faded away!\1", i.name))
|
||||
next
|
||||
elsif i.hp==0
|
||||
elsif i.hp == 0
|
||||
i.changeHappiness("faint")
|
||||
i.status = :NONE
|
||||
pbMessage(_INTL("{1} fainted...",i.name))
|
||||
pbMessage(_INTL("{1} fainted...", i.name))
|
||||
end
|
||||
if $Trainer.able_pokemon_count == 0
|
||||
handled[0] = true
|
||||
@@ -127,26 +121,26 @@ def pbCheckAllFainted
|
||||
end
|
||||
|
||||
# Gather soot from soot grass
|
||||
Events.onStepTakenFieldMovement += proc { |_sender,e|
|
||||
event = e[0] # Get the event affected by field movement
|
||||
thistile = $MapFactory.getRealTilePos(event.map.map_id,event.x,event.y)
|
||||
Events.onStepTakenFieldMovement += proc { |_sender, e|
|
||||
event = e[0] # Get the event affected by field movement
|
||||
thistile = $MapFactory.getRealTilePos(event.map.map_id, event.x, event.y)
|
||||
map = $MapFactory.getMap(thistile[0])
|
||||
for i in [2, 1, 0]
|
||||
tile_id = map.data[thistile[1],thistile[2],i]
|
||||
tile_id = map.data[thistile[1], thistile[2], i]
|
||||
next if tile_id == nil
|
||||
next if GameData::TerrainTag.try_get(map.terrain_tags[tile_id]).id != :SootGrass
|
||||
if event == $game_player && GameData::Item.exists?(:SOOTSACK)
|
||||
$Trainer.soot += 1 if $PokemonBag.pbHasItem?(:SOOTSACK)
|
||||
end
|
||||
# map.data[thistile[1], thistile[2], i] = 0
|
||||
# $scene.createSingleSpriteset(map.map_id)
|
||||
# map.data[thistile[1], thistile[2], i] = 0
|
||||
# $scene.createSingleSpriteset(map.map_id)
|
||||
break
|
||||
end
|
||||
}
|
||||
|
||||
# Show grass rustle animation, and auto-move the player over waterfalls and ice
|
||||
Events.onStepTakenFieldMovement += proc { |_sender, e|
|
||||
event = e[0] # Get the event affected by field movement
|
||||
event = e[0] # Get the event affected by field movement
|
||||
if $scene.is_a?(Scene_Map)
|
||||
event.each_occupied_tile do |x, y|
|
||||
if $MapFactory.getTerrainTag(event.map.map_id, x, y, true).shows_grass_rustle
|
||||
@@ -168,29 +162,42 @@ Events.onStepTakenFieldMovement += proc { |_sender, e|
|
||||
|
||||
def pbOnStepTaken(eventTriggered)
|
||||
if $game_player.move_route_forcing || pbMapInterpreterRunning?
|
||||
Events.onStepTakenFieldMovement.trigger(nil,$game_player)
|
||||
Events.onStepTakenFieldMovement.trigger(nil, $game_player)
|
||||
return
|
||||
end
|
||||
$PokemonGlobal.stepcount = 0 if !$PokemonGlobal.stepcount
|
||||
$PokemonGlobal.stepcount += 1
|
||||
$PokemonGlobal.stepcount &= 0x7FFFFFFF
|
||||
repel_active = ($PokemonGlobal.repel > 0) || $PokemonTemp.pokeradar
|
||||
repel_active = ($PokemonGlobal.repel > 0) || $PokemonTemp.pokeradar
|
||||
|
||||
Events.onStepTaken.trigger(nil)
|
||||
# Events.onStepTakenFieldMovement.trigger(nil,$game_player)
|
||||
# Events.onStepTakenFieldMovement.trigger(nil,$game_player)
|
||||
handled = [nil]
|
||||
Events.onStepTakenTransferPossible.trigger(nil,handled)
|
||||
Events.onStepTakenTransferPossible.trigger(nil, handled)
|
||||
return if handled[0]
|
||||
pbBattleOnStepTaken(repel_active) if !eventTriggered && !$game_temp.in_menu
|
||||
$PokemonTemp.encounterTriggered = false # This info isn't needed here
|
||||
$PokemonTemp.encounterTriggered = false # This info isn't needed here
|
||||
end
|
||||
|
||||
# Start wild encounters while turning on the spot
|
||||
Events.onChangeDirection += proc {
|
||||
repel_active = ($PokemonGlobal.repel > 0) || $PokemonTemp.pokeradar
|
||||
repel_active = ($PokemonGlobal.repel > 0) || $PokemonTemp.pokeradar
|
||||
pbBattleOnStepTaken(repel_active) if !$game_temp.in_menu
|
||||
}
|
||||
|
||||
def isFusionForced?
|
||||
return false if $game_switches[RANDOMIZED_WILD_POKEMON_SWITCH]
|
||||
return $game_switches[FORCE_FUSE_NEXT_POKEMON_SWITCH] || $game_switches[FORCE_ALL_WILD_FUSIONS_SWITCH]
|
||||
end
|
||||
|
||||
def isFusedEncounter
|
||||
return false if !FUSED_WILD_POKEMON_SWITCH[35]
|
||||
return false if $game_switches[RANDOMIZED_WILD_POKEMON_SWITCH]
|
||||
return true if isFusionForced?()
|
||||
chance = pbGet(WILD_FUSION_RATE_VAR) == 0 ? 5 : pbGet(WILD_FUSION_RATE_VAR)
|
||||
return (rand(chance) == 0)
|
||||
end
|
||||
|
||||
def pbBattleOnStepTaken(repel_active)
|
||||
return if $Trainer.able_pokemon_count == 0
|
||||
return if !$PokemonEncounters.encounter_possible_here?
|
||||
@@ -199,6 +206,14 @@ def pbBattleOnStepTaken(repel_active)
|
||||
return if !$PokemonEncounters.encounter_triggered?(encounter_type, repel_active)
|
||||
$PokemonTemp.encounterType = encounter_type
|
||||
encounter = $PokemonEncounters.choose_wild_pokemon(encounter_type)
|
||||
if isFusedEncounter()
|
||||
encounter_fusedWith = $PokemonEncounters.choose_wild_pokemon(encounter_type)
|
||||
if encounter[0] != encounter_fusedWith[0]
|
||||
encounter[0] = getFusionSpecies(encounter[0], encounter_fusedWith[0])
|
||||
end
|
||||
end
|
||||
$game_switches[FORCE_FUSE_NEXT_POKEMON_SWITCH] = false
|
||||
|
||||
encounter = EncounterModifier.trigger(encounter)
|
||||
if $PokemonEncounters.allow_encounter?(encounter, repel_active)
|
||||
if $PokemonEncounters.have_double_wild_battle?
|
||||
@@ -215,8 +230,6 @@ def pbBattleOnStepTaken(repel_active)
|
||||
EncounterModifier.triggerEncounterEnd
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Checks when moving between maps
|
||||
#===============================================================================
|
||||
@@ -238,7 +251,7 @@ Events.onMapChanging += proc { |_sender, e|
|
||||
|
||||
# Set up various data related to the new map
|
||||
Events.onMapChange += proc { |_sender, e|
|
||||
old_map_ID = e[0] # previous map ID, is 0 if no map ID
|
||||
old_map_ID = e[0] # previous map ID, is 0 if no map ID
|
||||
new_map_metadata = GameData::MapMetadata.try_get($game_map.map_id)
|
||||
if new_map_metadata && new_map_metadata.teleport_destination
|
||||
$PokemonGlobal.healingSpot = new_map_metadata.teleport_destination
|
||||
@@ -258,7 +271,7 @@ Events.onMapChange += proc { |_sender, e|
|
||||
}
|
||||
|
||||
Events.onMapSceneChange += proc { |_sender, e|
|
||||
scene = e[0]
|
||||
scene = e[0]
|
||||
mapChanged = e[1]
|
||||
next if !scene || !scene.spriteset
|
||||
# Update map trail
|
||||
@@ -288,9 +301,9 @@ Events.onMapSceneChange += proc { |_sender, e|
|
||||
if $PokemonGlobal.mapTrail[1]
|
||||
for i in 0...Settings::NO_SIGNPOSTS.length / 2
|
||||
nosignpost = true if Settings::NO_SIGNPOSTS[2 * i] == $PokemonGlobal.mapTrail[1] &&
|
||||
Settings::NO_SIGNPOSTS[2 * i + 1] == $game_map.map_id
|
||||
Settings::NO_SIGNPOSTS[2 * i + 1] == $game_map.map_id
|
||||
nosignpost = true if Settings::NO_SIGNPOSTS[2 * i + 1] == $PokemonGlobal.mapTrail[1] &&
|
||||
Settings::NO_SIGNPOSTS[2 * i] == $game_map.map_id
|
||||
Settings::NO_SIGNPOSTS[2 * i] == $game_map.map_id
|
||||
break if nosignpost
|
||||
end
|
||||
mapinfos = pbLoadMapInfos
|
||||
@@ -307,15 +320,13 @@ Events.onMapSceneChange += proc { |_sender, e|
|
||||
end
|
||||
}
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Event locations, terrain tags
|
||||
#===============================================================================
|
||||
# NOTE: Assumes the event is 1x1 tile in size. Only returns one tile.
|
||||
def pbFacingTile(direction=nil,event=nil)
|
||||
return $MapFactory.getFacingTile(direction,event) if $MapFactory
|
||||
return pbFacingTileRegular(direction,event)
|
||||
def pbFacingTile(direction = nil, event = nil)
|
||||
return $MapFactory.getFacingTile(direction, event) if $MapFactory
|
||||
return pbFacingTileRegular(direction, event)
|
||||
end
|
||||
|
||||
# NOTE: Assumes the event is 1x1 tile in size. Only returns one tile.
|
||||
@@ -336,22 +347,22 @@ def pbEventFacesPlayer?(event, player, distance)
|
||||
return false if !event || !player || distance <= 0
|
||||
x_min = x_max = y_min = y_max = -1
|
||||
case event.direction
|
||||
when 2 # Down
|
||||
when 2 # Down
|
||||
x_min = event.x
|
||||
x_max = event.x + event.width - 1
|
||||
y_min = event.y + 1
|
||||
y_max = event.y + distance
|
||||
when 4 # Left
|
||||
when 4 # Left
|
||||
x_min = event.x - distance
|
||||
x_max = event.x - 1
|
||||
y_min = event.y - event.height + 1
|
||||
y_max = event.y
|
||||
when 6 # Right
|
||||
when 6 # Right
|
||||
x_min = event.x + event.width
|
||||
x_max = event.x + event.width - 1 + distance
|
||||
y_min = event.y - event.height + 1
|
||||
y_max = event.y
|
||||
when 8 # Up
|
||||
when 8 # Up
|
||||
x_min = event.x
|
||||
x_max = event.x + event.width - 1
|
||||
y_min = event.y - event.height + 1 - distance
|
||||
@@ -360,7 +371,7 @@ def pbEventFacesPlayer?(event, player, distance)
|
||||
return false
|
||||
end
|
||||
return player.x >= x_min && player.x <= x_max &&
|
||||
player.y >= y_min && player.y <= y_max
|
||||
player.y >= y_min && player.y <= y_max
|
||||
end
|
||||
|
||||
# Returns whether event is able to walk up to the player.
|
||||
@@ -369,13 +380,13 @@ def pbEventCanReachPlayer?(event, player, distance)
|
||||
delta_x = (event.direction == 6) ? 1 : (event.direction == 4) ? -1 : 0
|
||||
delta_y = (event.direction == 2) ? 1 : (event.direction == 8) ? -1 : 0
|
||||
case event.direction
|
||||
when 2 # Down
|
||||
when 2 # Down
|
||||
real_distance = player.y - event.y - 1
|
||||
when 4 # Left
|
||||
when 4 # Left
|
||||
real_distance = event.x - player.x - 1
|
||||
when 6 # Right
|
||||
when 6 # Right
|
||||
real_distance = player.x - event.x - event.width
|
||||
when 8 # Up
|
||||
when 8 # Up
|
||||
real_distance = event.y - event.height - player.y
|
||||
end
|
||||
if real_distance > 0
|
||||
@@ -392,21 +403,19 @@ def pbFacingEachOther(event1, event2)
|
||||
return pbEventFacesPlayer?(event1, event2, 1) && pbEventFacesPlayer?(event2, event1, 1)
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Audio playing
|
||||
#===============================================================================
|
||||
def pbCueBGM(bgm,seconds,volume=nil,pitch=nil)
|
||||
def pbCueBGM(bgm, seconds, volume = nil, pitch = nil)
|
||||
return if !bgm
|
||||
bgm = pbResolveAudioFile(bgm,volume,pitch)
|
||||
bgm = pbResolveAudioFile(bgm, volume, pitch)
|
||||
playingBGM = $game_system.playing_bgm
|
||||
if !playingBGM || playingBGM.name!=bgm.name || playingBGM.pitch!=bgm.pitch
|
||||
if !playingBGM || playingBGM.name != bgm.name || playingBGM.pitch != bgm.pitch
|
||||
pbBGMFade(seconds)
|
||||
if !$PokemonTemp.cueFrames
|
||||
$PokemonTemp.cueFrames = (seconds*Graphics.frame_rate)*3/5
|
||||
$PokemonTemp.cueFrames = (seconds * Graphics.frame_rate) * 3 / 5
|
||||
end
|
||||
$PokemonTemp.cueBGM=bgm
|
||||
$PokemonTemp.cueBGM = bgm
|
||||
elsif playingBGM
|
||||
pbBGMPlay(bgm)
|
||||
end
|
||||
@@ -430,86 +439,82 @@ def pbAutoplayOnSave
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Event movement
|
||||
#===============================================================================
|
||||
module PBMoveRoute
|
||||
Down = 1
|
||||
Left = 2
|
||||
Right = 3
|
||||
Up = 4
|
||||
LowerLeft = 5
|
||||
LowerRight = 6
|
||||
UpperLeft = 7
|
||||
UpperRight = 8
|
||||
Random = 9
|
||||
TowardPlayer = 10
|
||||
AwayFromPlayer = 11
|
||||
Forward = 12
|
||||
Backward = 13
|
||||
Jump = 14 # xoffset, yoffset
|
||||
Wait = 15 # frames
|
||||
TurnDown = 16
|
||||
TurnLeft = 17
|
||||
TurnRight = 18
|
||||
TurnUp = 19
|
||||
TurnRight90 = 20
|
||||
TurnLeft90 = 21
|
||||
Turn180 = 22
|
||||
TurnRightOrLeft90 = 23
|
||||
TurnRandom = 24
|
||||
TurnTowardPlayer = 25
|
||||
Down = 1
|
||||
Left = 2
|
||||
Right = 3
|
||||
Up = 4
|
||||
LowerLeft = 5
|
||||
LowerRight = 6
|
||||
UpperLeft = 7
|
||||
UpperRight = 8
|
||||
Random = 9
|
||||
TowardPlayer = 10
|
||||
AwayFromPlayer = 11
|
||||
Forward = 12
|
||||
Backward = 13
|
||||
Jump = 14 # xoffset, yoffset
|
||||
Wait = 15 # frames
|
||||
TurnDown = 16
|
||||
TurnLeft = 17
|
||||
TurnRight = 18
|
||||
TurnUp = 19
|
||||
TurnRight90 = 20
|
||||
TurnLeft90 = 21
|
||||
Turn180 = 22
|
||||
TurnRightOrLeft90 = 23
|
||||
TurnRandom = 24
|
||||
TurnTowardPlayer = 25
|
||||
TurnAwayFromPlayer = 26
|
||||
SwitchOn = 27 # 1 param
|
||||
SwitchOff = 28 # 1 param
|
||||
ChangeSpeed = 29 # 1 param
|
||||
ChangeFreq = 30 # 1 param
|
||||
WalkAnimeOn = 31
|
||||
WalkAnimeOff = 32
|
||||
StepAnimeOn = 33
|
||||
StepAnimeOff = 34
|
||||
DirectionFixOn = 35
|
||||
DirectionFixOff = 36
|
||||
ThroughOn = 37
|
||||
ThroughOff = 38
|
||||
AlwaysOnTopOn = 39
|
||||
AlwaysOnTopOff = 40
|
||||
Graphic = 41 # Name, hue, direction, pattern
|
||||
Opacity = 42 # 1 param
|
||||
Blending = 43 # 1 param
|
||||
PlaySE = 44 # 1 param
|
||||
Script = 45 # 1 param
|
||||
ScriptAsync = 101 # 1 param
|
||||
SwitchOn = 27 # 1 param
|
||||
SwitchOff = 28 # 1 param
|
||||
ChangeSpeed = 29 # 1 param
|
||||
ChangeFreq = 30 # 1 param
|
||||
WalkAnimeOn = 31
|
||||
WalkAnimeOff = 32
|
||||
StepAnimeOn = 33
|
||||
StepAnimeOff = 34
|
||||
DirectionFixOn = 35
|
||||
DirectionFixOff = 36
|
||||
ThroughOn = 37
|
||||
ThroughOff = 38
|
||||
AlwaysOnTopOn = 39
|
||||
AlwaysOnTopOff = 40
|
||||
Graphic = 41 # Name, hue, direction, pattern
|
||||
Opacity = 42 # 1 param
|
||||
Blending = 43 # 1 param
|
||||
PlaySE = 44 # 1 param
|
||||
Script = 45 # 1 param
|
||||
ScriptAsync = 101 # 1 param
|
||||
end
|
||||
|
||||
|
||||
|
||||
def pbMoveRoute(event,commands,waitComplete=false)
|
||||
def pbMoveRoute(event, commands, waitComplete = false)
|
||||
route = RPG::MoveRoute.new
|
||||
route.repeat = false
|
||||
route.repeat = false
|
||||
route.skippable = true
|
||||
route.list.clear
|
||||
route.list.push(RPG::MoveCommand.new(PBMoveRoute::ThroughOn))
|
||||
i=0
|
||||
while i<commands.length
|
||||
i = 0
|
||||
while i < commands.length
|
||||
case commands[i]
|
||||
when PBMoveRoute::Wait, PBMoveRoute::SwitchOn, PBMoveRoute::SwitchOff,
|
||||
PBMoveRoute::ChangeSpeed, PBMoveRoute::ChangeFreq, PBMoveRoute::Opacity,
|
||||
PBMoveRoute::Blending, PBMoveRoute::PlaySE, PBMoveRoute::Script
|
||||
route.list.push(RPG::MoveCommand.new(commands[i],[commands[i+1]]))
|
||||
PBMoveRoute::ChangeSpeed, PBMoveRoute::ChangeFreq, PBMoveRoute::Opacity,
|
||||
PBMoveRoute::Blending, PBMoveRoute::PlaySE, PBMoveRoute::Script
|
||||
route.list.push(RPG::MoveCommand.new(commands[i], [commands[i + 1]]))
|
||||
i += 1
|
||||
when PBMoveRoute::ScriptAsync
|
||||
route.list.push(RPG::MoveCommand.new(PBMoveRoute::Script,[commands[i+1]]))
|
||||
route.list.push(RPG::MoveCommand.new(PBMoveRoute::Wait,[0]))
|
||||
route.list.push(RPG::MoveCommand.new(PBMoveRoute::Script, [commands[i + 1]]))
|
||||
route.list.push(RPG::MoveCommand.new(PBMoveRoute::Wait, [0]))
|
||||
i += 1
|
||||
when PBMoveRoute::Jump
|
||||
route.list.push(RPG::MoveCommand.new(commands[i],[commands[i+1],commands[i+2]]))
|
||||
route.list.push(RPG::MoveCommand.new(commands[i], [commands[i + 1], commands[i + 2]]))
|
||||
i += 2
|
||||
when PBMoveRoute::Graphic
|
||||
route.list.push(RPG::MoveCommand.new(commands[i],
|
||||
[commands[i+1],commands[i+2],commands[i+3],commands[i+4]]))
|
||||
[commands[i + 1], commands[i + 2], commands[i + 3], commands[i + 4]]))
|
||||
i += 4
|
||||
else
|
||||
route.list.push(RPG::MoveCommand.new(commands[i]))
|
||||
@@ -532,17 +537,15 @@ def pbWait(numFrames)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Player/event movement in the field
|
||||
#===============================================================================
|
||||
def pbLedge(_xOffset,_yOffset)
|
||||
def pbLedge(_xOffset, _yOffset)
|
||||
if $game_player.pbFacingTerrainTag.ledge
|
||||
if pbJumpToward(2,true)
|
||||
$scene.spriteset.addUserAnimation(Settings::DUST_ANIMATION_ID,$game_player.x,$game_player.y,true,1)
|
||||
if pbJumpToward(2, true)
|
||||
$scene.spriteset.addUserAnimation(Settings::DUST_ANIMATION_ID, $game_player.x, $game_player.y, true, 1)
|
||||
$game_player.increase_steps
|
||||
$game_player.check_event_trigger_here([1,2])
|
||||
$game_player.check_event_trigger_here([1, 2])
|
||||
end
|
||||
return true
|
||||
end
|
||||
@@ -552,7 +555,7 @@ end
|
||||
def pbSlideOnIce
|
||||
return if !$game_player.pbTerrainTag.ice
|
||||
$PokemonGlobal.sliding = true
|
||||
direction = $game_player.direction
|
||||
direction = $game_player.direction
|
||||
oldwalkanime = $game_player.walk_anime
|
||||
$game_player.straighten
|
||||
$game_player.walk_anime = false
|
||||
@@ -575,20 +578,20 @@ end
|
||||
def pbSlideOnWater
|
||||
return if !$game_player.pbTerrainTag.waterCurrent
|
||||
$PokemonGlobal.sliding = true
|
||||
direction = $game_player.direction
|
||||
direction = $game_player.direction
|
||||
oldwalkanime = $game_player.walk_anime
|
||||
$game_player.straighten
|
||||
$game_player.walk_anime = false
|
||||
loop do
|
||||
break if !$game_player.can_move_in_direction?(direction)
|
||||
break if !$game_player.pbTerrainTag.waterCurrent
|
||||
if $game_map.passable?($game_player.x,$game_player.y,8)
|
||||
if $game_map.passable?($game_player.x, $game_player.y, 8)
|
||||
$game_player.move_up
|
||||
elsif $game_map.passable?($game_player.x,$game_player.y,4)
|
||||
elsif $game_map.passable?($game_player.x, $game_player.y, 4)
|
||||
$game_player.move_left
|
||||
elsif $game_map.passable?($game_player.x,$game_player.y,6)
|
||||
elsif $game_map.passable?($game_player.x, $game_player.y, 6)
|
||||
$game_player.move_right
|
||||
elsif $game_map.passable?($game_player.x,$game_player.y,2)
|
||||
elsif $game_map.passable?($game_player.x, $game_player.y, 2)
|
||||
$game_player.move_down
|
||||
end
|
||||
while $game_player.moving?
|
||||
@@ -603,11 +606,11 @@ def pbSlideOnWater
|
||||
$PokemonGlobal.sliding = false
|
||||
end
|
||||
|
||||
def pbTurnTowardEvent(event,otherEvent)
|
||||
def pbTurnTowardEvent(event, otherEvent)
|
||||
sx = 0
|
||||
sy = 0
|
||||
if $MapFactory
|
||||
relativePos = $MapFactory.getThisAndOtherEventRelativePos(otherEvent,event)
|
||||
relativePos = $MapFactory.getThisAndOtherEventRelativePos(otherEvent, event)
|
||||
sx = relativePos[0]
|
||||
sy = relativePos[1]
|
||||
else
|
||||
@@ -641,16 +644,20 @@ def pbMoveTowardPlayer(event)
|
||||
$PokemonMap.addMovedEvent(event.id) if $PokemonMap
|
||||
end
|
||||
|
||||
def pbJumpToward(dist=1,playSound=false,cancelSurf=false)
|
||||
def pbJumpToward(dist = 1, playSound = false, cancelSurf = false)
|
||||
x = $game_player.x
|
||||
y = $game_player.y
|
||||
case $game_player.direction
|
||||
when 2 then $game_player.jump(0, dist) # down
|
||||
when 4 then $game_player.jump(-dist, 0) # left
|
||||
when 6 then $game_player.jump(dist, 0) # right
|
||||
when 8 then $game_player.jump(0, -dist) # up
|
||||
when 2 then
|
||||
$game_player.jump(0, dist) # down
|
||||
when 4 then
|
||||
$game_player.jump(-dist, 0) # left
|
||||
when 6 then
|
||||
$game_player.jump(dist, 0) # right
|
||||
when 8 then
|
||||
$game_player.jump(0, -dist) # up
|
||||
end
|
||||
if $game_player.x!=x || $game_player.y!=y
|
||||
if $game_player.x != x || $game_player.y != y
|
||||
pbSEPlay("Player jump") if playSound
|
||||
$PokemonEncounters.reset_step_count if cancelSurf
|
||||
$PokemonTemp.endSurf = true if cancelSurf
|
||||
@@ -664,12 +671,10 @@ def pbJumpToward(dist=1,playSound=false,cancelSurf=false)
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Bridges, cave escape points, and setting the heal point
|
||||
#===============================================================================
|
||||
def pbBridgeOn(height=2)
|
||||
def pbBridgeOn(height = 2)
|
||||
$PokemonGlobal.bridge = height
|
||||
end
|
||||
|
||||
@@ -682,20 +687,20 @@ def pbSetEscapePoint
|
||||
xco = $game_player.x
|
||||
yco = $game_player.y
|
||||
case $game_player.direction
|
||||
when 2 # Down
|
||||
when 2 # Down
|
||||
yco -= 1
|
||||
dir = 8
|
||||
when 4 # Left
|
||||
when 4 # Left
|
||||
xco += 1
|
||||
dir = 6
|
||||
when 6 # Right
|
||||
when 6 # Right
|
||||
xco -= 1
|
||||
dir = 4
|
||||
when 8 # Up
|
||||
when 8 # Up
|
||||
yco += 1
|
||||
dir = 2
|
||||
end
|
||||
$PokemonGlobal.escapePoint = [$game_map.map_id,xco,yco,dir]
|
||||
$PokemonGlobal.escapePoint = [$game_map.map_id, xco, yco, dir]
|
||||
end
|
||||
|
||||
def pbEraseEscapePoint
|
||||
@@ -703,14 +708,12 @@ def pbEraseEscapePoint
|
||||
end
|
||||
|
||||
def pbSetPokemonCenter
|
||||
$PokemonGlobal.pokecenterMapId = $game_map.map_id
|
||||
$PokemonGlobal.pokecenterX = $game_player.x
|
||||
$PokemonGlobal.pokecenterY = $game_player.y
|
||||
$PokemonGlobal.pokecenterMapId = $game_map.map_id
|
||||
$PokemonGlobal.pokecenterX = $game_player.x
|
||||
$PokemonGlobal.pokecenterY = $game_player.y
|
||||
$PokemonGlobal.pokecenterDirection = $game_player.direction
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Partner trainer
|
||||
#===============================================================================
|
||||
@@ -730,78 +733,74 @@ def pbDeregisterPartner
|
||||
$PokemonGlobal.partner = nil
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Picking up an item found on the ground
|
||||
#===============================================================================
|
||||
def pbItemBall(item,quantity=1,item_name="",canRandom=true)
|
||||
def pbItemBall(item, quantity = 1, item_name = "", canRandom = true)
|
||||
item = GameData::Item.get(item)
|
||||
return false if !item || quantity<1
|
||||
itemname = (quantity>1) ? item.name_plural : item.name
|
||||
return false if !item || quantity < 1
|
||||
itemname = (quantity > 1) ? item.name_plural : item.name
|
||||
pocket = item.pocket
|
||||
move = item.move
|
||||
if $PokemonBag.pbStoreItem(item,quantity) # If item can be picked up
|
||||
if $PokemonBag.pbStoreItem(item, quantity) # If item can be picked up
|
||||
meName = (item.is_key_item?) ? "Key item get" : "Item get"
|
||||
if item == :LEFTOVERS
|
||||
pbMessage(_INTL("\\me[{1}]You found some \\c[1]{2}\\c[0]!\\wtnp[30]",meName,itemname))
|
||||
elsif item.is_machine? # TM or HM
|
||||
pbMessage(_INTL("\\me[{1}]You found \\c[1]{2} {3}\\c[0]!\\wtnp[30]",meName,itemname,GameData::Move.get(move).name))
|
||||
elsif quantity>1
|
||||
pbMessage(_INTL("\\me[{1}]You found {2} \\c[1]{3}\\c[0]!\\wtnp[30]",meName,quantity,itemname))
|
||||
pbMessage(_INTL("\\me[{1}]You found some \\c[1]{2}\\c[0]!\\wtnp[30]", meName, itemname))
|
||||
elsif item.is_machine? # TM or HM
|
||||
pbMessage(_INTL("\\me[{1}]You found \\c[1]{2} {3}\\c[0]!\\wtnp[30]", meName, itemname, GameData::Move.get(move).name))
|
||||
elsif quantity > 1
|
||||
pbMessage(_INTL("\\me[{1}]You found {2} \\c[1]{3}\\c[0]!\\wtnp[30]", meName, quantity, itemname))
|
||||
elsif itemname.starts_with_vowel?
|
||||
pbMessage(_INTL("\\me[{1}]You found an \\c[1]{2}\\c[0]!\\wtnp[30]",meName,itemname))
|
||||
pbMessage(_INTL("\\me[{1}]You found an \\c[1]{2}\\c[0]!\\wtnp[30]", meName, itemname))
|
||||
else
|
||||
pbMessage(_INTL("\\me[{1}]You found a \\c[1]{2}\\c[0]!\\wtnp[30]",meName,itemname))
|
||||
pbMessage(_INTL("\\me[{1}]You found a \\c[1]{2}\\c[0]!\\wtnp[30]", meName, itemname))
|
||||
end
|
||||
pbMessage(_INTL("You put the {1} away\\nin the <icon=bagPocket{2}>\\c[1]{3} Pocket\\c[0].",
|
||||
itemname,pocket,PokemonBag.pocketNames()[pocket]))
|
||||
itemname, pocket, PokemonBag.pocketNames()[pocket]))
|
||||
return true
|
||||
end
|
||||
# Can't add the item
|
||||
if item == :LEFTOVERS
|
||||
pbMessage(_INTL("You found some \\c[1]{1}\\c[0]!\\wtnp[30]",itemname))
|
||||
elsif item.is_machine? # TM or HM
|
||||
pbMessage(_INTL("You found \\c[1]{1} {2}\\c[0]!\\wtnp[30]",itemname,GameData::Move.get(move).name))
|
||||
elsif quantity>1
|
||||
pbMessage(_INTL("You found {1} \\c[1]{2}\\c[0]!\\wtnp[30]",quantity,itemname))
|
||||
pbMessage(_INTL("You found some \\c[1]{1}\\c[0]!\\wtnp[30]", itemname))
|
||||
elsif item.is_machine? # TM or HM
|
||||
pbMessage(_INTL("You found \\c[1]{1} {2}\\c[0]!\\wtnp[30]", itemname, GameData::Move.get(move).name))
|
||||
elsif quantity > 1
|
||||
pbMessage(_INTL("You found {1} \\c[1]{2}\\c[0]!\\wtnp[30]", quantity, itemname))
|
||||
elsif itemname.starts_with_vowel?
|
||||
pbMessage(_INTL("You found an \\c[1]{1}\\c[0]!\\wtnp[30]",itemname))
|
||||
pbMessage(_INTL("You found an \\c[1]{1}\\c[0]!\\wtnp[30]", itemname))
|
||||
else
|
||||
pbMessage(_INTL("You found a \\c[1]{1}\\c[0]!\\wtnp[30]",itemname))
|
||||
pbMessage(_INTL("You found a \\c[1]{1}\\c[0]!\\wtnp[30]", itemname))
|
||||
end
|
||||
pbMessage(_INTL("But your Bag is full..."))
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
|
||||
#===============================================================================
|
||||
# Being given an item
|
||||
#===============================================================================
|
||||
def pbReceiveItem(item,quantity=1,item_name="",music=nil)
|
||||
def pbReceiveItem(item, quantity = 1, item_name = "", music = nil)
|
||||
#item_name -> pour donner un autre nom à l'item. Pas encore réimplémenté et surtout là pour éviter que ça plante quand des events essaient de le faire
|
||||
item = GameData::Item.get(item)
|
||||
return false if !item || quantity<1
|
||||
itemname = (quantity>1) ? item.name_plural : item.name
|
||||
return false if !item || quantity < 1
|
||||
itemname = (quantity > 1) ? item.name_plural : item.name
|
||||
pocket = item.pocket
|
||||
move = item.move
|
||||
meName = (item.is_key_item?) ? "Key item get" : "Item get"
|
||||
if item == :LEFTOVERS
|
||||
pbMessage(_INTL("\\me[{1}]You obtained some \\c[1]{2}\\c[0]!\\wtnp[30]",meName,itemname))
|
||||
elsif item.is_machine? # TM or HM
|
||||
pbMessage(_INTL("\\me[{1}]You obtained \\c[1]{2} {3}\\c[0]!\\wtnp[30]",meName,itemname,GameData::Move.get(move).name))
|
||||
elsif quantity>1
|
||||
pbMessage(_INTL("\\me[{1}]You obtained {2} \\c[1]{3}\\c[0]!\\wtnp[30]",meName,quantity,itemname))
|
||||
pbMessage(_INTL("\\me[{1}]You obtained some \\c[1]{2}\\c[0]!\\wtnp[30]", meName, itemname))
|
||||
elsif item.is_machine? # TM or HM
|
||||
pbMessage(_INTL("\\me[{1}]You obtained \\c[1]{2} {3}\\c[0]!\\wtnp[30]", meName, itemname, GameData::Move.get(move).name))
|
||||
elsif quantity > 1
|
||||
pbMessage(_INTL("\\me[{1}]You obtained {2} \\c[1]{3}\\c[0]!\\wtnp[30]", meName, quantity, itemname))
|
||||
elsif itemname.starts_with_vowel?
|
||||
pbMessage(_INTL("\\me[{1}]You obtained an \\c[1]{2}\\c[0]!\\wtnp[30]",meName,itemname))
|
||||
pbMessage(_INTL("\\me[{1}]You obtained an \\c[1]{2}\\c[0]!\\wtnp[30]", meName, itemname))
|
||||
else
|
||||
pbMessage(_INTL("\\me[{1}]You obtained a \\c[1]{2}\\c[0]!\\wtnp[30]",meName,itemname))
|
||||
pbMessage(_INTL("\\me[{1}]You obtained a \\c[1]{2}\\c[0]!\\wtnp[30]", meName, itemname))
|
||||
end
|
||||
if $PokemonBag.pbStoreItem(item,quantity) # If item can be added
|
||||
if $PokemonBag.pbStoreItem(item, quantity) # If item can be added
|
||||
pbMessage(_INTL("You put the {1} away\\nin the <icon=bagPocket{2}>\\c[1]{3} Pocket\\c[0].",
|
||||
itemname,pocket,PokemonBag.pocketNames()[pocket]))
|
||||
itemname, pocket, PokemonBag.pocketNames()[pocket]))
|
||||
return true
|
||||
end
|
||||
return false # Can't add the item
|
||||
return false # Can't add the item
|
||||
end
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -55,4 +55,12 @@ SINGLE_POKEMON_MODE_HEAD_SWITCH=791
|
||||
SINGLE_POKEMON_MODE_BODY_SWITCH=792
|
||||
SINGLE_POKEMON_MODE_RANDOM_SWITCH=793
|
||||
FISHING_AUTOHOOK_SWITCH = 916
|
||||
ODDKEYSTONE_NB_VARIABLE=252
|
||||
ODDKEYSTONE_NB_VARIABLE=252
|
||||
|
||||
RANDOMIZED_WILD_POKEMON_SWITCH=953
|
||||
FUSED_WILD_POKEMON_SWITCH=35
|
||||
FORCE_FUSE_NEXT_POKEMON_SWITCH=37
|
||||
FORCE_ALL_WILD_FUSIONS_SWITCH=828
|
||||
USED_AN_INCENSE_SWITCH=798
|
||||
|
||||
WILD_FUSION_RATE_VAR=210
|
||||
|
||||
@@ -208,7 +208,9 @@ def getEvolution(species, halfToEvolve=nil)
|
||||
end
|
||||
|
||||
def getFusionSpecies(body, head)
|
||||
id = body * Settings::NB_POKEMON + head
|
||||
body_num = dexNum(body)
|
||||
head_num = dexNum(head)
|
||||
id = body_num * Settings::NB_POKEMON + head_num
|
||||
return GameData::Species.get(id).species
|
||||
end
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user