summaryrefslogtreecommitdiff
path: root/world/map
diff options
context:
space:
mode:
Diffstat (limited to 'world/map')
-rw-r--r--world/map/db/mob_db.conf1
-rw-r--r--world/map/db/mob_db_0_19.txt2
-rw-r--r--world/map/npc/009-2/airlia.txt50
-rw-r--r--world/map/npc/annuals/2022.txt97
-rw-r--r--world/map/npc/annuals/fathertime.txt18
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: