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 5b7cec1cc..346714904 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/Map788.rxdata b/Data/Map788.rxdata index fa6a5aa70..cbc7dec75 100644 Binary files a/Data/Map788.rxdata and b/Data/Map788.rxdata differ diff --git a/Data/MapInfos.rxdata b/Data/MapInfos.rxdata index 93f61750b..58610fafc 100644 Binary files a/Data/MapInfos.rxdata and b/Data/MapInfos.rxdata differ diff --git a/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb b/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb index bc941d2d4..8336fe8cc 100644 --- a/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb +++ b/Data/Scripts/050_Outfits/001_OutfitsMain/LayeredClothes.rb @@ -87,6 +87,7 @@ end def shiftHairColor(incr) $Trainer.hair_color = 0 if !$Trainer.hair_color $Trainer.hair_color += incr + echoln "Hair color: #{$Trainer.hair_color}" refreshPlayerOutfit() end @@ -248,20 +249,6 @@ def generateNPCClothedBitmapStatic(trainerAppearance,action = "walk") hatBitmapWrapper = AnimatedBitmap.new(hatFilename, hat_color_shift) if pbResolveBitmap(hatFilename) hat2BitmapWrapper = AnimatedBitmap.new(hat2Filename, hat2_color_shift) if pbResolveBitmap(hat2Filename) - 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 if hat2BitmapWrapper frame_count = 4 # Assuming 4 frames for hair animation; adjust as needed @@ -278,6 +265,21 @@ def generateNPCClothedBitmapStatic(trainerAppearance,action = "walk") end end + 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 diff --git a/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb b/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb index 93df46768..fe932d08b 100644 --- a/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb +++ b/Data/Scripts/050_Outfits/utils/OutfitsGameplayUtils.rb @@ -315,13 +315,16 @@ def randomizePlayerOutfitUnlocked() end def convert_letter_to_number(letter, max_number = nil) - return 0 if !letter - return letter.ord if !max_number - return letter.ord % max_number + return 0 unless letter + base_value = (letter.ord * 31) & 0xFFFFFFFF # Use a prime multiplier to spread values + return base_value unless max_number + return base_value % max_number end + def generate_appearance_from_name(name) - name_seed_length = 11 + name_seed_length = 13 + max_dye_color=360 seed = name[0, name_seed_length] # Truncate if longer than 8 seed += seed[0, name_seed_length - seed.length] while seed.length < name_seed_length # Repeat first characters if shorter @@ -333,17 +336,24 @@ def generate_appearance_from_name(name) hairstyles_list = $PokemonGlobal.hairstyles_data.keys hat = hats_list[convert_letter_to_number(seed[0],hats_list.length)] - hat_color = convert_letter_to_number(seed[1],200) + hat_color = convert_letter_to_number(seed[1],max_dye_color) + hat2_color = convert_letter_to_number(seed[2],max_dye_color) hat_color = 0 if convert_letter_to_number(seed[2]) % 2 == 0 #1/2 chance of no dyed hat + hat2 = hats_list[convert_letter_to_number(seed[10],hats_list.length)] + hat2_color = 0 if convert_letter_to_number(seed[11]) % 2 == 0 #1/2 chance of no dyed ha + hat2 = "" if convert_letter_to_number(seed[12]) % 2 == 0 #1/2 chance of no 2nd hat + clothes = clothes_list[convert_letter_to_number(seed[3],clothes_list.length)] - clothes_color = convert_letter_to_number(seed[4],200) + clothes_color = convert_letter_to_number(seed[4],max_dye_color) clothes_color = 0 if convert_letter_to_number(seed[5]) % 2 == 0 #1/2 chance of no dyed clothes hair_base = hairstyles_list[convert_letter_to_number(seed[6],hairstyles_list.length)] hair_number = [1,2,3,4][convert_letter_to_number(seed[7],3)] + echoln "hair_number: #{hair_number}" + hair=getFullHairId(hair_base,hair_number) - hair_color = convert_letter_to_number(seed[8],200) + hair_color = convert_letter_to_number(seed[8],max_dye_color) hair_color = 0 if convert_letter_to_number(seed[9]) % 2 == 0 #1/2 chance of no dyed hair echoln hair_color @@ -352,7 +362,8 @@ def generate_appearance_from_name(name) skin_tone = [1,2,3,4,5,6][convert_letter_to_number(seed[10],5)] return TrainerAppearance.new(skin_tone,hat,clothes, hair, - hair_color, clothes_color, hat_color) + hair_color, clothes_color, hat_color, + hat2,hat2_color) 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 196d54dd4..323a283f3 100644 Binary files a/Data/System.rxdata and b/Data/System.rxdata differ diff --git a/Data/Tilesets.rxdata b/Data/Tilesets.rxdata index f568868cc..b1437bcd4 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