COMMENT
{
    This defines our data structures in a more maintainable and
    readable manner than raw .cpp files.
}

DEFINE ROOMTYPE
{
    CST		prefix		""
    bool	randomorient	true
}

ROOMTYPE NONE
{
    prefix	"x"
}

ROOMTYPE KITCHEN
{
    prefix	"kitchen"
}

ROOMTYPE BARRACK
{
    prefix	"barrack"
}

ROOMTYPE AMBUSH
{
    prefix	"ambush"
}

ROOMTYPE STORAGE
{
    prefix	"storage"
    randomorient	false
}

ROOMTYPE TRAP
{
    prefix	"trap"
    randomorient	false
}

ROOMTYPE FOYER
{
    prefix	"foyer"
    randomorient	false
}

ROOMTYPE TEMPLE
{
    prefix	"temple"
    randomorient	false
}

ROOMTYPE NURSERY
{
    prefix	"nursery"
}

DEFINE YELL
{
}

YELL KEEPOUT
YELL MURDERER
YELL INVADER
YELL KILL
YELL KILLCHASE
YELL LOCATION
YELL HEARDLOCATION
YELL TAUNT
YELL VICTORY
YELL RANGED


DEFINE OPTION
{
    CST		name	"None"
}

OPTION INSTRUCTIONS
{
    name	"Instructions"
}

OPTION PLAY
{
    name	"Play"
}

OPTION VOLUME
{
    name	"Volume"
}

OPTION SPARKCOUNT
{
    name	"Spark Count"
}

OPTION FULLSCREEN
{
    name	"Toggle Full Screen"
}

OPTION QUIT
{
    name	"Quit"
}

DEFINE ACTION
{
}

ACTION NONE
ACTION RESTART
ACTION BUMP
ACTION FIRE
ACTION ROTATE
ACTION REBOOTAVATAR
ACTION DROP
ACTION BREAK
ACTION INSPECT
ACTION QUAFF
ACTION EAT
ACTION SUICIDE
ACTION MEDITATE
ACTION SEARCH
ACTION WAIT
ACTION EXAMINE
ACTION SAVE
ACTION CREATEITEM

DEFINE ATTR
{
    U8		bg_r		0
    U8		bg_g		0
    U8		bg_b		0
    U8		fg_r		255
    U8		fg_g		255
    U8		fg_b		255
    bool	pulse		false
}

ATTR NONE
{
}

ATTR HEALTH
{
    bg_r		255
    bg_g		0
    bg_b		0
    fg_r		0
    fg_g		0
    fg_b		0
}

ATTR MANA
{
    bg_r		0
    bg_g		128
    bg_b		0
    fg_r		255
    fg_g		255
    fg_b		255
}

ATTR POWERBAR
{
    bg_r		16
    bg_g		96
    bg_b		16
    fg_r		192
    fg_g		192
    fg_b		192
}

ATTR BORDER
{
    bg_r		128
    bg_g		0
    bg_b		128
    fg_r		255
    fg_g		255
    fg_b		255
}

ATTR VICTORYBORDER
{
    bg_r		128
    bg_g		128
    bg_b		0
    fg_r		255
    fg_g		255
    fg_b		255
}

ATTR DEATHBORDER
{
    bg_r		64
    bg_g		64
    bg_b		64
    fg_r		255
    fg_g		255
    fg_b		255
}

ATTR DEATHBAR
{
    bg_r		96
    bg_g		32
    bg_b		32
    fg_r		192
    fg_g		192
    fg_b		192
}

ATTR INVULNERABLE
{
    bg_r		196
    bg_g		196
    bg_b		196
    fg_r		0
    fg_g		0
    fg_b		0

}

ATTR HILITE
{
    bg_r		255
    bg_g		255
    bg_b		255
    fg_r		0
    fg_g		0
    fg_b		0

}

ATTR AVATARMEDITATE
{
    bg_r		64
    bg_g		196
    bg_b		255
    fg_r		0
    fg_g		0
    fg_b		0

}

ATTR ELECTRICBLUE
{
    bg_r		0
    bg_g		16
    bg_b		32
    fg_r		32
    fg_g		128
    fg_b		255

}

ATTR METAL
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		32
    fg_g		128
    fg_b		196

}

ATTR BLUEPORTAL
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		20
    fg_g		30
    fg_b		128

    pulse		true
}

ATTR ORANGEPORTAL
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		128
    fg_g		96
    fg_b		32

    pulse		true
}

ATTR SEARCH
{
    bg_r		196
    bg_g		196
    bg_b		0
    fg_r		0
    fg_g		0
    fg_b		0
}

ATTR GOLD
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		255
    fg_b		0

}

ATTR YELLOW
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		255
    fg_b		0

}

ATTR SHOUT
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		128
    fg_g		255
    fg_b		128
}

ATTR EMOTE
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		196
    fg_b		128

}

ATTR PINK
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		128
    fg_b		128
}

ATTR PURPLE
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		128
    fg_b		255
}

ATTR KOBOLD_ARCHER
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		153
    fg_g		51
    fg_b		0
}

ATTR KOBOLD_MAGE
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		102
    fg_g		0
    fg_b		255
}

ATTR KOBOLD_GUARD
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		220
    fg_g		196
    fg_b		255
}

ATTR KOBOLD_BAKER
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		204
    fg_g		153
    fg_b		0
}

ATTR NORMAL
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		192
    fg_g		192
    fg_b		192

}

ATTR LIGHTBLACK
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		96
    fg_g		96
    fg_b		96

}

ATTR OUTOFFOV
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		96
    fg_g		96
    fg_b		96

}

ATTR WHITE
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		255
    fg_b		255

}

ATTR ORANGE
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		192
    fg_b		64

}

ATTR LIGHTBROWN
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		192
    fg_b		128

}

ATTR BROWN
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		192
    fg_g		128
    fg_b		64

}

ATTR RED
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		255
    fg_g		32
    fg_b		32

}

ATTR DKRED
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		196
    fg_g		32
    fg_b		32

}

ATTR GREEN
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		0
    fg_g		255
    fg_b		0

}

ATTR DKGREEN
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		0
    fg_g		196
    fg_b		0

}

ATTR BLUE
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		64
    fg_g		64
    fg_b		255

}

ATTR CYAN
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		64
    fg_g		255
    fg_b		255

}

ATTR GREY
{
    bg_r		0
    bg_g		0
    bg_b		0
    fg_r		196
    fg_g		196
    fg_b		196

}

DEFINE MAPFLAG
{
}

DEFINE TRAP
{
    U8		sym 	'^'
    ENM		attr	ATTR		NORMAL

    DICE	damage	1

    CST		name	"no-trap"
}

TRAP ARROW
{
    sym		'/'
    attr	BROWN

    damage	1d3

    name	"arrow trap"
}

TRAP PIT
{
    sym		'^'
    attr	NORMAL

    damage	1d4

    name	"pit trap"
}

TRAP FIRE
{
    sym		'&'
    attr	ORANGEPORTAL

    damage	2d3

    name	"fire trap"
}

TRAP ROCK
{
    sym		'*'
    attr	NORMAL

    damage	1d2

    name	"falling rock trap"
}

TRAP BOULDER
{
    sym		'0'
    attr	NORMAL
    
    damage	3d2

    name	"falling boulder trap"
}

TRAP SPIKEPIT
{
    sym		'^'
    attr	CYAN

    damage	1d6

    name	"spiked pit trap"
}


MAPFLAG NONE 0
MAPFLAG FOV 1
MAPFLAG FOVCACHE 2
MAPFLAG PORTAL 4
MAPFLAG TRAP 8

DEFINE EVENTTYPE
{
}

EVENTTYPE NONE 0
EVENTTYPE FORE 1
EVENTTYPE BACK 2
EVENTTYPE SYM 4
EVENTTYPE FORESYM 5
EVENTTYPE FOREBACK 3
EVENTTYPE ALL 7
EVENTTYPE SHOUT 8

EVENTTYPE LONG 128

DEFINE TILE
{
    U8		symbol		'&'
    ENM		attr		ATTR		NORMAL
    CST		legend		"none"

    bool	ispassable	true
    bool	istransparent	true
    bool	isphaseable	true
    bool	isdiggable	false
    bool	roomcolor	false
    bool	describe	false
}

TILE INVALID
{
    symbol	'#'
    attr	BROWN
    legend	"wall"
    ispassable		false
    istransparent	false
    isphaseable		false
}

TILE STATUE
{
    symbol	'K'
    attr	RED
    legend	"large kobold statue"
    ispassable	true
    istransparent	true
    describe	true
}

TILE ALTAR
{
    symbol	'_'
    attr	PURPLE
    legend	"blood-stained stone altar"
    ispassable	true
    istransparent	true
    describe	true
}

TILE FLOOR
{
    symbol	'.'
    attr	NORMAL
    legend	"floor"
    ispassable		true
    istransparent	true
}

TILE CHAIR
{
    symbol	'h'
    attr	BROWN
    legend	"wooden chair"
    ispassable		true
    istransparent	true
    describe	true
}

TILE TABLE
{
    symbol	'O'
    attr	LIGHTBROWN
    legend	"wooden table"
    ispassable		false
    istransparent	true
    describe	true
}

TILE DOWNSTAIRS
{
    symbol	'>'
    attr	WHITE
    legend	"downstairs"
    ispassable		true
    istransparent 	true
    describe	true
}

TILE UPSTAIRS
{
    symbol	'<'
    attr	WHITE
    legend	"upstairs"
    ispassable		true
    istransparent 	true
    describe	true
}

TILE SNOWYPATH
{
    symbol	'.'
    attr	WHITE
    legend	"snow covered ground"
    ispassable	true
    istransparent true
}

TILE PATH
{
    symbol	'.'
    attr	BROWN
    legend	"path"
    ispassable		true
    istransparent	true
}

TILE GRASS
{
    symbol	'.'
    attr	GREEN
    legend	"grass"
    ispassable		true
    istransparent	true
}

TILE FIELD
{
    symbol	'"'
    attr	BROWN
    legend	"field"
    ispassable		true
    istransparent	true
}

TILE FIRE
{
    symbol	'&'
    attr	ORANGEPORTAL
    legend	"cooking fire"
    ispassable	false
    istransparent true
    describe	true
}

TILE WALL
{
    symbol	'#'
    attr	NORMAL
    legend	"wall"

    ispassable		false
    istransparent	false
    isdiggable		true
    roomcolor		true
}

TILE SOLIDWALL
{
    symbol	'#'
    attr	BROWN
    legend	"wall"

    ispassable		false
    istransparent	false
    isdiggable		false
}

TILE PORTAL
{
    symbol	'*'
    attr	PURPLE
    legend	"portal"

    ispassable		true
    istransparent	true
    isdiggable		false
}

TILE ORANGEPORTAL
{
    symbol	'*'
    attr	ORANGEPORTAL
    legend	"orange portal"

    ispassable		true
    istransparent	true
    isdiggable		false
}

TILE BLUEPORTAL
{
    symbol	'*'
    attr	BLUEPORTAL
    legend	"blue portal"

    ispassable		true
    istransparent	true
    isdiggable		false
}

TILE PROTOPORTAL
{
    symbol	'#'
    attr	NORMAL
    legend	"wall"

    ispassable		false
    istransparent	false
    isdiggable		false
    roomcolor		true
}

TILE BROKENWALL
{
    symbol	'%'
    attr	NORMAL
    legend	"broken wall"

    ispassable		false
    istransparent	false
    isdiggable		true
    roomcolor		true
}

TILE DOOR
{
    symbol	'+'
    attr	BROWN
    legend	"door"

    ispassable		true
    istransparent	false
    describe	true
}

TILE MOUNTAIN
{
    symbol	'^'
    attr	NORMAL
    legend	"mountain"
    ispassable		false
    istransparent	false
}

TILE ICEMOUNTAIN
{
    symbol	'^'
    attr	WHITE
    legend	"icy mountain"
    ispassable		false
    istransparent	false
}

TILE SNOWYPASS
{
    symbol	'W'
    attr	WHITE
    legend	"snowy pass"
    ispassable		false
    istransparent	false
}

TILE BRIDGE
{
    symbol	'='
    attr	BROWN
    legend	"bridge"

    ispassable		true
    istransparent	true
    describe	true
}

TILE WATER
{
    symbol	'~'
    attr	BLUE
    legend	"water"
    ispassable		false
    istransparent	true
}

TILE FOREST
{
    symbol	'&'
    attr	DKGREEN
    legend	"forest"

    ispassable		true
    istransparent	false
}

DEFINE AI
{
}

AI NONE
{
}

AI STAYHOME
{
}

AI HOME
{
}

AI CHARGE
{
}

AI STRAIGHTLINE
{
}

AI PATHTO
{
}

AI ORTHO
{
}

AI FLANK
{
}

AI RANGECOWARD
{
}

AI COWARD
{
}

AI MOUSE
{
}

AI SMARTKOBOLD
{
}


DEFINE MOB
{
    U8		symbol		'@'
    ENM		attr		ATTR		NORMAL

    CST		name		"generic mob"
    BOOL	isfriendly	false

    CST		melee_name	"claw"
    CST		melee_verb	"thwack"
    DICE	melee_damage	1
    U8		melee_chance	50
    ENM		melee_item	ITEM	NONE

    CST		range_name	"none"
    CST		range_verb	"pierce"
    BOOL	range_valid	false
    DICE	range_damage	0
    U8		range_range	0
    U8		range_symbol	'*'
    ENM		range_attr	ATTR	NORMAL

    U8		max_hp		1
    U8		max_mp		0

    U8		depth		0
    U8		rarity		100

    ENM		ai		AI		NONE

    BOOL	isslow		false
    BOOL	isfast		false
    BOOL	isvampire	false
    BOOL	hidefromlos	false
    BOOL	isregenerate	false
    BOOL	passwall	false
    BOOL	candig		false
    BOOL	swallows	false
    BOOL	breeder		false
    BOOL	isthief		false
    BOOL	canleap		false
    U8		sightrange	100
}

MOB NONE
{
    symbol	'!'
    attr	WHITE
    name	"program error"

    rarity	0
}

MOB AVATAR
{
    symbol	'@'
    attr	WHITE
    isfriendly	true

    ai		NONE

    melee_name	"bare hands"
    melee_verb	"punch"
    melee_damage 1

    range_name	"none"
    range_verb	"hit"
    range_valid	false
    range_damage 0
    range_range	 0
    
    max_hp	65
    max_mp	15

    name	"You"
}


MOB KOBOLD
{
    symbol	'k'
    attr	PURPLE

    ai		SMARTKOBOLD

    melee_verb	"punch"
    melee_name	"fists"
    melee_damage	1
    melee_chance	100

    max_hp	2
    depth	1

    name 	"kobold"
}

MOB KOBOLDBABY
{
    symbol	'k'
    attr	PINK

    ai		SMARTKOBOLD

    melee_verb	"punch"
    melee_name	"fists"
    melee_damage	1
    melee_chance	0

    max_hp	1
    depth	1

    isfast	true

    name 	"baby kobold"
}

DEFINE ITEM
{
    CST		name		"Si"
    S16		timer		-1
    S16		rarity		100

    BOOL	isflag		false

    U8		symbol		'&'
    ENM		attr	ATTR	CYAN
    
    BOOL	exclusive	false

    BOOL	isfood		false
    BOOL	ispotion	false

    CST		gaintxt		0
    CST		losetxt		0
    BOOL	needtarget	false
    BOOL	unstackable	false    

    U8		melee_power	0
    U8		melee_consistency	0
    U8		melee_accuracy	0
    CST		melee_verb	"hit"

    U8		range_range	0
    U8		range_power	0
    U8		range_consistency	0
    U8		range_area	1
    CST		range_verb	"shoot"
    U8		range_symbol	'*'
    ENM		range_attr	ATTR	NORMAL
}

ITEM NONE
{
    name	"Programming Error"
    symbol	'!'
    attr	WHITE
    rarity	0
}

ITEM CORPSE
{
    name	"kobold corpse"
    symbol	'%'
    attr	PURPLE
    rarity	0
}

ITEM GOLD
{
    symbol	'$'
    attr	GOLD
    rarity	0
    name	"gold coin"
}

ITEM SPEEDBOOTS
{
    symbol	'['
    attr	CYAN

    name	"speed boots"
    timer	400
    rarity	2
    gaintxt	"%S <wear> the %o."
    losetxt	"Your %o runs out of mana."
}

ITEM QUICKBOOST
{
    symbol	'!'
    attr	GREEN

    ispotion	true

    name	"quick boost potion"
    timer	50
    rarity	1
}

ITEM BLIND
{
    name	"Blinded"
    timer	5
    rarity	0
    isflag	true
    exclusive	true
    gaintxt	"%S <be> blinded!"
    losetxt	"%S can see!"
}

ITEM SLOW
{
    name	"Slow"
    timer	5
    rarity	0
    isflag	true
    exclusive	true
    gaintxt	"%r muscles slow."
    losetxt	"%S <regain> normal movement."
}

ITEM SAUSAGES
{
    symbol	'%'
    attr	RED

    name	"sausages"
    isfood	true
}

ITEM BREAD
{
    symbol	'%'
    attr	BROWN

    name	"bread"
    isfood	true
}

ITEM PACIFIER
{
    symbol	';'
    attr	WHITE

    name	"pacifier"
}

ITEM DOLL
{
    symbol	';'
    attr	PURPLE

    name	"kobold doll"
}

ITEM TEDDY
{
    symbol	';'
    attr	RED

    name	"stuffed toy dragon"
}

ITEM RAG
{
    symbol	';'
    attr	GREY

    name	"threadbare rag"
}

ITEM MUSHROOMS
{
    symbol	'%'
    attr	GREY

    name	"mushrooms"
    isfood	true
}

ITEM APPLE
{
    symbol	'%'
    attr	RED

    name	"apple"
    isfood	true
}

ITEM PICKLE
{
    symbol	'%'
    attr	DKGREEN

    name	"pickle"
    isfood	true
}

ITEM AMULETTRUESIGHT
{
    symbol	'"'
    attr	ORANGE

    name	"amulet of true sight"
    rarity	0
    gaintxt	"%S <put> on the amulet."
}

ITEM SEARCHRING
{
    symbol	'='
    attr	GOLD

    name	"ring of searching"
    rarity	0
    gaintxt	"%S <put> on the ring of searching."
}

ITEM REGENRING
{
    symbol	'='
    attr	ORANGE

    name	"ring of regeneration"
    timer	35
    rarity	2
    gaintxt	"%S <wear> the ring."
    losetxt	"%r %o runs out of mana."
}

ITEM INVULNERABLE
{
    symbol	'['
    attr	WHITE

    name	"cloak of invulnerability"
    timer	50
    rarity	1
    gaintxt	"%S <wear> the cloak."
    losetxt	"%r %o runs out of mana."
}

ITEM HEALPOTION
{
    symbol	'!'
    attr	YELLOW
    ispotion	true

    name	"healing potion"
    rarity	30
}

ITEM BIGSWORD
{
    symbol	'('
    attr	WHITE

    name	"crystal broadsword of force"
    rarity	0

    melee_power		10
    melee_accuracy	100
    melee_consistency	10

    unstackable	true
}

ITEM KOBOLDDAGGER
{
    symbol	'('
    attr	GREY

    name	"crude stone dagger"

    melee_power		0
    melee_accuracy	100
    melee_consistency	2

    rarity	100
}

ITEM BOW
{
    symbol	'('
    attr	BROWN

    name	"crude bow"

    rarity	100

    range_range	5
    range_power	0
    range_consistency	1
    range_verb	"shoot"
    range_symbol	'/'
    range_attr	BROWN
}

ITEM FIREWAND
{
    symbol	'/'
    attr	ORANGEPORTAL

    name	"fire wand"

    rarity	1

    range_range	7
    range_power	3
    range_consistency	0
    range_verb	"burn"
    range_symbol	'/'
    range_attr	ORANGEPORTAL
}

ITEM ICEWAND
{
    symbol	'/'
    attr	BLUEPORTAL

    name	"ice wand"

    rarity	1

    range_range	7
    range_power	0
    range_consistency	2
    range_verb	"burn"
    range_symbol	'/'
    range_attr	BLUEPORTAL
}
