diff options
author | Jesusaves <cpntb1@ymail.com> | 2021-04-09 11:00:49 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2021-04-09 11:00:49 -0300 |
commit | 8a4bf716002a017de77fe7df301ef8e4aaf00a2e (patch) | |
tree | 4947d0b015baad639fa07133369e9a09c8a468bc /npc/000-2-2 | |
download | serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.gz serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.bz2 serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.tar.xz serverdata-8a4bf716002a017de77fe7df301ef8e4aaf00a2e.zip |
Initial commit
Diffstat (limited to 'npc/000-2-2')
-rw-r--r-- | npc/000-2-2/_import.txt | 5 | ||||
-rw-r--r-- | npc/000-2-2/doors.txt | 75 | ||||
-rw-r--r-- | npc/000-2-2/mapflags.txt | 1 | ||||
-rw-r--r-- | npc/000-2-2/ratto.txt | 98 |
4 files changed, 179 insertions, 0 deletions
diff --git a/npc/000-2-2/_import.txt b/npc/000-2-2/_import.txt new file mode 100644 index 00000000..81d32fdf --- /dev/null +++ b/npc/000-2-2/_import.txt @@ -0,0 +1,5 @@ +// Map 000-2-2: Hold +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/000-2-2/doors.txt", +"npc/000-2-2/mapflags.txt", +"npc/000-2-2/ratto.txt", diff --git a/npc/000-2-2/doors.txt b/npc/000-2-2/doors.txt new file mode 100644 index 00000000..c97a7c5d --- /dev/null +++ b/npc/000-2-2/doors.txt @@ -0,0 +1,75 @@ +// Evol scripts. +// Authors: +// Ablu +// Alastrim +// Jesusalva +// Reid +// Description: +// Doors NPCs. + +000-2-2,48,29,0 script DoorUpwards NPC_HIDDEN,0,0,{ + +OnTouch: + // Actually this will never work because Instanced map + if (mobcount("000-2-2","all") > 0) goto L_Warn; + + goto L_Warp; + +L_Warn: + .@q = getq(ShipQuests_Peter); + if (.@q >= 15) goto L_Warp; + + mesn "Narrator"; + mesc(l("There are still some monsters left! Do you want to abort the quest?"), 9); + next; + + menu + l("Yes."), L_Warp, + l("No."), -; + + slide 48, 28; + closeclientdialog; + close; + +L_Warp: + warp "000-2-1", 72, 36; + + deltimer("Peter::OnLowTime"); + deltimer("Peter::OnTimeout"); + closeclientdialog; + close; +} + +// Besides the door, Alige is hiding himself and would rather not be disturbed +000-2-2,24,31,0 script LeftDoor NPC_HIDDEN,0,0,{ + +OnTouch: + mesn "Narrator"; + mesc(l("It seems that you need a key to open this door."), 9); + next; + mesc(l("What do you want to do?"), 9); + next; + + menu + rif(countitem(JohanneKey) > 0, l("Use the key.")), L_Warp, + l("Break the door."), L_Break, + l("Go away."), -; + + closeclientdialog; + close; + +L_Break: + + mes ""; + mesn "Narrator"; + mesc(l("You hear a loud scream. It must be the creaking of the wooden door..."), 9); + + close; + +L_Warp: + mes ""; + mesn "Narrator"; + mesc(l("Wait, it seems someone is blocking the door from the other side!"), 9); + + close; +} diff --git a/npc/000-2-2/mapflags.txt b/npc/000-2-2/mapflags.txt new file mode 100644 index 00000000..5202b332 --- /dev/null +++ b/npc/000-2-2/mapflags.txt @@ -0,0 +1 @@ +000-2-2 mapflag nosave 000-2-1,50,38 diff --git a/npc/000-2-2/ratto.txt b/npc/000-2-2/ratto.txt new file mode 100644 index 00000000..d30ccd17 --- /dev/null +++ b/npc/000-2-2/ratto.txt @@ -0,0 +1,98 @@ +// Evol Script. +// Author: +// Ablu +// Alastrim +// Jesusalva +// Reid +// Description: +// Ratto killer. +// The only "lose" conditions are: +// 1- dying, but this is not handled anywhere +// 2- Time running out, Peter handles that automatically. +// Note that if you die here, you won't be able to return and will need to +// start the quest over again. (I wonder why it is not handled by an OnDeath event) +// iirc, logout will automatically destroy the instance and clear timers, so it +// doesn't needs the script writer to handle logout cleanup (only death). + +000-2-2,0,0,0 script RattosControl NPC_HIDDEN,{ + end; + +// Each monster on the basement have its own respawn cycle. +// We use a XOR (^) operand to mark that the killed monster is not dead anymore. +// This is to reproduce as accurate as possible the legacy behavior of the quest. +OnRatto1Respawn: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2^1; + areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl::OnRatto1Death"; + end; + +OnRatto2Respawn: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2^2; + areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl::OnRatto2Death"; + end; + +OnRatto3Respawn: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2^4; + areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl::OnRatto3Death"; + end; + +OnRatto4Respawn: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2^8; + areamonster @MAP_NAME$, 23, 19, 57, 40, strmobinfo(1, @pt_mob), @pt_mob, 1, "RattosControl::OnRatto4Death"; + end; + +// When you kill a monster on basement, we must check the mob as dead, see if you +// finally killed the last one and quest is complete, and add a timer to respawn it +// after 1m25s (for flavor purposes, makes quest harder though) +OnRatto1Death: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2|1; + .@q2=getq2(ShipQuests_Peter); + if (.@q2 == 15) + goto L_Victor; + addtimer(85000, "RattosControl::OnRatto1Respawn"); + end; + +OnRatto2Death: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2|2; + .@q2=getq2(ShipQuests_Peter); + if (.@q2 == 15) + goto L_Victor; + addtimer(85000, "RattosControl::OnRatto2Respawn"); + end; + +OnRatto3Death: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2|4; + .@q2=getq2(ShipQuests_Peter); + if (.@q2 == 15) + goto L_Victor; + addtimer(85000, "RattosControl::OnRatto3Respawn"); + end; + +OnRatto4Death: + .@q2=getq2(ShipQuests_Peter); + setq2 ShipQuests_Peter, .@q2|8; + .@q2=getq2(ShipQuests_Peter); + if (.@q2 == 15) + goto L_Victor; + addtimer(85000, "RattosControl::OnRatto4Respawn"); + end; + +// This label is reached when all rattos are dead. We clear the respawn timers +// (as we are going to delete the instance map anyway), warp you outside, and +// from there onwards, Peter handles properly rewarding you. +OnVictor: + deltimer("RattosControl::OnRatto1Respawn"); + deltimer("RattosControl::OnRatto2Respawn"); + deltimer("RattosControl::OnRatto3Respawn"); + deltimer("RattosControl::OnRatto4Respawn"); + addtimercount("Peter::OnTimeout", 5000); + addtimer(5000, "Peter::OnDone"); + dispbottom l("It looks like all monsters were killed."); + end; +} |