REM ********************************************
REM *                                          *
REM *               ImpWars Remake             *
REM *                                          *
REM ********************************************
REM Level ImpWars Remake 1.0
REM Based on ImpWars v1.7 for DK2, original level designed by The Evil One
REM (D'aprs ImpWars v1.7 pour DK2, niveau original conu par The Evil One)

REM 5.2.3 ******* Basic settings *******

SET_GENERATE_SPEED(500)
COMPUTER_PLAYER(PLAYER1,10)
START_MONEY(ALL_PLAYERS,20000)
MAX_CREATURES(PLAYER0,20)
MAX_CREATURES(PLAYER1,20)

REM ALLY_PLAYERS(PLAYER3, PLAYER2)

REM 5.2.4 ********** Creatures, rooms, spells and items **********

ADD_CREATURE_TO_POOL(FLY,10)
ADD_CREATURE_TO_POOL(BUG,10)
ADD_CREATURE_TO_POOL(SPIDER,10)
ADD_CREATURE_TO_POOL(DEMONSPAWN,10)
ADD_CREATURE_TO_POOL(SORCEROR,40)
ADD_CREATURE_TO_POOL(BILE_DEMON,40)
ADD_CREATURE_TO_POOL(DRAGON,40)
ADD_CREATURE_TO_POOL(TROLL,20)
ADD_CREATURE_TO_POOL(ORC,40)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,40)
REM ADD_CREATURE_TO_POOL(TENTACLE,5)
REM ADD_CREATURE_TO_POOL(HORNY,1)
REM ADD_CREATURE_TO_POOL(SKELETON,0)
REM ADD_CREATURE_TO_POOL(HELL_HOUND,5)
REM ADD_CREATURE_TO_POOL(GHOST,0)
REM ADD_CREATURE_TO_POOL(VAMPIRE,0)

CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,1)
REM CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,1)
REM CREATURE_AVAILABLE(ALL_PLAYERS,HORNY,1,1)
REM CREATURE_AVAILABLE(ALL_PLAYERS,SKELETON,1,1)
REM CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,1)
REM CREATURE_AVAILABLE(ALL_PLAYERS,GHOST,1,1)
REM CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,1)

ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
REM ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
REM ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,BRIDGE,1,0)

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(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_CAVE_IN,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HEAL_CREATURE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DISEASE,1,0)
REM MAGIC_AVAILABLE(ALL_PLAYERS,POWER_LIGHTNING,1,1)
REM MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CHICKEN,1,1)
REM MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,1)
REM MAGIC_AVAILABLE(ALL_PLAYERS,POWER_ARMAGEDDON,1,1)

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

REM 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,LAVA,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)

REM 5.2.5.1 - SET_CREATURE_MAX_LEVEL(ALL_PLAYERS,THIEF,10)
REM 5.2.5.2 - SET_CREATURE_STRENGTH(THIEF,0)
REM 5.2.5.3 - SET_CREATURE_HEALTH(THIEF,0)
REM 5.2.5.4 - SET_CREATURE_ARMOUR(THIEF,0)
REM 5.2.5.5 - SET_CREATURE_FEAR(THIEF,0)

REM 5.2.6.2 - RESEARCH(ALL_PLAYERS,ROOM,POWER_IMP,1000)

REM ********** Party's **********
REM Note: Creature used: 2 archers, 2 wizards

CREATE_PARTY(UN)
    ADD_TO_PARTY(UN,BARBARIAN,5,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(UN,FAIRY,5,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(UN,WITCH,5,1000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(UN,WIZARD,5,2000,ATTACK_ENEMIES,0)
    ADD_TO_PARTY(UN,GIANT,5,2000,DEFEND_PARTY,0)
    ADD_TO_PARTY(UN,KNIGHT,5,2000,ATTACK_ENEMIES,0)

CREATE_PARTY(DEUX)
    ADD_TO_PARTY(DEUX,BARBARIAN,5,1000,ATTACK_ENEMIES,0)


REM ********** Action points **********

REM Sequence initialization of sending the hero on the doors west and east.
REM The action points have been used, thus furnishing a zero.

SET_TIMER(PLAYER_GOOD,TIMER1)

IF(PLAYER_GOOD,TIMER1 >= 9000)
    REM QUICK_INFORMATION(2,"Debug: Starting arrival cycle of heroes.")
    SET_FLAG(PLAYER_GOOD,FLAG1,1)
    SET_FLAG(PLAYER_GOOD,FLAG2,1)
    RESET_ACTION_POINT(5)
    RESET_ACTION_POINT(6)
ENDIF

IF(PLAYER_GOOD,FLAG1 == 1)
    IF_ACTION_POINT(5,ALL_PLAYERS)
        REM NEXT_COMMAND_REUSABLE
        REM QUICK_INFORMATION(3,"AP 5 active")
        NEXT_COMMAND_REUSABLE
        ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,UN,7,APPROPIATE_DUNGEON,0,5,800)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD,FLAG1,0)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER_GOOD,TIMER2)
    ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER2 >= 1000)
    NEXT_COMMAND_REUSABLE
    RESET_ACTION_POINT(5)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER_GOOD,FLAG1,1)
ENDIF

REM ***

IF(PLAYER_GOOD,FLAG2 == 1)
    IF_ACTION_POINT(6,ALL_PLAYERS)
        REM NEXT_COMMAND_REUSABLE
        REM QUICK_INFORMATION(4,"AP 6 active")
        NEXT_COMMAND_REUSABLE
        ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,UN,8,APPROPIATE_DUNGEON,0,5,800)
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD,FLAG2,0)
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER_GOOD,TIMER2)
    ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER2 >= 1000)
    NEXT_COMMAND_REUSABLE
    RESET_ACTION_POINT(6)
    NEXT_COMMAND_REUSABLE
    SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF


REM **********  Replacement of creatures custody loop  **********
REM Please note that ALL heros must be dead for this function to work
IF(PLAYER_GOOD,TOTAL_CREATURES < 1)
    IF(PLAYER_GOOD,FLAG0 == 0)
        REM NEXT_COMMAND_REUSABLE
        REM QUICK_INFORMATION(4,"Debug: Guards are dead.")
        
        NEXT_COMMAND_REUSABLE
        SET_TIMER(PLAYER_GOOD,TIMER0)
        
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD,FLAG0,1)
        REM Use SET_FLAG to allow the fall of archers and wizards to the next step
    ENDIF
ENDIF

IF(PLAYER_GOOD,TIMER0 >= 1000)
    IF(PLAYER_GOOD,FLAG0 == 1)
        REM NEXT_COMMAND_REUSABLE
        REM QUICK_INFORMATION(5,"Debug: Renewal guards dead.")
        
        NEXT_COMMAND_REUSABLE
        ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,1,1,3,1000)
        
        NEXT_COMMAND_REUSABLE
        ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,2,1,3,1000)
        
        NEXT_COMMAND_REUSABLE
        ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,WIZARD,3,1,3,1000)
        
        NEXT_COMMAND_REUSABLE
        ADD_CREATURE_TO_LEVEL(PLAYER_GOOD,ARCHER,4,1,3,1000)
        
        NEXT_COMMAND_REUSABLE
        SET_FLAG(PLAYER_GOOD,FLAG0,0)
        REM This SET_FLAG serves to avoid a fall of infinite archers and wizards in this stage
    ENDIF
ENDIF

REM ********** settings **********

IF(PLAYER0,ALL_DUNGEONS_DESTROYED == 1)
    WIN_GAME
ENDIF

IF(PLAYER1,ALL_DUNGEONS_DESTROYED == 1)
    WIN_GAME
ENDIF
