diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/042-3 | |
download | serverdata-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.txt | 3 | ||||
-rw-r--r-- | npc/042-3/jail.txt | 181 |
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; +} + |