Compare commits

...

93 Commits

Author SHA1 Message Date
chardub 7012af625d Updates dye kit menu 2025-03-15 09:37:54 -04:00
chardub 88ed3c000e adds icons for dye kit items 2025-03-14 19:42:23 -04:00
chardub b53ffd0c73 Removes quitmenu prompt when exiting clothes menu 2025-03-14 15:18:23 -04:00
chardub 048e51b9ae Fixes some legendaries not respawning 2025-03-14 12:43:24 -04:00
chardub 47876255e9 Removes some debugging logs 2025-03-14 11:32:15 -04:00
chardub d754fc45f5 Removes commented code 2025-03-14 11:21:43 -04:00
chardub 03b832a897 Fixes hats menu navigation issue 2025-03-14 11:19:44 -04:00
chardub 5343792f8c Fixes swapping hats visual glitch when only wearing one hat 2025-03-14 11:06:44 -04:00
chardub 324e8b5d18 Adds more custom pokedex entries 2025-03-13 10:50:24 -04:00
chardub ce8d182b2f Adds some hats and clothes 2025-03-13 10:49:05 -04:00
chardub 4edd8e9719 Fixes graphical glitch when pressing shift on sprites pokedex page 2025-03-13 10:02:12 -04:00
chardub aa396cf402 Battle menu: Automatically select the Fight option after switching out a Pokémon 2025-03-12 10:45:54 -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
7681 changed files with 544792 additions and 10337 deletions
Vendored
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,7 @@
Graphics/CustomBattlers/local_sprites/* Graphics/CustomBattlers/local_sprites/*
Graphics/Pokemon/FusionIcons/* Graphics/Pokemon/FusionIcons/*
Graphics/CustomBattlers/spritesheets Graphics/CustomBattlers/spritesheets
Graphics/CustomBattlers/*
Data/sprites/* Data/sprites/*
Data/VERSION Data/VERSION
infinitefusion.sh infinitefusion.sh
@@ -9,6 +10,5 @@ Data/sprites
Data/sprites/updated_spritesheets_cache Data/sprites/updated_spritesheets_cache
Data/sprites/sprites_rate_limit.log Data/sprites/sprites_rate_limit.log
.gitignore .gitignore
PBS
Game.rxproj Game.rxproj
.DS_Store .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 and to the owners of the respective fusion websites for accepting to share
their sprites. their sprites.
Intro cinamatic Intro cinematic
##################### #####################
Kiwikelly Kiwikelly
@@ -116,7 +116,7 @@ with their respective authors' consent
SailorVicious (Prof. Elm OW sprite) https://www.deviantart.com/sailorvicious SailorVicious (Prof. Elm OW sprite) https://www.deviantart.com/sailorvicious
OceansLugiaSpirit (Koga OW sprite) http://oceanslugiaspirit.deviantart.com/ OceansLugiaSpirit (Koga OW sprite) http://oceanslugiaspirit.deviantart.com/
Wolfang62: https://www.deviantart.com/wolfang62/art/Wimpod-Sprite-Overworld-836704744 Wolfang62: https://www.deviantart.com/wolfang62/art/Wimpod-Sprite-Overworld-836704744
zender1752 (Sabrina OW sprite)
Battle sprites: Battle sprites:
Custom graphics: Custom graphics:
Kiwikelly, UnworthyPie Kiwikelly, UnworthyPie
@@ -124,7 +124,7 @@ with their respective authors' consent
Free use graphics: Free use graphics:
luckygirl88 (Misty VS sprite) http://luckygirl88.deviantart.com/art/Pokemon-BW-Misty-Sprite-Sheet-268364830 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 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 ### ### Custom tileset graphics ###
Kiwikelly 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.
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 module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format. # The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '6.4.6' GAME_VERSION = '6.5'
GAME_VERSION_NUMBER = "6.4.7" GAME_VERSION_NUMBER = "6.5.0"
LATEST_GAME_RELEASE = "6.4" LATEST_GAME_RELEASE = "6.5"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17 POKERADAR_LIGHT_ANIMATION_RED_ID = 17
POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18 POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18
@@ -107,8 +107,8 @@ module Settings
BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/" BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/"
CUSTOM_FUSIONS_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_custom/" CUSTOM_FUSIONS_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_custom/"
BASE_POKEMON_SPRITESHEET_TRUE_SIZE_URL = "https://infinitefusion.net/spritesheets_truesize/spritesheets_base/" BASE_POKEMON_SPRITESHEET_TRUE_SIZE_URL = ""
CUSTOM_FUSIONS_SPRITESHEET_TRUE_SIZE_URL = "https://infinitefusion.net/spritesheets_truesize/spritesheets_custom/" CUSTOM_FUSIONS_SPRITESHEET_TRUE_SIZE_URL = ""
RIVAL_STARTER_PLACEHOLDER_SPECIES = :MEW #(MEW) RIVAL_STARTER_PLACEHOLDER_SPECIES = :MEW #(MEW)
VAR_1_PLACEHOLDER_SPECIES = :DIALGA VAR_1_PLACEHOLDER_SPECIES = :DIALGA
@@ -575,7 +575,8 @@ module Settings
# Available menu frames. These are graphic files in "Graphics/Windowskins/". # Available menu frames. These are graphic files in "Graphics/Windowskins/".
MENU_WINDOWSKINS = [ MENU_WINDOWSKINS = [
"choice 1", "default_transparent",
"default_opaque",
"choice 2", "choice 2",
"choice 3", "choice 3",
"choice 4", "choice 4",
@@ -3,7 +3,7 @@ class Sprite_Wearable < RPG::Sprite
attr_accessor :action attr_accessor :action
attr_accessor :sprite attr_accessor :sprite
def initialize(player_sprite, filename, action, viewport) def initialize(player_sprite, filename, action, viewport, relative_z=0)
@player_sprite = player_sprite @player_sprite = player_sprite
@viewport = viewport @viewport = viewport
@sprite = Sprite.new(@viewport) @sprite = Sprite.new(@viewport)
@@ -15,7 +15,7 @@ class Sprite_Wearable < RPG::Sprite
@frameWidth = 80 #@sprite.width @frameWidth = 80 #@sprite.width
@frameHeight = 80 #@sprite.height / 4 @frameHeight = 80 #@sprite.height / 4
@sprite.z = 0 @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)) echoln(_INTL("init had at z = {1}, player sprite at {2}",@sprite.z,@player_sprite.z))
#Unused position offset #Unused position offset
@@ -166,54 +166,5 @@ class Sprite_Wearable < RPG::Sprite
@disposed @disposed
end 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 end
@@ -5,4 +5,81 @@ class Sprite_Hair < Sprite_Wearable
#@sprite.z = @player_sprite.z + 1 #@sprite.z = @player_sprite.z + 1
end 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 end
+2 -186
View File
@@ -1,192 +1,8 @@
class Sprite_Hat < Sprite_Wearable class Sprite_Hat < Sprite_Wearable
def initialize(player_sprite, filename, action, viewport) def initialize(player_sprite, filename, action, viewport, relative_z=2)
super super
@relative_z = 2 @relative_z = relative_z
#@sprite.z = @player_sprite.z + 2 #@sprite.z = @player_sprite.z + 2
end 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 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
+16 -3
View File
@@ -3,17 +3,20 @@ class Sprite_Player < Sprite_Character
super super
@viewport = viewport @viewport = viewport
@outfit_bitmap = nil @outfit_bitmap = nil
@hat_bitmap = nil # @hat_bitmap = nil
# @hat2_bitmap = nil
hatFilename = "" hatFilename = ""
hairFilename = "" 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) @hair = Sprite_Hair.new(self, hairFilename, @character_name, @viewport)
@hat = Sprite_Hat.new(self, hatFilename, @character_name, @viewport)
@previous_skinTone = 0 @previous_skinTone = 0
@current_bitmap = nil @current_bitmap = nil
@previous_action =nil @previous_action =nil
echoln "init playa"
getClothedPlayerSprite(true) getClothedPlayerSprite(true)
end end
@@ -30,12 +33,14 @@ class Sprite_Player < Sprite_Character
def applyDayNightTone def applyDayNightTone
super super
pbDayNightTint(@hat.sprite) if @hat && @hat.sprite.bitmap pbDayNightTint(@hat.sprite) if @hat && @hat.sprite.bitmap
pbDayNightTint(@hat2.sprite) if @hat2 && @hat2.sprite.bitmap
pbDayNightTint(@hair.sprite) if @hair && @hair.sprite.bitmap pbDayNightTint(@hair.sprite) if @hair && @hair.sprite.bitmap
end end
def opacity=(value) def opacity=(value)
super super
@hat.sprite.opacity= value if @hat && @hat.sprite.bitmap @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 @hair.sprite.opacity= value if @hair && @hair.sprite.bitmap
end end
@@ -46,6 +51,7 @@ class Sprite_Player < Sprite_Character
@previous_action = @character_name @previous_action = @character_name
@hair.animate(@character_name) if @hair @hair.animate(@character_name) if @hair
@hat.animate(@character_name) if @hat @hat.animate(@character_name) if @hat
@hat2.animate(@character_name) if @hat2
return @current_bitmap return @current_bitmap
end end
@@ -58,22 +64,28 @@ class Sprite_Player < Sprite_Character
outfitFilename = getOverworldOutfitFilename(Settings::PLAYER_TEMP_OUTFIT_FALLBACK) if !pbResolveBitmap(outfitFilename) outfitFilename = getOverworldOutfitFilename(Settings::PLAYER_TEMP_OUTFIT_FALLBACK) if !pbResolveBitmap(outfitFilename)
hairFilename = getOverworldHairFilename($Trainer.hair) hairFilename = getOverworldHairFilename($Trainer.hair)
hatFilename = getOverworldHatFilename($Trainer.hat) hatFilename = getOverworldHatFilename($Trainer.hat)
hat2Filename = getOverworldHatFilename($Trainer.hat2)
hair_color_shift = $Trainer.hair_color hair_color_shift = $Trainer.hair_color
hat_color_shift = $Trainer.hat_color hat_color_shift = $Trainer.hat_color
hat2_color_shift = $Trainer.hat2_color
clothes_color_shift = $Trainer.clothes_color clothes_color_shift = $Trainer.clothes_color
hair_color_shift = 0 if !hair_color_shift hair_color_shift = 0 if !hair_color_shift
hat_color_shift = 0 if !hat_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 clothes_color_shift = 0 if !clothes_color_shift
@hair.update(@character_name, hairFilename, hair_color_shift) if @hair @hair.update(@character_name, hairFilename, hair_color_shift) if @hair
@hat.update(@character_name, hatFilename, hat_color_shift) if @hat @hat.update(@character_name, hatFilename, hat_color_shift) if @hat
@hat2.update(@character_name, hat2Filename, hat2_color_shift) if @hat2
if !pbResolveBitmap(outfitFilename) if !pbResolveBitmap(outfitFilename)
raise "No temp clothes graphics available" raise "No temp clothes graphics available"
end 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 baseBitmap.blt(0, 0, outfitBitmap.bitmap, outfitBitmap.bitmap.rect) if outfitBitmap
@previous_action = @character_name @previous_action = @character_name
return baseBitmap return baseBitmap
@@ -89,6 +101,7 @@ class Sprite_Player < Sprite_Character
def dispose def dispose
super super
@hat.dispose if @hat @hat.dispose if @hat
@hat2.dispose if @hat2
@hair.dispose if @hair @hair.dispose if @hair
end end
@@ -207,7 +207,7 @@ def pbPositionFaceWindow(facewindow,msgwindow)
end end
end end
def pbPositionNearMsgWindow(cmdwindow,msgwindow,side) def pbPositionNearMsgWindow(cmdwindow,msgwindow,side, x_offset=nil,y_offset=nil)
return if !cmdwindow return if !cmdwindow
if msgwindow if msgwindow
height=[cmdwindow.height,Graphics.height-msgwindow.height].min height=[cmdwindow.height,Graphics.height-msgwindow.height].min
@@ -234,6 +234,10 @@ def pbPositionNearMsgWindow(cmdwindow,msgwindow,side)
cmdwindow.x=0 cmdwindow.x=0
cmdwindow.y=0 cmdwindow.y=0
end end
cmdwindow.x+= x_offset if x_offset
cmdwindow.y+= y_offset if y_offset
end end
# internal function # internal function
@@ -909,7 +909,7 @@ def pbMessageChooseNumber(message, params, &block)
end 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 return 0 if !commands
$PokemonTemp.speechbubble_arrow.visible =false if $PokemonTemp.speechbubble_arrow && !$PokemonTemp.speechbubble_arrow.disposed? $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) 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.z = 99999
cmdwindow.visible = true cmdwindow.visible = true
cmdwindow.resizeToFit(cmdwindow.commands) cmdwindow.resizeToFit(cmdwindow.commands)
pbPositionNearMsgWindow(cmdwindow, msgwindow, :right) pbPositionNearMsgWindow(cmdwindow, msgwindow, :right, x_offset, y_offset)
cmdwindow.index = defaultCmd cmdwindow.index = defaultCmd
command = 0 command = 0
loop do loop do
@@ -218,6 +218,9 @@ module GameData
return @id_number > Settings::NB_POKEMON return @id_number > Settings::NB_POKEMON
end end
def is_triple_fusion
return @id_number >= Settings::ZAPMOLCUNO_NB
end
def get_body_species def get_body_species
return @species return @species
end end
@@ -63,6 +63,7 @@ module GameData
# return (ret) ? ret : pbResolveBitmap("Graphics/Pokemon/Eggs/000") # return (ret) ? ret : pbResolveBitmap("Graphics/Pokemon/Eggs/000")
# end # end
def self.egg_sprite_filename(species, form) def self.egg_sprite_filename(species, form)
return "Graphics/Battlers/Eggs/000" if $PokemonSystem.use_custom_eggs
dexNum = getDexNumberForSpecies(species) dexNum = getDexNumberForSpecies(species)
bitmapFileName = sprintf("Graphics/Battlers/Eggs/%03d", dexNum) rescue nil bitmapFileName = sprintf("Graphics/Battlers/Eggs/%03d", dexNum) rescue nil
if !pbResolveBitmap(bitmapFileName) if !pbResolveBitmap(bitmapFileName)
@@ -208,15 +209,9 @@ module GameData
def self.check_cry_file(species, form) def self.check_cry_file(species, form)
species_data = self.get_species_form(species, form) species_data = self.get_species_form(species, form)
return nil if species_data.nil? 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 if species_data.is_fusion
species_data = GameData::Species.get(getHeadID(species_data)) species_data = GameData::Species.get(getHeadID(species_data))
end 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) ret = sprintf("Cries/%s", species_data.species)
return (pbResolveAudioSE(ret)) ? ret : nil return (pbResolveAudioSE(ret)) ? ret : nil
end end
@@ -230,6 +225,14 @@ module GameData
end end
def self.play_cry_from_species(species, form = 0, volume = 90, pitch = 100) 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) filename = self.cry_filename(species, form)
return if !filename return if !filename
pbSEPlay(RPG::AudioFile.new(filename, volume, pitch)) rescue nil 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) def self.play_cry_from_pokemon(pkmn, volume = 90, pitch = nil)
return if !pkmn || pkmn.egg? 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) filename = self.cry_filename_from_pokemon(pkmn)
return if !filename return if !filename
pitch ||= 75 + (pkmn.hp * 25 / pkmn.totalhp) pitch ||= 75 + (pkmn.hp * 25 / pkmn.totalhp)
pbSEPlay(RPG::AudioFile.new(filename, volume, pitch)) rescue nil pbSEPlay(RPG::AudioFile.new(filename, volume, pitch)) rescue nil
end 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) def self.play_cry(pkmn, volume = 90, pitch = nil)
if pkmn.is_a?(Pokemon) if pkmn.is_a?(Pokemon)
self.play_cry_from_pokemon(pkmn, volume, pitch) self.play_cry_from_pokemon(pkmn, volume, pitch)
@@ -30,7 +30,7 @@ class PokeBattle_Battler
end end
def pbRecoverHPFromDrain(amt,target,msg=nil) def pbRecoverHPFromDrain(amt,target,msg=nil)
if target.hasActiveAbility?(:LIQUIDOOZE) if target.hasActiveAbility?(:LIQUIDOOZE, true)
@battle.pbShowAbilitySplash(target) @battle.pbShowAbilitySplash(target)
pbReduceHP(amt) pbReduceHP(amt)
@battle.pbDisplay(_INTL("{1} sucked up the liquid ooze!",pbThis)) @battle.pbDisplay(_INTL("{1} sucked up the liquid ooze!",pbThis))
@@ -624,27 +624,8 @@ class PokeBattle_Battler
#For meloetta form change #For meloetta form change
def changeFormSpecies(oldForm, newForm,animation = "UltraBurst2") def changeFormSpecies(oldForm, newForm,animation = "UltraBurst2")
@pokemon.changeFormSpecies(oldForm,newForm) @pokemon.changeFormSpecies(oldForm,newForm)
playChangeFormAnimation(animation) 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 end
@@ -49,7 +49,9 @@ class PokeBattle_Move_003 < PokeBattle_SleepMove
#reverse the fusion if it's a meloA and meloP fusion #reverse the fusion if it's a meloA and meloP fusion
# There's probably a smarter way to do this but laziness lol # There's probably a smarter way to do this but laziness lol
if is_meloetta_A && is_meloetta_P 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) changeSpeciesSpecific(user.pokemon,:B467H466)
else else
changeSpeciesSpecific(user.pokemon,:B466H467) changeSpeciesSpecific(user.pokemon,:B466H467)
@@ -394,13 +396,11 @@ class PokeBattle_Move_019 < PokeBattle_Move
failed = false failed = false
break break
end end
if !failed
@battle.pbParty(user.index).each do |pkmn| @battle.pbParty(user.index).each do |pkmn|
next if !pkmn || !pkmn.able? || pkmn.status == :NONE next if !pkmn || !pkmn.able? || pkmn.status == :NONE
failed = false failed = false
break break
end end
end
if failed if failed
@battle.pbDisplay(_INTL("But it failed!")) @battle.pbDisplay(_INTL("But it failed!"))
return true return true
@@ -3226,10 +3226,8 @@ class PokeBattle_Move_0F1 < PokeBattle_Move
# removed target.item == target.initialItem, this may cause bugs. # removed target.item == target.initialItem, this may cause bugs.
if @battle.wildBattle? && target.opposes? && !user.initialItem if @battle.wildBattle? && target.opposes? && !user.initialItem
user.setInitialItem(target.item) user.setInitialItem(target.item)
target.pbRemoveItem
else
target.pbRemoveItem(false)
end end
target.pbRemoveItem(false)
@battle.pbDisplay(_INTL("{1} stole {2}'s {3}!",user.pbThis,target.pbThis(true),itemName)) @battle.pbDisplay(_INTL("{1} stole {2}'s {3}!",user.pbThis,target.pbThis(true),itemName))
user.pbHeldItemTriggerCheck user.pbHeldItemTriggerCheck
end end
@@ -247,27 +247,10 @@ module PokeBattle_BattleCommon
echoln isOnLastBall echoln isOnLastBall
# Critical capture check # Critical capture check
if isOnLastBall if isOnLastBall
c = 0 c = x * 6 / 12
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
if c > 0 && pbRandom(256) < c if c > 0 && pbRandom(256) < c
@criticalCapture = true @criticalCapture = true
return 4 if pbRandom(65536) < y return 4
return 0
end end
end end
# Calculate the number of shakes # Calculate the number of shakes
@@ -261,7 +261,9 @@ class PokeBattle_Battle
return if pkmn.moves.any? { |m| m && m.id == newMove } return if pkmn.moves.any? { |m| m && m.id == newMove }
# Pokémon has space for the new move; just learn it # Pokémon has space for the new move; just learn it
if pkmn.moves.length < Pokemon::MAX_MOVES 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") } pbDisplay(_INTL("{1} learned {2}!", pkmnName, moveName)) { pbSEPlay("Pkmn move learnt") }
if battler if battler
battler.moves.push(PokeBattle_Move.from_pokemon_move(self, pkmn.moves.last)) battler.moves.push(PokeBattle_Move.from_pokemon_move(self, pkmn.moves.last))
@@ -279,7 +281,9 @@ class PokeBattle_Battle
if forgetMove >= 0 if forgetMove >= 0
oldMoveName = pkmn.moves[forgetMove].name oldMoveName = pkmn.moves[forgetMove].name
pkmn.moves[forgetMove] = Pokemon::Move.new(newMove) # Replaces current/total PP 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 battler.moves[forgetMove] = PokeBattle_Move.from_pokemon_move(self, pkmn.moves[forgetMove]) if battler
pbDisplayPaused(_INTL("1, 2, and... ... ... Ta-da!")) pbDisplayPaused(_INTL("1, 2, and... ... ... Ta-da!"))
pbDisplayPaused(_INTL("{1} forgot how to use {2}. And...", pkmnName, oldMoveName)) pbDisplayPaused(_INTL("{1} forgot how to use {2}. And...", pkmnName, oldMoveName))
pbDisplay(_INTL("{1} learned {2}!", pkmnName, moveName)) { pbSEPlay("Pkmn move learnt") } pbDisplay(_INTL("{1} learned {2}!", pkmnName, moveName)) { pbSEPlay("Pkmn move learnt") }
@@ -219,7 +219,10 @@ class PokeBattle_Battle
break break
end end
when 2 # Pokémon when 2 # Pokémon
break if pbPartyMenu(idxBattler) if pbPartyMenu(idxBattler)
@scene.setLastCommandIndex(idxBattler,0)
break
end
when 3 # Run when 3 # Run
# NOTE: "Run" is only an available option for the first battler the # NOTE: "Run" is only an available option for the first battler the
# player chooses an action for in a round. Attempting to run # player chooses an action for in a round. Attempting to run
@@ -74,7 +74,7 @@ class PokeBattle_Scene
# Opposing trainer(s) sprites # Opposing trainer(s) sprites
if @battle.trainerBattle? if @battle.trainerBattle?
@battle.opponent.each_with_index do |p, i| @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
end end
# Data boxes and Pokémon sprites # Data boxes and Pokémon sprites
@@ -207,7 +207,7 @@ class PokeBattle_Scene
# trainer.oy = trainer.bitmap.height # trainer.oy = trainer.bitmap.height
end 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 = GameData::TrainerType.front_sprite_filename(trainerType)
trainerFile = sprite_override if sprite_override trainerFile = sprite_override if sprite_override
@@ -215,7 +215,7 @@ class PokeBattle_Scene
trainer = pbAddSprite("trainer_#{idxTrainer + 1}", spriteX, spriteY, trainerFile, @viewport) trainer = pbAddSprite("trainer_#{idxTrainer + 1}", spriteX, spriteY, trainerFile, @viewport)
spriteOverrideBitmap = setTrainerSpriteOverrides(trainerType) spriteOverrideBitmap = setTrainerSpriteOverrides(trainerType)
trainer.bitmap = spriteOverrideBitmap if spriteOverrideBitmap trainer.bitmap = spriteOverrideBitmap if spriteOverrideBitmap
trainer.bitmap = generate_front_trainer_sprite_bitmap_from_appearance(custom_appearance).bitmap if custom_appearance
return if !trainer.bitmap return if !trainer.bitmap
# Alter position of sprite # Alter position of sprite
trainer.z = 7 + idxTrainer trainer.z = 7 + idxTrainer
@@ -1,4 +1,9 @@
class PokeBattle_Scene class PokeBattle_Scene
def setLastCommandIndex(battlerIndex,commandIndex)
@lastCmd[battlerIndex] = commandIndex
end
#============================================================================= #=============================================================================
# The player chooses a main command for a Pokémon # The player chooses a main command for a Pokémon
# Return values: -1=Cancel, 0=Fight, 1=Bag, 2=Pokémon, 3=Run, 4=Call # Return values: -1=Cancel, 0=Fight, 1=Bag, 2=Pokémon, 3=Run, 4=Call
@@ -100,8 +100,7 @@ end
class PokeBattle_Move_022 # Double Team class PokeBattle_Move_022 # Double Team
alias __clauses__pbMoveFailed? pbMoveFailed? alias __clauses__pbMoveFailed? pbMoveFailed? unless method_defined?(:__clauses__pbMoveFailed?)
def pbMoveFailed?(user,targets) def pbMoveFailed?(user,targets)
if !damagingMove? && @battle.rules["evasionclause"] if !damagingMove? && @battle.rules["evasionclause"]
@battle.pbDisplay(_INTL("But it failed!")) @battle.pbDisplay(_INTL("But it failed!"))
@@ -114,8 +113,7 @@ end
class PokeBattle_Move_034 # Minimize class PokeBattle_Move_034 # Minimize
alias __clauses__pbMoveFailed? pbMoveFailed? alias __clauses__pbMoveFailed? pbMoveFailed? unless method_defined?(:__clauses__pbMoveFailed?)
def pbMoveFailed?(user,targets) def pbMoveFailed?(user,targets)
if !damagingMove? && @battle.rules["evasionclause"] if !damagingMove? && @battle.rules["evasionclause"]
@battle.pbDisplay(_INTL("But it failed!")) @battle.pbDisplay(_INTL("But it failed!"))
@@ -142,7 +140,7 @@ end
class PokeBattle_Move_06A # Sonic Boom class PokeBattle_Move_06A # Sonic Boom
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget? alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget? unless method_defined?(:__clauses__pbFailsAgainstTarget?)
def pbFailsAgainstTarget?(user,target) def pbFailsAgainstTarget?(user,target)
if @battle.rules["sonicboomclause"] if @battle.rules["sonicboomclause"]
@@ -156,7 +154,7 @@ end
class PokeBattle_Move_06B # Dragon Rage class PokeBattle_Move_06B # Dragon Rage
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget? alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget? unless method_defined?(:__clauses__pbFailsAgainstTarget?)
def pbFailsAgainstTarget?(user,target) def pbFailsAgainstTarget?(user,target)
if @battle.rules["sonicboomclause"] 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] return [$game_map.map_id, x + x_offset, y + y_offset]
end 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. # within distance tiles of the player.
def pbEventFacesPlayer?(event, player, distance) 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 x_min = x_max = y_min = y_max = -1
case event.direction case event.direction
when 2 # Down when 2 # Down
@@ -473,6 +486,7 @@ def pbFacingEachOther(event1, event2)
return pbEventFacesPlayer?(event1, event2, 1) && pbEventFacesPlayer?(event2, event1, 1) return pbEventFacesPlayer?(event1, event2, 1) && pbEventFacesPlayer?(event2, event1, 1)
end end
#=============================================================================== #===============================================================================
# Audio playing # Audio playing
#=============================================================================== #===============================================================================
@@ -567,7 +567,7 @@ end
#party: array of pokemon team #party: array of pokemon team
# [[:SPECIES,level], ... ] # [[: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" # trainerID= "customTrainer"
@@ -582,7 +582,7 @@ def customTrainerBattle(trainerName, trainerType, party_array, default_level=50,
# trainer_info_hash[:pokemon] = party # trainer_info_hash[:pokemon] = party
#trainer = GameData::Trainer.new(trainer_info_hash) #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 trainer.lose_text=endSpeech
party = [] party = []
party_array.each { |pokemon| party_array.each { |pokemon|
@@ -677,7 +677,9 @@ def changeMeloettaForm(pokemon)
return return
end end
if is_meloetta_A && is_meloetta_P 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) changeSpeciesSpecific(pokemon, :B467H466)
else else
changeSpeciesSpecific(pokemon, :B466H467) changeSpeciesSpecific(pokemon, :B466H467)

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