Merge remote-tracking branch 'origin/main' into releases

# Conflicts:
#	PBS/items.txt
This commit is contained in:
infinitefusion
2023-08-07 18:38:32 -04:00
43 changed files with 371 additions and 52 deletions

BIN
Audio/SE/puddle.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Data/Map799.rxdata Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -6,7 +6,7 @@
module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '5.0.0'
GAME_VERSION_NUMBER = "5.3.0.7"
GAME_VERSION_NUMBER = "5.3.0.8"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18

View File

@@ -111,7 +111,7 @@ class PokeRadar_UI
bitmap1 = AnimatedBitmap.new(GameData::Species.icon_filename(headPoke))
bitmap2 = AnimatedBitmap.new(GameData::Species.icon_filename(bodyPoke))
dexNum = getDexNumberForSpecies(@pokemon.species)
dexNum = getDexNumberForSpecies(pokemonId)
ensureFusionIconExists()
bitmapFileName = sprintf("Graphics/Pokemon/FusionIcons/icon%03d", dexNum)
headPokeFileName = GameData::Species.icon_filename(headPoke)

View File

@@ -81,13 +81,13 @@ Sprites pack manager
Kiwi
Sprite Managers
Howls
Kiwi
Melmcs
Milchik the Miltank
rezza
Punko
Skel'n
avianAnnihilator<s>Blaquaza
BéBoutton<s>Howls
Ignus<s>Kiwi
Maelmc<s>Milchik the Miltank
rezza<s>Skel'n
Thorns<s>TM
All of the custom fused Pokémon sprites
were made by various members of the sp
@@ -116,7 +116,7 @@ Hankiro, luckygirl88, Nalty,
OceansLugiaSpirit,Pokemon-Diamond,
rekman, Rick1234, SailorVicious,WolfPP
Tileset graphics:
Public use tileset graphics:
Alucus BoOmxBiG<s>chimcharsfireworkd
EpicDay<s>EternalTakai
Gallanty Heavy-Metal-Lover<s>Hek-el-grande
@@ -130,12 +130,12 @@ Spacemotion<s>Speedialga
ThatsSoWitty Thurpok<s>TyranitarDark
UltimoSpriter<s>WesleyFG
Music:
Public use music:
Pokeli, TailDoll666100
Kazune Sawatari, sentsinkantéun,
Nanashima, CharizardTheMaster, The Zame Jack
RPG Maker Scripts:
Public use RPG Maker scripts:
Luka S.J, shiney570, Erasus, Umbreon
FL, KleinStudio, carmaniac, Wootius,
andracass

View File

@@ -281,6 +281,7 @@ end
#
#===============================================================================
def pbWriteCup(id, rules)
return
return if !$DEBUG
trlists = (load_data("Data/trainer_lists.dat") rescue [])
list = []

View File

@@ -604,32 +604,39 @@ DebugMenuCommands.register("fillboxes", {
added = 0
box_qty = $PokemonStorage.maxPokemon(0)
completed = true
GameData::Species.each do |species_data|
sp = species_data.species
f = species_data.form
# Record each form of each species as seen and owned
if f == 0
if [:AlwaysMale, :AlwaysFemale, :Genderless].include?(species_data.gender_ratio)
g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
$Trainer.pokedex.register(sp, g, f, false)
else # Both male and female
$Trainer.pokedex.register(sp, 0, f, false)
$Trainer.pokedex.register(sp, 1, f, false)
end
$Trainer.pokedex.set_owned(sp, false)
elsif species_data.real_form_name && !species_data.real_form_name.empty?
g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
$Trainer.pokedex.register(sp, g, f, false)
end
# Add Pokémon (if form 0, i.e. one of each species)
next if f != 0
if added >= Settings::NUM_STORAGE_BOXES * box_qty
completed = false
next
end
added += 1
$PokemonStorage[(added - 1) / box_qty, (added - 1) % box_qty] = Pokemon.new(sp, 50)
for num in 1..NB_POKEMON
pokemon = getPokemon(num)
pbAddPokemonSilent(pokemon,50)
end
# GameData::Species.each do |species_data|
# break if species_data.is_fusion
# sp = species_data.species
# f = species_data.form
# # Record each form of each species as seen and owned
# if f == 0
# if [:AlwaysMale, :AlwaysFemale, :Genderless].include?(species_data.gender_ratio)
# g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
# $Trainer.pokedex.register(sp, g, f, false)
# else # Both male and female
# $Trainer.pokedex.register(sp, 0, f, false)
# $Trainer.pokedex.register(sp, 1, f, false)
# end
# $Trainer.pokedex.set_owned(sp, false)
# elsif species_data.real_form_name && !species_data.real_form_name.empty?
# g = (species_data.gender_ratio == :AlwaysFemale) ? 1 : 0
# $Trainer.pokedex.register(sp, g, f, false)
# end
# # Add Pokémon (if form 0, i.e. one of each species)
# next if f != 0
# if added >= Settings::NUM_STORAGE_BOXES * box_qty
# completed = false
# next
# end
# added += 1
# $PokemonStorage[(added - 1) / box_qty, (added - 1) % box_qty] = Pokemon.new(sp, 50)
# end
$Trainer.pokedex.refresh_accessible_dexes
pbMessage(_INTL("Storage boxes were filled with one Pokémon of each species."))
if !completed

View File

@@ -206,22 +206,14 @@ end
def getCustomSpeciesListForPokemon(dexNum,allowLegendaries=true)
excluded = allowLegendaries ? [] : listLegendaryPokemonIds()
filesList = Dir["./Graphics/CustomBattlers/*"]
customsList = getCustomSpeciesList($PokemonSystem.download_sprites == 0)
speciesList = []
maxDexNumber = (NB_POKEMON * NB_POKEMON) + NB_POKEMON
maxVal = filesList.length - 1
for i in 0..maxVal
path = filesList[i]
file = File.basename(path, ".*")
splitPoke = file.split(".")
head = splitPoke[0].to_i
body = splitPoke[1].to_i
if (head == dexNum || body == dexNum) && !(excluded.include?(head) || excluded.include?(body))
fused = (body * NB_POKEMON) + head
if fused <= maxDexNumber && fused > 0
speciesList << fused
end
for comparedPoke in customsList
next if excluded.include?(comparedPoke)
if Kernel.isPartPokemon(comparedPoke, dexNum)
speciesList << comparedPoke
end
end
if speciesList.length == 0
speciesList << dexNum

View File

@@ -72,7 +72,7 @@ end
def download_autogen_sprite(head_id, body_id)
return nil if $PokemonSystem.download_sprites != 0
url = "https://raw.githubusercontent.com/Aegide/autogen-fusion-sprites/master/Battlers/{1}/{1}.{2}.png"
url = "https://raw.githubusercontent.com/infinitefusion/autogen-fusion-sprites/master/Battlers/{1}/{1}.{2}.png"
destPath = _INTL("{1}{2}", Settings::BATTLERS_FOLDER, head_id)
sprite = download_sprite(_INTL(url, head_id, body_id), head_id, body_id, destPath)
return sprite if sprite

View File

@@ -0,0 +1,302 @@
#==============================================================================#
# Overworld Shadows #
# by Marin #
#==============================================================================#
# Info #
# #
# You'll have likely heard of KleinStudios' Overworld Shadows script; many #
# fangames use it, after all. It was not compatible with Essentials v17+ #
# though, so after getting the suggestion I thought it would be cool if I #
# could make something of my own that would work with v16, as well as v17. #
#==============================================================================#
# Features: #
# - Blacklisting events from receiving shadows #
# - Whitelisting events to always receive shadows #
# - A scaling animation when an event jumps #
#==============================================================================#
# Usage #
# #
# Shadow_Path is the path to the shadow graphic. You can change this #
# sprite, though you may need to fiddle with positioning of the sprite in #
# relation to the event after, though. That's done in "def position_shadow". #
# #
# As the name literally says, if an event's name includes any of the strings #
# in "No_Shadow_If_Event_Name_Has", it won't get a shadow, UNLESS the event's #
# name also includes any of the strings in #
# "Always_Give_Shadow_If_Event_Name_Has". This is essentially "overriding". #
# #
# Case_Sensitive is either true or false. It's used when determing if an #
# event's name includes a string in the "No_Shadow" and "Always_Give" arrays. #
# If true, it must match all strings with capitals exactly as well. #
# If false, capitals don't need to match up. #
#==============================================================================#
# Please give credit when using this. #
#==============================================================================#
SHADOW_IMG_FOLDER = "Graphics/Characters/"
SHADOW_IMG_NAME = "shadow"
# Whether or not the event names below need to match in capitals as well.
Case_Sensitive = false
No_Shadow_If_Event_Name_Has = [
# I like to use "extensions" like these. Up to you though.
".shadowless",
".noshadow",
".sl",
"Door",
"Stairs"
]
# Events that have this in their event name will always receive a shadow.
# Does take "Case_Sensitive" into account.
Always_Give_Shadow_If_Event_Name_Has = [
"Trainer", "npc"
]
# Determines whether or not an event should be given a shadow.
def pbShouldGetShadow?(event)
return true if event.is_a?(Game_Player) # The player will always have a shadow
page = pbGetActiveEventPage(event)
return false unless page
comments = page.list.select { |e| e.code == 108 || e.code == 408 }.map do |e|
e.parameters.join
end
Always_Give_Shadow_If_Event_Name_Has.each do |e|
name = event.name.clone
unless Case_Sensitive
e.downcase!
name.downcase!
end
return true if name.include?(e) || comments.any? { |c| c.include?(e) }
end
No_Shadow_If_Event_Name_Has.each do |e|
name = event.name.clone
unless Case_Sensitive
e.downcase!
name.downcase!
end
return false if name.include?(e) || comments.any? { |c| c.include?(e) }
end
return true
end
# Extending so we can access some private instance variables.
class Game_Character
attr_reader :jump_count
end
unless Spriteset_Map.respond_to?(:viewport)
class Spriteset_Map
def viewport
return @viewport1
end
def self.viewport
return $scene.spriteset.viewport rescue nil
end
end
end
# Following Pokémon compatibility
def pbToggleFollowingPokemon
return if $Trainer.party[0].hp <= 0 || $Trainer.party[0].isEgg?
if $game_switches[Following_Activated_Switch]
if $game_switches[Toggle_Following_Switch]
$game_switches[Toggle_Following_Switch] = false
$PokemonTemp.dependentEvents.remove_sprite(true)
$scene.spriteset.usersprites.select do |e|
e.is_a?(DependentEventSprites)
end.each do |des|
des.sprites.each do |e|
if e && e.shadow
e.shadow.dispose
e.shadow = nil
end
end
end
pbWait(1)
else
$game_switches[Toggle_Following_Switch] = true
$PokemonTemp.dependentEvents.refresh_sprite
$scene.spriteset.usersprites.select do |e|
e.is_a?(DependentEventSprites)
end.each do |des|
des.sprites.each do |e|
e.make_shadow if e.respond_to?(:make_shadow)
end
end
pbWait(1)
end
end
end
class DependentEventSprites
def refresh
for sprite in @sprites
sprite.dispose
end
@sprites.clear
$PokemonTemp.dependentEvents.eachEvent do |event, data|
if data[2] == @map.map_id # Check current map
spr = Sprite_Character.new(@viewport,event,true)
@sprites.push(spr)
end
end
end
end
unless defined?(pbGetActiveEventPage)
def pbGetActiveEventPage(event, mapid = nil)
mapid ||= event.map.map_id if event.respond_to?(:map)
pages = (event.is_a?(RPG::Event) ? event.pages : event.instance_eval { @event.pages })
for i in 0...pages.size
c = pages[pages.size - 1 - i].condition
ss = !(c.self_switch_valid && !$game_self_switches[[mapid,
event.id,c.self_switch_ch]])
sw1 = !(c.switch1_valid && !$game_switches[c.switch1_id])
sw2 = !(c.switch2_valid && !$game_switches[c.switch2_id])
var = true
if c.variable_valid
if !c.variable_value || !$game_variables[c.variable_id].is_a?(Numeric) ||
$game_variables[c.variable_id] < c.variable_value
var = false
end
end
if ss && sw1 && sw2 && var # All conditions are met
return pages[pages.size - 1 - i]
end
end
return nil
end
end
class Spriteset_Map
attr_accessor :usersprites
end
class Sprite_Character
attr_accessor :shadow
alias ow_shadow_init initialize
def initialize(viewport, character = nil, is_follower = false)
@viewport = viewport
@is_follower = is_follower
ow_shadow_init(@viewport, character)
return unless pbShouldGetShadow?(character)
return if @is_follower && defined?(Toggle_Following_Switch) &&
!$game_switches[Toggle_Following_Switch]
return if @is_follower && defined?(Following_Activated_Switch) &&
!$game_switches[Following_Activated_Switch]
@character = character
if @character.is_a?(Game_Event)
page = pbGetActiveEventPage(@character)
return if !page || !page.graphic || page.graphic.character_name == ""
end
make_shadow
end
def make_shadow
@shadow.dispose if @shadow
@shadow = nil
@shadow = Sprite.new(@viewport)
@shadow.bitmap = RPG::Cache.load_bitmap(SHADOW_IMG_FOLDER,SHADOW_IMG_NAME)
# Center the shadow by halving the origin points
@shadow.ox = @shadow.bitmap.width / 2.0
@shadow.oy = @shadow.bitmap.height / 2.0
# Positioning the shadow
position_shadow
end
def position_shadow
return unless @shadow
# x = @character.screen_x
# y = @character.screen_y
# if @character.jumping?
# @totaljump = @character.jump_count if !@totaljump
# case @character.jump_count
# when 1..(@totaljump / 3)
# @shadow.zoom_x += 0.1
# @shadow.zoom_y += 0.1
# when (@totaljump / 3 + 1)..(@totaljump / 3 + 2)
# @shadow.zoom_x += 0.05
# @shadow.zoom_y += 0.05
# when (@totaljump / 3 * 2 - 1)..(@totaljump / 3 * 2)
# @shadow.zoom_x -= 0.05
# @shadow.zoom_y -= 0.05
# when (@totaljump / 3 * 2 + 1)..(@totaljump)
# @shadow.zoom_x -= 0.1
# @shadow.zoom_y -= 0.1
# end
# if @character.jump_count == 1
# @shadow.zoom_x = 1.0
# @shadow.zoom_y = 1.0
# @totaljump = nil
# end
# end
@shadow.x = x
@shadow.y = y - 6
@shadow.z = self.z - 1
if @shadow
if @charbitmap.disposed? || @character.instance_eval { @erased }
@shadow.dispose
@shadow = nil
end
end
end
alias ow_shadow_visible visible=
def visible=(value)
ow_shadow_visible(value)
@shadow.visible = value if @shadow
end
alias ow_shadow_dispose dispose
def dispose
ow_shadow_dispose
@shadow.dispose if @shadow
@shadow = nil
end
alias ow_shadow_update update
def update
ow_shadow_update
position_shadow
if @character.is_a?(Game_Event)
page = pbGetActiveEventPage(@character)
if @old_page != page
@shadow.dispose if @shadow
@shadow = nil
if page && page.graphic && page.graphic.character_name != "" &&
pbShouldGetShadow?(@character)
unless @is_follower && defined?(Toggle_Following_Switch) &&
!$game_switches[Toggle_Following_Switch]
unless @is_follower && defined?(Following_Activated_Switch) &&
!$game_switches[Following_Activated_Switch]
make_shadow
end
end
end
end
end
@old_page = (@character.is_a?(Game_Event) ? pbGetActiveEventPage(@character) : nil)
bushdepth = @character.bush_depth
if @shadow
@shadow.opacity = self.opacity
@shadow.visible = (bushdepth == 0)
if !self.visible || (@is_follower || @character == $game_player) &&
($PokemonGlobal.surfing || $PokemonGlobal.diving)
@shadow.visible = false
end
end
end
end

View File

@@ -0,0 +1,17 @@
PUDDLE_ANIMATION_ID = 22
Events.onStepTakenFieldMovement += proc { |_sender, e|
event = e[0] # Get the event affected by field movement
if $scene.is_a?(Scene_Map)
event.each_occupied_tile do |x, y|
mapTerrainTag = $MapFactory.getTerrainTag(event.map.map_id, x, y, false)
if isWaterTerrain?(mapTerrainTag)
pbSEPlay("puddle", 100) if event == $game_player && !$PokemonGlobal.surfing #only play sound effect in puddle
$scene.spriteset.addUserAnimation(PUDDLE_ANIMATION_ID,event.x,event.y,true,0)
end
end
end
}
def isWaterTerrain?(tag)
return [5,6,17,7,9,16].include?(tag)
end

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B