33 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
189 changed files with 22516 additions and 4395 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

13
.gitignore vendored
View File

@@ -1,7 +1,14 @@
Graphics/CustomBattlers/local_sprites/*
Graphics/Pokemon/FusionIcons/*
Graphics/CustomBattlers/spritesheets/*
Graphics/CustomBattlers/spritesheets
Data/sprites/*
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.

View File

@@ -5,8 +5,8 @@
#==============================================================================#
module Settings
# The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format.
GAME_VERSION = '6.4.5'
GAME_VERSION_NUMBER = "6.4.5"
GAME_VERSION = '6.4.6'
GAME_VERSION_NUMBER = "6.4.7"
LATEST_GAME_RELEASE = "6.4"
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"
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 = ""

View File

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

View File

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

View File

@@ -32,6 +32,8 @@ class Player < Trainer
attr_accessor :card_background
attr_accessor :unlocked_card_backgrounds
attr_accessor :seen_qmarks_sprite
# @return [Array<Boolean>] the player's Gym Badges (true if owned)
attr_accessor :badges
@@ -293,5 +295,7 @@ class Player < Trainer
@card_background = Settings::DEFAULT_TRAINER_CARD_BG
@unlocked_card_backgrounds = [@card_background]
@seen_qmarks_sprite = false
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
@language = 0 # Language (see also Settings::LANGUAGES in script PokemonSystem)
@runstyle = 0 # Default movement speed (0=walk, 1=run)
@bgmvolume = 100 # Volume of background music and ME
@sevolume = 100 # Volume of sound effects
@bgmvolume = 40 # Volume of background music and ME
@sevolume = 40 # Volume of sound effects
@textinput = 1 # Text input mode (0=cursor, 1=keyboard)
@quicksurf = 0
@battle_type = 0

View File

@@ -115,14 +115,16 @@ end
# 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 list sorting between numerical and alphabetical.
def pbChooseSpeciesList(default = nil)
def pbChooseSpeciesList(default = nil,max=nil)
# commands = []
# GameData::Species.each { |s| commands.push([s.id_number, s.real_name, s.id]) if s.form == 0 }
# return pbChooseList(commands, default, nil, -1)
#
defaultNumber = default == nil ? 1 : getDexNumberForSpecies(default)
params = ChooseNumberParams.new
params.setRange(1,PBSpecies.maxValue)
max = max ? max : PBSpecies.maxValue
params.setRange(1,max)
params.setInitialValue(defaultNumber)
dexNum = pbMessageChooseNumber("dex number?",params)
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]
cmd = screen.pbShowCommands(msg, [
_INTL("Set species"),
_INTL("Set form"),
_INTL("Remove form override")], cmd)
_INTL("Set fusion species")], cmd)
break if cmd < 0
case cmd
when 0 # Set species
@@ -871,9 +870,31 @@ PokemonDebugMenuCommands.register("speciesform", {
end
pkmn.calc_stats
$Trainer.pokedex.register(pkmn) if !settingUpBattle
$Trainer.pokedex.set_owned(pkmn.species) if !settingUpBattle
screen.pbRefreshSingle(pkmnid)
end
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
# formcmds = [[], []]
# GameData::Species.each do |sp|
@@ -901,9 +922,9 @@ PokemonDebugMenuCommands.register("speciesform", {
# screen.pbRefreshSingle(pkmnid)
# end
# end
when 2 # Remove form override
pkmn.forced_form = nil
screen.pbRefreshSingle(pkmnid)
# when 2 # Remove form override
# pkmn.forced_form = nil
# screen.pbRefreshSingle(pkmnid)
end
end
next false

View File

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

View File

@@ -119,6 +119,7 @@ class BattleSpriteLoader
new_extractor = get_sprite_extractor_instance(:AUTOGEN)
return new_extractor.load_sprite(pif_sprite)
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.
return AnimatedBitmap.new(Settings::DEFAULT_SPRITE_PATH)
end

View File

@@ -10,8 +10,10 @@ CLOTHES_ADVENTURER = "fantasyadventurersoutfit"
CLOTHES_EMERALD = "emeraldSPE"
CLOTHES_PIKACHU_ONESIE = "pikaonesie"
CLOTHES_GLITCH = "glitzerset"
CLOTHES_BREEDER="PKMBreeder"
CLOTHES_LASS_YELLOW ="lass"
CLOTHES_LASS_BLUE ="lass2"
@@ -48,7 +50,7 @@ HAT_SLOWKING_SHELL = "slowking"
HAT_ZOROARK = "banefulfoxmask"
HAT_FROG = "froghat"
HAT_SANTA = "santa"
HAT_QMARKS = "glitzerset"
HAT_BREEDER_1="breedervisor"
HAT_BREEDER_2="breederbandana"
@@ -67,6 +69,9 @@ HAT_BIANCA = "bianca"
HAT_CLEFAIRY = "clefairyearheadband"
HAT_FLOWER = "mikufairy"
HAT_SKITTY_TV = "skittyTV"
HAT_TVHEAD = "tvhead"
HAT_CARDBOARD_BOX = "box"
HAT_CAPTAIN = "seacaptain"
@@ -116,3 +121,9 @@ HAIR_CHUCK = "chuck" #does not exist yet
HAIR_PRYCE = "pryce" #does not exist yet
HAIR_MORTY = "morty" #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
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
original_color = $Trainer.hair_color
original_hair = $Trainer.hair
$game_switches[SWITCH_SELECTING_CLOTHES]=true
$game_map.update
display_outfit_preview()
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
while (true)
choice = pbShowCommands(nil, commands, commands.length, previous_input)
previous_input = choice
case choice
when 0 #NEXT
when 0 #change base
swapToNextHairVersion()
display_outfit_preview()
ret = false
when 1 #NEXT
#playOutfitChangeAnimation()
pbSEPlay("GUI storage pick up", 80, 100)
shiftHairColor(10)
display_outfit_preview()
ret = true
when 1 #PREVIOUS
when 2 #PREVIOUS
pbSEPlay("GUI storage pick up", 80, 100)
shiftHairColor(-10)
display_outfit_preview()
ret = true
when 2 #Toggle hat
when 3 #Toggle hat
pbSEPlay("GUI storage put down", 80, 100)
if hat == $Trainer.hat
$Trainer.hat = nil
@@ -76,15 +93,16 @@ def selectHairColor
$Trainer.hat = hat
end
display_outfit_preview()
when 3 #Reset
when 4 #Reset
pbSEPlay("GUI storage put down", 80, 100)
$Trainer.hair_color = 0
display_outfit_preview()
ret = false
when 4 #Confirm
when 5 #Confirm
break
else
$Trainer.hair_color = original_color
$Trainer.hair = original_hair
ret = false
break
end

View File

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

View File

@@ -9,7 +9,7 @@ module GameData
else
ret = self.front_sprite_bitmap(species, pkmn.shiny?, pkmn.bodyShiny?, pkmn.headShiny?)
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
end

View File

@@ -759,7 +759,7 @@ def give_date_specific_hats()
current_date = Time.new
if (current_date.day == 24 || current_date.day == 25) && current_date.month == 12
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!")
obtainHat(HAT_SANTA)
end
@@ -851,7 +851,6 @@ def replaceFusionSpecies(pokemon, speciesToChange, newSpecies)
echoln currentBody
echoln currentHead
return if !should_update_body && !should_update_head
newSpeciesBody = should_update_body ? newSpecies : currentBody
@@ -897,26 +896,35 @@ end
#@formatter:off
def get_constellation_variable(pokemon)
case pokemon
when :IVYSAUR; return VAR_CONSTELLATION_IVYSAUR
when :WARTORTLE; return VAR_CONSTELLATION_WARTORTLE
when :ARCANINE; return VAR_CONSTELLATION_ARCANINE
when :MACHOKE; return VAR_CONSTELLATION_MACHOKE
when :RAPIDASH; return VAR_CONSTELLATION_RAPIDASH
when :GYARADOS; return VAR_CONSTELLATION_GYARADOS
when :ARTICUNO; return VAR_CONSTELLATION_ARTICUNO
when :MEW; return VAR_CONSTELLATION_MEW
# when :POLITOED; return VAR_CONSTELLATION_POLITOED
# 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
when :IVYSAUR;
return VAR_CONSTELLATION_IVYSAUR
when :WARTORTLE;
return VAR_CONSTELLATION_WARTORTLE
when :ARCANINE;
return VAR_CONSTELLATION_ARCANINE
when :MACHOKE;
return VAR_CONSTELLATION_MACHOKE
when :RAPIDASH;
return VAR_CONSTELLATION_RAPIDASH
when :GYARADOS;
return VAR_CONSTELLATION_GYARADOS
when :ARTICUNO;
return VAR_CONSTELLATION_ARTICUNO
when :MEW;
return VAR_CONSTELLATION_MEW
# when :POLITOED; return VAR_CONSTELLATION_POLITOED
# 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
#@formatter:on
def promptCaughtPokemonAction(pokemon)
@@ -1398,7 +1406,7 @@ def get_mart_exclusive_items(city)
return items_list
end
def calculate_pokemon_weight(pokemon,nerf=0)
def calculate_pokemon_weight(pokemon, nerf = 0)
base_weight = pokemon.weight
ivs = []
@@ -1426,18 +1434,18 @@ def calculate_pokemon_weight(pokemon,nerf=0)
# Cap the weight between min and max values
weight = [[weight, min_weight].max, max_weight].min
weight -= nerf if weight- nerf > min_weight
weight -= nerf if weight - nerf > min_weight
return weight.round(2) # Round to 2 decimal places
end
#nerf: remove x kg from each generated pokemon
def generate_weight_contest_entries(species, level, resultsVariable,nerf=0)
def generate_weight_contest_entries(species, level, resultsVariable, nerf = 0)
#echoln "Generating Pokemon"
pokemon1 = pbGenerateWildPokemon(species, level) #Pokemon.new(species,level)
pokemon2 = pbGenerateWildPokemon(species, level) #Pokemon.new(species,level)
new_weights = []
new_weights << calculate_pokemon_weight(pokemon1,nerf)
new_weights << calculate_pokemon_weight(pokemon2,nerf)
new_weights << calculate_pokemon_weight(pokemon1, nerf)
new_weights << calculate_pokemon_weight(pokemon2, nerf)
echoln new_weights
echoln "(nerfed by -#{nerf})"
pbSet(resultsVariable, new_weights.max)
@@ -1493,8 +1501,6 @@ def isPlayerFemale()
return pbGet(VAR_TRAINER_GENDER) == GENDER_FEMALE
end
def optionsMenu(options = [], cmdIfCancel = -1, startingOption = 0)
cmdIfCancel = -1 if !cmdIfCancel
result = pbShowCommands(nil, options, cmdIfCancel, startingOption)
@@ -1529,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(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(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(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(30, :MISTSTONE, 1, "This rare stone can evolve any Pokémon, regardless of their level or evolution method. Use it wisely!", 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, :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_y = turnedTowards.y
if turning.x < event_x
@@ -1563,8 +1568,7 @@ def turnPlayerTowardsEvent(event)
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
sprite_bitmap = spriteLoader.load_pif_sprite_directly(pif_sprite)
pictureWindow = PictureWindow.new(sprite_bitmap.bitmap)
@@ -1586,13 +1590,12 @@ def select_any_pokemon()
return pbChooseList(commands, 0, nil, 1)
end
SWITCH_SS_ANNE_DEPARTED=88
SWITCH_SNORLAX_GONE_ROUTE_12=110
SWITCH_SS_ANNE_DEPARTED = 88
SWITCH_SNORLAX_GONE_ROUTE_12 = 110
SWITCH_TELEPORT_NPC = 122
SWITCH_GOT_DIVE=317
SWITCH_GOT_ROCK_CLIMB=661
SWITCH_GOT_WATERFALL=388
SWITCH_GOT_DIVE = 317
SWITCH_GOT_ROCK_CLIMB = 661
SWITCH_GOT_WATERFALL = 388
def fixMissedHMs()
#Flash
@@ -1611,7 +1614,7 @@ def fixMissedHMs()
end
#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)
end
@@ -1621,22 +1624,87 @@ def fixMissedHMs()
end
#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)
end
#Waterfall
if $PokemonBag.pbQuantity(:HM05) < 1 && $game_switches[SWITCH_GOT_WATERFALL]
if $PokemonBag.pbQuantity(:HM05) < 1 && $game_switches[SWITCH_GOT_WATERFALL]
pbReceiveItem(:HM05)
end
#Dive
if $PokemonBag.pbQuantity(:HM06) < 1 && $game_switches[SWITCH_GOT_DIVE]
if $PokemonBag.pbQuantity(:HM06) < 1 && $game_switches[SWITCH_GOT_DIVE]
pbReceiveItem(:HM06)
end
#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)
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["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"].y = 100
@sprites["fpoke"].z = 999
@@ -401,8 +405,10 @@ class GenOneStyle
@sprites["2poke"].bitmap = @spriteLoader.load_base_sprite(random_fusion_head).bitmap
wait(150)
@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
end
@sprites["fpoke"].opacity -= 10

View File

@@ -92,7 +92,7 @@ QUESTS = {
#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),
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),
#Route 24
@@ -267,6 +267,10 @@ end
def pbSetQuest(id, completed)
$Trainer.quests = [] if $Trainer.quests.class == NilClass
for q in $Trainer.quests
echoln id
echoln q.id
echoln q.completed
echoln "----"
q.completed = completed if q.id == id
end
end
@@ -328,12 +332,16 @@ class Questlog
@box = 0
@completed = []
@ongoing = []
fix_broken_TR_quests()
for q in $Trainer.quests
@ongoing << q if !q.completed && @ongoing.include?(q)
@completed << q if q.completed && @completed.include?(q)
end
for q in $Trainer.quests
echoln "#{q.id}: #{q.completed}"
@ongoing << q if !q.completed
@completed << q if q.completed
end
@@ -376,6 +384,7 @@ class Questlog
pbUpdate
end
def pbUpdate
@frame = 0
loop do
@@ -385,13 +394,13 @@ class Questlog
if @scene == 0
break if Input.trigger?(Input::B)
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)
end
if @scene == 1
pbMain if Input.trigger?(Input::B)
pbMove(:DOWN) if Input.trigger?(Input::DOWN)
pbMove(:UP) if Input.trigger?(Input::UP)
pbMove(:DOWN) if Input.press?(Input::DOWN)
pbMove(:UP) if Input.press?(Input::UP)
pbLoad(0) if Input.trigger?(Input::C)
pbArrows
end
@@ -640,7 +649,6 @@ class Questlog
end
def pbMove(dir)
pbWait(1)
if dir == :DOWN
return if @sel_two == @ongoing.size - 1 && @mode == 0
return if @sel_two == @completed.size - 1 && @mode == 1
@@ -743,10 +751,11 @@ class Questlog
end
end
end
pbWait(4)
end
def pbList(id)
pbWait(1)
pbWait(2)
@sel_two = 0
@page = 0
@scene = 1

View File

@@ -29,12 +29,9 @@ def acceptTRQuest(id, show_description = true)
end
def addRocketQuest(id)
echoln $Trainer.quests.length
$Trainer.quests = [] if $Trainer.quests.class == NilClass
quest = TR_QUESTS[id]
$Trainer.quests << quest if quest
echoln $Trainer.quests.length
end
def showNewTRMissionMessage(title, description, show_description)
@@ -65,17 +62,17 @@ def finishTRQuest(id, status, silent = false)
end
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_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_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_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_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("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("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("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_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_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_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_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("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( "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("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",
"hm_slave",
"Varicelle",
"Google",
"Twitter",
"Facebook",
"Mia",
"miam",
"Lame-o",

View File

@@ -14,7 +14,7 @@ module Settings
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
AUTOGEN_SPRITES_REPO_URL = ""
@@ -24,11 +24,13 @@ module Settings
BASE_POKEMON_ALT_SPRITES_REPO_URL = ""
BASE_POKEMON_ALT_SPRITES_NEW_URL = ""
BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/"
CUSTOM_FUSIONS_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_custom/"
BASE_POKEMON_SPRITESHEET_RESIZED_URL = "https://infinitefusion.net/spritesheets_resized/spritesheets_base/"
CUSTOM_FUSIONS_SPRITESHEET_RESIZED_URL = "https://infinitefusion.net/spritesheets_resized/spritesheets_custom/"
BASE_POKEMON_SPRITESHEET_URL = "https://infinitefusion.net/spritesheets/spritesheets_base/" #legacy
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_TRUE_SIZE_URL = "https://infinitefusion.net/customsprites/spritesheets/spritesheets_base/"
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_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
#Spritepack
NEWEST_SPRITEPACK_MONTH = 12
NEWEST_SPRITEPACK_YEAR = 2024
NEWEST_SPRITEPACK_MONTH = 1
NEWEST_SPRITEPACK_YEAR = 2025
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -220,6 +220,13 @@
"tags": "celadon",
"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",
"name": "Fusion Outfit",
@@ -228,6 +235,11 @@
"tags": "pokemon-fused,special,",
"howToGet": "cinnabar lab after fusing 100 times"
},
{
"id": "glitzerset",
"name": "Glitzer",
"price": 2550
},
{
"id": "gothhoodie",
"name": "Goth Hoodie",
@@ -306,8 +318,8 @@
},
{
"id": "lady",
"name": "Summer Dress",
"description": "An elegant white dress with a ribbon at the waist, radiating a sense of grace and sophistication.",
"name": "Elegant Dress",
"description": "An elegant summer dress with a ribbon at the waist, radiating a sense of grace and sophistication.",
"done": "yes",
"price": 1500,
"tags": "cerulean",

View File

@@ -12,7 +12,7 @@
"name": "Bald",
"description": "A completely bald look - no hair, no fuss, just pure, unadulterated scalp!",
"done": "yes",
"price": 0,
"price": 500,
"tags": "no-hair"
},
{
@@ -87,6 +87,7 @@
},
{
"id": "dancer",
"name": "Dancer",
"done": "yes",
"price": 500,
"tags": "fuchsia",
@@ -151,12 +152,19 @@
"tags": "medium, untied, spiky, thick, npc,",
"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",
"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.",
"len": 108,
"price": 5000,
"price": 3000,
"tags": "long, tied, smooth, pokemon,",
"howToGet": "quest?"
},
@@ -172,6 +180,7 @@
},
{
"id": "highbun",
"name": "High-bun",
"done": "yes",
"price": 500,
"tags": "default"
@@ -194,7 +203,10 @@
},
{
"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",
@@ -207,7 +219,10 @@
"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",
@@ -294,10 +309,15 @@
"name": "Lunar Cut",
"description": "A bob cut shaped like a crescent moon, with a sleek, curved silhouette.",
"price": 5000,
"tags": "special",
"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",
@@ -429,7 +449,7 @@
"tags": "default,"
},
{
"id": "pompadourdelinquentoutfit",
"id": "pompadour",
"name": "Pompadour",
"price": 2000,
"tags": "violet,"
@@ -483,7 +503,8 @@
"howToGet": "Celadon special"
},
{
"id": "samurai"
"id": "samurai",
"name": "Samurai"
},
{
"id": "short1",
@@ -505,12 +526,16 @@
},
{
"id": "shortspike",
"name": "Short Spikes",
"done": "yes",
"price": 500,
"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",

View File

@@ -142,6 +142,7 @@
"id": "carbink",
"name": "Carbink Headband",
"description": "A cute, rock-solid headband resembling Carbink.",
"done": "yes",
"price": 5000,
"tags": "hat,pokemon-carbink"
},
@@ -333,6 +334,7 @@
"id": "firefigther",
"name": "Firefighter Hat",
"description": "A safety helmet made for brave heroes who put their lives on the line every day.",
"done": "yes",
"price": 0,
"tags": "hat, cinnabar,",
"howToGet": "type trainer"
@@ -366,6 +368,15 @@
"tags": "hat,trainer",
"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",
"name": "Round Glasses",
@@ -432,9 +443,17 @@
"done": "yes",
"len": 63,
"price": 10000,
"tags": "floating,",
"tags": "floating,pokemon-shedinja",
"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",
"name": "Head Paras",
@@ -590,6 +609,7 @@
"id": "ludicolosombrero",
"name": "Ludicolo Sombrero",
"description": "A festive Sombrero that is often worn during fiestas.",
"done": "yes",
"len": 53,
"price": 18000,
"tags": "hat,pokemon-lotad,pokemon-lombre,pokemon-ludicolo,weather-warm,"
@@ -608,6 +628,7 @@
"id": "lycanrochooddown",
"name": "Lycanroc Hood (down)",
"description": "A fluffy hood. Down for those who want a little sun.",
"done": "yes",
"price": 12000,
"tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n,"
},
@@ -615,6 +636,7 @@
"id": "lycanrochoodup",
"name": "Lycanroc Hood (up)",
"description": "A fluffy hood. Up for those who shy away from the sun",
"done": "yes",
"price": 12000,
"tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n,"
},
@@ -813,7 +835,7 @@
},
{
"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.",
"done": "yes",
"len": 75,
@@ -823,7 +845,7 @@
},
{
"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.",
"done": "yes",
"len": 73,
@@ -958,6 +980,14 @@
"price": 4500,
"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",
"name": "Levitating Balls",
@@ -981,6 +1011,7 @@
"id": "santa",
"name": "Festive Hat",
"description": "A warm, snug stocking cap worn during a festive holiday season.",
"done": "yes",
"price": 25000,
"tags": "hat,"
},
@@ -1023,6 +1054,14 @@
"price": 3500,
"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",
"name": "Mareep Sleep Mask",
@@ -1140,6 +1179,14 @@
"price": 2500,
"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",
"name": "Black Flat Cap",
@@ -1163,6 +1210,7 @@
"id": "waterdress",
"name": "Straw Hat",
"description": "A simple hat made out of straw that is typically worn by bug-catchers.",
"done": "yes",
"price": 1500,
"tags": "hat,pewter,",
"howToGet": "trainer clothing store?"

File diff suppressed because it is too large Load Diff

Binary file not shown.

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,5 +1,4 @@
1737558625
1737558626
1737558626
1737558656
1737558656
1739029866
1739029866
1739029866
1739029871

View File

@@ -1,55 +1,79 @@
Graphics/CustomBattlers/spritesheets/spritesheets_base/315.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/206.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/206/206.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/240.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/296.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/296/296.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/219.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/457.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/457/457.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/298.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/390.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/174.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/311.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/311/311.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/115.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/129.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/129/129.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/67.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/329.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/53.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/358.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/358/358b.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/9.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/4.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/16.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/155.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/155/155.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/461.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/84.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/84/84.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/98.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/180.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/139.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/245.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/245/245.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/331.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/3.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/3/3.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/286.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/410.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/410/410.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/181.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/469.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/469/469.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/380.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/260.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/358/358.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/498.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/429.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/124.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/124/124a.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/267.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/46.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_base/100.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/448.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/448/448.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

Binary file not shown.

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.

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

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