Compare commits
39 Commits
whirlIslan
...
871045ca46
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
871045ca46 | ||
|
|
0c918bbfcb | ||
|
|
2488a2575e | ||
|
|
2c5b161029 | ||
|
|
32dc832b5c | ||
|
|
9fa7dac43f | ||
|
|
d3e4fd3d33 | ||
|
|
16b2deeefb | ||
|
|
b8d479b801 | ||
|
|
38377b703e | ||
|
|
1fed55f7fa | ||
|
|
3ebd3fd68a | ||
|
|
2fcc7fc9cd | ||
|
|
692a25bd8e | ||
|
|
24943e092f | ||
|
|
935c548016 | ||
|
|
44f114b5e0 | ||
|
|
1809d246b6 | ||
|
|
a9de6b6c97 | ||
|
|
1499465ce0 | ||
|
|
f72c7fff7b | ||
|
|
a9267b7bad | ||
|
|
fed8490fc3 | ||
|
|
a62544e8d8 | ||
|
|
9d30b0e0fb | ||
|
|
5640871dcd | ||
|
|
e7d2330a2f | ||
|
|
71894707b1 | ||
|
|
727bccfe61 | ||
|
|
e0201bf021 | ||
|
|
8f1f4a0f9b | ||
|
|
8bcc4f226b | ||
|
|
5fc4935a0c | ||
|
|
064a09664a | ||
|
|
6c621d04e4 | ||
|
|
d523f30eb7 | ||
|
|
b2b8a4ec12 | ||
|
|
33ab16c3c6 | ||
|
|
4730228557 |
13
.gitignore
vendored
@@ -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
BIN
Audio/SE/Cries/MINIOR_M.ogg
Normal file
BIN
Data/.DS_Store
vendored
Normal 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
|
||||||
]
|
]
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -476,9 +476,6 @@ RandPokeNick = [
|
|||||||
"Carlos",
|
"Carlos",
|
||||||
"hm_slave",
|
"hm_slave",
|
||||||
"Varicelle",
|
"Varicelle",
|
||||||
"Google",
|
|
||||||
"Twitter",
|
|
||||||
"Facebook",
|
|
||||||
"Mia",
|
"Mia",
|
||||||
"miam",
|
"miam",
|
||||||
"Lame-o",
|
"Lame-o",
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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?"
|
||||||
|
|||||||
38676
Data/pokedex/dex.json
@@ -1,3 +1,4 @@
|
|||||||
1736379358
|
1739029866
|
||||||
1736379359
|
1739029866
|
||||||
1736379359
|
1739029866
|
||||||
|
1739029871
|
||||||
@@ -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
BIN
Graphics/Battlers/.DS_Store
vendored
Normal file
BIN
Graphics/Battlers/special/138.140.142.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
Graphics/Battlers/special/139.141.142.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 12 KiB |
BIN
Graphics/Characters/.DS_Store
vendored
Normal file
BIN
Graphics/Characters/player/.DS_Store
vendored
Normal file
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
BIN
Graphics/Characters/player/clothes/flying/clothes_run_flying.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
@@ -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)
|
||||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.8 KiB |