So here's a thing regarding talkers.
With each talker in their own script, like in most Sierra games (SQ5 Droole and Flo being script 1885 and 1886 respectively), it seems the template game doesn't use them the way one might think:
Script 1001, chelsie.cs
(instance public Chelsie of CDTalker //listed as #1 in the exports table. A CDTalker has back 21, font 4, x 53, y 70.
(properties
view 1001
font 53 //override CDTalker's 4
)
(method (init)
DebugPrint("Chelsie:init()")
(super:init(tBust tEyes tMouth))
)
)
Script #0, main.sc
(instance public Ilira of CDTalker
(properties
view 1002
font 53 //again, override CDTalker's 4
)
(method (init)
DebugPrint("Ilira:init()")
(super:init(tBust tEyes tMouth))
)
)
And then, also in main.sc:
(instance testMessager of Messager
(properties)
(method (findTalker talkerNumber)
(var temp0)
DebugPrint("testMessager:findTalker(%d)" talkerNumber)
= gCurrentTalkerNumber talkerNumber
= temp0
(switch (talkerNumber)
(case NARRATOR
gSQ5Narrator
)
(case CHELSIE
DebugPrint("Chelsie, you're up!")
ScriptID(1001 1)
)
(case ILIRA
DebugPrint("Ilira, express yoself!")
Ilira //mind you, this is in the same script!
)
// Add more cases here for different narrators
// (case 8
//ScriptID(109 7)
//)
)
(if (temp0)
return temp0
)(else
return (super:findTalker(talkerNumber))
)
)
)
I've set up the two "touching yourself" messages accordingly. With tracing DebugPrint calls, this yields the following:
testMessager:findTalker(3)
Ilira, express yoself!
Ilira:init() //<-- this happens.
CDTalker:init()
CDTalker: positions set, calling super:init()...
Talker:init()
testMessager:findTalker(2)
Chelsie, you're up!
//Something is missing here.
Talker:init()Net result: Chelsie's portrait appears in the top-left corner, her dialog is in font 0 (despite having changed Talker's font to 4 in my tests?), on a light gray (7) background. Meanwhile, Ilira has none of these issues, with a nice tan dialog (as CDTalker specifies) and a funky chunky font.
So yeah. What's missing here that causes Chelsie to not init?