REM ****************************************************************************
REM  Campaigns Consolidation Project for KeeperFX strategy game.
REM ****************************************************************************
REM  Script for Level Elf's Dance
REM  Campaign: DK Original
REM  Authors:  based on Bullfrog script
REM            KeeperFX CCP Team
REM  Date:     17 Dec 1996 - 07 Sep 2014
REM  Copying and copyrights:
REM    This program is free software; you can redistribute it and/or modify
REM    it under the terms of the GNU General Public License as published by
REM    the Free Software Foundation; either version 2 of the License, or
REM    (at your option) any later version.
REM ****************************************************************************
LEVEL_VERSION(1)

REM Todo: add usual preamble, level cap, tidy rooms, creature availability, max creatures, money
REM set yellow to green and purple to blue as well


REM PLAYER0,FLAG1 - Southern scuffle - 1 start, 2 seen vampires, 3 kill vampires, 4 convert vampires
REM PLAYER0,FLAG2 - Have you noticed the undead die easily here?
REM PLAYER_GOOD,TIMER0 - hero wave spawning
REM PLAYER_GOOD,FLAG1  - left hero party
REM PLAYER_GOOD,FLAG2  - right hero party

IF(PLAYER1,PRISON >= 9)
	SET_CREATURE_TENDENCIES(PLAYER1,IMPRISON,1)
ENDIF
IF(PLAYER2,PRISON >= 9)
	SET_CREATURE_TENDENCIES(PLAYER2,IMPRISON,1)
ENDIF

CREATE_PARTY(FODDER_A)
	ADD_TO_PARTY(FODDER_A,THIEF,3,100,DEFEND_ROOMS,-400)
	ADD_TO_PARTY(FODDER_A,BARBARIAN,3,100,DEFEND_ROOMS,-400)
CREATE_PARTY(FODDER_B)
	ADD_TO_PARTY(FODDER_B,DWARFA,3,100,DEFEND_ROOMS,-400)
	ADD_TO_PARTY(FODDER_B,ARCHER,3,100,DEFEND_ROOMS,-400)
CREATE_PARTY(FODDER_C)
	ADD_TO_PARTY(FODDER_C,THIEF,3,100,DEFEND_ROOMS,-400)
	ADD_TO_PARTY(FODDER_C,DWARFA,3,100,DEFEND_ROOMS,-400)
CREATE_PARTY(FODDER_D)
	ADD_TO_PARTY(FODDER_D,BARBARIAN,3,100,DEFEND_ROOMS,-400)
	ADD_TO_PARTY(FODDER_D,ARCHER,3,100,DEFEND_ROOMS,-400)
CREATE_PARTY(ELITES)
	ADD_TO_PARTY(ELITES,ARCHER,7,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(ELITES,GIANT,7,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(ELITES,BARBARIAN,7,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(ELITES,MONK,7,1000,ATTACK_DUNGEON_HEART,-400)
CREATE_PARTY(LANDLORD)
	ADD_TO_PARTY(LANDLORD,KNIGHT,8,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(LANDLORD,WIZARD,7,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(LANDLORD,WIZARD,7,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(LANDLORD,WITCH,7,1000,ATTACK_DUNGEON_HEART,-400)
	ADD_TO_PARTY(LANDLORD,WITCH,7,1000,ATTACK_DUNGEON_HEART,-400)

CREATE_PARTY(SKELLIES)
	ADD_TO_PARTY(SKELLIES,SKELETON,3,0,DEFEND_ROOMS,-200)
	ADD_TO_PARTY(SKELLIES,SKELETON,3,0,DEFEND_ROOMS,-200)
	
SET_GENERATE_SPEED(400)

COMPUTER_PLAYER(PLAYER1,1)
COMPUTER_PLAYER(PLAYER2,1)
REM COMPUTER_PLAYER(PLAYER3,ROAMING)
COMPUTER_PLAYER(PLAYER4,ROAMING)
COMPUTER_PLAYER(PLAYER5,ROAMING)
COMPUTER_PLAYER(PLAYER6,ROAMING)

REM SET_PLAYER_COLOR(PLAYER3,GREEN)
REM SET_PLAYER_COLOR(PLAYER4,BLUE)
SET_PLAYER_COLOR(PLAYER4,BLACK)
SET_PLAYER_COLOR(PLAYER6,WHITE)

ALLY_PLAYERS(PLAYER1,PLAYER2,3)
REM ALLY_PLAYERS(PLAYER1,PLAYER4,3)
REM ALLY_PLAYERS(PLAYER2,PLAYER3,3)
ALLY_PLAYERS(PLAYER4,PLAYER5,3)
ALLY_PLAYERS(PLAYER_GOOD,PLAYER6,3)

REM SET_COMPUTER_CHECKS(PLAYER1,"CHECK FOR NEUTRAL PLACES",15000,0,0,0,65000)
REM SET_COMPUTER_CHECKS(PLAYER2,"CHECK FOR NEUTRAL PLACES",15000,0,0,0,65000)

REM Modify computer players to force them to build only 2x2 scavenger rooms
REM Original values are:
REM "BUILD A SCAVENGER ROOM",0,3,3,ROOM_SCAVENGER,ROOM_PRISON
REM SET_COMPUTER_PROCESS(player,ProcessName,Priority,Data1,Data2,Data3,Data4)
REM SET_COMPUTER_PROCESS(PLAYER1,"BUILD A SCAVENGER ROOM",-10,2,2,9,8)
REM SET_COMPUTER_PROCESS(PLAYER2,"BUILD A SCAVENGER ROOM",-10,2,2,9,8)

START_MONEY(PLAYER0,3000)
START_MONEY(PLAYER1,7000)
START_MONEY(PLAYER2,7000)

MAX_CREATURES(PLAYER0,20)
MAX_CREATURES(PLAYER1,25)
MAX_CREATURES(PLAYER2,25)

ADD_CREATURE_TO_POOL(BUG,30)
ADD_CREATURE_TO_POOL(FLY,30)
ADD_CREATURE_TO_POOL(SPIDER,30)
ADD_CREATURE_TO_POOL(DEMONSPAWN,30)
ADD_CREATURE_TO_POOL(SORCEROR,30)
ADD_CREATURE_TO_POOL(TROLL,30)
ADD_CREATURE_TO_POOL(BILE_DEMON,15)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,20)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(HELL_HOUND,20)
ADD_CREATURE_TO_POOL(TENTACLE,20)

REM Creature availability
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,0)

REM Room availability
ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(PLAYER1,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER2,TEMPLE,1,0)

REM Spells availability
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_HEAL_CREATURE,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_HEAL_CREATURE,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_CHICKEN,1,0)

REM Doors and traps availability
DOOR_AVAILABLE(ALL_PLAYERS,WOOD,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,BRACED,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)

SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,ANY_CREATURE,7)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,IMP,7)
SET_ROOM_CONFIGURATION(BRIDGE,Properties,CANNOT_BE_SOLD,1)
SET_ROOM_CONFIGURATION(GRAVEYARD,Properties,CANNOT_BE_SOLD,1)
SET_ROOM_CONFIGURATION(GRAVEYARD,Properties,CANNOT_VANDALIZE,1)
SET_ROOM_CONFIGURATION(RESEARCH,Properties,CANNOT_VANDALIZE,1)
SET_ROOM_CONFIGURATION(BARRACKS,Properties,CANNOT_VANDALIZE,1)

IF(PLAYER1,CAMPAIGN_FLAG3 == 1)
	SET_CREATURE_CONFIGURATION(HELL_HOUND,Health,700)
	SET_CREATURE_CONFIGURATION(HELL_HOUND,Strength,60)
	SET_CREATURE_CONFIGURATION(HELL_HOUND,Dexterity,80)
	SET_CREATURE_CONFIGURATION(HELL_HOUND,Defence,85)
	SET_CREATURE_CONFIGURATION(HELL_HOUND,EntranceRoom,LAIR,GUARD_POST,GARDEN)
	SET_CREATURE_CONFIGURATION(HELL_HOUND,RoomSlabsRequired,9,4,1)
	SET_CREATURE_INSTANCE(HELL_HOUND, 4, FIREBALL, 4)
	SET_CREATURE_INSTANCE(HELL_HOUND, 7, EMBERS, 7)
	SET_CREATURE_INSTANCE(HELL_HOUND, 8, FIRE_BOMB, 8)
ENDIF

IF(PLAYER1,CAMPAIGN_FLAG4 == 1)
	SET_CREATURE_CONFIGURATION(TENTACLE,Health,800)
	SET_CREATURE_CONFIGURATION(TENTACLE,Strength,60)
	SET_CREATURE_CONFIGURATION(TENTACLE,Armour,70)
	SET_CREATURE_CONFIGURATION(TENTACLE,Luck,14)
	SET_CREATURE_CONFIGURATION(TENTACLE,Recovery,3)
	SET_CREATURE_CONFIGURATION(TENTACLE,BaseSpeed,42)
	SET_CREATURE_CONFIGURATION(TENTACLE,EntranceRoom,GUARD_POST,LAIR,NULL)
	SET_CREATURE_CONFIGURATION(TENTACLE,RoomSlabsRequired,9,4,0)
	SET_CREATURE_INSTANCE(TENTACLE, 3, ACIDSPIT, 3)
	SET_CREATURE_INSTANCE(TENTACLE, 4, SLOW, 4)
	SET_CREATURE_INSTANCE(TENTACLE, 6, DRAIN, 6)
	SET_CREATURE_INSTANCE(TENTACLE, 7, HAILSTORM, 7)
	SET_CREATURE_INSTANCE(TENTACLE, 9, BUBBLE, 9)
ENDIF


REM todo: Add the hero conversion chance


REM ****************************************************************************

SET_BOX_TOOLTIP(0, "Hint Crate")
ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM,14,0,PLAYER0)
SET_FLAG(PLAYER0,FLAG7,0)

IF(PLAYER0,BOX0_ACTIVATED > 0)
	IF(PLAYER0,FLAG7 == 0)
		NEXT_COMMAND_REUSABLE
		QUICK_INFORMATION(1,"Make some powerful allies and master your control over undeath.",ALL_PLAYERS,897)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER0,TIMER7)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,BOX0_ACTIVATED,0)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG7,1)
	ENDIF
ENDIF
IF(PLAYER0,TIMER7 >= 100)
	IF(PLAYER0,FLAG7 == 1)
		NEXT_COMMAND_REUSABLE
		CREATE_EFFECT(54,14)
		NEXT_COMMAND_REUSABLE
		ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM,14,0,PLAYER0)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG7,0)
	ENDIF
ENDIF

CONCEAL_MAP_RECT(PLAYER0,118,25,2,9)
CONCEAL_MAP_RECT(PLAYER0,124,19,9,2)
CONCEAL_MAP_RECT(PLAYER0,130,25,2,9)
CONCEAL_MAP_RECT(PLAYER0,124,31,9,2)
TAG_MAP_RECT(PLAYER1,79,48,5,5)
TAG_MAP_RECT(PLAYER2,6,52,3,5)

QUICK_OBJECTIVE(16,"You have entered a realm on the brink of collapse. Two rival Keepers have carved up their own domains and the Heroes are strip-mining what remains. Train up and take what you're owed, while there's still anything left.")

REM "There is a heavy presence in the air. The life in this realm is hard to come by."
IF_SLAB_OWNER(41,20,PLAYER0)
	QUICK_INFORMATION(2,"The soil here is weak and lifeless, and the land itself feels fatigued. You won't be able to sustain much in terms of food or undead until you eliminate some competition.")
ENDIF
SET_CREATURE_PROPERTY(SKELETON,NO_CORPSE_ROTTING,1)
SET_CREATURE_PROPERTY(SKELETON,NO_IMPRISONMENT,1)
SET_CREATURE_PROPERTY(GHOST,NO_CORPSE_ROTTING,1)
SET_GAME_RULE(FoodGenerationSpeed,3500)
SET_ROOM_CONFIGURATION(GARDEN,TotalCapacity,slabs_div2_nomin_effcncy)



REM - cute little worldbuilding - vampires are sucking the life out of the realm to produce skeleton armies and feed, and have control over the undead here.
REM - once killed or converted, stop.
REM - maybe replace with/add skeleton/ghost chance 0.

IF(PLAYER0,FLAG1 <= 2)
	IF(PLAYER0,SKELETON >= 1)
		NEXT_COMMAND_REUSABLE
		KILL_CREATURE(PLAYER0,SKELETON,ANYWHERE,1)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,358)

	ENDIF
	IF(PLAYER0,GHOST >= 1)
		NEXT_COMMAND_REUSABLE
		KILL_CREATURE(PLAYER0,GHOST,ANYWHERE,1)
		NEXT_COMMAND_REUSABLE
		PLAY_MESSAGE(PLAYER0,SOUND,578)

	ENDIF
ENDIF

IF(PLAYER0,SKELETONS_RAISED >= 1)
	IF(PLAYER0,FLAG2 == 0)
		IF(PLAYER0,FLAG1 <= 1)
			SET_FLAG(PLAYER0,FLAG2,1)
		ENDIF
		IF(PLAYER0,FLAG1 == 2)
			SET_FLAG(PLAYER0,FLAG2,2)
		ENDIF
	ENDIF
ENDIF
IF(PLAYER0,GHOSTS_RAISED >= 1)
	IF(PLAYER0,FLAG2 == 0)
		IF(PLAYER0,FLAG1 <= 1)
			SET_FLAG(PLAYER0,FLAG2,1)
		ENDIF
		IF(PLAYER0,FLAG1 == 2)
			SET_FLAG(PLAYER0,FLAG2,2)
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,FLAG2 == 1)
	QUICK_INFORMATION(3,"Strange, even the undead struggle to keep their forms here.")
ENDIF
IF(PLAYER0,FLAG2 == 2)
	QUICK_INFORMATION(4,"The chokehold these Vampires have on this realm means you have no power over undeath here.")
ENDIF


REM maybe add eventful death to skellies/ghosts just so you can point to the death. Or play the skeleton/ghost death sound instead.

REM If player goes via treasure rooms, spawn fighting in background so you hopefully see it when you get there.
IF(PLAYER0,FLAG1 < 1)
	IF_ACTION_POINT(4,PLAYER0)
		SET_FLAG(PLAYER0,FLAG1,1)
	ENDIF
	IF_ACTION_POINT(5,PLAYER0)
		SET_FLAG(PLAYER0,FLAG1,1)
	ENDIF
ENDIF

REM main scuffle wave loop - heroes and skeletons fight forever.
REM vaguely equal forces appear from different spots and clash (2 at a time, 1 from each side)

REM - to do: if hero bases are claimed, then hero waves stop (but LOTL will drop in elsewhere instead). 
REM          If vamps are killed, stop skeleton waves. (PLAYER0,FLAG1 == 3)
REM          If vampires are all converted instead, the skeletons that come in are red. (PLAYER0,FLAG1 == 4)
REM if success, replace those skeletons with red ones (i.e. make a flag so if 1 it's black, if 2 it's red)

IF(PLAYER0,FLAG1 >= 1)
	SET_GAME_RULE(BodyRemainsFor,4000)
	SET_TIMER(PLAYER_GOOD,TIMER0)
	IF(PLAYER_GOOD,TIMER0 >= 300)
		NEXT_COMMAND_REUSABLE
		RANDOMISE_FLAG(PLAYER_GOOD,FLAG1,4)
		NEXT_COMMAND_REUSABLE
		RANDOMISE_FLAG(PLAYER_GOOD,FLAG2,4)
		IF(PLAYER_GOOD,FLAG1 == 1)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(15,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_A,-1,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,2,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG1,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG1 == 2)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(15,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_B,-1,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,6,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG1,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG1 == 3)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(15,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_C,-1,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,2,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG1,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG1 == 4)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(15,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_D,-1,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,6,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG1,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG2 == 1)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(69,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_A,-2,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,3,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG2,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG2 == 2)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(69,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_B,-2,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,7,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG2,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG2 == 3)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(69,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_C,-2,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,3,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG2,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG2 == 4)
			IF(PLAYER6,TOTAL_CREATURES <= 10)
				IF_SLAB_OWNER(69,76,PLAYER_GOOD)
					IF(PLAYER_GOOD,FLAG5 == 0)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER6,FODDER_D,-2,1)
					ENDIF
				ENDIF
			ENDIF
			IF(PLAYER4,TOTAL_CREATURES <= 10)
				IF(PLAYER0,SKELETON < 10)
					IF(PLAYER0,FLAG1 != 3)
						NEXT_COMMAND_REUSABLE
						ADD_PARTY_TO_LEVEL(PLAYER4,SKELLIES,7,1)
					ENDIF
				ENDIF
			ENDIF
			NEXT_COMMAND_REUSABLE
			SET_FLAG(PLAYER_GOOD,FLAG2,0)
		ENDIF
		IF(PLAYER_GOOD,FLAG1 == 0)
			IF(PLAYER_GOOD,FLAG2 == 0)
				NEXT_COMMAND_REUSABLE
				SET_TIMER(PLAYER_GOOD,TIMER0)
			ENDIF
		ENDIF
	ENDIF
ENDIF

REM State 2: Player has seen Vampire fortress (also secretly works to avoid issue where player for some reason goes round the treasure rooms)
IF(PLAYER0,FLAG1 < 2)
	IF_ACTION_POINT(11,PLAYER0)
		SET_FLAG(PLAYER0,FLAG1,2)
	ENDIF
	IF_ACTION_POINT(1,PLAYER0)
		SET_FLAG(PLAYER0,FLAG1,2)
	ENDIF
ENDIF
IF(PLAYER0,FLAG1 == 2)
	QUICK_OBJECTIVE(5,"It seems that in their reckless digging, the Heroes have uncovered something far more powerful than mere gold. Here lies the tomb of three powerful Vampire lords, who are battery-farming the clueless Heroes for food and undead soldiers. They would make powerful allies if you could convert them to your cause.",8)
ENDIF

REM Vampire killing/conversion - if you convert all three, set flag to 4, if you kill any, or let them die before getting them all, set to 3.
IF(PLAYER0,GAME_TURN >= 100)
	IF(ALL_PLAYERS,VAMPIRE_LORD >= 3)
		IF(PLAYER0,VAMPIRE_LORD >=3)
			SET_FLAG(PLAYER0,FLAG1,4)
		ENDIF
	ENDIF
	IF(PLAYER0,FLAG1 < 3)
		IF(PLAYER5,VAMPIRE_LORD == 2)
			IF(PLAYER0,VAMPIRE_LORD < 1)
				SET_FLAG(PLAYER0,FLAG1,3)
			ENDIF
		ENDIF
		IF(PLAYER5,VAMPIRE_LORD == 1)
			IF(PLAYER0,VAMPIRE_LORD < 2)
				SET_FLAG(PLAYER0,FLAG1,3)
			ENDIF
		ENDIF
		IF(PLAYER5,VAMPIRE_LORD == 0)
			IF(PLAYER0,VAMPIRE_LORD < 3)
				SET_FLAG(PLAYER0,FLAG1,3)
			ENDIF
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,FLAG1 == 3)
	SET_OBJECT_CONFIGURATION(MONUMENT,AnimationID,MONUMENT_OFF)
	SET_OBJECT_CONFIGURATION(MONUMENT,LightUnaffected,0)
	SET_OBJECT_CONFIGURATION(MONUMENT,LightIntensity,0)
	SET_OBJECT_CONFIGURATION(MONUMENT,LightRadius,0)
	SET_OBJECT_CONFIGURATION(MONUMENT,LightIsDynamic,0)
	SET_OBJECT_CONFIGURATION(MONUMENT,AmbienceSound,0)
	SET_OBJECT_CONFIGURATION(MONUMENT,AnimationID,MONUMENT_OFF)
	SET_OBJECT_CONFIGURATION(SPECBOX_CUSTOM,AnimationID,INERTSPECIAL)
	SET_OBJECT_CONFIGURATION(SPECBOX_CUSTOM,AnimationSpeed,0)
	SET_OBJECT_CONFIGURATION(SPECBOX_CUSTOM,LightRadius,0)
	SET_OBJECT_CONFIGURATION(SPECBOX_CUSTOM,LightIntensity,0)
	PLAY_MESSAGE(PLAYER0,SOUND,527)
	QUICK_INFORMATION(7,"One of the Vampire lords has been slain, and their hold on the land has slipped. Finally, you can raise your own undead thralls.",LAST_DEATH_EVENT)
ENDIF

REM If you convert the vampires, you gain the central graveyard and can claim their fortress.
IF(PLAYER0,FLAG1 == 4)
	IF(PLAYER0,VAMPIRE < 3)
		IF(PLAYER0,VAMPIRE_LORD < 3)
			SET_FLAG(PLAYER0,FLAG1, 3)
		ENDIF
	ENDIF
	ALLY_PLAYERS(PLAYER4,PLAYER0,1)
	CHANGE_SLAB_OWNER(41,79,PLAYER0)
	CHANGE_SLAB_TYPE(38,76,BRIDGE_FRAME,NONE)
	CHANGE_SLAB_TYPE(38,75,BRIDGE_FRAME,NONE)
	CHANGE_SLAB_TYPE(44,76,BRIDGE_FRAME,NONE)
	CHANGE_SLAB_TYPE(44,75,BRIDGE_FRAME,NONE)
	CHANGE_SLAB_OWNER(38,76,PLAYER5,MATCH)
	CHANGE_SLAB_OWNER(44,76,PLAYER5,MATCH)
	CHANGE_SLAB_OWNER(38,74,PLAYER5,MATCH)
	CHANGE_SLAB_OWNER(44,74,PLAYER5,MATCH)
	CHANGE_SLAB_TYPE(37,69,PRETTY_PATH,NONE)
	CHANGE_SLAB_OWNER(37,69,PLAYER5,MATCH)
	CHANGE_SLAB_TYPE(45,69,PRETTY_PATH,NONE)
	CHANGE_SLAB_OWNER(45,69,PLAYER5,MATCH)
	QUICK_INFORMATION(8,"With the Vampire lords coerced to your side, they have revealed their plans to raise more of their brethren to their side. A cohort of vampire lieutennants sounds like a useful asset, so keep the witless heroes coming and don't tell the Lord there's been a change of ownership.")
	DISPLAY_VARIABLE(PLAYER0,VAMPIRE,3,0)
	REM If player converts enough vampires, hooray.
	IF(PLAYER0,VAMPIRE >= 3)
		PLAY_MESSAGE(PLAYER0,SOUND,159)
		ADD_OBJECT_TO_LEVEL(SPECBOX_TRANSFR,12,0)
		QUICK_INFORMATION(11,"The Vampire lords thank you, and share with you a gift.",12)
		IF(PLAYER2,CAMPAIGN_FLAG3 == 0)
			SET_FLAG(PLAYER2,CAMPAIGN_FLAG3,4)
		ENDIF
		IF(PLAYER2,CAMPAIGN_FLAG3 == 1)
			SET_FLAG(PLAYER2,CAMPAIGN_FLAG3,5)
		ENDIF
		IF(PLAYER2,CAMPAIGN_FLAG3 == 2)
			SET_FLAG(PLAYER2,CAMPAIGN_FLAG3,6)
		ENDIF
		IF(PLAYER2,CAMPAIGN_FLAG3 == 3)
			SET_FLAG(PLAYER2,CAMPAIGN_FLAG3,7)
		ENDIF
		IF(PLAYER_GOOD,FLAG5 == 0)
			IF_SLAB_OWNER(15,76,PLAYER_GOOD)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ELITES,-1,1)
			ENDIF
			IF_SLAB_OWNER(69,76,PLAYER_GOOD)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ELITES,-2,1)
			ENDIF
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ELITES,9,1)
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ELITES,10,1)
			ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LANDLORD,13,1)
			QUICK_OBJECTIVE(9,"The Lord of this land has heard of your acquisition of the Vampire lords and has frantically assembled everyone he can to stop you. I don't think he'll ever learn.")
			SET_FLAG(PLAYER_GOOD,FLAG5,2)
		ENDIF
	ENDIF
ENDIF

REM once you claim the spellbook, you get the skeletons!
REM should just mean now, black skeletons spawn as usual, until they hit the limit BUT also, 10 of them will convert to red (so 10 red and 10 black walking around, if player loses any, more will convert)
IF_AVAILABLE(PLAYER0,POWER_TIME_BOMB >= 1)
	IF(PLAYER0,SKELETON < 10)
		NEXT_COMMAND_REUSABLE
		CHANGE_CREATURE_OWNER(PLAYER4,SKELETON,ANYWHERE,PLAYER0)
	ENDIF
REM	IF(PLAYER0,SKELETON >= 10)
REM		NEXT_COMMAND_REUSABLE
REM		KILL_CREATURE(PLAYER4,SKELETON,LEAST_EXPERIENCED,1)
REM	ENDIF
ENDIF

REM If you then take the two hero forts, the associated Hero gates will stop working.
REM Once you claim one and get close to the other (have claimed floor time next to it) LOTL will spawn in the other and heroes will drop in at AP 10,11.

IF(PLAYER_GOOD,FLAG5 == 0)
	IF_SLAB_OWNER(15,76,PLAYER0)
		HIDE_HERO_GATE(-1,1)
		IF_SLAB_OWNER(68,76,PLAYER0)
			IF_SLAB_OWNER(69,76,PLAYER_GOOD)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LANDLORD,-2,1)
				SET_FLAG(PLAYER_GOOD,FLAG5,1)
			ENDIF
			IF_SLAB_OWNER(69,76,PLAYER0)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LANDLORD,13,1)
				SET_FLAG(PLAYER_GOOD,FLAG5,1)
			ENDIF
		ENDIF
	ENDIF
	IF_SLAB_OWNER(69,76,PLAYER0)
		HIDE_HERO_GATE(-2,1)
		IF_SLAB_OWNER(16,76,PLAYER0)
			IF_SLAB_OWNER(15,76,PLAYER_GOOD)
				ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LANDLORD,-1,1)
				SET_FLAG(PLAYER_GOOD,FLAG5,1)
			ENDIF
		ENDIF
	ENDIF
ENDIF

IF(PLAYER_GOOD,FLAG5 == 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ELITES,9,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ELITES,10,1)
	QUICK_OBJECTIVE(6,"The Lord of this land has noticed his gates shutting and has come to finish you. He has no idea what he's in for, clearly.")
ENDIF

REM trigger LOTL if you hadn't already. Once he's dead, unlock both enemy Keepers.
IF(PLAYER_GOOD,FLAG5 > 0)
	SET_TIMER(PLAYER_GOOD,TIMER5)
	IF(PLAYER_GOOD,TIMER5 > 400)
		IF_CONTROLS(PLAYER_GOOD,KNIGHT == 0)
			RANDOMISE_FLAG(PLAYER_GOOD,FLAG6,2)
			IF(PLAYER1,DUNGEON_DESTROYED == 0)
				IF(PLAYER2,DUNGEON_DESTROYED == 0)
					QUICK_OBJECTIVE(10,"Did you forget about the other Keepers in this realm? I hope not. They're assembling their forces now.")
				ENDIF
			ENDIF
		ENDIF
	ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG6 == 1)
	SET_TIMER(PLAYER_GOOD,TIMER6)
	IF(PLAYER_GOOD,TIMER6 >= 2500)
		USE_POWER_AT_POS(PLAYER_GOOD,49,202,POWER_DESTROY_WALLS,2,1)
		CHANGE_SLAB_TYPE(16,64,PRETTY_PATH,NONE)
		SET_DOOR(UNLOCKED,16,66)
		IF(PLAYER_GOOD,TIMER6 >= 10000)
			USE_POWER_AT_POS(PLAYER_GOOD,208,211,POWER_DESTROY_WALLS,2,1)
			CHANGE_SLAB_TYPE(69,67,PRETTY_PATH,NONE)
			SET_DOOR(UNLOCKED,69,69)
		ENDIF
	ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG6 == 2)
	SET_TIMER(PLAYER_GOOD,TIMER6)
	IF(PLAYER_GOOD,TIMER6 >= 2500)
		USE_POWER_AT_POS(PLAYER_GOOD,208,211,POWER_DESTROY_WALLS,2,1)
		CHANGE_SLAB_TYPE(69,67,PRETTY_PATH,NONE)
		SET_DOOR(UNLOCKED,69,69)
		IF(PLAYER_GOOD,TIMER6 >= 10000)
			USE_POWER_AT_POS(PLAYER_GOOD,49,202,POWER_DESTROY_WALLS,2,1)
			CHANGE_SLAB_TYPE(16,64,PRETTY_PATH,NONE)
			SET_DOOR(UNLOCKED,16,66)
		ENDIF
	ENDIF
ENDIF

REM if player chooses to fight keepers early, they can.
IF_SLAB_TYPE(69,69,PRETTY_PATH)
	CHANGE_SLAB_TYPE(69,67,PRETTY_PATH,NONE)
ENDIF
IF_SLAB_TYPE(16,66,PRETTY_PATH)
	CHANGE_SLAB_TYPE(16,64,PRETTY_PATH,NONE)
ENDIF

IF(PLAYER1,DUNGEON_DESTROYED == 1)
	IF(PLAYER2,DUNGEON_DESTROYED == 1)
		IF(PLAYER_GOOD,FLAG5 > 0)
			IF_CONTROLS(PLAYER_GOOD,KNIGHT == 0)
				WIN_GAME
			ENDIF
		ENDIF
	ENDIF
ENDIF

IF(PLAYER0,GOOD_CREATURES_CONVERTED >= 10)
	QUICK_INFORMATION(12,"The remaining heroes of this realm have made a pact to die instead of joining you. Their loss, I suppose.")
	SET_CREATURE_PROPERTY(ARCHER,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(THIEF,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(BARBARIAN,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(DWARFA,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(FAIRY,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(GIANT,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(KNIGHT,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(MONK,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(SAMURAI,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(THIEF,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(WITCH,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(TUNNELLER,NO_IMPRISONMENT,1)
	SET_CREATURE_PROPERTY(WIZARD,NO_IMPRISONMENT,1)
ENDIF

RUN_AFTER_VICTORY(1)

REM ****************************************************************************

REM    This level introduces the Graveyard. The Heroes at the bottom of the map are guarding something, or keeping it at bay.
REM    There are three powerful Vampires that hold the lifeforce of this realm in a stranglehold. Any Skeletons produced in this map immediately die.
REM    Idk maybe say this in the intro, maybe slow down chicken production too???
REM    Maybe I make them custom blue vampires who can summon skeletons, have fear etc.
REM    first stage is killing heroes and getting past them - clearly they're protecting or holding something back.
REM    Skeletons die, conversions stop eventually (see notes)
REM    If you fight skeletons, they are uncapturable and maybe produce no corpse.
REM    Once you get further you find out what it is - constant heroes vs skeletons maybe, black fortress with three vampires on guard posts maybe.
REM    "These are the ones responsible for the [no lifeforce here]. They would be powerful minions were they to join your cause, but I'm sure they'll need a little persuasion..."
REM    Once you convert all three, all skeletons on the map come under your control, and the two side

REM Implying the Heroes are here to mine a load of gold and then accidentally stumbled on something else.
REM Could try to misdirect and imply the heavy mining is related to this drain.
REM Yeah just kinda imply this land is falling apart - blame the heroes first, or lava or some shit.