From c1ad5cf87d31b3a8642e81c45fffd0b3d53312b7 Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 16 Mar 2019 18:43:07 -0300 Subject: Prepare to introduce Lilit. Of course, the first part is handling player arrival. Then the boss fight, the monsters on the cave, and the "quest" to get on the Island. By last, we must add content to Lilit. Currently, it is only for sight-seeing. --- db/quest_db.conf | 7 ++- db/re/map_zone_db.conf | 22 +++++++ npc/000-1/exit.txt | 8 +-- npc/018-5-boss/_import.txt | 1 + npc/018-5-boss/mapflag.txt | 1 + npc/018-5/_import.txt | 1 + npc/018-5/soul_menhir.txt | 2 +- npc/018-5/town.txt | 142 +++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 178 insertions(+), 6 deletions(-) create mode 100644 npc/018-5-boss/mapflag.txt create mode 100644 npc/018-5/town.txt diff --git a/db/quest_db.conf b/db/quest_db.conf index 3f5633e61..3b5bad2dd 100644 --- a/db/quest_db.conf +++ b/db/quest_db.conf @@ -328,7 +328,7 @@ quest_db: ( // ID 151 to 170: Artis Quests // ID 171 to 190: Esperia Quests -// ID 191 to 269: Dungeon Quests +// ID 191 to 249: Dungeon Quests { Id: 191 Name: "MineQuest_Tycoon" @@ -342,6 +342,11 @@ quest_db: ( Name: "MineQuest_Caelum" }, +// ID 250 to 269: Lilit Quests +{ + Id: 250 + Name: "LilitQuest_Access" +}, // ID 270 to 299: Land Of Fire Quests { Id: 270 diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index 8a8a38b70..76f8f66f2 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -108,6 +108,28 @@ zones: ( skill_damage_cap: { } }, +{ + /* No Tricks Zone prevents penalty and NV_TRICKDEAD */ + name: "No Tricks" + + disabled_skills: { + NV_TRICKDEAD: "ALL" + } + + disabled_items: { + } + + mapflags: ( + "nopenalty", + "nosave 000-1,22,22", + ) + + /* "command:min-group-lv-to-override" e.g. "heal: 70" */ + disabled_commands: { + } + skill_damage_cap: { + } +}, { /* MMO Zone is not the place for GMs to mess with. */ name: "MMO" diff --git a/npc/000-1/exit.txt b/npc/000-1/exit.txt index ddbcc2321..40d1b5e46 100644 --- a/npc/000-1/exit.txt +++ b/npc/000-1/exit.txt @@ -23,10 +23,10 @@ OnTalkNearby: end; OnInit: - setarray .LOCMASTER_LOC$, "Candor", "Tulim", "Halin", "Hurns", "LoF", "Nival", "Frostia"; // 018-5 Lilit - setarray .LOCMASTER_MAP$, "005-1", "003-1", "009-1", "012-1", "017-1", "020-1", "024-1"; - setarray .LOCMASTER_X, 34, 40, 26, 86, 119, 56, 94; - setarray .LOCMASTER_Y, 101, 49, 30, 69, 87, 62, 42; + setarray .LOCMASTER_LOC$, "Candor", "Tulim", "Halin", "Hurns", "LoF", "Lilit", "Nival", "Frostia"; + setarray .LOCMASTER_MAP$, "005-1", "003-1", "009-1", "012-1", "017-1", "018-5", "020-1", "024-1"; + setarray .LOCMASTER_X, 34, 40, 26, 86, 119, 111, 56, 94; + setarray .LOCMASTER_Y, 101, 49, 30, 69, 87, 53, 62, 42; debugmes "Locmaster: Index 0: %s [%s.gat (%d, %d)]", .LOCMASTER_LOC$[0], .LOCMASTER_MAP$[0], .LOCMASTER_X[0], .LOCMASTER_Y[0]; debugmes "Locmaster: Index 2: %s [%s.gat (%d, %d)]", .LOCMASTER_LOC$[2], .LOCMASTER_MAP$[2], .LOCMASTER_X[2], .LOCMASTER_Y[2]; diff --git a/npc/018-5-boss/_import.txt b/npc/018-5-boss/_import.txt index 7c584eb0e..6f320c752 100644 --- a/npc/018-5-boss/_import.txt +++ b/npc/018-5-boss/_import.txt @@ -1,2 +1,3 @@ // Map 018-5-boss: Mountain Cave // This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/018-5-boss/mapflag.txt", diff --git a/npc/018-5-boss/mapflag.txt b/npc/018-5-boss/mapflag.txt new file mode 100644 index 000000000..0c36c3058 --- /dev/null +++ b/npc/018-5-boss/mapflag.txt @@ -0,0 +1 @@ +018-5-boss mapflag zone No Tricks diff --git a/npc/018-5/_import.txt b/npc/018-5/_import.txt index d827bfe88..f411db7bb 100644 --- a/npc/018-5/_import.txt +++ b/npc/018-5/_import.txt @@ -3,3 +3,4 @@ "npc/018-5/_mobs.txt", "npc/018-5/_warps.txt", "npc/018-5/soul_menhir.txt", +"npc/018-5/town.txt", diff --git a/npc/018-5/soul_menhir.txt b/npc/018-5/soul_menhir.txt index e4d2ea439..49916cda7 100644 --- a/npc/018-5/soul_menhir.txt +++ b/npc/018-5/soul_menhir.txt @@ -5,7 +5,7 @@ // Soul Menhir 018-5,111,52,0 script Soul Menhir#lil NPC_SOUL_MOSS,{ - @map$ = "018-1"; + @map$ = "018-5"; setarray @Xs, 110, 111, 112; setarray @Ys, 53, 53, 53; @x = 0; diff --git a/npc/018-5/town.txt b/npc/018-5/town.txt new file mode 100644 index 000000000..1c3ffa8fd --- /dev/null +++ b/npc/018-5/town.txt @@ -0,0 +1,142 @@ +// TMW-2 Script +// Author: +// Jesusalva +// Description: +// Reset LOCATION$ when entering a town + +// .@q = LilitQuest_Access +// 0 - Access not granted +// q2 - Number of attempts +// 1 - Access granted +// 2 - Tree Minigame complete. + +// This NPC have a 1x1 touch area. +// If you logout, then relog, and try to fool it by moving - you'll be caught +// and slided to the right position. +018-5,97,69,0 script #LocLilit NPC_HIDDEN,1,1,{ + end; + +OnTouch: + .@q=getq(LilitQuest_Access); + if (!.@q) + goto L_AccessDenied; + else + LOCATION$="Lilit"; + end; + +L_AccessDenied: + getmapxy(.@m$, .@x, .@y, 0); + // Cheater detected (either coming to or from Lilit), deploy countermeasures at once + if (.@x != 97 || .@y != 69) { + slide 97, 69; + atcommand("@jailfor 3mn "+strcharinfo(0)); + dispbottom l("Cheater detected! You have a three minutes sentence to fulfill, now."); + end; + } + mesn ("???"); + mesc l("You should not be here..."); + next; + mesn ("???"); + mesc l("Leave this place now, defiler..."); + next; + mesc l("How will you respond?!"), 1; + select + l("Step forward"), + l("Step backward"); + mes ""; + + // First option is a bad choice, but the only right choice. + if (@menu == 1) { + mesn ("???"); + mesc l("DIE, FILTHY @@!", strtoupper(get_race())); + percentheal -30, -30; + next; + } else { + warp "018-5-1", 77, 53; + end; + } + + mesn ("???"); + mesc l("Ho... I see you are a tough one..."); + next; + mesn ("???"); + mesc l("What brings you here, @@?", get_race()); + next; + mesc l("How will you respond?!"), 1; + select + l("To help fairies"), + l("To explore these lands"), + l("To collect snake skin"), + l("To do quests"), + l("To aid those in need"), + l("Because I am awesome!"), + l("I don't know"); + mes ""; + mesn ("???"); + mesc l("I don't care for your reasons."); + next; + mesn l("Yetifly the Mighty"); + mesq l("I am the Yetifly, guardian of butter and fairies."); + next; + mesn l("Yetifly the Mighty"); + mesq l("AND YOU ARE NOT WELCOME HERE!!"), 1; + movecam rand(-20,20), rand(-20,20); + sleep2(60); + movecam rand(-20,20), rand(-20,20); + sleep2(60); + movecam rand(-20,20), rand(-20,20); + sleep2(60); + movecam rand(-20,20), rand(-20,20); + sleep2(60); + movecam rand(-20,20), rand(-20,20); + sleep2(60); + movecam rand(-20,20), rand(-20,20); + sleep2(60); + restorecam; + next; + mesn l("Yetifly the Mighty"); + mesq l("Unless, of course, if you can prove your strength, challenging me to a duel."); + next; + mesc l("How will you respond?!"), 1; + select + l("Bring it on!"), + l("Nah I am a chicken :b"); + mes ""; + if (@menu == 2) { + closeclientdialog; + if (rand(1,4) == 3) + slide 98, 83; + else + slide 61, 147; + dispbottom l("The Yetifly drops you off the cliff. Good job, noob."); + percentheal -10, 0; + end; + } + mesn l("Yetifly the Mighty"); + mesq l("That wouldn't be fair to you, though. So, you don't need to defeat me."); + next; + mesn l("Yetifly the Mighty"); + mesq l("So, you just need to survive for one minute, and I'll consider you are good enough."); + if (getskilllv(NV_TRICKDEAD)) mesc l("WARNING: Fake Death skill is disabled on the fight."), 1; + next; + mesc l("Click \"Next\" to begin the fight."), 1; + next; + closeclientdialog; + //addtimer(1000, "ready? + 1s GO! spawn and keep flowing timers every 10s to check if map is OK + finish."); + // Create instance. + warp "018-5-boss", 0, 0; + end; +} + +// Double check +018-5,99,64,0 script #LilitAccCtrl NPC_HIDDEN,1,1,{ +OnTouch: + .@q=getq(LilitQuest_Access); + if (!.@q) { + slide 97, 69; + atcommand("@jailfor 3mn "+strcharinfo(0)); + dispbottom l("Cheater detected! You have a three minutes sentence to fulfill, now."); + } + end; +} + -- cgit v1.2.3-70-g09d2