Spoiler
REM Sandbox Level. Kill the Avatar to win
SET_GENERATE_SPEED(400)
MAX_CREATURES(PLAYER0,30)
MAX_CREATURES(PLAYER1,40)
MAX_CREATURES(PLAYER2,40)
START_MONEY(ALL_PLAYERS,15000)
ADD_CREATURE_TO_POOL(BILE_DEMON,50)
ADD_CREATURE_TO_POOL(DRAGON,50)
ADD_CREATURE_TO_POOL(DARK_MISTRESS,50)
ADD_CREATURE_TO_POOL(ORC,50)
ADD_CREATURE_TO_POOL(SORCEROR,35)
ADD_CREATURE_TO_POOL(HELL_HOUND,35)
ADD_CREATURE_TO_POOL(TROLL,35)
ADD_CREATURE_TO_POOL(DEMONSPAWN,20)
ADD_CREATURE_TO_POOL(TENTACLE,20)
ADD_CREATURE_TO_POOL(SPIDER,20)
ADD_CREATURE_TO_POOL(BUG,20)
ADD_CREATURE_TO_POOL(FLY,20)
CREATURE_AVAILABLE(ALL_PLAYERS,TROLL,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,TENTACLE,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DEMONSPAWN,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,FLY,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DARK_MISTRESS,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SORCEROR,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BILE_DEMON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,BUG,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,SPIDER,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,HELL_HOUND,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,DRAGON,1,1)
CREATURE_AVAILABLE(ALL_PLAYERS,ORC,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GUARD_POST,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TREASURE,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,RESEARCH,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,GARDEN,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,LAIR,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,GRAVEYARD,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,PRISON,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TORTURE,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TRAINING,1,1)
ROOM_AVAILABLE(ALL_PLAYERS,BARRACKS,1,0)
ROOM_AVAILABLE(ALL_PLAYERS,TEMPLE,1,0)
ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,0)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_HAND,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_OBEY,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_IMP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SLAP,1,1)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SIGHT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CALL_TO_ARMS,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_HOLD_AUDIENCE,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_SPEED,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_CONCEAL,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_PROTECT,1,0)
MAGIC_AVAILABLE(ALL_PLAYERS,POWER_DESTROY_WALLS,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_LIGHTNING,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_DISEASE,1,0)
MAGIC_AVAILABLE(PLAYER0,POWER_ARMAGEDDON,1,0)
MAGIC_AVAILABLE(PLAYER1,POWER_CHICKEN,1,0)
MAGIC_AVAILABLE(PLAYER2,POWER_LIGHTNING,1,0)
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)
TRAP_AVAILABLE(ALL_PLAYERS,ALARM,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,POISON_GAS,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LAVA,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,BOULDER,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,LIGHTNING,1,0)
TRAP_AVAILABLE(ALL_PLAYERS,WORD_OF_POWER,1,0)
REM Computer Player stuff
COMPUTER_PLAYER(PLAYER1,0)
COMPUTER_PLAYER(PLAYER2,0)
REM Party of 5 - Samurai leading Barbarian, Giant, Fairy, Archer
CREATE_PARTY(ONE)
ADD_TO_PARTY(ONE,BARBARIAN,5,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(ONE,SAMURAI,5,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(ONE,GIANT,5,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(ONE,FAIRY,5,200,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(ONE,ARCHER,5,200,ATTACK_DUNGEON_HEART,0)
REM Party of 6 - Knight leading Samurai, Barbarian, Wizard, Fairy, Priestess
CREATE_PARTY(TWO)
ADD_TO_PARTY(TWO,SAMURAI,7,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TWO,KNIGHT,8,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TWO,BARBARIAN,7,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TWO,FAIRY,8,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TWO,WIZARD,7,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(TWO,WITCH,8,250,ATTACK_DUNGEON_HEART,0)
CREATE_PARTY(FOUR)
ADD_TO_PARTY(FOUR,SAMURAI,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FOUR,KNIGHT,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FOUR,BARBARIAN,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FOUR,FAIRY,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FOUR,WIZARD,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FOUR,WITCH,10,500,ATTACK_DUNGEON_HEART,0)
REM Party of 7 - Knight leading 2 Samurai, 2 Wizards, 2 Fairies
REM Note that at Level 10, everyone except the Knight can Freeze
CREATE_PARTY(THREE)
ADD_TO_PARTY(THREE,SAMURAI,7,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(THREE,KNIGHT,8,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(THREE,SAMURAI,7,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(THREE,FAIRY,8,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(THREE,WIZARD,8,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(THREE,WIZARD,8,250,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(THREE,FAIRY,8,250,ATTACK_DUNGEON_HEART,0)
CREATE_PARTY(FIVE)
ADD_TO_PARTY(FIVE,SAMURAI,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FIVE,KNIGHT,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FIVE,SAMURAI,8,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FIVE,FAIRY,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FIVE,WIZARD,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FIVE,WIZARD,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(FIVE,FAIRY,10,500,ATTACK_DUNGEON_HEART,0)
REM Avatar & Bodyguard. 2 Tiers only.
CREATE_PARTY(AVATARA)
ADD_TO_PARTY(AVATARA,SAMURAI,7,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARA,AVATAR,10,5000,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARA,SAMURAI,7,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARA,KNIGHT,7,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARA,KNIGHT,7,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARA,WIZARD,7,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARA,WIZARD,7,500,ATTACK_DUNGEON_HEART,0)
CREATE_PARTY(AVATARC)
ADD_TO_PARTY(AVATARC,SAMURAI,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARC,AVATAR,10,5000,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARC,SAMURAI,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARC,KNIGHT,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARC,KNIGHT,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARC,WIZARD,10,500,ATTACK_DUNGEON_HEART,0)
ADD_TO_PARTY(AVATARC,WIZARD,10,500,ATTACK_DUNGEON_HEART,0)
REM 11/16 Parties
REM Main Spawn Flag
SET_FLAG(PLAYER0,FLAG0,0)
REM Avatar Spawn Flag
SET_FLAG(PLAYER0,FLAG1,0)
REM Defensive Spawn Flag
SET_FLAG(PLAYER0,FLAG2,0)
SET_FLAG(PLAYER_GOOD,FLAG0,0)
SET_TIMER(PLAYER_GOOD,TIMER0)
DISPLAY_OBJECTIVE(909,PLAYER0)
REM Set the Spawns using the Barracks
REM Flag simply defaults as low and ends up at the highest possible flag.
REM This automatically downgrades the Flag when you reduce the Temple size
REM 0+5 = 5/48 IF used
IF(PLAYER0,BARRACKS < 17)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,1)
ENDIF
IF(PLAYER0,BARRACKS >= 17)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,2)
IF(PLAYER0,BARRACKS >= 25)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,3)
IF(PLAYER0,BARRACKS >= 30)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,4)
IF(PLAYER0,BARRACKS >= 35)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER0,FLAG0,5)
ENDIF
ENDIF
ENDIF
ENDIF
REM Timers to Trigger the Spawns. the Timer is initialised upon the Map starting
REM 3 Timer tiers of 40, 25, 15 corresponding to Temple Tiles 26 30 35
REM the Timer is always re-started at 40 mins
REM 5+8 = 13/48 IF used
IF(PLAYER0,TEMPLE >= 26)
IF(PLAYER0,TEMPLE >= 30)
IF(PLAYER0,TEMPLE >= 35)
IF(PLAYER_GOOD,TIMER0 >= 18000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 30000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,TIMER0 >= 48000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER0)
ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,0)
IF(PLAYER_GOOD,TOTAL_CREATURES < 100)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,2)
ENDIF
ENDIF
REM Spawns by Trigger / Gate
REM Hero Gates
REM 1 - East of Avatar (def) / 2 - West of Avatar (def) / 3 - Main Assault Gate
REM 4 - West of Heart / 5 - East of Heart, nearer to Gems / 6 - Avatar Room
REM Action Points
REM 1 - entrance to HG1 / 2 - entrance to HG2 / 3 - entering Avatar Room
REM 3 - Main Assault Gate. This ALWAYS triggers so long the Spawn is Set
REM 13+8 = 21 IFs used
IF(PLAYER_GOOD,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG0,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-3,1)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-3,1)
ENDIF
REM added an extra 2 IFs inside (not included in above count of 8 IFs)
REM as a Hidden "Bonus", the Main Gate spawns the AvatarC party
REM if you have a Barracks more than 7x7
IF(PLAYER0,FLAG0 == 5)
IF(PLAYER0,BARRACKS < 50)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-3,1)
ENDIF
IF(PLAYER0,BARRACKS >= 50)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARC,-3,1)
ENDIF
ENDIF
IF(PLAYER0,TORTURE >=31)
SET_FLAG(PLAYER_GOOD,FLAG4,1)
IF(PLAYER0,TORTURE >=36)
SET_FLAG(PLAYER_GOOD,FLAG5,1)
ENDIF
ENDIF
ENDIF
REM Gates 4 & 5 - Heart Gates
REM 21+12 = 33 IFs used
IF(PLAYER_GOOD,FLAG4 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG4,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-4,DUNGEON,PLAYER0,5,200)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-4,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-4,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-4,DUNGEON,PLAYER0,10,500)
ENDIF
IF(PLAYER0,FLAG0 == 5)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-4,DUNGEON,PLAYER0,10,500)
ENDIF
ENDIF
IF(PLAYER_GOOD,FLAG5 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG5,0)
IF(PLAYER0,FLAG0 == 1)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,ONE,-5,DUNGEON,PLAYER0,5,200)
ENDIF
IF(PLAYER0,FLAG0 == 2)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-5,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 3)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,THREE,-5,DUNGEON,PLAYER0,8,250)
ENDIF
IF(PLAYER0,FLAG0 == 4)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FOUR,-5,DUNGEON,PLAYER0,10,500)
ENDIF
IF(PLAYER0,FLAG0 == 5)
NEXT_COMMAND_REUSABLE
ADD_TUNNELLER_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-5,DUNGEON,PLAYER0,10,500)
ENDIF
ENDIF
REM 1 & 2, the Defensive Gates. They always spawn together
REM 33 + 3 = 36 IFs used
IF(PLAYER_GOOD,FLAG2 == 1)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,2)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER_GOOD,TIMER1)
IF(PLAYER0,FLAG0 <= 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-1,1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-2,1)
ENDIF
IF(PLAYER0,FLAG0 > 3)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-1,1)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-2,1)
ENDIF
ENDIF
REM Action Points 1 & 2, whichever occurs first, triggers the first "Defence"
REM 36 + 3 = 39 IF Used
IF(PLAYER_GOOD,FLAG2 == 0)
IF_ACTION_POINT(1,PLAYER0)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF
IF_ACTION_POINT(2,PLAYER0)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,1)
ENDIF
ENDIF
REM Action Point 3 triggers the Avatar & Defences
REM 39 + 3 = 42 IF Used
REM unlike most other commands, this occurs ONCE only
IF_ACTION_POINT(3,PLAYER0)
SET_FLAG(PLAYER_GOOD,FLAG1,1)
IF(PLAYER0,FLAG0 <= 3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,TWO,-2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARA,-3,1)
ENDIF
IF(PLAYER0,FLAG0 > 3)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-1,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,FIVE,-2,1)
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,AVATARC,-3,1)
ENDIF
ENDIF
REM If the Avatar is slain after being spawned, you win
REM 42+2 = 44 IFs Used
IF(PLAYER0,FLAG1 == 1)
IF(PLAYER0,AVATAR==0)
WIN_GAME
ENDIF
ENDIF
REM Beyond this are EXTRA things
REM This Timer Resets the "Defensive" Spawns every 10 Minutes.
REM It can easily be Bypassed simply by dropping your Creatures
REM 44+1 = 45 IFs Used
IF(PLAYER_GOOD,TIMER1 >= 12000)
NEXT_COMMAND_REUSABLE
SET_FLAG(PLAYER_GOOD,FLAG2,0)
NEXT_COMMAND_REUSABLE
RESET_ACTION_POINT(1)
NEXT_COMMAND_REUSABLE
RESET_ACTION_POINT(2)
ENDIF
REM Extra 2 IFs added to Main Gate, which may Spawn Avatar Parties.
REM 45+2 = 47 IFs used
REM Extra IF for Temple checking.
REM This is a pre-built Large Temple used for Testing the Timers
IF(PLAYER0, TEMPLE >= 1)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,1)
END