Crafting quality table rewrite — msg99047 buffer overflow fix (step-376)
Using certain crafted items (e.g. the Prank Quill) triggered a crash on real hardware. The root cause: msg99047 is a crafting-quality description lookup table where each entry contains 12 NUL-separated segments (one per quality tier). The game reads each segment into a fixed-size buffer. The JP source never exceeds 12 characters per segment across all 468 segments — but 144 of the English segments were over that limit, some reaching 35 characters. 24 entries were rewritten. Fixes bug report #10 from Zeno against v2.4.2. Note: this surface's 12-character-per-segment cap was derived empirically from the JP source data, not from engine bytecode. If you see clipped or broken text in crafting-quality descriptions, please report it via the bug-report form. Per-entry changes follow.
Entries 0–2, 15–16 (placeholder delimiters): the DB had collapsed 12 separate ………§ segments into one long blob of 24 ellipsis chars. Restored the proper 12-segment delimiter structure matching the JP source. Entry 27 (single-ellipsis placeholder): same fix, with single ellipsis … per segment.
Entry 4 (quality adjective): 'pretty' capitalized to 'Pretty' across all 12 segments for consistency. Entries 3, 5, 6 (Normal, Dazzling, Mysterious) were already within the cap and unchanged.
Entry 7 (radiance/shine descriptors, all 12 segments over cap): 'a kingly radiance' (17 chars) → 'Kingly Glow' (11), 'a sparkly-bright shine' (22) → 'Flashy Glow' (11), 'a mysteriously eerie glow' (25) → 'Eerie Glow' (10), 'an incredibly intense shine' (27) → 'Fierce Glow' (11), 'a galactic shimmer' (18) → 'Cosmic Glow' (11), 'a dizzying brilliance' (21) → 'Dizzy Glow' (10), 'a starlike twinkle' (18) → 'Starry Glow' (11), 'a gorgeous gleam' (16) → 'Lavish Glow' (11), 'a noble queen's light' (21) → 'Regal Light' (11), 'the ultimate radiance' (21) → 'Supreme Glow' (12), 'a self-illuminating glow' (24) → 'Inner Glow' (10), 'a dazzling brilliance' (21) → 'Bright Glow' (11).
Entry 8 (shine descriptors, all 12 over cap): 'Novice shine' → 'Novice Glow', 'Gleaming shine' → 'Glossy Glow', 'Deceptive shine' → 'Tricky Glow', 'Amazing shine' → 'Grand Glow', 'Starlike shine' → 'Starry Glow', 'Eye-aching shine' → 'Harsh Glow', 'Flawless shine' → 'Pure Glow', 'Captivating shine' → 'Charm Glow', 'Unique shine' → 'Unique Glow', 'Stunning shine' → 'Vivid Glow', 'Dazzling shine' → 'Dazzle Glow', 'Blinding shine' → 'Blind Glow'.
Entry 9 (shine descriptors, all 12 over cap): 'Blindingly bright shine' (23) → 'Gentle Glow', 'Smooth, glossy shine' (20) → 'Sleek Glow', 'So-so shine' → 'So-so Glow', 'Pretty good shine' (17) → 'Decent Glow', 'Firefly-like glow' (17) → 'Firefly Glow', 'Candy sparkle' (13) → 'Candy Glow', 'Twinkly shine' (13) → 'Twinkly Glow', 'Beautiful shine' (14) → 'Lovely Glow', 'Something to brag about' (23) → 'Brag-worthy', 'Nice shine' → 'Nice Glow', 'Eye-catching shine' (18) → 'Catchy Glow', 'Brilliant sparkle' (17) → 'Vivid Glow'.
Entry 10 (gleam descriptors, 6 of 12 over cap): 'Dull gleam' → 'Murky Gleam', 'Half-hearted gleam' (18) → 'Lazy Gleam', 'Dumpling gleam' (13) → 'Dango Gleam', 'Polish-it-up gleam' (18) → 'Needs Polish', 'Under-polished gleam' (20) → 'Unpolished', 'Almost-there gleam' (18) → 'Almost There'. Six segments (Modest gleam, Decent gleam, Fair luster, Dingy gleam, Faint gleam, Dull gleam) were within cap and only had capitalization adjusted.
Entry 11 (vibes descriptors, 8 of 12 over cap): 'Mesmerizing vibes' (17) → 'Entrancing', 'Super luxurious' (15) → 'Super Lavish', 'Advanced processing tech' (24) → 'Expert Craft', 'Looks delicious' (15) → 'Looks Tasty', 'Perfect vibes' (13) → 'Perfect Feel', 'Heartthrob vibes' (16) → 'Heartthrob', 'Too amazing' → 'Beyond Great', 'Commanding presence' (19) → 'Dominating', 'Scary to look at' (16) → 'Intimidating'. Three segments (Cool vibes, Classy vibes, Whoa vibes) were within cap.
Entry 12 (vibes descriptors, 10 of 12 over cap): 'Expensive vibes' (15) → 'Pricey Feel', 'Eye-catching vibes' (18) → 'Eye-Catcher', 'Calculated design' (17) → 'Smart Design', 'Drool-worthy vibes' (18) → 'Drool-worthy', 'Fearless vibes' (14) → 'Fearless', 'Competitive vibes' (17) → 'Feisty Feel', 'Can't look away vibes' (21) → 'Mesmerizing', 'Heart-stealing vibes' (20) → 'Captivating', 'Nerve-wracking vibes' (20) → 'Tense Vibes'. Two segments (Good vibes, Whoa vibes) were within cap.
Entry 13 (style descriptors, 7 of 12 over cap): 'Looks a bit pricey' (18) → 'A Bit Pricey', 'Affordable feel' (15) → 'Affordable', 'Pretty luxurious' (16) → 'Fairly Fancy', 'Plain but nice design' (21) → 'Plain & Nice', 'Ordinary feel' (13) → 'Ordinary', 'Put some effort in' (18) → 'Some Effort', 'Brightens up the room' (21) → 'Room Lighter'. Five segments (Normal style, Common style, Typical look, So-so, Typical look) were within cap.
Entry 14 (style descriptors, 7 of 12 over cap): 'Nothing special' (15) → 'Unremarkable', 'Friendly feel' (13) → 'Friendly', 'Lacking something' (17) → 'Bit Lacking', 'Worth a shot' (12) → 'Worth a Shot', 'Apprentice level' (16) → 'Apprentice', 'Blends right in' (15) → 'Blends In', 'Pretty decent' (13) → 'Fair Enough'. Five segments (Bad vibes, Cheap feel, Pretty fancy, Simple feel, No effort) were within cap.
Entry 18 (rhythm descriptors, 10 of 12 over cap): 'Mischievous rhythm' (18) → 'Impish Beat', 'Groovy rhythm' (13) → 'Groovy Beat', 'Sing-along rhythm' (17) → 'Sing-Along', 'Intense rhythm' (14) → 'Sharp Rhythm', 'Belly-drum rhythm' (17) → 'Belly Beat', 'Perfect rhythm' (14) → 'Perfect Beat', 'Competitive rhythm' (18) → 'Feisty Beat', 'Tropical rhythm' (15) → 'Tropic Beat', 'Tummy-rumbling rhythm' (21) → 'Deep Rhythm', 'Body-swaying rhythm' (19) → 'Swaying Beat', 'Sleepy rhythm' (13) → 'Drowsy Beat'. One segment (Cool rhythm) was within cap.
Entries 22–25 (product names used as 12-repeated labels in the quality table): 'Invitation Bouquet' (18) → 'Lure Bouquet' (12), 'Enchanting Aroma' (16) → 'Charm Aroma' (11), 'Tranquili-Tea' (13) → 'Sereni-Tea' (10), 'Stylish Clothes' (15) → 'Chic Clothes' (12).
Item name unification — five crafted items standardized (steps 377, 380, 381)
Five crafted item names had inconsistent English translations scattered across dialog files, classroom lessons, recipe labels, lookup tables, the Part-Time Cat crafting lines, and the ucc_names crafting-product table. Each was unified to one canonical name. Every individual change is listed below.
Prank Quill (JP イタズラはねペン — literal meaning 'Prank Feather Pen'; 'Quill' captures the feather concept). Not present in Game 1. 11 entries updated across 6 files: msg52065 entry 0 'study the [COLOR:4]Prank Pen[COLOR:1]' → 'study the [COLOR:4]Prank Quill[COLOR:1]'; entry 1 'Prank Pen recipe' → 'Prank Quill recipe' (2 occurrences in textblock); entry 2 'pick the Prank Pen recipe' → 'pick the Prank Quill recipe'; entry 11 'draw with a Prank Pen' → 'draw with a Prank Quill'; entry 13 'use the Prank Pen' → 'use the Prank Quill'; entry 17 'Learned how to make a Prank Pen' → 'Learned how to make a Prank Quill'; msg99026 entry 10 'Prank Pen§' → 'Prank Quill§'; msg99037 entry 25 'Prank Pen§' → 'Prank Quill§'; msg32108 entry 49 '[COLOR:4]Prank Feather Pen[COLOR:1]' → '[COLOR:4]Prank Quill[COLOR:1]'; msg32110 entry 80 '[COLOR:4]Prankster Pen[COLOR:1]' → '[COLOR:4]Prank Quill[COLOR:1]'; msg99138 entry 27 'Pranks, pens, and such§' → 'Prank Quill, etc.§'.
Lure Bouquet (JP おさそいブーケ — 'enticement/invitation bouquet'). 12 entries + 1 ucc_names slot updated across 6 files: msg32108 entry 68 '[COLOR:4]Invitation Bouquet[COLOR:1]' → '[COLOR:4]Lure Bouquet[COLOR:1]'; msg52063 entry 20 '[COLOR:4]Invitation Bouquet[COLOR:1]' → '[COLOR:4]Lure Bouquet[COLOR:1]'; entry 21 'from an Invitation Bouquet recipe' → 'from a Lure Bouquet recipe' (grammar corrected); entry 22 'pick the Invitation Bouquet recipe' → 'pick the Lure Bouquet recipe'; entry 31 'the Invitation Bouquet have' → 'the Lure Bouquet have'; entry 37 'Learned how to make an Invitation Bouquet' → 'Learned how to make a Lure Bouquet' (grammar corrected); msg99026 entry 3 'Invitation Bouquet§' → 'Lure Bouquet§'; msg99037 entry 10 'Invitation Bouquet§' → 'Lure Bouquet§'; msg99138 entry 23 'Invitation Bouquet, etc.§' → 'Lure Bouquet, etc.§'; ucc_names slot 50 'Date Bouquet' → 'Lure Bouquet'.
Charm Aroma (JP みわくのかおり — 'charm/enchanting fragrance'). 11 entries updated across 5 files: msg52066 entry 80 '[COLOR:4]Enchanting Aroma[COLOR:1]' → '[COLOR:4]Charm Aroma[COLOR:1]'; entry 81 'Enchanting Aroma recipe' → 'Charm Aroma recipe' (2 occurrences); entry 82 'pick the Enchanting Aroma recipe' → 'pick the Charm Aroma recipe'; entry 91 'does Enchanting Aroma have' → 'does Charm Aroma have'; entry 93 'Enchanting Aroma attracts people' → 'Charm Aroma attracts people'; entry 97 'Learned how to make Enchanting Aroma' → 'Learned how to make Charm Aroma'; msg32108 entry 67 '[COLOR:4]Alluring Scent[COLOR:1]' → '[COLOR:4]Charm Aroma[COLOR:1]'; msg99026 entry 5 'Alluring Scent§' → 'Charm Aroma§'; entry 15 '★Alluring Aroma§' → '★Charm Aroma§'; msg99037 entry 29 'Alluring Scent§' → 'Charm Aroma§'; msg99138 entry 24 'Enchanting Scent, etc.§' → 'Charm Aroma, etc.§'.
Sereni-Tea (JP やすらぎティー — 'peace/serenity tea'; preserves the tea pun). 9 entries + 1 ucc_names slot updated across 5 files: msg52064 entry 80 '[COLOR:4]Tranquility Tea[COLOR:1]' → '[COLOR:4]Sereni-Tea[COLOR:1]'; entry 81 'Tranquility Tea recipe' / 'make Tranquility Tea' → 'Sereni-Tea recipe' / 'make Sereni-Tea'; entry 82 'Tranquility Tea recipe' → 'Sereni-Tea recipe'; entry 97 'Learned how to make Tranquility Tea' → 'Learned how to make Sereni-Tea'; msg32108 entry 66 '[COLOR:4]Relaxation Tea[COLOR:1]' → '[COLOR:4]Sereni-Tea[COLOR:1]'; msg99026 entry 4 'Tranquili-Tea§' → 'Sereni-Tea§'; msg99037 entry 20 'Tranquili-Tea§' → 'Sereni-Tea§'; msg99138 entry 25 'Relaxation Tea, etc.§' → 'Sereni-Tea, etc.§'; ucc_names slot 51 'Calming Tea' → 'Sereni-Tea'.
Chic Clothes (JP イケてるふく — 'cool/stylish clothes'). Product-name occurrences updated; generic dialog uses of 'stylish clothes' or 'cool clothes' left unchanged. 6 entries updated across 4 files: msg33037 entry 52 'Stylish clothes!▼S-T-Y-L-I-S-H!§' → 'Chic Clothes!▼C-H-I-C!§'; msg32108 entry 48 '[COLOR:4]cool clothes[COLOR:1]' → '[COLOR:4]Chic Clothes[COLOR:1]'; msg99026 entry 6 'Stylish clothes§' → 'Chic Clothes§'; msg99037 entry 9 'Cool clothes§' → 'Chic Clothes§'; msg99138 entry 26 'Trendy clothes, etc.§' → 'Chic Clothes, etc.§'.