# $Id: crystal.sac,v 1.6 2006/11/02 00:46:16 mike Exp $
# crystal.sa -- Scott Adams source file for _Crystal of Chaos_
# ----------------------------------------------------------------------------
# Global configuration
%ident 18400
%version 1
%wordlen 3
%maxload 5
%lighttime 100
%start hut
%treasury hut
# Standard synonyms
%valias enter go
%valias go run
%valias walk enter
%valias take get
%valias leave drop
# ----------------------------------------------------------------------------
# Infrastructure actions (I don't think any game would ever omit these)
%action inventory
%result
inventory
%action take inventory
%result
inventory
%action score
%result
score
%action save game
%result
save_game
# The path is dark; nowhere else is
%occur
at path
%result
set_dark
look
%occur
!at path
%result
clear_dark
look
%occur
!flag 1
%result
set_flag 1
msg Welcome to `CRYSTAL OF CHAOS`
msg Written by Mike Taylor, starting Monday 10th April 2001
msg This is a demo for the `sac` adventure system --
msg See http://www.miketaylor.org.uk/tech/advent/sac/
nl
msg Your task is to find the six crown jewels of the kingdom and store
msg them in this hut. They are: a platinum chain, a gold crown, a
msg silver medallion, a bronze sceptre, a zinc goblet and a tin
msg stoat.
# Obviously this message will be different for different games.
# ----------------------------------------------------------------------------
# Use of flags
# flag 1: Set forever once welcome message has been printed.
# flag 2: True immediately after balsa wood is lit.
# flag 3: True immediately after plywood is lit.
# flag 4: True immediately after oak is lit.
# flag 5: True while under water.
# flag 6: Set true forever when first in the treasure clearing.
# flag 7: True if all treasures but the stoat have been stored.
# flag 8: True once the missing stoat message has been printed.
#
# Use of saved locations
# location 1: when in vase, contains room player was in before.
#
# Use of counters:
# counter 1: number of turns remaining to hold breath
# ----------------------------------------------------------------------------
# Preamble actions (must fire after body actions)
%occur
at clearing
!flag 6
%result
set_flag 6
msg Oh, there they are. That wasn't as hard as I expected.
# Check whether we have stored all treasures except the stoat
%occur
at hut
%result
set_flag 7
#msg setting flag 7 (in hut)
%occur
!here chain
%result
clear_flag 7
#msg clearing flag 7 (no chain)
%occur
!here crown
%result
clear_flag 7
#msg clearing flag 7 (no crown)
%occur
!here medallion
%result
clear_flag 7
#msg clearing flag 7 (no medallion)
%occur
!here sceptre
%result
clear_flag 7
#msg clearing flag 7 (no sceptre)
%occur
!here goblet
%result
clear_flag 7
#msg clearing flag 7 (no goblet)
%occur
flag 7
!flag 8
%result
set_flag 8
msg Ah, looks like I'm still missing the stoat.
# Check whether we're under water
%occur
at pool
%result
set_flag 5
%occur
at river1
%result
set_flag 5
%occur
at river2
%result
set_flag 5
%occur
at river3
%result
set_flag 5
%occur
at river4
%result
set_flag 5
%occur
at forest2
%result
clear_flag 5
%occur
at chamber
%result
clear_flag 5
%occur
at vase
%result
clear_flag 5
%occur
at dead
%result
clear_flag 5
%occur
counter_eq 1
%result
msg I have to breathe NOW!
%occur
counter_gt 0
%result
decrease_counter
%occur
counter_gt 0
%result
msg I can only hold my breath for
print_counter
msg more turns.
# Death due to lack of breath
%occur
counter_eq 0
flag 5
%result
msg I can't breathe ...
pause
clear_flag 5
die
# We'd like the next three %occur's to go after the %action for LIGHT
# BALSA below. But that doesn't work, because although any number of
# %occurs may fire on a given turn, action-and-occur processing stops
# immediately after the first successful %action. (I determined this
# by experiment: I couldn't determine the intent of the scottfree
# source to save my life.) Instead, we do these %occur's at the very
# start of the _next_ turn -- which from the player's perspective is
# indistinguishable from the end of the previous one.
%occur
flag 2
here plywood
%result
msg The plywood also catches fire and burns quickly.
destroy plywood
set_flag 3
%occur
flag 3
here oak
%result
msg The oak catches, and becomes a roaring fire.
msg Smoke pours upwards.
destroy oak
drop fire
set_flag 4
%occur
flag 4
at glade
%result
destroy bees
put drowsy_bees beech
%occur
%result
clear_flag 2
clear_flag 3
clear_flag 4
%comment Fire-building must happen all in one go
%action chop
!accessible axe
%result
msg I can't chop anything without an axe.
%action ram
!accessible trunk
%result
msg I don't have a battering ram.
%action light
!accessible match
%result
msg I don't have anything to light it with.
# ----------------------------------------------------------------------------
# Rooms, Items and associated Actions
%room hut
small wooden hut.
%exit e clearing
%item sign
Sign
%action read sign
accessible sign
%result
msg It says - `Leave *TREASURES* here, then say: SCORE`
%item axe
Axe
%getdrop axe
%nalias ax axe
%item match
Single match
%getdrop match
%room clearing
clearing. There's a small hut to the west.
%exit n swamp
%exit e glade
%exit s forest
%exit w hut
%item chain
*Platinum chain*
%getdrop chain
%item crown
*Gold crown*
%getdrop crown
%item medallion
*Silver medallion*
%getdrop medallion
%item sceptre
*Bronze sceptre*
%getdrop sceptre
%item goblet
*Zinc goblet*
%getdrop goblet
%room glade
glade
%exit w clearing
%exit n outcrop
%exit s forest2
%item beech
Beech tree
%action climb tree
here beech
%result
moveto beech
%room beech
the top of a beech tree
%exit d glade
%item nest
Bees' nest
%item honey
Wild honey
%getdrop honey
%action get honey
here bees
%result
msg No! Bees would sting me!
%item bees
Killer bees
%item drowsy_bees
Drowsy bees
%nowhere
%action help
here bees
%result
msg Smoke 'em out!
%room swamp
dismal swamp
%exit e outcrop
%exit s clearing
%item cypress
Cypress tree
%action chop tree
here cypress
%result
msg TIMBER!
destroy cypress
drop trunk
drop stump
%item stump
-SOLID- stump
%nowhere
%action examine stump
here stump
%result
msg There's nothing there all right! Maybe I should forget it?
%item trunk
Trunk of cypress tree
%getdrop trunk
%nowhere
%item mud
Evil smelling mud
%getdrop mud
%item gas
Swamp gas
%item slime
Patches of `OILY` slime
%getdrop oil
%item chiggers
Chiggers
%getdrop chiggers
%room outcrop
rocky area by an outcrop
%exit w swamp
%exit s glade
%item bdoor
Balsa-wood door set into the rock
%item lamp
Old-fashioned brass lamp
%getdrop lamp
%lightsource lamp
%action open door
here bdoor
%result
msg It's locked.
%valias kick smash
%valias kick break
%action kick door
here bdoor
%result
destroy bdoor
drop balsa
drop tunnel
msg It splinters easily.
msg There's a tunnel beyond.
#%valias break kick
#%valias smash kick
%action chop door
here bdoor
%comment no balsa wood
%result
destroy bdoor
drop tunnel
msg CRUNCH! It's smashed to smithereens!
msg There's a tunnel beyond.
%action ram door
here bdoor
%comment no balsa wood
%result
destroy bdoor
drop tunnel
msg DOOSH! It's absolutely annihilated!
msg There's a tunnel beyond.
%item balsa
Balsa wood
%getdrop balsa
%nowhere
%item tunnel
Tunnel disappears into the rock
%nowhere
%action go tunnel
here tunnel
%result
moveto tunnel
%room tunnel
dingy north-south tunnel
%exit s outcrop
%item pdoor
Plywood door blocks the way north
%action open door
here pdoor
%result
msg It's also locked.
%action kick door
here pdoor
%result
msg Ouch!
%action chop door
here pdoor
%result
destroy pdoor
drop plywood
drop passage
msg CRUNCH!
msg There's a passage beyond.
%action ram door
here pdoor
%comment no plywood
%result
destroy pdoor
drop passage
msg DOOSH! It's absolutely annihilated!
msg There's a passage beyond.
%item plywood
Plywood
%getdrop plywood
%nowhere
%item passage
Passage disappears into the rock
%nowhere
%action go passage
here passage
%result
moveto passage
%room passage
gloomy north-south passage
%exit s tunnel
%item odoor
Oak door blocks the way north
%action open door
here odoor
%result
msg OF COURSE it's locked!
%action kick door
here odoor
%result
msg Ouch!
%action chop door
here odoor
%result
msg It's too solid for the axe to make much impression.
%action ram door
here odoor
%result
destroy odoor
drop oak
drop entrance
msg DOOSH!
msg There's an entrance beyond.
%item oak
Oak
%getdrop oak
%nowhere
%item entrance
Entrance to the north
%nowhere
%action go entrance
here entrance
%result
moveto empty
%room empty
empty room
%exit s passage
%item fire
Blazing hot fire
%nowhere
%action light plywood
carried plywood
%result
msg Not while I'm carrying it!
%action light plywood
here plywood
%result
msg I can't get it to catch fire.
msg My match goes out.
destroy match
%action light oak
here oak
%result
msg There's no way it will catch fire.
msg My match goes out.
destroy match
%action light oak
carried oak
%result
msg Not while I'm carrying it!
%action light balsa
carried balsa
%result
msg Not while I'm carrying it!
%action light balsa
here balsa
%result
msg OK. It burns up very quickly.
msg My match goes out.
destroy match
destroy balsa
set_flag 2
%room forest
forest
%exit n clearing
%exit e forest2
%item path
Path leads south into the forest
%action go path
here bear
%result
msg Bear won't let me
%action go path
at forest
%result
moveto path
%item bear
Very thin black bear
%action give honey
here bear
accessible honey
%result
destroy bear
destroy honey
drop sleeping
msg Bear eats the honey and falls asleep.
%item sleeping
Sleeping bear
%nowhere
%room path
overgrown path in a dark forest
%exit n forest
%item vase
Huge vase
%getdrop vase
%action examine vase
%result
msg It's bigger than I am.
%action go vase
here vase
%result
swap_loc 1
moveto vase
%action leave vase
at vase
%result
swap_loc 1
%room vase
*I'm INSIDE a huge vase!
%item key
Iron key
%getdrop key
%room forest2
forest
%exit n glade
%exit w forest
%item pool
Bubbling pool
%action go pool
here pool
%result
moveto pool
%action hold breath
counter_gt 0
%result
msg I'm already holding my breath!
%action hold breath
%result
set_counter 6
msg OK
%room pool
bubbling pool, just below the water level
%exit u forest2
%item inflow
inflow from the south
%action go inflow
here inflow
%result
moveto river1
%room river1
*I'm swimming in an underground river.
Light pours from the north.
%exit n pool
%exit s river2
%room river2
*I'm swimming in an underground river.
There's a faint glimmer of light to the north.
%exit n river1
%exit s river3
%room river3
*I'm swimming in an underground river.
There's a faint glimmer of light to the south.
%exit n river2
%exit s river4
%room river4
*I'm swimming in an underground river.
Light pours from the south.
%exit n river3
%exit s chamber
%room chamber
brightly lit underground chamber.
An underground river disappears into the north wall.
%exit n river4
%exit s central
%item stoat
*Tin stoat*
%getdrop stoat
%room central
central underground chamber. Passages leave in all directions.
%exit n chamber
%exit w prison
%exit e junction
%room prison
prison in an undergound complex. Doors lead to prison cells
%exit e central
%item idoor
Iron door leads south
%item brdoor
Bronze door leads west
%room junction
junction between an east-west passage and one that leads south
%exit w central
%exit e control
%exit s steel
%room control
control room filled with humming, crackling machinery
%exit w junction
%item red
Red button
%item blue
Blue button
%item level
Lever
%room steel
square room with a steel floor
%exit n junction
%exit s chasm
%room chasm
vast hall which is split by a deep chasm running from east to west
%exit n steel
# ----------------------------------------------------------------------------
# Debugging actions (should be removed from distributed game)
%action teleport path
%result
msg >Fzing!<
moveto path
%action teleport chamber
%result
msg >Fzing!<
moveto chamber
%room dead
*I'm dead. Great. Try again.
%exit e hut
# ----------------------------------------------------------------------------
# Postamble actions (must fire after body actions)
%action help
%result
msg You'll have to figure it out for yourself.
%action examine
%result
msg It looks like a pretty average
print_noun_nl