diff options
-rw-r--r-- | db/constants.conf | 3 | ||||
-rw-r--r-- | npc/080-3/cutscene.txt | 177 | ||||
-rw-r--r-- | npc/annuals/xmas/2021.txt | 1 |
3 files changed, 178 insertions, 3 deletions
diff --git a/db/constants.conf b/db/constants.conf index 373b8bc8..bd12dc2b 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -3379,7 +3379,8 @@ more than one separator can be used in a row (so 12_3___456 is illegal). comment__: "Christmas 2021 Constants" X21_ACCEPTED: 1 X21_BOSSDEFEAT: 1024 - X21_ALYSSARESCUE: 2048 + X21_ALYSSAINIT: 2048 + X21_ALYSSARESCUE: 4096 X21BC1_ON: 1 X21BC1_OFF: 2 diff --git a/npc/080-3/cutscene.txt b/npc/080-3/cutscene.txt index deedab6b..7a1675db 100644 --- a/npc/080-3/cutscene.txt +++ b/npc/080-3/cutscene.txt @@ -18,14 +18,189 @@ OnTouch: end; } +/* The Story Books */ +080-3,116,116,0 script Book#X21B01 NPC_NO_SPRITE,{ + mes l("Gorrik, member of the Bells Society. Thanks for attending the opera."); + next; + mes l("Along this %s, you will find the instructions regarding the plot to murder Efeniunkanduti Khan, king of Tonori.", getitemlink(OperaMask)); + next; + mes l("It is of utmost importance to find out what happened to Fawkes. Therefore, wear a %s and infiltrate the palace.", getitemlink(JesterMask)); + next; + mes l("Beware Akhendo-Al, prince of Tonori. Even the captain of the palace guard won't get away investigating the fire."); + next; + mes l("-- @@1226|The Silver Bell@@"); + close; +} + +080-3,129,56,0 script Book#X21B02 NPC_NO_SPRITE,{ + mes l("Gorrik's Diary, final entry"); + next; + mes l("I was convinced my friend %s did not die on the explosion which destroyed Tulimshar palace. Therefore, I set out to find the truth about it.", "@@769|Guy Fawkes@@"); + next; + mes l("But I had been fooled. King Khan has been murdered, and I was accused of regicide. All thanks to this accursed %s.", getitemlink(JesterMask)); + next; + mes l("I am sure it was a plot so I would take the fall for the king's murder. However, I still have friends among the guard, whom know I would not kill your majesty. At least, not this way."); + next; + mes l("I'll take a %s, cut all my hair, and use the landbridge to reach the Woodlands. It should be weakly guarded, so hopefully, I'll make it out of Tonori safely.", getitemlink(Scissors)); + next; + mes l("For precaution, I'll also stop using this name. Do not seek for me. For I shall exile myself until the last day of my life."); + close; +} + +080-3,46,80,0 script Book#X21B04 NPC_NO_SPRITE,{ + mes l("Gak's Diary, firsy entry"); + next; + mes l("So my new life begun, and I realized my training as a palace guard did not really cover survival in the wilderness... Or navigation on dense forests."); + next; + mes l("But just when I was about to resign myself to my fate, to die of hunger in the middle of Argaes southeastern forests... I saw what seemed like an illusion."); + next; + mes l("A candy house. With my judgment clouded from hunger, I immediately begun eating the wall, without a care in the world. It was %s!", "@@1281|shocking@@"); + next; + mes l("But suddenly, a witch came out of the cottage. I ran for my life! However, being only used to deserts instead of rainforests, I could not outrun her. I thought my life was over, but..."); + next; + mes l("...instead, she just scolded me. Told me how difficult was to maintain a sweet house. I never felt so much shame in my life, it was worse than if I had actually killed the king!"); + next; + mes l("From now on, I'll be a witch's apprentice, to repay for what I ate. I am nervous, but... also glad for this chance, to rebuild my life, far from the conspiracies and backstabbings of Tulimshar court."); + close; +} + +080-3,64,120,0 script Book#X21B05 NPC_NO_SPRITE,{ + mes l("Report to Hurnscald Government, year unknown."); + next; + mesn strcharinfo(0); + mes l("It describes a brutal goblin attack which decimated a small settlement southwest of Hurnscald, called Turnap."); // Later became known as Asphodel Moors + next; + mesn strcharinfo(0); + mes l("Apparently, the citizens there tried using %s to thwart goblin attacks, but did not account for the clan system of the goblin society.", getitemlink(GoblinMask)); + next; + mesn strcharinfo(0); + mes l("...Needless to say, the goblins thought it was an invading tribe and decimated the town, killing and destroying anything on the vicinity. There has been ##Bno survivors##b."); + next; + mes l("The farthest body found was of a man called \"Gak\". According to the report, he likely tried to run away from the town alone but did not made it."); + close; +} + +080-3,98,90,0 script Package#X21B06 NPC_NO_SPRITE,{ + mesn strcharinfo(0); + mes l("This bag is full of pictures. I'll briefly describe them."); + next; + mes l("1. A woman wearing a %s, close to a tall man whose face is obscured by an %s.", getitemlink(WitchHat), getitemlink(OperaMask)); + next; + mes l("2. A photo of Asphodel Moors, back when it was inhabited by living beings."); + next; + mes l("3. A photo of a candy cottage. There's a man tending to it, but his face is not visible."); + next; + mes l("4. A photo of two great dragons clashing against a raging one."); + next; + mes l("5. The woman from the first photo, but without her hat and... floating? hovering? well, she is lying above the abyss."); + close; +} + + // FIXME: Alissa's NPC ID -008-3,85,52,0 script Alissa#ED1 NPC106,{ +080-3,85,52,0 script Alissa#ED1 NPC106,{ + function rushed; + function ending; + if (.stable == 6) ending(); mesn; mesq l("..."); + next; + mesn strcharinfo(0); + mesq l("Alissa seems unresponsive, as if her mind wasn't fully back in the world yet."); + next; + mesn strcharinfo(0); + mesq l("Perhaps I could ##Bshow her##b something?"); + next; + select + l("I really don't know what to show."), + l("A Mask of Blinking Evil"), + l("An Opera Mask"), + l("A Jester Mask"), + l("A Witch's Hat"), + l("A Goblin Mask"), + l("A Fawkes Mask"), + l("Some Scissors"), + l("A Shock Sweet"); + mes ""; + if (@menu < 1) { closeclientdialog; close; } + if (.memory & (2 ** @menu)) { + mesn strcharinfo(0); + mesq l("...I already showed her that."); + close; + } + + /* First Cutscene */ + switch (@menu) { + case 2: // Blinking Mask + rushed(5); + mesc l("Suddenly, Alissa's eyes shot open."); + next; + mesn; + mesq l("...Gorrik is... Alive...?"); + break; + case 3: // Opera Mask + rushed(); + break; + case 4: // Jester Mask + rushed(3); + mesn; + mesq l("...I remember... Running from a coup'detat..."); + next; + mesn; + mesq l("...What happened... to him...?"); + break; + case 5: // Witch Hat + rushed(1); + mesn; + mesq l("...Gorrik..."); + break; + case 6: // Goblin Mask + rushed(4); + mesn; + mesq l("...Yes... A slaughter..."); + break; + case 7: // Fawkes Mask + rushed(); + break; + case 8: // Scissors + rushed(2); + mesn; + mesq l("...His... Past?"); + break; + case 9: // Shock Candy + rushed(0); + mesn; + mesq l("...The Candy House..."); + break; + } + .memory = .memory | (2 ** @menu); close; +function rushed { + if (.stable == getarg(0, -1)) { .stable+=1; return; } + mesn strcharinfo(0); + mesq l("...No, I should look for more clues before showing this item."); + close; +} + +function ending { + // FIXME: Final Cutscene + end; + + mesn; + mesq l("What happened to Gorrik...?"); + next; + select + l("[Tell her the truth]"), + l("[Tell her the truth]"); + .stable += 1; + close; +} + OnInit: .distance=4; + .stable=0; + .memory=0; end; } diff --git a/npc/annuals/xmas/2021.txt b/npc/annuals/xmas/2021.txt index 767bbfd1..f871fb4c 100644 --- a/npc/annuals/xmas/2021.txt +++ b/npc/annuals/xmas/2021.txt @@ -24,7 +24,6 @@ function script X21BC1_DOCLEAR { XMAS2021 = (XMAS2021 | X21_BOSSDEFEAT); return; } - function script X21ED1_CLEAR { return (XMAS2021 & X21_ALYSSARESCUE); } |