Release 6.9.0

This commit is contained in:
chardub
2026-11-02 11:34:46 -05:00
parent 060726298d
commit ae6e2ebc64
5697 changed files with 131795 additions and 17423 deletions
@@ -81,13 +81,19 @@ class AutosaveOptionsScene < PokemonOption_Scene
},
_INTL("Autosave when healing at a Pokémon Center")
),
EnumOption.new(_INTL("When catching Pokémon"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[AUTOSAVE_CATCH_SWITCH] ? 0 : 1 },
proc { |value|
$game_switches[AUTOSAVE_CATCH_SWITCH] = value == 0
},
_INTL("Autosave everytime a new Pokémon is caught")
),
#Removed because battle restarts right away after reloading and duplicates the Pokemon.
# if $game_switches[AUTOSAVE_CATCH_SWITCH]
# Kernel.tryAutosave()
# end
# EnumOption.new(_INTL("When catching Pokémon"), [_INTL("On"), _INTL("Off")],
# proc { $game_switches[AUTOSAVE_CATCH_SWITCH] ? 0 : 1 },
# proc { |value|
# $game_switches[AUTOSAVE_CATCH_SWITCH] = value == 0
# },
# _INTL("Autosave everytime a new Pokémon is caught")
# ),
EnumOption.new(_INTL("After trainer battles"), [_INTL("On"), _INTL("Off")],
proc { $game_switches[AUTOSAVE_WIN_SWITCH] ? 0 : 1 },
proc { |value|
@@ -1,3 +1,16 @@
def openRandomizerMenu()
pbFadeOutIn {
scene = RandomizerOptionsScene.new
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
}
if $PokemonTemp.should_reshuffle_pokemon || $PokemonTemp.should_reshuffle_trainers
if pbConfirmMessage(_INTL("Your changes won't take effect until you re-shuffle. Would you like to do it now?"))
reshuffleWithCurrentSettings
end
end
end
class PokemonGameOption_Scene < PokemonOption_Scene
ICON_AUDIO = "optionIcons/AUDIO"
ICON_GAMEPLAY = "optionIcons/GAMEPLAY"
@@ -70,15 +83,7 @@ class PokemonGameOption_Scene < PokemonOption_Scene
@challenge_menu = false
end
def openRandomizerMenu()
return unless @randomizer_menu
pbFadeOutIn {
scene = RandomizerOptionsScene.new
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
}
@randomizer_menu = false
end
def openSystemMenu()
return unless @system_menu
@@ -83,13 +83,20 @@ class SpriteOptionsScene < PokemonOption_Scene
_INTL("Uses the same party icon for all fusions")]
)
battle_type_icon_option_selected = $PokemonSystem.type_icons ? 1 : 0
options << EnumOption.new(_INTL("Battle Type Icons"), [_INTL("Off"), _INTL("On")],
proc { battle_type_icon_option_selected },
proc { |value| $PokemonSystem.type_icons = value == 1 },
battle_type_icon_opp_option_selected = $PokemonSystem.type_icons_opponent ? 1 : 0
options << EnumOption.new(_INTL("Type Icons (Enemy)"), [_INTL("Off"), _INTL("On")],
proc { battle_type_icon_opp_option_selected },
proc { |value| $PokemonSystem.type_icons_opponent = value == 1 },
_INTL("Display the enemy Pokémon type in battles.")
)
battle_type_icon_player_option_selected = $PokemonSystem.type_icons_player ? 1 : 0
options << EnumOption.new(_INTL("Type Icons (Player)"), [_INTL("Off"), _INTL("On")],
proc { battle_type_icon_player_option_selected },
proc { |value| $PokemonSystem.type_icons_player = value == 1 },
_INTL("Display the player's Pokémon type in battles.")
)
options << EnumOption.new(_INTL("Battle Animations"), [_INTL("On"), _INTL("Off")],
proc { $PokemonSystem.battlescene },
proc { |value| $PokemonSystem.battlescene = value },
@@ -30,7 +30,6 @@ def initializeLegendaryMode()
$game_switches[SWITCH_RANDOMIZED_AT_LEAST_ONCE] = true
addLegendaryEggsToPC
$PokemonSystem.hide_custom_eggs = true
$PokemonSystem.type_icons = true
end
def convert_species_to_legendary(dex_number)
@@ -19,6 +19,7 @@ end
def updateCustomDexFile
return if !downloadAllowed?()
#pbMessage(_INTL("Downloading custom Pokédex entries...\\wtnp[10]"))
download_file(Settings::CUSTOM_DEX_FILE_URL, Settings::CUSTOM_DEX_ENTRIES_PATH,)
end
@@ -1,7 +1,7 @@
PluginManager.register({
:name => "Carmaniac's Speech Bubbles",
:version => "1.1",
:credits => ["Carmaniac","Avery","Boonzeet"],
:credits => ["Carmaniac", "Avery", "Boonzeet"],
:link => "https://reliccastle.com/resources/461/"
})
@@ -29,13 +29,20 @@ class PokemonTemp
attr_accessor :speechbubble_alwaysDown
attr_accessor :speechbubble_alwaysUp
attr_accessor :speechbubble_fixed_x
attr_accessor :speechbubble_fixed_y
attr_accessor :speechbubble_fixed_w
attr_accessor :speechbubble_fixed_h
attr_accessor :speechbubble_fixed_anchor
attr_accessor :speechbubble_fixed_arrow
attr_accessor :windowSkin
end
module MessageConfig
BUBBLETEXTBASE = Color.new(22,22,22)
BUBBLETEXTSHADOW = Color.new(166,160,151)
BUBBLETEXTBASE = Color.new(22, 22, 22)
BUBBLETEXTSHADOW = Color.new(166, 160, 151)
WindowOpacity = 255
end
@@ -48,24 +55,55 @@ class Window_AdvancedTextPokemon
if value != nil && value != "" && $PokemonTemp.speechbubble_bubble && $PokemonTemp.speechbubble_bubble > 0
if $PokemonTemp.speechbubble_bubble == 1
$PokemonTemp.speechbubble_bubble = 0
resizeToFit2(value,400,100)
resizeToFit2(value, 400, 100)
@x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
@y = $game_map.events[$PokemonTemp.speechbubble_talking].screen_y - (32 + @height)
if @y>(Graphics.height-@height-2)
@y = (Graphics.height-@height)
elsif @y<2
@y=2
if @y > (Graphics.height - @height - 2)
@y = (Graphics.height - @height)
elsif @y < 2
@y = 2
end
if @x>(Graphics.width-@width-2)
@x = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_x-@width)
elsif @x<2
@x=2
if @x > (Graphics.width - @width - 2)
@x = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_x - @width)
elsif @x < 2
@x = 2
end
elsif $PokemonTemp.speechbubble_bubble == 3
@x=$game_player.x+32
@y=$game_player.y+36
@x = $game_player.x + 32
@y = $game_player.y + 36
elsif $PokemonTemp.speechbubble_bubble == 4
full_w = ($PokemonTemp.speechbubble_fixed_w || 400).to_i
full_h = ($PokemonTemp.speechbubble_fixed_h || 100).to_i
fx = ($PokemonTemp.speechbubble_fixed_x || 0).to_i
fy = ($PokemonTemp.speechbubble_fixed_y || 0).to_i
resizeToFit2(value, full_w, full_h)
w = self.width.to_i
h = self.height.to_i
if $PokemonTemp.speechbubble_fixed_anchor
new_x = fx - (w / 2)
new_y = fy - h
else
new_x = fx + ((full_w - w) / 2)
new_y = fy
end
new_x = [[new_x, 0].max, [Graphics.width - w, 0].max].min
new_y = [[new_y, 0].max, [Graphics.height - h, 0].max].min
self.x = new_x
self.y = new_y
arrow = $PokemonTemp.speechbubble_arrow
if $PokemonTemp.speechbubble_fixed_arrow && arrow &&
!arrow.disposed? && arrow.bitmap
arrow.zoom_x = 2
arrow.zoom_y = 2
arrow.x = new_x + w - 12
arrow.y = new_y + (h / 2) - (arrow.bitmap.height / 2) + 8
arrow.z = 99999
arrow.visible = true
end
else
$PokemonTemp.speechbubble_bubble = 0
end
@@ -74,33 +112,42 @@ class Window_AdvancedTextPokemon
end
end
def pbRepositionMessageWindow(msgwindow, linecount=2)
msgwindow.height=32*linecount+msgwindow.borderY
msgwindow.y=(Graphics.height)-(msgwindow.height)
if $game_temp && $game_temp.in_battle && !$scene.respond_to?("update_basic")
msgwindow.y=0
def pbRepositionMessageWindow(msgwindow, linecount = 2)
msgwindow.height = 32 * linecount + msgwindow.borderY
msgwindow.y = (Graphics.height) - (msgwindow.height)
in_battle = $game_temp && $game_temp.in_battle && !$scene.respond_to?("update_basic")
if $PokemonTemp.speechbubble_bubble == 4
msgwindow.setSkin("Graphics/windowskins/frlgtextskin")
msgwindow.width = $PokemonTemp.speechbubble_fixed_w || 400
msgwindow.height = $PokemonTemp.speechbubble_fixed_h || 100
unless $PokemonTemp.speechbubble_fixed_anchor
msgwindow.x = $PokemonTemp.speechbubble_fixed_x || 0
msgwindow.y = $PokemonTemp.speechbubble_fixed_y || 0
end
elsif in_battle
msgwindow.y = 0
elsif $game_system && $game_system.respond_to?("message_position")
case $game_system.message_position
when 0 # up
msgwindow.y=0
when 1 # middle
msgwindow.y=(Graphics.height/2)-(msgwindow.height/2)
when 0 # up
msgwindow.y = 0
when 1 # middle
msgwindow.y = (Graphics.height / 2) - (msgwindow.height / 2)
when 2
if $PokemonTemp.speechbubble_bubble == 1 || $PokemonTemp.speechbubble_bubble == 3
msgwindow.setSkin("Graphics/windowskins/frlgtextskin")
msgwindow.height = 100
msgwindow.width = 400
elsif $PokemonTemp.speechbubble_bubble==2
elsif $PokemonTemp.speechbubble_bubble == 2
msgwindow.setSkin("Graphics/windowskins/frlgtextskin")
msgwindow.height = 102
msgwindow.width = Graphics.width
if ($game_player.direction==DIRECTION_UP && !$PokemonTemp.speechbubble_alwaysDown) || $PokemonTemp.speechbubble_alwaysUp
if ($game_player.direction == DIRECTION_UP && !$PokemonTemp.speechbubble_alwaysDown) || $PokemonTemp.speechbubble_alwaysUp
$PokemonTemp.speechbubble_vp = Viewport.new(0, 0, Graphics.width, 280)
msgwindow.y = 6
else
$PokemonTemp.speechbubble_vp = Viewport.new(0, 6 + msgwindow.height, Graphics.width, 280)
msgwindow.y = (Graphics.height - msgwindow.height) - 6
if $PokemonTemp.speechbubble_outofrange==true && !$PokemonTemp.speechbubble_alwaysDown
if $PokemonTemp.speechbubble_outofrange == true && !$PokemonTemp.speechbubble_alwaysDown
msgwindow.y = 6
end
end
@@ -117,18 +164,18 @@ def pbRepositionMessageWindow(msgwindow, linecount=2)
end
if $game_message
case $game_message.background
when 1 # dim
msgwindow.opacity=0
when 2 # transparent
msgwindow.opacity=0
when 1 # dim
msgwindow.opacity = 0
when 2 # transparent
msgwindow.opacity = 0
end
end
end
def pbCreateMessageWindow(viewport=nil,skin=nil)
def pbCreateMessageWindow(viewport = nil, skin = nil)
arrow = nil
if $PokemonTemp.speechbubble_bubble==2 && $game_map.events[$PokemonTemp.speechbubble_talking] != nil # Message window set to floating bubble.
if ($game_player.direction==DIRECTION_UP && (!$PokemonTemp.speechbubble_alwaysDown) || $PokemonTemp.speechbubble_alwaysUp)# Player facing up, message window top.
if $PokemonTemp.speechbubble_bubble == 2 && $game_map.events[$PokemonTemp.speechbubble_talking] != nil # Message window set to floating bubble.
if ($game_player.direction == DIRECTION_UP && (!$PokemonTemp.speechbubble_alwaysDown) || $PokemonTemp.speechbubble_alwaysUp) # Player facing up, message window top.
$PokemonTemp.speechbubble_vp = Viewport.new(0, 104, Graphics.width, 280)
$PokemonTemp.speechbubble_vp.z = 999999
arrow = Sprite.new($PokemonTemp.speechbubble_vp)
@@ -138,77 +185,90 @@ def pbCreateMessageWindow(viewport=nil,skin=nil)
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow4")
arrow.zoom_x = 2
arrow.zoom_y = 2
if arrow.x<-230
if arrow.x < -230
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow3")
end
else # Player facing left, down, right, message window bottom.
$PokemonTemp.speechbubble_vp = Viewport.new(0, 0, Graphics.width, 280)
$PokemonTemp.speechbubble_vp.z = 999999
arrow = Sprite.new($PokemonTemp.speechbubble_vp)
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.y = $game_map.events[$PokemonTemp.speechbubble_talking].screen_y
arrow.z = 999999
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow1")
if arrow.y>=Graphics.height-120 # Change arrow direction.
$PokemonTemp.speechbubble_outofrange=true
$PokemonTemp.speechbubble_vp.rect.y+=104
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x - Graphics.width
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow4")
arrow.y = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_y - Graphics.height) - 136
if arrow.x<-250
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow3")
end
if arrow.x>=256
arrow.x-=15# = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x-Graphics.width
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow3")
end
else
$PokemonTemp.speechbubble_outofrange=false
end
arrow.zoom_x = 2
arrow.zoom_y = 2
# Player facing left, down, right, message window bottom.
$PokemonTemp.speechbubble_vp = Viewport.new(0, 0, Graphics.width, 280)
$PokemonTemp.speechbubble_vp.z = 999999
arrow = Sprite.new($PokemonTemp.speechbubble_vp)
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.y = $game_map.events[$PokemonTemp.speechbubble_talking].screen_y
arrow.z = 999999
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow1")
if arrow.y >= Graphics.height - 120 # Change arrow direction.
$PokemonTemp.speechbubble_outofrange = true
$PokemonTemp.speechbubble_vp.rect.y += 104
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x - Graphics.width
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow4")
arrow.y = ($game_map.events[$PokemonTemp.speechbubble_talking].screen_y - Graphics.height) - 136
if arrow.x < -250
arrow.x = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow3")
end
if arrow.x >= 256
arrow.x -= 15 # = $game_map.events[$PokemonTemp.speechbubble_talking].screen_x-Graphics.width
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/Arrow3")
end
else
$PokemonTemp.speechbubble_outofrange = false
end
arrow.zoom_x = 2
arrow.zoom_y = 2
end
end
arrow.bitmap=nil if $PokemonTemp.speechbubble_outofrange && arrow
# Battle bubble arrow (type 4)
if $PokemonTemp.speechbubble_bubble == 4 &&
$PokemonTemp.speechbubble_fixed_arrow
arrow = Sprite.new
arrow.bitmap = RPG::Cache.load_bitmap_path("Graphics/Pictures/ArrowBattle")
arrow.z = 100000
arrow.visible = false
end
arrow.bitmap = nil if $PokemonTemp.speechbubble_bubble == 2 && $PokemonTemp.speechbubble_outofrange && arrow
$PokemonTemp.speechbubble_arrow = arrow
msgwindow=Window_AdvancedTextPokemon.new("")
msgwindow = Window_AdvancedTextPokemon.new("")
if !viewport
msgwindow.z=99999
msgwindow.z = 99999
else
msgwindow.viewport=viewport
msgwindow.viewport = viewport
end
msgwindow.visible=true
msgwindow.letterbyletter=true
msgwindow.back_opacity=MessageConfig::WindowOpacity
pbBottomLeftLines(msgwindow,2)
$game_temp.message_window_showing=true if $game_temp
$game_message.visible=true if $game_message
skin=MessageConfig.pbGetSpeechFrame() if !skin
msgwindow.visible = true
msgwindow.letterbyletter = true
msgwindow.back_opacity = MessageConfig::WindowOpacity
pbBottomLeftLines(msgwindow, 2)
$game_temp.message_window_showing = true if $game_temp
$game_message.visible = true if $game_message
skin = MessageConfig.pbGetSpeechFrame() if !skin
msgwindow.setSkin(skin)
return msgwindow
end
def pbDisposeMessageWindow(msgwindow)
$game_temp.message_window_showing=false if $game_temp
$game_message.visible=false if $game_message
$game_temp.message_window_showing = false if $game_temp
$game_message.visible = false if $game_message
msgwindow.dispose
$PokemonTemp.speechbubble_arrow.dispose if $PokemonTemp.speechbubble_arrow
$PokemonTemp.speechbubble_vp.dispose if $PokemonTemp.speechbubble_vp
$PokemonTemp.speechbubble_bubble=nil
$PokemonTemp.speechbubble_bubble = nil
$PokemonTemp.speechbubble_arrow = nil
$PokemonTemp.speechbubble_fixed_arrow = false
end
def pbCallBubUp(status=0,value=0)
pbCallBub(status,value,false,true)
def pbCallBubUp(status = 0, value = 0)
pbCallBub(status, value, false, true)
end
def pbCallBubDown(status=0,value=0)
pbCallBub(status,value,true,false)
def pbCallBubDown(status = 0, value = 0)
pbCallBub(status, value, true, false)
end
#always_down, always_up is not ideal but used everywhere in game so too late to change
def pbCallBub(status=0, event_id=0, always_down=false, always_up=false)
# always_down, always_up is not ideal but used everywhere in game so too late to change
def pbCallBub(status = 0, event_id = 0, always_down = false, always_up = false)
begin
if status < 3
if event_id.is_a?(Integer)
@@ -226,7 +286,32 @@ def pbCallBub(status=0, event_id=0, always_down=false, always_up=false)
end
end
def setSign(type=:NORMAL)
def pbCallBubOverBattler(battler, width = 300, height = 100, offset_x = 40, offset_y = 60)
sprite = battler.battle.scene.sprites["pokemon_#{battler.index}"]
if !sprite
echoln "pbCallBubOverBattler: no sprite for index #{battler.index}"
return pbCallBubFixed(100, 70, width, height)
end
x = sprite.x + offset_x
y = sprite.y - sprite.height + offset_y
pbCallBubFixed(x.to_i, y.to_i, width, height)
$PokemonTemp.speechbubble_fixed_anchor = true
end
def pbCallBubFixed(x, y, width = 400, height = 100, arrow = false)
$PokemonTemp.speechbubble_bubble = 4
$PokemonTemp.speechbubble_fixed_x = x
$PokemonTemp.speechbubble_fixed_y = y
$PokemonTemp.speechbubble_fixed_w = width
$PokemonTemp.speechbubble_fixed_h = height
$PokemonTemp.speechbubble_fixed_anchor = false
$PokemonTemp.speechbubble_fixed_arrow = arrow
$PokemonTemp.speechbubble_alwaysDown = false
$PokemonTemp.speechbubble_alwaysUp = false
end
def setSign(type = :NORMAL)
case type
when :NORMAL
setWindowSkin("sign_normal")
@@ -234,8 +319,11 @@ def setSign(type=:NORMAL)
setWindowSkin("sign_wood")
when :WALL
setWindowSkin("sign_wall")
when :GREEN
setWindowSkin("sign_green")
end
end
def setWindowSkin(skin)
$PokemonTemp.windowSkin=skin
$PokemonTemp.windowSkin = skin
end
@@ -24,14 +24,18 @@ class PokemonTemp
@silhouetteDirection = nil
end
def createTempEvent(eventTemplateID, map_id, position = [0, 0],direction=nil, event_class = Game_Event)
def createTempEvent(eventTemplateID, map_id, position = [0, 0],direction=nil, event_class = Game_Event, event_additional_args=nil)
return unless $scene.is_a?(Scene_Map)
template_event = $MapFactory.getMap(MAP_TEMPLATE_EVENTS,false).events[eventTemplateID]
key_id = ($game_map.events.keys.max || -1) + 1
rpgEvent= template_event.event.dup
rpgEvent.id = key_id
gameEvent = event_class.new($game_map.map_id, rpgEvent, $game_map)
if event_additional_args
gameEvent = event_class.new($game_map.map_id, rpgEvent, $game_map, *event_additional_args)
else
gameEvent = event_class.new($game_map.map_id, rpgEvent, $game_map)
end
gameEvent.moveto(position[0], position[1])
gameEvent.direction = direction if direction