From 6ce40295dc78d2422c5e318ec99c98ae75a464cc Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 13 Oct 2023 18:07:18 -0300 Subject: The Boss Chamber traps (moved from boss map) --- npc/026-7/boss.txt | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ npc/boss/throne.txt | 31 ----------------------------- npc/config/traps.txt | 4 ++-- 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/npc/026-7/boss.txt b/npc/026-7/boss.txt index 14ed25a2a..4f282695b 100644 --- a/npc/026-7/boss.txt +++ b/npc/026-7/boss.txt @@ -5,6 +5,10 @@ // The Impregnable Fortress Control Files - Boss Chamber - Final Showdown 026-7,39,34,0 script Impregnable#B7F NPC_HIDDEN,{ + function _moveNpc; + end; + +OnInit: end; // Maybe not OnTouch, but OnSit? @@ -15,6 +19,21 @@ OnTouch: dispbottom l("The throne is cursed, only the Monster King may seat on it."); end; +function _moveNpc { + // Try to warp randomly, up to 30 attempts + .@e=0; + .@mx=getmapinfo(MAPINFO_SIZE_X, getarg(0))-20; + .@my=getmapinfo(MAPINFO_SIZE_Y, getarg(0))-20; + do { + if (.@e >= 30) + break; + .npc_x = rand2(20, .@mx); + .npc_y = rand2(20, .@my); + .@e+=1; + } while (!checknpccell(getarg(0), .npc_x, .npc_y, cell_chkpass)); + return; +} // _moveNpc + // Controls the Event OnBegin: end; @@ -50,3 +69,39 @@ OnVictory: } + +// Room Traps, only against players +026-7,0,0,0 script #MKBossTrap01 NPC_TRAP_ONLINE,0,0,{ + end; + +OnTouch: +OnTouchNPC: + WorldHeartTrap(); + sleep(500); // Wait 500ms for animation + setnpcdisplay .name$, NPC_TRAP_ONLINE; + // Move the trap away after it disarms (up to 30 attempts) + +OnInit: + .@e=0; + do { + if (.@e >= 30) + break; + .@x = rand2(21, 60); + .@y = rand2(21, 60); + .@e+=1; + } while (!checknpccell("026-6", .@x, .@y, cell_chkpass)); + movenpc .name$, .@x, .@y; + end; +} + +// Create more traps +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap02 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap03 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap04 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap05 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap06 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap07 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap08 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap09 NPC_TRAP,0,0 +026-7,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap10 NPC_TRAP,0,0 + diff --git a/npc/boss/throne.txt b/npc/boss/throne.txt index 8bf51d0c5..6255b4b31 100644 --- a/npc/boss/throne.txt +++ b/npc/boss/throne.txt @@ -127,36 +127,5 @@ OnVictory: end; } -// Room Traps, only against players -boss,0,0,0 script #MKBossTrap01 NPC_TRAP,0,0,{ - end; - -OnTouch: - SteelTrap(rand2(10, 20)); - end; - -OnTimer10000: - stopnpctimer; - setnpctimer 0; - setnpcdisplay .name$, NPC_TRAP; - //end; - // Move the trap away after it disarms - -OnMinute14: -OnMinute26: -OnMinute40: -OnMinute54: -OnInit: - .@x=rand2(20,70); - .@y=rand2(20,70); - movenpc .name$, .@x, .@y; - end; -} - -// Create more traps. (They can be on walls) -boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap02 NPC_TRAP,0,0 -boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap03 NPC_TRAP,0,0 -boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap04 NPC_TRAP,0,0 -boss,0,0,0 duplicate(#MKBossTrap01) #MKBossTrap05 NPC_TRAP,0,0 diff --git a/npc/config/traps.txt b/npc/config/traps.txt index e12196c52..1bb9d35e7 100644 --- a/npc/config/traps.txt +++ b/npc/config/traps.txt @@ -87,14 +87,14 @@ function script WorldHeartTrap { .@n$=getarg(2, strnpcinfo(0)); // It cannot be disarmed, but unhide it anyway - if (getnpctimer(0) == 0) + if (getnpctimer(0) == 0 && getnpcclass() == NPC_TRAP) { initnpctimer; setnpcdisplay .@n$, NPC_TRAP_ONLINE; + setnpctimer 9000; } // Fire!! - setnpctimer 9000; setnpcdisplay .@n$, NPC_TRAP_TRIGGERED; // Unlike regular traps, the damage is centered on players -- cgit v1.2.3-70-g09d2