mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-09 22:24:58 +00:00
6.4 update (minus sprites)
This commit is contained in:
@@ -63,21 +63,25 @@ end
|
||||
|
||||
def setHairColor(hue_shift)
|
||||
$Trainer.hair_color = hue_shift
|
||||
refreshPlayerOutfit()
|
||||
end
|
||||
|
||||
def shiftHatColor(incr)
|
||||
$Trainer.hat_color = 0 if !$Trainer.hat_color
|
||||
$Trainer.hat_color += incr
|
||||
refreshPlayerOutfit()
|
||||
end
|
||||
|
||||
def shiftClothesColor(incr)
|
||||
$Trainer.clothes_color = 0 if !$Trainer.clothes_color
|
||||
$Trainer.clothes_color += incr
|
||||
refreshPlayerOutfit()
|
||||
end
|
||||
|
||||
def shiftHairColor(incr)
|
||||
$Trainer.hair_color = 0 if !$Trainer.hair_color
|
||||
$Trainer.hair_color += incr
|
||||
refreshPlayerOutfit()
|
||||
end
|
||||
|
||||
def pbLoadOutfitBitmap(outfitFileName)
|
||||
@@ -99,25 +103,41 @@ end
|
||||
|
||||
def getEasterEggHeldItem()
|
||||
map = $game_map.map_id
|
||||
return "HOTDOG" if [141, 194].include?(map) #restaurant
|
||||
return "SNOWBALL" if [670, 693, 698, 694].include?(map)
|
||||
return "WALLET" if [432, 433, 434, 435, 436, 292].include?(map) #dept. store
|
||||
return "ALARMCLOCK" if [43, 48, 67, 68, 69, 70, 71, 73].include?(map) #Player room
|
||||
return "secrets/HOTDOG" if [141, 194].include?(map) #restaurant
|
||||
return "secrets/SNOWBALL" if [670, 693, 698, 694].include?(map)
|
||||
return "secrets/WALLET" if [432, 433, 434, 435, 436, 292].include?(map) #dept. store
|
||||
return "secrets/ALARMCLOCK" if [43, 48, 67, 68, 69, 70, 71, 73].include?(map) #Player room
|
||||
return "SAFARIBALL" if [445, 484, 485, 486, 107, 487, 488, 717, 82, 75, 74].include?(map) #Safari Zone
|
||||
|
||||
return "secrets/WISP" if [401,402,403,467,468,469].include?(map) #Pokemon Tower
|
||||
return "secrets/SKULL" if [400].include?(map) #Pokemon Tower ground floor
|
||||
return "secrets/ROCK" if [349,350,800,].include?(map) #Rock Tunnel
|
||||
return "secrets/MAGIKARP" if [394,471,189,].include?(map) #Fishing huts
|
||||
return "secrets/AZUREFLUTE" if [694,].include?(map) && $PokemonBag.pbQuantity(:AZUREFLUTE)>=1 #Ice Mountain peak
|
||||
return "secrets/BIGSODA" if [436,].include?(map) && $PokemonBag.pbQuantity(:SODAPOP)>=1 #Celadon dept. store top
|
||||
return "secrets/EGG" if [13,406,214,].include?(map) #Celadon Café
|
||||
return "secrets/STICK" if [266,].include?(map) #Ilex forest
|
||||
return nil
|
||||
end
|
||||
|
||||
def getCurrentPokeball()
|
||||
otherItem = getEasterEggHeldItem()
|
||||
def getCurrentPokeball(allowEasterEgg=true)
|
||||
otherItem = getEasterEggHeldItem() if allowEasterEgg
|
||||
return otherItem if otherItem
|
||||
firstPokemon = $Trainer.party[0]
|
||||
return firstPokemon.poke_ball if firstPokemon
|
||||
return nil
|
||||
end
|
||||
|
||||
def generate_front_trainer_sprite_bitmap(pokeball = nil, clothes_id = nil, hat_id = nil, hair_id = nil,
|
||||
def generate_front_trainer_sprite_bitmap_from_appearance(trainerAppearance)
|
||||
echoln caller
|
||||
echoln trainerAppearance.hat
|
||||
return generate_front_trainer_sprite_bitmap(false,nil,trainerAppearance.clothes,trainerAppearance.hat,
|
||||
trainerAppearance.hair,trainerAppearance.skin_color,
|
||||
trainerAppearance.hair_color,trainerAppearance.hat_color,trainerAppearance.clothes_color)
|
||||
end
|
||||
|
||||
def generate_front_trainer_sprite_bitmap(allowEasterEgg=true, pokeball = nil, clothes_id = nil, hat_id = nil, hair_id = nil,
|
||||
skin_tone_id = nil, hair_color = nil, hat_color = nil, clothes_color = nil)
|
||||
echoln hat_id
|
||||
clothes_id = $Trainer.clothes if !clothes_id
|
||||
hat_id = $Trainer.hat if !hat_id
|
||||
hair_id = $Trainer.hair if !hair_id
|
||||
@@ -130,7 +150,7 @@ def generate_front_trainer_sprite_bitmap(pokeball = nil, clothes_id = nil, hat_i
|
||||
outfitFilename = getTrainerSpriteOutfitFilename(clothes_id) #_INTL(Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_CLOTHES_FOLDER + "/clothes_trainer_{1}", $Trainer.clothes)
|
||||
|
||||
hatFilename = getTrainerSpriteHatFilename(hat_id) # _INTL(Settings::PLAYER_GRAPHICS_FOLDER + Settings::PLAYER_HAT_FOLDER + "/hat_trainer_{1}", $Trainer.hat)
|
||||
pokeball = getCurrentPokeball if !pokeball
|
||||
pokeball = getCurrentPokeball(allowEasterEgg) if !pokeball
|
||||
ballFilename = getTrainerSpriteBallFilename(pokeball) if pokeball
|
||||
|
||||
baseFilePath = getBaseTrainerSpriteFilename(skin_tone_id)
|
||||
@@ -158,6 +178,7 @@ def generate_front_trainer_sprite_bitmap(pokeball = nil, clothes_id = nil, hat_i
|
||||
|
||||
hatBitmap = AnimatedBitmap.new(hatFilename, hat_color_shift) if pbResolveBitmap(hatFilename) #pbLoadOutfitBitmap(hatFilename) if pbResolveBitmap(hatFilename)
|
||||
|
||||
baseBitmap.bitmap = baseBitmap.bitmap.clone
|
||||
baseBitmap.bitmap.blt(0, 0, outfitBitmap.bitmap, outfitBitmap.bitmap.rect) if outfitBitmap
|
||||
|
||||
baseBitmap.bitmap.blt(0, 0, hairBitmapWrapper.bitmap, hairBitmapWrapper.bitmap.rect) if hairBitmapWrapper
|
||||
@@ -167,6 +188,48 @@ def generate_front_trainer_sprite_bitmap(pokeball = nil, clothes_id = nil, hat_i
|
||||
return baseBitmap
|
||||
end
|
||||
|
||||
def generateNPCClothedBitmapStatic(trainerAppearance,action = "walk")
|
||||
baseBitmapFilename = getBaseOverworldSpriteFilename(action, trainerAppearance.skin_color)
|
||||
|
||||
baseSprite = AnimatedBitmap.new(baseBitmapFilename)
|
||||
|
||||
baseBitmap = baseSprite.bitmap.clone # nekkid sprite
|
||||
outfitFilename = getOverworldOutfitFilename(trainerAppearance.clothes, action)
|
||||
|
||||
hairFilename = getOverworldHairFilename(trainerAppearance.hair)
|
||||
|
||||
|
||||
#Clothes
|
||||
clothes_color_shift = trainerAppearance.clothes_color || 0
|
||||
clothesBitmap = AnimatedBitmap.new(outfitFilename, clothes_color_shift).bitmap if pbResolveBitmap(outfitFilename)
|
||||
baseBitmap.blt(0, 0, clothesBitmap, clothesBitmap.rect)
|
||||
#clothesBitmap.dispose
|
||||
|
||||
|
||||
#Hair
|
||||
hair_color_shift = trainerAppearance.hair_color || 0
|
||||
hairBitmap = AnimatedBitmap.new(hairFilename, hair_color_shift).bitmap if pbResolveBitmap(hairFilename)
|
||||
baseBitmap.blt(0, 0, hairBitmap, hairBitmap.rect)
|
||||
hat_color_shift = trainerAppearance.hat_color || 0
|
||||
hatFilename = getOverworldHatFilename(trainerAppearance.hat)
|
||||
hatBitmapWrapper = AnimatedBitmap.new(hatFilename, hat_color_shift) if pbResolveBitmap(hatFilename)
|
||||
if hatBitmapWrapper
|
||||
frame_count = 4 # Assuming 4 frames for hair animation; adjust as needed
|
||||
hat_frame_bitmap = duplicateHatForFrames(hatBitmapWrapper.bitmap, frame_count)
|
||||
|
||||
frame_width = baseSprite.bitmap.width / frame_count # Calculate frame width
|
||||
|
||||
frame_count.times do |i|
|
||||
# Calculate offset for each frame
|
||||
frame_offset = [i * frame_width, 0]
|
||||
# Adjust Y offset if frame index is odd
|
||||
frame_offset[1] -= 2 if i.odd?
|
||||
positionHat(baseBitmap, hat_frame_bitmap, frame_offset, i, frame_width)
|
||||
end
|
||||
end
|
||||
return baseBitmap
|
||||
end
|
||||
|
||||
def generateClothedBitmapStatic(trainer, action = "walk")
|
||||
baseBitmapFilename = getBaseOverworldSpriteFilename(action, trainer.skin_tone)
|
||||
if !pbResolveBitmap(baseBitmapFilename)
|
||||
@@ -174,39 +237,77 @@ def generateClothedBitmapStatic(trainer, action = "walk")
|
||||
end
|
||||
baseSprite = AnimatedBitmap.new(baseBitmapFilename)
|
||||
|
||||
baseBitmap = baseSprite.bitmap.clone #nekkid sprite
|
||||
outfitFilename = getOverworldOutfitFilename(trainer.clothes, action) #
|
||||
# Clone the base sprite bitmap to create the base for the player's sprite
|
||||
baseBitmap = baseSprite.bitmap.clone # nekkid sprite
|
||||
outfitFilename = getOverworldOutfitFilename(trainer.clothes, action)
|
||||
outfitFilename = getOverworldOutfitFilename(Settings::PLAYER_TEMP_OUTFIT_FALLBACK) if !pbResolveBitmap(outfitFilename)
|
||||
hairFilename = getOverworldHairFilename(trainer.hair)
|
||||
hatFilename = getOverworldHatFilename(trainer.hat)
|
||||
|
||||
hair_color_shift = trainer.hair_color
|
||||
hat_color_shift = trainer.hat_color
|
||||
clothes_color_shift = trainer.clothes_color
|
||||
# Use default values if color shifts are not set
|
||||
hair_color_shift = trainer.hair_color || 0
|
||||
hat_color_shift = trainer.hat_color || 0
|
||||
clothes_color_shift = trainer.clothes_color || 0
|
||||
|
||||
hair_color_shift = 0 if !hair_color_shift
|
||||
hat_color_shift = 0 if !hat_color_shift
|
||||
clothes_color_shift = 0 if !clothes_color_shift
|
||||
#@hat.update(@character_name, hatFilename,hat_color_shift) if @hat
|
||||
# Use fallback outfit if the specified outfit cannot be resolved
|
||||
if !pbResolveBitmap(outfitFilename)
|
||||
outfitFilename = Settings::PLAYER_TEMP_OUTFIT_FALLBACK
|
||||
end
|
||||
|
||||
outfitBitmap = AnimatedBitmap.new(outfitFilename, clothes_color_shift) # if pbResolveBitmap(outfitFilename) #pbLoadOutfitBitmap(outfitFilename) if pbResolveBitmap(outfitFilename)
|
||||
# Load the outfit and hair bitmaps
|
||||
outfitBitmap = AnimatedBitmap.new(outfitFilename, clothes_color_shift)
|
||||
hairBitmapWrapper = AnimatedBitmap.new(hairFilename, hair_color_shift) if pbResolveBitmap(hairFilename)
|
||||
hatBitmapWrapper = AnimatedBitmap.new(hatFilename, hat_color_shift) if pbResolveBitmap(hatFilename)
|
||||
|
||||
# Blit the outfit onto the base sprite
|
||||
baseBitmap.blt(0, 0, outfitBitmap.bitmap, outfitBitmap.bitmap.rect) if outfitBitmap
|
||||
|
||||
#baseBitmap.blt(0, 0, hairBitmapWrapper.bitmap, hairBitmapWrapper.bitmap.rect)
|
||||
|
||||
current_offset = 0 #getCurrentSpriteOffset()
|
||||
current_offset = [0, 0] # Replace this with getCurrentSpriteOffset() if needed
|
||||
positionHair(baseBitmap, hairBitmapWrapper.bitmap, current_offset) if hairBitmapWrapper
|
||||
#baseBitmap.blt(0, 0, hatBitmap, hatBitmap.rect) if hatBitmap
|
||||
|
||||
# Handle the hat - duplicate it for each frame if necessary
|
||||
if hatBitmapWrapper
|
||||
frame_count = 4 # Assuming 4 frames for hair animation; adjust as needed
|
||||
hat_frame_bitmap = duplicateHatForFrames(hatBitmapWrapper.bitmap, frame_count)
|
||||
|
||||
frame_width = baseSprite.bitmap.width / frame_count # Calculate frame width
|
||||
|
||||
frame_count.times do |i|
|
||||
# Calculate offset for each frame
|
||||
frame_offset = [i * frame_width, 0]
|
||||
# Adjust Y offset if frame index is odd
|
||||
frame_offset[1] -= 2 if i.odd?
|
||||
positionHat(baseBitmap, hat_frame_bitmap, frame_offset, i, frame_width)
|
||||
end
|
||||
end
|
||||
|
||||
return baseBitmap
|
||||
end
|
||||
|
||||
def positionHair(baseBitmap, hairBirmap, offset)
|
||||
baseBitmap.blt(offset[0], offset[1], hairBirmap, hairBirmap.rect)
|
||||
def positionHair(baseBitmap, hairBitmap, offset)
|
||||
baseBitmap.blt(offset[0], offset[1], hairBitmap, hairBitmap.rect)
|
||||
end
|
||||
|
||||
def positionHat(baseBitmap, hatBitmap, offset, frame_index, frame_width)
|
||||
# Define a rect for each frame
|
||||
frame_rect = Rect.new(frame_index * frame_width, 0, frame_width, hatBitmap.height)
|
||||
|
||||
# Blit only the part of the hat corresponding to the current frame
|
||||
baseBitmap.blt(offset[0], offset[1], hatBitmap, frame_rect)
|
||||
end
|
||||
|
||||
def duplicateHatForFrames(hatBitmap, frame_count)
|
||||
# Create a new bitmap for the duplicated hat frames
|
||||
frame_width = hatBitmap.width
|
||||
total_width = frame_width * frame_count
|
||||
duplicatedBitmap = Bitmap.new(total_width, hatBitmap.height)
|
||||
|
||||
# Copy the single hat frame across each required frame
|
||||
frame_count.times do |i|
|
||||
duplicatedBitmap.blt(i * frame_width, 0, hatBitmap, hatBitmap.rect)
|
||||
end
|
||||
|
||||
return duplicatedBitmap
|
||||
end
|
||||
|
||||
def add_hat_to_bitmap(bitmap, hat_id, x_pos, y_pos, scale = 1, mirrored = false)
|
||||
@@ -240,3 +341,4 @@ end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,66 @@ class OutfitSelector
|
||||
return list_folders(get_hair_sets_list_path())
|
||||
end
|
||||
|
||||
def generate_hats_choice(baseOptions=true,additionalIds=[],additionalTags=[],filterOutTags=[])
|
||||
list = []
|
||||
list += additionalIds
|
||||
list += search_hats(additionalTags)
|
||||
if baseOptions
|
||||
list += get_hats_base_options()
|
||||
list += search_hats(get_regional_sets_tags())
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
def generate_clothes_choice(baseOptions=true,additionalIds=[],additionalTags=[],filterOutTags=[])
|
||||
list = []
|
||||
list += additionalIds
|
||||
list += search_clothes(additionalTags)
|
||||
if baseOptions
|
||||
list += get_clothes_base_options()
|
||||
list += search_clothes(get_regional_sets_tags())
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
def generate_hairstyle_choice(baseOptions=true,additionalIds=[],additionalTags=[],filterOutTags=[])
|
||||
list = []
|
||||
list += additionalIds
|
||||
list += search_hairstyles(additionalTags)
|
||||
if baseOptions
|
||||
list += get_hairstyle_salon_base_options()
|
||||
list += search_hairstyles(get_regional_sets_tags())
|
||||
end
|
||||
list << HAIR_BALD
|
||||
return list
|
||||
end
|
||||
|
||||
def get_regional_sets_tags()
|
||||
regional_tags = []
|
||||
regional_tags << "kanto" if $game_switches[SWITCH_KANTO_HAIR_COLLECTION]
|
||||
regional_tags << "johto" if $game_switches[SWITCH_JOHTO_HAIR_COLLECTION]
|
||||
regional_tags << "hoenn" if $game_switches[SWITCH_HOENN_HAIR_COLLECTION]
|
||||
regional_tags << "sinnoh" if $game_switches[SWITCH_SINNOH_HAIR_COLLECTION]
|
||||
regional_tags << "unova" if $game_switches[SWITCH_UNOVA_HAIR_COLLECTION]
|
||||
regional_tags << "kalos" if $game_switches[SWITCH_KALOS_HAIR_COLLECTION]
|
||||
regional_tags << "alola" if $game_switches[SWITCH_ALOLA_HAIR_COLLECTION]
|
||||
regional_tags << "galar" if $game_switches[SWITCH_GALAR_HAIR_COLLECTION]
|
||||
regional_tags << "paldea" if $game_switches[SWITCH_PALDEA_HAIR_COLLECTION]
|
||||
return regional_tags
|
||||
end
|
||||
|
||||
def get_hairstyle_salon_base_options()
|
||||
return search_hairstyles(["default"])
|
||||
end
|
||||
|
||||
def get_clothes_base_options()
|
||||
return search_clothes(["default"])
|
||||
end
|
||||
|
||||
def get_hats_base_options()
|
||||
return search_hats(["default"])
|
||||
end
|
||||
|
||||
def parse_hairstyles_folder
|
||||
hairstyle_types= list_folders(get_hair_sets_list_path())
|
||||
max_versions_number = 10
|
||||
|
||||
@@ -13,7 +13,7 @@ def update_global_hats_list()
|
||||
|
||||
# Iterate through the JSON data and create Hat objects
|
||||
hat_data.each do |data|
|
||||
tags = data['tags'] ? data['tags'].split(',') : []
|
||||
tags = data['tags'] ? data['tags'].split(',').map(&:strip) : []
|
||||
hat = Hat.new(
|
||||
data['id'],
|
||||
data['name'],
|
||||
@@ -34,7 +34,7 @@ def update_global_hairstyles_list()
|
||||
|
||||
# Iterate through the JSON data and create Hat objects
|
||||
hair_data.each do |data|
|
||||
tags = data['tags'] ? data['tags'].split(',') : []
|
||||
tags = data['tags'] ? data['tags'].split(',').map(&:strip) : []
|
||||
hair = Hairstyle.new(
|
||||
data['id'],
|
||||
data['name'],
|
||||
@@ -55,7 +55,7 @@ def update_global_clothes_list()
|
||||
|
||||
# Iterate through the JSON data and create Hat objects
|
||||
outfits_data.each do |data|
|
||||
tags = data['tags'] ? data['tags'].split(',') : []
|
||||
tags = data['tags'] ? data['tags'].split(',').map(&:strip) : []
|
||||
outfit = Clothes.new(
|
||||
data['id'],
|
||||
data['name'],
|
||||
|
||||
@@ -20,16 +20,33 @@ def filter_clothes(filter_tags = [], only_unlocked = false)
|
||||
return filter_outfits_by_tag(full_data_list, filter_tags, existing_files_list, unlocked_list, only_unlocked)
|
||||
end
|
||||
|
||||
def filter_clothes_only_not_owned(clothes_ids_list)
|
||||
filtered_list = []
|
||||
clothes_ids_list.each do|clothe_id|
|
||||
filtered_list << clothe_id if !$Trainer.unlocked_clothes.include?(clothe_id)
|
||||
end
|
||||
return filtered_list
|
||||
end
|
||||
|
||||
def filter_clothes_only_owned(clothes_ids_list)
|
||||
filtered_list = []
|
||||
clothes_ids_list.each do|clothe_id|
|
||||
filtered_list << clothe_id if $Trainer.unlocked_clothes.include?(clothe_id)
|
||||
end
|
||||
return filtered_list
|
||||
end
|
||||
|
||||
|
||||
#HATS
|
||||
|
||||
def search_hats(matching_tags = [], only_unlocked = false)
|
||||
def search_hats(matching_tags = [],excluding_tags=[], only_unlocked = false)
|
||||
update_global_outfit_lists()
|
||||
selector = OutfitSelector.new
|
||||
|
||||
full_data_list = $PokemonGlobal.hats_data
|
||||
existing_files_list = selector.parse_hats_folder()
|
||||
unlocked_list = $Trainer.unlocked_hats
|
||||
return search_outfits_by_tag(full_data_list, matching_tags, existing_files_list, unlocked_list, only_unlocked)
|
||||
return search_outfits_by_tag(full_data_list, matching_tags, existing_files_list, unlocked_list, only_unlocked,excluding_tags)
|
||||
end
|
||||
|
||||
def filter_hats(filter_tags = [], only_unlocked = false)
|
||||
@@ -38,18 +55,58 @@ def filter_hats(filter_tags = [], only_unlocked = false)
|
||||
|
||||
full_data_list = $PokemonGlobal.hats_data
|
||||
existing_files_list = selector.parse_hats_folder()
|
||||
echoln existing_files_list
|
||||
unlocked_list = $Trainer.unlocked_hats
|
||||
return filter_outfits_by_tag(full_data_list, filter_tags, existing_files_list, unlocked_list, only_unlocked)
|
||||
end
|
||||
|
||||
def filter_hats_only_not_owned(hats_ids_list)
|
||||
filtered_list = []
|
||||
hats_ids_list.each do|hat_id|
|
||||
filtered_list << hat_id if !$Trainer.unlocked_hats.include?(hat_id)
|
||||
end
|
||||
return filtered_list
|
||||
end
|
||||
|
||||
def filter_hats_only_owned(hats_ids_list)
|
||||
filtered_list = []
|
||||
hats_ids_list.each do|hat_id|
|
||||
filtered_list << hat_id if $Trainer.unlocked_hats.include?(hat_id)
|
||||
end
|
||||
return filtered_list
|
||||
end
|
||||
|
||||
|
||||
|
||||
#HAIRSTYLES
|
||||
|
||||
def search_hairstyles(matching_tags = [], only_unlocked = false)
|
||||
update_global_outfit_lists()
|
||||
selector = OutfitSelector.new
|
||||
|
||||
full_data_list = $PokemonGlobal.hairstyles_data
|
||||
existing_files_list = selector.parse_hairstyle_types_folder()
|
||||
return search_outfits_by_tag(full_data_list, matching_tags, existing_files_list, [], false)
|
||||
end
|
||||
|
||||
def filter_out_hairstyles(filter_tags = [],base_list = [],require_unlocked=false)
|
||||
update_global_outfit_lists()
|
||||
selector = OutfitSelector.new
|
||||
|
||||
data_list = $PokemonGlobal.hairstyles_data
|
||||
existing_files_list = selector.parse_hairstyle_types_folder()
|
||||
return exclude_outfits_by_tag(data_list, filter_tags, existing_files_list, base_list, false)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
# Generic searching methods
|
||||
|
||||
#Get outfits that have ANY of the tags
|
||||
def search_outfits_by_tag(outfits_map, matching_tags = [], physical_files_list = [], unlocked_list = [], require_unlocked = false)
|
||||
def search_outfits_by_tag(outfits_map, matching_tags = [], physical_files_list = [], unlocked_list = [], require_unlocked = false, excluding_tags=[])
|
||||
filtered_list = []
|
||||
outfits_map.each do |outfit_id, outfit|
|
||||
next if outfit.tags.any? { |tag| excluding_tags.include?(tag) }
|
||||
if outfit.tags.any? { |tag| matching_tags.include?(tag) }
|
||||
filtered_list << outfit_id if outfit_is_valid?(outfit_id, physical_files_list, unlocked_list, require_unlocked)
|
||||
end
|
||||
@@ -70,6 +127,19 @@ def filter_outfits_by_tag(outfits_map, filter_tags = [], physical_files_list = [
|
||||
return filtered_list
|
||||
end
|
||||
|
||||
#Get all outfits from list that DON'T have a tag
|
||||
def exclude_outfits_by_tag(outfits_map, filter_tags = [], physical_files_list = [], unlocked_list = [], require_unlocked = false)
|
||||
update_global_outfit_lists()
|
||||
|
||||
filtered_list = []
|
||||
outfits_map.each do |outfit_id, outfit|
|
||||
if filter_tags.any? { |tag| !outfit.tags.include?(tag) }
|
||||
filtered_list << outfit_id if outfit_is_valid?(outfit_id, physical_files_list, unlocked_list, require_unlocked)
|
||||
end
|
||||
end
|
||||
return filtered_list
|
||||
end
|
||||
|
||||
|
||||
def outfit_is_valid?(outfit_id, physical_files_list, unlocked_list, require_unlocked)
|
||||
return false if require_unlocked && !unlocked_list.include?(outfit_id)
|
||||
@@ -85,6 +155,7 @@ end
|
||||
|
||||
def get_clothes_by_id(id)
|
||||
update_global_outfit_lists()
|
||||
echoln $PokemonGlobal.clothes_data
|
||||
return $PokemonGlobal.clothes_data.has_key?(id) ? $PokemonGlobal.clothes_data[id] : nil
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user