Skip to content

Instantly share code, notes, and snippets.

@Jither
Last active July 2, 2023 11:54
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jither/fa3d05100e4106a125abffb3a6760249 to your computer and use it in GitHub Desktop.
Save Jither/fa3d05100e4106a125abffb3a6760249 to your computer and use it in GitHub Desktop.
CMI Example
room treasure {
script script-2000 {
}
script script-2001 {
actor actor-14 default costume costume-62
actor actor-14 ignore-boxes scale 255 face 180
put-actor actor-14 at 0,0 in-room treasure
start-script bak script-2009
}
script script-2002 {
start-script script-20 1 103 106
start-script script-2011
var-55 = 2010
start-script bak script-2008
var-625 = (var-625 + 1)
if (var-625 > 20) {
print-debug "ERROR! - Too many ambient sounds"
} else {
load-sound sound-1
lock-sound sound-1
var-624[var-625] = 1
start-script bak rec script-112 1 0 0 5
}
var-625 = (var-625 + 1)
if (var-625 > 20) {
print-debug "ERROR! - Too many ambient sounds"
} else {
load-sound sound-21
lock-sound sound-21
var-624[var-625] = 21
start-script bak rec script-112 21 0 0 5
}
var-625 = (var-625 + 1)
if (var-625 > 20) {
print-debug "ERROR! - Too many ambient sounds"
} else {
load-sound sound-52
lock-sound sound-52
var-624[var-625] = 52
start-script bak rec script-112 52 0 0 5
}
var-625 = (var-625 + 1)
if (var-625 > 20) {
print-debug "ERROR! - Too many ambient sounds"
} else {
load-sound sound-53
lock-sound sound-53
var-624[var-625] = 53
start-script bak rec script-112 53 0 0 5
}
var-625 = (var-625 + 1)
if (var-625 > 20) {
print-debug "ERROR! - Too many ambient sounds"
} else {
load-sound sound-54
lock-sound sound-54
var-624[var-625] = 54
start-script bak rec script-112 54 0 0 5
}
var-625 = (var-625 + 1)
if (var-625 > 20) {
print-debug "ERROR! - Too many ambient sounds"
} else {
load-sound sound-60
lock-sound sound-60
var-624[var-625] = 60
start-script bak rec script-112 60 0 0 5
}
}
script script-2003 {
}
script script-2004 {
cut-scene cut-scene-flag-2 {
override label-156
say-line actor-1 "/TRGT006/I can see the ocean floor."
wait-for-message
if (bit-160) {
say-line actor-1 "/TRGT317/And there's a really angry-looking skull floating around out there."
wait-for-message
}
label-156:
if (var-30) {
override off
print-line " "
} else {
override off
}
}
}
script script-2005 {
stop-script script-2008
cut-scene cut-scene-flag-2 {
override label-233
actor actor-1
ignore-boxes
costume costume-61
scale 255
face 180
put-actor actor-1 at 0,-4 in-room var-31
actor actor-1 always-zclip 1
do-animation actor-1 chore-6
break-here 10
start-sound sound-311
break-here 17
start-sound sound-312
break-here 4
state-of treasure-flotation-device is ON
for loc-0 = 255 to 0 -- {
palette intensity loc-0 loc-0 loc-0 in-slot black to color-255
loc-0 = (loc-0 - 17)
break-here
}
break-until (not sound-running sound-312)
label-233:
if (var-30) {
override off
print-line " "
put-actor actor-1 at 320,70 in-room treasure
actor actor-1 face 180
stop-sound sound-311
stop-sound sound-312
} else {
override off
}
}
if (owner-of cursed-ring is actor-1) {
start-object rec cursed-ring verb-91
if (var-266) {
load-object var-266
class-of var-266 is class-160
}
owner-of cursed-ring is nuked
if (var-315 > inventory-size var-126) {
var-315 = 1
}
if (var-290 is-not actor-105) {
var-292 is var-291
cursor system-cursor-icon in-room logo
var-290 is actor-105
var-291 is actor-105
bit-19 = 0
}
bit-20 = 0
}
actor actor-1 follow-boxes
actor actor-1
default
costume costume-2
text-offset 0,-95
step-dist 13,4
talk-color white
text-offset 0,-300
always-zclip -1
if (bit-44) {
actor actor-1 costume costume-192
}
actor actor-1 shadow cyan
actor actor-1 frequency var-611
if (not var-31 in [39 40 41 42 43]) {
kludge 108 6 190 190 190 0 229
kludge 108 7 220 220 220 0 229
}
do-animation actor-1 chore-3
var-643 = 47
palette intensity 255 255 255 in-slot black to color-255
start-script script-141
}
script script-2006 {
cut-scene cut-scene-flag-2 {
override label-1472
case var-530 {
of 0 {
start-script bak rec script-106 20
start-script bak rec script-106 9
say-line actor-1 "/TRGT026/It's the biggest pile of treasure I've ever seen!"
wait-for-message
}
of 1 {
start-script bak rec script-106 24
say-line actor-1 "/TRGT301/I've finally found my treasure!"
wait-for-message
start-script bak rec script-106 11
say-line actor-1 "/TRGT302/I'm a REAL pirate after all!"
wait-for-message
start-script bak rec script-106 13
}
of 2 {
start-script bak rec script-106 24
start-script bak rec script-106 9
say-line actor-1 "/TRGT303/Look at all this!"
wait-for-message
start-script bak rec script-106 20
say-line actor-1 "/TRGT304/And it's mine! All mine!"
wait-for-message
}
of 3 {
start-script bak rec script-106 24
start-script bak rec script-106 34
say-line actor-1 "/TRGT305/Gold!"
wait-for-message
break-until (not script-running script-106)
break-until (not script-running script-107)
break-until (not script-running script-108)
start-script bak rec script-106 35
say-line actor-1 "/TRGT306/And jewels!"
wait-for-message
break-until (not script-running script-106)
break-until (not script-running script-107)
break-until (not script-running script-108)
start-script bak rec script-106 26
start-script bak rec script-106 9
say-line actor-1 "/TRGT307/I'm rich!"
wait-for-message
break-until (not script-running script-106)
break-until (not script-running script-107)
break-until (not script-running script-108)
start-script bak rec script-106 29
say-line actor-1 "/TRGT308/And still..."
wait-for-message
start-script bak rec script-106 18
say-line actor-1 "/TRGT309/I would give it all up for the love of Elaine."
wait-for-message
}
of 4 {
start-script bak rec script-106 29
say-line actor-1 "/TRGT310/I think I'll invest this in grog and tax-sheltered annuities."
wait-for-message
}
of 5 {
start-script bak rec script-106 24
say-line actor-1 "/TRGT311/Gee, it's pretty."
wait-for-message
}
of 6 {
start-script bak rec script-106 18
say-line actor-1 "/TRGT312/The glory and brilliance of this treasure pales when compared to the radiance of Elaine's smile."
wait-for-message
sleep-for 20 jiffies
start-script bak rec script-106 24
say-line actor-1 "/TRGT313/But it's still pretty nice."
wait-for-message
}
default {
say-line actor-1 "/TRGT314/Every pirate needs his treasure."
wait-for-message
start-script bak rec script-106 10
say-line actor-1 "/TRGT315/And this treasure is mine!"
wait-for-message
}
}
label-1472:
if (var-30) {
override off
print-line " "
start-script script-109 3 4
} else {
override off
start-script bak rec script-106 4
}
}
if (var-530 < 7) {
var-530 = (var-530 + 1)
}
}
script script-2007 {
if (class-of treasure-box-o-chocolates is class-22) {
class-of treasure-box-o-chocolates is class-150
cut-scene cut-scene-flag-2 {
say-line actor-1 "/TRGT318/Chocolate-covered barnacles, marshmallow hooks, sea urchins, glass eyes..."
wait-for-message
say-line actor-1 "/TRGT319/Yuck."
wait-for-message
}
} else {
say-line actor-1 "/TRGT320/It's a walk-in box of pirate candy."
}
}
script script-2008 {
do {
loc-0 = 207
loc-1 = 175
loc-2 = 117
if (actor-x actor-1 > 320) {
loc-3 = (actor-x actor-1 - 320)
loc-0 = (loc-0 - loc-3 / 2)
loc-1 = (loc-1 - loc-3 / 2)
loc-2 = (loc-2 - loc-3 / 2)
}
palette intensity loc-0 loc-1 loc-2 in-slot color-230 to color-255
break-here
}
}
script script-2009 {
loc-1 = 0
loc-0 = 0
label-20:
if (loc-0 == loc-1) {
loc-0 = random-between 1 to 7
break-here
jump label-20
}
case loc-0 {
of 1 {
if (state-of nickel-bag is OFF and state-of cursed-ring is OFF) {
do-animation actor-14 chore-6
break-here 9
}
}
of 2 {
do-animation actor-14 chore-7
break-here 22
}
of 3 {
do-animation actor-14 chore-8
break-here 23
}
of 4 {
do-animation actor-14 chore-9
break-here 24
}
of 5 {
do-animation actor-14 chore-10
break-here 37
}
of 6 {
do-animation actor-14 chore-11
break-here 24
}
of 7 {
if (state-of nickel-bag is OFF and state-of cursed-ring is OFF) {
do-animation actor-14 chore-13
} else {
do-animation actor-14 chore-12
}
break-here 40
}
}
loc-1 = loc-0
break-here random-between 10 to 30
jump label-20
}
script script-2010 {
if (loc-1 == var-571[var-570]) {
var-570 = (var-570 + 1)
if (var-570 == 16) {
var-55 = 32
class-of nickel-bag is class-32
}
} else {
var-570 = 0
}
start-script script-32 loc-0 loc-1 loc-2 loc-3
}
script script-2011 {
for loc-0 = 0 to 15 ++ {
case loc-0 {
of 0 {
var-571[loc-0] = 116
}
of 1 {
var-571[loc-0] = 105
}
of 2 {
var-571[loc-0] = 109
}
of 3 {
var-571[loc-0] = 105
}
of 4 {
var-571[loc-0] = 115
}
of 5 {
var-571[loc-0] = 110
}
of 6 {
var-571[loc-0] = 101
}
of 7 {
var-571[loc-0] = 118
}
of 8 {
var-571[loc-0] = 101
}
of 9 {
var-571[loc-0] = 114
}
of 10 {
var-571[loc-0] = 119
}
of 11 {
var-571[loc-0] = 114
}
of 12 {
var-571[loc-0] = 111
}
of 13 {
var-571[loc-0] = 110
}
of 14 {
var-571[loc-0] = 103
}
of 15 {
var-571[loc-0] = 33
}
}
}
}
sounds {
"sfx\sound-311" sound-311
"sfx\sound-312" sound-312
}
costumes {
"costumes\costume-61" costume-61
"costumes\costume-62" costume-62
}
enter {
start-script script-2000
start-script script-2001
start-script script-2002
start-script script-2003
}
exit {
var-55 = 32
var-56 = 40
stop-script script-2009
put-actor actor-14 in-the-void
unlock-sound sound-311
unlock-sound sound-312
}
object treasure-treasure-3 {
name is "/TRNZ365/unsanitary lucre"
verb verb-6 {
start-object pile-o-treasure verb-6
}
verb verb-7 {
start-object treasure-treasure-1 verb-7
}
}
object treasure-treasure-4 {
name is "/TRNZ366/really unclean lucre"
verb verb-6 {
start-object pile-o-treasure verb-6
}
verb verb-7 {
start-object treasure-treasure-1 verb-7
}
}
object pile-o-treasure {
name is "/TRNZ321/lucre"
verb verb-6 {
start-script script-2006
}
verb verb-7 {
if (not bit-337) {
cut-scene cut-scene-flag-2 {
bit-337 = 1
override label-294
start-script bak rec script-106 18
say-line actor-1 "/TRGT027/I wouldn't be able to swim with all that heavy treasure."
wait-for-message
start-script bak rec script-106 24
start-script bak rec script-106 11
say-line actor-1 "/TRGT028/I'll leave it here and come back for it when I have a boat."
wait-for-message
start-script bak rec script-106 4
start-script bak rec script-106 13
label-294:
if (var-30) {
override off
print-line " "
start-script script-109 3 4
} else {
override off
}
}
} else {
say-line actor-1 "/TRGT028/I'll leave it here and come back for it when I have a boat."
}
}
}
object treasure-treasure-1 {
name is "/TRNZ322/filthy lucre"
verb verb-6 {
start-object pile-o-treasure verb-6
}
verb verb-7 {
say-line actor-1 "/TRGT323/It's bad luck to grab booty under a ladder."
}
}
object nickel-bag {
name is "/TRNZ008/bag"
state is ON
verb verb-91 {
var-266 is actor-124
}
verb verb-6 {
if (class-of nickel-bag is class-22) {
class-of nickel-bag is class-150
new-name-of nickel-bag is "/TRNN009/bag of nickels"
cut-scene cut-scene-flag-5 {
say-line actor-1 "/TRGT010/It's a bag of wooden nickels."
wait-for-message
say-line actor-1 "/TRGT011/Some treasure."
}
} else {
say-line actor-1 "/TRGT012/It's a bag of wooden nickels."
}
}
verb verb-7 {
cut-scene cut-scene-flag-2 {
if (class-of nickel-bag is class-22) {
class-of nickel-bag is class-150
new-name-of nickel-bag is "/TRNN009/bag of nickels"
cut-scene cut-scene-flag-5 {
say-line actor-1 "/TRGT010/It's a bag of wooden nickels."
wait-for-message
say-line actor-1 "/TRGT011/Some treasure."
wait-for-message
}
}
do-animation actor-1 chore-6
break-here 5
pick-up-object nickel-bag
class-of nickel-bag is class-160
start-object rec nickel-bag verb-91
if (var-266) {
load-object var-266
}
start-script script-67
state-of nickel-bag is OFF
class-of cursed-ring is class-32
break-here 7
do-animation actor-1 chore-3
}
say-line actor-1 "/TRGT013/Hey! There's a big diamond ring behind this bag!"
}
verb verb-5 {
if (var-201) {
if (valid-verb var-201 verb-50) {
do-sentence verb-50 var-201 var-200
} else {
if (class-of var-201 is class-151 or class-of var-201 is class-157) {
chain-script script-52 5 var-201
} else {
say-line actor-1 "/TRGT014/That doesn't take wooden nickels."
}
}
} else {
say-line actor-1 "/TRGT015/This bag of nickels feels light."
}
}
}
object cursed-ring {
name is "/TRNZ016/ring"
class is class-160
verb verb-91 {
var-266 is actor-125
}
verb verb-6 {
say-line actor-1 "/TRGT017/It's a diamond ring!"
}
verb verb-7 {
cut-scene cut-scene-flag-2 {
do-animation actor-1 chore-6
break-here 5
pick-up-object cursed-ring
class-of cursed-ring is class-160
start-object rec cursed-ring verb-91
if (var-266) {
load-object var-266
}
start-script script-67
state-of cursed-ring is ON
break-here 7
do-animation actor-1 chore-3
load-sound sound-311
lock-sound sound-311
load-sound sound-312
lock-sound sound-312
}
}
verb verb-5 {
if (var-201) {
if (valid-verb var-201 verb-25) {
do-sentence verb-25 var-201 var-200
} else {
if (class-of var-201 is class-151 or class-of var-201 is class-157) {
chain-script script-52 5 var-201
} else {
say-line actor-1 "/TRGT018/That doesn't need any jewelry."
}
}
} else {
cut-scene cut-scene-flag-5 {
say-line actor-1 "/TRGT019/I can't wear that."
wait-for-message
say-line actor-1 "/TRGT020/It's a ladies ring."
}
}
}
verb verb-49 {
start-object string-balloon-object verb-25
}
}
object treasure-flotation-device {
name is "/TRNZ347/flotation device"
verb verb-6 {
say-line actor-1 "/TRGT348/I don't even want to know what LeChuck's plans were for that."
}
verb verb-7 {
say-line actor-1 "/TRGT349/No self-respecting pirate would be seen wearing that."
}
verb verb-25 {
say-line actor-1 "/TRGT350/If I scrape the ring on that it'll pop it."
}
}
object treasure-music-box {
name is "/TRNZ344/music box"
verb verb-6 {
say-line actor-1 "/TRGT345/It's got a zombie ballerina."
}
verb verb-7 {
say-line actor-1 "/TRGT346/It got broken when the ship capsized."
}
}
object treasure-lechuck-portrait {
name is "/TRNZ324/portrait"
verb verb-6 {
say-line actor-1 "/TRGT325/It's LeChuck in all his gory. Err, glory."
}
verb verb-7 {
say-line actor-1 "/TRGT326/I see more than enough of him already."
}
}
object treasure-lechuck-portrait-2 {
name is "/TRNZ327/portrait"
verb verb-6 {
start-object treasure-lechuck-portrait verb-6
}
verb verb-7 {
start-object treasure-lechuck-portrait verb-7
}
}
object treasure-wreath {
name is "/TRNZ328/wreath"
verb verb-6 {
say-line actor-1 "/TRGT329/`Marry Me... or Die!` Touching."
}
verb verb-7 {
say-line actor-1 "/TRGT330/I don't know, that seems kind of creepy."
}
}
object treasure-record-collection {
name is "/TRNZ337/record collection"
verb verb-6 {
say-line actor-1 "/TRGT338/It's the 'Song's for Undead Lovers' collection."
}
verb verb-7 {
say-line actor-1 "/TRGT339/My hi-fi is broken and it's impossible to find a quadrophonic needle anywhere in the Caribbean."
}
verb verb-25 {
say-line actor-1 "/TRGT340/There's no way I'm going to scratch up classic dance favorites like these!"
}
}
object treasure-washer-dryer {
name is "/TRNZ333/home appliances"
verb verb-6 {
say-line actor-1 "/TRGT334/A beautiful high-capacity washer and dryer combination."
}
verb verb-7 {
say-line actor-1 "/TRGT335/I'd have no place to plug them in."
}
verb verb-25 {
say-line actor-1 "/TRGT336/I'd hate to scratch up their pristine white finish."
}
}
object treasure-teddy-bear {
name is "/TRNZ341/teddy bear"
verb verb-6 {
say-line actor-1 "/TRGT342/It's stabbed through the heart. Cute and yet sinister."
}
verb verb-7 {
say-line actor-1 "/TRGT343/The bear's too big to carry around, and the sword's a fake plastic one."
}
}
object treasure-box-o-chocolates {
name is "/TRNZ331/box o' chocolates"
verb verb-218 {
var-630[0] = "/PU_M005/eat"
}
verb verb-6 {
start-script script-2007
}
verb verb-7 {
say-line actor-1 "/TRGT332/That stuff is disgusting, even for a pirate."
}
}
object treasure-bottle-o-wine {
name is "/TRNZ351/champagne bottle"
verb verb-218 {
var-630[0] = "/PU_M006/drink"
}
verb verb-6 {
new-name-of treasure-bottle-o-wine is "/TRNN352/Chateau Embalm"
class-of treasure-bottle-o-wine is class-150
say-line actor-1 "/TRGT353/It's a bottle of sparkling formaldehyde. Good year, too."
}
verb verb-7 verb-8 {
if (class-of treasure-bottle-o-wine is class-22) {
say-line actor-1 "/TRGT354/No. Champagne makes me all giggly."
} else {
start-script script-52 7
}
}
verb verb-25 {
say-line actor-1 "/TRGT355/I don't want to cut the wine bottle open with this ring."
}
}
object treasure-ladder-1 {
name is "/TRNZ356/ladder"
verb verb-216 {
var-630[0] = "/PU_M004/use"
}
verb verb-6 verb-7 {
say-line actor-1 "/TRGT357/Because the ship has capsized, this ladder goes to nowhere."
}
}
object treasure-ladder-2 {
name is "/TRNZ358/ladder"
verb verb-216 {
var-630[0] = "/PU_M004/use"
}
verb verb-6 verb-7 {
start-object treasure-ladder-1 verb-6
}
}
object treasure-ladder-3 {
name is "/TRNZ359/ladder"
verb verb-216 {
var-630[0] = "/PU_M004/use"
}
verb verb-6 verb-7 {
start-object treasure-ladder-1 verb-6
}
}
object treasure-ladder-4 {
name is "/TRNZ360/ladder"
verb verb-216 {
var-630[0] = "/PU_M004/use"
}
verb verb-6 verb-7 {
start-object treasure-ladder-1 verb-6
}
}
object treasure-ladder-5 {
name is "/TRNZ361/ladder"
verb verb-216 {
var-630[0] = "/PU_M004/use"
}
verb verb-6 verb-7 {
start-object treasure-ladder-1 verb-6
}
}
object treasure-comb-object {
name is "/TRNZ362/LeChuck's unused comb"
verb verb-6 {
say-line actor-1 "/TRGT363/I hate to think what that comb's been through."
}
verb verb-7 {
say-line actor-1 "/TRGT364/I think LeChuck needs it more than I do."
}
}
object treasure-porthole {
name is "/TRNZ005/porthole"
verb verb-216 {
var-630[0] = "/PU_M011/open"
}
verb verb-6 {
if (class-of treasure-porthole is class-22) {
class-of treasure-porthole is class-150
start-script script-2004
} else {
say-line actor-1 "/TRGT006/I can see the ocean floor."
}
}
verb verb-7 {
say-line actor-1 "/TRGT007/It's not the kind that opens."
}
verb verb-25 {
start-script script-2005
}
}
object treasure-ceiling-object {
name is "/PU_M065/gaping hole to surface"
verb verb-216 {
var-630[0] = "/PU_M048/climb through"
}
verb verb-6 {
say-line actor-1 "/TRGT022/If only I could find a way to get up there and get out!"
}
verb verb-7 {
say-line actor-1 "/TRGT023/I can't climb my way up there."
}
verb verb-8 {
say-line actor-1 "/TRGT024/Hey! Can anybody lower a rope?"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment