Compare commits

...

82 Commits

Author SHA1 Message Date
chardub ac83e9ddcb Testing legacy code 2025-03-11 16:21:40 -04:00
chardub 3470c75b02 Removes debugging logs 2025-03-11 16:15:36 -04:00
chardub 7358d67e7e Fixes issue with possible uninitialized dyed items map when opening clothing menus 2025-03-11 14:04:42 -04:00
chardub 701ea9ab11 clothes menu crash fix 2025-03-10 13:35:04 -04:00
chardub 36851c7bb7 Hats menu navigation improvements 2025-03-10 12:59:14 -04:00
chardub 3d6e76a41e Fixes issue when putting on clothes 2025-03-09 22:34:42 -04:00
chardub bc2d48488e changes engineer, traveller and gambler npc overworld sprites 2025-03-09 21:34:19 -04:00
chardub f3ebd7e7f5 updates gambler sprite 2025-03-09 18:12:44 -04:00
chardub 6a072917b8 Fixes accidental file rename 2025-03-09 18:06:23 -04:00
chardub 0c06b7a6c9 Fixes new game crash 2025-03-09 18:04:48 -04:00
chardub 14f99f7efb Fixes issue with hats shops 2025-03-09 16:47:16 -04:00
chardub b14d9d491c Adds moar character customization options 2025-03-09 16:20:27 -04:00
chardub 071621b8dd Fixes issue with hat swapping 2025-03-09 15:38:16 -04:00
chardub dc4ec939cd Clothes and Hats selection menu now opens on current worn outfit 2025-03-09 13:45:59 -04:00
chardub a974994d15 Adds Dye Kit item 2025-03-09 13:45:31 -04:00
chardub 6b978c0ebc double hats menu UI stuff 2025-03-09 12:49:07 -04:00
chardub 8b8b348ed1 Double hats menu 2025-03-09 12:48:32 -04:00
chardub e9bdea5bad Double hats UI (except dyes) 2025-03-08 16:29:21 -05:00
chardub 6248ccd061 Fixes thief 2025-03-08 15:24:35 -05:00
chardub 60de077d01 double hats UI wip 2025-03-08 12:52:55 -05:00
chardub 20a5811ab8 Fixes Pokedex entries issues 2025-03-07 10:42:46 -05:00
chardub 32874d8a38 Adds second hat to continue screen 2025-03-07 09:49:42 -05:00
chardub d9ef1cd12e Promps users for updating spritepack files 2025-03-06 18:57:43 -05:00
chardub ccb05dc509 Fixes critical capture (based on https://github.com/kurayamiblackheart/kurayshinyrevamp/commit/70bc2480f46ec5ea81294c3c772d8792f7fcfd1f) 2025-03-06 11:55:30 -05:00
chardub 4ed504d817 Fixes minimize glitch after soft reset 2025-03-06 11:44:05 -05:00
chardub 96f60d8cb9 fixes egg moves issue with pokemon that breed with incense in the official games, updates intro screen 2025-03-06 09:42:48 -05:00
chardub 45bf331031 Clothes given by fossil npc final encounter 2025-03-03 09:38:57 -05:00
chardub 4ef0e87577 nvm 2025-03-02 21:34:37 -05:00
chardub 4f1accc017 Fixes an issue causing checks for rate limiting to be counted 2025-03-02 21:30:44 -05:00
chardub c41773d06f misty gym & learned moves stuff wip 2025-03-01 15:51:49 -05:00
chardub 5398a5aa78 Replace Dig TM with Return TM on Route 15 #101 (KamilaBorowska) 2025-03-01 15:41:41 -05:00
chardub 0d7ea25203 mahogany town gym trainers 2025-03-01 11:31:34 -05:00
chardub 98f753eb97 updates several gym leader graphics 2025-02-26 15:04:14 -05:00
chardub f1f00202c2 fixes level graphics in party screen 2025-02-24 21:29:04 -05:00
chardub c4242bb0b6 fixes level graphics 2025-02-24 21:17:07 -05:00
chardub c3b501dc28 cc data 2025-02-24 20:08:22 -05:00
chardub a6649ce82d Adds more character customization options 2025-02-24 20:06:41 -05:00
chardub 4fcc3e1516 optimized graphics 2025-02-24 16:58:14 -05:00
chardub 553d862168 Merge branch 'develop' of https://github.com/infinitefusion/infinitefusion-e18 into develop 2025-02-24 11:52:54 -05:00
infinitefusion 1dba2e41ae Merge pull request #124 from fellow-dev-simon/dna-reverser-fix
DNAReverser Removal Bug
2025-02-24 11:49:11 -05:00
infinitefusion f15fd29c39 Merge pull request #100 from KamilaBorowska/fix-aromatherapy-bug
Make Aromatherapy work when user is not statused
2025-02-24 11:44:27 -05:00
chardub c38d513a67 Replace Dig TM with Return TM on Route 15 #101 (KamilaBorowska) 2025-02-24 11:34:43 -05:00
chardub 92feb7c714 Remove league check (unused) from list of Hidden Ability maps (KamilaBorowska) 2025-02-24 11:28:46 -05:00
infinitefusion 892c2b62f6 Merge pull request #116 from homie-estate/turtwig-fix
Turtwig fix #114
2025-02-24 11:23:01 -05:00
chardub f1d21b10c6 updates readme 2025-02-24 11:01:40 -05:00
infinitefusion 687aa86e1c Merge pull request #128 from GLugia/bug-fixes
Fix for Drain vs Liquid Ooze
2025-02-24 10:57:00 -05:00
chardub 707bac5d65 adds some more character customization options 2025-02-22 23:48:37 -05:00
chardub c8f2a37d5a updates pbsà 2025-02-22 12:28:55 -05:00
chardub 5eac2dd43a changes tm80 to rock slide 2025-02-22 12:28:02 -05:00
chardub 9b5f376ed9 updates misty sprite 2025-02-22 11:50:04 -05:00
chardub 5ed090229b updates sabrina sprite & Meloetta 2025-02-21 20:56:31 -05:00
chardub f9095f2d06 hair can be one frame long 2025-02-21 20:38:56 -05:00
chardub c6f69edf9c Fixes meloetta form change 2025-02-21 20:38:23 -05:00
chardub a52af5a021 Changes Miss Melody (Meloetta) to Aria/Pirouette fusion 2025-02-21 19:49:16 -05:00
chardub 80eef3b1c4 Custom appearances for art gallery spriters 2025-02-21 12:30:56 -05:00
chardub 0f416eecaf Refactor: double hats 2025-02-20 17:10:24 -05:00
chardub d099d788f4 Refactor: double hats 2025-02-20 17:09:56 -05:00
chardub f835ff8209 Refactor: double hats 2025-02-20 17:09:48 -05:00
chardub 810154c516 fixes hair animation 2025-02-19 22:22:26 -05:00
chardub 76ecb4e2e0 Secondary Hat (WIP) 2025-02-18 23:01:49 -05:00
chardub 1c665bf636 Small map fixes 2025-02-18 19:39:42 -05:00
chardub 0f38d7933b Adds more dishes at once in SS Anne restaurant quest 2025-02-18 11:53:42 -05:00
chardub 4089c956d7 Adds way to favorite hats and clothes and item to quickly swap to them 2025-02-18 11:06:14 -05:00
chardub 133f01218b fixes reset cache option menu crash 2025-02-17 22:33:38 -05:00
chardub c5cff0dfb9 fixes rare crashes from double team, minimize, dragon rage, sonic boom
taken from:
https://github.com/kurayamiblackheart/kurayshinyrevamp/commit/720c2a46611b3f50b86cfc1f5a811694748d2480
2025-02-17 20:55:01 -05:00
chardub 1d2139df32 Get clown nose by donating to clowns 2025-02-17 20:24:35 -05:00
chardub 8352043c4c fixes crash on fusion screen 2025-02-17 19:41:49 -05:00
chardub 67d32e7c18 Fixes music in mt. moon square 2025-02-17 18:23:02 -05:00
chardub 1ddb9ba24a Mahogany gym trainers now notice player when standing next to them + adds referee that sends back the puck 2025-02-17 15:01:14 -05:00
chardub 4fa7292bdd Adds new hats & easter egg pokeballs 2025-02-17 11:06:32 -05:00
chardub cb39bac568 Adds option for toggling custom eggs 2025-02-16 16:16:39 -05:00
chardub 541c98ba6b Adds option for toggling custom eggs 2025-02-16 16:16:32 -05:00
chardub 28a982ce15 Fixes F12 soft reset 2025-02-15 14:19:00 -05:00
chardub fdcfbb5bb4 Fusion cries play both the head and body pokemon cries 2025-02-15 12:23:44 -05:00
chardub 05b1af28e0 Capitalizes suffix in Mr. Mime fusions name 2025-02-13 21:43:51 -05:00
chardub 0f58800fd1 adds new team flags 2025-02-13 20:43:46 -05:00
chardub f251cf37ab Fixes goldenrod map transitions
Fixes message in dresser in player room
Fixes tiles in kindle road underwater
Fixes black border on route 43
2025-02-12 09:48:21 -05:00
chardub d23e2ff98a Fixes super Gourgeist attack stat 2025-02-10 10:42:58 -05:00
GLugia 256a045607 Fix for Drain vs Liquid Ooze
When a draining move KOs a Pokemon with Liquid Ooze, the ability would not activate. This fixes that.
2024-12-25 12:11:05 -05:00
Simon Fedick 7bb75aaf1d Fixed DNAReverser deletion bug 2024-08-20 19:20:34 +02:00
Edward Perpich 2bf0b6d104 fix turtwigs name in the split names 2024-03-01 17:24:27 -05:00
Konrad Borowski bd11977c80 Make Aromatherapy work when user is not statused 2023-07-23 09:19:00 +02:00
7652 changed files with 544537 additions and 10332 deletions
Vendored
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,7 @@
Graphics/CustomBattlers/local_sprites/*
Graphics/Pokemon/FusionIcons/*
Graphics/CustomBattlers/spritesheets
Graphics/CustomBattlers/*
Data/sprites/*
Data/VERSION
infinitefusion.sh
@@ -9,6 +10,5 @@ Data/sprites
Data/sprites/updated_spritesheets_cache
Data/sprites/sprites_rate_limit.log
.gitignore
PBS
Game.rxproj
.DS_Store
+3 -3
View File
@@ -45,7 +45,7 @@ Special thanks to Aegide and Reizod for helping to rip the sprites from the webs
and to the owners of the respective fusion websites for accepting to share
their sprites.
Intro cinamatic
Intro cinematic
#####################
Kiwikelly
@@ -116,7 +116,7 @@ with their respective authors' consent
SailorVicious (Prof. Elm OW sprite) https://www.deviantart.com/sailorvicious
OceansLugiaSpirit (Koga OW sprite) http://oceanslugiaspirit.deviantart.com/
Wolfang62: https://www.deviantart.com/wolfang62/art/Wimpod-Sprite-Overworld-836704744
zender1752 (Sabrina OW sprite)
Battle sprites:
Custom graphics:
Kiwikelly, UnworthyPie
@@ -124,7 +124,7 @@ with their respective authors' consent
Free use graphics:
luckygirl88 (Misty VS sprite) http://luckygirl88.deviantart.com/art/Pokemon-BW-Misty-Sprite-Sheet-268364830
Lorelei VS sprite by Nalty http://nalty.deviantart.com/art/Lorelei-VS-Sprite-177184960
x-5-4-5-2 (Sabrina sprite) https://www.deviantart.com/x-5-4-5-2/art/Game-Sabrina-204548703
### Custom tileset graphics ###
Kiwikelly
BIN
View 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.
BIN
View 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.
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.
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.
+7 -6
View File
@@ -5,9 +5,9 @@
#==============================================================================#
module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '6.4.6'
GAME_VERSION_NUMBER = "6.4.7"
LATEST_GAME_RELEASE = "6.4"
GAME_VERSION = '6.5'
GAME_VERSION_NUMBER = "6.5.0"
LATEST_GAME_RELEASE = "6.5"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18
@@ -107,8 +107,8 @@ module Settings
BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/"
CUSTOM_FUSIONS_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_custom/"
BASE_POKEMON_SPRITESHEET_TRUE_SIZE_URL = "https://infinitefusion.net/spritesheets_truesize/spritesheets_base/"
CUSTOM_FUSIONS_SPRITESHEET_TRUE_SIZE_URL = "https://infinitefusion.net/spritesheets_truesize/spritesheets_custom/"
BASE_POKEMON_SPRITESHEET_TRUE_SIZE_URL = ""
CUSTOM_FUSIONS_SPRITESHEET_TRUE_SIZE_URL = ""
RIVAL_STARTER_PLACEHOLDER_SPECIES = :MEW #(MEW)
VAR_1_PLACEHOLDER_SPECIES = :DIALGA
@@ -575,7 +575,8 @@ module Settings
# Available menu frames. These are graphic files in "Graphics/Windowskins/".
MENU_WINDOWSKINS = [
"choice 1",
"default_transparent",
"default_opaque",
"choice 2",
"choice 3",
"choice 4",
@@ -3,7 +3,7 @@ class Sprite_Wearable < RPG::Sprite
attr_accessor :action
attr_accessor :sprite
def initialize(player_sprite, filename, action, viewport)
def initialize(player_sprite, filename, action, viewport, relative_z=0)
@player_sprite = player_sprite
@viewport = viewport
@sprite = Sprite.new(@viewport)
@@ -15,7 +15,7 @@ class Sprite_Wearable < RPG::Sprite
@frameWidth = 80 #@sprite.width
@frameHeight = 80 #@sprite.height / 4
@sprite.z = 0
@relative_z=0 #relative to player
@relative_z=relative_z #relative to player
echoln(_INTL("init had at z = {1}, player sprite at {2}",@sprite.z,@player_sprite.z))
#Unused position offset
@@ -166,54 +166,5 @@ class Sprite_Wearable < RPG::Sprite
@disposed
end
# def getCurrentSpriteOffset()
# direction = @character.direction
# current_frame = @character.pattern
# case @character_name
# when "run"
# if direction == DIRECTION_DOWN
# return Outfit_Offsets::RUN_OFFSETS_DOWN[current_frame]
# elsif direction == DIRECTION_LEFT
# return Outfit_Offsets::RUN_OFFSETS_LEFT[current_frame]
# elsif direction == DIRECTION_RIGHT
# return Outfit_Offsets::RUN_OFFSETS_RIGHT[current_frame]
# elsif direction == DIRECTION_UP
# return Outfit_Offsets::RUN_OFFSETS_UP[current_frame]
# end
# when "surf"
# #when "dive"
# if direction == DIRECTION_DOWN
# return Outfit_Offsets::SURF_OFFSETS_DOWN[current_frame]
# elsif direction == DIRECTION_LEFT
# return Outfit_Offsets::SURF_OFFSETS_LEFT[current_frame]
# elsif direction == DIRECTION_RIGHT
# return Outfit_Offsets::SURF_OFFSETS_RIGHT[current_frame]
# elsif direction == DIRECTION_UP
# return Outfit_Offsets::SURF_OFFSETS_UP[current_frame]
# end
# when "dive"
# if direction == DIRECTION_DOWN
# return Outfit_Offsets::DIVE_OFFSETS_DOWN[current_frame]
# elsif direction == DIRECTION_LEFT
# return Outfit_Offsets::DIVE_OFFSETS_LEFT[current_frame]
# elsif direction == DIRECTION_RIGHT
# return Outfit_Offsets::DIVE_OFFSETS_RIGHT[current_frame]
# elsif direction == DIRECTION_UP
# return Outfit_Offsets::DIVE_OFFSETS_UP[current_frame]
# end
# when "bike"
# if direction == DIRECTION_DOWN
# return Outfit_Offsets::BIKE_OFFSETS_DOWN[current_frame]
# elsif direction == DIRECTION_LEFT
# return Outfit_Offsets::BIKE_OFFSETS_LEFT[current_frame]
# elsif direction == DIRECTION_RIGHT
# return Outfit_Offsets::BIKE_OFFSETS_RIGHT[current_frame]
# elsif direction == DIRECTION_UP
# return Outfit_Offsets::BIKE_OFFSETS_UP[current_frame]
# end
# end
# return Outfit_Offsets::BASE_OFFSET[current_frame]
# end
end
@@ -5,4 +5,81 @@ class Sprite_Hair < Sprite_Wearable
#@sprite.z = @player_sprite.z + 1
end
def animate(action, frame = nil)
@action = action
current_frame = @player_sprite.character.pattern if !frame
direction = @player_sprite.character.direction
crop_spritesheet(direction, current_frame, action)
adjust_layer()
set_sprite_position(@action, direction, current_frame)
end
def crop_spritesheet(direction, current_frame, action)
sprite_x = ((current_frame)) * @frameWidth
# Don't animate surf
sprite_x = 0 if action == "surf"
sprite_y = ((direction - 2) / 2) * @frameHeight
@sprite.src_rect.set(sprite_x, sprite_y, @frameWidth, @frameHeight)
end
def set_sprite_position(action, direction, current_frame)
@sprite.x = @player_sprite.x - @player_sprite.ox
@sprite.y = @player_sprite.y - @player_sprite.oy
case action
when "run"
if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_DOWN, current_frame)
elsif direction == DIRECTION_LEFT
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_LEFT, current_frame)
elsif direction == DIRECTION_RIGHT
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_RIGHT, current_frame)
elsif direction == DIRECTION_UP
apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_UP, current_frame)
end
when "surf"
if direction == DIRECTION_DOWN # Always animate as if on the first frame
apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_DOWN, 0)
elsif direction == DIRECTION_LEFT
apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_LEFT, 0)
elsif direction == DIRECTION_RIGHT
apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_RIGHT, 0)
elsif direction == DIRECTION_UP
apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_UP, 0)
end
when "dive"
if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_DOWN, current_frame)
elsif direction == DIRECTION_LEFT
apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_LEFT, current_frame)
elsif direction == DIRECTION_RIGHT
apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_RIGHT, current_frame)
elsif direction == DIRECTION_UP
apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_UP, current_frame)
end
when "bike"
if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_DOWN, current_frame)
elsif direction == DIRECTION_LEFT
apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_LEFT, current_frame)
elsif direction == DIRECTION_RIGHT
apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_RIGHT, current_frame)
elsif direction == DIRECTION_UP
apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_UP, current_frame)
end
when "fish"
if direction == DIRECTION_DOWN
apply_sprite_offset(Outfit_Offsets::FISH_OFFSETS_DOWN, current_frame)
elsif direction == DIRECTION_LEFT
apply_sprite_offset(Outfit_Offsets::FISH_OFFSETS_LEFT, current_frame)
elsif direction == DIRECTION_RIGHT
apply_sprite_offset(Outfit_Offsets::FISH_OFFSETS_RIGHT, current_frame)
elsif direction == DIRECTION_UP
apply_sprite_offset(Outfit_Offsets::FISH_OFFSETS_UP, current_frame)
end
end
adjustPositionForScreenScrolling()
end
end
+3 -187
View File
@@ -1,192 +1,8 @@
class Sprite_Hat < Sprite_Wearable
def initialize(player_sprite, filename, action, viewport)
def initialize(player_sprite, filename, action, viewport, relative_z=2)
super
@relative_z = 2
@relative_z = relative_z
#@sprite.z = @player_sprite.z + 2
end
# def set_sprite_position(action, direction, current_frame)
# @sprite.x = @player_sprite.x - @player_sprite.ox
# @sprite.y = @player_sprite.y - @player_sprite.oy
# case action
# when "run"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_DOWN, current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_LEFT, current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_RIGHT, current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_UP, current_frame)
# end
# when "surf"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_DOWN,current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_LEFT,current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_RIGHT,current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_UP,current_frame)
# end
# when "dive"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_DOWN,current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_LEFT,current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_RIGHT,current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_UP,current_frame)
# end
# when "bike"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_DOWN,current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_LEFT,current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_RIGHT,current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_UP,current_frame)
# end
# else
# @sprite.x = @player_sprite.x - @player_sprite.ox
# @sprite.y = @player_sprite.y - @player_sprite.oy
# end
# @sprite.y -= 2 if current_frame % 2 == 1
# end
end
# class Sprite_Hat < RPG::Sprite
# attr_accessor :filename
# attr_accessor :action
# attr_accessor :hat_sprite
#
# def initialize(player_sprite, filename, action, viewport)
# @player_sprite = player_sprite
# @viewport = viewport
# @hat_sprite = Sprite.new(@viewport)
# @hatBitmap = AnimatedBitmap.new(filename) if pbResolveBitmap(filename)
# @filename = filename
# @hat_sprite.bitmap = @hatBitmap.bitmap if @hatBitmap
# @action = action
# @color = 0
# @frameWidth = 80 #@hat_sprite.width
# @frameHeight = 80 #@hat_sprite.height / 4
# @hat_sprite.z = @player_sprite.z + 2
# echoln(_INTL("init had at z = {1}, player sprite at {2}",@hat_sprite.z,@player_sprite.z))
#
# #Unused position offset
# # @x_pos_base_offset = 0
# # @y_pos_base_offset = 0
# end
#
# def apply_sprite_offset(offsets_array, current_frame)
# @hat_sprite.x += offsets_array[current_frame][0]
# @hat_sprite.y += offsets_array[current_frame][1]
# end
#
# def set_sprite_position(action, direction, current_frame)
# @hat_sprite.x = @player_sprite.x - @player_sprite.ox
# @hat_sprite.y = @player_sprite.y - @player_sprite.oy
# case action
# when "run"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_DOWN, current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_LEFT, current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_RIGHT, current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset(Outfit_Offsets::RUN_OFFSETS_UP, current_frame)
# end
# when "surf"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::SURF_OFFSETS_DOWN,current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_LEFT,current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_RIGHT,current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset( Outfit_Offsets::SURF_OFFSETS_UP,current_frame)
# end
# when "dive"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::DIVE_OFFSETS_DOWN,current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_LEFT,current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_RIGHT,current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset( Outfit_Offsets::DIVE_OFFSETS_UP,current_frame)
# end
# when "bike"
# if direction == DIRECTION_DOWN
# apply_sprite_offset(Outfit_Offsets::BIKE_OFFSETS_DOWN,current_frame)
# elsif direction == DIRECTION_LEFT
# apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_LEFT,current_frame)
# elsif direction == DIRECTION_RIGHT
# apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_RIGHT,current_frame)
# elsif direction == DIRECTION_UP
# apply_sprite_offset( Outfit_Offsets::BIKE_OFFSETS_UP,current_frame)
# end
# else
# @hat_sprite.x = @player_sprite.x - @player_sprite.ox
# @hat_sprite.y = @player_sprite.y - @player_sprite.oy
# end
# @hat_sprite.y -= 2 if current_frame % 2 == 1
# end
#
# def animate(action)
# @action = action
# current_frame = @player_sprite.character.pattern
# direction = @player_sprite.character.direction
# crop_spritesheet(direction)
# set_sprite_position(@action, direction, current_frame)
# adjust_hat_layer()
# end
#
# def update(action, hatFilename,color)
# @hat_sprite.opacity = @player_sprite.opacity if @hatBitmap
# if hatFilename != @filename || color != @color
# if pbResolveBitmap(hatFilename)
# #echoln pbResolveBitmap(hatFilename)
# @hatBitmap = AnimatedBitmap.new(hatFilename,color)
# @hat_sprite.bitmap = @hatBitmap.bitmap
# else
# @hatBitmap = nil
# @hat_sprite.bitmap = nil
# end
# @color =color
# @filename = hatFilename
# end
# animate(action)
# end
#
# def adjust_hat_layer()
# if @hat_sprite.z != @player_sprite.z
# @hat_sprite.z = @player_sprite.z
# end
# end
#
# def crop_spritesheet(direction)
# sprite_x = 0
# sprite_y = ((direction - 2) / 2) * @frameHeight
# @hat_sprite.src_rect.set(sprite_x, sprite_y, @frameWidth, @frameHeight)
# end
#
# def dispose
# return if @disposed
# @hat_sprite.dispose if @hat_sprite
# @hat_sprite = nil
# @disposed = true
# end
#
# def disposed?
# @disposed
# end
#
# end
end
+16 -3
View File
@@ -3,17 +3,20 @@ class Sprite_Player < Sprite_Character
super
@viewport = viewport
@outfit_bitmap = nil
@hat_bitmap = nil
# @hat_bitmap = nil
# @hat2_bitmap = nil
hatFilename = ""
hairFilename = ""
@hat = Sprite_Hat.new(self, hatFilename, @character_name, @viewport,3)
@hat2 = Sprite_Hat.new(self, hatFilename, @character_name, @viewport,2)
@hair = Sprite_Hair.new(self, hairFilename, @character_name, @viewport)
@hat = Sprite_Hat.new(self, hatFilename, @character_name, @viewport)
@previous_skinTone = 0
@current_bitmap = nil
@previous_action =nil
echoln "init playa"
getClothedPlayerSprite(true)
end
@@ -30,12 +33,14 @@ class Sprite_Player < Sprite_Character
def applyDayNightTone
super
pbDayNightTint(@hat.sprite) if @hat && @hat.sprite.bitmap
pbDayNightTint(@hat2.sprite) if @hat2 && @hat2.sprite.bitmap
pbDayNightTint(@hair.sprite) if @hair && @hair.sprite.bitmap
end
def opacity=(value)
super
@hat.sprite.opacity= value if @hat && @hat.sprite.bitmap
@hat2.sprite.opacity= value if @hat2 && @hat2.sprite.bitmap
@hair.sprite.opacity= value if @hair && @hair.sprite.bitmap
end
@@ -46,6 +51,7 @@ class Sprite_Player < Sprite_Character
@previous_action = @character_name
@hair.animate(@character_name) if @hair
@hat.animate(@character_name) if @hat
@hat2.animate(@character_name) if @hat2
return @current_bitmap
end
@@ -58,22 +64,28 @@ class Sprite_Player < Sprite_Character
outfitFilename = getOverworldOutfitFilename(Settings::PLAYER_TEMP_OUTFIT_FALLBACK) if !pbResolveBitmap(outfitFilename)
hairFilename = getOverworldHairFilename($Trainer.hair)
hatFilename = getOverworldHatFilename($Trainer.hat)
hat2Filename = getOverworldHatFilename($Trainer.hat2)
hair_color_shift = $Trainer.hair_color
hat_color_shift = $Trainer.hat_color
hat2_color_shift = $Trainer.hat2_color
clothes_color_shift = $Trainer.clothes_color
hair_color_shift = 0 if !hair_color_shift
hat_color_shift = 0 if !hat_color_shift
hat2_color_shift = 0 if !hat2_color_shift
clothes_color_shift = 0 if !clothes_color_shift
@hair.update(@character_name, hairFilename, hair_color_shift) if @hair
@hat.update(@character_name, hatFilename, hat_color_shift) if @hat
@hat2.update(@character_name, hat2Filename, hat2_color_shift) if @hat2
if !pbResolveBitmap(outfitFilename)
raise "No temp clothes graphics available"
end
outfitBitmap = AnimatedBitmap.new(outfitFilename, clothes_color_shift) if pbResolveBitmap(outfitFilename) #pbLoadOutfitBitmap(outfitFilename) if pbResolveBitmap(outfitFilename)
outfitBitmap = AnimatedBitmap.new(outfitFilename, clothes_color_shift) if pbResolveBitmap(outfitFilename)
baseBitmap.blt(0, 0, outfitBitmap.bitmap, outfitBitmap.bitmap.rect) if outfitBitmap
@previous_action = @character_name
return baseBitmap
@@ -89,6 +101,7 @@ class Sprite_Player < Sprite_Character
def dispose
super
@hat.dispose if @hat
@hat2.dispose if @hat2
@hair.dispose if @hair
end
@@ -207,7 +207,7 @@ def pbPositionFaceWindow(facewindow,msgwindow)
end
end
def pbPositionNearMsgWindow(cmdwindow,msgwindow,side)
def pbPositionNearMsgWindow(cmdwindow,msgwindow,side, x_offset=nil,y_offset=nil)
return if !cmdwindow
if msgwindow
height=[cmdwindow.height,Graphics.height-msgwindow.height].min
@@ -234,6 +234,10 @@ def pbPositionNearMsgWindow(cmdwindow,msgwindow,side)
cmdwindow.x=0
cmdwindow.y=0
end
cmdwindow.x+= x_offset if x_offset
cmdwindow.y+= y_offset if y_offset
end
# internal function
@@ -909,7 +909,7 @@ def pbMessageChooseNumber(message, params, &block)
end
def pbShowCommands(msgwindow, commands = nil, cmdIfCancel = 0, defaultCmd = 0)
def pbShowCommands(msgwindow, commands = nil, cmdIfCancel = 0, defaultCmd = 0, x_offset=nil, y_offset=nil)
return 0 if !commands
$PokemonTemp.speechbubble_arrow.visible =false if $PokemonTemp.speechbubble_arrow && !$PokemonTemp.speechbubble_arrow.disposed?
if defaultCmd == 0 && ($game_variables && $game_variables[VAR_COMMAND_WINDOW_INDEX] != 0)
@@ -919,7 +919,7 @@ def pbShowCommands(msgwindow, commands = nil, cmdIfCancel = 0, defaultCmd = 0)
cmdwindow.z = 99999
cmdwindow.visible = true
cmdwindow.resizeToFit(cmdwindow.commands)
pbPositionNearMsgWindow(cmdwindow, msgwindow, :right)
pbPositionNearMsgWindow(cmdwindow, msgwindow, :right, x_offset, y_offset)
cmdwindow.index = defaultCmd
command = 0
loop do
@@ -218,6 +218,9 @@ module GameData
return @id_number > Settings::NB_POKEMON
end
def is_triple_fusion
return @id_number >= Settings::ZAPMOLCUNO_NB
end
def get_body_species
return @species
end
@@ -63,6 +63,7 @@ module GameData
# return (ret) ? ret : pbResolveBitmap("Graphics/Pokemon/Eggs/000")
# end
def self.egg_sprite_filename(species, form)
return "Graphics/Battlers/Eggs/000" if $PokemonSystem.use_custom_eggs
dexNum = getDexNumberForSpecies(species)
bitmapFileName = sprintf("Graphics/Battlers/Eggs/%03d", dexNum) rescue nil
if !pbResolveBitmap(bitmapFileName)
@@ -208,15 +209,9 @@ module GameData
def self.check_cry_file(species, form)
species_data = self.get_species_form(species, form)
return nil if species_data.nil?
return "Cries/BIRDBOSS_2" if $game_switches[SWITCH_TRIPLE_BOSS_BATTLE] && !$game_switches[SWITCH_SILVERBOSS_BATTLE]
if species_data.is_fusion
species_data = GameData::Species.get(getHeadID(species_data))
end
# if form > 0
# ret = sprintf("Cries/%s_%d", species_data.species, form)
# return ret if pbResolveAudioSE(ret)
# end
ret = sprintf("Cries/%s", species_data.species)
return (pbResolveAudioSE(ret)) ? ret : nil
end
@@ -230,6 +225,14 @@ module GameData
end
def self.play_cry_from_species(species, form = 0, volume = 90, pitch = 100)
dex_num = getDexNumberForSpecies(species)
return if !dex_num
return play_triple_fusion_cry(species, volume, pitch) if dex_num > Settings::ZAPMOLCUNO_NB
if dex_num > NB_POKEMON
body_number = getBodyID(dex_num)
head_number = getHeadID(dex_num,body_number)
return play_fusion_cry(GameData::Species.get(head_number).species,GameData::Species.get(body_number).species, volume, pitch)
end
filename = self.cry_filename(species, form)
return if !filename
pbSEPlay(RPG::AudioFile.new(filename, volume, pitch)) rescue nil
@@ -237,12 +240,35 @@ module GameData
def self.play_cry_from_pokemon(pkmn, volume = 90, pitch = nil)
return if !pkmn || pkmn.egg?
species_data = pkmn.species_data
return play_triple_fusion_cry(pkmn.species, volume, pitch) if species_data.is_triple_fusion
if pkmn.species_data.is_fusion
return play_fusion_cry(species_data.get_head_species,species_data.get_body_species, volume, pitch)
end
filename = self.cry_filename_from_pokemon(pkmn)
return if !filename
pitch ||= 75 + (pkmn.hp * 25 / pkmn.totalhp)
pbSEPlay(RPG::AudioFile.new(filename, volume, pitch)) rescue nil
end
def self.play_triple_fusion_cry(species_id, volume, pitch)
fusion_components = get_triple_fusion_components(species_id)
echoln fusion_components
echoln species_id
for id in fusion_components
cry_filename = self.check_cry_file(id,nil)
pbSEPlay(cry_filename,volume-10) rescue nil
end
end
def self.play_fusion_cry(head_id,body_id, volume = 90, pitch = 100)
head_cry_filename = self.check_cry_file(head_id,nil)
body_cry_filename = self.check_cry_file(body_id,nil)
pbSEPlay(body_cry_filename,volume-10) rescue nil
pbSEPlay(head_cry_filename,volume) rescue nil
end
def self.play_cry(pkmn, volume = 90, pitch = nil)
if pkmn.is_a?(Pokemon)
self.play_cry_from_pokemon(pkmn, volume, pitch)
@@ -30,7 +30,7 @@ class PokeBattle_Battler
end
def pbRecoverHPFromDrain(amt,target,msg=nil)
if target.hasActiveAbility?(:LIQUIDOOZE)
if target.hasActiveAbility?(:LIQUIDOOZE, true)
@battle.pbShowAbilitySplash(target)
pbReduceHP(amt)
@battle.pbDisplay(_INTL("{1} sucked up the liquid ooze!",pbThis))
@@ -624,27 +624,8 @@ class PokeBattle_Battler
#For meloetta form change
def changeFormSpecies(oldForm, newForm,animation = "UltraBurst2")
@pokemon.changeFormSpecies(oldForm,newForm)
playChangeFormAnimation(animation)
# is_already_old_form = @pokemon.isFusionOf(oldForm) #A 466
# is_already_new_form = @pokemon.isFusionOf(newForm) #P
#
#
# #reverse the fusion if it's a meloA and meloP fusion
# # There's probably a smarter way to do this but laziness lol
# if is_already_old_form && is_already_new_form
# if @pokemon.species_data.get_body_species() == oldForm
# changeSpeciesSpecific(@pokemon,getFusedPokemonIdFromSymbols(newForm,oldForm))
# else
# changeSpeciesSpecific(@pokemon,getFusedPokemonIdFromSymbols(oldForm,newForm))
# end
# playChangeFormAnimation(animation)
# else
# changeSpecies(@pokemon, oldForm, newForm, animation) if is_already_old_form
# changeSpecies(@pokemon, newForm, oldForm, animation) if is_already_new_form
# end
end
@@ -49,7 +49,9 @@ class PokeBattle_Move_003 < PokeBattle_SleepMove
#reverse the fusion if it's a meloA and meloP fusion
# There's probably a smarter way to do this but laziness lol
if is_meloetta_A && is_meloetta_P
if user.pokemon.species_data.get_body_species() == :MELOETTA_A
body_id = user.pokemon.species_data.get_body_species()
body_species = GameData::Species.get(body_id)
if body_species == :MELOETTA_A
changeSpeciesSpecific(user.pokemon,:B467H466)
else
changeSpeciesSpecific(user.pokemon,:B466H467)
@@ -394,12 +396,10 @@ class PokeBattle_Move_019 < PokeBattle_Move
failed = false
break
end
if !failed
@battle.pbParty(user.index).each do |pkmn|
next if !pkmn || !pkmn.able? || pkmn.status == :NONE
failed = false
break
end
@battle.pbParty(user.index).each do |pkmn|
next if !pkmn || !pkmn.able? || pkmn.status == :NONE
failed = false
break
end
if failed
@battle.pbDisplay(_INTL("But it failed!"))
@@ -3226,10 +3226,8 @@ class PokeBattle_Move_0F1 < PokeBattle_Move
# removed target.item == target.initialItem, this may cause bugs.
if @battle.wildBattle? && target.opposes? && !user.initialItem
user.setInitialItem(target.item)
target.pbRemoveItem
else
target.pbRemoveItem(false)
end
target.pbRemoveItem(false)
@battle.pbDisplay(_INTL("{1} stole {2}'s {3}!",user.pbThis,target.pbThis(true),itemName))
user.pbHeldItemTriggerCheck
end
@@ -247,27 +247,10 @@ module PokeBattle_BattleCommon
echoln isOnLastBall
# Critical capture check
if isOnLastBall
c = 0
numOwned = $Trainer.pokedex.owned_count
if numOwned > 600;
c = x * 5 / 12
elsif numOwned > 450;
c = x * 4 / 12
elsif numOwned > 300;
c = x * 3 / 12
else
c = x * 2 / 12
end
# elsif numOwned > 150;
# c = x * 2 / 12
# elsif numOwned > 30;
# c = x / 12
# end
# Calculate the number of shakes
c = x * 6 / 12
if c > 0 && pbRandom(256) < c
@criticalCapture = true
return 4 if pbRandom(65536) < y
return 0
return 4
end
end
# Calculate the number of shakes
@@ -261,7 +261,9 @@ class PokeBattle_Battle
return if pkmn.moves.any? { |m| m && m.id == newMove }
# Pokémon has space for the new move; just learn it
if pkmn.moves.length < Pokemon::MAX_MOVES
pkmn.moves.push(Pokemon::Move.new(newMove))
move = Pokemon::Move.new(newMove)
pkmn.moves.push(move)
pkmn.add_learned_move(move)
pbDisplay(_INTL("{1} learned {2}!", pkmnName, moveName)) { pbSEPlay("Pkmn move learnt") }
if battler
battler.moves.push(PokeBattle_Move.from_pokemon_move(self, pkmn.moves.last))
@@ -279,7 +281,9 @@ class PokeBattle_Battle
if forgetMove >= 0
oldMoveName = pkmn.moves[forgetMove].name
pkmn.moves[forgetMove] = Pokemon::Move.new(newMove) # Replaces current/total PP
pkmn.add_learned_move(newMove)
battler.moves[forgetMove] = PokeBattle_Move.from_pokemon_move(self, pkmn.moves[forgetMove]) if battler
pbDisplayPaused(_INTL("1, 2, and... ... ... Ta-da!"))
pbDisplayPaused(_INTL("{1} forgot how to use {2}. And...", pkmnName, oldMoveName))
pbDisplay(_INTL("{1} learned {2}!", pkmnName, moveName)) { pbSEPlay("Pkmn move learnt") }
@@ -74,7 +74,7 @@ class PokeBattle_Scene
# Opposing trainer(s) sprites
if @battle.trainerBattle?
@battle.opponent.each_with_index do |p, i|
pbCreateTrainerFrontSprite(i, p.trainer_type, @battle.opponent.length, p.sprite_override)
pbCreateTrainerFrontSprite(i, p.trainer_type, @battle.opponent.length, p.sprite_override, p.custom_appearance)
end
end
# Data boxes and Pokémon sprites
@@ -207,7 +207,7 @@ class PokeBattle_Scene
# trainer.oy = trainer.bitmap.height
end
def pbCreateTrainerFrontSprite(idxTrainer, trainerType, numTrainers = 1, sprite_override = nil)
def pbCreateTrainerFrontSprite(idxTrainer, trainerType, numTrainers = 1, sprite_override = nil, custom_appearance=nil)
trainerFile = GameData::TrainerType.front_sprite_filename(trainerType)
trainerFile = sprite_override if sprite_override
@@ -215,7 +215,7 @@ class PokeBattle_Scene
trainer = pbAddSprite("trainer_#{idxTrainer + 1}", spriteX, spriteY, trainerFile, @viewport)
spriteOverrideBitmap = setTrainerSpriteOverrides(trainerType)
trainer.bitmap = spriteOverrideBitmap if spriteOverrideBitmap
trainer.bitmap = generate_front_trainer_sprite_bitmap_from_appearance(custom_appearance).bitmap if custom_appearance
return if !trainer.bitmap
# Alter position of sprite
trainer.z = 7 + idxTrainer
@@ -100,8 +100,7 @@ end
class PokeBattle_Move_022 # Double Team
alias __clauses__pbMoveFailed? pbMoveFailed?
alias __clauses__pbMoveFailed? pbMoveFailed? unless method_defined?(:__clauses__pbMoveFailed?)
def pbMoveFailed?(user,targets)
if !damagingMove? && @battle.rules["evasionclause"]
@battle.pbDisplay(_INTL("But it failed!"))
@@ -114,8 +113,7 @@ end
class PokeBattle_Move_034 # Minimize
alias __clauses__pbMoveFailed? pbMoveFailed?
alias __clauses__pbMoveFailed? pbMoveFailed? unless method_defined?(:__clauses__pbMoveFailed?)
def pbMoveFailed?(user,targets)
if !damagingMove? && @battle.rules["evasionclause"]
@battle.pbDisplay(_INTL("But it failed!"))
@@ -142,7 +140,7 @@ end
class PokeBattle_Move_06A # Sonic Boom
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget? unless method_defined?(:__clauses__pbFailsAgainstTarget?)
def pbFailsAgainstTarget?(user,target)
if @battle.rules["sonicboomclause"]
@@ -156,7 +154,7 @@ end
class PokeBattle_Move_06B # Dragon Rage
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget? unless method_defined?(:__clauses__pbFailsAgainstTarget?)
def pbFailsAgainstTarget?(user,target)
if @battle.rules["sonicboomclause"]
+16 -2
View File
@@ -411,10 +411,23 @@ def pbFacingTileRegular(direction = nil, event = nil)
return [$game_map.map_id, x + x_offset, y + y_offset]
end
# Returns whether event is in line with the player, is facing the player and is
def pbEventNextToPlayer?(event,player)
return false if !event || !player
return false if $PokemonGlobal.sliding
if event.x == player.x
return event.y == player.y+1 || event.y == player.y-1
elsif event.y == player.y
return event.x == player.x-1 || event.x == player.x+1
end
return false
end
# Returns whether event is in line with the player, is
# within distance tiles of the player.
def pbEventFacesPlayer?(event, player, distance)
return false if !event || !player || distance <= 0
return pbEventNextToPlayer?(event,player) if distance == 0
return false if !event || !player || distance < 0
x_min = x_max = y_min = y_max = -1
case event.direction
when 2 # Down
@@ -473,6 +486,7 @@ def pbFacingEachOther(event1, event2)
return pbEventFacesPlayer?(event1, event2, 1) && pbEventFacesPlayer?(event2, event1, 1)
end
#===============================================================================
# Audio playing
#===============================================================================
@@ -567,7 +567,7 @@ end
#party: array of pokemon team
# [[:SPECIES,level], ... ]
#
def customTrainerBattle(trainerName, trainerType, party_array, default_level=50, endSpeech="", sprite_override=nil)
def customTrainerBattle(trainerName, trainerType, party_array, default_level=50, endSpeech="", sprite_override=nil,custom_appearance=nil)
# trainerID= "customTrainer"
@@ -582,7 +582,7 @@ def customTrainerBattle(trainerName, trainerType, party_array, default_level=50,
# trainer_info_hash[:pokemon] = party
#trainer = GameData::Trainer.new(trainer_info_hash)
trainer = NPCTrainer.new(trainerName,trainerType,sprite_override)
trainer = NPCTrainer.new(trainerName,trainerType,sprite_override,custom_appearance)
trainer.lose_text=endSpeech
party = []
party_array.each { |pokemon|
@@ -677,7 +677,9 @@ def changeMeloettaForm(pokemon)
return
end
if is_meloetta_A && is_meloetta_P
if pokemon.species_data.get_body_species() == :MELOETTA_A
body_id = pokemon.species_data.get_body_species()
body_species = GameData::Species.get(body_id)
if body_species == :MELOETTA_A
changeSpeciesSpecific(pokemon, :B467H466)
else
changeSpeciesSpecific(pokemon, :B466H467)

Some files were not shown because too many files have changed in this diff Show More