diff --git a/Data/Actors.rxdata b/Data/Actors.rxdata index 7967a5432..41edc8e26 100644 Binary files a/Data/Actors.rxdata and b/Data/Actors.rxdata differ diff --git a/Data/Animations.rxdata b/Data/Animations.rxdata index a900929a9..71336e1f0 100644 Binary files a/Data/Animations.rxdata and b/Data/Animations.rxdata differ diff --git a/Data/Armors.rxdata b/Data/Armors.rxdata index 2249bec14..901f2bb2b 100644 Binary files a/Data/Armors.rxdata and b/Data/Armors.rxdata differ diff --git a/Data/CommonEvents.rxdata b/Data/CommonEvents.rxdata index a505dc4f9..2c3a12d33 100644 Binary files a/Data/CommonEvents.rxdata and b/Data/CommonEvents.rxdata differ diff --git a/Data/Enemies.rxdata b/Data/Enemies.rxdata index 004ee903d..be622f513 100644 Binary files a/Data/Enemies.rxdata and b/Data/Enemies.rxdata differ diff --git a/Data/Items.rxdata b/Data/Items.rxdata index 3e62ba6d2..fe767fa0b 100644 Binary files a/Data/Items.rxdata and b/Data/Items.rxdata differ diff --git a/Data/Map151.rxdata b/Data/Map151.rxdata index 6fc1c616e..4f8daafb1 100644 Binary files a/Data/Map151.rxdata and b/Data/Map151.rxdata differ diff --git a/Data/MapInfos.rxdata b/Data/MapInfos.rxdata index 4aa69b483..260b6eeec 100644 Binary files a/Data/MapInfos.rxdata and b/Data/MapInfos.rxdata differ diff --git a/Data/Scripts/005_Sprites/016_Sprite_Player.rb b/Data/Scripts/005_Sprites/016_Sprite_Player.rb index 914ce7fec..8a29f9391 100644 --- a/Data/Scripts/005_Sprites/016_Sprite_Player.rb +++ b/Data/Scripts/005_Sprites/016_Sprite_Player.rb @@ -9,8 +9,8 @@ class Sprite_Player < Sprite_Character hatFilename = "" hairFilename = "" @hair = Sprite_Hair.new(self, hairFilename, @character_name, @viewport) - @hat = Sprite_Hat.new(self, hatFilename, @character_name, @viewport) - @hat2 = Sprite_Hat.new(self, hatFilename, @character_name, @viewport,3) + @hat = Sprite_Hat.new(self, hatFilename, @character_name, @viewport,3) + @hat2 = Sprite_Hat.new(self, hatFilename, @character_name, @viewport,2) @previous_skinTone = 0 @@ -63,11 +63,11 @@ class Sprite_Player < Sprite_Character outfitFilename = getOverworldOutfitFilename(Settings::PLAYER_TEMP_OUTFIT_FALLBACK) if !pbResolveBitmap(outfitFilename) hairFilename = getOverworldHairFilename($Trainer.hair) hatFilename = getOverworldHatFilename($Trainer.hat) - hat2Filename = getOverworldHatFilename($Trainer.hat2) + hat2Filename = getOverworldHatFilename($Trainer.hat(true)) hair_color_shift = $Trainer.hair_color hat_color_shift = $Trainer.hat_color - hat2_color_shift = $Trainer.hat2_color + hat2_color_shift = $Trainer.hat_color(true) clothes_color_shift = $Trainer.clothes_color diff --git a/Data/Scripts/015_Trainers and player/004_Player.rb b/Data/Scripts/015_Trainers and player/004_Player.rb index cb760b883..e5ab4b69b 100644 --- a/Data/Scripts/015_Trainers and player/004_Player.rb +++ b/Data/Scripts/015_Trainers and player/004_Player.rb @@ -27,10 +27,13 @@ class Player < Trainer attr_accessor :dyed_clothes attr_accessor :favorite_hat + attr_accessor :favorite_hat2 + attr_accessor :favorite_clothes attr_accessor :last_worn_outfit attr_accessor :last_worn_hat + attr_accessor :last_worn_hat2 attr_accessor :surfing_pokemon @@ -94,8 +97,22 @@ class Player < Trainer end - def last_worn_hat - return @last_worn_hat + def last_worn_hat(is_secondary=false) + return is_secondary ? @last_worn_hat2 : @last_worn_hat + end + + + def set_last_worn_hat(value, is_secondary=false) + if is_secondary + @last_worn_hat = value + else + @last_worn_hat = value + end + end + + + def last_worn_hat2 + return @last_worn_hat2 end # Sets the player's coins amount. It can not exceed {Settings::MAX_COINS}. @@ -109,6 +126,41 @@ class Player < Trainer @outfit=value end + def favorite_hat(is_secondary=false) + return is_secondary ? @favorite_hat2 : @favorite_hat + end + + + #todo change to set_favorite_hat(value,is_secondary=false) + def set_favorite_hat(value,is_secondary=false) + if is_secondary + @favorite_hat=value + else + @favorite_hat2=value + end + end + + def hat_color(is_secondary=false) + return is_secondary ? @hat2_color : @hat_color + end + def hat(is_secondary=false) + return is_secondary ? @hat2 : @hat + end + + def set_hat(value, is_secondary=false) + if value.is_a?(Symbol) + value = HATS[value].id + end + if is_secondary + @hat2= value + else + @hat=value + end + refreshPlayerOutfit() + end + + + #todo : refactor to always use set_hat instead def hat=(value) if value.is_a?(Symbol) value = HATS[value].id @@ -117,6 +169,7 @@ class Player < Trainer refreshPlayerOutfit() end + #todo : refactor to always use set_hat instead def hat2=(value) if value.is_a?(Symbol) value = HATS[value].id @@ -152,13 +205,34 @@ class Player < Trainer $Trainer.dyed_clothes[@clothes] = value if value refreshPlayerOutfit() end + + #todo change to set_hat_color(value,is_secondary) + def set_hat_color(value, is_secondary=false) + if is_secondary + @hat2_color=value + else + @hat_color=value + end + $Trainer.dyed_hats= {} if !$Trainer.dyed_hats + worn_hat = is_secondary ? @hat2 : @hat + $Trainer.dyed_hats[worn_hat] = value if value + refreshPlayerOutfit() + end def hat_color=(value) @hat_color=value - $Trainer.dyed_hats= {} if ! $Trainer.dyed_hats - $Trainer.dyed_hats[@hat] = value if value + $Trainer.dyed_hats= {} if !$Trainer.dyed_hats + worn_hat = @hat + $Trainer.dyed_hats[worn_hat] = value if value refreshPlayerOutfit() end + def hat2_color=(value) + @hat2_color=value + $Trainer.dyed_hats= {} if !$Trainer.dyed_hats + worn_hat = @hat2 + $Trainer.dyed_hats[worn_hat] = value if value + refreshPlayerOutfit() + end def unlock_clothes(outfitID,silent=false) update_global_clothes_list() @@ -304,6 +378,7 @@ class Player < Trainer @surfing_pokemon = nil @last_worn_outfit = nil @last_worn_hat = nil + @last_worn_hat2 = nil @dyed_hats = {} @dyed_clothes = {} diff --git a/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb b/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb index 0b60faf5b..edb492c26 100644 --- a/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb +++ b/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb @@ -143,10 +143,9 @@ def generate_front_trainer_sprite_bitmap(allowEasterEgg=true, pokeball = nil, clothes_id = nil, hat_id = nil, hat2_id=nil, hair_id = nil, skin_tone_id = nil, hair_color = nil, hat_color = nil, clothes_color = nil, hat2_color = nil) - echoln hat_id clothes_id = $Trainer.clothes if !clothes_id hat_id = $Trainer.hat if !hat_id - hat2_id = $Trainer.hat if !hat2_id + hat2_id = $Trainer.hat2 if !hat2_id hair_id = $Trainer.hair if !hair_id skin_tone_id = $Trainer.skin_tone if !skin_tone_id @@ -202,8 +201,8 @@ def generate_front_trainer_sprite_bitmap(allowEasterEgg=true, pokeball = nil, baseBitmap.bitmap.blt(0, 0, outfitBitmap.bitmap, outfitBitmap.bitmap.rect) end baseBitmap.bitmap.blt(0, 0, hairBitmapWrapper.bitmap, hairBitmapWrapper.bitmap.rect) if hairBitmapWrapper - baseBitmap.bitmap.blt(0, 0, hatBitmap.bitmap, hatBitmap.bitmap.rect) if hatBitmap baseBitmap.bitmap.blt(0, 0, hat2Bitmap.bitmap, hat2Bitmap.bitmap.rect) if hat2Bitmap + baseBitmap.bitmap.blt(0, 0, hatBitmap.bitmap, hatBitmap.bitmap.rect) if hatBitmap baseBitmap.bitmap.blt(44, 42, ballBitmap, ballBitmap.rect) if ballBitmap return baseBitmap diff --git a/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShop.rb b/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShop.rb index 96b6c4d72..985c83e36 100644 --- a/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShop.rb +++ b/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShop.rb @@ -27,12 +27,12 @@ def getPresenter(itemType, view, stock, adapter, versions) end end -def getAdapter(itemType, stock, isShop) +def getAdapter(itemType, stock, isShop, is_secondary=false) case itemType when :CLOTHES return ClothesMartAdapter.new(stock, isShop) when :HAT - return HatsMartAdapter.new(stock, isShop) + return HatsMartAdapter.new(stock, isShop,is_secondary) when :HAIR return HairMartAdapter.new(stock, isShop) end @@ -71,38 +71,45 @@ def hairShop(outfits_list = [],free=false, customMessage=nil) genericOutfitsShopMenu(stock, :HAIR, true,!free,customMessage) end +def switchHatsPosition() + hat1 = $Trainer.hat + hat2 = $Trainer.hat2 + hat1_color = $Trainer.hat_color + hat2_color = $Trainer.hat2_color + $Trainer.hat = hat2 + $Trainer.hat2 = hat1 + $Trainer.hat_color = hat1_color + $Trainer.hat_color = hat2_color -SWAP_HAT_POSITIONS_CAPTION = "Switch hats position" -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 - hat1 = $Trainer.hat - hat2 = $Trainer.hat2 - $Trainer.hat = hat2 - $Trainer.hat2 = hat1 - pbSEPlay("GUI naming tab swap start") - return set_hat_adapter_options(adapter) - 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 + pbSEPlay("GUI naming tab swap start") end -def openSelectOutfitMenu(stock = [], itemType) - adapter = getAdapter(itemType, stock, false) - if adapter.is_a?(HatsMartAdapter) - adapter = set_hat_adapter_options(adapter) - return if !adapter - 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) view = ClothesShopView.new() presenter = ClothesShopPresenter.new(view, stock, adapter) presenter.pbBuyScreen @@ -117,30 +124,42 @@ def changeClothesMenu() openSelectOutfitMenu(stock, :CLOTHES) end -def changeHatMenu() +def changeHatMenu(is_secondary_hat = false) stock = [] $Trainer.unlocked_hats.each { |outfit_id| outfit = get_hat_by_id(outfit_id) stock << outfit if outfit } stock << :REMOVE_HAT - openSelectOutfitMenu(stock, :HAT) + 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[cmdHat = commands.length] = _INTL("Change hat") 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") - cmd = pbMessage(_INTL("What would you like to do?"), commands, cmdQuit + 1) + #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 diff --git a/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShopPresenter.rb b/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShopPresenter.rb index fd71642a0..941213ca4 100644 --- a/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShopPresenter.rb +++ b/Data/Scripts/050_Outfits/UI/clothesShop/ClothesShopPresenter.rb @@ -13,7 +13,7 @@ class ClothesShopPresenter < PokemonMartScreen @scene.pbEndBuyScene end - def playerHatActionsMenu(item) + def playerHatActionsMenu(item, is_secondary=false) is_player_hat = item.id == @adapter.worn_clothes options = [] if is_player_hat @@ -22,10 +22,10 @@ class ClothesShopPresenter < PokemonMartScreen options << "Wear" end - remove_dye_option_available = $Trainer.hat_color != 0 + remove_dye_option_available = $Trainer.hat_color(@adapter.is_secondary_hat) != 0 options << "Remove dye" if remove_dye_option_available - options << "Mark as favorite" if $Trainer.favorite_hat != item.id - options << "Unmark as favorite" if $Trainer.favorite_hat == item.id + options << "Mark as favorite" if $Trainer.favorite_hat(@adapter.is_secondary_hat) != item.id + options << "Unmark as favorite" if $Trainer.favorite_hat(@adapter.is_secondary_hat) == item.id options << "Cancel" # if $Trainer.hat_color != 0 @@ -38,21 +38,22 @@ class ClothesShopPresenter < PokemonMartScreen else # wear putOnClothes(item) - $Trainer.hat_color = @adapter.get_dye_color(item) + $Trainer.set_hat_color(@adapter.get_dye_color(item),@adapter.is_secondary_hat) return false end elsif choice == 1 && remove_dye_option_available if pbConfirm(_INTL("Are you sure you want to remove the dye from the {1}?", item.name)) - $Trainer.hat_color = 0 + $Trainer.set_hat_color(0,@adapter.is_secondary_hat) end return true elsif options[choice] == "Mark as favorite" - $Trainer.favorite_hat = item.id - pbSEPlay("GUI storage show party panel") - pbMessage("The #{item.name} is now your favorite!") - echoln "marked #{item.id} as favorite hat" + slot = @adapter.is_secondary_hat ? "slot 1" : "slot 2" + $Trainer.set_favorite_hat(item.id,@adapter.is_secondary_hat) + pbSEPlay("GUI storage show party panel") + pbMessage("The #{item.name} is now your favorite (#{slot})!") + echoln "marked #{item.id} as favorite hat" elsif options[choice] == "Unmark as favorite" - $Trainer.favorite_hat = nil + $Trainer.set_favorite_hat(nil,@adapter.is_secondary_hat) pbSEPlay("GUI storage show party panel") pbMessage("The #{item.name} is no longer marked as your favorite!") end @@ -80,9 +81,9 @@ class ClothesShopPresenter < PokemonMartScreen $Trainer.clothes_color = 0 end elsif options[choice] == "Mark as favorite" - $Trainer.favorite_clothes = item.id - pbSEPlay("GUI storage show party panel") - pbMessage("The #{item.name} is now your favorite!") + $Trainer.favorite_clothes = item.id + pbSEPlay("GUI storage show party panel") + pbMessage("The #{item.name} is now your favorite!") elsif options[choice] == "Unmark favorite" $Trainer.favorite_clothes = nil pbSEPlay("GUI storage show party panel") diff --git a/Data/Scripts/050_Outfits/UI/clothesShop/HatsMartAdapter.rb b/Data/Scripts/050_Outfits/UI/clothesShop/HatsMartAdapter.rb index 31b3c08d0..5bc09dd9a 100644 --- a/Data/Scripts/050_Outfits/UI/clothesShop/HatsMartAdapter.rb +++ b/Data/Scripts/050_Outfits/UI/clothesShop/HatsMartAdapter.rb @@ -3,34 +3,23 @@ class HatsMartAdapter < OutfitsMartAdapter DEFAULT_DESCRIPTION = "A headgear that trainers can wear." def initialize(stock = nil, isShop = nil, isSecondaryHat = false) - super(stock,isShop) - @is_secondary_hat = isSecondaryHat + super(stock,isShop,isSecondaryHat) end def toggleEvent(item) if !@isShop - if @is_secondary_hat - $Trainer.hat2 = nil + $Trainer.set_hat(nil,@is_secondary_hat) + @worn_clothes = nil + + if pbConfirmMessage(_INTL("Do you want to take off your hat?")) + $Trainer.set_hat(nil,@is_secondary_hat) @worn_clothes = nil - - if pbConfirmMessage(_INTL("Do you want to take off your hat?")) - $Trainer.hat2 = nil - @worn_clothes = nil - end - else - $Trainer.hat = nil - @worn_clothes = nil - - if pbConfirmMessage(_INTL("Do you want to take off your hat?")) - $Trainer.hat = nil - @worn_clothes = nil - - end end end end def set_secondary_hat(value) + echoln "WOWOWO setting secondary hat value" @is_secondary_hat = value end @@ -48,7 +37,7 @@ class HatsMartAdapter < OutfitsMartAdapter def getDisplayName(item) return getName(item) if !item.name name = item.name - name = "* #{name}" if item.id == $Trainer.favorite_hat + name = "* #{name}" if item.id == $Trainer.favorite_hat(@is_secondary_hat) return name end @@ -63,24 +52,13 @@ class HatsMartAdapter < OutfitsMartAdapter end def updateTrainerPreview(item, previewWindow) - if @is_secondary_hat - if item.is_a?(Outfit) - previewWindow.hat2 = item.id - $Trainer.hat2 = item.id# unless $Trainer.hat==nil - set_dye_color(item,previewWindow) - else - $Trainer.hat2=nil - previewWindow.hat2= nil - end + if item.is_a?(Outfit) + previewWindow.hat = item.id + $Trainer.set_hat(item.id,@is_secondary_hat)# unless $Trainer.hat==nil + set_dye_color(item,previewWindow) else - if item.is_a?(Outfit) - previewWindow.hat = item.id - $Trainer.hat = item.id# unless $Trainer.hat==nil - set_dye_color(item,previewWindow) - else - $Trainer.hat=nil - previewWindow.hat= nil - end + $Trainer.set_hat(nil,@is_secondary_hat) + previewWindow.hat= nil end @@ -100,18 +78,18 @@ class HatsMartAdapter < OutfitsMartAdapter def set_dye_color(item,previewWindow) if !isShop? - $Trainer.dyed_hats= {} if ! $Trainer.dyed_hats + $Trainer.dyed_hats= {} if !$Trainer.dyed_hats if $Trainer.dyed_hats.include?(item.id) dye_color = $Trainer.dyed_hats[item.id] - $Trainer.hat_color = dye_color + $Trainer.set_hat_color(dye_color,@is_secondary_hat) previewWindow.hat_color = dye_color else - $Trainer.hat_color=0 + $Trainer.set_hat_color(0,@is_secondary_hat) previewWindow.hat_color=0 end #echoln $Trainer.dyed_hats else - $Trainer.hat_color=0 + $Trainer.set_hat_color(0,@is_secondary_hat) previewWindow.hat_color=0 end end @@ -126,28 +104,18 @@ class HatsMartAdapter < OutfitsMartAdapter end def get_current_clothes() - return $Trainer.hat + return $Trainer.hat(@is_secondary_hat) end def putOnOutfit(item) return unless item.is_a?(Outfit) - if @is_secondary_hat - echoln "broder" - putOnSecondaryHat(item.id) - else - putOnHat(item.id) - end + putOnHat(item.id,false,@is_secondary_hat) @worn_clothes = item.id end def reset_player_clothes() - if @is_secondary_hat - $Trainer.hat2 = @worn_clothes - $Trainer.hat2_color = $Trainer.dyed_hats[@worn_clothes] if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes] - else - $Trainer.hat = @worn_clothes - $Trainer.hat_color = $Trainer.dyed_hats[@worn_clothes] if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes] - end + $Trainer.set_hat(@worn_clothes,@is_secondary_hat) + $Trainer.set_hat_color($Trainer.dyed_hats[@worn_clothes],@is_secondary_hat) if $Trainer.dyed_hats && $Trainer.dyed_hats[@worn_clothes] end def get_unlocked_items_list() diff --git a/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb b/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb index d9cea0b51..e99e1d2ed 100644 --- a/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb +++ b/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb @@ -16,8 +16,8 @@ def obtainHat(outfit_id,secondary=false) $Trainer.unlocked_hats << outfit_id if !$Trainer.unlocked_hats.include?(outfit_id) obtainOutfitMessage(outfit) if pbConfirmMessage("Would you like to put it on right now?") - putOnHat(outfit_id, false, ) if !secondary - putOnSecondaryHat(outfit_id, false, ) if secondary + putOnHat(outfit_id, false, false) if !secondary + putOnHat(outfit_id, false, true) if secondary return true end return false @@ -67,12 +67,12 @@ def putOnClothes(outfit_id, silent = false) putOnOutfitMessage(outfit) if !silent end -def putOnHat(outfit_id, silent = false) +def putOnHat(outfit_id, silent = false, is_secondary=false) $Trainer.dyed_hats= {} if ! $Trainer.dyed_hats - $Trainer.last_worn_hat = $Trainer.hat + $Trainer.set_last_worn_hat($Trainer.hat,is_secondary) outfit = get_hat_by_id(outfit_id) - $Trainer.hat = outfit_id + $Trainer.set_hat(outfit_id,is_secondary) dye_color = $Trainer.dyed_hats[outfit_id] if dye_color @@ -85,24 +85,6 @@ def putOnHat(outfit_id, silent = false) putOnOutfitMessage(outfit) if !silent end -def putOnSecondaryHat(outfit_id, silent = false) - $Trainer.dyed_hats= {} if ! $Trainer.dyed_hats - $Trainer.last_worn_hat = $Trainer.hat2 - outfit = get_hat_by_id(outfit_id) - - $Trainer.hat2 = outfit_id - - dye_color = $Trainer.dyed_hats[outfit_id] - if dye_color - $Trainer.hat2_color = dye_color - else - $Trainer.hat2_color = nil - end - - $game_map.refreshPlayerOutfit() - putOnOutfitMessage(outfit) if !silent -end - def putOnHairFullId(full_outfit_id) outfit_id = getSplitHairFilenameAndVersionFromID(full_outfit_id)[1] @@ -193,7 +175,7 @@ def isWearingClothes(outfitId) end def isWearingHat(outfitId) - return $Trainer.hat == outfitId + return $Trainer.hat == outfitId || $Trainer.hat2 == outfitId end def isWearingHairstyle(outfitId, version = nil) @@ -309,13 +291,18 @@ end def randomizePlayerOutfitUnlocked() $Trainer.hat = $Trainer.unlocked_hats.sample + $Trainer.hat2 = $Trainer.unlocked_hats.sample $Trainer.clothes = $Trainer.unlocked_clothes.sample dye_hat = rand(2)==0 + dye_hat2 = rand(2)==0 dye_clothes = rand(2)==0 dye_hair = rand(2)==0 + $Trainer.hat2 = nil if rand(3)==0 $Trainer.hat_color = dye_hat ? rand(255) : 0 + $Trainer.hat2_color = dye_hat2 ? rand(255) : 0 + $Trainer.clothes_color = dye_clothes ? rand(255) : 0 $Trainer.hair_color = dye_hair ? rand(255) : 0 @@ -328,8 +315,12 @@ end def randomizePlayerOutfit() $Trainer.hat = $PokemonGlobal.hats_data.keys.sample $Trainer.hat2 = $PokemonGlobal.hats_data.keys.sample + $Trainer.hat2 = nil if(rand(3)==0) + $Trainer.clothes = $PokemonGlobal.clothes_data.keys.sample $Trainer.hat_color = rand(2)==0 ? rand(255) : 0 + $Trainer.hat2_color = rand(2)==0 ? rand(255) : 0 + $Trainer.clothes_color = rand(2)==0 ? rand(255) : 0 $Trainer.hair_color = rand(2)==0 ? rand(255) : 0 diff --git a/Data/Scripts/052_AddOns/New Items effects.rb b/Data/Scripts/052_AddOns/New Items effects.rb index 50501ab64..f4a070fa0 100644 --- a/Data/Scripts/052_AddOns/New Items effects.rb +++ b/Data/Scripts/052_AddOns/New Items effects.rb @@ -1,5 +1,3 @@ - - ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle| battle.decision = 3 battle.pbDisplayPaused(_INTL("Got away safely!")) @@ -93,8 +91,6 @@ def useTeleporter() end end - - ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle| battle.decision = 3 battle.pbDisplayPaused(_INTL("Got away safely!")) @@ -378,19 +374,24 @@ ItemHandlers::UseFromBag.add(:ODDKEYSTONE, proc { |item| }) def useFavoriteOutfit() - if !$Trainer.favorite_clothes && !$Trainer.favorite_hat + if !$Trainer.favorite_clothes && !$Trainer.favorite_hat && !$Trainer.favorite_hat2 pbMessage(_INTL("You can mark clothes and hats as your favorites in the outfits menu and use this to quickly switch to them!")) return 0 end if isWearingFavoriteOutfit() if (Kernel.pbConfirmMessage("Remove your favorite outfit?")) - if ($Trainer.last_worn_outfit == $Trainer.favorite_clothes && $Trainer.last_worn_hat == $Trainer.favorite_hat) + last_worn_clothes_is_favorite = $Trainer.last_worn_outfit == $Trainer.favorite_clothes + last_worn_hat_is_favorite = $Trainer.last_worn_hat == $Trainer.favorite_hat + last_worn_hat2_is_favorite = $Trainer.last_worn_hat2 == $Trainer.favorite_hat2 + if (last_worn_clothes_is_favorite && last_worn_hat_is_favorite && last_worn_hat2_is_favorite) $Trainer.last_worn_outfit = getDefaultClothes() end playOutfitChangeAnimation() putOnClothes($Trainer.last_worn_outfit, true) if $Trainer.favorite_clothes - putOnHat($Trainer.last_worn_hat, true) if $Trainer.favorite_hat + putOnHat($Trainer.last_worn_hat, true,false) if $Trainer.favorite_hat + putOnHat($Trainer.last_worn_hat2, true,true) if $Trainer.favorite_hat2 + else return 0 end @@ -399,7 +400,8 @@ def useFavoriteOutfit() if (Kernel.pbConfirmMessage("Put on your favorite outfit?")) playOutfitChangeAnimation() putOnClothes($Trainer.favorite_clothes, true) if $Trainer.favorite_clothes - putOnHat($Trainer.favorite_hat, true) if $Trainer.favorite_hat + putOnHat($Trainer.favorite_hat, true, false) if $Trainer.favorite_hat + putOnHat($Trainer.favorite_hat2, true, true) if $Trainer.favorite_hat2 else return 0 end diff --git a/Data/Skills.rxdata b/Data/Skills.rxdata index 61cba7ea2..a45219f5e 100644 Binary files a/Data/Skills.rxdata and b/Data/Skills.rxdata differ diff --git a/Data/States.rxdata b/Data/States.rxdata index 0f9b4ae5d..868d49e59 100644 Binary files a/Data/States.rxdata and b/Data/States.rxdata differ diff --git a/Data/System.rxdata b/Data/System.rxdata index 9cb85ce8f..347aff954 100644 Binary files a/Data/System.rxdata and b/Data/System.rxdata differ diff --git a/Data/Tilesets.rxdata b/Data/Tilesets.rxdata index 6fd4dee80..81118b37b 100644 Binary files a/Data/Tilesets.rxdata and b/Data/Tilesets.rxdata differ diff --git a/Data/Weapons.rxdata b/Data/Weapons.rxdata index d9bd35260..c7ea19a7a 100644 Binary files a/Data/Weapons.rxdata and b/Data/Weapons.rxdata differ diff --git a/Data/outfits/hairstyles_data.json b/Data/outfits/hairstyles_data.json index 1f954ddc8..4814e6607 100644 --- a/Data/outfits/hairstyles_data.json +++ b/Data/outfits/hairstyles_data.json @@ -319,6 +319,10 @@ "price": 3000, "tags": "special" }, + { + "id": "lyra", + "name": "Springy Pigtails" + }, { "id": "mawile", "name": "Long Teethed Ponytail", diff --git a/Data/sprites/sprites_rate_limit.log b/Data/sprites/sprites_rate_limit.log index 56f94e049..7b87b31c0 100644 --- a/Data/sprites/sprites_rate_limit.log +++ b/Data/sprites/sprites_rate_limit.log @@ -1,2 +1,4 @@ -1739937414 -1739937415 \ No newline at end of file +1740086845 +1740086846 +1740086849 +1740086850 \ No newline at end of file