summaryrefslogtreecommitdiff
path: root/npc/042-3
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/042-3
downloadserverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz
serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/042-3')
-rw-r--r--npc/042-3/_import.txt3
-rw-r--r--npc/042-3/jail.txt181
2 files changed, 184 insertions, 0 deletions
diff --git a/npc/042-3/_import.txt b/npc/042-3/_import.txt
new file mode 100644
index 0000000..4596bff
--- /dev/null
+++ b/npc/042-3/_import.txt
@@ -0,0 +1,3 @@
+// Map 042-3: Camelot - Jail
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/042-3/jail.txt",
diff --git a/npc/042-3/jail.txt b/npc/042-3/jail.txt
new file mode 100644
index 0000000..d41c33e
--- /dev/null
+++ b/npc/042-3/jail.txt
@@ -0,0 +1,181 @@
+// TMW 2 Script
+// Author:
+// Jesusalva
+// Micksha
+// Description:
+// Controls jails and lockpicks
+// Also creates siege towers to keep prisoners in check :3
+
+042-3,0,0,0 script #KSlimeSpawn NPC_HIDDEN,{
+ end;
+
+OnKillSlime:
+ debugmes "Slime slain";
+ if (!playerattached()) {
+ consolewarn "[ERROR] Player not Attached on Slime Death D:";
+ debugmes "[ERROR] Cannot retrieve coordinates!!";
+ }
+ if (@lockpicks)
+ end;
+ if (rand2(10000) > 1000) {
+ goto OnFirstSlime;
+ }
+ @lockpicks=true;
+ getitem Lockpicks, 1;
+ getitem TreasureKey, 1;
+ end;
+
+OnFirstSlime:
+ // Yes, we just hope it works out of box
+ explode(.@map$, .map$, "@");
+ .@g=atoi(.@map$[1]);
+ if (.@g < 1) {
+ consolewarn "[ERROR] [KAMELOT] Unable to spawn for Kamelot %s", .map$;
+ debugmes "[ERROR] [KAMELOT] Using dummy data (returned: %d)", .@g;
+ .@g=0;
+ }
+
+ // let's not trust .name$
+ .@label$="#KSlimeSpawn::OnKillSlime";
+ if (!playerattached()) {
+ consolewarn "[ERROR] Player not Attached on Slime Spawn D:";
+ debugmes "[ERROR] Cannot retrieve coordinates!!";
+ }
+ getmapxy(.@m$, .@x, .@y, 0);
+ sleep2(1800);
+ .@mob=monster(.@m$, .@x, .@y, strmobinfo(1, CopperSlime), CopperSlime, 1, .@label$);
+ // This should wipe the monster experience value
+ setunitdata(.@mob, UDT_LEVEL, 1);
+ //if ($@GM_OVERRIDE) debugmes "Slime is back: %s [%d]", .@label$, .@mob;
+ end;
+
+
+// Spawn Siege Towers
+OnInstanceInit:
+ .@m$=instance_mapname("042-3");
+ debugmes "Kamelot Init: Original %s Target %s", .map$, .@m$; // Fun fact
+ monster(.@m$, 89, 133, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 67, 114, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 30, 121, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 23, 137, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 29, 103, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 61, 91, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 75, 69, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 34, 72, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 60, 59, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 87, 32, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 47, 32, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ monster(.@m$, 31, 35, strmobinfo(1, SiegeTower), SiegeTower, 1);
+ end;
+}
+
+// Lockpicks functions
+function script KamelotLockpick {
+ // Args: x, y, name. Needs player attached
+ .@x=getarg(0);
+ .@y=getarg(1);
+ .@name$=getarg(2);
+ mes l("A complex lock seems to be posing a threat to you.");
+ next;
+ mes l("But thanks to your %s skills, maybe you can pry this open.", thiefrank());
+ next;
+
+ .@s=LockPicking(5, 3, false);
+
+ // You broke free!
+ if (.@s) {
+ .@label$=instance_npcname(.@name$)+"::OnKamelotSlide";
+ addtimer 10, .@label$;
+ areatimer getmap(), .@x-1, .@y-1, .@x+1, .@y, 10, .@label$;
+ return;
+ }
+ mes l("What's this dark magic, the password has changed!");
+ .@label$=instance_npcname("#KSlimeSpawn")+"::OnKillSlime";
+
+ // Give player a easy way to get lockpicks for this
+ // (Overrides original .@x/.@y variables)
+ if (countitem(Lockpicks) <= 1) {
+ @lockpicks=false;
+ getmapxy(.@m$, .@x, .@y, 0);
+ .@mob=monster(.@m$, .@x, .@y, strmobinfo(1, CopperSlime), CopperSlime, 1, .@label$);
+ // This should wipe the monster experience value
+ setunitdata(.@mob, UDT_LEVEL, 1);
+ }
+ return;
+}
+
+// Cell Doors
+042-3,33,137,0 script Cell Door#K01 NPC_NO_SPRITE,{
+ KamelotLockpick(.x, .y, .name$);
+ close;
+OnInit:
+OnInstanceInit:
+ .distance=2;
+ end;
+
+OnKamelotSlide:
+ .@label$=instance_npcname(.name$)+"::OnKamelotSlide";
+ deltimer .@label$;
+ dispbottom l("You're finally free!");
+ slide .x, .y+1;
+ @lockpicks=true;
+ end;
+}
+
+// Duplication of doors
+042-3,84,129,0 duplicate(Cell Door#K01) Cell Door#K02 NPC_NO_SPRITE
+042-3,41,121,0 duplicate(Cell Door#K01) Cell Door#K03 NPC_NO_SPRITE
+042-3,74,109,0 duplicate(Cell Door#K01) Cell Door#K04 NPC_NO_SPRITE
+042-3,36,98,0 duplicate(Cell Door#K01) Cell Door#K05 NPC_NO_SPRITE
+042-3,57,86,0 duplicate(Cell Door#K01) Cell Door#K06 NPC_NO_SPRITE
+042-3,79,65,0 duplicate(Cell Door#K01) Cell Door#K07 NPC_NO_SPRITE
+042-3,43,69,0 duplicate(Cell Door#K01) Cell Door#K08 NPC_NO_SPRITE
+042-3,24,69,0 duplicate(Cell Door#K01) Cell Door#K09 NPC_NO_SPRITE
+042-3,86,24,0 duplicate(Cell Door#K01) Cell Door#K10 NPC_NO_SPRITE
+042-3,59,51,0 duplicate(Cell Door#K01) Cell Door#K11 NPC_NO_SPRITE
+042-3,38,29,0 duplicate(Cell Door#K01) Cell Door#K12 NPC_NO_SPRITE
+
+
+
+
+// Leave the dungeon
+042-3,62,19,0 script #KDoor0423 NPC_HIDDEN,1,0,{
+ end;
+
+OnTouch:
+ .@g=getcharid(2);
+ warp "042-4@"+.@g, any(59,60), 77;
+ addtimer 1000, .name$+"::OnHey";
+ end;
+
+OnHey:
+ dispbottom l("Oh, here the path seems to split. Which way should we go?");
+ addtimer 3000, .name$+"::OnHey2";
+ end;
+
+OnHey2:
+ dispbottom l("Or should we even split ourselves to check all possible ways?")+" "+col(l("[Caution, this may be dangerous!]"), 1);
+ addtimer 7000, .name$+"::OnHey3";
+ end;
+
+OnHey3:
+ dispbottom l("Also, I don't think we will be able to go back if we pick the wrong way.");
+ addtimer 5000, .name$+"::OnHey4";
+ end;
+
+OnHey4:
+ dispbottom l("If we don't know where to go - Maybe we should go back looking for clues?");
+ end;
+}
+
+// Required exit. This one has no conditions, so it is not really required
+// But I do not trust Instancing System, so better safe than sorry!
+042-3,58,140,0 script #KDoor0423B NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ .@g=getcharid(2);
+ warp "042-2@"+.@g, 41, 23;
+ end;
+}
+