REM ****************************************************************************
REM  Multiplayer - KeeperFX
REM ****************************************************************************
REM  Script for: Chain Reaction
REM  Author:  Loobinex
REM  Date:    2025-11-22
REM ****************************************************************************

REM On this map players can directly kill each other, or choose to place units in a special room, which will double the units and have them attack as roaming creatures.
LEVEL_VERSION(1)
SET_GENERATE_SPEED(700)
START_MONEY(ALL_PLAYERS,12500)

COMPUTER_PLAYER(ORANGE,ROAMING)
COMPUTER_PLAYER(PURPLE,ROAMING)
ALLY_PLAYERS(RED,ORANGE,3)
ALLY_PLAYERS(BLUE,PURPLE,3)

SET_GAME_RULE(AlliesShareVision,1)
SET_GAME_RULE(DisplayPortalLimit,1)
SET_GAME_RULE(DungeonHeartHealHealth,40)

REM Dropping summons in the overflowing temple is asking for trouble
SET_HAND_RULE(ALL_PLAYERS,SPIDERLING,RULE1,DENY,ALWAYS)
SET_HAND_RULE(ALL_PLAYERS,BIRD,RULE2,DENY,ALWAYS)

ADD_CREATURE_TO_POOL(FLY,6)
ADD_CREATURE_TO_POOL(DEMONSPAWN,6)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(SPIDER,11)
ADD_CREATURE_TO_POOL(HELL_HOUND,20)
ADD_CREATURE_TO_POOL(TENTACLE,5)
ADD_CREATURE_TO_POOL(ORC,20)
ADD_CREATURE_TO_POOL(MAIDEN,20)
ADD_CREATURE_TO_POOL(DRUID,20)

CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,MAIDEN,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,0)
CREATURE_AVAILABLE(ALL_PLAYERS,DRUID,1,0)

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,GUARD_POST,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,2,0)
ROOM_AVAILABLE(ALL_PLAYERS,SCAVENGER,2,0)

MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_POSSESS,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_FREEZE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_TIME_BOMB,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,0)

TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,SENTRY,1,0)

DOOR_AVAILABLE(ALL_PLAYERS,WOOD,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MIDAS,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,STEEL,1,0)
DOOR_AVAILABLE(ALL_PLAYERS,MAGIC,1,0)

IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
	WIN_GAME
ENDIF
IF(PLAYER1,ALL_DUNGEONS_DESTROYED == 1)
	WIN_GAME
ENDIF

IF(PLAYER0,GAME_TURN > 100)
	QUICK_OBJECTIVE(1,"In six minutes your enemy will be able to send creatures directly into your dungeon. And you into theirs. Prepare.")
ENDIF

REM More entrance means more creatures
IF(PLAYER0,ENTRANCE < 18)
	NEXT_COMMAND_REUSABLE
	MAX_CREATURES(PLAYER0,14)
ENDIF
IF(PLAYER0,ENTRANCE >= 18)
	IF(PLAYER0,ENTRANCE < 27)
		NEXT_COMMAND_REUSABLE
		MAX_CREATURES(PLAYER0,17)
	ENDIF
ENDIF
IF(PLAYER0,ENTRANCE >= 27)
	NEXT_COMMAND_REUSABLE
	MAX_CREATURES(PLAYER0,20)
ENDIF
IF(PLAYER1,ENTRANCE < 18)
	NEXT_COMMAND_REUSABLE
	MAX_CREATURES(PLAYER1,14)
ENDIF
IF(PLAYER1,ENTRANCE >= 18)
	IF(PLAYER1,ENTRANCE < 27)
		NEXT_COMMAND_REUSABLE
		MAX_CREATURES(PLAYER1,17)
	ENDIF
ENDIF
IF(PLAYER1,ENTRANCE >= 27)
	NEXT_COMMAND_REUSABLE
	MAX_CREATURES(PLAYER1,20)
ENDIF

IF(PLAYER0,GAME_TURN > 7400)
	QUICK_OBJECTIVE(2,"Pay attention. Your enemy will soon be able to send creatures directly into your dungeon.")
ENDIF
IF(PLAYER0,GAME_TURN > 8000)
	SET_GENERATE_SPEED(350)
	SET_FLAG(PLAYER2,FLAG1,1)
	QUICK_OBJECTIVE(3,"The magic portal is activated. Creatures dropped into the overflowing temple will attack your opponent with double the numbers.")
ENDIF

REVEAL_MAP_RECT(PLAYER0,136,127,9,9)
REVEAL_MAP_RECT(PLAYER1,58,202,9,9)
IF(PLAYER2,FLAG1 == 0)
	NEXT_COMMAND_REUSABLE
	CONCEAL_MAP_RECT(ALL_PLAYERS,142,16,1,1)
	NEXT_COMMAND_REUSABLE
	CONCEAL_MAP_RECT(ALL_PLAYERS,52,313,1,1)
ENDIF
IF(PLAYER2,FLAG1 > 0)
	REVEAL_MAP_RECT(ALL_PLAYERS,142,16,1,1)
	REVEAL_MAP_RECT(ALL_PLAYERS,52,313,1,1)
ENDIF
