From 7ee960c62a2d2919a68f6f24925567ee417f192e Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Sat, 9 May 2020 21:55:31 -0300 Subject: WIP: 500 PRs Closed Commemorative Commit (#555) * Mountain and Grass Snake experience +100% (per topic 20799) * Prepare the act 5 button so it have a non-null action * There's now 10% chance per clue of Tormenta showing up at 09:00 assault. Usual spot. Currently 2 clues were found, so 20% spawn chances. * Cerhan reactions for Sand Cutter (thanks for pointing this out, Ledmitz) * Alacrius Riddle (needs 300 boss points to start) * Keshlam Swamps map * News file ID 85 --- world/map/npc/026-2/cerhan.txt | 15 + world/map/npc/027-2/alacrius.txt | 116 ++++ world/map/npc/099-5/_import.txt | 6 + world/map/npc/099-5/_mobs.txt | 3 + world/map/npc/099-5/_nodes.txt | 4 + world/map/npc/099-5/_warps.txt | 3 + world/map/npc/099-6/_import.txt | 6 + world/map/npc/099-6/_mobs.txt | 3 + world/map/npc/099-6/_nodes.txt | 4 + world/map/npc/099-6/_warps.txt | 3 + world/map/npc/099-7/_import.txt | 7 + world/map/npc/099-7/_mobs.txt | 3 + world/map/npc/099-7/_nodes.txt | 4 + world/map/npc/099-7/_warps.txt | 3 + world/map/npc/099-7/boss.txt | 722 +++++++++++++++++++++++ world/map/npc/_import.txt | 3 + world/map/npc/functions/doomsday.txt | 58 ++ world/map/npc/functions/global_event_handler.txt | 1 + world/map/npc/magic/_import.txt | 1 + world/map/npc/magic/level0-reapercry.txt | 244 ++++++++ world/map/npc/magic/level2-lightning-strike.txt | 2 + 21 files changed, 1211 insertions(+) create mode 100644 world/map/npc/099-5/_import.txt create mode 100644 world/map/npc/099-5/_mobs.txt create mode 100644 world/map/npc/099-5/_nodes.txt create mode 100644 world/map/npc/099-5/_warps.txt create mode 100644 world/map/npc/099-6/_import.txt create mode 100644 world/map/npc/099-6/_mobs.txt create mode 100644 world/map/npc/099-6/_nodes.txt create mode 100644 world/map/npc/099-6/_warps.txt create mode 100644 world/map/npc/099-7/_import.txt create mode 100644 world/map/npc/099-7/_mobs.txt create mode 100644 world/map/npc/099-7/_nodes.txt create mode 100644 world/map/npc/099-7/_warps.txt create mode 100644 world/map/npc/099-7/boss.txt create mode 100644 world/map/npc/magic/level0-reapercry.txt (limited to 'world/map/npc') diff --git a/world/map/npc/026-2/cerhan.txt b/world/map/npc/026-2/cerhan.txt index 3104e34f..64cc723f 100644 --- a/world/map/npc/026-2/cerhan.txt +++ b/world/map/npc/026-2/cerhan.txt @@ -24,6 +24,21 @@ L_Story: L_GoodLuckWith: mes "[Cerhan]"; mes "\"If you're interested in weapons and armor, you may want to come back later.\""; + if (countitem("SandCutter") > 0) + menu + "[Leave]",L_Close, + "Actually, I exchanged my Mylarin Dust with a bunny girl.", L_SandCutter; + close; + +L_SandCutter: + mes "[Cerhan]"; + mes "\"What?! Are you mad?! Do you know how many night desert warriors the bunny girl, Ashley, even killed?!\""; + next; + mes "[Cerhan]"; + mes "\"Gosh, I fear for those whom wrong her. I hope you did not provoke her while doing this exchange.\""; + next; + mes "[Cerhan]"; + mes "\"Ugh... I really should finishing settin up my shop, but... I'm so lazy.\""; goto L_Close; L_Mylarin: diff --git a/world/map/npc/027-2/alacrius.txt b/world/map/npc/027-2/alacrius.txt index d05f9b54..3196e43e 100644 --- a/world/map/npc/027-2/alacrius.txt +++ b/world/map/npc/027-2/alacrius.txt @@ -9,5 +9,121 @@ mes "\"A very long time ago, I figured a way to cheat death and the limits of time and space. You may think it is evil, but I did it because of true love... \""; next; mes "\"The reaper kidnapped my beloved wife, and took her to the underworld. I had to find a way to stop him, and as time went by, I became what you can see now... But if you dare to cheat death, time and space you'll have to pay a high price... \""; + // Doomsday related + if (BOSS_POINTS >= 300) goto L_Quest; + close; + +L_Quest: + // Rand() is probably not the best way to do that. + if (!#CRYPT_PASSWORD) + set #CRYPT_PASSWORD, rand(4095); + next; + mes "##1--------- The Alacrius Riddle"; + mes ""; + mes "A few spells in the right place and order,"; + mes "will break Keshlam's magical border,"; + mes "but be very aware of a warder."; + next; + mes "Also know, my oh so dear friends,"; + mes "the clues differs for whoever attends."; + mes "If one fails or succeeds depends,"; + mes "on how close attention one spends!"; + next; + mes "##9 Explore the Crypt, and find the clues to solve Alacrius' Riddle."; + mes "##9 All clues, hints, and riddles you need to solve this one,"; + mes "##9 are inside this crypt. If a clue, hint, or riddle, doesn't make"; + mes "##9 immediate sense, together, they shall lend you their full meaning;"; + mes "##9 And if you're in despair, find the Lord words, they will guide your way."; + close; +} + +// Some more hints +027-2,30,78,0|script|#AlacriusClue1|400 +{ + if (!#CRYPT_PASSWORD) + goto L_Empty; + mes "For those whom search to the answers of Alacrius' Riddles."; + next; + mes "Made with stone, near Krukan's room,"; + mes "lies a forgotten chamber tomb,"; + mes "for those who fell victim to his doom."; + mes ""; + mes "Candles will part the left from the right"; + mes "and the stone sarcophagi hold a clue to the rite."; + mes "But only the ones that are still sealed tight,"; + mes "might tell you which candles you have to light."; + mes ""; + mes "And watch out for the five heroes,"; + mes "For the lord's words of wisdom,"; + mes "They carefully guard."; + close; + +L_Empty: + mes "The book pages are blank!"; close; } + +027-2,41,78,0|script|#AlacriusClue2|400 +{ + if (!#CRYPT_PASSWORD) + goto L_Empty; + mes "For those whom search to the answers of Alacrius' Riddles."; + next; + mes "Not far from Razha's hall,"; + mes "statues of stone adorn the wall,"; + mes "to honor the heroes who caused him to fall."; + mes ""; + mes "Only the ones in unfractured light,"; + mes "might hold a clue to the unholy rite,"; + mes "and tell you which candles you have to light,"; + mes "while others will tell you just lies outright."; + close; + +L_Empty: + mes "The book pages are blank!"; + close; +} + + +027-3,59,22,0|script|#AlacriusClue3|400 +{ + if (!#CRYPT_PASSWORD) + goto L_Empty; + mes "For those whom search to the answers of Alacrius' Riddles."; + next; + mes "For those who don't get astray,"; + mes "Five sealed gates block the way,"; + mes "to Terogan's vault of foul play."; + mes ""; + mes "A cite on their left or right"; + mes "holds some clues to the abysmal rite,"; + mes "that opens the path to an unspeakable site."; + mes "Do you know which candles to light?"; + close; + +L_Empty: + mes "The book pages are blank!"; + close; +} + +027-4,108,87,0|script|#AlacriusClue4|400 +{ + if (!#CRYPT_PASSWORD) + goto L_Empty; + mes "For those whom search to the answers of Alacrius' Riddles."; + next; + mes "I have nothing to say,"; + mes "But this room has no key."; + mes ""; + mes "Brute force will not get you in,"; + mes "And you don't have to, to the riddle solve."; + mes ""; + mes "But three books shall give you answers,"; + mes "Can you find all of them?"; + close; + +L_Empty: + mes "The book pages are blank!"; + close; +} + diff --git a/world/map/npc/099-5/_import.txt b/world/map/npc/099-5/_import.txt new file mode 100644 index 00000000..ba38b31c --- /dev/null +++ b/world/map/npc/099-5/_import.txt @@ -0,0 +1,6 @@ +// Map 099-5: Nu'Ram-Battle +// This file is generated automatically. All manually added changes will be removed when running the Converter. +map: 099-5 +npc: npc/099-5/_mobs.txt +npc: npc/099-5/_nodes.txt +npc: npc/099-5/_warps.txt diff --git a/world/map/npc/099-5/_mobs.txt b/world/map/npc/099-5/_mobs.txt new file mode 100644 index 00000000..0381696e --- /dev/null +++ b/world/map/npc/099-5/_mobs.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle mobs + diff --git a/world/map/npc/099-5/_nodes.txt b/world/map/npc/099-5/_nodes.txt new file mode 100644 index 00000000..22261608 --- /dev/null +++ b/world/map/npc/099-5/_nodes.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle nodes + +// (no nodes) diff --git a/world/map/npc/099-5/_warps.txt b/world/map/npc/099-5/_warps.txt new file mode 100644 index 00000000..703b3ca9 --- /dev/null +++ b/world/map/npc/099-5/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle warps + diff --git a/world/map/npc/099-6/_import.txt b/world/map/npc/099-6/_import.txt new file mode 100644 index 00000000..0230b16d --- /dev/null +++ b/world/map/npc/099-6/_import.txt @@ -0,0 +1,6 @@ +// Map 099-6: Nu'Ram-Battle +// This file is generated automatically. All manually added changes will be removed when running the Converter. +map: 099-6 +npc: npc/099-6/_mobs.txt +npc: npc/099-6/_nodes.txt +npc: npc/099-6/_warps.txt diff --git a/world/map/npc/099-6/_mobs.txt b/world/map/npc/099-6/_mobs.txt new file mode 100644 index 00000000..0381696e --- /dev/null +++ b/world/map/npc/099-6/_mobs.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle mobs + diff --git a/world/map/npc/099-6/_nodes.txt b/world/map/npc/099-6/_nodes.txt new file mode 100644 index 00000000..22261608 --- /dev/null +++ b/world/map/npc/099-6/_nodes.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle nodes + +// (no nodes) diff --git a/world/map/npc/099-6/_warps.txt b/world/map/npc/099-6/_warps.txt new file mode 100644 index 00000000..703b3ca9 --- /dev/null +++ b/world/map/npc/099-6/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle warps + diff --git a/world/map/npc/099-7/_import.txt b/world/map/npc/099-7/_import.txt new file mode 100644 index 00000000..5e748a47 --- /dev/null +++ b/world/map/npc/099-7/_import.txt @@ -0,0 +1,7 @@ +// Map 099-7: Nu'Ram-Battle +// This file is generated automatically. All manually added changes will be removed when running the Converter. +map: 099-7 +npc: npc/099-7/_mobs.txt +npc: npc/099-7/_nodes.txt +npc: npc/099-7/_warps.txt +npc: npc/099-7/boss.txt diff --git a/world/map/npc/099-7/_mobs.txt b/world/map/npc/099-7/_mobs.txt new file mode 100644 index 00000000..0381696e --- /dev/null +++ b/world/map/npc/099-7/_mobs.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle mobs + diff --git a/world/map/npc/099-7/_nodes.txt b/world/map/npc/099-7/_nodes.txt new file mode 100644 index 00000000..22261608 --- /dev/null +++ b/world/map/npc/099-7/_nodes.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle nodes + +// (no nodes) diff --git a/world/map/npc/099-7/_warps.txt b/world/map/npc/099-7/_warps.txt new file mode 100644 index 00000000..703b3ca9 --- /dev/null +++ b/world/map/npc/099-7/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Nu'Ram-Battle warps + diff --git a/world/map/npc/099-7/boss.txt b/world/map/npc/099-7/boss.txt new file mode 100644 index 00000000..9ecb3ad6 --- /dev/null +++ b/world/map/npc/099-7/boss.txt @@ -0,0 +1,722 @@ +// This script controls the Keshlam Swamps +// Made for Doomsday Event - The 070-3 and original quests were lost due this + +027-4,105,61,0|script|#KeshlamClue701|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the left handed singer"; + if (#CRYPT_PASSWORD & 1) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + +027-4,91,61,0|script|#KeshlamClue702|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the left handed lone warrior"; + if (#CRYPT_PASSWORD & 1) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At southeast a bright sparks."; + close; +} + +027-4,99,61,0|script|#KeshlamClue703|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the left handed sailor"; + if (#CRYPT_PASSWORD & 1) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At south a bright sparks."; + close; +} + +027-4,121,61,0|script|#KeshlamClue704|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the left handed gargoyle"; + if (#CRYPT_PASSWORD & 2) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At southeast a bright sparks."; + close; +} + + + +027-3,105,88,0|script|#KeshlamClue705|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 4) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At south a bright sparks."; + close; +} + +027-3,111,88,0|script|#KeshlamClue706|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 4) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At southwest a bright sparks."; + close; +} + + + + +027-3,105,83,0|script|#KeshlamClue707|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 4) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At north a bright sparks."; + close; + +L_Off: + mes "A reading says: At west a bright sparks."; + close; +} + +027-3,111,83,0|script|#KeshlamClue708|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 8) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At east a bright sparks."; + close; + +L_Off: + mes "A reading says: At north a bright sparks."; + close; +} + + + +027-3,105,78,0|script|#KeshlamClue709|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 8) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At northwest a bright sparks."; + close; +} + +027-3,111,78,0|script|#KeshlamClue710|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 8) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At southwest a bright sparks."; + close; +} + + + +027-3,105,73,0|script|#KeshlamClue711|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 8) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At north a bright sparks."; + close; + +L_Off: + mes "A reading says: At west a bright sparks."; + close; +} + +027-3,111,73,0|script|#KeshlamClue712|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 16) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At east a bright sparks."; + close; + +L_Off: + mes "A reading says: At north a bright sparks."; + close; +} + + + +027-3,106,59,0|script|#KeshlamClue713|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 16) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At northwest a bright sparks."; + close; +} + +027-3,111,59,0|script|#KeshlamClue714|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 16) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + + + +027-3,106,54,0|script|#KeshlamClue715|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 32) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At southeast a bright sparks."; + close; +} + +027-3,111,54,0|script|#KeshlamClue716|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 32) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + +/////////////////////////////////////////////////////////////////////////////// +////// Second Wing +027-4,111,61,0|script|#KeshlamClue750|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the right handed sailor"; + if (#CRYPT_PASSWORD & 64) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At southeast a bright sparks."; + close; +} + +027-4,108,61,0|script|#KeshlamClue751|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the right handed duo"; + if (#CRYPT_PASSWORD & 64) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + +027-4,115,61,0|script|#KeshlamClue752|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the right handed Kage"; + if (#CRYPT_PASSWORD & 128) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At south a bright sparks."; + close; +} + +027-4,119,61,0|script|#KeshlamClue753|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "In memory of the right handed lone warrior"; + if (#CRYPT_PASSWORD & 128) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At southeast a bright sparks."; + close; +} + + + +027-3,118,88,0|script|#KeshlamClue754|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 256) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At south a bright sparks."; + close; +} + +027-3,124,88,0|script|#KeshlamClue755|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 256) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At southwest a bright sparks."; + close; +} + + + +027-3,118,83,0|script|#KeshlamClue756|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 256) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At north a bright sparks."; + close; + +L_Off: + mes "A reading says: At west a bright sparks."; + close; +} + +027-3,124,83,0|script|#KeshlamClue757|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 256) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At east a bright sparks."; + close; + +L_Off: + mes "A reading says: At north a bright sparks."; + close; +} + + + +027-3,118,78,0|script|#KeshlamClue758|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 512) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At north a bright sparks."; + close; + +L_Off: + mes "A reading says: At west a bright sparks."; + close; +} + +027-3,124,78,0|script|#KeshlamClue759|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 512) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At east a bright sparks."; + close; + +L_Off: + mes "A reading says: At north a bright sparks."; + close; +} + + + +027-3,118,73,0|script|#KeshlamClue760|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 512) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At northeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At southwest a bright sparks."; + close; +} + +027-3,124,73,0|script|#KeshlamClue761|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 512) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + + + +027-3,117,59,0|script|#KeshlamClue762|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 1024) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + +027-3,122,59,0|script|#KeshlamClue763|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 1024) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southeast a bright sparks."; + close; + +L_Off: + mes "A reading says: At northwest a bright sparks."; + close; +} + + + +027-3,117,54,0|script|#KeshlamClue764|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 2048) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At south a bright sparks."; + close; + +L_Off: + mes "A reading says: At northeast a bright sparks."; + close; +} + +027-3,122,54,0|script|#KeshlamClue765|400 +{ + if (!#CRYPT_PASSWORD) end; + if (#CRYPT_PASSWORD & 2048) goto L_On; + goto L_Off; + +L_On: + mes "A reading says: At southwest a bright sparks."; + close; + +L_Off: + mes "A reading says: At southeast a bright sparks."; + close; +} + +/////////////////////////////////////////////////////////////////////////////// +////// Gates +027-5,68,94,0|script|#KeshlamClue791|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "There's an inscription on the gate."; + next; + mes "\"Krukan reads from bottom up. Four clues.\""; + close; +} + +027-5,68,87,0|script|#KeshlamClue792|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "There's an inscription on the gate."; + next; + mes "\"The candle shall lit you, but if you mess up, a different light will show."; + mes "Alas did you knew, that Razha came before Krukan?\""; + close; +} + +027-5,68,73,0|script|#KeshlamClue793|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "There's an inscription on the gate."; + next; + mes "\"Razha likes to read from left to right. Two clues, Two clues.\""; + close; +} + +027-5,68,59,0|script|#KeshlamClue794|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "There's an inscription on the gate."; + next; + mes "\"The master's candlesticks are like the fingers of his hand."; + mes "And if it is not to kill, they will never move.\""; + close; +} + +027-5,68,46,0|script|#KeshlamClue795|400 +{ + if (!#CRYPT_PASSWORD) end; + mes "There's a bloody inscription on the gate."; + next; + mes "\"##B"+get(.invocation$, "reapercry")+"##b\""; + next; + mes "##9You hear the sounds of battle. Candle lights shines in distance."; + next; + mes "##9However, when you turn towards the source - both the light as the sound have already stopped."; + next; + mes "##9Is this a clue of some sort?"; + close; +} + +/////////////////////////////////////////////////////////////////////////////// +// Totally optional Easter Egg :> +099-7,75,49,0|script|Engraving#Keshlam|400 +{ + mes "There's an engraving on this tree."; + next; + if (countitem("FlawedLens") < 1) goto L_Tools; + mes "Thanks to the lens on your inventory, you can read this:"; + mes ""; + mes "\"Nu'rem perished here, after the fight with Jande, Tal and Di'Tal."; + mes "For this very reason, this land is plagued forever. We shall give Nu'Rem a proper burrial.\""; + next; + mes "-- The Sparron"; + close; + +L_Tools: + mes "It is too faint to read without some good lens, but you can make the following words out of the engraving:"; + next; + mes "\"Nu'rem .... here .... fight .... Jande ...."; + mes ".... land .... plagued forever. .... Nu'Rem .... proper burrial.\""; + next; + mes "-- The ...."; + close; +} + + +/////////////////////////////////////////////////////////////////////////////// +// Monster Script Control +-|script|Keshlam|32767 +{ + close; + +OnInit: + areamonster "099-7", 20, 20, 120, 120, "", 1148, 10, "Keshlam::OnDeath8"; + areamonster "099-7", 20, 20, 120, 120, "", 1149, 10, "Keshlam::OnDeath9"; + monster "099-7", 20, 105, "Grim Reaper", 1068, 1, "Keshlam::OnBoss"; + end; + +OnDeath8: + goto OnDeath; + +OnDeath9: + goto OnDeath; + +OnDeath: + // TODO: Only fire this if timer not running. Set timer to 5min + initnpctimer; + end; + +OnBoss: + initnpctimer; + // If a player is attached, give them 20 Treasure Keys + getitem "TreasureKey", 20; + end; + +OnTimer150000: + // 1148 + set $@KeshlamMc, mobcount("099-7", "Keshlam::OnDeath8")+1; + if ($@KeshlamMc < 10) + areamonster "099-7", 20, 20, 120, 120, "", 1148, 10-$@KeshlamMc, "Keshlam::OnDeath8"; + + // 1149 + set $@KeshlamMc, mobcount("099-7", "Keshlam::OnDeath9")+1; + if ($@KeshlamMc < 10) + areamonster "099-7", 20, 20, 120, 120, "", 1149, 10-$@KeshlamMc, "Keshlam::OnDeath9"; + + // Boss (TODO give boss their own timer with 5 minutes) + set $@KeshlamMc, mobcount("099-7", "Keshlam::OnBoss")+1; + if ($@KeshlamMc < 1) + monster "099-7", 20, 105, "Grim Reaper", 1068, 1, "Keshlam::OnBoss"; + + // Done + set $@KeshlamMc, 0; + stopnpctimer; + end; +} + +/////////////////////////////////////////////////////////////////////////////// +// Who wants a rare drop? +099-7,18,110,0|script|Chest#keshlam|111 +{ + if (FLAGS & FLAG_KESHLAM_RAREDROP) goto L_Finished; + mes "[Chest]"; + mes "Would you try to open it?"; + mes "##1Cost: 1000 Treasure Keys"; + next; + menu + "Yes.", L_Yes, + "No.", L_Close; + +L_Yes: + if(countitem("TreasureKey") < 1000) + goto L_Not_Enough; + getinventorylist; + if (@inventorylist_count == 100 + && countitem("TreasureKey") > 1000) + goto L_TooMany; + delitem "TreasureKey", 1000; + if (FLAGS & FLAG_KESHLAM_FLAWEDLENS) goto L_Rare; + goto L_FlawedLens; + +L_FlawedLens: + getitem "FlawedLens", 1; + mes "[Chest]"; + mes "You opened it and found...! Some flawed lens?! Meh."; + getexp 20000000, 0; + set FLAGS, FLAGS | FLAG_KESHLAM_FLAWEDLENS; + next; + mes "[Chest]"; + mes "You notice this chest has a hidden section with another lock."; + mes "You might want try that again later."; + close; + +L_Rare: + getexp 10000000, 0; + set FLAGS, FLAGS | FLAG_KESHLAM_RAREDROP; + if (rand(3) == 1) goto L_Amulet; // 33% chance + goto L_Ring; // 67% chance + +L_Amulet: + getitem "EnchantersAmulet", 1; + mes "[Chest]"; + mes "You opened it and found...! An Enchanter's Amulet! Lucky!"; + close; + +L_Ring: + getitem "MageRing", 1; + mes "[Chest]"; + mes "You opened it and found...! A Mage Ring! Lucky!"; + close; + +L_Not_Enough: + mes "It seems that this is not the right key..."; + close; + +L_Finished: + mes "[Chest]"; + mes "You already opened this chest."; + close; + +L_TooMany: + mes "[Chest]"; + mes "You don't have room for what ever is inside. Maybe you should try again later."; + close; + +L_Close: + close; +} + diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt index 8c826165..5691767f 100644 --- a/world/map/npc/_import.txt +++ b/world/map/npc/_import.txt @@ -124,4 +124,7 @@ import: npc/099-1/_import.txt import: npc/099-2/_import.txt import: npc/099-3/_import.txt import: npc/099-4/_import.txt +import: npc/099-5/_import.txt +import: npc/099-6/_import.txt +import: npc/099-7/_import.txt import: npc/botcheck/_import.txt diff --git a/world/map/npc/functions/doomsday.txt b/world/map/npc/functions/doomsday.txt index fb3f2e0a..27498e2b 100644 --- a/world/map/npc/functions/doomsday.txt +++ b/world/map/npc/functions/doomsday.txt @@ -154,6 +154,7 @@ L_Kage: enablenpc "Wizard#7"; enablenpc "Wizard#8"; enablenpc "Arch-Wizard#9"; + set $DOOMSDAY, 3; donpcevent "Doomsday::OnJanitor"; // TODO gmlog strcharinfo(0) + " changed doomsday to Act 5: The Doomsday."; return; @@ -764,6 +765,10 @@ L_Doomsday3Bonus: set $@DD_IDX, rand(getarraysize($@doomsday_mobs)); areamonster "003-4", 20, 20, 85, 60, "", $@doomsday_mobs[$@DD_IDX], $@DD_UNITS; + // Tormenta + if (rand(10) <= $DOOMSDAY_CLUES) + monster "057-1", 126, 64, "", 1137, 1; + set $@DD_UNITS, 0; set $@DD_IDX, 0; end; @@ -801,6 +806,10 @@ OnDD4Spawn: monster $@DD_LOC$, $@DD_XPOS[$@DD_IDX1], $@DD_YPOS[$@DD_IDX1], "", 1145, 1, "Doomsday::OnDeathAct4"; //debugmes "Success "+$@DD_LOC$+" ("+$@DD_XPOS[$@DD_IDX1]+", "+$@DD_YPOS[$@DD_IDX1]+")"; mapannounce $@DD_LOC$, "Golem : FRAIL SMALL PEOPLE, ME SMASH!!!", 0; + // Spawn a few mobs + set $@DD_INT, 0; + set $@DD_UNITS, $DOOMSDAY_CLUES*4; + callsub S_DD3ThirdSpawns; goto OnDD4Smash; // Could use a new optional skill: FRAIL NOOBS, ZAX RULES! (causes new wave of 6 monsters) @@ -1145,4 +1154,53 @@ OnInit: end; } +008-1,97,28,0|script|#Haystack|400 +{ + if ($DOOMSDAY != 3) end; + if ((gettimetick(2)-TUT_var < 5*7*86400) || (BaseLevel < 40)) //player must be created at least 5 weeks ago + goto L_EndTooYoung; + if (gettimetick(2) < #HAYSTACKTIMEPENALTY) + goto L_EndRateLimit; + set #HAYSTACKTIMEPENALTY, gettimetick(2) + 5; + message strcharinfo(0), "Haystack : What exactly are you looking for?"; + if (rand(20) == 0) getitem "BentNeedle", 1; // 5% chance (was 1% on 2010) + close; + +L_EndTooYoung: + end; + +L_EndRateLimit: + message strcharinfo(0), "Haystack : I just searched this haystack... Gimme a break."; + end; +} + +// This function controls death, both on Zax Domains as with Black Rose +function|script|DoomsdayAct5 +{ + if ($DOOMSDAY != 3) + goto L_Return; + if (countitem("BlackRose")) + goto L_WarpTo; + if (getmap() == "099-1" || getmap() == "099-2" || getmap() == "099-3" || getmap() == "099-6") + goto L_WarpOut; + goto L_Return; + +L_WarpTo: + //warp "099-1", 34, 34; + //delitem "BlackRose", 1; + return; + +L_WarpOut: + if (countitem("DarkPetal") < 1) + goto L_Failure; + delitem "DarkPetal", 1; + return; + +L_Failure: + set Class, 6; + return; + +L_Return: + return; +} diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt index fe87b380..b92967b3 100644 --- a/world/map/npc/functions/global_event_handler.txt +++ b/world/map/npc/functions/global_event_handler.txt @@ -33,6 +33,7 @@ OnPCDieEvent: addtimer 0, "Magic Timer::OnClear"; // reset magic block on death callfunc "SpawnGhost"; callfunc "MiriamExpire"; // force the speed skill quest to expire + callfunc "DoomsdayAct5"; // Doomsday Event Act 5 set @killerrid, 0; // reset killer rid end; diff --git a/world/map/npc/magic/_import.txt b/world/map/npc/magic/_import.txt index 5c82ebac..4671ac7a 100644 --- a/world/map/npc/magic/_import.txt +++ b/world/map/npc/magic/_import.txt @@ -1,6 +1,7 @@ npc: npc/magic/_procedures.txt npc: npc/magic/level0-antiprotect.txt npc: npc/magic/level0-discharge.txt +npc: npc/magic/level0-reapercry.txt npc: npc/magic/level0-wand.txt npc: npc/magic/level1-aggravate.txt npc: npc/magic/level1-experience.txt diff --git a/world/map/npc/magic/level0-reapercry.txt b/world/map/npc/magic/level0-reapercry.txt new file mode 100644 index 00000000..fd80f113 --- /dev/null +++ b/world/map/npc/magic/level0-reapercry.txt @@ -0,0 +1,244 @@ +// #reapercry +// Spell to warp to Keshlam Outskirts +// Variable: @reapercry -> Holds summon state +// +// If this was Evol2 engine, I would be able to easily use bitmasks, +// Having a custom password sequence unique per character. +// But alas, on TMWA, I can't really abuse player variables. +// So I allow you to cheat. Or not. Lemme think. Account variable... + +// Returns true if player inside candle area +// call("alacriuspos", bitwise) +function|script|alacriuspos +{ + set @alacriusp, 0; + + // Left side + if (1 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_25_53_29_56; + if (2 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_20_47_22_51; + if (4 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_22_40_25_43; + if (8 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_29_40_32_43; + if (16 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_32_47_35_50; + if (32 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_25_53_29_56; + // Left not set + if (1 == getarg(0)) + goto L_29_40_32_43; + if (2 == getarg(0)) + goto L_32_47_35_50; + if (4 == getarg(0)) + goto L_25_53_29_56; + if (8 == getarg(0)) + goto L_20_47_22_51; + if (16 == getarg(0)) + goto L_22_40_25_43; + if (32 == getarg(0)) + goto L_29_40_32_43; + // Right side + if (64 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_49_53_53_56; + if (128 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_43_47_46_51; + if (256 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_46_40_49_43; + if (512 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_53_40_56_43; + if (1024 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_56_47_58_50; + if (2048 == getarg(0) && #CRYPT_PASSWORD & getarg(0)) + goto L_49_53_53_56; + // Right side not set + if (64 == getarg(0)) + goto L_53_40_56_43; + if (128 == getarg(0)) + goto L_56_47_58_50; + if (256 == getarg(0)) + goto L_49_53_53_56; + if (512 == getarg(0)) + goto L_43_47_46_51; + if (1024 == getarg(0)) + goto L_46_40_49_43; + if (2048 == getarg(0)) + goto L_53_40_56_43; + + // Nope, all wrong + set @alacriusp, 0; + return; + +// Left Side Labels +L_29_40_32_43: + set @alacriusp, isin("027-8", 29, 40, 32, 43); + return; +L_22_40_25_43: + set @alacriusp, isin("027-8", 22, 40, 25, 43); + return; +L_20_47_22_51: + set @alacriusp, isin("027-8", 20, 47, 22, 51); + return; +L_25_53_29_56: + set @alacriusp, isin("027-8", 25, 53, 29, 56); + return; +L_32_47_35_50: + set @alacriusp, isin("027-8", 32, 47, 35, 50); + return; + +// Right Side Labels +L_53_40_56_43: + set @alacriusp, isin("027-8", 53, 40, 56, 43); + return; +L_46_40_49_43: + set @alacriusp, isin("027-8", 46, 40, 49, 43); + return; +L_43_47_46_51: + set @alacriusp, isin("027-8", 43, 47, 46, 51); + return; +L_49_53_53_56: + set @alacriusp, isin("027-8", 49, 53, 53, 56); + return; +L_56_47_58_50: + set @alacriusp, isin("027-8", 56, 47, 58, 50); + return; + +} + +-|script|reapercry|32767 +{ + if(call("magic_checks")) end; + callfunc "magic_exp"; + + // Not in Terogan's Room + if (getmap() != "027-8") end; + + // Terogan is asleep + if (!$@CRYPT_FIGHT3) end; + + // No password is set o.o + if (!#CRYPT_PASSWORD) end; + + // Switch the quest state + if (@reapercry == 0) + goto L_Check0; + if (@reapercry == 1) + goto L_Check1; + if (@reapercry == 2) + goto L_Check2; + if (@reapercry == 3) + goto L_Check3; + if (@reapercry == 4) + goto L_Check4; + if (@reapercry == 5) + goto L_Check5; + + // Something went wrong!! + end; + +////////////////////////////////////////////////////// +L_Check0: + void call("alacriuspos", 1); + if (@alacriusp) goto L_Exec0; + void call("alacriuspos", 64); + if (@alacriusp) goto L_Exec0; + + set @reapercry, 0; + misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); + end; + +L_Exec0: + misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME + set @reapercry, 1; + end; + +////////////////////////////////////////////////////// +L_Check1: + void call("alacriuspos", 2); + if (@alacriusp) goto L_Exec1; + void call("alacriuspos", 128); + if (@alacriusp) goto L_Exec1; + + set @reapercry, 0; + misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); + end; + +L_Exec1: + misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME + set @reapercry, 2; + end; + +////////////////////////////////////////////////////// +L_Check2: + void call("alacriuspos", 4); + if (@alacriusp) goto L_Exec2; + void call("alacriuspos", 256); + if (@alacriusp) goto L_Exec2; + + set @reapercry, 0; + misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); + end; + +L_Exec2: + misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME + set @reapercry, 3; + end; + +////////////////////////////////////////////////////// +L_Check3: + void call("alacriuspos", 8); + if (@alacriusp) goto L_Exec3; + void call("alacriuspos", 512); + if (@alacriusp) goto L_Exec3; + + set @reapercry, 0; + misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); + end; + +L_Exec3: + misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME + set @reapercry, 4; + end; + +////////////////////////////////////////////////////// +L_Check4: + void call("alacriuspos", 16); + if (@alacriusp) goto L_Exec4; + void call("alacriuspos", 1024); + if (@alacriusp) goto L_Exec4; + + set @reapercry, 0; + misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); + end; + +L_Exec4: + misceffect FX_FIRE_EXPLOSION, strcharinfo(0); // Hmm FIXME + set @reapercry, 5; + end; + +////////////////////////////////////////////////////// +L_Check5: + void call("alacriuspos", 32); + if (@alacriusp) goto L_Exec5; + void call("alacriuspos", 2048); + if (@alacriusp) goto L_Exec5; + + set @reapercry, 0; + misceffect FX_MAGIC_DARK_EXPLOSION, strcharinfo(0); + end; + +L_Exec5: + // This means cast sequence complete + // Maybe FX_MAGIC_BLUE_TELEPORT? (iilia's effect) + set @reapercry, 0; + misceffect FX_MAGIC_TELEPORT, strcharinfo(0); + warp "099-7", 75, 36; + end; + +////////////////////////////////////////////////////// +OnInit: + set .invocation$, chr(MAGIC_SYMBOL) + "reapercry"; // used in npcs that refer to this spell + registercmd .invocation$, strnpcinfo(0); + end; +} diff --git a/world/map/npc/magic/level2-lightning-strike.txt b/world/map/npc/magic/level2-lightning-strike.txt index 05d358e3..d454abc6 100644 --- a/world/map/npc/magic/level2-lightning-strike.txt +++ b/world/map/npc/magic/level2-lightning-strike.txt @@ -19,6 +19,8 @@ (((200 - Agi) * 3000) / 200), // delay 0, // in_rain 0; // target id (tmp) + if (getequipid(equip_misc1) == 5253 || getequipid(equip_misc2) == 5253) + set @ingravspell[3], @ingravspell[3]*8/10+1; callfunc "magic_exp"; goto L_FreeRecast; -- cgit v1.2.3-60-g2f50