REM ****************************************************************************
REM 			Script for Level Cophora (MAP00208)
REM Campaign:	Standalone level
REM Author:	Skarma
REM Date:	16/06/2019 - 17/07/2020
REM ****************************************************************************

LEVEL_VERSION(1)

SET_GENERATE_SPEED(500)

COMPUTER_PLAYER(PLAYER1,10)

MAX_CREATURES(PLAYER0,18)
MAX_CREATURES(PLAYER1,22)

START_MONEY(PLAYER0,20000)
START_MONEY(PLAYER1,30000)

ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(DRAGON,15)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,4)
ADD_CREATURE_TO_POOL(SORCEROR,20)
ADD_CREATURE_TO_POOL(BILE_DEMON,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(ORC,20)

CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,1)
CREATURE_AVAILABLE(PLAYER1,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,1)

ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,1,0)
ROOM_AVAILABLE(PLAYER1,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER1,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(PLAYER1,TEMPLE,1,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER1,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_LIGHTNING,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,BRACED,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)

REM *** Because this level will be released long after people may be more used to the changes in Keeper FX, this is REM to be the main surprise element at the end of the level.

SET_CREATURE_STRENGTH(HORNY,150)

REM *** TIMER0 is for spawning the first few hero parties that invade the player's dungeon.
REM *** TIMER1 is for spawning the Knight's parties.
REM *** TIMER2 is a failsafe for FLAG2.
REM *** TIMER3 is for spawning the Surprise parties.
REM *** TIMER4 is a failsafe for the above.

SET_TIMER(PLAYER0,TIMER0)

REM *** Flags serve as level objectives/phases.
REM *** FLAG0 = Destroy hero heart.
REM *** FLAG1 = Destroy enemy keeper.
REM *** FLAG2 = Knight and all heroes defeated.
REM *** WIN_GAME = Surprise parties defeated.

SET_FLAG(PLAYER0,FLAG0,0)
SET_FLAG(PLAYER0,FLAG1,0)
SET_FLAG(PLAYER0,FLAG2,0)

CREATE_PARTY(ATTACK1)
    ADD_TO_PARTY(ATTACK1,ARCHER,4,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK1,ARCHER,4,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK1,ARCHER,4,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK1,DWARFA,4,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK1,DWARFA,4,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK1,DWARFA,4,500,ATTACK_ENEMIES,0)

CREATE_PARTY(ATTACK2)
    ADD_TO_PARTY(ATTACK2,BARBARIAN,5,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK2,BARBARIAN,5,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK2,BARBARIAN,5,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK2,WIZARD,5,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK2,WIZARD,5,500,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK2,WIZARD,5,500,ATTACK_ENEMIES,0)

CREATE_PARTY(ATTACK3)
    ADD_TO_PARTY(ATTACK3,SAMURAI,5,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK3,SAMURAI,5,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK3,SAMURAI,5,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK3,WITCH,6,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK3,WITCH,6,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(ATTACK3,WITCH,6,1000,ATTACK_ENEMIES,0)

CREATE_PARTY(HEART1)
    ADD_TO_PARTY(HEART1,SAMURAI,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART1,SAMURAI,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART1,SAMURAI,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART1,WITCH,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART1,WITCH,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART1,WITCH,10,3000,ATTACK_ENEMIES,0)

CREATE_PARTY(HEART2)
    ADD_TO_PARTY(HEART2,GIANT,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART2,GIANT,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART2,GIANT,10,3000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART2,FAIRY,10,5000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART2,FAIRY,10,5000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(HEART2,FAIRY,10,5000,ATTACK_ENEMIES,0)

CREATE_PARTY(LORDA)
    ADD_TO_PARTY(LORDA,KNIGHT,10,10000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDA,SAMURAI,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDA,SAMURAI,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDA,SAMURAI,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDA,GIANT,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDA,GIANT,10,1000,ATTACK_ENEMIES,0)

CREATE_PARTY(LORDB)
    ADD_TO_PARTY(LORDB,ARCHER,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDB,ARCHER,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDB,ARCHER,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDB,BARBARIAN,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDB,BARBARIAN,10,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(LORDB,BARBARIAN,10,1000,ATTACK_ENEMIES,0)

CREATE_PARTY(LORDC)
    ADD_TO_PARTY(LORDC,DWARFA,10,1000,ATTACK_ROOMS,0)
    ADD_TO_PARTY(LORDC,DWARFA,10,1000,ATTACK_ROOMS,0)
    ADD_TO_PARTY(LORDC,DWARFA,10,1000,ATTACK_ROOMS,0)
    ADD_TO_PARTY(LORDC,WITCH,10,1000,ATTACK_ROOMS,0)
    ADD_TO_PARTY(LORDC,WITCH,10,1000,ATTACK_ROOMS,0)
    ADD_TO_PARTY(LORDC,WITCH,10,1000,ATTACK_ROOMS,0)

CREATE_PARTY(SURPRISE)
    ADD_TO_PARTY(SURPRISE,HORNY,10,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SURPRISE,HORNY,10,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SURPRISE,HORNY,10,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SURPRISE,HORNY,10,0,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(SURPRISE,HORNY,10,0,ATTACK_ENEMIES,0)

QUICK_OBJECTIVE(0,"A rival keeper is vying for control of this land. The heroes have their own dungeon here in an effort to keep you divided. Get smashin', keeper.",PLAYER0)

IF(PLAYER0,DARK_MISTRESS >= 1)
    QUICK_INFORMATION(6,"You have found a Mistress. I'm sure she'll be of utmost use to you.",ALL_PLAYERS)
ENDIF

IF(PLAYER0,GHOST >= 1)
    QUICK_INFORMATION(7,"You have freed a lost soul. What a lonely place...",ALL_PLAYERS)
ENDIF

IF(PLAYER0,TORTURE >= 1)
    ROOM_AVAILABLE(PLAYER0,TORTURE,1,1)
ENDIF

IF(PLAYER0,TEMPLE >= 1)
    ROOM_AVAILABLE(PLAYER0,TEMPLE,1,1)
ENDIF

IF(PLAYER0,TIMER0 >= 10800)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ATTACK1,1,DUNGEON_HEART,0,4,500)
ENDIF

IF(PLAYER0,TIMER0 >= 16800)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ATTACK2,2,DUNGEON_HEART,0,5,500)
ENDIF

IF(PLAYER0,TIMER0 >= 20400)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ATTACK3,3,DUNGEON_HEART,0,5,500)
ENDIF

IF_ACTION_POINT(4,PLAYER0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,4,4,8,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,MONK,5,4,8,0)
ENDIF

IF_ACTION_POINT(6,PLAYER0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,6,3,8,0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,SAMURAI,6,2,7,0)
ENDIF

IF_ACTION_POINT(7,PLAYER0)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HEART1,8,1)
    ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HEART2,9,1)
ENDIF

IF_ACTION_POINT(15,PLAYER0)
    ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,THIEF,15,6,10,0)
ENDIF


IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
    SET_FLAG(PLAYER0,FLAG0,1)
    QUICK_OBJECTIVE(1,"The heroes' dungeon lays in ruins. Now, show your enemy the meaning of willful employment.",PLAYER0)
ENDIF

IF(PLAYER1,DUNGEON_DESTROYED == 1)
    SET_FLAG(PLAYER0,FLAG1,1)
    QUICK_OBJECTIVE(2,"You have successfully eliminated your enemy. But something isn't right...",PLAYER0)
    SET_TIMER(PLAYER0,TIMER1)
ENDIF

IF(PLAYER0,TIMER1 >= 3000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,LORDB,11,DUNGEON_HEART,0,9,1000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,LORDC,12,DUNGEON_HEART,0,9,1000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,HEART2,13,DUNGEON_HEART,0,9,1000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,HEART1,14,DUNGEON_HEART,0,9,1000)
ENDIF

IF(PLAYER0,TIMER1 >= 3600)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,LORDA,14,DUNGEON_HEART,0,9,1000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,LORDC,11,DUNGEON_HEART,0,9,1000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,LORDB,12,DUNGEON_HEART,0,9,1000)
    ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,LORDB,13,DUNGEON_HEART,0,9,1000)
	QUICK_OBJECTIVE(3,"It seems the Lord of the Land had planned an assault on your now deceased enemy, but he arrives too late to find the job already done. You'd better deal with him and the rest of his minions before he turns up at your door.",PLAYER0)
        SET_TIMER(PLAYER0,TIMER2)
ENDIF

IF_CONTROLS(PLAYER_GOOD,KNIGHT <= 0)
	IF(PLAYER0,TIMER2 >= 200)
    		SET_FLAG(PLAYER0,FLAG2,1)
	ENDIF
ENDIF

IF(PLAYER_GOOD,TOTAL_CREATURES <= 0)
	IF(PLAYER0,FLAG2 == 1)
		SET_TIMER(PLAYER0,TIMER3)
	ENDIF
ENDIF

IF(PLAYER0,TIMER3 >= 240)
	QUICK_OBJECTIVE(4,"Something else is approaching... Remain vigilant.",PLAYER0)
ENDIF

IF(PLAYER0,TIMER3 >= 4200)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SURPRISE,10,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SURPRISE,16,1)
	SET_TIMER(PLAYER0,TIMER4)
ENDIF

IF(PLAYER0,TIMER4 >= 200)
	IF_CONTROLS(PLAYER_GOOD,HORNY <= 0)
		WIN_GAME
    		QUICK_OBJECTIVE(5,"Excellent. You have proven your strength here tenfold.",PLAYER0)
	ENDIF
ENDIF