; KeeperFX Creature Configuration file version 1.0.

[common]
; Creatures used - note that the order is important.
Creatures = WIZARD BARBARIAN ARCHER MONK DWARFA KNIGHT AVATAR TUNNELLER WITCH GIANT FAIRY THIEF SAMURAI HORNY SKELETON TROLL DRAGON DEMONSPAWN FLY DARK_MISTRESS SORCEROR BILE_DEMON IMP BUG VAMPIRE SPIDER HELL_HOUND GHOST TENTACLE ORC FLOATING_SPIRIT TIME_MAGE DRUID BIRD MAIDEN SPIDERLING
JobsCount = 24
AngerJobsCount = 10
AttackPreferencesCount = 3
SpriteSize = 300

[experience]
; Percentage of creature size increase for every experience level.
SizeIncreaseOnExp = 5
; Percentage of creature pay increase for every experience level.
PayIncreaseOnExp = 35
; Percentage of creature damage increase for every experience level.
SpellDamageIncreaseOnExp = 8
; Percentage of spell range/area of effect increase for every experience level.
RangeIncreaseOnExp = 6
; Percentage of creature job value increase for every experience level.
JobValueIncreaseOnExp = 35
; Percentage of creature health increase for every experience level.
HealthIncreaseOnExp = 35
; Percentage of creature strength increase for every experience level.
StrengthIncreaseOnExp = 35
; Percentage of creature dexterity increase for every experience level.
DexterityIncreaseOnExp = 4
; Percentage of creature defense increase for every experience level.
DefenseIncreaseOnExp = 5
; Percentage of creature loyalty increase for every experience level.
LoyaltyIncreaseOnExp = 35
; Percentage ExperienceForHitting increase for every experience level.
ExpForHittingIncreaseOnExp = 12
; Percentage of creature training cost increase for every experience level. Set to 0 by default.
TrainingCostIncreaseOnExp = 0
; Percentage of creature scavenging cost increase for every experience level. Set to 0 by default.
ScavengingCostIncreaseOnExp = 0

[instance0]
Name = NULL
; Game turns duration (lifespan) of an instance, determines the length of shooting animation.
Time = 0
; Point at which action function is executed within the instance lifespan, it needs to be lower or equal to 'Time'.
ActionTime = 0
; Amount of game turns before the spell can be re-used after an instance finishes.
ResetTime = 0
; Different times may be set for possession (First Person) mode.
FPTime = 0
FPActionTime = 0
FPResetTime = 0
; Instance is activated as soon as it's selected.
FPInstantCast = 0
; How many game turns after using the instance creature can be spotted even if invisible.
ForceVisibility = 0
; Tooltip string ID, explaining what the instance does.
TooltipTextID = 201
; Sprite IDs of graphics symbols representing the instance; only one, small symbol is supported.
SymbolSprites = 0
; Graphics animation used for display during the instance. Only one animation can be set per instance.
; It refers to the animation ID set in the creature configuration file. Available animations:
; STAND AMBULATE DRAG ATTACK DIG SMOKE RELAX PRETTYDANCE GOTHIT POWERGRAB GOTSLAPPED CELEBRATE SLEEP EATCHICKEN TORTURE SCREAM DROPDEAD DEADSPLAT ROAR PISS CASTSPELL RANGEDATTACK CUSTOM
Graphics = STAND
; Graphics animations loop so they end with the starting frame again. Set this to 1 to disable this.
NoAnimationLoop = 0
; Minimum distance the target can be to cast the spell.
RangeMin = 0
; Maximal distance the target can be to cast the spell.
RangeMax = 0
; Type of thing the aim assist will target first. Full meaning unknown, range 1~8.
; 8 targets anything, creatures targetted by all.
; 1,3,5,7 will also accept dungeon hearts.
; 3,4 will only target other players, 5,6 only own player.
; 7 will target traps.
PrimaryTarget = 0
; Instance used when the creature is 'going postal' in a room. It will use the instance with the highest priority.
; If multiple have the same priority, one is chosen randomly. 0 disables the instance.
PostalPriority = 0
; Instance properties flags:
; REPEAT_TRIGGER allows player to hold down the mouse button to cast.
; DISPLAY_SWIPE shows the swipe in possession loaded from the creatures 'PossessSwipeIndex'.
; DANGEROUS will be avoided when attacking Doors and Hearts, for attacks.
; DESTRUCTIVE is required when attacking Doors and Hearts, for attacks.
; MELEE_ATTACK will be used by creatures at close combat.
; RANGED_ATTACK will be used by creatures at distance combat.
; RANGED_DEBUFF will be used on enemy creatures, but doesn't count as an attack.
; SELF_BUFF can be applied to caster.
; RANGED_BUFF can be applied to another friendly creature.
; NEEDS_TARGET Cannot be used in possession without a target to cast it on.
; DISARMING allows the instance to be used against traps.
Properties =
; Function used as the instance action, and its parameters.
Function = none 0 0
; Function to validate the source of the spell. Could have two parameters.
; It checks whether the caster (source creature) is able and legitimate to cast the spell.
; It mainly checks the state of the caster. For example, checking whether it's unconscious/picked up.
; An unconscious/picked creature is unable to cast spells. Checking whether it's in prison.
; validate_source_generic() forbids casting in prison but validate_source_even_in_prison() doesn't.
; This must be set for RANGED_BUFF.
ValidateSourceFunc = validate_source_generic 0 0
; Function to validate the target of the spell. Could have two parameters.
; It checks whether the target creature is able and legitimate to receive the spell.
; It mainly checks if the target can benefit from the spell.
; For example, a creature having 100% HP doesn't need healing.
; A creature having Speed effect already doesn't need the Speed spell.
; The Speed spell should be cast on another creature who doesn't have the Speed effect.
; It also checks the target's state.
; For example, an unconscious creature is not a legitimate target of Speed or Armour spell.
; This must be set for RANGED_BUFF.
ValidateTargetFunc = validate_target_generic 0 0
; Function to search targets of the ranged spell. Could have two parameters.
; It works with ValidateTargetFunc together to collect one or more targets and run dedicated logic to process them.
; For example, search_target_ranged_heal() will search nearby area to collect validated creatures (by validate_target_benefits_from_healing())
; and select the creature who has lowest percentage of HP as the final receiver of the Heal spell.
; This must be set for RANGED_BUFF.
; When this is set, ValidateTargetFunc must be set, too.
SearchTargetsFunc = search_target_generic 0 0



[instance101]
Name = RANGED_SKELETON_SWING_WEAPON_SWORD1
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 3
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SKELETON_SWING_WEAPON_SWORD1 0





[instance102]
Name = RANGED_FLY_SWING_WEAPON_SWORD
Time = 4
ActionTime = 4
ResetTime = 4
FPTime = 5
FPActionTime = 3
FPResetTime = 8
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_FLY_SWING_WEAPON_SWORD 0


[instance103]
Name = RANGED_SPIDER_SWING_WEAPON_SWORD
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 5
FPActionTime = 3
FPResetTime = 8
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SPIDER_SWING_WEAPON_SWORD 0



[instance104]
Name = RANGED_SPIDER_SWING_WEAPON_SWORD2
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 5
FPActionTime = 3
FPResetTime = 8
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SPIDER_SWING_WEAPON_SWORD2 0


[instance105]
Name = RANGED_HORNY_SWING_WEAPON_SWORD
Time = 1
ActionTime = 1
ResetTime = 1
FPTime = 1
FPActionTime = 1
FPResetTime = 1
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 2000
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_HORNY_SWING_WEAPON_SWORD 0




[instance106]
Name = NAVIGATING_FIREBALL1
Time = 14
ActionTime = 14
ResetTime = 14
FPTime = 14
FPActionTime = 14
FPResetTime = 14
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 251
SymbolSprites = 402
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_NAVI_FIREBALL1 0



[instance107]
Name = DRAGON_FLAME_BREATH
Time = 2
ActionTime = 2
ResetTime = 2
FPTime = 2
FPActionTime = 2
FPResetTime = 2
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 241
SymbolSprites = 430
Graphics = ATTACK
RangeMin = 156
RangeMax = 1200
PrimaryTarget = 1
Properties = DESTRUCTIVE MELEE_ATTACK RANGED_ATTACK REPEAT_TRIGGER
Function = creature_fire_shot DRAGON_SHOT_FLAME_BREATH 0



[instance108]
Name = RANGED_SKELETON_SWING_WEAPON_SWORD2
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 3
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SKELETON_SWING_WEAPON_SWORD2 0

[instance109]
Name = RANGED_SKELETON_SWING_WEAPON_SWORD3
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 3
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SKELETON_SWING_WEAPON_SWORD3 0

[instance110]
Name = RANGED_SKELETON_SWING_WEAPON_SWORD4
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 3
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SKELETON_SWING_WEAPON_SWORD4 0

[instance111]
Name = RANGED_SKELETON_SWING_WEAPON_SWORD5
Time = 3
ActionTime = 3
ResetTime = 3
FPTime = 3
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 229
SymbolSprites = 410
Graphics = ATTACK
RangeMin = 0
RangeMax = 1200
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_RANGED_SKELETON_SWING_WEAPON_SWORD5 0




[instance112]
Name = NAVIGATING_FIREBALL2
Time = 13
ActionTime = 13
ResetTime = 13
FPTime = 13
FPActionTime = 13
FPResetTime = 13
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 251
SymbolSprites = 402
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_NAVI_FIREBALL2 0


[instance113]
Name = NAVIGATING_FIREBALL3
Time = 12
ActionTime = 12
ResetTime = 12
FPTime = 12
FPActionTime = 12
FPResetTime = 12
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 251
SymbolSprites = 402
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_NAVI_FIREBALL3 0


[instance114]
Name = NAVIGATING_FIREBALL4
Time = 11
ActionTime = 11
ResetTime = 11
FPTime = 11
FPActionTime = 11
FPResetTime = 11
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 251
SymbolSprites = 402
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_NAVI_FIREBALL4 0




[instance115]
Name = NAVIGATING_FIREBALL5
Time = 8
ActionTime = 8
ResetTime = 8
FPTime = 8
FPActionTime = 8
FPResetTime = 8
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 251
SymbolSprites = 402
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_NAVI_FIREBALL5 0





[instance116]
Name = DRAGON_FIRE_BOMB
Time = 6
ActionTime = 6
ResetTime = 6
FPTime = 6
FPActionTime = 6
FPResetTime = 6
FPInstantCast = 6
ForceVisibility = 150
TooltipTextID = 250
SymbolSprites = 404
Graphics = RANGEDATTACK
RangeMin = 0
RangeMax = 1400
PrimaryTarget = 1
Properties = DESTRUCTIVE MELEE_ATTACK
Function = creature_fire_shot DRAGON_SHOT_FIREBOMB 0


[instance117]
Name = BILE_DEMON_POISON_CLOUD
Time = 9
ActionTime = 9
ResetTime = 9
FPTime = 5
FPActionTime = 3
FPResetTime = 20
FPInstantCast = 0
ForceVisibility = 20
TooltipTextID = 237
SymbolSprites = 416
Graphics = RANGEDATTACK
RangeMin = 0
RangeMax = 2000
PrimaryTarget = 4
PostalPriority = 2
Properties = RANGED_ATTACK
Function = creature_cast_spell SPELL_POISON_CLOUD 0


[instance118]
Name = DERP_LIGHTNING
Time = 2
ActionTime = 2
ResetTime = 2
FPTime = 2
FPActionTime = 2
FPResetTime = 2
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 229
SymbolSprites = 410
Graphics = RANGEDATTACK
RangeMin = 0
RangeMax = 6000
PrimaryTarget = 1
PostalPriority = 1
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_LIGHTNING_DERP 0











[instance1]
Name = SWING_WEAPON_SWORD
Time = 8
ActionTime = 4
ResetTime = 8
FPTime = 5
FPActionTime = 2
FPResetTime = 4
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 252
SymbolSprites = 450
Graphics = ATTACK
RangeMin = MIN
RangeMax = 284
PrimaryTarget = 3
Properties = DESTRUCTIVE MELEE_ATTACK DISPLAY_SWIPE
Function = creature_fire_shot SHOT_SWING_SWORD 0

[instance2]
Name = SWING_WEAPON_FIST
Time = 8
ActionTime = 4
ResetTime = 8
FPTime = 5
FPActionTime = 2
FPResetTime = 4
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 252
SymbolSprites = 400
Graphics = ATTACK
RangeMin = MIN
RangeMax = 284
PrimaryTarget = 3
Properties = DESTRUCTIVE MELEE_ATTACK DISPLAY_SWIPE
Function = creature_fire_shot SHOT_SWING_FIST 0

[instance3]
Name = ESCAPE
Time = 0
ActionTime = 0
ResetTime = 0
FPTime = 0
FPActionTime = 0
FPResetTime = 0
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = ATTACK
PrimaryTarget = 3
Properties =
Function = none 0 0

[instance4]
Name = FIRE_ARROW
Time = 10
ActionTime = 5
ResetTime = 16
FPTime = 5
FPActionTime = 2
FPResetTime = 8
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 226
SymbolSprites = 454
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 16
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_ARROW 0

[instance5]
Name = FIREBALL
Time = 10
ActionTime = 6
ResetTime = 32
FPTime = 4
FPActionTime = 2
FPResetTime = 4
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 251
SymbolSprites = 402
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 18
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_FIREBALL 0

[instance6]
Name = FIRE_BOMB
Time = 10
ActionTime = 6
ResetTime = 100
FPTime = 5
FPActionTime = 3
FPResetTime = 16
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 250
SymbolSprites = 404
Graphics = RANGEDATTACK
RangeMin = 768
RangeMax = MAX
PrimaryTarget = 3
Properties = DANGEROUS DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_FIREBOMB 0

[instance7]
Name = FREEZE
Time = 10
ActionTime = 6
ResetTime = 375
FPTime = 5
FPActionTime = 3
FPResetTime = 300
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 227
SymbolSprites = 406
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
Properties = RANGED_DEBUFF
Function = creature_cast_spell SPELL_FREEZE 0

[instance8]
Name = ARMOUR
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 1
ForceVisibility = 10
TooltipTextID = 228
SymbolSprites = 408
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 3
Function = creature_cast_spell SPELL_ARMOUR 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_benefits_from_defensive 0 0

[instance9]
Name = LIGHTNING
Time = 10
ActionTime = 6
ResetTime = 16
FPTime = 5
FPActionTime = 3
FPResetTime = 8
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 229
SymbolSprites = 410
Graphics = RANGEDATTACK
RangeMin = 768
RangeMax = 5120
PrimaryTarget = 3
PostalPriority = 10
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_LIGHTNING 0

[instance10]
Name = REBOUND
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 1
ForceVisibility = 10
TooltipTextID = 230
SymbolSprites = 412
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 3
Function = creature_cast_spell SPELL_REBOUND 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_benefits_from_defensive 0 0

[instance11]
Name = HEAL
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 1
ForceVisibility = 1
TooltipTextID = 248
SymbolSprites = 414
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 3
Function = creature_cast_spell SPELL_HEAL 0
ValidateSourceFunc = validate_source_even_in_prison 0 0
ValidateTargetFunc = validate_target_benefits_from_healing 0 0

[instance12]
Name = POISON_CLOUD
Time = 10
ActionTime = 6
ResetTime = 80
FPTime = 5
FPActionTime = 3
FPResetTime = 20
FPInstantCast = 0
ForceVisibility = 20
TooltipTextID = 237
SymbolSprites = 416
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 4
PostalPriority = 2
Properties = RANGED_ATTACK
Function = creature_cast_spell SPELL_POISON_CLOUD 0

[instance13]
Name = INVISIBILITY
Time = 10
ActionTime = 6
ResetTime = 500
FPTime = 5
FPActionTime = 3
FPResetTime = 200
FPInstantCast = 1
ForceVisibility = 1
TooltipTextID = 239
SymbolSprites = 418
Graphics = CASTSPELL
PrimaryTarget = 3
Properties = SELF_BUFF
Function = creature_cast_spell SPELL_INVISIBILITY 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_non_idle 0 0

[instance14]
Name = TELEPORT
Time = 10
ActionTime = 6
ResetTime = 6
FPTime = 5
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 1
ForceVisibility = 10
TooltipTextID = 240
SymbolSprites = 420
Graphics = CASTSPELL
PrimaryTarget = 3
Properties =
Function = creature_cast_spell SPELL_TELEPORT 0

[instance15]
Name = SPEED
Time = 10
ActionTime = 6
ResetTime = 550
FPTime = 5
FPActionTime = 3
FPResetTime = 500
FPInstantCast = 1
ForceVisibility = 3
TooltipTextID = 236
SymbolSprites = 422
Graphics = CASTSPELL
PrimaryTarget = 3
Properties = SELF_BUFF
Function = creature_cast_spell SPELL_SPEED 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_non_idle 0 0

[instance16]
Name = SLOW
Time = 10
ActionTime = 6
ResetTime = 850
FPTime = 5
FPActionTime = 3
FPResetTime = 600
FPInstantCast = 0
ForceVisibility = 10
TooltipTextID = 245
SymbolSprites = 424
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
Properties = RANGED_DEBUFF
Function = creature_cast_spell SPELL_SLOW 0

[instance17]
Name = DRAIN
Time = 10
ActionTime = 6
ResetTime = 5
FPTime = 5
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 246
SymbolSprites = 513
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = 5120
PrimaryTarget = 3
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_DRAIN 0

[instance18]
Name = FEAR
Time = 10
ActionTime = 6
ResetTime = 900
FPTime = 5
FPActionTime = 3
FPResetTime = 450
FPInstantCast = 0
ForceVisibility = 20
TooltipTextID = 231
SymbolSprites = 819
Graphics = CASTSPELL
RangeMin = MIN
RangeMax = 1500
PrimaryTarget = 3
Properties = RANGED_DEBUFF
Function = creature_cast_spell SPELL_FEAR 0

[instance19]
Name = MISSILE
Time = 10
ActionTime = 6
ResetTime = 25
FPTime = 4
FPActionTime = 2
FPResetTime = 4
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 233
SymbolSprites = 426
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 14
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_MISSILE 0

[instance20]
Name = NAVIGATING_MISSILE
Time = 10
ActionTime = 6
ResetTime = 50
FPTime = 4
FPActionTime = 2
FPResetTime = 5
FPInstantCast = 0
ForceVisibility = 150
TooltipTextID = 235
SymbolSprites = 428
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 0
Properties = DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_NAVI_MISSILE 0

[instance21]
Name = FLAME_BREATH
Time = 10
ActionTime = 10
ResetTime = 8
FPTime = 3
FPActionTime = 3
FPResetTime = 1
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 241
SymbolSprites = 430
Graphics = ATTACK
RangeMin = 156
RangeMax = 284
PrimaryTarget = 3
Properties = DESTRUCTIVE MELEE_ATTACK RANGED_ATTACK REPEAT_TRIGGER
Function = creature_fire_shot SHOT_FLAME_BREATH 0

[instance22]
Name = WIND
Time = 10
ActionTime = 6
ResetTime = 1600
FPTime = 5
FPActionTime = 3
FPResetTime = 800
FPInstantCast = 0
ForceVisibility = 30
TooltipTextID = 249
SymbolSprites = 432
Graphics = RANGEDATTACK
PrimaryTarget = 3
Properties =
Function = creature_cast_spell SPELL_WIND 0
ValidateSourceFunc = validate_source_generic 0 0
; To also Wind in combat without gas damage, use validate_target_benefits_from_wind instead.
ValidateTargetFunc = validate_target_takes_gas_damage 0 0

[instance23]
Name = LIGHT
Time = 10
ActionTime = 6
ResetTime = 600
FPTime = 5
FPActionTime = 3
FPResetTime = 300
FPInstantCast = 1
ForceVisibility = 100
TooltipTextID = 242
SymbolSprites = 434
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 3
Function = creature_cast_spell SPELL_LIGHT 0

[instance24]
Name = FLY
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 1
ForceVisibility = 1
TooltipTextID = 243
SymbolSprites = 436
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 3
Function = creature_cast_spell SPELL_FLIGHT 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_benefits_from_higher_altitude 0 0

[instance25]
Name = SIGHT
Time = 10
ActionTime = 6
ResetTime = 200
FPTime = 5
FPActionTime = 3
FPResetTime = 150
FPInstantCast = 1
ForceVisibility = 0
TooltipTextID = 232
SymbolSprites = 438
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 3
Function = creature_cast_spell SPELL_SIGHT 0
ValidateSourceFunc = validate_source_even_in_prison 0 0
ValidateTargetFunc = validate_target_even_in_prison 0 0

[instance26]
Name = GRENADE
Time = 10
ActionTime = 6
ResetTime = 300
FPTime = 5
FPActionTime = 3
FPResetTime = 100
FPInstantCast = 0
ForceVisibility = 80
TooltipTextID = 234
SymbolSprites = 440
Graphics = RANGEDATTACK
PrimaryTarget = 3
PostalPriority = 4
Properties = DANGEROUS DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_GRENADE 0

[instance27]
Name = HAILSTORM
Time = 10
ActionTime = 6
ResetTime = 32
FPTime = 5
FPActionTime = 3
FPResetTime = 20
FPInstantCast = 0
ForceVisibility = 80
TooltipTextID = 244
SymbolSprites = 442
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 8
Properties = DESTRUCTIVE RANGED_ATTACK MELEE_ATTACK
Function = creature_cast_spell SPELL_HAILSTORM 0

[instance28]
Name = WORD_OF_POWER
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 247
SymbolSprites = 444
Graphics = CASTSPELL
RangeMin = MIN
RangeMax = 284
PrimaryTarget = 3
Properties = DESTRUCTIVE MELEE_ATTACK
Function = creature_cast_spell SPELL_WORD_OF_POWER 0

[instance29]
Name = FART
Time = 4
ActionTime = 4
ResetTime = 4
FPTime = 4
FPActionTime = 2
FPResetTime = 2
FPInstantCast = 0
ForceVisibility = 10
TooltipTextID = 253
SymbolSprites = 446
Graphics = CASTSPELL
RangeMin = 0
RangeMax = 2000
PrimaryTarget = 1
Properties = RANGED_ATTACK
Function = creature_cast_spell SPELL_CRAZY_GAS 0

[instance30]
Name = DIG
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
FPInstantCast = 0
ForceVisibility = 40
TooltipTextID = 254
SymbolSprites = 448
Graphics = DIG
Properties =
PrimaryTarget = 3
Function = creature_dig 0 0

[instance31]
Name = PRETTY_PATH
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = PRETTYDANCE
Properties =
PrimaryTarget = 3
Function = creature_pretty_path 0 0

[instance32]
Name = DESTROY_AREA
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = PRETTYDANCE
Properties =
PrimaryTarget = 3
Function = creature_destroy 0 0

[instance33]
Name = TUNNEL
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = DIG
PrimaryTarget = 3
Properties =
Function = creature_tunnel 0 0

[instance34]
Name = CELEBRATE_SHORT
Time = 8
ActionTime = 1
ResetTime = 1
FPTime = 4
FPActionTime = 1
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = CELEBRATE
Properties =
Function = none 3 0

[instance35]
Name = REINFORCE
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = PRETTYDANCE
PrimaryTarget = 3
Properties =
Function = creature_reinforce 0 0

[instance36]
Name = EAT
Time = 16
ActionTime = 8
ResetTime = 1
FPTime = 8
FPActionTime = 4
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = EATCHICKEN
NoAnimationLoop = 1
PrimaryTarget = 3
Properties =
Function = creature_eat 0 0

[instance37]
Name = ATTACK_ROOM_SLAB
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 10
TooltipTextID = 201
SymbolSprites = 0
Graphics = ATTACK
PrimaryTarget = 3
Properties =
Function = attack_room_slab 0 0

[instance38]
Name = DAMAGE_WALL
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 10
TooltipTextID = 201
SymbolSprites = 0
Graphics = ATTACK
PrimaryTarget = 3
Properties =
Function = creature_damage_wall 21 0

[instance39]
Name = FIRST_PERSON_DIG
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
FPInstantCast = 0
ForceVisibility = 3
TooltipTextID = 254
SymbolSprites = 448
Graphics = DIG
PrimaryTarget = 3
Properties = DISPLAY_SWIPE
Function = first_person_do_imp_task 0 0

[instance40]
Name = LIZARD
Time = 10
ActionTime = 6
ResetTime = 60
FPTime = 5
FPActionTime = 3
FPResetTime = 20
FPInstantCast = 0
ForceVisibility = 80
TooltipTextID = 234
SymbolSprites = 440
Graphics = RANGEDATTACK
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
PostalPriority = 6
Properties = DANGEROUS DESTRUCTIVE RANGED_ATTACK
Function = creature_fire_shot SHOT_LIZARD 0

[instance41]
Name = CAST_SPELL_DISEASE
Time = 10
ActionTime = 6
ResetTime = 200
FPTime = 5
FPActionTime = 3
FPResetTime = 150
FPInstantCast = 0
ForceVisibility = 20
TooltipTextID = 255
SymbolSprites = 319
Graphics = CASTSPELL
RangeMin = 156
RangeMax = MAX
PrimaryTarget = 3
Properties = RANGED_DEBUFF
Function = creature_cast_spell SPELL_DISEASE 0

[instance42]
Name = CAST_SPELL_CHICKEN
Time = 10
ActionTime = 6
ResetTime = 200
FPTime = 5
FPActionTime = 3
FPResetTime = 150
FPInstantCast = 0
ForceVisibility = 20
TooltipTextID = 256
SymbolSprites = 314
Graphics = CASTSPELL
RangeMin = 156
RangeMax = 1280
PrimaryTarget = 3
Properties = RANGED_DEBUFF
Function = creature_cast_spell SPELL_CHICKEN 0

[instance43]
Name = CAST_SPELL_TIME_BOMB
Time = 10
ActionTime = 6
ResetTime = 6
FPTime = 5
FPActionTime = 3
FPResetTime = 3
FPInstantCast = 0
ForceVisibility = 0
TooltipTextID = 257
SymbolSprites = 548
Graphics = CASTSPELL
RangeMin = 768
RangeMax = MAX
PrimaryTarget = 3
Properties = RANGED_ATTACK
Function = creature_cast_spell SPELL_TIME_BOMB 0

[instance44]
Name = MOAN
Time = 8
ActionTime = 1
ResetTime = 1
FPTime = 4
FPActionTime = 1
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = SCREAM
PrimaryTarget = 3
Properties =
Function = none 4 0

[instance45]
Name = TORTURED
Time = 16
ActionTime = 8
ResetTime = 1
FPTime = 8
FPActionTime = 4
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = TORTURE
PrimaryTarget = 3
Properties =
Function = creature_tortured 0 0

[instance46]
Name = TOKING
Time = 16
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = SMOKE
PrimaryTarget = 3
Properties = SELF_BUFF
Function = none 0 0

[instance47]
Name = RELAXING
Time = 8
ActionTime = 4
ResetTime = 1
FPTime = 4
FPActionTime = 2
FPResetTime = 1
ForceVisibility = 0
TooltipTextID = 201
SymbolSprites = 0
Graphics = RELAX
PrimaryTarget = 3
Properties =
Function = none 0 0

[instance48]
Name = BIRD
Time = 8
ActionTime = 8
ResetTime = 800
FPTime = 6
FPActionTime = 5
FPResetTime = 600
FPInstantCast = 1
ForceVisibility = 30
TooltipTextID = 1080
SymbolSprites = BIRD_SPELL
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 8
Function = creature_cast_spell SPELL_SUMMON_FAMILIAR 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_generic 0 0

[instance49]
Name = SPIDERLING
Time = 6
ActionTime = 5
ResetTime = 250
FPTime = 6
FPActionTime = 5
FPResetTime = 190
FPInstantCast = 1
ForceVisibility = 30
TooltipTextID = 1081
SymbolSprites = SPIDERLING_SPELL
Graphics = CASTSPELL
Properties = SELF_BUFF
PrimaryTarget = 8
Function = creature_cast_spell SPELL_SUMMON_SPIDERLING 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_benefits_from_offensive 0 0

[instance50]
Name = RANGED_HEAL
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 0
ForceVisibility = 10
TooltipTextID = 1066
SymbolSprites = 786
Graphics = CASTSPELL
RangeMin = MIN
RangeMax = 5120
PrimaryTarget = 6
Properties = RANGED_BUFF SELF_BUFF NEEDS_TARGET
Function = creature_cast_spell SPELL_HEAL 0
ValidateSourceFunc = validate_source_even_in_prison 0 0
ValidateTargetFunc = validate_target_benefits_from_healing 0 0
SearchTargetsFunc = search_target_ranged_heal 0 0

[instance51]
Name = RANGED_SPEED
Time = 10
ActionTime = 6
ResetTime = 550
FPTime = 5
FPActionTime = 3
FPResetTime = 500
FPInstantCast = 0
ForceVisibility = 10
TooltipTextID = 654
SymbolSprites = 792
Graphics = CASTSPELL
RangeMin = MIN
RangeMax = 5120
PrimaryTarget = 6
Properties = RANGED_BUFF SELF_BUFF NEEDS_TARGET
Function = creature_cast_spell SPELL_SPEED 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_generic 0 0
SearchTargetsFunc = search_target_generic 0 0

[instance52]
Name = RANGED_ARMOUR
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 0
ForceVisibility = 10
TooltipTextID = 655
SymbolSprites = 780
Graphics = CASTSPELL
RangeMin = MIN
RangeMax = 5120
PrimaryTarget = 6
Properties = RANGED_BUFF SELF_BUFF NEEDS_TARGET
Function = creature_cast_spell SPELL_ARMOUR 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_benefits_from_defensive 0 0
SearchTargetsFunc = search_target_generic 0 0

[instance53]
Name = RANGED_REBOUND
Time = 10
ActionTime = 6
ResetTime = 400
FPTime = 5
FPActionTime = 3
FPResetTime = 250
FPInstantCast = 0
ForceVisibility = 10
TooltipTextID = 1069
SymbolSprites = 788
Graphics = CASTSPELL
RangeMin = MIN
RangeMax = 5120
PrimaryTarget = 6
Properties = RANGED_BUFF SELF_BUFF NEEDS_TARGET
Function = creature_cast_spell SPELL_REBOUND 0
ValidateSourceFunc = validate_source_generic 0 0
ValidateTargetFunc = validate_target_benefits_from_missile_defense 0 0
SearchTargetsFunc = search_target_generic 0 0

[instance54]
Name = CRIPPLE
Time = 8
ActionTime = 4
ResetTime = 200
FPTime = 5
FPActionTime = 2
FPResetTime = 160
FPInstantCast = 0
ForceVisibility = 100
TooltipTextID = 245
SymbolSprites = 827
Graphics = ATTACK
RangeMin = MIN
RangeMax = 284
PrimaryTarget = 3
Properties = DESTRUCTIVE MELEE_ATTACK DISPLAY_SWIPE
Function = creature_fire_shot SHOT_CRIPPLE 0

[job0]
; Empty job, indicates no job assigned.
Name = NULL
PlayerFunctions = none none
CoordsFunctions = none none

[job1]
; Tunneling, not used.
Name = TUNNEL
InitialState = TunnellerDoingNothing
ContinueState = Tunnelling
PlayerFunctions = none none
CoordsFunctions = none none

[job2]
; Digging, not used.
Name = DIG
InitialState = ImpArrivesAtDigDirt
ContinueState = ImpDigsDirt
PlayerFunctions = none none
CoordsFunctions = none none

[job3]
; Researching rooms and spells in the library.
; Name of the job.
Name = RESEARCH
; A room role to be assigned for the room within which the job is being done.
RelatedRoomRole = ROOM_ROLE_RESEARCH
; Initial creature state to enter when starting the job.
InitialState = AtResearchRoom
; The state used to continue the job after init.
ContinueState = Researching
; Whether and how the job can be initiated by dropping creature into related room, options are:
; OWNED_CREATURES,OWNED_DIGGERS,ENEMY_CREATURES,ENEMY_DIGGERS - selects kind of creatures which can be assigned to this job.
; HUMAN_DROP,COMPUTER_DROP - whether human players and computer players can assign the job by dropping a creature from hand.
; CREATURE_INIT - whether the job can be started when a creature is created within the room, or level has a pre-placed creature in that room.
; AREA_WITHIN_ROOM - whether players can assign the job by dropping a creature into related room.
; AREA_OUTSIDE_ROOM - whether players can assign the job by dropping a creature into some place which is not a room (claimed area, path etc.).
; WHOLE_AREA,CENTER_ONLY,BORDER_ONLY - continous area selection where the creature have to be dropped for the job to be assigned, center means an area surrounded by the same slab.
; NEEDS_HAVE_JOB - only allow to assign this job by human or computer player if it's in primary or secondary jobs list of the creature.
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA
; Function used to assign the job to a creature after a break, or if it's a primary/secondary job.
; Not all jobs need to have this set - you may have 'none' for jobs which are never assigned this way.
PlayerFunctions = can_do_research work_in_room
; Function used to assign the job to a creature by dropping at specific map coordinates.
; Not all jobs need to have this set - you may have 'none' for jobs which are never assigned this way.
CoordsFunctions = can_do_research work_in_room
; Job properties, options are:
; NEEDS_CAPACITY - whether the job performed in a room requires and consumes worker capacity within the room.
; WORK_WHOLE_AREA,WORK_CENTER_ONLY,WORK_BORDER_ONLY - room area selection where the creature will work within related room.
; NO_SELF_CONTROL - creature has no control over its job while doing this action, cannot stop by itself.
; NO_GROUPS - creature is removed from a group before the job is assigned.
; ALLOW_CHICKENIZED - allow creatures turned into chickens to be assigned to that job.
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY

[job4]
; Training job.
Name = TRAIN
RelatedRoomRole = ROOM_ROLE_TRAIN_EXP
InitialState = AtTrainingRoom
ContinueState = Training
Assign = OWNED_CREATURES OWNED_DIGGERS HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA
PlayerFunctions = can_do_training work_in_room
CoordsFunctions = can_do_training work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY

[job5]
; Manufacturing traps and doors in workshop.
Name = MANUFACTURE
RelatedRoomRole = ROOM_ROLE_CRATES_MANUFACTURE
InitialState = AtWorkshopRoom
ContinueState = Manufacturing
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA
PlayerFunctions = can_do_manufacturing work_in_room
CoordsFunctions = can_do_manufacturing work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY

[job6]
; Scavenging enemy and neutral creatures to join the player.
Name = SCAVENGE
RelatedRoomRole = ROOM_ROLE_SCAVENGE
InitialState = AtScavengerRoom
ContinueState = Scavengering
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA
PlayerFunctions = can_do_scavenging work_in_room
CoordsFunctions = can_do_scavenging work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY

[job7]
; Torture for pleasure, with no health loss and possibility to quit any time, only creatures which have it as primary or secondary job can use it, others will start painful torture only.
Name = KINKY_TORTURE
RelatedRoomRole = ROOM_ROLE_TORTURE
InitialState = AtKinkyTortureRoom
ContinueState = KinkyTorturing
Assign = OWNED_CREATURES CREATURE_INIT HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA NEEDS_HAVE_JOB
PlayerFunctions = can_do_job_always work_in_room
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY NO_GROUPS

[job8]
; Joining an already started fight somewhere on the map.
Name = FIGHT
RelatedEvent = MEVENT_ENEMYFIGHT
InitialState = CreatureDoingNothing
ContinueState = None
Assign = OWNED_CREATURES OWNED_DIGGERS ENEMY_CREATURES ENEMY_DIGGERS
PlayerFunctions = can_join_fight move_to_event
CoordsFunctions = none none
Properties =

[job9]
; Looking for enemy to fight, computer player may use this jobs check function when picking creatures to attack.
Name = SEEK_THE_ENEMY
InitialState = SeekTheEnemy
ContinueState = None
Assign = OWNED_CREATURES OWNED_DIGGERS ENEMY_CREATURES ENEMY_DIGGERS
PlayerFunctions = can_do_job_always in_state_internal
CoordsFunctions = can_do_job_always none
Properties =

[job10]
; Walk around in guard post.
Name = GUARD
RelatedRoomRole = ROOM_ROLE_GUARD
InitialState = AtGuardPostRoom
ContinueState = Guarding
Assign = OWNED_CREATURES CREATURE_INIT HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA
PlayerFunctions = can_do_job_always work_in_room
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY

[job11]
; Persuade other creatures to follow - not working.
Name = GROUP
Assign = OWNED_CREATURES OWNED_DIGGERS ENEMY_CREATURES ENEMY_DIGGERS
PlayerFunctions = can_do_barracking none
CoordsFunctions = none none
Properties =

[job12]
; Join other creatures into group in barracks.
Name = BARRACK
RelatedRoomRole = ROOM_ROLE_MAKE_GROUP
InitialState = AtBarrackRoom
ContinueState = Barracking
; Maybe computer should be able to place creatures in barracks?
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA
PlayerFunctions = can_do_barracking work_in_room
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY

[job13]
; Pray in temple.
Name = TEMPLE_PRAY
RelatedRoomRole = ROOM_ROLE_HAPPY_PRAY
InitialState = AtTemple
ContinueState = PrayingInTemple
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM BORDER_ONLY
PlayerFunctions = can_do_job_always work_in_room
CoordsFunctions = can_do_job_always work_in_room_and_cure
Properties = WORK_BORDER_ONLY NEEDS_CAPACITY ALLOW_CHICKENIZED

[job14]
; Freeze any enemy creatures starving in prison.
Name = FREEZE_PRISONERS
RelatedRoomRole = ROOM_ROLE_PRISON
InitialState = CreatureFreezePrisonrs
ContinueState = None
Assign = OWNED_CREATURES WHOLE_AREA NEEDS_HAVE_JOB
PlayerFunctions = can_freeze_prisoners in_state_on_room_content
CoordsFunctions = none none
Properties = WORK_WHOLE_AREA

[job15]
; Go into unexplored but accessible areas of the map.
Name = EXPLORE
InitialState = CreatureExploreDungeon
ContinueState = None
Assign = OWNED_CREATURES OWNED_DIGGERS ENEMY_CREATURES ENEMY_DIGGERS
PlayerFunctions = can_do_job_always in_state_internal
CoordsFunctions = none none
Properties =

[job16]
; Leave the dungeon through entrance.
Name = EXEMPT
RelatedRoomRole = ROOM_ROLE_POOL_LEAVE
InitialState = CreatureExempt
ContinueState = None
Assign = OWNED_CREATURES ENEMY_CREATURES HUMAN_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_CENTER_ONLY NO_GROUPS

[job17]
; Sink into temple waters as sacrifice for dark gods.
Name = TEMPLE_SACRIFICE
RelatedRoomRole = ROOM_ROLE_SACRIFICE
InitialState = CreatureSacrifice
ContinueState = CrtrBeingSacrificed
Assign = OWNED_CREATURES OWNED_DIGGERS ENEMY_CREATURES ENEMY_DIGGERS HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM CENTER_ONLY ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_do_job_always in_state_internal
Properties = WORK_CENTER_ONLY NO_SELF_CONTROL NO_GROUPS

[job18]
; Torture which persuades enemies to convert, or motivates your creatures.
Name = PAINFUL_TORTURE
RelatedRoomRole = ROOM_ROLE_TORTURE
InitialState = AtTortureRoom
ContinueState = Torturing
Assign = OWNED_CREATURES ENEMY_CREATURES ENEMY_DIGGERS CREATURE_INIT HUMAN_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY NO_SELF_CONTROL NO_GROUPS

[job19]
; Slowly dying of hunger at prison.
Name = CAPTIVITY
RelatedRoomRole = ROOM_ROLE_PRISON
InitialState = CrtrArrivedAtPrison
ContinueState = CreatureInPrison
Assign = OWNED_CREATURES ENEMY_CREATURES ENEMY_DIGGERS CREATURE_INIT HUMAN_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_WHOLE_AREA NEEDS_CAPACITY NO_SELF_CONTROL NO_GROUPS ALLOW_CHICKENIZED

[job20]
; Placing any valuables in pockets into players treasury.
Name = PLACE_IN_VAULT
RelatedRoomRole = ROOM_ROLE_GOLD_STORAGE
InitialState = ImpDropsGold
ContinueState = None
Assign = OWNED_DIGGERS HUMAN_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_place_in_vault work_in_room
Properties = WORK_WHOLE_AREA

[job21]
; Taking salary from the treasury.
Name = TAKE_SALARY
RelatedRoomRole = ROOM_ROLE_GOLD_STORAGE
InitialState = CreatureTakeSalary
ContinueState = None
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_take_salary work_in_room
Properties = WORK_WHOLE_AREA

[job22]
; Eating in the hatchery.
Name = TAKE_FEED
RelatedRoomRole = ROOM_ROLE_FOOD_STORAGE
InitialState = CreatureArrivedAtGarden
ContinueState = CreatureEat
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_do_job_always work_in_room
Properties = WORK_WHOLE_AREA

[job23]
; Sleeping in lair, also includes making new lair in the room.
Name = TAKE_SLEEP
RelatedRoomRole = ROOM_ROLE_HEAL_SLEEP
InitialState = CreatureGoingToSleep
ContinueState = CreatureSleep
Assign = OWNED_CREATURES HUMAN_DROP COMPUTER_DROP AREA_WITHIN_ROOM WHOLE_AREA ONE_TIME
PlayerFunctions = can_do_job_always none
CoordsFunctions = can_take_sleep sleep_in_lair
; Sleeping doesn't consume room capacity, because the lair itself does - no NEEDS_CAPACITY here.
Properties = WORK_WHOLE_AREA

[angerjob0]
Name = NULL

[angerjob1]
Name = KILL_CREATURES

[angerjob2]
Name = DESTROY_ROOMS

[angerjob3]
Name = LEAVE_DUNGEON

[angerjob4]
Name = STEAL_GOLD

[angerjob5]
Name = DAMAGE_WALLS

[angerjob6]
Name = MAD_PSYCHO

[angerjob7]
Name = PERSUADE

[angerjob8]
Name = JOIN_ENEMY

[angerjob9]
Name = KILL_DIGGERS

[attackpref0]
Name = NULL

[attackpref1]
Name = MELEE

[attackpref2]
Name = RANGED
