Compare commits

...

12 Commits

Author SHA1 Message Date
chardub 7012af625d Updates dye kit menu 2025-03-15 09:37:54 -04:00
chardub 88ed3c000e adds icons for dye kit items 2025-03-14 19:42:23 -04:00
chardub b53ffd0c73 Removes quitmenu prompt when exiting clothes menu 2025-03-14 15:18:23 -04:00
chardub 048e51b9ae Fixes some legendaries not respawning 2025-03-14 12:43:24 -04:00
chardub 47876255e9 Removes some debugging logs 2025-03-14 11:32:15 -04:00
chardub d754fc45f5 Removes commented code 2025-03-14 11:21:43 -04:00
chardub 03b832a897 Fixes hats menu navigation issue 2025-03-14 11:19:44 -04:00
chardub 5343792f8c Fixes swapping hats visual glitch when only wearing one hat 2025-03-14 11:06:44 -04:00
chardub 324e8b5d18 Adds more custom pokedex entries 2025-03-13 10:50:24 -04:00
chardub ce8d182b2f Adds some hats and clothes 2025-03-13 10:49:05 -04:00
chardub 4edd8e9719 Fixes graphical glitch when pressing shift on sprites pokedex page 2025-03-13 10:02:12 -04:00
chardub aa396cf402 Battle menu: Automatically select the Fight option after switching out a Pokémon 2025-03-12 10:45:54 -04:00
89 changed files with 860 additions and 610 deletions
Vendored
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -219,7 +219,10 @@ class PokeBattle_Battle
break
end
when 2 # Pokémon
break if pbPartyMenu(idxBattler)
if pbPartyMenu(idxBattler)
@scene.setLastCommandIndex(idxBattler,0)
break
end
when 3 # Run
# NOTE: "Run" is only an available option for the first battler the
# player chooses an action for in a round. Attempting to run
@@ -1,4 +1,9 @@
class PokeBattle_Scene
def setLastCommandIndex(battlerIndex,commandIndex)
@lastCmd[battlerIndex] = commandIndex
end
#=============================================================================
# The player chooses a main command for a Pokémon
# Return values: -1=Cancel, 0=Fight, 1=Bag, 2=Pokémon, 3=Run, 4=Call
+1 -1
View File
@@ -688,7 +688,7 @@ class PokemonPokedexInfo_Scene
pbUpdate
dorefresh = false
if Input.trigger?(Input::ACTION)
changeEntryPage()
#changeEntryPage()
elsif Input.trigger?(Input::BACK)
pbPlayCloseMenuSE
break
+5
View File
@@ -18,6 +18,9 @@ CLOTHES_FOSSIL_F ="sada"
CLOTHES_TREVENANT= "trevenantforestkingcloak"
CLOTHES_WAITRESS = "maid"
CLOTHES_WAITER = "butler"
CLOTHES_LASS_YELLOW ="lass"
CLOTHES_LASS_BLUE ="lass2"
@@ -69,6 +72,7 @@ HAT_BREEDER_3="egg"
HAT_BREEDEROUTFIT="PKMBreeder"
HAT_WAITRESS = "maid"
FUSION_HAT = "fusionnerd"
FUSION_OUTFIT = "fusionnerd"
@@ -136,3 +140,4 @@ HAIR_CRESSELIA = "lunarbob"
HAIR_LYCANROC="lycanrocshorthair"
HAIR_HAPPINY="happinysuit"
HAIR_LATIAS="SpecialLatias"
HAIR_GARDEVOIR="gardevoir"
@@ -81,6 +81,11 @@ class ClothesMartAdapter < OutfitsMartAdapter
$Trainer.clothes != @worn_clothes
end
def putOnSelectedOutfit()
putOnClothes($Trainer.clothes)
@worn_clothes = $Trainer.clothes
end
def putOnOutfit(item)
putOnClothes(item.id) if item
@worn_clothes = item.id if item
@@ -89,26 +89,6 @@ end
SWAP_HAT_POSITIONS_CAPTION = "Switch hats position"
#unused
# def set_hat_adapter_options(adapter)
# slot1_hat = $Trainer.hat ? "Swap #{get_hat_by_id($Trainer.hat).name}" : "(Empty slot)"
# slot2_hat = $Trainer.hat2 ? "Swap #{get_hat_by_id($Trainer.hat2).name}" : "(Empty slot)"
# options = [slot1_hat,slot2_hat]
# options << SWAP_HAT_POSITIONS_CAPTION if $Trainer.hat && $Trainer.hat2
# options << "Cancel"
# hat_options_choice = optionsMenu(options)
# if options[hat_options_choice] == SWAP_HAT_POSITIONS_CAPTION
# switchHatsPosition()
# return nil
# end
# if hat_options_choice == options.length #cancel
# return nil
# end
# is_secondary = hat_options_choice ==1
# adapter.set_secondary_hat(is_secondary)
# return adapter
# end
#is_secondary only used for hats
def openSelectOutfitMenu(stock = [], itemType =nil, is_secondary=false)
adapter = getAdapter(itemType, stock, false, is_secondary)
@@ -145,38 +125,6 @@ def changeHatMenu(is_secondary_hat = false)
openSelectOutfitMenu(stock, :HAT, is_secondary_hat)
end
# def changeOutfit()
# hat1_name = get_hat_by_id($Trainer.hat) ? get_hat_by_id($Trainer.hat).name : "(Empty)"
# hat2_name = get_hat_by_id($Trainer.hat2) ? get_hat_by_id($Trainer.hat2).name : "(Empty)"
#
# commands = []
# commands[cmdClothes = commands.length] = _INTL("Change clothes")
# commands[cmdHat = commands.length] = _INTL("Change hat 1 (#{hat1_name})")
# commands[cmdHat2 = commands.length] = _INTL("Change hat 2 (#{hat2_name})")
# commands[switchHats = commands.length] = _INTL("Switch hat positions")
# commands[cmdQuit = commands.length] = _INTL("Quit")
#
# #TODO change this into a graphical menu with icons
# loop do
# cmd = pbMessage(_INTL("What would you like to do?"), commands, cmdQuit + 1)
# if cmd == cmdClothes
# changeClothesMenu()
# break
# elsif cmd == cmdHat
# changeHatMenu()
# break
# elsif cmd == cmdHat2
# changeHatMenu(true)
# break
# elsif cmd == switchHats
# switchHatsPosition()
# break
# else
# break
# end
# end
# end
def changeOutfit()
commands = []
commands[cmdHat = commands.length] = _INTL("Change hat")
@@ -48,7 +48,7 @@ class ClothesShopPresenter < PokemonMartScreen
end
# returns if should stay in the menu
# returns true if should stay in the menu
def playerClothesActionsMenu(item)
cmd_wear = "Wear"
cmd_dye = "Dye Kit"
@@ -59,9 +59,9 @@ class ClothesShopPresenter < PokemonMartScreen
choice = pbMessage("What would you like to do?", options, -1)
if options[choice] == cmd_wear
putOnClothes(item)
putOnClothes(item,false)
$Trainer.clothes_color = @adapter.get_dye_color(item.id)
return false
return true
elsif options[choice] == cmd_dye
dyeClothes()
end
@@ -72,19 +72,19 @@ class ClothesShopPresenter < PokemonMartScreen
putOnClothes(item)
end
def quitMenuPrompt(item)
return true if !@adapter.is_a?(HatsMartAdapter)
def quitMenuPrompt()
return true if !(@adapter.is_a?(HatsMartAdapter) || @adapter.is_a?(ClothesMartAdapter))
boolean_changes_detected = @adapter.player_changed_clothes?
return true if !boolean_changes_detected
pbPlayCancelSE
cmd_confirm = "Set outfit"
cmd_discard = "Discard changes"
cmd_cancel = "Cancel"
options = [cmd_confirm,cmd_discard,cmd_cancel]
choice = pbMessage("You have unsaved changes!",options,2)
options = [cmd_discard,cmd_confirm,cmd_cancel]
choice = pbMessage("You have unsaved changes!",options,3)
case options[choice]
when cmd_confirm
confirmPutClothes(item)
@adapter.putOnSelectedOutfit
pbPlayDecisionSE
return true
when cmd_discard
@@ -101,12 +101,12 @@ class ClothesShopPresenter < PokemonMartScreen
item = nil
loop do
item = @scene.pbChooseBuyItem
#break if !item
if !item
break if @adapter.isShop?
quit_menu_choice = quitMenuPrompt(item)
break if quit_menu_choice
item = @scene.pbChooseBuyItem
#quit_menu_choice = quitMenuPrompt()
#break if quit_menu_choice
break
next
end
@@ -154,7 +154,6 @@ class ClothesShopPresenter < PokemonMartScreen
@stock.compact!
pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") }
@adapter.addItem(item)
# break
end
@scene.pbEndBuyScene
end
@@ -53,9 +53,6 @@ class ClothesShopView < PokemonMart_Scene
pbScrollMap(DIRECTION_LEFT, 7, 6)
pbScrollMap(DIRECTION_DOWN, 5, 6)
$game_player.turn_generic(@initial_direction)
#$scene.reset_map(true)
#pbRefreshSceneMap
# $scene.reset_map(false)
end
def refreshStock(adapter)
@@ -70,9 +67,6 @@ class ClothesShopView < PokemonMart_Scene
@subscene.pbRefresh
else
itemwindow = @sprites["itemwindow"]
#@sprites["icon"].item = itemwindow.item
#@sprites["icon"].item = itemwindow.item
item = itemwindow.item
if itemwindow.item
if itemwindow.item.is_a?(Symbol)
@@ -10,6 +10,8 @@ class HairMartAdapter < OutfitsMartAdapter
@version = getCurrentHairVersion().to_i
@worn_hair = $Trainer.hair
@worn_hat = $Trainer.hat
@worn_hat2 = $Trainer.hat2
@hat_visible = false
@removable = true
@previous_item= find_first_item()
@@ -105,8 +107,14 @@ class HairMartAdapter < OutfitsMartAdapter
item = @previous_item if item.is_a?(Symbol)
@previous_item = find_first_item() if !item.is_a?(Symbol)
displayed_hat = @hat_visible ? @worn_hat : nil
displayed_hat2 = @hat_visible ? @worn_hat2 : nil
previewWindow.hat = displayed_hat
previewWindow.hat2 = displayed_hat2
$Trainer.hat = displayed_hat
$Trainer.hat2 = displayed_hat2
itemId = getCurrentHairId(item.id)
previewWindow.hair = itemId
$Trainer.hair = itemId
@@ -142,6 +150,8 @@ class HairMartAdapter < OutfitsMartAdapter
$Trainer.hair = @worn_hair
$Trainer.hat = @worn_hat
$Trainer.hat2 = @worn_hat2
end
def get_unlocked_items_list()
@@ -38,15 +38,27 @@ class HatShopView < ClothesShopView
return @stock[itemwindow.index]
end
def displayLayerIcons(selected_item=nil)
def handleHatlessLayerIcons(selected_item)
other_hat = @adapter.is_secondary_hat ? $Trainer.hat : $Trainer.hat2
if !selected_item.is_a?(Hat)
if @adapter.is_secondary_hat
@sprites["wornHat_layer2"].bitmap=nil
else
@sprites["wornHat_layer1"].bitmap=nil
end
return
end
if !other_hat.is_a?(Hat)
if @adapter.is_secondary_hat
@sprites["wornHat_layer1"].bitmap=nil
else
@sprites["wornHat_layer2"].bitmap=nil
end
end
end
def displayLayerIcons(selected_item=nil)
handleHatlessLayerIcons(selected_item)
hat1Filename = getOverworldHatFilename($Trainer.hat)
hat2Filename = getOverworldHatFilename($Trainer.hat2)
@@ -157,6 +157,18 @@ class HatsMartAdapter < OutfitsMartAdapter
$Trainer.hat != @worn_clothes || $Trainer.hat2 != @worn_clothes2
end
def putOnSelectedOutfit()
putOnHat($Trainer.hat,true,false) if $Trainer.hat
putOnHat($Trainer.hat2,true,true) if $Trainer.hat2
@worn_clothes = $Trainer.hat
@worn_clothes2 = $Trainer.hat2
playOutfitChangeAnimation()
pbMessage(_INTL("You put on the hat(s)!\\wtnp[30]"))
end
def putOnOutfit(item)
return unless item.is_a?(Outfit)
putOnHat(item.id,false,@is_secondary_hat)
+60
View File
@@ -1718,3 +1718,63 @@ def qmarkMaskCheck()
end
end
end
def purchaseDyeKitMenu(hats_kit_price=0,clothes_kit_price=0)
commands = []
command_hats = "Hats Dye Kit ($#{hats_kit_price})"
command_clothes = "Clothes Dye Kit ($#{clothes_kit_price})"
command_cancel = "Cancel"
commands << command_hats if !$PokemonBag.pbHasItem?(:HATSDYEKIT)
commands << command_clothes if !$PokemonBag.pbHasItem?(:CLOTHESDYEKIT)
commands << command_cancel
if commands.length <= 1
pbCallBub(2,@event_id)
pbMessage("\\C[1]Dye Kits\\C[0] can be used to dye clothes all sorts of colours!")
pbCallBub(2,@event_id)
pbMessage("You can use them at any time when you change clothes.")
return
end
pbCallBub(2,@event_id)
pbMessage("\\GWelcome! Are you interested in dyeing your outfits different colours?")
pbCallBub(2,@event_id)
pbMessage("I make handy \\C[1]Dye Kits\\C[0] from my Smeargle's paint that can be used to dye your outfits any color you want!")
pbCallBub(2,@event_id)
pbMessage("\\GWhat's more is that it's reusable so you can go completely wild with it if you want! Are you interested?")
choice = optionsMenu(commands,commands.length)
case commands[choice]
when command_hats
if $Trainer.money < hats_kit_price
pbCallBub(2,@event_id)
pbMessage("Oh, you don't have enough money...")
return
end
pbMessage("\\G\\PN purchased the dye kit.")
$Trainer.money -= hats_kit_price
pbSEPlay("SlotsCoin")
Kernel.pbReceiveItem(:HATSDYEKIT)
pbCallBub(2,@event_id)
pbMessage("\\GHere you go! Have fun dyeing your hats!")
when command_clothes
if $Trainer.money < clothes_kit_price
pbCallBub(2,@event_id)
pbMessage("Oh, you don't have enough money...")
return
end
pbMessage("\\G\\PN purchased the dye kit.")
$Trainer.money -= clothes_kit_price
pbSEPlay("SlotsCoin")
Kernel.pbReceiveItem(:CLOTHESDYEKIT)
pbCallBub(2,@event_id)
pbMessage("\\GHere you go! Have fun dyeing your clothes!")
end
pbCallBub(2,@event_id)
pbMessage("You can use \\C[1]Dye Kits\\C[0] at any time when you change clothes.")
end
+7
View File
@@ -46,7 +46,14 @@
def onLoadExistingGame()
migrateOldSavesToCharacterCustomization()
clear_all_images()
loadDateSpecificChanges()
end
def loadDateSpecificChanges()
current_date = Time.new
if (current_date.day == 1 && current_date.month == 4)
$Trainer.hat2=HAT_CLOWN if $Trainer.unlocked_hats.include?(HAT_CLOWN)
end
end
def onStartingNewGame() end
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+18 -2
View File
@@ -107,6 +107,12 @@
"tags": "azalea,special,",
"howToGet": "type trainer"
},
{
"id": "butler",
"name": "Butler Uniform",
"price": 5000,
"tags": "special,"
},
{
"id": "BusinessSuit",
"name": "Business Suit",
@@ -130,7 +136,7 @@
"description": "A mysterious long black cloak or dress, worn over black leggings.",
"len": 65,
"done": "yes",
"price": 10000,
"price": 6500,
"tags": "lavender,",
"howToGet": "city exclusive outfit"
},
@@ -255,7 +261,8 @@
{
"id": "glitzerset",
"name": "Glitzer",
"price": 2550
"price": 2550,
"tags": "special,"
},
{
"id": "gothhoodie",
@@ -375,6 +382,7 @@
"len": 74,
"done": "yes",
"price": 0,
"tags": "special,",
"howToGet": "starting outfit"
},
{
@@ -408,6 +416,12 @@
"price": 18000,
"tags": "pokemon-rockruff,pokemon-lycanroc_d,pokemon-lycanroc_n,"
},
{
"id": "maid",
"name": "Maid Uniform",
"price": 5000,
"tags": "special,"
},
{
"id": "marshweater",
"name": "Marshweater",
@@ -591,12 +605,14 @@
"id": "sada",
"name": "Primitive Clothes (F)",
"price": 10000,
"tags": "special",
"howToGet": "fossil guy final"
},
{
"id": "sado",
"name": "Primitive Clothes (M)",
"price": 10000,
"tags": "special",
"howToGet": "fossil guy final"
},
{
+9
View File
@@ -140,8 +140,17 @@
},
{
"id": "fusionnerd",
"name": "Side-Swept Fringe",
"description": "A bold, asymmetrical hairstyle where strands fuse into a stylish wave.",
"price": 1000
},
{
"id": "gardevoir",
"name": "Guardian Fringe",
"description": "A neat fringe that covers one eye that is styled to look like a Gardevoir.",
"price": 3000,
"howToGet": "saffron boutique"
},
{
"id": "gary",
"name": "Front Spikes",
+20 -1
View File
@@ -502,6 +502,13 @@
"tags": "floating,pokemon-shedinja",
"howToGet": "reward for beating the ilex forest shedinja encounter? reward for showing a shedinja to someone?"
},
{
"id": "haxorushelmet",
"name": "Jaw Helmet",
"description": "A fearsome helmet crafted in the shape of a Haxorus's jaw. It is sure to intimidate your enemies! ",
"price": 8000,
"tags": "pokemon-axew,pokemon-fraxure,pokemon-haxorus,"
},
{
"id": "headlacecovering",
"name": "Lace Covering",
@@ -722,6 +729,12 @@
"tags": "hat,trainer,johto,",
"howToGet": "regional set"
},
{
"id": "maid",
"name": "Mob Cap",
"price": 1500,
"tags": "hat,"
},
{
"id": "magicap",
"name": "Magikarp Balaclava",
@@ -1220,7 +1233,7 @@
},
{
"id": "surgeglasses",
"name": "Sunglasses",
"name": "Surge Shades",
"description": "Shockingly cool sunglasses.",
"done": "yes",
"len": 27,
@@ -1312,6 +1325,12 @@
"tags": "hat,trainer,galar,",
"howToGet": "trainer clothing store?"
},
{
"id": "voltorbitembarrette",
"name": "Pokéball Barrette",
"price": 1500,
"tags": "hariclip,pokemon-voltorb,pokemon-electrode,"
},
{
"id": "waterdress",
"name": "Straw Hat",
View File
+1 -2
View File
@@ -1,2 +1 @@
1741723971
1741723972
1742045788
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 950 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 B

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 446 KiB

After

Width:  |  Height:  |  Size: 446 KiB