mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-09 06:04:59 +00:00
Improves npc appearance generation algorithm
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user