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/021-1 | |
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/021-1')
-rw-r--r-- | npc/021-1/_import.txt | 6 | ||||
-rw-r--r-- | npc/021-1/_mobs.txt | 5 | ||||
-rw-r--r-- | npc/021-1/_warps.txt | 243 | ||||
-rw-r--r-- | npc/021-1/logic.txt | 142 | ||||
-rw-r--r-- | npc/021-1/yeti.txt | 242 |
5 files changed, 638 insertions, 0 deletions
diff --git a/npc/021-1/_import.txt b/npc/021-1/_import.txt new file mode 100644 index 0000000..c5b4859 --- /dev/null +++ b/npc/021-1/_import.txt @@ -0,0 +1,6 @@ +// Map 021-1: Ice Labyrinth +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/021-1/_mobs.txt", +"npc/021-1/_warps.txt", +"npc/021-1/logic.txt", +"npc/021-1/yeti.txt", diff --git a/npc/021-1/_mobs.txt b/npc/021-1/_mobs.txt new file mode 100644 index 0000000..74d1e8f --- /dev/null +++ b/npc/021-1/_mobs.txt @@ -0,0 +1,5 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 021-1: Ice Labyrinth mobs +021-1,162,100,144,80 monster White Slime 1094,75,100000,30000 +021-1,160,174,127,112 monster Blue Slime 1087,90,100000,30000 +021-1,161,230,147,74 monster Moggun 1070,62,100000,30000 diff --git a/npc/021-1/_warps.txt b/npc/021-1/_warps.txt new file mode 100644 index 0000000..36fc0c3 --- /dev/null +++ b/npc/021-1/_warps.txt @@ -0,0 +1,243 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 021-1: Ice Labyrinth warps +021-1,103,40,0 script #021-1_103_40 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 56,49; end; +} +021-1,241,280,0 script #021-1_241_280 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 266,284; end; +} +021-1,183,282,0 script #021-1_183_282 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 158,282; end; +} +021-1,159,282,0 script #021-1_159_282 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 184,282; end; +} +021-1,212,300,0 warp #021-1_212_300 0,0,019-2,76,25 +021-1,128,266,0 script #021-1_128_266 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 115,266; end; +} +021-1,116,266,0 script #021-1_116_266 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 129,266; end; +} +021-1,80,268,0 script #021-1_80_268 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 55,268; end; +} +021-1,56,268,0 script #021-1_56_268 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 81,268; end; +} +021-1,109,255,0 script #021-1_109_255 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 106,231; end; +} +021-1,106,232,0 script #021-1_106_232 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 109,256; end; +} +021-1,103,199,0 script #021-1_103_199 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 92,174; end; +} +021-1,92,175,0 script #021-1_92_175 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 103,200; end; +} +021-1,148,150,0 script #021-1_148_150 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 128,134; end; +} +021-1,128,135,0 script #021-1_128_135 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 148,151; end; +} +021-1,146,172,0 script #021-1_146_172 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 135,197; end; +} +021-1,135,196,0 script #021-1_135_196 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 146,171; end; +} +021-1,36,249,0 script #021-1_36_249 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 35,225; end; +} +021-1,35,226,0 script #021-1_35_226 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 36,250; end; +} +021-1,36,200,0 script #021-1_36_200 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 26,177; end; +} +021-1,26,178,0 script #021-1_26_178 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 36,201; end; +} +021-1,24,157,0 script #021-1_24_157 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 31,143; end; +} +021-1,31,144,0 script #021-1_31_144 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 24,158; end; +} +021-1,91,125,0 script #021-1_91_125 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 115,76; end; +} +021-1,115,77,0 script #021-1_115_77 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 91,126; end; +} +021-1,57,49,0 script #021-1_57_49 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 104,40; end; +} +021-1,265,284,0 script #021-1_265_284 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 240,280; end; +} +021-1,283,271,0 script #021-1_283_271 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 269,244; end; +} +021-1,269,245,0 script #021-1_269_245 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 283,272; end; +} +021-1,286,190,0 script #021-1_286_190 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 289,163; end; +} +021-1,289,164,0 script #021-1_289_164 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 286,191; end; +} +021-1,292,123,0 script #021-1_292_123 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 296,96; end; +} +021-1,296,97,0 script #021-1_296_97 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 292,124; end; +} +021-1,275,73,0 script #021-1_275_73 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 283,47; end; +} +021-1,283,48,0 script #021-1_283_48 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 275,74; end; +} +021-1,197,263,0 script #021-1_197_263 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 187,227; end; +} +021-1,187,228,0 script #021-1_187_228 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 197,264; end; +} +021-1,218,265,0 script #021-1_218_265 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 227,241; end; +} +021-1,227,242,0 script #021-1_227_242 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 218,266; end; +} +021-1,212,193,0 script #021-1_212_193 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 207,167; end; +} +021-1,207,168,0 script #021-1_207_168 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 212,194; end; +} +021-1,236,211,0 script #021-1_236_211 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 235,166; end; +} +021-1,235,167,0 script #021-1_235_167 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 236,212; end; +} +021-1,195,122,0 script #021-1_195_122 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 208,91; end; +} +021-1,208,92,0 script #021-1_208_92 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 195,123; end; +} +021-1,228,121,0 script #021-1_228_121 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 232,92; end; +} +021-1,232,93,0 script #021-1_232_93 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 228,122; end; +} +021-1,192,70,0 script #021-1_192_70 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 200,49; end; +} +021-1,200,50,0 script #021-1_200_50 NPC_HIDDEN,0,0,{ + end; +OnTouch: + slide 192,71; end; +} diff --git a/npc/021-1/logic.txt b/npc/021-1/logic.txt new file mode 100644 index 0000000..47bfdf8 --- /dev/null +++ b/npc/021-1/logic.txt @@ -0,0 +1,142 @@ +// TMW2 scripts. +// Authors: +// Jesusalva +// Description: +// Cave logic. Controls also switchs and false warps. See soren/main for more info. + +// Logic +function script CindySwitch_Check_211 { + .@st1=getvariableofnpc(.lifetime, "#CindySwitch_01")-gettimetick(2); + .@st2=getvariableofnpc(.lifetime, "#CindySwitch_02")-gettimetick(2); + .@st3=getvariableofnpc(.lifetime, "#CindySwitch_03")-gettimetick(2); + .@st4=getvariableofnpc(.lifetime, "#CindySwitch_04")-gettimetick(2); + .@st5=getvariableofnpc(.lifetime, "#CindySwitch_05")-gettimetick(2); + .@i=0; + if (.@st1 > 0) .@i++; + if (.@st2 > 0) .@i++; + if (.@st3 > 0) .@i++; + if (.@st4 > 0) .@i++; + if (.@st5 > 0) .@i++; + return .@i; +} + +// Passages +021-1,155,196,0 script #0211Logic NPC_NO_SPRITE,0,0,{ + end; +OnTouch: + // Sanitize some stuff + if ($@CINDY_STATE < gettimetick(2) && $@CINDY_STATE > 1500000000) + $@CINDY_STATE=0; + // Main logic + .@q=getq(NivalisQuest_Cindy); + if (.@q < 3) end; + if ($@CINDY_STATE > gettimetick(2)) goto L_Safe; + if ($@CINDY_STATE % 2 == 1) goto L_Blocked; + if (CindySwitch_Check_211() == 5) { + .@pos=rand(0,8); + if (.@q == 3) { + setq NivalisQuest_Cindy, 4; + warp "021-1", .xp[.@pos], .yp[.@pos]; + } else { + warp "021-2", 80, 102; + } + } else { + switch (CindySwitch_Check_211()) { + case 0: + case 1: + end; + case 2: + case 3: + dispbottom l("A few switches aren't triggered yet."); break; + case 4: + case 5: + dispbottom l("A single switch is not online - Cannot pass without all of them on."); break; + } + } + end; + +L_Blocked: + dispbottom l("This place is reeking blood. We better come again later."); + end; + +L_Safe: + dispbottom l("There's no reason to enter these caves now."); + end; + +OnInit: + setarray .xp, 25, 43, 97, 142, 274, 52, 36, 52, 120; + setarray .yp, 300, 300, 300, 300, 299, 176, 79, 77, 73; + end; +} + +021-1,136,29,0 script #FrostiaGateway NPC_NO_SPRITE,0,0,{ + end; +OnTouch: + if (!$NIVALIS_LIBDATE) { + npctalkonce l("Brr! It's extremely cold! I cannot go there!"); + end; + } else if (BaseLevel < 40) { + mesc l("You're about to enter a dangerous area. Are you sure?"); + if (askyesno() == ASK_NO) + end; + } + warp "022-1", 69, 111; + end; + +} + +// Switches +021-1,282,34,0 script #CindySwitch_01 NPC_SWITCH_OFFLINE,{ + .@q=getq(NivalisQuest_Cindy); + if (.@q < 3) { + mesn strcharinfo(0); + mesq l("This is a strange switch..."); + close; + } + if (.lifetime-gettimetick(2) <= 0) { + mesc l("Pull the switch?"); + select + l("Pull it"), + l("Leave it"); + if (@menu == 1) { + getexp rand(55, 110), rand(5, 11); + .lifetime=gettimetick(2)+rand(110, 150)+180; // Something between 1m50s and 2m30s + 3 minutes because the maze is huge + specialeffect(FX_SUCCESS); + setnpcdisplay .name$, NPC_SWITCH_ONLINE; + initnpctimer; + .@r=rand(0,100); + getmapxy(.@m$, .@x, .@y,0); + if (.@r < 80) + monster .@m$, .@x, .@y, "Yeti", Yeti, 1; + else if (.@r > 99) + makeitem(Candy, 1, .@m$, .@x, .@y); + npctalk l("Automatic disarm in: @@", FuzzyTime(.lifetime)); + closedialog; + } + close; + } + npctalk l("Automatic disarm in: @@", FuzzyTime(.lifetime)); + end; + +OnTimer1000: + if (.lifetime-gettimetick(2) <= 0) { + setnpcdisplay .name$, NPC_SWITCH_OFFLINE; + stopnpctimer; + } else { + initnpctimer; + } + end; + +OnInit: + .sex = G_OTHER; + .distance = 3; + .lifetime=0; // When will this switch turn off automatically + end; + +} + +021-1,231,36,0 duplicate(#CindySwitch_01) #CindySwitch_02 NPC_SWITCH_OFFLINE +021-1,34,29,0 duplicate(#CindySwitch_01) #CindySwitch_03 NPC_SWITCH_OFFLINE +021-1,25,297,0 duplicate(#CindySwitch_01) #CindySwitch_04 NPC_SWITCH_OFFLINE +021-1,30,168,0 duplicate(#CindySwitch_01) #CindySwitch_05 NPC_SWITCH_OFFLINE + diff --git a/npc/021-1/yeti.txt b/npc/021-1/yeti.txt new file mode 100644 index 0000000..7721530 --- /dev/null +++ b/npc/021-1/yeti.txt @@ -0,0 +1,242 @@ +// TMW2 script. +// Authors: +// Jesusalva +// Description: +// Controls the Cindy Gateway quest node. +// Also controls Watch Spot Yetis. + +021-1,246,206,0 script Yeti#0211Cindy NPC_YETI,{ + // Is this the right Yeti? + .@n=getq(NivalisQuest_Well); + + if (.@n < 2) + goto L_NoQuest; + + CINDY_PLAYER_STRUCK=false; + // Alright, now we need to cycle Cindy quest to decide if this NPC will have + // a special behavior or not. + .@q=getq(NivalisQuest_Cindy); + + if (.@q == 1) goto L_Assigned; // Quest Assigned + if (.@q == 2) goto L_Report; // Quest (Sub) Accepted + if (.@q <= 5) goto L_Instructions; // Quest (Sub) Completed + if (.@q >= 6) goto L_Complete; // Quest completed at least once. + +L_Thanks: + mesn; + mesq l("Hey, thanks for saving me. You know, from the well."); + next; + mesn strcharinfo(0); + mesq l("You're wel-- Wait, it was you who was trapped on the well near Miler's house?!"); + next; + mesn; + mesq l("Yes, exactly. Thanks for the rescue. I must guard this area from the caves, if you need, just call me."); + close; + +L_Assigned: + mesn; + mesq l("Hello my friend."); + next; + select + l("Hi."), + l("Hm, do you perhaps know where to find Cindy and could help me?"), + l("Die, your evil Yeti!"); + mes ""; + switch (@menu) { + case 1: goto L_Thanks; + case 2: + mesn; + mesq l("Hm, would \"Cindy\" be a small, little girl, kidnapped by some sturdy-looking rogue Yetis?"); + next; + mesn strcharinfo(0); + mesq l("Probably."); + next; + mesn; + mesq l("Well, yes, I've saw them heading off to the Yeti King room. Lately, many Yetis have been uprising against your majesty."); + next; + mesn; + mesq l("Unfortunately, @@s are not welcome on the Yeti Domains. You're no exception.", get_race()); + next; + mesn strcharinfo(0); + select + l("Alright, good bye."), + l("Can't I do anything, though?"), + l("Tell me how or I'll kill you!"); + mes ""; + if (@menu == 3) { + mesn; + mesq l("Now, that's unfortunate. I don't think you can hit me from where you are."); + next; + mesn; + mesq l("Besides, I know these caves like the back of my hand. You would have a hard time tracking me down."); + next; + mesn; + mesq l("In fact, you would get lost and killed. If I were you, I would avoid the Death Penalty. It's high, ya know?"); + } else if (@menu == 2) { + mesn; + mesq l("Well, the Yeti King has went away to the cliffs north of this one. He'll get back here very hungry."); + next; + mesn; + mesq l("I am his right-hand Yeti, so I could grant you passage to his Throne Room to slay the rogue Yetis..."); + next; + mesn; + mesq l("...But saving me won't be enough, so build trust by the kind gift of @@ @@. I'll be waiting.", 50, getitemlink(MoubooSteak)); // A normal Steak could do, but... + setq NivalisQuest_Cindy, 2; + } + close; + case 3: + mesn; + mesq l("That's rude. I never did anything to you."); + next; + mesn; + mesq l("Please get moving, @@. I do not mean any harm to you.", get_race()); + close; + } + close; + +L_Report: + mesn; + mesq l("Did you brought us a kind gift of good will, on the worth of %d %s, to offer to our King?", 50, getitemlink(MoubooSteak)); + next; + select + rif(countitem(MoubooSteak) >= 50, l("Yes, here they are.")), // Demure was here + l("Not yet."); + mes ""; + if (@menu == 2) { + mesn; + mesq l("Then please bring me this, so I can help you back."); + close; + } + delitem MoubooSteak, 50; + getexp 120000, 0; // roughly 30% from needed EXP. This quest IS boring. + setq NivalisQuest_Cindy, 3; + mesn; + mesq l("Great. I hereby task you to kill the rogue Yetis on the Yeti King Throne Room. Of course, you won't be able to leave until all of them are dead."); + next; + mesn; + mesq l("Getting there is tricky, so listen carefully to the instructions:"); + next; +L_Instructions: + mesn l("ROGUE YETI SLAYING REQUEST"); + mesc l("Mission: Kill all rogue Yetis on the Throne Room. You won't be able to leave until all of them are dead."); + next; + mesc l("Directions: "); + mesc l("You must flip all 5 switches on this cave, and then walk accross the cave blocked with an etheral crystal."); + mesc l("First timers will be lead to somewhere random on this cave to keep intruders out. Just walk there again while all switches are still active."); + mesc l("This random cave-warping only happens once, too."); + mesc l("The Throne Room is the last room. You can reactive any switch which turns itself off."); + next; + mesc l("Notes: "); + mesc l("To unlock the cell on the middle of the throne room, you need to flip all 5 switches there."); + mesc l("You need a @@ to flip the switches on the Throne Room, don't forget to bring at least five.", getitemlink(TreasureKey)); + mesc l("EVERY switch on EVERY cave will unflip itself after about 2 minutes. So don't waste your time."), 1; + mesc l("Keep in mind that %s are weak, baby Yetis, so kill them as well!" % getmonsterlink(Moggun)); + next; + mesn; + mesq l("Good luck. %%1"); + close; + +L_Complete: + //mesc l("ToDo"), 1; + mesn; + mesq l("Hello my friend. Thanks for slaying the rogue Yetis."); + mesc l("Do you want to read again the instructions?"); + next; + if (askyesno() == ASK_YES) { + goto L_Instructions; + } + close; + +// The other NPC +L_NoQuest: + if (TUTORIAL) + dispbottom l("I might want to ask an Yeti specialist about this. Maybe Celestia?"); + dispbottom l("Who's Mercury? Maybe I'm missing something? Where could he have went?"); + CINDY_PLAYER_STRUCK=true; + @yetiagro=@yetiagro+1; + if (@yetiagro > 5) goto L_Hit; + if (@yetiagro > 3) goto L_Warning; + if (@yetiagro > 1) goto L_Disrupt; + goto L_Walking; + +L_Walking: + mesn; + mesq l("Grr, where's Mercury... He was supposed to keep watch over this spot... It was meant to be my free time!"); + next; + mesn; + mesq l("And you, @@... You better get walking. Soon.", get_race()); + if (TUTORIAL) + mesc l("WARNING: Angela Quest cannot be finished without finishing Mercury sidequest first."), 1; + if (!.@n) { + mesc l("(...This probably could have been a great hint... if I knew who Mercury in first place %%L)"); + mesc l("I suggest we ignore the hint and ask %s about it instead.", b("Celestia")); + } + close; + +L_Disrupt: + npctalk3 l("Grrr... Why are @@ on this cave?! Where did Mercury went after all?!", get_race()); + end; + +L_Warning: + npctalk3 l("Stupid @@, get out of this cave before I lose my patience! Mercury... Show up already!", get_race()); + end; + +L_Hit: + npctalk3 l("DIE, SCUM!"); + @yetiagro=0; + percentheal -90, -100; + close; + +OnInit: + .sex=G_OTHER; + .distance=20; + end; +} + + + + + + +/////////////////////////////////////////////////////// Random Lookout Yetis +021-1,144,203,0 script Yeti#0211Guard NPC_YETI,{ + dispbottom l("I better don't bother this Yeti, before it kills me."); + @yetiagro=@yetiagro+1; + if (@yetiagro > 5) goto L_Hit; + if (@yetiagro > 3) goto L_Warning; + if (@yetiagro > 1) goto L_Disrupt; + goto L_Walking; + +L_Walking: + mesn; + mesq l("You, @@... You better get walking. Soon.", get_race()); + close; + +L_Disrupt: + mesn; + mesq l("Grrr... Why are @@ on this cave?! Begone, before I lose my patience!", get_race()); + close; + +L_Warning: + mesn; + mesq l("Stupid @@, get out of this cave before I lose my patience!", get_race()); + close; + +L_Hit: + mesn; + mesq l("DIE, SCUM!"); + percentheal -90, -100; + @yetiagro=0; + close; + +OnInit: + .sex=G_OTHER; + .distance=20; + end; +} + + + + +//021-1,25,298,0 duplicate(Yeti#0211Guard) Yeti#0211G2 NPC_YETI + |