Adds way to favorite hats and clothes and item to quickly swap to them

This commit is contained in:
chardub
2025-02-18 11:06:14 -05:00
parent 133f01218b
commit 4089c956d7
28 changed files with 230 additions and 184 deletions

BIN
.DS_Store vendored

Binary file not shown.

BIN
Data/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -22,6 +22,8 @@ class Player < Trainer
attr_accessor :dyed_hats attr_accessor :dyed_hats
attr_accessor :dyed_clothes attr_accessor :dyed_clothes
attr_accessor :favorite_hat
attr_accessor :favorite_clothes
attr_accessor :last_worn_outfit attr_accessor :last_worn_outfit
attr_accessor :last_worn_hat attr_accessor :last_worn_hat
@@ -292,6 +294,8 @@ class Player < Trainer
@dyed_hats = {} @dyed_hats = {}
@dyed_clothes = {} @dyed_clothes = {}
@favorite_hat = nil
@favorite_clothes = nil
@card_background = Settings::DEFAULT_TRAINER_CARD_BG @card_background = Settings::DEFAULT_TRAINER_CARD_BG
@unlocked_card_backgrounds = [@card_background] @unlocked_card_backgrounds = [@card_background]

View File

@@ -19,7 +19,9 @@ class ClothesMartAdapter < OutfitsMartAdapter
def getDisplayName(item) def getDisplayName(item)
return getName(item) if !item.name return getName(item) if !item.name
return item.name name = item.name
name = "* #{name}" if item.id == $Trainer.favorite_clothes
return name
end end
def getDescription(item) def getDescription(item)

View File

@@ -24,16 +24,19 @@ class ClothesShopPresenter < PokemonMartScreen
remove_dye_option_available = $Trainer.hat_color != 0 remove_dye_option_available = $Trainer.hat_color != 0
options << "Remove dye" if remove_dye_option_available 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 << "Cancel" options << "Cancel"
#if $Trainer.hat_color != 0 # if $Trainer.hat_color != 0
choice = pbMessage("What would you like to do?",options,-1) choice = pbMessage("What would you like to do?", options, -1)
if choice == 0 if choice == 0
if is_player_hat #remove if is_player_hat # remove
@adapter.doSpecialItemAction(:REMOVE) @adapter.doSpecialItemAction(:REMOVE)
@scene.pbEndBuyScene @scene.pbEndBuyScene
return false return false
else else
#wear # wear
putOnClothes(item) putOnClothes(item)
$Trainer.hat_color = @adapter.get_dye_color(item) $Trainer.hat_color = @adapter.get_dye_color(item)
return false return false
@@ -43,27 +46,47 @@ class ClothesShopPresenter < PokemonMartScreen
$Trainer.hat_color = 0 $Trainer.hat_color = 0
end end
return true 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"
elsif options[choice] == "Unmark as favorite"
$Trainer.favorite_hat = nil
pbSEPlay("GUI storage show party panel")
pbMessage("The #{item.name} is no longer marked as your favorite!")
end end
echoln "cancelled" echoln "cancelled"
return true return true
end end
#returns if should stay in the menu # returns if should stay in the menu
def playerClothesActionsMenu(item) def playerClothesActionsMenu(item)
is_worn = item.id == @adapter.worn_clothes is_worn = item.id == @adapter.worn_clothes
options = [] options = []
options << "Wear" options << "Wear"
options << "Remove dye" if $Trainer.clothes_color != 0 options << "Remove dye" if $Trainer.clothes_color != 0
options << "Mark as favorite" if $Trainer.favorite_hat != item.id
options << "Unmark as favorite" if $Trainer.favorite_hat == item.id
options << "Cancel" options << "Cancel"
choice = pbMessage("What would you like to do?",options,-1) choice = pbMessage("What would you like to do?", options, -1)
if choice == 0 if choice == 0
putOnClothes(item) putOnClothes(item)
$Trainer.clothes_color = @adapter.get_dye_color(item) $Trainer.clothes_color = @adapter.get_dye_color(item)
return false return false
elsif choice == 1 elsif options[choice] == "Remove dye"
if pbConfirm(_INTL("Are you sure you want to remove the dye from the {1}?", item.name)) if pbConfirm(_INTL("Are you sure you want to remove the dye from the {1}?", item.name))
$Trainer.clothes_color = 0 $Trainer.clothes_color = 0
end 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!")
elsif options[choice] == "Unmark favorite"
$Trainer.favorite_clothes = nil
pbSEPlay("GUI storage show party panel")
pbMessage("The #{item.name} is no longer marked as your favorite!")
end end
return true return true
end end
@@ -120,7 +143,7 @@ class ClothesShopPresenter < PokemonMartScreen
@stock.compact! @stock.compact!
pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") } pbDisplayPaused(_INTL("Here you are! Thank you!")) { pbSEPlay("Mart buy item") }
@adapter.addItem(item) @adapter.addItem(item)
#break # break
end end
@scene.pbEndBuyScene @scene.pbEndBuyScene
end end

View File

@@ -32,7 +32,9 @@ class HatsMartAdapter < OutfitsMartAdapter
def getDisplayName(item) def getDisplayName(item)
return getName(item) if !item.name return getName(item) if !item.name
return item.name name = item.name
name = "* #{name}" if item.id == $Trainer.favorite_hat
return name
end end
def getDescription(item) def getDescription(item)
@@ -79,7 +81,7 @@ class HatsMartAdapter < OutfitsMartAdapter
$Trainer.hat_color=0 $Trainer.hat_color=0
previewWindow.hat_color=0 previewWindow.hat_color=0
end end
echoln $Trainer.dyed_hats #echoln $Trainer.dyed_hats
else else
$Trainer.hat_color=0 $Trainer.hat_color=0
previewWindow.hat_color=0 previewWindow.hat_color=0

View File

@@ -1,55 +1,4 @@
ItemHandlers::BattleUseOnBattler.add(:POKEDEX, proc { |item, battler, scene|
#if battler.battle.battlers.length > -1
# scene.pbDisplay(_INTL(" The length is {1}",battler.battle.battlers.length))
# scene.pbDisplay(_INTL("The PokéDex cannot be used on multiple enemies at once!"))
# return false
#end
doublebattle = false
#DOUBLE BATTLES A FAIRE
#variable temporaire doublebattle
if doublebattle
e = battler.pbOpposing2
else
is_trainer = battler.battle.opponent
e1 = battler.pbOpposing1.pokemon
enemyname = e1.name
e1type1 = e1.type1
e1type2 = e1.type2
end
if e1type1 == e1type2
scene.pbDisplay(_INTL("{2} has been identified as a {1} type Pokémon.", PBTypes.getName(e1type1), enemyname))
else
scene.pbDisplay(_INTL("{3} has been identified as a {1}/{2} type Pokémon.", PBTypes.getName(e1type1), PBTypes.getName(e1type2), enemyname))
if $game_switches[10] #BADGE 7
if battler.pbCanIncreaseStatStage?(PBStats::DEFENSE, false)
battler.pbIncreaseStat(PBStats::DEFENSE, 1, true)
end
if battler.pbCanIncreaseStatStage?(PBStats::SPDEF, false)
battler.pbIncreaseStat(PBStats::SPDEF, 1, true)
end
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
end
elsif $game_switches[8] #BADGE 5
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
end
elsif $game_switches[6] #BADGE 3
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 2, true)
end
elsif $game_switches[8] #BADGE 1
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 1, true)
end
end
return true
end
})
ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle| ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle|
battle.decision = 3 battle.decision = 3
@@ -144,58 +93,7 @@ def useTeleporter()
end end
end end
ItemHandlers::BattleUseOnBattler.add(:POKEDEX, proc { |item, battler, scene|
#if battler.battle.battlers.length > -1
# scene.pbDisplay(_INTL(" The length is {1}",battler.battle.battlers.length))
# scene.pbDisplay(_INTL("The PokéDex cannot be used on multiple enemies at once!"))
# return false
#end
doublebattle = false
#DOUBLE BATTLES A FAIRE
#variable temporaire doublebattle
if doublebattle
e = battler.pbOpposing2
else
is_trainer = battler.battle.opponent
e1 = battler.pbOpposing1.pokemon
enemyname = e1.name
e1type1 = e1.type1
e1type2 = e1.type2
end
if e1type1 == e1type2
scene.pbDisplay(_INTL("{2} has been identified as a {1} type Pokémon.", PBTypes.getName(e1type1), enemyname))
else
scene.pbDisplay(_INTL("{3} has been identified as a {1}/{2} type Pokémon.", PBTypes.getName(e1type1), PBTypes.getName(e1type2), enemyname))
if $game_switches[10] #BADGE 7
if battler.pbCanIncreaseStatStage?(PBStats::DEFENSE, false)
battler.pbIncreaseStat(PBStats::DEFENSE, 1, true)
end
if battler.pbCanIncreaseStatStage?(PBStats::SPDEF, false)
battler.pbIncreaseStat(PBStats::SPDEF, 1, true)
end
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
end
elsif $game_switches[8] #BADGE 5
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 3, true)
end
elsif $game_switches[6] #BADGE 3
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 2, true)
end
elsif $game_switches[8] #BADGE 1
if battler.pbCanIncreaseStatStage?(PBStats::ACCURACY, false)
battler.pbIncreaseStat(PBStats::ACCURACY, 1, true)
end
end
return true
end
})
ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle| ItemHandlers::UseInBattle.add(:POKEDOLL, proc { |item, battler, battle|
battle.decision = 3 battle.decision = 3
@@ -238,7 +136,7 @@ ItemHandlers::UseOnPokemon.add(:TRANSGENDERSTONE, proc { |item, pokemon, scene|
end end
}) })
#NOT FULLY IMPLEMENTED # NOT FULLY IMPLEMENTED
ItemHandlers::UseOnPokemon.add(:SECRETCAPSULE, proc { |item, poke, scene| ItemHandlers::UseOnPokemon.add(:SECRETCAPSULE, proc { |item, poke, scene|
abilityList = poke.getAbilityList abilityList = poke.getAbilityList
numAbilities = abilityList[0].length numAbilities = abilityList[0].length
@@ -429,6 +327,14 @@ ItemHandlers::UseInField.add(:ROCKETUNIFORM, proc { |item|
next useRocketUniform() next useRocketUniform()
}) })
ItemHandlers::UseFromBag.add(:FAVORITEOUTFIT, proc { |item|
next useFavoriteOutfit()
})
ItemHandlers::UseInField.add(:FAVORITEOUTFIT, proc { |item|
next useFavoriteOutfit()
})
ItemHandlers::UseInField.add(:EMERGENCYWHISTLE, proc { |item| ItemHandlers::UseInField.add(:EMERGENCYWHISTLE, proc { |item|
if isOnPinkanIsland() if isOnPinkanIsland()
pbCommonEvent(COMMON_EVENT_PINKAN_WHISTLE) pbCommonEvent(COMMON_EVENT_PINKAN_WHISTLE)
@@ -471,16 +377,45 @@ ItemHandlers::UseFromBag.add(:ODDKEYSTONE, proc { |item|
end end
}) })
def useFavoriteOutfit()
if !$Trainer.favorite_clothes && !$Trainer.favorite_hat
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)
$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
else
return 0
end
else
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
else
return 0
end
end
end
def useRocketUniform() def useRocketUniform()
return 0 if !$game_switches[SWITCH_JOINED_TEAM_ROCKET] return 0 if !$game_switches[SWITCH_JOINED_TEAM_ROCKET]
if isWearingTeamRocketOutfit() if isWearingTeamRocketOutfit()
if (Kernel.pbConfirmMessage("Remove the Team Rocket uniform?")) if (Kernel.pbConfirmMessage("Remove the Team Rocket uniform?"))
if ($Trainer.last_worn_outfit == CLOTHES_TEAM_ROCKET_MALE || $Trainer.last_worn_outfit == CLOTHES_TEAM_ROCKET_FEMALE) && $Trainer.last_worn_hat == HAT_TEAM_ROCKET if ($Trainer.last_worn_outfit == CLOTHES_TEAM_ROCKET_MALE || $Trainer.last_worn_outfit == CLOTHES_TEAM_ROCKET_FEMALE) && $Trainer.last_worn_hat == HAT_TEAM_ROCKET
$Trainer.last_worn_outfit =getDefaultClothes() $Trainer.last_worn_outfit = getDefaultClothes()
end end
playOutfitChangeAnimation() playOutfitChangeAnimation()
putOnClothes($Trainer.last_worn_outfit,true) putOnClothes($Trainer.last_worn_outfit, true)
putOnHat($Trainer.last_worn_hat,true) putOnHat($Trainer.last_worn_hat, true)
else else
return 0 return 0
end end
@@ -489,11 +424,11 @@ def useRocketUniform()
playOutfitChangeAnimation() playOutfitChangeAnimation()
gender = pbGet(VAR_TRAINER_GENDER) gender = pbGet(VAR_TRAINER_GENDER)
if gender == GENDER_MALE if gender == GENDER_MALE
putOnClothes(CLOTHES_TEAM_ROCKET_MALE,true) putOnClothes(CLOTHES_TEAM_ROCKET_MALE, true)
else else
putOnClothes(CLOTHES_TEAM_ROCKET_FEMALE,true) putOnClothes(CLOTHES_TEAM_ROCKET_FEMALE, true)
end end
putOnHat(HAT_TEAM_ROCKET,true) putOnHat(HAT_TEAM_ROCKET, true)
#$scene.reset_map(true) #$scene.reset_map(true)
end end
end end
@@ -519,7 +454,7 @@ def useStrangePlant
end end
#DREAMMIRROR # DREAMMIRROR
ItemHandlers::UseFromBag.add(:DREAMMIRROR, proc { |item| ItemHandlers::UseFromBag.add(:DREAMMIRROR, proc { |item|
useDreamMirror useDreamMirror
next 1 next 1
@@ -530,7 +465,7 @@ ItemHandlers::UseInField.add(:DREAMMIRROR, proc { |item|
next 1 next 1
}) })
#STRANGE PLANT # STRANGE PLANT
ItemHandlers::UseFromBag.add(:STRANGEPLANT, proc { |item| ItemHandlers::UseFromBag.add(:STRANGEPLANT, proc { |item|
useStrangePlant() useStrangePlant()
next 1 next 1
@@ -549,7 +484,7 @@ ItemHandlers::UseFromBag.add(:MAGICBOOTS, proc { |item|
else else
if Kernel.pbConfirmMessageSerious(_INTL("Put on the Magic Boots?")) if Kernel.pbConfirmMessageSerious(_INTL("Put on the Magic Boots?"))
Kernel.pbMessage(_INTL("Debug mode is now active.")) Kernel.pbMessage(_INTL("Debug mode is now active."))
$game_switches[ENABLED_DEBUG_MODE_AT_LEAST_ONCE] = true #got debug mode (for compatibility) $game_switches[ENABLED_DEBUG_MODE_AT_LEAST_ONCE] = true # got debug mode (for compatibility)
$DEBUG = true $DEBUG = true
end end
end end
@@ -680,7 +615,7 @@ def reverseFusion(pokemon)
pokemon.exp_when_fused_head = body_exp pokemon.exp_when_fused_head = body_exp
pokemon.head_shiny, pokemon.body_shiny = pokemon.body_shiny, pokemon.head_shiny pokemon.head_shiny, pokemon.body_shiny = pokemon.body_shiny, pokemon.head_shiny
#play animation # play animation
pbFadeOutInWithMusic(99999) { pbFadeOutInWithMusic(99999) {
fus = PokemonEvolutionScene.new fus = PokemonEvolutionScene.new
fus.pbStartScreen(pokemon, newspecies, true) fus.pbStartScreen(pokemon, newspecies, true)
@@ -705,7 +640,7 @@ ItemHandlers::UseOnPokemon.add(:INFINITEREVERSERS, proc { |item, pokemon, scene|
pokemon.exp_when_fused_body = head_exp pokemon.exp_when_fused_body = head_exp
pokemon.exp_when_fused_head = body_exp pokemon.exp_when_fused_head = body_exp
#play animation # play animation
pbFadeOutInWithMusic(99999) { pbFadeOutInWithMusic(99999) {
fus = PokemonEvolutionScene.new fus = PokemonEvolutionScene.new
fus.pbStartScreen(pokemon, newspecies, true) fus.pbStartScreen(pokemon, newspecies, true)
@@ -903,26 +838,26 @@ def returnItemsToBag(pokemon, poke2)
poke2.item = nil poke2.item = nil
end end
#A AJOUTER: l'attribut dmgup ne modifie presentement pas # A AJOUTER: l'attribut dmgup ne modifie presentement pas
# le damage d'une attaque # le damage d'une attaque
# #
ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene| ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene|
move = scene.pbChooseMove(pokemon, _INTL("Boost Damage of which move?")) move = scene.pbChooseMove(pokemon, _INTL("Boost Damage of which move?"))
if move >= 0 if move >= 0
#if pokemon.moves[move].damage==0 || pokemon.moves[move].accuracy<=5 || pokemon.moves[move].dmgup >=3 # if pokemon.moves[move].damage==0 || pokemon.moves[move].accuracy<=5 || pokemon.moves[move].dmgup >=3
# scene.pbDisplay(_INTL("It won't have any effect.")) # scene.pbDisplay(_INTL("It won't have any effect."))
# next false # next false
#else # else
#pokemon.moves[move].dmgup+=1 # pokemon.moves[move].dmgup+=1
#pokemon.moves[move].damage +=5 # pokemon.moves[move].damage +=5
#pokemon.moves[move].accuracy -=5 # pokemon.moves[move].accuracy -=5
#movename=PBMoves.getName(pokemon.moves[move].id) # movename=PBMoves.getName(pokemon.moves[move].id)
#scene.pbDisplay(_INTL("{1}'s damage increased.",movename)) # scene.pbDisplay(_INTL("{1}'s damage increased.",movename))
#next true # next true
scene.pbDisplay(_INTL("This item has not been implemented into the game yet. It had no effect.")) scene.pbDisplay(_INTL("This item has not been implemented into the game yet. It had no effect."))
next false next false
#end # end
end end
}) })
@@ -1015,7 +950,7 @@ ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene|
# end # end
# }) # })
#easter egg for evolving shellder into slowbro's tail # easter egg for evolving shellder into slowbro's tail
ItemHandlers::UseOnPokemon.add(:SLOWPOKETAIL, proc { |item, pokemon, scene| ItemHandlers::UseOnPokemon.add(:SLOWPOKETAIL, proc { |item, pokemon, scene|
echoln pokemon.species echoln pokemon.species
next false if pokemon.species != :SHELLDER next false if pokemon.species != :SHELLDER
@@ -1160,7 +1095,7 @@ ItemHandlers::BattleUseOnPokemon.add(:BALMMUSHROOM, proc { |item, pokemon, battl
# }) # })
####EXP. ALL ####EXP. ALL
#Methodes relative a l'exp sont pas encore la et pas compatibles # Methodes relative a l'exp sont pas encore la et pas compatibles
# avec cette version de essentials donc # avec cette version de essentials donc
# ca fait fuck all pour l'instant. # ca fait fuck all pour l'instant.
ItemHandlers::UseFromBag.add(:EXPALL, proc { |item| ItemHandlers::UseFromBag.add(:EXPALL, proc { |item|
@@ -1235,7 +1170,7 @@ ItemHandlers::UseOnPokemon.add(:TRANSGENDERSTONE, proc { |item, pokemon, scene|
# #
# }) # })
#NOT FULLY IMPLEMENTED # NOT FULLY IMPLEMENTED
ItemHandlers::UseOnPokemon.add(:SECRETCAPSULE, proc { |item, poke, scene| ItemHandlers::UseOnPokemon.add(:SECRETCAPSULE, proc { |item, poke, scene|
abilityList = poke.getAbilityList abilityList = poke.getAbilityList
numAbilities = abilityList[0].length numAbilities = abilityList[0].length
@@ -1387,7 +1322,7 @@ ItemHandlers::UseOnPokemon.add(:MISTSTONE, proc { |item, pokemon, scene|
def pbForceEvo(pokemon) def pbForceEvo(pokemon)
evolutions = getEvolvedSpecies(pokemon) evolutions = getEvolvedSpecies(pokemon)
return false if evolutions.empty? return false if evolutions.empty?
#if multiple evolutions, pick a random one # if multiple evolutions, pick a random one
#(format of returned value is [[speciesNum, level]]) #(format of returned value is [[speciesNum, level]])
newspecies = evolutions[rand(evolutions.length - 1)][0] newspecies = evolutions[rand(evolutions.length - 1)][0]
return false if newspecies == nil return false if newspecies == nil
@@ -1456,7 +1391,7 @@ def getPokemonPositionInParty(pokemon)
return -1 return -1
end end
#don't remember why there's two Supersplicers arguments.... probably a mistake # don't remember why there's two Supersplicers arguments.... probably a mistake
def pbDNASplicing(pokemon, scene, item = :DNASPLICERS) def pbDNASplicing(pokemon, scene, item = :DNASPLICERS)
is_supersplicer = isSuperSplicersMechanics(item) is_supersplicer = isSuperSplicersMechanics(item)
@@ -1480,7 +1415,7 @@ def pbDNASplicing(pokemon, scene, item = :DNASPLICERS)
if chosen >= 0 if chosen >= 0
poke2 = $Trainer.party[chosen] poke2 = $Trainer.party[chosen]
if (poke2.species_data.id_number <= NB_POKEMON) && poke2 != pokemon if (poke2.species_data.id_number <= NB_POKEMON) && poke2 != pokemon
#check if fainted # check if fainted
if pokemon.egg? || poke2.egg? if pokemon.egg? || poke2.egg?
scene.pbDisplay(_INTL("It's impossible to fuse an egg!")) scene.pbDisplay(_INTL("It's impossible to fuse an egg!"))
@@ -1492,10 +1427,10 @@ def pbDNASplicing(pokemon, scene, item = :DNASPLICERS)
end end
selectedHead = selectFusion(pokemon, poke2, is_supersplicer) selectedHead = selectFusion(pokemon, poke2, is_supersplicer)
if selectedHead == -1 #cancelled if selectedHead == -1 # cancelled
return false return false
end end
if selectedHead == nil #can't fuse (egg, etc.) if selectedHead == nil # can't fuse (egg, etc.)
scene.pbDisplay(_INTL("It won't have any effect.")) scene.pbDisplay(_INTL("It won't have any effect."))
return false return false
end end
@@ -1530,7 +1465,7 @@ def pbDNASplicing(pokemon, scene, item = :DNASPLICERS)
end end
end end
else else
#UNFUSE # UNFUSE
return true if pbUnfuse(pokemon, scene, is_supersplicer) return true if pbUnfuse(pokemon, scene, is_supersplicer)
end end
end end
@@ -1539,7 +1474,7 @@ def selectFusion(pokemon, poke2, supersplicers = false)
return nil if !pokemon.is_a?(Pokemon) || !poke2.is_a?(Pokemon) return nil if !pokemon.is_a?(Pokemon) || !poke2.is_a?(Pokemon)
return nil if pokemon.egg? || poke2.egg? return nil if pokemon.egg? || poke2.egg?
selectorWindow = FusionPreviewScreen.new(poke2, pokemon, supersplicers) #PictureWindow.new(picturePath) selectorWindow = FusionPreviewScreen.new(poke2, pokemon, supersplicers) # PictureWindow.new(picturePath)
selectedHead = selectorWindow.getSelection selectedHead = selectorWindow.getSelection
selectorWindow.dispose selectorWindow.dispose
return selectedHead return selectedHead
@@ -1578,16 +1513,15 @@ def pbFuse(pokemon_body, pokemon_head, splicer_item)
if (fus.pbStartScreen(pokemon_body, pokemon_head, newid, splicer_item)) if (fus.pbStartScreen(pokemon_body, pokemon_head, newid, splicer_item))
returnItemsToBag(pokemon_body, pokemon_head) returnItemsToBag(pokemon_body, pokemon_head)
fus.pbFusionScreen(false, use_supersplicers_mechanics) fus.pbFusionScreen(false, use_supersplicers_mechanics)
$game_variables[VAR_FUSE_COUNTER] += 1 #fuse counter $game_variables[VAR_FUSE_COUNTER] += 1 # fuse counter
fus.pbEndScreen fus.pbEndScreen
return true return true
end end
end end
# Todo: refactor this, holy shit this is a mess
#Todo: refactor this, holy shit this is a mess
def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil) def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
if pokemon.species_data.id_number > (NB_POKEMON * NB_POKEMON) + NB_POKEMON #triple fusion if pokemon.species_data.id_number > (NB_POKEMON * NB_POKEMON) + NB_POKEMON # triple fusion
scene.pbDisplay(_INTL("{1} cannot be unfused.", pokemon.name)) scene.pbDisplay(_INTL("{1} cannot be unfused.", pokemon.name))
return false return false
end end
@@ -1661,7 +1595,7 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
pokemon.shiny = false pokemon.shiny = false
poke2.natural_shiny = true if pokemon.natural_shiny && !pokemon.debug_shiny poke2.natural_shiny = true if pokemon.natural_shiny && !pokemon.debug_shiny
else else
#shiny was obtained already fused # shiny was obtained already fused
if rand(2) == 0 if rand(2) == 0
pokemon.shiny = true pokemon.shiny = true
else else
@@ -1691,7 +1625,6 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
poke2.debug_shiny = false poke2.debug_shiny = false
end end
if $Trainer.party.length >= 6 if $Trainer.party.length >= 6
if (keepInParty == 0) if (keepInParty == 0)
if isOnPinkanIsland() if isOnPinkanIsland()
@@ -1704,14 +1637,14 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
poke2 = Pokemon.new(bodyPoke, body_level) poke2 = Pokemon.new(bodyPoke, body_level)
poke1 = Pokemon.new(headPoke, head_level) poke1 = Pokemon.new(headPoke, head_level)
#Fusing from PC # Fusing from PC
if pcPosition != nil if pcPosition != nil
box = pcPosition[0] box = pcPosition[0]
index = pcPosition[1] index = pcPosition[1]
#todo: store at next available position from current position # todo: store at next available position from current position
$PokemonStorage.pbStoreCaught(poke2) $PokemonStorage.pbStoreCaught(poke2)
else else
#Fusing from party # Fusing from party
if isOnPinkanIsland() if isOnPinkanIsland()
scene.pbDisplay(_INTL("{1} was released.", poke2.name)) scene.pbDisplay(_INTL("{1} was released.", poke2.name))
else else
@@ -1724,14 +1657,14 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
if pcPosition != nil if pcPosition != nil
box = pcPosition[0] box = pcPosition[0]
index = pcPosition[1] index = pcPosition[1]
#todo: store at next available position from current position # todo: store at next available position from current position
$PokemonStorage.pbStoreCaught(poke2) $PokemonStorage.pbStoreCaught(poke2)
else else
Kernel.pbAddPokemonSilent(poke2, poke2.level) Kernel.pbAddPokemonSilent(poke2, poke2.level)
end end
end end
#On ajoute les poke au pokedex # On ajoute les poke au pokedex
$Trainer.pokedex.set_seen(poke1.species) $Trainer.pokedex.set_seen(poke1.species)
$Trainer.pokedex.set_owned(poke1.species) $Trainer.pokedex.set_owned(poke1.species)
$Trainer.pokedex.set_seen(poke2.species) $Trainer.pokedex.set_seen(poke2.species)
@@ -1744,7 +1677,7 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
pokemon.obtain_method = 0 pokemon.obtain_method = 0
poke1.obtain_method = 0 poke1.obtain_method = 0
#scene.pbDisplay(_INTL(p1.to_s + " " + p2.to_s)) # scene.pbDisplay(_INTL(p1.to_s + " " + p2.to_s))
scene.pbHardRefresh scene.pbHardRefresh
scene.pbDisplay(_INTL("Your Pokémon were successfully unfused! ")) scene.pbDisplay(_INTL("Your Pokémon were successfully unfused! "))
return true return true
@@ -1752,8 +1685,6 @@ def pbUnfuse(pokemon, scene, supersplicers, pcPosition = nil)
end end
end end
ItemHandlers::UseOnPokemon.add(:SUPERSPLICERS, proc { |item, pokemon, scene| ItemHandlers::UseOnPokemon.add(:SUPERSPLICERS, proc { |item, pokemon, scene|
next true if pbDNASplicing(pokemon, scene, item) next true if pbDNASplicing(pokemon, scene, item)
}) })
@@ -1770,26 +1701,26 @@ def returnItemsToBag(pokemon, poke2)
poke2.item = nil poke2.item = nil
end end
#A AJOUTER: l'attribut dmgup ne modifie presentement pas # A AJOUTER: l'attribut dmgup ne modifie presentement pas
# le damage d'une attaque # le damage d'une attaque
# #
ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene| ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene|
move = scene.pbChooseMove(pokemon, _INTL("Boost Damage of which move?")) move = scene.pbChooseMove(pokemon, _INTL("Boost Damage of which move?"))
if move >= 0 if move >= 0
#if pokemon.moves[move].damage==0 || pokemon.moves[move].accuracy<=5 || pokemon.moves[move].dmgup >=3 # if pokemon.moves[move].damage==0 || pokemon.moves[move].accuracy<=5 || pokemon.moves[move].dmgup >=3
# scene.pbDisplay(_INTL("It won't have any effect.")) # scene.pbDisplay(_INTL("It won't have any effect."))
# next false # next false
#else # else
#pokemon.moves[move].dmgup+=1 # pokemon.moves[move].dmgup+=1
#pokemon.moves[move].damage +=5 # pokemon.moves[move].damage +=5
#pokemon.moves[move].accuracy -=5 # pokemon.moves[move].accuracy -=5
#movename=PBMoves.getName(pokemon.moves[move].id) # movename=PBMoves.getName(pokemon.moves[move].id)
#scene.pbDisplay(_INTL("{1}'s damage increased.",movename)) # scene.pbDisplay(_INTL("{1}'s damage increased.",movename))
#next true # next true
scene.pbDisplay(_INTL("This item has not been implemented into the game yet. It had no effect.")) scene.pbDisplay(_INTL("This item has not been implemented into the game yet. It had no effect."))
next false next false
#end # end
end end
}) })
@@ -1932,7 +1863,7 @@ ItemHandlers::UseOnPokemon.add(:DAMAGEUP, proc { |item, pokemon, scene|
# :SUNSTONE,:DUSKSTONE,:DAWNSTONE,:SHINYSTONE,:OVALSTONE, # :SUNSTONE,:DUSKSTONE,:DAWNSTONE,:SHINYSTONE,:OVALSTONE,
# :UPGRADE,:DUBIOUSDISC,:ICESTONE,:MAGNETSTONE) # :UPGRADE,:DUBIOUSDISC,:ICESTONE,:MAGNETSTONE)
#Quest log # Quest log
ItemHandlers::UseFromBag.add(:DEVONSCOPE, proc { |item| ItemHandlers::UseFromBag.add(:DEVONSCOPE, proc { |item|
pbQuestlog() pbQuestlog()
@@ -1943,7 +1874,7 @@ ItemHandlers::UseInField.add(:DEVONSCOPE, proc { |item|
pbQuestlog() pbQuestlog()
}) })
#TRACKER (for roaming legendaries) # TRACKER (for roaming legendaries)
ItemHandlers::UseInField.add(:REVEALGLASS, proc { |item| ItemHandlers::UseInField.add(:REVEALGLASS, proc { |item|
track_pokemon() track_pokemon()
next true next true
@@ -2040,7 +1971,7 @@ def track_pokemon()
end end
####EXP. ALL ####EXP. ALL
#Methodes relative a l'exp sont pas encore la et pas compatibles # Methodes relative a l'exp sont pas encore la et pas compatibles
# avec cette version de essentials donc # avec cette version de essentials donc
# ca fait fuck all pour l'instant. # ca fait fuck all pour l'instant.
ItemHandlers::UseFromBag.add(:EXPALL, proc { |item| ItemHandlers::UseFromBag.add(:EXPALL, proc { |item|
@@ -2073,10 +2004,10 @@ ItemHandlers::UseOnPokemon.add(:GOLDENBANANA, proc { |item, pokemon, scene|
ItemHandlers::UseInField.add(:BOXLINK, proc { |item| ItemHandlers::UseInField.add(:BOXLINK, proc { |item|
blacklisted_maps = [ blacklisted_maps = [
315, 316, 317, 318, 328, 343, #Elite Four 315, 316, 317, 318, 328, 343, # Elite Four
776, 777, 778, 779, 780, 781, 782, 783, 784, #Mt. Silver 776, 777, 778, 779, 780, 781, 782, 783, 784, # Mt. Silver
722, 723, 724, 720, #Dream sequence 722, 723, 724, 720, # Dream sequence
304, 306, 307 #Victory road 304, 306, 307 # Victory road
] ]
if blacklisted_maps.include?($game_map.map_id) if blacklisted_maps.include?($game_map.map_id)
Kernel.pbMessage("There doesn't seem to be any network coverage here...") Kernel.pbMessage("There doesn't seem to be any network coverage here...")
@@ -2084,7 +2015,7 @@ ItemHandlers::UseInField.add(:BOXLINK, proc { |item|
pbFadeOutIn { pbFadeOutIn {
scene = PokemonStorageScene.new scene = PokemonStorageScene.new
screen = PokemonStorageScreen.new(scene, $PokemonStorage) screen = PokemonStorageScreen.new(scene, $PokemonStorage)
screen.pbStartScreen(0) #Boot PC in organize mode screen.pbStartScreen(0) # Boot PC in organize mode
} }
end end
next 1 next 1

View File

@@ -4,6 +4,18 @@ def isWearingTeamRocketOutfit()
return (isWearingClothes(CLOTHES_TEAM_ROCKET_MALE) || isWearingClothes(CLOTHES_TEAM_ROCKET_FEMALE)) && isWearingHat(HAT_TEAM_ROCKET) return (isWearingClothes(CLOTHES_TEAM_ROCKET_MALE) || isWearingClothes(CLOTHES_TEAM_ROCKET_FEMALE)) && isWearingHat(HAT_TEAM_ROCKET)
end end
def isWearingFavoriteOutfit()
is_wearing_favorite_hat = $Trainer.hat == $Trainer.favorite_hat || !$Trainer.favorite_hat
is_wearing_favorite_clothes = $Trainer.clothes == $Trainer.favorite_clothes || !$Trainer.favorite_clothes
if $Trainer.favorite_hat && !$Trainer.favorite_clothes
return is_wearing_favorite_hat
end
if $Trainer.favorite_clothes && !$Trainer.favorite_hat
return is_wearing_favorite_clothes
end
return is_wearing_favorite_clothes && is_wearing_favorite_hat
end
def obtainRocketOutfit() def obtainRocketOutfit()
Kernel.pbReceiveItem(:ROCKETUNIFORM) Kernel.pbReceiveItem(:ROCKETUNIFORM)
gender = pbGet(VAR_TRAINER_GENDER) gender = pbGet(VAR_TRAINER_GENDER)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,2 @@
1739849259 1739894631
1739849260 1739894631
1739849260
1739849318

View File

@@ -56,3 +56,77 @@ Graphics/CustomBattlers/spritesheets/spritesheets_base/106.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/457.png Graphics/CustomBattlers/spritesheets/spritesheets_base/457.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/457/457.png Graphics/CustomBattlers/spritesheets/spritesheets_custom/457/457.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/25/25a.png Graphics/CustomBattlers/spritesheets/spritesheets_custom/25/25a.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/222.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/183.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/183/183.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/76.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/203.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/203/203.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/2.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/50.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/50/50a.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/323.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/152.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/446.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/93.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/93/93.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/37.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/165.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/165/165.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/30.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/79.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/79/79a.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/157.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/302.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/42.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/227.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/227/227.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/23.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/161.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/161/161.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/310.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/310/310a.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/50/50.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/334.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/334/334.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/29.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/29/29.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/94/94.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/410.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/49.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/49/49.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/308.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/132.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/442.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/442/442b.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/170.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/295.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/381.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/362/362.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/212.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/4.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/4/4.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/55.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/390.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/390/390.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/163.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/438.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/438/438.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/134.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/364.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/447.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/447/447.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/339.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/91.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/91/91.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/169.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/11.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/11/11.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/87.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/263.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/1.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/1/1.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/20.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/32.png
Graphics/CustomBattlers/spritesheets/spritesheets_base/105.png
Graphics/CustomBattlers/spritesheets/spritesheets_custom/105/105.png

BIN
Graphics/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB