mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Merge remote-tracking branch 'origin/main' into releases
# Conflicts: # PBS/items.txt
This commit is contained in:
BIN
Audio/SE/puddle.ogg
Normal file
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
BIN
Data/Map799.rxdata
Normal file
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -281,6 +281,7 @@ end
|
||||
#
|
||||
#===============================================================================
|
||||
def pbWriteCup(id, rules)
|
||||
return
|
||||
return if !$DEBUG
|
||||
trlists = (load_data("Data/trainer_lists.dat") rescue [])
|
||||
list = []
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
302
Data/Scripts/050_AddOns/OverworldShadows.rb
Normal file
302
Data/Scripts/050_AddOns/OverworldShadows.rb
Normal 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
|
||||
17
Data/Scripts/050_AddOns/WaterEffect.rb
Normal file
17
Data/Scripts/050_AddOns/WaterEffect.rb
Normal 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.
BIN
Graphics/Animations/Puddle.png
Normal file
BIN
Graphics/Animations/Puddle.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Graphics/Characters/shadow.png
Normal file
BIN
Graphics/Characters/shadow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 238 B |
Reference in New Issue
Block a user