REM ****************************************************************************
REM  Campaigns Consolidation Project for KeeperFX strategy game.
REM ****************************************************************************
REM  Script for Level Flowerhat
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)
RUN_AFTER_VICTORY(1)

REM New rooms for the player:
REM   BRIDGE - Researchable
REM   WORKSHOP - When other rooms are built
REM New creatures for the player:
REM   TROLL - Attracted by WORKSHOP
REM New powers for the player:
REM   POWER_CALL_TO_ARMS - Researchable
REM   POWER_HEAL_CREATURE - Researchable
REM New manufacture for the player:
REM   DOOR_WOOD - Manufacture
REM   TRAP_POISON_GAS - Manufacture


REM Once certain action points are triggered, semi-constant waves of heroes to promote striking quickly but also providing gold.
REM Secret trial at the end -  if secret area AP triggered, spawn a party of bugs that once killed will spawn a transfer special where it used to be.


SET_GENERATE_SPEED(400)

START_MONEY(PLAYER0,2000)

MAX_CREATURES(PLAYER0,16)

ADD_CREATURE_TO_POOL(FLY,8)
ADD_CREATURE_TO_POOL(BUG,12)
ADD_CREATURE_TO_POOL(DEMONSPAWN,10)
ADD_CREATURE_TO_POOL(TROLL,10)
ADD_CREATURE_TO_POOL(SORCEROR,5)

SET_CREATURE_MAX_LEVEL(PLAYER0,IMP,4)
SET_CREATURE_MAX_LEVEL(PLAYER0,FLY,4)
SET_CREATURE_MAX_LEVEL(PLAYER0,BUG,4)
SET_CREATURE_MAX_LEVEL(PLAYER0,DEMONSPAWN,4)
SET_CREATURE_MAX_LEVEL(PLAYER0,TROLL,4)
SET_CREATURE_MAX_LEVEL(PLAYER0,SORCEROR,4)
SET_CREATURE_MAX_LEVEL(PLAYER0,SPIDER,4)

CREATURE_AVAILABLE(PLAYER0,BUG,1,0)
CREATURE_AVAILABLE(PLAYER0,FLY,1,0)
CREATURE_AVAILABLE(PLAYER0,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(PLAYER0,SORCEROR,1,0)

ROOM_AVAILABLE(PLAYER0,TREASURE,1,1)
ROOM_AVAILABLE(PLAYER0,LAIR,1,1)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,1)
ROOM_AVAILABLE(PLAYER0,TRAINING,1,1)
ROOM_AVAILABLE(PLAYER0,RESEARCH,1,1)

DOOR_AVAILABLE(PLAYER0,WOOD,1,0)
TRAP_AVAILABLE(PLAYER0,POISON_GAS,1,0)

MAGIC_AVAILABLE(PLAYER0,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_HAND,1,1)
MAGIC_AVAILABLE(PLAYER0,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_IMP,1,1)

CREATE_PARTY(WEAKLINGS)
	ADD_TO_PARTY(WEAKLINGS,ARCHER,3,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WEAKLINGS,DWARFA,3,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(WEAKLINGS,DWARFA,3,100,ATTACK_ENEMIES,0)

CREATE_PARTY(THIEVES)
	ADD_TO_PARTY(THIEVES,THIEF,3,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,3,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(THIEVES,THIEF,3,100,ATTACK_ENEMIES,0)

CREATE_PARTY(BARBS)
	ADD_TO_PARTY(BARBS,BARBARIAN,3,200,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BARBS,BARBARIAN,3,200,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BARBS,DWARFA,3,200,ATTACK_ENEMIES,0)

CREATE_PARTY(HEROMIX)
	ADD_TO_PARTY(HEROMIX,ARCHER,3,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(HEROMIX,THIEF,3,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(HEROMIX,DWARFA,3,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(HEROMIX,BARBARIAN,3,400,ATTACK_ENEMIES,0)

CREATE_PARTY(LANDLORD)
	ADD_TO_PARTY(LANDLORD,KNIGHT,4,4000,ATTACK_ENEMIES,0)

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

IF(PLAYER0,BOX0_ACTIVATED > 0)
	IF(PLAYER0,FLAG7 == 0)
		NEXT_COMMAND_REUSABLE
		QUICK_INFORMATION(25,"The familiar cave may be more of a tight squeeze...",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,17)
		NEXT_COMMAND_REUSABLE
		ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 17, 0)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG7,0)
	ENDIF
ENDIF

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

SET_FLAG(PLAYER2,FLAG0,0)	REM Reached AP 1, 0 on, 1 off
SET_FLAG(PLAYER2,FLAG1,0)	REM Reached AP 5, 0 on, 1 off
SET_FLAG(PLAYER2,FLAG2,0)	REM Reached AP 11, 0 on, 1 off

QUICK_OBJECTIVE(1,"The once plentiful gold in this realm has vanished and we have not heard from the messenger carrying the designs for the Workshop. Use your gold wisely and mount an attack before you run out.",PLAYER0)

REM ********FIND TRAP CACHE - SET CONSTANT WAVES 1*********************************************

IF_ACTION_POINT(10,PLAYER0)
	SET_TIMER(PLAYER0,TIMER0)
	CHANGE_SLAB_TYPE(40,47,PRETTY_PATH)
	QUICK_OBJECTIVE(2,"It seems that the designs for the Workshop were intercepted. The Heroes have access to traps, so tread carefully.",10)
ENDIF



IF(PLAYER0,TIMER0 >= 2000)
	QUICK_INFORMATION(3,"It seems you've also alerted the Heroes in the keep. Expect reinforcements.",ALL_PLAYERS)
	SET_DOOR(UNLOCKED,40,43)
	IF(PLAYER2,FLAG0 == 0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES,1,1)
	ENDIF
	IF(PLAYER2,FLAG1 == 0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES,5,1)
	ENDIF
	NEXT_COMMAND_REUSABLE
	SET_TIMER(PLAYER0,TIMER0)
ENDIF

REM - WHEN APS REACHED, TURN OFF

IF_ACTION_POINT(1,PLAYER0)
	SET_FLAG(PLAYER2,FLAG0,1)
ENDIF

IF_ACTION_POINT(5,PLAYER0)
	SET_FLAG(PLAYER2,FLAG1,1)
ENDIF


REM ********ENTER ROOMS*********************************************

IF(PLAYER_GOOD,FLAG0 == 0)
	IF_ACTION_POINT(3,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES,3,1)
	ENDIF
	IF_ACTION_POINT(7,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THIEVES,7,1)
	ENDIF
	IF_ACTION_POINT(4,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WEAKLINGS,4,1)
	ENDIF
	IF_ACTION_POINT(8,PLAYER0)
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,WEAKLINGS,8,1)
	ENDIF
ENDIF

REM ********GET TO WATER POOLS - SET CONSTANT WAVES 2A AND 2B**********************************

IF_ACTION_POINT(11,PLAYER0)
	SET_TIMER(PLAYER0,TIMER1)
	SET_DOOR(UNLOCKED,24,40)
	SET_DOOR(UNLOCKED,32,32)
	SET_DOOR(UNLOCKED,56,40)
	SET_DOOR(UNLOCKED,48,32)
ENDIF

IF_ACTION_POINT(12,PLAYER0)
	SET_TIMER(PLAYER0,TIMER1)
	SET_DOOR(UNLOCKED,24,40)
	SET_DOOR(UNLOCKED,32,32)
	SET_DOOR(UNLOCKED,56,40)
	SET_DOOR(UNLOCKED,48,32)
ENDIF

IF_ACTION_POINT(9,PLAYER0)
	QUICK_INFORMATION(7,"It seems they've been busy assembling traps of their own. Be prepared for such trickery in the future.",9)
ENDIF

IF(PLAYER0,WORKSHOP > 0)
	CREATURE_AVAILABLE(PLAYER0,TROLL,1,0)
	ROOM_AVAILABLE(PLAYER0,WORKSHOP,1,0)
	ADD_CREATURE_TO_LEVEL(PLAYER0,TROLL,16,1,1,0)
	QUICK_OBJECTIVE(5,"Reclaiming the workshop has attracted a single Troll to your dungeon.",16)
ENDIF

IF(PLAYER0,BRIDGE > 0)
	ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
ENDIF

IF(PLAYER0,TIMER1 >= 3500)
	IF(PLAYER2,FLAG2 == 0)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BARBS,11,1)
		NEXT_COMMAND_REUSABLE
		ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BARBS,12,1)
		NEXT_COMMAND_REUSABLE
		SET_TIMER(PLAYER0,TIMER1)
	ENDIF
ENDIF

IF_ACTION_POINT(6,PLAYER0)
	QUICK_OBJECTIVE(4,"Now you have reached the hero heart, you've drawn their full attention. End this, Keeper.",6)
	SET_FLAG(PLAYER2,FLAG2,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LANDLORD,-1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HEROMIX,-1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HEROMIX,14,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,HEROMIX,15,1)
ENDIF

IF(PLAYER_GOOD,DUNGEON_DESTROYED == 1)
	QUICK_OBJECTIVE(6,"You have crushed their sad excuse at emulating you. Well done, Keeper.",ALL_PLAYERS)
	SET_FLAG(PLAYER_GOOD,FLAG0,1)
	WIN_GAME
ENDIF


IF_ACTION_POINT(13,PLAYER0)
	QUICK_INFORMATION(8,"Your curiousity rewards you. Well done.")
	IF(PLAYER2,CAMPAIGN_FLAG1 == 0)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,1)
	ENDIF
	IF(PLAYER2,CAMPAIGN_FLAG1 == 2)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,3)
	ENDIF
	IF(PLAYER2,CAMPAIGN_FLAG1 == 4)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,5)
	ENDIF
	IF(PLAYER2,CAMPAIGN_FLAG1 == 6)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,7)
	ENDIF
	CHANGE_SLAB_TYPE(40,9,PRETTY_PATH)
	CHANGE_SLAB_TYPE(39,8,WATER)
	CHANGE_SLAB_TYPE(39,9,WATER)
	CHANGE_SLAB_TYPE(39,10,WATER)
	CHANGE_SLAB_TYPE(40,8,WATER)
	CHANGE_SLAB_TYPE(40,10,WATER)
	CHANGE_SLAB_TYPE(41,8,WATER)
	CHANGE_SLAB_TYPE(41,9,WATER)
	CHANGE_SLAB_TYPE(41,10,WATER)
	CHANGE_SLAB_TYPE(38,9,WATER)
	CHANGE_SLAB_TYPE(42,9,WATER)
	CHANGE_SLAB_TYPE(40,11,WATER)
	CHANGE_SLAB_TYPE(40,12,WATER)
	CHANGE_SLAB_OWNER(40,9,PLAYER0)
	ADD_OBJECT_TO_LEVEL(SPECBOX_TRANSFR, 18,0)
	CREATE_EFFECTS_LINE(13,13,20, 24, 80, 29)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
ENDIF



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