39 Commits

Author SHA1 Message Date
chardub
871045ca46 adds new hairstyles to Saffron boutique 2025-02-08 16:13:07 -05:00
chardub
0c918bbfcb updates gitignore 2025-02-08 14:48:36 -05:00
chardub
2488a2575e removes dev files 2025-02-08 11:31:14 -05:00
chardub
2c5b161029 lowers number of pokemon to catch for first celadon rocket mission from 4 to 3 2025-02-08 11:00:01 -05:00
chardub
32dc832b5c santa hat 2025-02-08 00:06:29 -05:00
chardub
9fa7dac43f oops spritesheets 2025-02-07 23:54:34 -05:00
chardub
d3e4fd3d33 updates gitignore 2025-02-07 23:40:57 -05:00
chardub
16b2deeefb adds missing folder 2025-02-07 23:21:28 -05:00
chardub
b8d479b801 Some minor map fixes 2025-02-07 22:47:02 -05:00
chardub
38377b703e updates version number 2025-02-07 22:29:12 -05:00
chardub
1fed55f7fa adds new character customization options 2025-02-07 22:28:44 -05:00
chardub
3ebd3fd68a Adds some character customization data 2025-02-07 21:04:35 -05:00
chardub
2fcc7fc9cd glitched mask obtain method 2025-02-07 20:22:23 -05:00
chardub
692a25bd8e Lowers default game volume 2025-02-07 11:15:41 -05:00
chardub
24943e092f fixes typo 2025-02-06 21:18:13 -05:00
chardub
935c548016 fixes normal type expert team 2025-02-06 21:14:19 -05:00
chardub
44f114b5e0 Adds debug function to change a pokemon's species from head and body pokedex numbers 2025-02-06 19:47:11 -05:00
chardub
1809d246b6 Clears celadon TR rocket HQ after getting recognized by Archer in Mt. Ember 2025-02-06 19:17:41 -05:00
infinitefusion
a9de6b6c97 updates sinnoh triple fusion sprite 2025-02-02 18:34:33 -05:00
infinitefusion
1499465ce0 santa claus sprite fix 2025-02-02 16:34:54 -05:00
infinitefusion
f72c7fff7b Adds CUSTOM_DEX_FILE_URL file url to settubgs 2025-02-02 15:23:55 -05:00
infinitefusion
a9267b7bad Adds credits file url to settubgs 2025-02-02 15:14:54 -05:00
infinitefusion
fed8490fc3 Removes debug code 2025-02-02 14:27:22 -05:00
infinitefusion
a62544e8d8 Entering TR HQ after Team Rocket has disbanded automatically completes any unfinished quests 2025-02-02 14:22:22 -05:00
infinitefusion
9d30b0e0fb Adds hint NPC in hotel for last cerulean rocket quest 2025-02-02 12:58:02 -05:00
infinitefusion
5640871dcd fixes missing minior cry 2025-02-02 12:07:34 -05:00
infinitefusion
e7d2330a2f Fix for TR quests not registered in quest log 2025-02-01 00:20:45 -05:00
infinitefusion
71894707b1 Lowers GS Ball quest requirement to 50 2025-01-31 16:29:49 -05:00
infinitefusion
727bccfe61 Adds Pinkan Berry to "do not randomize" items list 2025-01-31 16:10:20 -05:00
infinitefusion
e0201bf021 Adds option to swap base color in hair dye menu 2025-01-31 16:09:57 -05:00
infinitefusion
8f1f4a0f9b Makes it possible to finish construction materials quest after beating league 2025-01-31 15:22:26 -05:00
infinitefusion
8bcc4f226b fixes missing hall of fame music 2025-01-25 14:21:00 -05:00
infinitefusion
5fc4935a0c Removes Pinkan island troll rock 2025-01-22 16:59:00 -05:00
infinitefusion
064a09664a adds new batch of custom pokedex entries 2025-01-22 10:15:04 -05:00
infinitefusion
6c621d04e4 small fixes 2025-01-18 10:35:28 -05:00
infinitefusion
d523f30eb7 fIXES SCRAGGY POKERADAR 2025-01-17 13:24:31 -05:00
infinitefusion
b2b8a4ec12 Makes Magikarp contest easier the first time 2025-01-13 21:51:19 -05:00
infinitefusion
33ab16c3c6 Makes Magikarp contest easier the first time 2025-01-13 21:50:39 -05:00
infinitefusion
4730228557 updates outdoor tileset 2025-01-13 21:16:23 -05:00
217 changed files with 54772 additions and 4616 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

13
.gitignore vendored
View File

@@ -1,5 +1,14 @@
Graphics/CustomBattlers/local_sprites/*
Graphics/Pokemon/FusionIcons/* Graphics/Pokemon/FusionIcons/*
Graphics/CustomBattlers/spritesheets
Data/sprites/* Data/sprites/*
Data/VERSION Data/VERSION
infinitefusion.sh
Data/sprites/CUSTOM_SPRITES
Data/sprites
Data/sprites/updated_spritesheets_cache
Data/sprites/sprites_rate_limit.log
.gitignore
PBS
Game.rxproj
.DS_Store

BIN
Audio/BGM/Hall of Fame.mp3 Normal file

Binary file not shown.

BIN
Audio/SE/Cries/MINIOR_M.ogg Normal file

Binary file not shown.

BIN
Data/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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,8 +5,8 @@
#==============================================================================# #==============================================================================#
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.5' GAME_VERSION = '6.4.6'
GAME_VERSION_NUMBER = "6.4.5" GAME_VERSION_NUMBER = "6.4.7"
LATEST_GAME_RELEASE = "6.4" LATEST_GAME_RELEASE = "6.4"
POKERADAR_LIGHT_ANIMATION_RED_ID = 17 POKERADAR_LIGHT_ANIMATION_RED_ID = 17
@@ -63,6 +63,8 @@ module Settings
SPRITES_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/sprites/CUSTOM_SPRITES" SPRITES_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/sprites/CUSTOM_SPRITES"
BASE_SPRITES_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/sprites/BASE_SPRITES" BASE_SPRITES_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/sprites/BASE_SPRITES"
CREDITS_FILE_URL = "https://infinitefusion.net/Sprite Credits.csv"
CUSTOM_DEX_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/pif-downloadables/refs/heads/master/dex.json"
STARTUP_MESSAGES = "" STARTUP_MESSAGES = ""
@@ -486,7 +488,7 @@ module Settings
[562, 50, :NINJASK,45,50], #Boon Island [562, 50, :NINJASK,45,50], #Boon Island
[603, 50, :KECLEON,45,50], #Chrono Island [603, 50, :KECLEON,45,50], #Chrono Island
[654, 50, :WHIMSICOTT,32,45], #Brine Road [654, 50, :WHIMSICOTT,32,45], #Brine Road
[654, 50, :SCRAGGY,32,45] #Kindle Road [559, 50, :SCRAGGY,32,45] #Kindle Road
] ]
#============================================================================= #=============================================================================

View File

@@ -21,8 +21,7 @@ module SaveData
# @param file_path [String] path of the file to load from # @param file_path [String] path of the file to load from
# @return [Hash, Array] loaded save data # @return [Hash, Array] loaded save data
# @raise [IOError, SystemCallError] if file opening fails # @raise [IOError, SystemCallError] if file opening fails
def self.get_data_from_file(file_path) def self.get_data_from_file(file_path) validate file_path => String
validate file_path => String
save_data = nil save_data = nil
File.open(file_path) do |file| File.open(file_path) do |file|
data = Marshal.load(file) data = Marshal.load(file)

View File

@@ -750,6 +750,7 @@ Events.onEndBattle += proc { |_sender,e|
pbHoneyGather(pkmn) pbHoneyGather(pkmn)
end end
pickUpTypeItemSetBonus() pickUpTypeItemSetBonus()
qmarkMaskCheck()
when 2, 5 # Lose, draw when 2, 5 # Lose, draw
if !canLose if !canLose
$game_system.bgm_unpause $game_system.bgm_unpause

View File

@@ -32,6 +32,8 @@ class Player < Trainer
attr_accessor :card_background attr_accessor :card_background
attr_accessor :unlocked_card_backgrounds attr_accessor :unlocked_card_backgrounds
attr_accessor :seen_qmarks_sprite
# @return [Array<Boolean>] the player's Gym Badges (true if owned) # @return [Array<Boolean>] the player's Gym Badges (true if owned)
attr_accessor :badges attr_accessor :badges
@@ -293,5 +295,7 @@ class Player < Trainer
@card_background = Settings::DEFAULT_TRAINER_CARD_BG @card_background = Settings::DEFAULT_TRAINER_CARD_BG
@unlocked_card_backgrounds = [@card_background] @unlocked_card_backgrounds = [@card_background]
@seen_qmarks_sprite = false
end end
end end

View File

@@ -33,8 +33,8 @@ class PokemonSystem
@screensize = (Settings::SCREEN_SCALE * 2).floor - 1 # 0=half size, 1=full size, 2=full-and-a-half size, 3=double size @screensize = (Settings::SCREEN_SCALE * 2).floor - 1 # 0=half size, 1=full size, 2=full-and-a-half size, 3=double size
@language = 0 # Language (see also Settings::LANGUAGES in script PokemonSystem) @language = 0 # Language (see also Settings::LANGUAGES in script PokemonSystem)
@runstyle = 0 # Default movement speed (0=walk, 1=run) @runstyle = 0 # Default movement speed (0=walk, 1=run)
@bgmvolume = 100 # Volume of background music and ME @bgmvolume = 40 # Volume of background music and ME
@sevolume = 100 # Volume of sound effects @sevolume = 40 # Volume of sound effects
@textinput = 1 # Text input mode (0=cursor, 1=keyboard) @textinput = 1 # Text input mode (0=cursor, 1=keyboard)
@quicksurf = 0 @quicksurf = 0
@battle_type = 0 @battle_type = 0

View File

@@ -115,14 +115,16 @@ end
# selected (or nil if the selection was canceled). "default", if specified, is # selected (or nil if the selection was canceled). "default", if specified, is
# the ID of the species to initially select. Pressing Input::ACTION will toggle # the ID of the species to initially select. Pressing Input::ACTION will toggle
# the list sorting between numerical and alphabetical. # the list sorting between numerical and alphabetical.
def pbChooseSpeciesList(default = nil) def pbChooseSpeciesList(default = nil,max=nil)
# commands = [] # commands = []
# GameData::Species.each { |s| commands.push([s.id_number, s.real_name, s.id]) if s.form == 0 } # GameData::Species.each { |s| commands.push([s.id_number, s.real_name, s.id]) if s.form == 0 }
# return pbChooseList(commands, default, nil, -1) # return pbChooseList(commands, default, nil, -1)
# #
defaultNumber = default == nil ? 1 : getDexNumberForSpecies(default) defaultNumber = default == nil ? 1 : getDexNumberForSpecies(default)
params = ChooseNumberParams.new params = ChooseNumberParams.new
params.setRange(1,PBSpecies.maxValue)
max = max ? max : PBSpecies.maxValue
params.setRange(1,max)
params.setInitialValue(defaultNumber) params.setInitialValue(defaultNumber)
dexNum = pbMessageChooseNumber("dex number?",params) dexNum = pbMessageChooseNumber("dex number?",params)
return GameData::Species.get(dexNum) return GameData::Species.get(dexNum)

View File

@@ -858,8 +858,7 @@ PokemonDebugMenuCommands.register("speciesform", {
_INTL("Species {1}, form {2} (forced).", pkmn.speciesName, pkmn.form)][(pkmn.forced_form.nil?) ? 0 : 1] _INTL("Species {1}, form {2} (forced).", pkmn.speciesName, pkmn.form)][(pkmn.forced_form.nil?) ? 0 : 1]
cmd = screen.pbShowCommands(msg, [ cmd = screen.pbShowCommands(msg, [
_INTL("Set species"), _INTL("Set species"),
_INTL("Set form"), _INTL("Set fusion species")], cmd)
_INTL("Remove form override")], cmd)
break if cmd < 0 break if cmd < 0
case cmd case cmd
when 0 # Set species when 0 # Set species
@@ -871,9 +870,31 @@ PokemonDebugMenuCommands.register("speciesform", {
end end
pkmn.calc_stats pkmn.calc_stats
$Trainer.pokedex.register(pkmn) if !settingUpBattle $Trainer.pokedex.register(pkmn) if !settingUpBattle
$Trainer.pokedex.set_owned(pkmn.species) if !settingUpBattle
screen.pbRefreshSingle(pkmnid) screen.pbRefreshSingle(pkmnid)
end end
when 1 # Set form when 1 # Set form
old_head_dex = get_head_number_from_symbol(pkmn.species)
old_body_dex = get_body_number_from_symbol(pkmn.species)
pbMessage('Head species?')
head_species = pbChooseSpeciesList(old_head_dex,NB_POKEMON)
pbMessage('Body species?')
body_species = pbChooseSpeciesList(old_body_dex,NB_POKEMON)
fused_species_dex = getFusionSpecies(body_species.species,head_species.species)
species = GameData::Species.get(fused_species_dex)
if species && species != pkmn.species
pkmn.species = species
if pkmn.shiny?
pkmn.debug_shiny=true
end
pkmn.calc_stats
$Trainer.pokedex.register(pkmn) if !settingUpBattle
$Trainer.pokedex.set_owned(pkmn.species) if !settingUpBattle
screen.pbRefreshSingle(pkmnid)
end
# cmd2 = 0 # cmd2 = 0
# formcmds = [[], []] # formcmds = [[], []]
# GameData::Species.each do |sp| # GameData::Species.each do |sp|
@@ -901,9 +922,9 @@ PokemonDebugMenuCommands.register("speciesform", {
# screen.pbRefreshSingle(pkmnid) # screen.pbRefreshSingle(pkmnid)
# end # end
# end # end
when 2 # Remove form override # when 2 # Remove form override
pkmn.forced_form = nil # pkmn.forced_form = nil
screen.pbRefreshSingle(pkmnid) # screen.pbRefreshSingle(pkmnid)
end end
end end
next false next false

View File

@@ -22,7 +22,7 @@ HELD_ITEMS = [:AIRBALLOON, :BRIGHTPOWDER, :EVIOLITE, :FLOATSTONE, :DESTINYKNOT,
INVALID_ITEMS = [:COVERFOSSIL, :PLUMEFOSSIL, :ACCURACYUP, :DAMAGEUP, :ANCIENTSTONE, :ODDKEYSTONE_FULL, INVALID_ITEMS = [:COVERFOSSIL, :PLUMEFOSSIL, :ACCURACYUP, :DAMAGEUP, :ANCIENTSTONE, :ODDKEYSTONE_FULL,
:DEVOLUTIONSPRAY, :INVISIBALL] :DEVOLUTIONSPRAY, :INVISIBALL]
RANDOM_ITEM_EXCEPTIONS = [:DNASPLICERS,:POKEBALL, :DYNAMITE] RANDOM_ITEM_EXCEPTIONS = [:DNASPLICERS,:POKEBALL, :DYNAMITE, :PINKANBERRY]
def getRandomGivenTM(item) def getRandomGivenTM(item)
return item if item == nil return item if item == nil

View File

@@ -119,6 +119,7 @@ class BattleSpriteLoader
new_extractor = get_sprite_extractor_instance(:AUTOGEN) new_extractor = get_sprite_extractor_instance(:AUTOGEN)
return new_extractor.load_sprite(pif_sprite) return new_extractor.load_sprite(pif_sprite)
else else
$Trainer.seen_qmarks_sprite=true if $Trainer
#If autogen or base sprite aren't able to load a sprite then we have nothing else to load -> show a ? instead. #If autogen or base sprite aren't able to load a sprite then we have nothing else to load -> show a ? instead.
return AnimatedBitmap.new(Settings::DEFAULT_SPRITE_PATH) return AnimatedBitmap.new(Settings::DEFAULT_SPRITE_PATH)
end end

View File

@@ -221,6 +221,7 @@ VAR_NB_ROCKET_MISSIONS = 286
VAR_BOUTIQUE_OUTFIT=290 VAR_BOUTIQUE_OUTFIT=290
VAR_FISHING_CONTEST_RECORD=294 VAR_FISHING_CONTEST_RECORD=294
VAR_FISHING_CONTEST_NERF=333

View File

@@ -10,8 +10,10 @@ CLOTHES_ADVENTURER = "fantasyadventurersoutfit"
CLOTHES_EMERALD = "emeraldSPE" CLOTHES_EMERALD = "emeraldSPE"
CLOTHES_PIKACHU_ONESIE = "pikaonesie" CLOTHES_PIKACHU_ONESIE = "pikaonesie"
CLOTHES_GLITCH = "glitzerset"
CLOTHES_BREEDER="PKMBreeder" CLOTHES_BREEDER="PKMBreeder"
CLOTHES_LASS_YELLOW ="lass" CLOTHES_LASS_YELLOW ="lass"
CLOTHES_LASS_BLUE ="lass2" CLOTHES_LASS_BLUE ="lass2"
@@ -48,7 +50,7 @@ HAT_SLOWKING_SHELL = "slowking"
HAT_ZOROARK = "banefulfoxmask" HAT_ZOROARK = "banefulfoxmask"
HAT_FROG = "froghat" HAT_FROG = "froghat"
HAT_SANTA = "santa" HAT_SANTA = "santa"
HAT_QMARKS = "glitzerset"
HAT_BREEDER_1="breedervisor" HAT_BREEDER_1="breedervisor"
HAT_BREEDER_2="breederbandana" HAT_BREEDER_2="breederbandana"
@@ -67,6 +69,9 @@ HAT_BIANCA = "bianca"
HAT_CLEFAIRY = "clefairyearheadband" HAT_CLEFAIRY = "clefairyearheadband"
HAT_FLOWER = "mikufairy" HAT_FLOWER = "mikufairy"
HAT_SKITTY_TV = "skittyTV"
HAT_TVHEAD = "tvhead"
HAT_CARDBOARD_BOX = "box" HAT_CARDBOARD_BOX = "box"
HAT_CAPTAIN = "seacaptain" HAT_CAPTAIN = "seacaptain"
@@ -116,3 +121,9 @@ HAIR_CHUCK = "chuck" #does not exist yet
HAIR_PRYCE = "pryce" #does not exist yet HAIR_PRYCE = "pryce" #does not exist yet
HAIR_MORTY = "morty" #does not exist yet HAIR_MORTY = "morty" #does not exist yet
HAIR_JASMINE = "jasmine" #does not exist yet HAIR_JASMINE = "jasmine" #does not exist yet
HAIR_HOOH = "ho-oh"
HAIR_CRESSELIA = "lunarbob"
HAIR_LYCANROC="lycanrocshorthair"
HAIR_HAPPINY="happinysuit"
HAIR_LATIAS="SpecialLatias"

View File

@@ -43,32 +43,49 @@ def selectHairstyle(all_unlocked = false)
$Trainer.hat = hat $Trainer.hat = hat
end end
def swapToNextHairVersion()
split_hair = getSplitHairFilenameAndVersionFromID($Trainer.hair)
hair_version = split_hair[0]
hair_style = split_hair[1]
current_version = hair_version
pbSEPlay("GUI party switch", 80, 100)
newVersion = current_version.to_i + 1
lastVersion = findLastHairVersion(hair_style)
newVersion = lastVersion if newVersion <= 0
newVersion = 1 if newVersion > lastVersion
$Trainer.hair = getFullHairId(hair_style,newVersion)
end
def selectHairColor def selectHairColor
original_color = $Trainer.hair_color original_color = $Trainer.hair_color
original_hair = $Trainer.hair
$game_switches[SWITCH_SELECTING_CLOTHES]=true $game_switches[SWITCH_SELECTING_CLOTHES]=true
$game_map.update $game_map.update
display_outfit_preview() display_outfit_preview()
hat = $Trainer.hat hat = $Trainer.hat
commands = ["Shift up", "Shift down", "Toggle hat", "Reset", "Confirm", "Never Mind"] commands = ["Swap base color", "Shift up", "Shift down", "Toggle hat", "Remove dye", "Confirm", "Never Mind"]
previous_input = 0 previous_input = 0
while (true) while (true)
choice = pbShowCommands(nil, commands, commands.length, previous_input) choice = pbShowCommands(nil, commands, commands.length, previous_input)
previous_input = choice previous_input = choice
case choice case choice
when 0 #NEXT when 0 #change base
swapToNextHairVersion()
display_outfit_preview()
ret = false
when 1 #NEXT
#playOutfitChangeAnimation() #playOutfitChangeAnimation()
pbSEPlay("GUI storage pick up", 80, 100) pbSEPlay("GUI storage pick up", 80, 100)
shiftHairColor(10) shiftHairColor(10)
display_outfit_preview() display_outfit_preview()
ret = true ret = true
when 1 #PREVIOUS when 2 #PREVIOUS
pbSEPlay("GUI storage pick up", 80, 100) pbSEPlay("GUI storage pick up", 80, 100)
shiftHairColor(-10) shiftHairColor(-10)
display_outfit_preview() display_outfit_preview()
ret = true ret = true
when 2 #Toggle hat when 3 #Toggle hat
pbSEPlay("GUI storage put down", 80, 100) pbSEPlay("GUI storage put down", 80, 100)
if hat == $Trainer.hat if hat == $Trainer.hat
$Trainer.hat = nil $Trainer.hat = nil
@@ -76,15 +93,16 @@ def selectHairColor
$Trainer.hat = hat $Trainer.hat = hat
end end
display_outfit_preview() display_outfit_preview()
when 3 #Reset when 4 #Reset
pbSEPlay("GUI storage put down", 80, 100) pbSEPlay("GUI storage put down", 80, 100)
$Trainer.hair_color = 0 $Trainer.hair_color = 0
display_outfit_preview() display_outfit_preview()
ret = false ret = false
when 4 #Confirm when 5 #Confirm
break break
else else
$Trainer.hair_color = original_color $Trainer.hair_color = original_color
$Trainer.hair = original_hair
ret = false ret = false
break break
end end

View File

@@ -156,6 +156,8 @@ def findLastHairVersion(hairId)
last_version = 0 last_version = 0
possible_versions.each { |version| possible_versions.each { |version|
hair_id = getFullHairId(hairId, version) hair_id = getFullHairId(hairId, version)
echoln hair_id
echoln pbResolveBitmap(getOverworldHairFilename(hair_id))
if pbResolveBitmap(getOverworldHairFilename(hair_id)) if pbResolveBitmap(getOverworldHairFilename(hair_id))
last_version = version last_version = version
else else

View File

@@ -9,7 +9,7 @@ module GameData
else else
ret = self.front_sprite_bitmap(species, pkmn.shiny?, pkmn.bodyShiny?, pkmn.headShiny?) ret = self.front_sprite_bitmap(species, pkmn.shiny?, pkmn.bodyShiny?, pkmn.headShiny?)
end end
ret.scale_bitmap(pkmn.sprite_scale) #for pokemon with size differences ret.scale_bitmap(pkmn.sprite_scale) if ret #for pokemon with size differences
return ret return ret
end end

View File

@@ -759,7 +759,7 @@ def give_date_specific_hats()
current_date = Time.new current_date = Time.new
if (current_date.day == 24 || current_date.day == 25) && current_date.month == 12 if (current_date.day == 24 || current_date.day == 25) && current_date.month == 12
if !$Trainer.unlocked_hats.include?(HAT_SANTA) if !$Trainer.unlocked_hats.include?(HAT_SANTA)
pbCallBub(2,@event_id,true) pbCallBub(2, @event_id, true)
pbMessage("Hi! We're giving out a special hat today for the holidays season. Enjoy!") pbMessage("Hi! We're giving out a special hat today for the holidays season. Enjoy!")
obtainHat(HAT_SANTA) obtainHat(HAT_SANTA)
end end
@@ -851,7 +851,6 @@ def replaceFusionSpecies(pokemon, speciesToChange, newSpecies)
echoln currentBody echoln currentBody
echoln currentHead echoln currentHead
return if !should_update_body && !should_update_head return if !should_update_body && !should_update_head
newSpeciesBody = should_update_body ? newSpecies : currentBody newSpeciesBody = should_update_body ? newSpecies : currentBody
@@ -897,26 +896,35 @@ end
#@formatter:off #@formatter:off
def get_constellation_variable(pokemon) def get_constellation_variable(pokemon)
case pokemon case pokemon
when :IVYSAUR; return VAR_CONSTELLATION_IVYSAUR when :IVYSAUR;
when :WARTORTLE; return VAR_CONSTELLATION_WARTORTLE return VAR_CONSTELLATION_IVYSAUR
when :ARCANINE; return VAR_CONSTELLATION_ARCANINE when :WARTORTLE;
when :MACHOKE; return VAR_CONSTELLATION_MACHOKE return VAR_CONSTELLATION_WARTORTLE
when :RAPIDASH; return VAR_CONSTELLATION_RAPIDASH when :ARCANINE;
when :GYARADOS; return VAR_CONSTELLATION_GYARADOS return VAR_CONSTELLATION_ARCANINE
when :ARTICUNO; return VAR_CONSTELLATION_ARTICUNO when :MACHOKE;
when :MEW; return VAR_CONSTELLATION_MEW return VAR_CONSTELLATION_MACHOKE
# when :POLITOED; return VAR_CONSTELLATION_POLITOED when :RAPIDASH;
# when :URSARING; return VAR_CONSTELLATION_URSARING return VAR_CONSTELLATION_RAPIDASH
# when :LUGIA; return VAR_CONSTELLATION_LUGIA when :GYARADOS;
# when :HOOH; return VAR_CONSTELLATION_HOOH return VAR_CONSTELLATION_GYARADOS
# when :CELEBI; return VAR_CONSTELLATION_CELEBI when :ARTICUNO;
# when :SLAKING; return VAR_CONSTELLATION_SLAKING return VAR_CONSTELLATION_ARTICUNO
# when :JIRACHI; return VAR_CONSTELLATION_JIRACHI when :MEW;
# when :TYRANTRUM; return VAR_CONSTELLATION_TYRANTRUM return VAR_CONSTELLATION_MEW
# when :SHARPEDO; return VAR_CONSTELLATION_SHARPEDO # when :POLITOED; return VAR_CONSTELLATION_POLITOED
# when :ARCEUS; return VAR_CONSTELLATION_ARCEUS # when :URSARING; return VAR_CONSTELLATION_URSARING
# when :LUGIA; return VAR_CONSTELLATION_LUGIA
# when :HOOH; return VAR_CONSTELLATION_HOOH
# when :CELEBI; return VAR_CONSTELLATION_CELEBI
# when :SLAKING; return VAR_CONSTELLATION_SLAKING
# when :JIRACHI; return VAR_CONSTELLATION_JIRACHI
# when :TYRANTRUM; return VAR_CONSTELLATION_TYRANTRUM
# when :SHARPEDO; return VAR_CONSTELLATION_SHARPEDO
# when :ARCEUS; return VAR_CONSTELLATION_ARCEUS
end end
end end
#@formatter:on #@formatter:on
def promptCaughtPokemonAction(pokemon) def promptCaughtPokemonAction(pokemon)
@@ -1398,7 +1406,7 @@ def get_mart_exclusive_items(city)
return items_list return items_list
end end
def calculate_pokemon_weight(pokemon) def calculate_pokemon_weight(pokemon, nerf = 0)
base_weight = pokemon.weight base_weight = pokemon.weight
ivs = [] ivs = []
@@ -1426,18 +1434,20 @@ def calculate_pokemon_weight(pokemon)
# Cap the weight between min and max values # Cap the weight between min and max values
weight = [[weight, min_weight].max, max_weight].min weight = [[weight, min_weight].max, max_weight].min
weight -= nerf if weight - nerf > min_weight
return weight.round(2) # Round to 2 decimal places return weight.round(2) # Round to 2 decimal places
end end
def generate_weight_contest_entries(species, level, resultsVariable) #nerf: remove x kg from each generated pokemon
def generate_weight_contest_entries(species, level, resultsVariable, nerf = 0)
#echoln "Generating Pokemon" #echoln "Generating Pokemon"
pokemon1 = pbGenerateWildPokemon(species, level) #Pokemon.new(species,level) pokemon1 = pbGenerateWildPokemon(species, level) #Pokemon.new(species,level)
pokemon2 = pbGenerateWildPokemon(species, level) #Pokemon.new(species,level) pokemon2 = pbGenerateWildPokemon(species, level) #Pokemon.new(species,level)
new_weights = [] new_weights = []
new_weights << calculate_pokemon_weight(pokemon1) new_weights << calculate_pokemon_weight(pokemon1, nerf)
new_weights << calculate_pokemon_weight(pokemon2) new_weights << calculate_pokemon_weight(pokemon2, nerf)
echoln new_weights echoln new_weights
echoln "(nerfed by -#{nerf})"
pbSet(resultsVariable, new_weights.max) pbSet(resultsVariable, new_weights.max)
end end
@@ -1491,8 +1501,6 @@ def isPlayerFemale()
return pbGet(VAR_TRAINER_GENDER) == GENDER_FEMALE return pbGet(VAR_TRAINER_GENDER) == GENDER_FEMALE
end end
def optionsMenu(options = [], cmdIfCancel = -1, startingOption = 0) def optionsMenu(options = [], cmdIfCancel = -1, startingOption = 0)
cmdIfCancel = -1 if !cmdIfCancel cmdIfCancel = -1 if !cmdIfCancel
result = pbShowCommands(nil, options, cmdIfCancel, startingOption) result = pbShowCommands(nil, options, cmdIfCancel, startingOption)
@@ -1527,13 +1535,12 @@ QUEST_REWARDS = [
QuestReward.new(10, :LANTERN, 1, "This will allow you to illuminate caves without having to use a HM! Practical, isn't it?"), QuestReward.new(10, :LANTERN, 1, "This will allow you to illuminate caves without having to use a HM! Practical, isn't it?"),
QuestReward.new(15, :LINKINGCORD, 3, "This strange cable triggers the evolution of Pokémon that typically evolve via trade. I know you'll put it to good use!"), QuestReward.new(15, :LINKINGCORD, 3, "This strange cable triggers the evolution of Pokémon that typically evolve via trade. I know you'll put it to good use!"),
QuestReward.new(20, :SLEEPINGBAG, 1, "This handy item will allow you to sleep anywhere you want. You won't even need hotels anymore!"), QuestReward.new(20, :SLEEPINGBAG, 1, "This handy item will allow you to sleep anywhere you want. You won't even need hotels anymore!"),
QuestReward.new(30, :MISTSTONE, 1, "This rare stone can evolve any Pokémon, regardless of their level or evolution method. Use it wisely!",true), QuestReward.new(30, :MISTSTONE, 1, "This rare stone can evolve any Pokémon, regardless of their level or evolution method. Use it wisely!", true),
QuestReward.new(45, :MASTERBALL, 1, "This rare ball can catch any Pokémon. Don't waste it!",true), QuestReward.new(50, :GSBALL, 1, "This mysterious ball is rumored to be the key to call upon the protector of Ilex Forest. It's a precious relic."),
QuestReward.new(60, :GSBALL, 1, "This mysterious ball is rumored to be the key to call upon the protector of Ilex Forest. It's a precious relic."), QuestReward.new(60, :MASTERBALL, 1, "This rare ball can catch any Pokémon. Don't waste it!", true),
] ]
def turnEventTowardsEvent(turning, turnedTowards)
def turnEventTowardsEvent(turning,turnedTowards)
event_x = turnedTowards.x event_x = turnedTowards.x
event_y = turnedTowards.y event_y = turnedTowards.y
if turning.x < event_x if turning.x < event_x
@@ -1561,8 +1568,7 @@ def turnPlayerTowardsEvent(event)
end end
end end
def displaySpriteWindowWithMessage(pif_sprite, message = "", x = 0, y = 0, z = 0)
def displaySpriteWindowWithMessage(pif_sprite, message = "", x = 0, y = 0,z=0)
spriteLoader = BattleSpriteLoader.new spriteLoader = BattleSpriteLoader.new
sprite_bitmap = spriteLoader.load_pif_sprite_directly(pif_sprite) sprite_bitmap = spriteLoader.load_pif_sprite_directly(pif_sprite)
pictureWindow = PictureWindow.new(sprite_bitmap.bitmap) pictureWindow = PictureWindow.new(sprite_bitmap.bitmap)
@@ -1584,13 +1590,12 @@ def select_any_pokemon()
return pbChooseList(commands, 0, nil, 1) return pbChooseList(commands, 0, nil, 1)
end end
SWITCH_SS_ANNE_DEPARTED = 88
SWITCH_SS_ANNE_DEPARTED=88 SWITCH_SNORLAX_GONE_ROUTE_12 = 110
SWITCH_SNORLAX_GONE_ROUTE_12=110
SWITCH_TELEPORT_NPC = 122 SWITCH_TELEPORT_NPC = 122
SWITCH_GOT_DIVE=317 SWITCH_GOT_DIVE = 317
SWITCH_GOT_ROCK_CLIMB=661 SWITCH_GOT_ROCK_CLIMB = 661
SWITCH_GOT_WATERFALL=388 SWITCH_GOT_WATERFALL = 388
def fixMissedHMs() def fixMissedHMs()
#Flash #Flash
@@ -1609,7 +1614,7 @@ def fixMissedHMs()
end end
#Surf #Surf
if $PokemonBag.pbQuantity(:HM03) < 1 && $game_self_switches[[107, 1, "A"]] if $PokemonBag.pbQuantity(:HM03) < 1 && $game_self_switches[[107, 1, "A"]]
pbReceiveItem(:HM03) pbReceiveItem(:HM03)
end end
@@ -1619,22 +1624,87 @@ def fixMissedHMs()
end end
#Fly #Fly
if $PokemonBag.pbQuantity(:HM02) < 1 && $game_self_switches[[439, 1, "B"]] if $PokemonBag.pbQuantity(:HM02) < 1 && $game_self_switches[[439, 1, "B"]]
pbReceiveItem(:HM02) pbReceiveItem(:HM02)
end end
#Waterfall #Waterfall
if $PokemonBag.pbQuantity(:HM05) < 1 && $game_switches[SWITCH_GOT_WATERFALL] if $PokemonBag.pbQuantity(:HM05) < 1 && $game_switches[SWITCH_GOT_WATERFALL]
pbReceiveItem(:HM05) pbReceiveItem(:HM05)
end end
#Dive #Dive
if $PokemonBag.pbQuantity(:HM06) < 1 && $game_switches[SWITCH_GOT_DIVE] if $PokemonBag.pbQuantity(:HM06) < 1 && $game_switches[SWITCH_GOT_DIVE]
pbReceiveItem(:HM06) pbReceiveItem(:HM06)
end end
#Rock Climb #Rock Climb
if $PokemonBag.pbQuantity(:HM10) < 1 && $game_switches[SWITCH_GOT_ROCK_CLIMB] if $PokemonBag.pbQuantity(:HM10) < 1 && $game_switches[SWITCH_GOT_ROCK_CLIMB]
pbReceiveItem(:HM10) pbReceiveItem(:HM10)
end end
end end
def fixFinishedRocketQuests()
fix_broken_TR_quests()
var_tr_missions_cerulean = 288
switch_tr_mission_cerulean_4 = 1116
switch_tr_mission_celadon_1 = 1084
switch_tr_mission_celadon_2 = 1086
switch_tr_mission_celadon_3 = 1088
switch_tr_mission_celadon_4 = 1110
switch_pinkan_done = 1119
nb_cerulean_missions = pbGet(var_tr_missions_cerulean)
finishTRQuest("tr_cerulean_1", :SUCCESS, true) if nb_cerulean_missions >= 1 && !pbCompletedQuest?("tr_cerulean_1")
echoln pbCompletedQuest?("tr_cerulean_1")
finishTRQuest("tr_cerulean_2", :SUCCESS, true) if nb_cerulean_missions >= 2 && !pbCompletedQuest?("tr_cerulean_2")
finishTRQuest("tr_cerulean_3", :SUCCESS, true) if nb_cerulean_missions >= 3 && !pbCompletedQuest?("tr_cerulean_3")
finishTRQuest("tr_cerulean_4", :SUCCESS, true) if $game_switches[switch_tr_mission_cerulean_4] && !pbCompletedQuest?("tr_cerulean_4")
finishTRQuest("tr_celadon_1", :SUCCESS, true) if $game_switches[switch_tr_mission_celadon_1] && !pbCompletedQuest?("tr_celadon_1")
finishTRQuest("tr_celadon_2", :SUCCESS, true) if $game_switches[switch_tr_mission_celadon_2] && !pbCompletedQuest?("tr_celadon_2")
finishTRQuest("tr_celadon_3", :SUCCESS, true) if $game_switches[switch_tr_mission_celadon_3] && !pbCompletedQuest?("tr_celadon_3")
finishTRQuest("tr_celadon_4", :SUCCESS, true) if $game_switches[switch_tr_mission_celadon_4] && !pbCompletedQuest?("tr_celadon_4")
finishTRQuest("tr_pinkan", :SUCCESS, true) if $game_switches[switch_pinkan_done] && !pbCompletedQuest?("tr_pinkan")
end
def fix_broken_TR_quests()
for trainer_quest in $Trainer.quests
if trainer_quest.id == 0 #tr quests were all set to ID 0 instead of their real ID in v 6.4.0
for rocket_quest_id in TR_QUESTS.keys
rocket_quest = TR_QUESTS[rocket_quest_id]
next if !rocket_quest
if trainer_quest.name == rocket_quest.name
trainer_quest.id = rocket_quest_id
end
end
end
end
end
def failAllIncompleteRocketQuests()
for trainer_quest in $Trainer.quests
finishTRQuest("tr_cerulean_1", :FAILURE) if trainer_quest.id == "tr_cerulean_1" && !pbCompletedQuest?("tr_cerulean_1")
finishTRQuest("tr_cerulean_2", :FAILURE) if trainer_quest.id == "tr_cerulean_2" && !pbCompletedQuest?("tr_cerulean_2")
finishTRQuest("tr_cerulean_3", :FAILURE) if trainer_quest.id == "tr_cerulean_3" && !pbCompletedQuest?("tr_cerulean_3")
finishTRQuest("tr_cerulean_4", :FAILURE) if trainer_quest.id == "tr_cerulean_4" && !pbCompletedQuest?("tr_cerulean_4")
finishTRQuest("tr_celadon_1", :FAILURE) if trainer_quest.id == "tr_celadon_1" && !pbCompletedQuest?("tr_celadon_1")
finishTRQuest("tr_celadon_2", :FAILURE) if trainer_quest.id == "tr_celadon_2" && !pbCompletedQuest?("tr_celadon_2")
finishTRQuest("tr_celadon_3", :FAILURE) if trainer_quest.id == "tr_celadon_3" && !pbCompletedQuest?("tr_celadon_3")
finishTRQuest("tr_celadon_4", :FAILURE) if trainer_quest.id == "tr_celadon_4" && !pbCompletedQuest?("tr_celadon_4")
end
end
def qmarkMaskCheck()
if $Trainer.seen_qmarks_sprite
unless hasHat?(HAT_QMARKS)
obtainHat(HAT_QMARKS)
obtainClothes(CLOTHES_GLITCH)
end
end
end

View File

@@ -227,7 +227,11 @@ class GenOneStyle
@sprites["2poke"].y = 100 @sprites["2poke"].y = 100
@sprites["fpoke"] = Sprite.new(@viewport) @sprites["fpoke"] = Sprite.new(@viewport)
@sprites["fpoke"].bitmap = @spriteLoader.load_pif_sprite(random_fusion).bitmap
fusedPoke = @spriteLoader.load_pif_sprite(random_fusion)
if fusedPoke
@sprites["fpoke"].bitmap = fusedPoke.bitmap
end
@sprites["fpoke"].x = 125 @sprites["fpoke"].x = 125
@sprites["fpoke"].y = 100 @sprites["fpoke"].y = 100
@sprites["fpoke"].z = 999 @sprites["fpoke"].z = 999
@@ -401,8 +405,10 @@ class GenOneStyle
@sprites["2poke"].bitmap = @spriteLoader.load_base_sprite(random_fusion_head).bitmap @sprites["2poke"].bitmap = @spriteLoader.load_base_sprite(random_fusion_head).bitmap
wait(150) wait(150)
fusedPoke = @spriteLoader.load_pif_sprite(random_fusion)
@sprites["fpoke"].bitmap = @spriteLoader.load_pif_sprite(random_fusion).bitmap if fusedPoke
@sprites["fpoke"].bitmap = fusedPoke.bitmap
end
end end
@sprites["fpoke"].opacity -= 10 @sprites["fpoke"].opacity -= 10

View File

@@ -92,7 +92,7 @@ QUESTS = {
#Cerulean hotel #Cerulean hotel
3 => Quest.new(3, "Playing Cupid", "A boy in Cerulean City wants you bring a love letter to a Pokémon Breeder named Maude. She's probably somewhere in one of the routes near Cerulean City", QuestBranchHotels, "BW (18)", "Cerulean City", HotelQuestColor), 3 => Quest.new(3, "Playing Cupid", "A boy in Cerulean City wants you bring a love letter to a Pokémon Breeder named Maude. She's probably somewhere in one of the routes near Cerulean City", QuestBranchHotels, "BW (18)", "Cerulean City", HotelQuestColor),
4 => Quest.new(4, "Fishing for Sole", "A fisherman wants you to fish up an old boot. Hook it up with the old rod in any body of water.", QuestBranchHotels, "BW (71)", "Cerulean City", HotelQuestColor), 4 => Quest.new(4, "Fishing for Sole", "A fisherman wants you to fish up an old boot. Hook it up with the old rod in any body of water.", QuestBranchHotels, "BW (71)", "Cerulean City", HotelQuestColor),
5 => Quest.new(5, "Johto Pokémon", "An traveler in the PokéMart wants you to show him a Pokémon native to the Johto region.", QuestBranchHotels, "traveler_johto", "Cerulean City", HotelQuestColor), 5 => Quest.new(5, "Johto Pokémon", "A traveler in the PokéMart wants you to show him a Pokémon native to the Johto region.", QuestBranchHotels, "traveler_johto", "Cerulean City", HotelQuestColor),
"cerulean_2" => Quest.new(5, "Type Experts", "Defeat all of the Type Experts scattered around the Kanto region (#{pbGet(VAR_TYPE_EXPERTS_BEATEN)}/#{TOTAL_NB_TYPE_EXPERTS})", QuestBranchHotels, "expert-normal", "Cerulean City", HotelQuestColor), "cerulean_2" => Quest.new(5, "Type Experts", "Defeat all of the Type Experts scattered around the Kanto region (#{pbGet(VAR_TYPE_EXPERTS_BEATEN)}/#{TOTAL_NB_TYPE_EXPERTS})", QuestBranchHotels, "expert-normal", "Cerulean City", HotelQuestColor),
#Route 24 #Route 24
@@ -267,6 +267,10 @@ end
def pbSetQuest(id, completed) def pbSetQuest(id, completed)
$Trainer.quests = [] if $Trainer.quests.class == NilClass $Trainer.quests = [] if $Trainer.quests.class == NilClass
for q in $Trainer.quests for q in $Trainer.quests
echoln id
echoln q.id
echoln q.completed
echoln "----"
q.completed = completed if q.id == id q.completed = completed if q.id == id
end end
end end
@@ -328,12 +332,16 @@ class Questlog
@box = 0 @box = 0
@completed = [] @completed = []
@ongoing = [] @ongoing = []
fix_broken_TR_quests()
for q in $Trainer.quests for q in $Trainer.quests
@ongoing << q if !q.completed && @ongoing.include?(q) @ongoing << q if !q.completed && @ongoing.include?(q)
@completed << q if q.completed && @completed.include?(q) @completed << q if q.completed && @completed.include?(q)
end end
for q in $Trainer.quests for q in $Trainer.quests
echoln "#{q.id}: #{q.completed}"
@ongoing << q if !q.completed @ongoing << q if !q.completed
@completed << q if q.completed @completed << q if q.completed
end end
@@ -376,6 +384,7 @@ class Questlog
pbUpdate pbUpdate
end end
def pbUpdate def pbUpdate
@frame = 0 @frame = 0
loop do loop do
@@ -385,13 +394,13 @@ class Questlog
if @scene == 0 if @scene == 0
break if Input.trigger?(Input::B) break if Input.trigger?(Input::B)
pbList(@sel_one) if Input.trigger?(Input::C) pbList(@sel_one) if Input.trigger?(Input::C)
pbSwitch(:DOWN) if Input.trigger?(Input::DOWN) pbSwitch(:DOWN) if Input.press?(Input::DOWN)
pbSwitch(:UP) if Input.trigger?(Input::UP) pbSwitch(:UP) if Input.trigger?(Input::UP)
end end
if @scene == 1 if @scene == 1
pbMain if Input.trigger?(Input::B) pbMain if Input.trigger?(Input::B)
pbMove(:DOWN) if Input.trigger?(Input::DOWN) pbMove(:DOWN) if Input.press?(Input::DOWN)
pbMove(:UP) if Input.trigger?(Input::UP) pbMove(:UP) if Input.press?(Input::UP)
pbLoad(0) if Input.trigger?(Input::C) pbLoad(0) if Input.trigger?(Input::C)
pbArrows pbArrows
end end
@@ -640,7 +649,6 @@ class Questlog
end end
def pbMove(dir) def pbMove(dir)
pbWait(1)
if dir == :DOWN if dir == :DOWN
return if @sel_two == @ongoing.size - 1 && @mode == 0 return if @sel_two == @ongoing.size - 1 && @mode == 0
return if @sel_two == @completed.size - 1 && @mode == 1 return if @sel_two == @completed.size - 1 && @mode == 1
@@ -743,10 +751,11 @@ class Questlog
end end
end end
end end
pbWait(4)
end end
def pbList(id) def pbList(id)
pbWait(1) pbWait(2)
@sel_two = 0 @sel_two = 0
@page = 0 @page = 0
@scene = 1 @scene = 1

View File

@@ -29,12 +29,9 @@ def acceptTRQuest(id, show_description = true)
end end
def addRocketQuest(id) def addRocketQuest(id)
echoln $Trainer.quests.length
$Trainer.quests = [] if $Trainer.quests.class == NilClass $Trainer.quests = [] if $Trainer.quests.class == NilClass
quest = TR_QUESTS[id] quest = TR_QUESTS[id]
$Trainer.quests << quest if quest $Trainer.quests << quest if quest
echoln $Trainer.quests.length
end end
def showNewTRMissionMessage(title, description, show_description) def showNewTRMissionMessage(title, description, show_description)
@@ -65,17 +62,17 @@ def finishTRQuest(id, status, silent = false)
end end
TR_QUESTS = { TR_QUESTS = {
"tr_cerulean_1" => Quest.new(0, "Creepy Crawlies", "The Team Rocket Captain has tasked you with clearing the bug infestation in the temporary Rocket HQ in Cerulean City", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor), "tr_cerulean_1" => Quest.new("tr_cerulean_1", "Creepy Crawlies", "The Team Rocket Captain has tasked you with clearing the bug infestation in the temporary Rocket HQ in Cerulean City", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor),
"tr_cerulean_2" => Quest.new(0, "No Fishing Zone", "Intimidate the fishermen at Nugget Bridge until they leave the area.", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor), "tr_cerulean_2" => Quest.new("tr_cerulean_2", "No Fishing Zone", "Intimidate the fishermen at Nugget Bridge until they leave the area.", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor),
"tr_cerulean_3" => Quest.new(0, "Disobedient Pokémon", "Bring back the Pokémon given by the Team Rocket Captain fainted to teach it a lesson.", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor), "tr_cerulean_3" => Quest.new("tr_cerulean_3", "Disobedient Pokémon", "Bring back the Pokémon given by the Team Rocket Captain fainted to teach it a lesson.", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor),
"tr_cerulean_4" => Quest.new(0, "Gran Theft Pokémon!", "Follow Petrel and go steal a rare Pokémon from a young girl.", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor), "tr_cerulean_4" => Quest.new("tr_cerulean_4", "Gran Theft Pokémon!", "Follow Petrel and go steal a rare Pokémon from a young girl.", QuestBranchRocket, "rocket_petrel", "Cerulean City", TRQuestColor),
"tr_celadon_1" => Quest.new(0, "Supplying the new grunts", "Catch 4 Pokémon with Rocket Balls in the outskirts of Celadon City.", QuestBranchRocket, "rocket_archer", "Celadon City", TRQuestColor), "tr_celadon_1" => Quest.new("tr_celadon_1", "Supplying the new grunts", "Catch 4 Pokémon with Rocket Balls in the outskirts of Celadon City.", QuestBranchRocket, "rocket_archer", "Celadon City", TRQuestColor),
"tr_celadon_2" => Quest.new(0, "Interception!", "Intercept the TMs shipment to the Celadon Store and pose as the delivery person to deliver fake TMs.", QuestBranchRocket, "rocket_archer", "Celadon City", TRQuestColor), "tr_celadon_2" => Quest.new("tr_celadon_2", "Interception!", "Intercept the TMs shipment to the Celadon Store and pose as the delivery person to deliver fake TMs.", QuestBranchRocket, "rocket_archer", "Celadon City", TRQuestColor),
"tr_celadon_3" => Quest.new(0, "Pokémon Collector", "Go meet a Pokémon collector on Route 22, near Viridian City and get his rare Pokémon.", QuestBranchRocket, "rocket_archer", "Celadon City", TRQuestColor), "tr_celadon_3" => Quest.new( "tr_celadon_3", "Pokémon Collector", "Go meet a Pokémon collector on Route 22, near Viridian City and get his rare Pokémon.", QuestBranchRocket, "rocket_archer", "Celadon City", TRQuestColor),
"tr_celadon_4" => Quest.new(0, "Operation Shutdown", "The Team Rocket HQ is being raided! Regroup with the rest of the grunts in Goldenrod Tunnel!", QuestBranchRocket, "rocket_archer", "Goldenrod City", TRQuestColor), "tr_celadon_4" => Quest.new("tr_celadon_4", "Operation Shutdown", "The Team Rocket HQ is being raided! Regroup with the rest of the grunts in Goldenrod Tunnel!", QuestBranchRocket, "rocket_archer", "Goldenrod City", TRQuestColor),
"tr_pinkan" => Quest.new(0, "Pinkan Island!", "Help Team Rocket with a heist on a Pokémon nature preserve!", QuestBranchRocket, "rocket_archer", "Goldenrod City", TRQuestColor), "tr_pinkan" => Quest.new("tr_pinkan", "Pinkan Island!", "Help Team Rocket with a heist on a Pokémon nature preserve!", QuestBranchRocket, "rocket_archer", "Goldenrod City", TRQuestColor),
} }

View File

@@ -476,9 +476,6 @@ RandPokeNick = [
"Carlos", "Carlos",
"hm_slave", "hm_slave",
"Varicelle", "Varicelle",
"Google",
"Twitter",
"Facebook",
"Mia", "Mia",
"miam", "miam",
"Lame-o", "Lame-o",

View File

@@ -14,7 +14,7 @@ module Settings
VERSION_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/VERSION" VERSION_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/VERSION"
CUSTOM_DEX_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/infinitefusion-e18/main/Data/dex.json" CUSTOM_DEX_FILE_URL = "https://raw.githubusercontent.com/infinitefusion/pif-downloadables/refs/heads/master/dex.json"
# CUSTOM SPRITES # CUSTOM SPRITES
AUTOGEN_SPRITES_REPO_URL = "" AUTOGEN_SPRITES_REPO_URL = ""
@@ -24,11 +24,13 @@ module Settings
BASE_POKEMON_ALT_SPRITES_REPO_URL = "" BASE_POKEMON_ALT_SPRITES_REPO_URL = ""
BASE_POKEMON_ALT_SPRITES_NEW_URL = "" BASE_POKEMON_ALT_SPRITES_NEW_URL = ""
BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/" BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/" #legacy
CUSTOM_FUSIONS_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_custom/" CUSTOM_FUSIONS_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_custom/" #legacy
BASE_POKEMON_SPRITESHEET_RESIZED_URL = "https://infinitefusion.net/spritesheets_resized/spritesheets_base/" #legacy
CUSTOM_FUSIONS_SPRITESHEET_RESIZED_URL = "https://infinitefusion.net/spritesheets_resized/spritesheets_custom/" #legacy
BASE_POKEMON_SPRITESHEET_RESIZED_URL = "https://infinitefusion.net/spritesheets_resized/spritesheets_base/" BASE_POKEMON_SPRITESHEET_TRUE_SIZE_URL = "https://infinitefusion.net/customsprites/spritesheets/spritesheets_base/"
CUSTOM_FUSIONS_SPRITESHEET_RESIZED_URL = "https://infinitefusion.net/spritesheets_resized/spritesheets_custom/" CUSTOM_FUSIONS_SPRITESHEET_TRUE_SIZE_URL = "https://infinitefusion.net/customsprites/spritesheets/spritesheets_custom/"
CUSTOMSPRITES_RATE_MAX_NB_REQUESTS = 5 #Nb. requests allowed in each time window CUSTOMSPRITES_RATE_MAX_NB_REQUESTS = 5 #Nb. requests allowed in each time window
CUSTOMSPRITES_ENTRIES_RATE_TIME_WINDOW = 120 # In seconds CUSTOMSPRITES_ENTRIES_RATE_TIME_WINDOW = 120 # In seconds
@@ -42,8 +44,8 @@ module Settings
AI_ENTRIES_RATE_LOG_FILE = 'Data/pokedex/rate_limit.log' # Path to the log file AI_ENTRIES_RATE_LOG_FILE = 'Data/pokedex/rate_limit.log' # Path to the log file
#Spritepack #Spritepack
NEWEST_SPRITEPACK_MONTH = 12 NEWEST_SPRITEPACK_MONTH = 1
NEWEST_SPRITEPACK_YEAR = 2024 NEWEST_SPRITEPACK_YEAR = 2025
end end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -220,6 +220,13 @@
"tags": "celadon", "tags": "celadon",
"howToGet": "city-exclusive outfit" "howToGet": "city-exclusive outfit"
}, },
{
"id": "flying",
"name": "Flying Outfit",
"description": "An aerodynamic outfit for gliding through the air. It captures the essence of Flying-type Pokémon.",
"price": 10000,
"tags": "type-flying,special"
},
{ {
"id": "fusionnerd", "id": "fusionnerd",
"name": "Fusion Outfit", "name": "Fusion Outfit",
@@ -228,6 +235,11 @@
"tags": "pokemon-fused,special,", "tags": "pokemon-fused,special,",
"howToGet": "cinnabar lab after fusing 100 times" "howToGet": "cinnabar lab after fusing 100 times"
}, },
{
"id": "glitzerset",
"name": "Glitzer",
"price": 2550
},
{ {
"id": "gothhoodie", "id": "gothhoodie",
"name": "Goth Hoodie", "name": "Goth Hoodie",
@@ -306,8 +318,8 @@
}, },
{ {
"id": "lady", "id": "lady",
"name": "Summer Dress", "name": "Elegant Dress",
"description": "An elegant white dress with a ribbon at the waist, radiating a sense of grace and sophistication.", "description": "An elegant summer dress with a ribbon at the waist, radiating a sense of grace and sophistication.",
"done": "yes", "done": "yes",
"price": 1500, "price": 1500,
"tags": "cerulean", "tags": "cerulean",

View File

@@ -12,7 +12,7 @@
"name": "Bald", "name": "Bald",
"description": "A completely bald look - no hair, no fuss, just pure, unadulterated scalp!", "description": "A completely bald look - no hair, no fuss, just pure, unadulterated scalp!",
"done": "yes", "done": "yes",
"price": 0, "price": 500,
"tags": "no-hair" "tags": "no-hair"
}, },
{ {
@@ -87,6 +87,7 @@
}, },
{ {
"id": "dancer", "id": "dancer",
"name": "Dancer",
"done": "yes", "done": "yes",
"price": 500, "price": 500,
"tags": "fuchsia", "tags": "fuchsia",
@@ -151,12 +152,19 @@
"tags": "medium, untied, spiky, thick, npc,", "tags": "medium, untied, spiky, thick, npc,",
"howToGet": "garys mom in their house (lol)?" "howToGet": "garys mom in their house (lol)?"
}, },
{
"id": "glitzerset",
"name": "Pomeg Cut",
"description": "A cute cut that is styled like a Pomeg berry!",
"price": 2000,
"tags": "kin"
},
{ {
"id": "happinysuit", "id": "happinysuit",
"name": "Curled Happiny Ponytail", "name": "Playhouse Ponytail",
"description": "A cute curly ponytail styled just like a Happiny. A wonderfully charming style for any fans of Baby Pokémon.", "description": "A cute curly ponytail styled just like a Happiny. A wonderfully charming style for any fans of Baby Pokémon.",
"len": 108, "len": 108,
"price": 5000, "price": 3000,
"tags": "long, tied, smooth, pokemon,", "tags": "long, tied, smooth, pokemon,",
"howToGet": "quest?" "howToGet": "quest?"
}, },
@@ -172,6 +180,7 @@
}, },
{ {
"id": "highbun", "id": "highbun",
"name": "High-bun",
"done": "yes", "done": "yes",
"price": 500, "price": 500,
"tags": "default" "tags": "default"
@@ -194,7 +203,10 @@
}, },
{ {
"id": "ho-oh", "id": "ho-oh",
"price": 5000 "name": "Phoenix Crest",
"description": "A bold, fiery style featuring a high, curved ponytail resembling the sweeping feathers of Ho-Oh.",
"price": 5000,
"howToGet": "saffron boutique"
}, },
{ {
"id": "janine", "id": "janine",
@@ -207,7 +219,10 @@
"howToGet": "fuchsia city salon" "howToGet": "fuchsia city salon"
}, },
{ {
"id": "jessie" "id": "jessie",
"name": "Rocket Wave",
"description": "A dramatic, sleek style with ultra-long hair swept back into a high, gravity-defying wave.",
"price": 2000
}, },
{ {
"id": "kurt", "id": "kurt",
@@ -294,10 +309,15 @@
"name": "Lunar Cut", "name": "Lunar Cut",
"description": "A bob cut shaped like a crescent moon, with a sleek, curved silhouette.", "description": "A bob cut shaped like a crescent moon, with a sleek, curved silhouette.",
"price": 5000, "price": 5000,
"tags": "special",
"howToGet": "quest? cresselia outfit" "howToGet": "quest? cresselia outfit"
}, },
{ {
"id": "lycanrocshorthair" "id": "lycanrocshorthair",
"name": "Lupine Cut",
"description": "A sleek cut that is reminiscent of a Lycanroc's mane",
"price": 3000,
"tags": "special"
}, },
{ {
"id": "mawile", "id": "mawile",
@@ -429,7 +449,7 @@
"tags": "default," "tags": "default,"
}, },
{ {
"id": "pompadourdelinquentoutfit", "id": "pompadour",
"name": "Pompadour", "name": "Pompadour",
"price": 2000, "price": 2000,
"tags": "violet," "tags": "violet,"
@@ -483,7 +503,8 @@
"howToGet": "Celadon special" "howToGet": "Celadon special"
}, },
{ {
"id": "samurai" "id": "samurai",
"name": "Samurai"
}, },
{ {
"id": "short1", "id": "short1",
@@ -505,12 +526,16 @@
}, },
{ {
"id": "shortspike", "id": "shortspike",
"name": "Short Spikes",
"done": "yes", "done": "yes",
"price": 500, "price": 500,
"tags": "default," "tags": "default,"
}, },
{ {
"id": "SpecialLatias" "id": "SpecialLatias",
"name": "Eon Bob",
"description": "A layered bob with long, outward curls, exuding a gentle and mysterious charm.",
"price": 5000
}, },
{ {
"id": "vetf", "id": "vetf",

View File

@@ -142,6 +142,7 @@
"id": "carbink", "id": "carbink",
"name": "Carbink Headband", "name": "Carbink Headband",
"description": "A cute, rock-solid headband resembling Carbink.", "description": "A cute, rock-solid headband resembling Carbink.",
"done": "yes",
"price": 5000, "price": 5000,
"tags": "hat,pokemon-carbink" "tags": "hat,pokemon-carbink"
}, },
@@ -333,6 +334,7 @@
"id": "firefigther", "id": "firefigther",
"name": "Firefighter Hat", "name": "Firefighter Hat",
"description": "A safety helmet made for brave heroes who put their lives on the line every day.", "description": "A safety helmet made for brave heroes who put their lives on the line every day.",
"done": "yes",
"price": 0, "price": 0,
"tags": "hat, cinnabar,", "tags": "hat, cinnabar,",
"howToGet": "type trainer" "howToGet": "type trainer"
@@ -366,6 +368,15 @@
"tags": "hat,trainer", "tags": "hat,trainer",
"howToGet": "gym reward" "howToGet": "gym reward"
}, },
{
"id": "glitzerset",
"name": "Glitched Mask",
"description": "An odd mask that makes you look like you just stepped out of a corrupted save file. ",
"done": "yes",
"price": 10000,
"tags": "mask,special,",
"howToGet": "Obtained by defeating a Pokemon without a sprite"
},
{ {
"id": "glasses", "id": "glasses",
"name": "Round Glasses", "name": "Round Glasses",
@@ -432,9 +443,17 @@
"done": "yes", "done": "yes",
"len": 63, "len": 63,
"price": 10000, "price": 10000,
"tags": "floating,", "tags": "floating,pokemon-shedinja",
"howToGet": "reward for beating the ilex forest shedinja encounter? reward for showing a shedinja to someone?" "howToGet": "reward for beating the ilex forest shedinja encounter? reward for showing a shedinja to someone?"
}, },
{
"id": "headlacecovering",
"name": "Lace Covering",
"description": "A delicate see-through lace covering that is worn over the head.",
"done": "yes",
"price": 4500,
"tags": "hat,vermillion"
},
{ {
"id": "headparas", "id": "headparas",
"name": "Head Paras", "name": "Head Paras",
@@ -590,6 +609,7 @@
"id": "ludicolosombrero", "id": "ludicolosombrero",
"name": "Ludicolo Sombrero", "name": "Ludicolo Sombrero",
"description": "A festive Sombrero that is often worn during fiestas.", "description": "A festive Sombrero that is often worn during fiestas.",
"done": "yes",
"len": 53, "len": 53,
"price": 18000, "price": 18000,
"tags": "hat,pokemon-lotad,pokemon-lombre,pokemon-ludicolo,weather-warm," "tags": "hat,pokemon-lotad,pokemon-lombre,pokemon-ludicolo,weather-warm,"
@@ -608,6 +628,7 @@
"id": "lycanrochooddown", "id": "lycanrochooddown",
"name": "Lycanroc Hood (down)", "name": "Lycanroc Hood (down)",
"description": "A fluffy hood. Down for those who want a little sun.", "description": "A fluffy hood. Down for those who want a little sun.",
"done": "yes",
"price": 12000, "price": 12000,
"tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n," "tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n,"
}, },
@@ -615,6 +636,7 @@
"id": "lycanrochoodup", "id": "lycanrochoodup",
"name": "Lycanroc Hood (up)", "name": "Lycanroc Hood (up)",
"description": "A fluffy hood. Up for those who shy away from the sun", "description": "A fluffy hood. Up for those who shy away from the sun",
"done": "yes",
"price": 12000, "price": 12000,
"tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n," "tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n,"
}, },
@@ -813,7 +835,7 @@
}, },
{ {
"id": "pikhatchuf", "id": "pikhatchuf",
"name": "Head Pikachu", "name": "Head Pikachu (F)",
"description": "A female Pikachu that has taken a liking to perching atop a trainer's head.", "description": "A female Pikachu that has taken a liking to perching atop a trainer's head.",
"done": "yes", "done": "yes",
"len": 75, "len": 75,
@@ -823,7 +845,7 @@
}, },
{ {
"id": "pikhatchum", "id": "pikhatchum",
"name": "Head Pikachu", "name": "Head Pikachu (M)",
"description": "A male Pikachu that has taken a liking to perching atop a trainer's head.", "description": "A male Pikachu that has taken a liking to perching atop a trainer's head.",
"done": "yes", "done": "yes",
"len": 73, "len": 73,
@@ -958,6 +980,14 @@
"price": 4500, "price": 4500,
"tags": "glasses,mask,pokemon-budew,pokemon-roselia,pokemon-roserade,celadon" "tags": "glasses,mask,pokemon-budew,pokemon-roselia,pokemon-roserade,celadon"
}, },
{
"id": "sableyemask",
"name": "Sableye Mask",
"description": "A creepy, gem-eyed disguise that lets you channel your inner trickster.",
"done": "yes",
"price": 4500,
"tags": "mask,pokemon-sableye"
},
{ {
"id": "sabrinasballs", "id": "sabrinasballs",
"name": "Levitating Balls", "name": "Levitating Balls",
@@ -981,6 +1011,7 @@
"id": "santa", "id": "santa",
"name": "Festive Hat", "name": "Festive Hat",
"description": "A warm, snug stocking cap worn during a festive holiday season.", "description": "A warm, snug stocking cap worn during a festive holiday season.",
"done": "yes",
"price": 25000, "price": 25000,
"tags": "hat," "tags": "hat,"
}, },
@@ -1023,6 +1054,14 @@
"price": 3500, "price": 3500,
"tags": "hat,weather-cold,blackthorn,mahogany" "tags": "hat,weather-cold,blackthorn,mahogany"
}, },
{
"id": "skittyTV",
"name": "Skitty TV",
"description": "A wearable TV themed like a Skitty. Use it to watch your battle replays!",
"price": 5000,
"tags": "hat,",
"howToGet": "goldenrod radio tower"
},
{ {
"id": "sleepmask", "id": "sleepmask",
"name": "Mareep Sleep Mask", "name": "Mareep Sleep Mask",
@@ -1140,6 +1179,14 @@
"price": 2500, "price": 2500,
"tags": "glasses,violet," "tags": "glasses,violet,"
}, },
{
"id": "tvhead",
"name": "TV Head",
"description": "A TV worn as a helmet that could probably be used to watch replays of your battles... If only it worked!",
"done": "yes",
"price": 4500,
"tags": "hat,"
},
{ {
"id": "veteranM", "id": "veteranM",
"name": "Black Flat Cap", "name": "Black Flat Cap",
@@ -1163,6 +1210,7 @@
"id": "waterdress", "id": "waterdress",
"name": "Straw Hat", "name": "Straw Hat",
"description": "A simple hat made out of straw that is typically worn by bug-catchers.", "description": "A simple hat made out of straw that is typically worn by bug-catchers.",
"done": "yes",
"price": 1500, "price": 1500,
"tags": "hat,pewter,", "tags": "hat,pewter,",
"howToGet": "trainer clothing store?" "howToGet": "trainer clothing store?"

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
1736379358 1739029866
1736379359 1739029866
1736379359 1739029866
1739029871

View File

@@ -1,6 +1,79 @@
Graphics/CustomBattlers/spritesheets/spritesheets_base/315.png Graphics/CustomBattlers/spritesheets/spritesheets_base/4.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/206.png Graphics/CustomBattlers/spritesheets/spritesheets_base/16.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/206/206.png Graphics/CustomBattlers/spritesheets/spritesheets_base/475.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/250.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/250/250.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/420/420.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/25/25.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/135.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/209.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/209/209a.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/232/232.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/47/47b.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/227/227.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/137/137.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/47/47a.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/47/47.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/248.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/449.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/449/449.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/137/137a.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/222/222a.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/43.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/301.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/114.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/114/114.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/294/294.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/25.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/199.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/321.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/321/321.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/451/451.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/287.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/374.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/374/374b.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/233/233.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/161/161.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/260/260.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/240.png Graphics/CustomBattlers/spritesheets/spritesheets_base/240.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/296.png Graphics/CustomBattlers/spritesheets/spritesheets_base/46.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/296/296.png Graphics/CustomBattlers/spritesheets/spritesheets_custom/46/46.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/418.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/412.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/412/412.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/315.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/371.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/371/371.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/386.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/1.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/1/1.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/254.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/255.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/170.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/398.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/398/398.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/413.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/263.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/263/263.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/242.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/411.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/411/411.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/19.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/163.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/255.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/34.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/34/34.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/163/163.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/233/233.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/185.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/344.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/344/344.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/184.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/385.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/424.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/339.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/339/339.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/83.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/468.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/225.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/225/225.png

BIN
Graphics/.DS_Store vendored Normal file

Binary file not shown.

BIN
Graphics/Battlers/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 12 KiB

BIN
Graphics/Characters/.DS_Store vendored Normal file

Binary file not shown.

BIN
Graphics/Characters/player/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,5 @@
IMPORTANT:
- The items are named this way to note they are a set but in game it'd be good to clarify what all three are
Outfit - "Glitzer" (due to being based on the "Glitzer Popping" exploit)
Hair - "Pomeg Cut" (Pomeg berries are related to the exploit)
Hat - "Decamark" (also related)

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

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