mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2026-11-03 08:15:47 +00:00
Release 6.9.0
This commit is contained in:
@@ -286,6 +286,94 @@ class LightEffect_DayNight < LightEffect
|
||||
end
|
||||
end
|
||||
|
||||
class LightEffect_PokemonGlow < LightEffect_DayNight
|
||||
|
||||
def initialize(event, viewport = nil, map = nil)
|
||||
return unless event.is_a?(OverworldPokemonEvent)
|
||||
@event = event
|
||||
@map = map || $game_map
|
||||
@disposed = false
|
||||
glow_sprite_path = "Graphics/Characters/#{event.character_name}_glow"
|
||||
if pbResolveBitmap(glow_sprite_path)
|
||||
@glow_bitmap = AnimatedBitmap.new(glow_sprite_path).bitmap
|
||||
else
|
||||
@glow_bitmap = AnimatedBitmap.new("Graphics/Pictures/LE_pokemon").bitmap
|
||||
end
|
||||
|
||||
# 4 rows = directions (down, left, right, up), columns = walk frames.
|
||||
# Frame is assumed square, same as the character's own charset.
|
||||
@frame_height = @glow_bitmap.height / 4
|
||||
@frame_width = @frame_height
|
||||
@num_frames = [@glow_bitmap.width / @frame_width, 1].max
|
||||
|
||||
@light = Sprite.new(viewport)
|
||||
@light.bitmap = Bitmap.new(@frame_width, @frame_height)
|
||||
@light.z = 1000
|
||||
|
||||
@last_direction = nil
|
||||
@last_pattern = nil
|
||||
update_frame
|
||||
end
|
||||
|
||||
def dispose
|
||||
@glow_bitmap&.dispose
|
||||
super
|
||||
end
|
||||
|
||||
def update
|
||||
return if !@light || !@event || @disposed
|
||||
update_frame
|
||||
@light.update
|
||||
if $PokemonGlobal&.diving
|
||||
shade = 0
|
||||
else
|
||||
shade = PBDayNight.getShade
|
||||
end
|
||||
if shade >= 144
|
||||
shade = 255
|
||||
elsif shade <= 64
|
||||
shade = 0
|
||||
else
|
||||
shade = 255 - (255 * (144 - shade) / (144 - 64))
|
||||
end
|
||||
@light.opacity = 255 - shade
|
||||
return if @light.opacity <= 0
|
||||
@light.ox = @frame_width / 2
|
||||
@light.oy = @frame_height
|
||||
if (Object.const_defined?(:ScreenPosHelper) rescue false)
|
||||
@light.x = ScreenPosHelper.pbScreenX(@event)
|
||||
@light.y = ScreenPosHelper.pbScreenY(@event)
|
||||
@light.zoom_x = ScreenPosHelper.pbScreenZoomX(@event)
|
||||
@light.zoom_y = ScreenPosHelper.pbScreenZoomY(@event)
|
||||
else
|
||||
@light.x = @event.screen_x
|
||||
@light.y = @event.screen_y
|
||||
@light.zoom_x = 1.0
|
||||
@light.zoom_y = 1.0
|
||||
end
|
||||
@light.tone.set($game_screen.tone.red, $game_screen.tone.green,
|
||||
$game_screen.tone.blue, $game_screen.tone.gray)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_frame
|
||||
return unless @glow_bitmap
|
||||
direction = @event.direction
|
||||
pattern = (@event.pattern rescue 0)
|
||||
return if direction == @last_direction && pattern == @last_pattern
|
||||
|
||||
row = [2, 4, 6, 8].index(direction) || 0
|
||||
col = pattern.clamp(0, @num_frames - 1)
|
||||
|
||||
src_rect = Rect.new(col * @frame_width, row * @frame_height, @frame_width, @frame_height)
|
||||
@light.bitmap.clear
|
||||
@light.bitmap.blt(0, 0, @glow_bitmap, src_rect)
|
||||
|
||||
@last_direction = direction
|
||||
@last_pattern = pattern
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Events.onSpritesetCreate += proc { |_sender,e|
|
||||
@@ -293,16 +381,23 @@ Events.onSpritesetCreate += proc { |_sender,e|
|
||||
viewport = e[1] # Viewport used for tilemap and characters
|
||||
map = spriteset.map # Map associated with the spriteset (not necessarily the current map)
|
||||
for i in map.events.keys
|
||||
if map.events[i].name[/^outdoorlight\((\w+)\)$/i]
|
||||
event = map.events[i]
|
||||
if event.is_a?(OverworldPokemonEvent)
|
||||
if event.glow_in_the_dark
|
||||
spriteset.addUserSprite(LightEffect_PokemonGlow.new(event,viewport,map))
|
||||
end
|
||||
end
|
||||
|
||||
if event.name[/^outdoorlight\((\w+)\)$/i]
|
||||
filename = $~[1].to_s
|
||||
spriteset.addUserSprite(LightEffect_DayNight.new(map.events[i],viewport,map,filename))
|
||||
elsif map.events[i].name[/^outdoorlight$/i]
|
||||
spriteset.addUserSprite(LightEffect_DayNight.new(map.events[i],viewport,map))
|
||||
elsif map.events[i].name[/^light\((\w+)\)$/i]
|
||||
spriteset.addUserSprite(LightEffect_DayNight.new(event,viewport,map,filename))
|
||||
elsif event.name[/^outdoorlight$/i]
|
||||
spriteset.addUserSprite(LightEffect_DayNight.new(event,viewport,map))
|
||||
elsif event.name[/^light\((\w+)\)$/i]
|
||||
filename = $~[1].to_s
|
||||
spriteset.addUserSprite(LightEffect_Basic.new(map.events[i],viewport,map,filename))
|
||||
elsif map.events[i].name[/^light$/i]
|
||||
spriteset.addUserSprite(LightEffect_Basic.new(map.events[i],viewport,map))
|
||||
spriteset.addUserSprite(LightEffect_Basic.new(event,viewport,map,filename))
|
||||
elsif event.name[/^light$/i]
|
||||
spriteset.addUserSprite(LightEffect_Basic.new(event,viewport,map))
|
||||
end
|
||||
end
|
||||
spriteset.addUserSprite(Particle_Engine.new(viewport,map))
|
||||
|
||||
@@ -91,10 +91,20 @@ end
|
||||
def pbStartOver(gameover = false)
|
||||
$game_variables[VAR_CURRENT_GYM_TYPE] = -1
|
||||
$game_switches[SWITCH_LOCK_PLAYER_MOVEMENT] = false
|
||||
|
||||
$game_switches[SWITCH_TEAMED_WITH_ERIKA_SEWERS] = false
|
||||
if $game_switches[SWITCH_WALLY_CATCHING_POKEMON] || $game_switches[SWITCH_WALLY_GAVE_POKEMON]
|
||||
$game_switches[SWITCH_DIED_WITH_WALLY] = true
|
||||
end
|
||||
$game_switches[SWITCH_CANNOT_CATCH_POKEMON] = false
|
||||
|
||||
if Settings::HOENN
|
||||
$game_switches[SWITCH_RIVAL_ON_MT_CHIMNEY] = false
|
||||
$game_switches[SWITCH_WAILMER_EGGS_QUEST] = false
|
||||
$game_variables[]
|
||||
end
|
||||
|
||||
|
||||
pbBridgeOff
|
||||
$PokemonTemp.enteredSecretBaseController = nil
|
||||
clear_all_images()
|
||||
@@ -133,6 +143,8 @@ def pbStartOver(gameover = false)
|
||||
$game_temp.player_new_x = $PokemonGlobal.pokecenterX
|
||||
$game_temp.player_new_y = $PokemonGlobal.pokecenterY
|
||||
$game_temp.player_new_direction = $PokemonGlobal.pokecenterDirection
|
||||
|
||||
adjustWarpCoordinatesExceptions()
|
||||
if $scene.is_a?(Scene_Map)
|
||||
$scene.transfer_player
|
||||
$scene.reset_map(false)
|
||||
@@ -177,3 +189,15 @@ def pbStartOver(gameover = false)
|
||||
end
|
||||
pbEraseEscapePoint
|
||||
end
|
||||
|
||||
def adjustWarpCoordinatesExceptions()
|
||||
switch_azalea_unflooded = 314
|
||||
|
||||
if Settings::KANTO
|
||||
map_azalea_center_unflooded = 279
|
||||
map_azalea_center_flooded = 339
|
||||
if $game_temp.player_new_map_id == map_azalea_center_flooded && $game_switches[switch_azalea_unflooded]
|
||||
$game_temp.player_new_map_id = map_azalea_center_unflooded
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user