diff options
Diffstat (limited to 'world/map')
-rw-r--r-- | world/map/db/mob_db.conf | 1 | ||||
-rw-r--r-- | world/map/db/mob_db_0_19.txt | 2 | ||||
-rw-r--r-- | world/map/npc/009-2/airlia.txt | 50 | ||||
-rw-r--r-- | world/map/npc/annuals/2022.txt | 97 | ||||
-rw-r--r-- | world/map/npc/annuals/fathertime.txt | 18 |
5 files changed, 137 insertions, 31 deletions
diff --git a/world/map/db/mob_db.conf b/world/map/db/mob_db.conf index b766b2ec..175169fb 100644 --- a/world/map/db/mob_db.conf +++ b/world/map/db/mob_db.conf @@ -6813,6 +6813,7 @@ mob_db: ( AttackMotion: 672 DamageMotion: 480 Drops: { + Naftalin: 4000 MaggotSlime: 800 CactusDrink: 150 BugLeg: 400 diff --git a/world/map/db/mob_db_0_19.txt b/world/map/db/mob_db_0_19.txt index 661e0ca6..74e1f1c9 100644 --- a/world/map/db/mob_db_0_19.txt +++ b/world/map/db/mob_db_0_19.txt @@ -20,6 +20,6 @@ 1105, ViciousSquirrel, ViciousSquirrel, 15, 140, 1, 35, 7, 1, 20, 25, 1, 6, 0, 3, 3, 1, 0, 15, 40, 9, 10, 1, 3, 10, 133, 800, 800, 672, 480, 704, 7000, 680, 1000, 681, 1000, 682, 1000, 683, 1000, 807, 800, 4005, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15 1135, LovelyMaggot, LovelyMaggot, 1, 50, 0, 1, 1, 1, 69, 6969, 0, 5, 0, 5, 5, 1, 0, 6, 5, 9, 10, 1, 3, 11, 133, 200, 1872, 672, 480, 505, 400, 501, 70, 518, 200, 533, 75, 502, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 1136, LesserGhost, LesserGhost, 1, 1, 0, 1, 1, 0, 150, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 10, 1, 1, 17, 131, 340, 1800, 672, 950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20 -1162, Grinchboo, Grinchboo, 5, 50, 0, 6, 1, 1, 5, 10, 0, 5, 0, 1, 1, 1, 0, 6, 5, 9, 10, 1, 3, 11, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 527, 50, 527, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +1162, Grinchboo, Grinchboo, 5, 50, 0, 6, 1, 1, 5, 10, 0, 5, 0, 1, 1, 1, 0, 6, 5, 9, 10, 1, 3, 11, 129, 800, 1872, 672, 480, 5288, 4000, 505, 800, 501, 150, 518, 400, 527, 50, 527, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 1165, ChristmasGift, ChristmasGift, 1, 1, 0, 1, 1, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 742, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 1172, Bif, Bif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 1200, 640, 1000, 4001, 800, 5292, 500, 763, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 diff --git a/world/map/npc/009-2/airlia.txt b/world/map/npc/009-2/airlia.txt index 8aaecd82..74dbd247 100644 --- a/world/map/npc/009-2/airlia.txt +++ b/world/map/npc/009-2/airlia.txt @@ -46,8 +46,8 @@ goto L_Caretaker; L_Caretaker: - mes "[Airlia]"; - mes "\"Greetings. Do you need a housing permit, or to license your shop?\""; + mesn; + mesq l("Greetings. Do you need a housing permit, or to license your shop?"); next; if (QUEST_Graveyard_Caretaker < @Q_STATUS_RECIEVED_FIRST_LETTER) menu @@ -61,27 +61,27 @@ L_Caretaker: goto L_Next; L_Next: - mes "[Airlia]"; + mesn; mes "\"Nobody ever does...\""; close; L_mount: - mes "[Airlia]"; + mesn; mesq l("Yes, some adventurers set up their own shops. However, unless they have citizenship, they're not allowed in Hurnscald without paying a symbolic monthly fee of 100,000,000 GP."); next; - mes "[Airlia]"; + mesn; mesq l("This is a measure to protect Hurnscald domestic trade, I hope you understand. However, you can still set a shop in Tulimshar Bazaar, where [@@https://wiki.themanaworld.org/index.php/Classic:ManaMarket|ManaMarket@@] is."); next; - mes "[Airlia]"; + mesn; mesq l("Anyone can set up their own shop in the Bazaar, but they'll be rate-limited, so there's a limit of trades it can do. You can also ask for official approval to be immune to this, I advise reading [@@https://forums.themanaworld.org/viewtopic.php?t=20882|these suggestions@@] which make more likely to acquire approval."); next; - mes "[Airlia]"; + mesn; mesq l("But you pretty much must ask an admin and follow the game rules, and the team will decide. Ah, I fear if they don't lift this restriction I'll be without a job, but at least I'm not the Constable in charge of policing the town."); close; L_first_reward: - mes "[Airlia]"; - mes "\"Oh! Thank you very, very much! Please take this for your trouble.\""; + mesn; + mesq l("Oh! Thank you very, very much! Please take this for your trouble."); if (@LETTER_REWARD_GOLD_INITIAL > 0) mes "[" + @LETTER_REWARD_GOLD_INITIAL + " GP]"; if (@LETTER_REWARD_EXP_INITIAL > 0) @@ -92,8 +92,8 @@ L_first_reward: close; L_later_rewards: - mes "[Airlia]"; - mes "\"Oh! Thank you very, very much! Please take this for your trouble.\""; + mesn; + mesq l("Oh! Thank you very, very much! Please take this for your trouble."); if (@LETTER_REWARD_GOLD > 0) mes "[" + @LETTER_REWARD_GOLD + " GP]"; if (@LETTER_REWARD_EXP > 0) @@ -104,8 +104,8 @@ L_later_rewards: close; L_intro: - mes "[Airlia]"; - mes "\"My poor father, doomed to that awful cemetery.\""; + mesn; + mesq l("My poor father, doomed to that awful cemetery."); next; // CASE REMOVED: @@ -125,7 +125,7 @@ L_intro: goto L_Next3; L_Next3: - mes "[Airlia]"; + mesn; mes "\"You know, there are many who believe that each time the undead rise after being killed, they lose mana."; mes "Eventually, there will not be enough mana for them to rise again and they can be at rest. Do you believe this is true?\""; next; @@ -135,12 +135,12 @@ L_Next3: "No, that is not proven.", L_Next1; L_Next1: - mes "[Airlia]"; + mesn; mes "\"Oh...\""; close; L_intro_mana_loss: - mes "[Airlia]"; + mesn; mes "\"When I am not working, I recruit help for the esteemed Fighters of the Undead, or FoU."; mes "They are an official group effort of the Warriors' Guild and Magicians, you know, a very prestigious group.\""; next; @@ -150,7 +150,7 @@ L_intro_mana_loss: "Keep up the good work. I have to go now, bye.", L_Close; L_intro_fou: - mes "[Airlia]"; + mesn; mes "\"If we drain those evil creatures of their mana, I can get my father back. He is getting very old. Will you help us?\""; next; menu @@ -159,7 +159,7 @@ L_intro_fou: "Thanks, but no thanks. I have other business to attend to.", L_Close; L_intro_fight: - mes "[Airlia]"; + mesn; mes "\"Great, just kill any of the undead creatures you can and bring me proof of your work, and I will put in a word for you with the guild.\""; next; menu @@ -171,13 +171,13 @@ L_Next2: goto L_Close; L_intro_proof: - mes "[Airlia]"; + mesn; mes "\"Let's say " + @FETCH_AMOUNT_INITIAL + " " + getitemlink(@FETCH_LABEL_INITIAL$) + "s. You don't know how much this means to me, thank you.\""; set QUEST_Airlia, @Q_STATUS_HELP_AIRLIA; close; L_Fetch: - mes "[Airlia]"; + mesn; mes "\"Thank you for helping my father.\""; next; mes "\"Have you collected the " + @FETCH_AMOUNT_INITIAL + " " + getitemlink(@FETCH_LABEL_INITIAL$) + "?\""; @@ -200,7 +200,7 @@ L_Fetch: L_Fetch_initial_reward: if (countitem(@FETCH_LABEL_INITIAL$) < @FETCH_AMOUNT_INITIAL) goto L_Fetch_not_enough; - mes "[Airlia]"; + mesn; mes "\"Excellent work. You are definitely a great warrior. I will tell the guild of your deeds.\""; if (@FETCH_REWARD_GOLD_INITIAL > 0) mes "[" + @FETCH_REWARD_GOLD_INITIAL + " GP]"; @@ -211,7 +211,7 @@ L_Fetch_initial_reward: getexp @FETCH_REWARD_EXP_INITIAL, 0; set QUEST_Airlia, @Q_STATUS_INITIAL_FETCH_REWARDED; next; - mes "[Airlia]"; + mesn; // TODO: Write the dialogue when I'm not tired... mes "\"Oh, before you leave. We all must do what we can to stop this tragedy."; mes "If you are willing to keep draining the undead of mana, I will give you what gold I can afford as a token of my gratitude.\""; @@ -220,7 +220,7 @@ L_Fetch_initial_reward: L_Fetch_later_rewards: if (countitem(@FETCH_LABEL$) < @FETCH_AMOUNT) goto L_Fetch_not_enough; - mes "[Airlia]"; + mesn; mes "\"Excellent work. You are definitely a great warrior.\""; if (@FETCH_REWARD_GOLD > 0) mes "[" + @FETCH_REWARD_GOLD + " GP]"; @@ -232,12 +232,12 @@ L_Fetch_later_rewards: close; L_Fetch_not_enough: - mes "[Airlia]"; + mesn; mes "\"I'm sorry, I didn't realize you couldn't count. Perhaps when I have some free time, I can help you learn if you'd like.\""; close; L_Rewarded: - mes "[Airlia]"; + mesn; mes "\"Thank you for your help.\""; next; mes "\"Have you collected the " + @FETCH_AMOUNT + " " + getitemlink(@FETCH_LABEL$) + "s?\""; diff --git a/world/map/npc/annuals/2022.txt b/world/map/npc/annuals/2022.txt index 3c2d4dbb..58b9fa27 100644 --- a/world/map/npc/annuals/2022.txt +++ b/world/map/npc/annuals/2022.txt @@ -286,3 +286,100 @@ OnInit: end; } + +020-1,78,85,0|script|Santa#X2022|200 +{ + mesn l("Santa Claus"); + mesq l("Hey folks! I was using [@@5288|@@] to foil Baltashar attempts to ruin Christmas for the poor kids, but the plan turned against me this time! Hohoho!"); + next; + mesn l("Santa Claus"); + mesq l("That's because I forgot Jack Frost existed, hohoho! So, if you could collect the [@@5288|@@] back to me... Well, you would get a Christmas gift, that's for sure, hohoho!"); + next; + mesn l("Santa Claus"); + mesq l("I recovered "+$XMAS2022+" [@@5288|@@]. From these, you gave me "+XMAS2022+" [@@5288|@@]. Grinchboos have them but they only appear every hour in four maps, and the others were lost to time, so... Do you want to give me some more?"); + next; + menu + "Deliver", L_Deliver, + "Scoreboards", L_Scores, + "I'll get to it.", L_Close; + +L_Deliver: + set XMAS2022, XMAS2022 + countitem(Naftalin); + set $XMAS2022, $XMAS2022 + countitem(Naftalin); + delitem Naftalin, countitem(Naftalin); + set @loop, 0; + set @rank, 0; + goto L_MaybeInsertNext; + +L_MaybeInsertNext: + if (XMAS2022 > $Record_XXXmas_Kills[@rank]) + goto L_InsertScore; + // you already had a better score + if (strcharinfo(0) == $Record_XXXmas_Name$[@rank]) + goto L_Scores; + set @rank, @rank + 1; + if (@rank == MAX_HIGH_SCORES) + goto L_Scores; + goto L_MaybeInsertNext; + +L_InsertScore: + set @loop, @rank; + goto L_FindLastScore; + +L_FindLastScore: + // comment this out to allow the player to be in the list more than once + // though actually, it might be better just to assume the list is full + if (strcharinfo(0) == $Record_XXXmas_Name$[@loop]) + goto L_MoveStuff; + + set @loop, @loop + 1; + if (@loop == MAX_HIGH_SCORES) + goto L_MoveStuff; + goto L_FindLastScore; + +L_MoveStuff: + if (@loop == @rank) + goto L_FinallyInsertMe; + set $Record_XXXmas_Kills[@loop], $Record_XXXmas_Kills[@loop - 1]; + set $Record_XXXmas_Name$[@loop], $Record_XXXmas_Name$[@loop - 1]; + set $Record_XXXmas_Date$[@loop], $Record_XXXmas_Date$[@loop - 1]; + set @loop, @loop - 1; + goto L_MoveStuff; + +L_FinallyInsertMe: + set $Record_XXXmas_Kills[@rank], XMAS2022; + set $Record_XXXmas_Name$[@rank], strcharinfo(0); + callfunc "time_stamp"; + set $Record_XXXmas_Date$[@rank], @ts_date$ + " " + @ts_time$; + set @ts_date$, ""; + set @ts_time$, ""; + goto L_Scores; + +L_Scores: + set @rank, 0; + set @loop, 0; + goto L_ShowNextRecord; + +L_ShowNextRecord: + if ($Record_XXXmas_Kills[@loop] == 0) + goto L_Close; + mes (@loop + 1) + " - " + $Record_XXXmas_Name$[@loop] + " - " + $Record_XXXmas_Kills[@loop] + " [@@5288|@@] delivered at " + $Record_XXXmas_Date$[@loop]; + set @loop, @loop + 1; + if (MAX_HIGH_SCORES > 4 && (@loop % 5) == 0 && $Record_XXXmas_Kills[@loop] > 0) + goto L_NextShowNextRecord; + goto L_ShowNextRecord; + +L_NextShowNextRecord: + next; + goto L_ShowNextRecord; + +L_Close: + close; +} + +// Override mapflags for Christmas 2022 +033-1|mapflag|town +034-1|mapflag|town +046-1|mapflag|town +047-1|mapflag|town + diff --git a/world/map/npc/annuals/fathertime.txt b/world/map/npc/annuals/fathertime.txt index 0670c3c9..c38eae2a 100644 --- a/world/map/npc/annuals/fathertime.txt +++ b/world/map/npc/annuals/fathertime.txt @@ -7,7 +7,7 @@ OnInit: if (debug >= 2) end; donpcevent strnpcinfo(0) + "::OnTimer20000"; - end; + goto L_Clock; OnTimer20000: donpcevent "#XmasConfig::OnCommandRestartQuest"; @@ -66,6 +66,14 @@ OnClock2313: goto L_Clock; L_Clock: + // Christmas 2022 code, remove it later + areamonster "034-1", 20, 20, 160, 110, "", 1162, 64; + areamonster "033-1", 20, 20, 120, 110, "", 1162, 64; + areamonster "046-1", 20, 20, 160, 115, "", 1162, 64; + areamonster "047-1", 20, 20, 200, 180, "", 1162, 240; + announce "Santa : Ho ho ho, I see a huge movement by the grinchboos!", 0; + + // Official code below: if (gettime(4) == 5) goto L_Friday; if (gettime(4) == 6) @@ -81,18 +89,18 @@ L_Friday: end; L_Pirate: - set $@BLANC, (getusers(1) / 5) + 1; + set $@BLANC, (getusers(1) / 4) + 1; areamonster "001-1", 20, 20, 120, 120, "Blanc's Minion", 1121, $@BLANC, "#HolidayConfig::OnLameShield"; areamonster "002-1", 20, 20, 120, 120, "Blanc's Minion", 1119, $@BLANC, "#HolidayConfig::OnLameShield"; - areamonster "003-4", 20, 20, 170, 120, "Blanc's Minion", 1122, 1, "#HolidayConfig::OnLameHat"; + areamonster "003-4", 20, 20, 170, 120, "Blanc's Minion", 1122, 2, "#HolidayConfig::OnLameHat"; areamonster "004-1", 20, 20, 100, 110, "Blanc's Minion", 1120, $@BLANC, "#HolidayConfig::OnLameShield"; areamonster "007-1", 20, 20, 120, 100, "Blanc's Minion", 1120, $@BLANC, "#HolidayConfig::OnLameShield"; areamonster "011-6", 20, 140, 180, 280, "Blanc's Minion", 1121, $@BLANC, "#HolidayConfig::OnLameShield"; - areamonster "018-1", 20, 20, 180, 100, "Blanc's Minion", 1122, 1, "#HolidayConfig::OnLameHat"; + areamonster "018-1", 20, 20, 180, 100, "Blanc's Minion", 1122, 2, "#HolidayConfig::OnLameHat"; areamonster "041-1", 20, 20, 75, 100, "Blanc's Minion", 1119, $@BLANC, "#HolidayConfig::OnLameShield"; areamonster "042-1", 20, 20, 140, 120, "Blanc's Minion", 1120, $@BLANC, "#HolidayConfig::OnLameShield"; areamonster "043-1", 20, 20, 100, 130, "Blanc's Minion", 1121, $@BLANC, "#HolidayConfig::OnLameShield"; - areamonster "057-1", 20, 60, 150, 100, "Blanc's Minion", 1122, 1, "#HolidayConfig::OnLameHat"; + areamonster "057-1", 20, 60, 150, 100, "Blanc's Minion", 1122, 2, "#HolidayConfig::OnLameHat"; end; OnFriday: |