REM ****************************************************************************
REM  Campaigns Consolidation Project for KeeperFX strategy game.
REM ****************************************************************************
REM  Script for Level Snuggledell
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   TORTURE - When found on map
REM New creatures for the player:
REM   DARK_MISTRESS - As soon as TORTURE claimed
REM   GHOST - From torturing only
REM New powers for the player:
REM   LIGHTNING - Researchable
REM New manufacture for the player:
REM   TRAP_LIGHTNING - As soon as got WORKSHOR
REM   DOOR_BRACED - As soon as got WORKSHOR

SET_GENERATE_SPEED(400)

REM Computer Player stuff
COMPUTER_PLAYER(PLAYER2,5)

START_MONEY(PLAYER0,2000)
START_MONEY(PLAYER2,14500)

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

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,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)

SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,IMP,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,BUG,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,FLY,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,SPIDER,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,TROLL,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,DEMONSPAWN,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,SORCEROR,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,BILE_DEMON,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,SKELETON,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,GHOST,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,DARK_MISTRESS,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,THIEF,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,ARCHER,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,DWARFA,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,FAIRY,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,BARBARIAN,5)
SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,KNIGHT,5)

ADD_CREATURE_TO_POOL(BUG,30)
ADD_CREATURE_TO_POOL(FLY,30)
ADD_CREATURE_TO_POOL(DEMONSPAWN,30)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,5)
ADD_CREATURE_TO_POOL(SORCEROR,40)
ADD_CREATURE_TO_POOL(TROLL,30)
ADD_CREATURE_TO_POOL(SPIDER,30)
ADD_CREATURE_TO_POOL(BILE_DEMON,6)

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,BRIDGE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(PLAYER2,TORTURE,1,0)

REM	Spells availability
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(PLAYER2,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,1,0)

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

CREATE_PARTY(BACKUP_ALPHA)
	ADD_TO_PARTY(BACKUP_ALPHA,THIEF,4,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_ALPHA,BARBARIAN,4,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_ALPHA,THIEF,4,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_ALPHA,BARBARIAN,4,100,ATTACK_ENEMIES,0)

CREATE_PARTY(BACKUP_BETA)
	ADD_TO_PARTY(BACKUP_BETA,ARCHER,4,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_BETA,DWARFA,4,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_BETA,ARCHER,4,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_BETA,DWARFA,4,100,ATTACK_ENEMIES,0)

CREATE_PARTY(BACKUP_GAMMA)
	ADD_TO_PARTY(BACKUP_GAMMA,FAIRY,4,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_GAMMA,DWARFA,4,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_GAMMA,FAIRY,4,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_GAMMA,DWARFA,4,100,ATTACK_ENEMIES,0)

CREATE_PARTY(BACKUP_DELTA)
	ADD_TO_PARTY(BACKUP_DELTA,BARBARIAN,4,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_DELTA,DWARFA,4,100,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_DELTA,BARBARIAN,5,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(BACKUP_DELTA,DWARFA,4,100,ATTACK_ENEMIES,0)

CREATE_PARTY(LANDLORD)
	ADD_TO_PARTY(LANDLORD,KNIGHT,6,4000,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LANDLORD,ARCHER,5,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LANDLORD,ARCHER,5,400,ATTACK_ENEMIES,0)
	ADD_TO_PARTY(LANDLORD,FAIRY,5,100,ATTACK_ENEMIES,0)	
	ADD_TO_PARTY(LANDLORD,FAIRY,5,100,ATTACK_ENEMIES,0)



rem - prevent prison convert snow-balling -
IF( PLAYER0, SKELETON > 2 )
    SET_GAME_RULE( PrisonSkeletonChance, 80 )
ENDIF
IF( PLAYER0,SKELETON > 4 )
    SET_GAME_RULE( PrisonSkeletonChance, 60 )
ENDIF
IF( PLAYER0,SKELETON > 6 )
    SET_GAME_RULE( PrisonSkeletonChance, 40 )
ENDIF
IF( PLAYER0,SKELETON > 8 )
    SET_GAME_RULE( PrisonSkeletonChance, 20 )
ENDIF

rem - prevent torture convert snow-balling -
IF( PLAYER0, CREATURES_CONVERTED > 2 )
    SET_GAME_RULE( TortureDeathChance, 33 )
ENDIF
IF( PLAYER0, CREATURES_CONVERTED > 5 )
    SET_GAME_RULE( TortureDeathChance, 50 )
ENDIF
IF( PLAYER0,CREATURES_CONVERTED > 8 )
    SET_GAME_RULE( TortureDeathChance, 80 )
ENDIF

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



QUICK_OBJECTIVE(1,"The rival Keeper and the heroes of this land seem to have reached a stalemate, with both sides holing up in their respective bases. Use this as an opportunity to grow your forces and strike out when you can.",PLAYER0)

IF_ACTION_POINT(1,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BACKUP_BETA,1,1)
ENDIF

IF_ACTION_POINT(2,PLAYER0)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BACKUP_GAMMA,2,1)
ENDIF



IF_ACTION_POINT(3,PLAYER0)
	QUICK_OBJECTIVE(2,"This old torture room was far too salacious and the heroes of this land have destroyed it. Your Warlocks will try to study the designs of this room, but they may be a little distracted...",PLAYER0)
ENDIF

IF(PLAYER0,TORTURE > 0)
	ROOM_AVAILABLE(PLAYER0,TORTURE,1,0)
	QUICK_INFORMATION(3,"Now you have this torture chamber back, Dark Mistresses may choose to serve you, but any in this land have hidden away. They may be hiding nearby, so check carefully and you may be able to find them.")
ENDIF

IF_AVAILABLE(PLAYER0,LIGHTNING >= 1)
	IF(PLAYER0,TROLL > 0)
		TRAP_AVAILABLE(PLAYER0,LIGHTNING,1,0)
		QUICK_OBJECTIVE(4,"The heroes of this land also had access to Lightning Traps. Now we have a crate of our own, one of your Trolls thinks he can reverse-engineer it and make some for you.",PLAYER0)
	ENDIF
ENDIF

IF_AVAILABLE(PLAYER0,ARROW >= 1)
	IF(PLAYER0,ARCHER > 0)
		TRAP_AVAILABLE(PLAYER0,ARROW,1,0)
		QUICK_OBJECTIVE(5,"One of the Archers you tortured knows how to make Arrow Traps and will show you how. How kind of him.",PLAYER0)
	ENDIF
ENDIF

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

IF(PLAYER2,DUNGEON_DESTROYED == 1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,LANDLORD,-1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BACKUP_ALPHA,3,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BACKUP_BETA,1,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BACKUP_GAMMA,2,1)
	ADD_PARTY_TO_LEVEL(PLAYER_GOOD,BACKUP_DELTA,4,1)
	QUICK_OBJECTIVE(6,"It seems the heroes are striking when they know you're weakest. Fend them off and finish this.",-1)
ENDIF

IF_ACTION_POINT(5,PLAYER0)
	ADD_CREATURE_TO_LEVEL(PLAYER0,DARK_MISTRESS,5,2,1,500)
	SET_FLAG(PLAYER1,CAMPAIGN_FLAG1,1)
	CREATURE_AVAILABLE(PLAYER0,DARK_MISTRESS,1,0)
	QUICK_INFORMATION(7,"You have found the hidden Mistresses. Their sisters will follow you now they know they will be taken care of. One of them speaks of treasure hidden in a passage to the southeast.")
	CHANGE_SLAB_TYPE(80,55,WATER)
	CONCEAL_MAP_RECT(PLAYER0, 241, 166, 1, 1, 0)
ENDIF

IF_ACTION_POINT(6,PLAYER0)
	PLAY_MESSAGE(PLAYER0,SOUND,159)
	CHANGE_SLAB_TYPE(80,56,PRETTY_PATH)
	CHANGE_SLAB_TYPE(80,57,PRETTY_PATH)
	CHANGE_SLAB_TYPE(80,58,PRETTY_PATH)
	CHANGE_SLAB_TYPE(81,58,PRETTY_PATH)
	CHANGE_SLAB_TYPE(82,58,PRETTY_PATH)
	CHANGE_SLAB_TYPE(82,59,PRETTY_PATH)
	CHANGE_SLAB_TYPE(82,60,PRETTY_PATH)
	ADD_OBJECT_TO_LEVEL(SPECBOX_TRANSFR,6,0)
	IF(PLAYER2,CAMPAIGN_FLAG1 == 0)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,4)
	ENDIF
	IF(PLAYER2,CAMPAIGN_FLAG1 == 1)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,5)
	ENDIF
	IF(PLAYER2,CAMPAIGN_FLAG1 == 2)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,6)
	ENDIF
	IF(PLAYER2,CAMPAIGN_FLAG1 == 3)
		SET_FLAG(PLAYER2,CAMPAIGN_FLAG1,7)
	ENDIF
ENDIF

IF(PLAYER2,DUNGEON_DESTROYED == 1)
	IF_CONTROLS(PLAYER_GOOD,TOTAL_CREATURES <= 0)
		WIN_GAME
	ENDIF
ENDIF

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

IF(PLAYER0,BOX0_ACTIVATED > 0)
	IF(PLAYER0,FLAG7 == 0)
		NEXT_COMMAND_REUSABLE
		QUICK_INFORMATION(25,"Find the cavern that the ladies speak of...",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,7)
		NEXT_COMMAND_REUSABLE
		ADD_OBJECT_TO_LEVEL(SPECBOX_CUSTOM, 7, 0)
		NEXT_COMMAND_REUSABLE
		SET_FLAG(PLAYER0,FLAG7,0)
	ENDIF
ENDIF



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