Files
infinitefusion-e18/Data/Scripts/998_InfiniteFusion/Player/PlayerAddons.rb
2025-04-24 19:57:12 -04:00

292 lines
6.7 KiB
Ruby

class Player < Trainer
attr_accessor :skin_tone
attr_accessor :clothes
attr_accessor :hat
attr_accessor :hat2
attr_accessor :hair
attr_accessor :hair_color
attr_accessor :hat_color
attr_accessor :hat2_color
attr_accessor :clothes_color
attr_accessor :unlocked_clothes
attr_accessor :unlocked_hats
attr_accessor :unlocked_hairstyles
attr_accessor :unlocked_card_backgrounds
attr_accessor :dyed_hats
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
attr_accessor :card_background
attr_accessor :unlocked_card_backgrounds
attr_accessor :seen_qmarks_sprite
attr_accessor :beat_league
attr_accessor :new_game_plus_unlocked
def last_worn_outfit
if !@last_worn_outfit
if pbGet(VAR_TRAINER_GENDER) == GENDER_MALE
@last_worn_outfit = DEFAULT_OUTFIT_MALE
else
@last_worn_outfit = DEFAULT_OUTFIT_FEMALE
end
end
return @last_worn_outfit
end
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
def outfit=(value)
@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
end
@hat = value
refreshPlayerOutfit()
end
# todo : refactor to always use set_hat instead
def hat2=(value)
if value.is_a?(Symbol)
value = HATS[value].id
end
@hat2 = value
refreshPlayerOutfit()
end
def hair=(value)
if value.is_a?(Symbol)
value = HAIRSTYLES[value].id
end
@hair = value
refreshPlayerOutfit()
end
def clothes=(value)
if value.is_a?(Symbol)
value = OUTFITS[value].id
end
@clothes = value
refreshPlayerOutfit()
end
def clothes_color=(value)
@clothes_color = value
$player.dyed_clothes = {} if !$player.dyed_clothes
$player.dyed_clothes[@clothes] = value if value
refreshPlayerOutfit()
end
def set_hat_color(value, is_secondary = false)
if is_secondary
@hat2_color = value
else
@hat_color = value
end
$player.dyed_hats = {} if !$player.dyed_hats
worn_hat = is_secondary ? @hat2 : @hat
$player.dyed_hats[worn_hat] = value if value
refreshPlayerOutfit()
end
def hat_color=(value)
@hat_color = value
$player.dyed_hats = {} if !$player.dyed_hats
worn_hat = @hat
$player.dyed_hats[worn_hat] = value if value
refreshPlayerOutfit()
end
def hat2_color=(value)
@hat2_color = value
$player.dyed_hats = {} if !$player.dyed_hats
worn_hat = @hat2
$player.dyed_hats[worn_hat] = value if value
refreshPlayerOutfit()
end
def unlock_clothes(outfitID, silent = false)
update_global_clothes_list()
outfit = $PokemonGlobal.clothes_data[outfitID]
@unlocked_clothes = [] if !@unlocked_clothes
@unlocked_clothes << outfitID if !@unlocked_clothes.include?(outfitID)
if !silent
filename = getTrainerSpriteOutfitFilename(outfitID)
name = outfit ? outfit.name : outfitID
unlock_outfit_animation(filename, name)
end
end
def unlock_hat(hatID, silent = false)
update_global_hats_list()
hat = $PokemonGlobal.hats_data[hatID]
@unlocked_hats = [] if !@unlocked_hats
@unlocked_hats << hatID if !@unlocked_hats.include?(hatID)
if !silent
filename = getTrainerSpriteHatFilename(hatID)
name = hat ? hat.name : hatID
unlock_outfit_animation(filename, name)
end
end
def unlock_hair(hairID, silent = false)
update_global_hairstyles_list()
hairstyle = $PokemonGlobal.hairstyles_data[hairID]
if hairID.is_a?(Symbol)
hairID = HAIRSTYLES[hairID].id
end
@unlocked_hairstyles = [] if !@unlocked_hairstyles
@unlocked_hairstyles << hairID if !@unlocked_hairstyles.include?(hairID)
if !silent
filename = getTrainerSpriteHairFilename("2_" + hairID)
name = hairstyle ? hairstyle.name : hairID
unlock_outfit_animation(filename, name)
end
end
def unlock_outfit_animation(filepath, name, color = 2)
outfit_preview = PictureWindow.new(filepath)
outfit_preview.x = Graphics.width / 4
musicEffect = "Key item get"
pbMessage(_INTL("{1} obtained \\C[{2}]{3}\\C[0]!\\me[{4}]", $player.name, color, name, musicEffect))
outfit_preview.dispose
end
def surfing_pokemon=(species)
@surfing_pokemon = species
end
def skin_tone=(value)
@skin_tone = value
$scene.reset_player_sprite
#$scene.spritesetGlobal.playersprite.updateCharacterBitmap
end
def beat_league=(value)
@beat_league = value
end
def new_game_plus_unlocked=(value)
@new_game_plus_unlocked = value
end
def seen?(species)
return @pokedex.seen?(species)
end
# (see Pokedex#owned?)
# Shorthand for +self.pokedex.owned?+.
def owned?(species)
return @pokedex.owned?(species)
end
def can_change_outfit()
return false if isOnPinkanIsland()
return true
end
alias playerAddOns_initialize initialize
def initialize(name, trainer_type)
playerAddOns_initialize(name,trainer_type)
@outfit = 0
@hat = 0
@hat2 = 0
@hair = 0
@clothes = 0
@hair_color = 0
@skin_tone = 0
@beat_league = false
@new_game_plus_unlocked = false
@new_game_plus = false
@surfing_pokemon = nil
@last_worn_outfit = nil
@last_worn_hat = nil
@last_worn_hat2 = nil
@dyed_hats = {}
@dyed_clothes = {}
@favorite_hat = nil
@favorite_hat2 =nil
@favorite_clothes = nil
@card_background = Settings::DEFAULT_TRAINER_CARD_BG
@unlocked_card_backgrounds = [@card_background]
@seen_qmarks_sprite = false
end
end