Some of Sierra's scripts

Joe Brian, have you had a chance to examine some of a Sierra game's room scripts? I'm trying to figure out why rooms have something like:

Instance: shot
Instance: leftArm
Instance: rightArm
Instance: rm10
Instance: door
Instance: rm10Script
Instance: shooterScript
Instance: boothScript
Instance: sightScript
Instance: attendant

What does Script mean? How do they use it? What does it do? Until I can learn the bytecode, I can't read the scripts. If you know and can help, thanks. If you can't, I'll still be thankful. :)
Brian_Provinciano Sorry, but in order for me to know exactly what those instances do, I would need to reverse engineer the script. Since I don't know what script it is, let alone the game, I can't help you. I also don't have time to do any SCI reverse engineering outside of my VGA template since I must use my time as wisely as possible (I have so much to do). When I'm done the VGA template, I'll be going right into SCI Studio VGA. And, as always, before, during and after all that, I've got to update SCI Studio EGA with new versions.
Joe No problem. :) I just wanted to know if you had ever read through a script like that. I copied that from PQ2, but most other SCI games use things like:

Instance: rm71
Instance: RegionScript
Instance: EyeScript
Instance: EyelidScript
Instance: NoseScript
Instance: MouthScript
Instance: aEyeWest
Instance: aEyeEast
Instance: aEyelidWest
Instance: aEyelidEast
Instance: aNose
Instance: aMouth

which is from LSL3. Sorry if I'm bugging you. I just wanted to know if you had ever seen or knew what the instances that read SomethingScript where for. Good luck on SCI Studio VGA!
Joe Most if not all of the scripts I looked at with those kinds of instances held only the method 'changeState'. This is very intrigueing. Trying to understand bytecode is excrutiatingly difficult. I probably should of tried my hand at assembly first. I'll keep on it and tell you guys what I find out.
Joe Well, with a little experimenting, I was able to use an instance called 'testScript' that looked like:


(instance testScript of Script
(properties)
(method (changeState newState)
= state newState
(switch (state)
(case 0
Print("Does it work?")
PlayerControl()
)
)
)
)


I used :

ProgramControl()
(send gEgo:setMotion(MoveTo (send gEgo:x) (- (send gEgo:y) 10) testScript))

And the ego walked 10 pixels upwards and I saw "Does it work?" displayed in a print Dialog. I tried adding another actor to use the testScript instead and have the Ego use the RoomScript changeState, and it worked. I made the 'testScript's changeState move the character back, then forth, then change the state back to 0 and have the actor walk back and forth continually. It worked. Is this the right way to use these?
Brian_Provinciano Yes. Just like you use the room script's changeState, you can create other instances and use their changeState. It's a nice way of organizing things.
Joe Hm, I didn't know you could do it until now. Thanks.