diff options
-rw-r--r-- | db/constants.conf | 1 | ||||
-rw-r--r-- | npc/080-1/final.txt | 4 | ||||
-rw-r--r-- | npc/081-1/dungeon.txt | 130 | ||||
-rw-r--r-- | npc/annuals/xmas/2021.txt | 17 |
4 files changed, 151 insertions, 1 deletions
diff --git a/db/constants.conf b/db/constants.conf index 1f955a10..8a3e1a17 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -3394,6 +3394,7 @@ more than one separator can be used in a row (so 12_3___456 is illegal). X21_BOSSDEFEAT: 1024 X21_ALYSSAINIT: 2048 X21_ALYSSARESCUE: 4096 + X21_COMPLETE: 8192 X21BC1_ON: 1 X21BC1_OFF: 2 diff --git a/npc/080-1/final.txt b/npc/080-1/final.txt index 30ed8a60..4760e672 100644 --- a/npc/080-1/final.txt +++ b/npc/080-1/final.txt @@ -101,9 +101,11 @@ OnInit: sleep2(2000); } - // FIXME: getitem Carrot, 1; // We're done 'XMAS21CUTSCENE=false; + 'XMAS21ENDING=true; + X21ED2_DOCLEAR(); + // FIXME: getitem Carrot, 1; end; diff --git a/npc/081-1/dungeon.txt b/npc/081-1/dungeon.txt index fd125dd0..f23434a1 100644 --- a/npc/081-1/dungeon.txt +++ b/npc/081-1/dungeon.txt @@ -26,4 +26,134 @@ OnInit: end; } +020-1,78,85,0 script Santa Helper#Fake NPC435,{ + function soon; + function complete; + function dowarp; + if (!isChristmas21()) soon(); + if (X21ED2_CLEAR()) complete(); + do + { + mesn; + mesq l("Santa has been so worried this year... What'll I do..."); + select + rif(X21_START(), l("Can you bring me back to Santa?")), + l("[Information]"), + l("Not my problem."), + rif(X21_START(), l("What's the Frontier of Existence?")); + mes ""; + switch (@menu) { + case 1: + dowarp(); end; + case 2: + mesn; + mesq l("Ah, well, you see... Santa has this... uh... unique friend, let's call him."); + next; + mesn; + mesq l("Actually, is it even right to call a skeleton a \"him\"? With them being undead and all... Wait, I'm getting sidetracked here."); + next; + mesn; + mesq l("So, you see, Santa made this friend called %s. Creepy fella, but Santa has never been one to really judge others.", b("Gak")); + next; + mesn; + mesq l("Really, to make friends with undead, I'll never understand these Sages of Kaizei... Damn, I'm really getting sidetracked today. Sorry."); + next; + mesn; + mesq l("Anyway. Santa is worried about Gak. I think it is anniversary of the death of his wife or something. To be honest, how an undead would mourn the dead is so... Sidetracked. Again."); + next; + mesn; + mesq l("Look, you know Santa and Nikolai are both on the same circle, the Sages of Kaizei, right? Nikolai was representing this order during the %s.", "[@@https://forums.themanaworld.org/viewtopic.php?f=1&t=20921|"+l("Doomsday's Sage Council")+"@@]"); + next; + mesn; + mesq l("The biggest meeting of... Sorry. Well, things changed. I don't know how, I'm not a wizard, but Santa went to investigate. Something about cheering his friend up."); + next; + mesn; + mesq l("He is worried with Gak, and we are worried with him; The Sages of Kaizei specialize in transport magic, not on combat magic. If brave adventurers could help him..."); + next; + select + l("Why don't you go yourself?"), + l("Don't worry, I'll help."), + l("Not my business."); + mes ""; + if (@menu == 1) { + mesn; + mesq l("Didn't you hear me earlier? The Sages of Kaizei specialize in transport magic. Geez, and I was the one getting side-tracked here!"); + next; + } + else if (@menu == 2) { + X21_DOSTART(); + mesn; + mesq l("Really? You'll do it? Thank you! That's much appreciated!"); + next; + mesn; + if (getcharid(1) > 0) + mesq l("I hope you and your friends can do it!"); + else + mesq l("You may consider forming a party to do it, but who am I to judge if you want to do it alone!"); + next; + mesn; + mesq l("I can warp you to where Santa is once you're ready. Be prepared. I believe the place is called... %s.", b(l("The Frontier Of Existence"))); + } + break; + case 4: + mesn; + mesq l("Where Santa is, obviously."); + next; + mesn; + mesq l("It's the absolute limit between what exists and what doesn't. If you fall in the æther, you'll cease to exist and nothing can bring you back."); + next; + mesn; + mesq l("...Normally, but whatever the %s set off in motion makes fun of the concept of existence itself.", "[@@https://forums.themanaworld.org/viewtopic.php?f=1&t=20921|"+l("Doomsday's Sage Council")+"@@]"); + next; + mesn; + mesq l("Just be careful, I never even heard about æther before Santa decided to help Gak, so I'm pretty sure the regular magic laws are worthless past this point."); + break; + } + while (@menu != 3); + npctalkonce l("Merry Christmas!"); + closeclientdialog; + close; + +function soon { + mesn; + mesq l("Hey there, %s. It's not Christmas time right now, so I am just appreciating the view.", strcharinfo(0)); + next; + mesn; + mesq l("Christmas Event will happen from %s to %s this year. You can click %s for more details.", b(l("Dec 12th")), b(l("Dec 26th")), "[@@https://forums.themanaworld.org/viewtopic.php?f=68&t=21296|"+l("here")+"@@]"); + close; +} + +function complete { + mesn; + mesq l("Thanks for helping Santa yet again."); + next; + mesn; + mesq l("I believe he has been trading %s... Do you want to meet him again?", getitemlink(AquaTicket)); + next; + if (askyesno() == ASK_YES) dowarp(); + close; +} + +function dowarp { + dispbottom l("Santa Helper : Fly awayyy!!"); + warp "081-1", 58, 103; + closeclientdialog; + close; +} + +OnInit: + .distance=5; + end; +} + + +081-1,56,63,0 script Santa NPC_SANTA,{ + mesn; + mesq l("Hohohoh!"); + close; + +OnInit: + .distance=5; + end; +} diff --git a/npc/annuals/xmas/2021.txt b/npc/annuals/xmas/2021.txt index 05c8a354..9ece85f6 100644 --- a/npc/annuals/xmas/2021.txt +++ b/npc/annuals/xmas/2021.txt @@ -16,6 +16,13 @@ function script X21TYPE { return (getcharid(1) > 0 ? IOT_PARTY : IOT_CHAR); } +function script X21_START { + return (XMAS2021 & X21_ACCEPTED); +} +function script X21_DOSTART { + XMAS2021 = (XMAS2021 | X21_ACCEPTED); +} + function script X21BC1_CLEAR { return (XMAS2021 & X21_BOSSDEFEAT); } @@ -24,6 +31,7 @@ function script X21BC1_DOCLEAR { XMAS2021 = (XMAS2021 | X21_BOSSDEFEAT); return; } + function script X21ED1_CLEAR { return (XMAS2021 & X21_ALYSSARESCUE); } @@ -33,6 +41,15 @@ function script X21ED1_DOCLEAR { return; } +function script X21ED2_CLEAR { + return (XMAS2021 & X21_COMPLETE); +} + +function script X21ED2_DOCLEAR { + XMAS2021 = (XMAS2021 | X21_COMPLETE); + return; +} + function script X21SRLZ { .@n=getarg(0); switch (.@n) { |