104 Commits

Author SHA1 Message Date
chardub
563390c166 Increases color range for generated spriters 2025-03-15 15:20:24 -04:00
chardub
2afa199b6b don't recreate pbs when compiling if missing 2025-03-15 14:52:46 -04:00
chardub
bab284c503 Fixes bad interaction between clothes menu and regi puzzle 2025-03-15 13:44:27 -04:00
chardub
147658bccb re-adds missing sprites to import folder 2025-03-15 12:45:56 -04:00
chardub
2f1c8e2a4d Removes leftover debug events 2025-03-15 12:29:39 -04:00
chardub
5910f28431 Fixes issue with learned moves 2025-03-15 11:58:06 -04:00
chardub
63c54e60c3 spritepack sprites 2025-03-15 10:42:53 -04:00
chardub
b016e42d3c update gitignore 2025-03-15 10:24:22 -04:00
chardub
697ea760b9 adds script for launching with wine 2025-03-15 10:23:01 -04:00
chardub
d966ee00cf custom battlers files 2025-03-15 10:16:32 -04:00
chardub
a3bbf1a9a8 6.5 release 2025-03-15 10:00:37 -04:00
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 70bc2480f4) 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:
720c2a4661
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
7624 changed files with 13797 additions and 10358 deletions

BIN
.DS_Store vendored

Binary file not shown.

7
.gitignore vendored
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,8 @@ 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
PBS/*
Game.rxproj
rpgmaker.sh

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
Data/.DS_Store vendored

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.

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.

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",

View File

@@ -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

View File

@@ -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

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
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

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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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))

View File

@@ -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

View File

@@ -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,12 +396,10 @@ 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!"))

View File

@@ -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

View File

@@ -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

View File

@@ -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") }

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