summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicksha <Micksha@users.noreply.github.com>2018-10-05 22:15:07 +0200
committerMicksha <Micksha@users.noreply.github.com>2018-11-05 21:34:37 +0100
commit862551f1341356d88a4b969a90f1c98de82067dc (patch)
treedbe90fc525986bc1ebc909af212e96009886f9bf
parente60f059545cdfaefcb6821fdbb8809ccfa9f265a (diff)
downloadserverdata-862551f1341356d88a4b969a90f1c98de82067dc.tar.gz
serverdata-862551f1341356d88a4b969a90f1c98de82067dc.tar.bz2
serverdata-862551f1341356d88a4b969a90f1c98de82067dc.tar.xz
serverdata-862551f1341356d88a4b969a90f1c98de82067dc.zip
Trying to add some NPCs for Hurns
-rw-r--r--db/constants.conf30
-rw-r--r--npc/001-2-33/_warps.txt4
-rw-r--r--npc/001-2-36/_warps.txt2
-rw-r--r--npc/001-2-4/_warps.txt2
-rw-r--r--npc/008-1/_import.txt2
-rw-r--r--npc/008-1/hinnak.txt354
-rw-r--r--npc/008-1/lumberjack.txt19
-rw-r--r--npc/008-2-0/_import.txt1
-rw-r--r--npc/008-2-0/celestia.txt20
-rw-r--r--npc/008-2-1/_import.txt4
-rw-r--r--npc/008-2-1/generalstore.txt20
-rw-r--r--npc/008-2-1/inspector.txt20
-rw-r--r--npc/008-2-1/richard.txt20
-rw-r--r--npc/008-2-1/selim.txt19
-rw-r--r--npc/008-2-10/_import.txt1
-rw-r--r--npc/008-2-10/airlia.txt20
16 files changed, 534 insertions, 4 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 7b38651b..f7f4feaf 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -4028,6 +4028,33 @@ constants_db: {
NPC_OSCAR: 145
NPC_SHOP_BAG_TEST: 146
NPC_RED: 147
+ NPC_KOGA: 148
+ NPC_OLD_LADY: 149
+ NPC_ARKIM: 150
+ NPC_YOUNG_MAN_APPRENTICE: 151
+ NPC_YOUNG_MAN_KFAHR: 152
+ NPC_INSPECTOR: 153
+ NPC_SUSPICIOUS_TRADER: 154
+ NPC_GENERAL STORE: 155
+ NPC_TRAVELLER_DRUID: 156
+ NPC_DARK_DRUID: 157
+ NPC_AIRLIA: 158
+ NPC_NICHOLAS: 159
+ NPC_BLONDE_APPRENTICE: 160
+ NPC_GIRL_MILLY: 161
+ NPC_OLANA: 162
+ NPC_DESERT_HAT_MAN 163
+ NPC_YOUNG_MAN_IN_PINK: 164
+ NPC_WAITRESS_LEGACY: 165
+ NPC_WIZARD: 166
+ NPC_LORA_TAY: 167
+ NPC_DOCTOR_LEGACY: 168
+ NPC_BOY_MIKE: 169
+ NPC_CELESTIA: 170
+ NPC_GUMI_THE_DYER: 171
+ NPC_DIMOND: 172
+ NPC_CHEF_LEGACY: 173
+ NPC_DIMONDS_WAITRESS: 174
NPC_CONFUSED_TREE: 400
NPC_ALIGE: 401
@@ -4079,6 +4106,9 @@ constants_db: {
NPC_MOUBOO: 449
NPC_MONA: 450
NPC_MELINDA: 451
+ NPC_LUMBERJACK: 452
+ NPC_HINNAK: 453
+ NPC_RICHARD_LEGACY: 454
NPC_TEST1: 800
NPC_PLAYER: 801
diff --git a/npc/001-2-33/_warps.txt b/npc/001-2-33/_warps.txt
index 73adf059..2b27d09e 100644
--- a/npc/001-2-33/_warps.txt
+++ b/npc/001-2-33/_warps.txt
@@ -46,8 +46,8 @@ OnInit:
doorInit;
}
-001-2-33,45,30,0 warp #001-2-33_45_30 0,0,001-2-38,24,28
-001-2-33,23,30,0 warp #001-2-33_23_30 0,0,001-2-37,36,28
+001-2-33,45,28,0 warp #001-2-33_45_28 0,0,001-2-38,24,28
+001-2-33,23,28,0 warp #001-2-33_23_28 0,0,001-2-37,36,28
001-2-33,25,40,0 warp #001-2-33_25_40 2,0,001-2-40,27,46
001-2-33,43,40,0 warp #001-2-33_43_40 2,0,001-2-40,45,46
001-2-33,34,46,0 warp #001-2-33_34_46 0,0,001-1,57,42
diff --git a/npc/001-2-36/_warps.txt b/npc/001-2-36/_warps.txt
index 530050a7..389a06e4 100644
--- a/npc/001-2-36/_warps.txt
+++ b/npc/001-2-36/_warps.txt
@@ -1,3 +1,3 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 001-2-36: unnamed warps
-001-2-36,37,30,0 warp #001-2-36_37_30 0,0,001-2-34,24,29
+001-2-36,37,29,0 warp #001-2-36_37_29 0,0,001-2-34,24,29
diff --git a/npc/001-2-4/_warps.txt b/npc/001-2-4/_warps.txt
index 73e39877..af130c27 100644
--- a/npc/001-2-4/_warps.txt
+++ b/npc/001-2-4/_warps.txt
@@ -1,7 +1,7 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 001-2-4: Library warps
001-2-4,48,41,0 warp #001-2-4_48_41 0,0,001-1,51,81
-001-2-4,57,27,0 warp #001-2-4_57_27 3,0,001-2-6,57,36
+001-2-4,57,26,0 warp #001-2-4_57_26 3,0,001-2-6,57,36
001-2-4,52,27,0 script #001-2-4_52_27_h NPC_HIDDEN,0,0,{
OnTouch:
warp "001-2-5", 28, 37;
diff --git a/npc/008-1/_import.txt b/npc/008-1/_import.txt
index b7797bf0..444d8d9f 100644
--- a/npc/008-1/_import.txt
+++ b/npc/008-1/_import.txt
@@ -4,5 +4,7 @@
"npc/008-1/_warps.txt",
"npc/008-1/confused-tree.txt",
"npc/008-1/doors.txt",
+"npc/008-1/hinnak.txt",
+"npc/008-1/lumberjack.txt",
"npc/008-1/mapflags.txt",
"npc/008-1/wateranimation.txt",
diff --git a/npc/008-1/hinnak.txt b/npc/008-1/hinnak.txt
new file mode 100644
index 00000000..9fbcb959
--- /dev/null
+++ b/npc/008-1/hinnak.txt
@@ -0,0 +1,354 @@
+// Evol scripts.
+// Author:
+// gumi, Micksha
+// Quest states:
+// [1] 0 - cannot do the quest
+// [1] 1 - can do the quest
+// [1] 2 - hinnak asked for help
+// [1] 3 - helped hinnak
+// [2] kill counter
+// Description:
+
+// Hinnak needs help to get rid of the same stuff than ever.
+
+008-1,270,74,0 script Hinnak#008-1 NPC_HINNAK,{
+
+ if (BaseLevel < .min_level)
+ {
+ npctalk3 generic(1 | 16 | 64);
+ end;
+ }
+
+ function hinn_new_player
+ {
+ if(getequipid(EQI_HEAD_TOP) == .bad_hat)
+ {
+ narrator 4,
+ l("The farmer lunges at you with a farming implement.");
+ heal -50, 0;
+
+ selectd
+ l("I'm out of here."),
+ l("Whoa, what are you doing?");
+
+ if (@menu == 1)
+ {
+ return;
+ }
+
+ speech 4 | 1,
+ l("Sorry, you look like a pinkie."),
+ l("They've been destroying my fields, and I guess I got a bit worked up.");
+ }
+
+ else
+ {
+ speech 4,
+ l("Argh!"),
+ l("I hate them!"),
+ l("I @#$% hate them!"),
+ l("I @#$% hate these @#$% pinkies!");
+
+ selectd
+ l("You need some anger control therapy."),
+ l("Why do you hate them?");
+
+ if (@menu == 1)
+ {
+ return;
+ }
+
+ speech 4 | 1,
+ l("These @#$% beasts are jumping around in my fields destroying all my harvest."),
+ l("But they are too fast."),
+ l("I can't catch them.");
+ }
+
+ selectd
+ l("Want me to help you?");
+
+ speech 4 | 1,
+ l("Yes, you look quite fast."),
+ l("Maybe you can catch some of them."),
+ l("That will pay them a lesson."),
+ l("Slay some of them and bring me %d of their antennae.", .drop_count);
+
+ setq .quest, 2, 0;
+
+ selectd
+ l("How much is this worth to you?");
+
+ speech 1,
+ l("Well, I can't offer you much."),
+ l("But I got an old scythe laying around."),
+ l("Maybe you can use it as a weapon.");
+
+ close;
+ }
+
+ function hinn_help
+ {
+ if (getequipid(EQI_HEAD_TOP) == .bad_hat)
+ {
+ narrator 4,
+ l("The farmer glares at your hat.");
+ }
+
+ speech 4,
+ l("Have you got the %d antennae?", .drop_count);
+
+ selectd
+ l("Not yet, but I am working on it."),
+ rif(countitem(.monster_drop) >= .drop_count, l("Sure, here they are!"));
+
+ if (@menu == 1)
+ {
+ return;
+ }
+
+ if (getq2(.quest) < .kill_count)
+ {
+ speech 1,
+ l("Don't try to fool me!"),
+ l("I know you didn't kill them yourself!"),
+ l("Kill at least %d pinkies and come back.", .kill_count);
+ close;
+ }
+
+ speech 1,
+ l("Thank you very much"),
+ l("As promised, here's my old scythe."),
+ l("Maybe you can use it as a weapon."),
+ l("It is a bit cumbersome but its strikes are deadly.");
+
+ if (countitem(.monster_drop) >= .drop_count)
+ {
+ delitem .monster_drop, .drop_count;
+ getitem .reward_item, 1;
+ Zeny += .reward_money;
+ //getexp .reward_exp, 0;
+ setq .quest, 3;
+ }
+ close;
+ }
+
+ function hinn_thanks
+ {
+ if (getequipid(EQI_HEAD_TOP) == .bad_hat)
+ {
+ speech 4,
+ l("That better be a trophy on your head.");
+
+ selectd
+ l("It is.");
+
+ speech 4 | 1,
+ l("Good then."),
+ l("Thanks for your help with the pinkies.");
+ }
+
+ else
+ {
+ speech 4,
+ l("Good to see you again."),
+ l("Thanks again for helping me with the pinkies!");
+ }
+
+ selectd
+ l("Sure, any time!"),
+ l("Anything else you want me to do?"),
+ l("You're welcome. Bye!");
+
+ if (@menu == 3)
+ {
+ return;
+ }
+
+ speech 4 | 1,
+ l("Actually, it's been a long day."),
+ l("If it's no trouble, could you get me a %s?",
+ getitemlink(.drink_item));
+
+ selectd
+ rif(countitem(.drink_item) >= 1, l("Here you are.")),
+ l("Sure, I'll go get one. Bye!"),
+ l("You shouldn't drink while working!");
+
+ do
+ {
+ switch (@menu)
+ {
+ case 2: return;
+ case 3:
+ speech 1,
+ l("Well, I'm done for the day, and I'm quite old enough to decide when I can have a %s, thank you!",
+ getitemname(.drink_item));
+ selectd
+ rif(countitem(.drink_item) >= 1, l("Sorry... here you are.")),
+ l("I don't have any.");
+ break;
+ default:
+ if (countitem(.drink_item) < 1)
+ {
+ return;
+ }
+ delitem .drink_item, 1;
+
+ narrator 4 | 8 | 2 | 1,
+ l("%s takes a sip.", .name$);
+
+ speech 4,
+ l("Aaah!"),
+ l("Nothing like a well-deserved %s after a long day of tending the crops!",
+ getitemname(.drink_item)),
+ l("Thanks, that was very kind of you!");
+
+ narrator 4 | 8 | 1 | 2,
+ l("He takes another sip.");
+
+ speech 4,
+ l("Thanks!"),
+ l("You know, I had the strangest thing happen to me."),
+ l("I had this patch of ground that was really clumpy; lots of clay, you see."),
+ l("Right over there."),
+ // TODO: move cam to the spot
+ l("Looks much better now, doesn't it?"),
+ // TODO: restore cam
+ l("But how I got there is kind of scary..."),
+ l("I'd been trying to break it up for a while, but that kind of work is a pain."),
+ l("So my wife said that I should go and see the witch, just in case she knows something."),
+ l("And sure enough I ask the witch, and she has a look at it."),
+ l("“Nothing I can do”, she says, “but I can ask a friend”."),
+ l("So the next day another witch shows up."),
+ l("Gorgeous woman, but when she looked at me, the scares went scuttling down my spine..."),
+ l("First thing she asked was if I'm a farmer."),
+ l("Said her friend had told her that I needed help."),
+ l("I show her what the problem is, and she tells me to go inside and wait.");
+
+ narrator 4 | 8 | 1 | 2,
+ l("%s drains his mug in one long sip, then hesitates.", .name$);
+
+ speech 4,
+ l("So I go inside."),
+ l("I'm barely in when it starts raining outside, pouring cats and mouboos!"),
+ l("Not so weird, perhaps, except that it was been bright and sunny just a second before!"),
+ l("So I rush out, my wife telling me to leave the witch alone, and I see her standing there in the middle of the rain..."),
+ l("None of the raindrops touched her, as if they were afraid!"),
+ l("Then she yells out some gobbledygook word, and out of the ground there comes a swarm of maggots, crawling and digging and climbing over each other's backs..."),
+ // XXX: maybe here insert a reference to SUSAN?
+ l("And then she turns to me!"),
+ l("Seeing her gaze, for a moment there I thought she would turn me into a pinkie, for sure..."),
+ l("But all she says is, “had you stayed inside, you wouldn't be wet now”.");
+
+ selectd
+ l("Hahaha!"),
+ l("Whoah, scary..."),
+ l("What was that gobbledygook word?"),
+ l("I better go now. Bye.");
+
+ switch (@menu)
+ {
+ case 1:
+ speech 1,
+ l("Yeah, funny now..."),
+ l("But you should've seen that gaze!"),
+ l("Ah, well, never mind.");
+ close;
+ case 2:
+ speech 1,
+ l("Yeah, you could say that...");
+ close;
+ case 3:
+ speech 1,
+ l("Oh, I can't be sure..."),
+ l("But something like “Nanaj princino”, I think."); // this is "Dwarven Princess" translated to Esperanto
+ close;
+ }
+ return;
+ }
+ } while(true);
+ }
+
+ // OnTalk:
+
+ if (getq(.quest_inspector) == 11)
+ {
+ selectd
+ l("Did you see anyone in a mask come by here at night?"),
+ l("Did you see anyone with a large satchel come by here at night?"),
+ l("Hello.");
+
+ switch (@menu)
+ {
+ case 1:
+ speech
+ l("No."),
+ l("It tends to be too dark to see a mask.");
+ close;
+
+ case 2:
+ speech
+ l("Yes, I saw someone with a large sack on their back go to the mining camp.");
+ close;
+ }
+ }
+
+ switch (getq(.quest))
+ {
+ case 0:
+ case 1: hinn_new_player; break;
+ case 2: hinn_help; break;
+ default: hinn_thanks;
+ }
+
+ closeclientdialog();
+ close;
+
+OnNPCKillEvent:
+ // XXX: maybe have a OnTakeScript on the pinky antena item so we count pickups instead of kills
+ if (killedrid == .monster_id && getq(.quest) == 2 &&
+ getq2(.quest) < .kill_count && strcharinfo(PC_MAP) == .map$)
+ {
+ setq .quest, 2, getq2(.quest) + 1;
+ }
+ end;
+
+OnPCLoginEvent:
+OnPCBaseLvUpEvent:
+ if (BaseLevel >= .min_level && getq(.quest) < 1)
+ {
+ setq .quest, 1; // allow the player to do the quest
+ dispbottom l("New quest available: %s (level %d+)",
+ getquestlink(.quest), .min_level); // XXX: requires new manaplus versions, maybe show a different message for old versions?
+ }
+ end;
+
+OnInit:
+ .min_level = 15; // min level to do the quest
+ .monster_id = Fluffy; // monster to kill // FIXME: change this when we have pinkies
+ .monster_drop = FluffyFur; // monster drop to collect // FIXME: change this when we have pinkies
+ .drop_count = 10; // amount of that drop needed
+ .kill_count = 10; // min number of kills
+ .reward_item = WoodenSword; // reward item // FIXME: change this when we have he Scythe
+ .reward_money = 0; // reward money
+ .reward_exp = 0; // reward exp
+ .bad_hat = BrimmedFlowerHat; // hinnak attacks you when you wear this hat // FIXME: make this pinky hat when we get it
+ .drink_item = PumpkishJuice; // the item hinnak asks to drink // FIXME: make this beer when we have it
+
+ .quest = HurnscaldQuests_Hinnak;
+ .quest_inspector = HurnscaldQuests_Inspector;
+ .quest_debug = .quest;
+ .sex = G_MALE;
+ .distance = 3;
+
+////////// UNFINISHED //////////
+////////////////////////////////
+// REMOVE THIS CODE WHEN THIS //
+// NPC IS NO LONGER A WIP //////
+////////////////////////////////
+if (!debug) disablenpc(.name$);
+///////// UNFINISHED ///////////
+
+ end;
+}
+
diff --git a/npc/008-1/lumberjack.txt b/npc/008-1/lumberjack.txt
new file mode 100644
index 00000000..46039968
--- /dev/null
+++ b/npc/008-1/lumberjack.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// The Legendary Lumberjack.
+
+001-1,241,116,0 script Lumberjack NPC_LUMBERJACK,{
+ speech
+ l("Oh hey!"),
+ lg("If you feel bored or anxious, you can always pixel an axe. Wait, what does that even mean?");
+ l("Anyhow, it's better than running around in circles doing nothing.");
+
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 2;
+ end;
+}
diff --git a/npc/008-2-0/_import.txt b/npc/008-2-0/_import.txt
index f2ecc3b8..2cd1023b 100644
--- a/npc/008-2-0/_import.txt
+++ b/npc/008-2-0/_import.txt
@@ -2,4 +2,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-0/_savepoints.txt",
"npc/008-2-0/_warps.txt",
+"npc/008-2-0/celestia.txt",
"npc/008-2-0/mapflags.txt",
diff --git a/npc/008-2-0/celestia.txt b/npc/008-2-0/celestia.txt
new file mode 100644
index 00000000..50d189a7
--- /dev/null
+++ b/npc/008-2-0/celestia.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Our beloved Princess Celestia.
+// THIS IS A PLACEHOLDER!
+
+008-2-0,38,35,0 script Celestia NPC_CELESTIA,{
+ speech
+ l("Hi!"),
+ lg("You may remember me, I am Celestia.");
+ l("Take a cup of tea until something happens here.");
+
+ close;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 2;
+ end;
+}
diff --git a/npc/008-2-1/_import.txt b/npc/008-2-1/_import.txt
index 1e5137a7..06ba6d3b 100644
--- a/npc/008-2-1/_import.txt
+++ b/npc/008-2-1/_import.txt
@@ -2,4 +2,8 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-1/_savepoints.txt",
"npc/008-2-1/_warps.txt",
+"npc/008-2-1/generalstore.txt",
+"npc/008-2-1/inspector.txt",
"npc/008-2-1/mapflags.txt",
+"npc/008-2-1/richard.txt",
+"npc/008-2-1/selim.txt",
diff --git a/npc/008-2-1/generalstore.txt b/npc/008-2-1/generalstore.txt
new file mode 100644
index 00000000..ac409800
--- /dev/null
+++ b/npc/008-2-1/generalstore.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// General Store.
+// THIS IS A PLACEHOLDER!
+
+008-1,38,35,0 script Generalstore#008-1 NPC_GENERAL_STORE,{
+ speech
+ l("Hi!"),
+ lg("My name is General Store, they still call me this although I left the army a few years ago.");
+ l("I have nothing to sell, come back later.");
+
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 2;
+ end;
+}
diff --git a/npc/008-2-1/inspector.txt b/npc/008-2-1/inspector.txt
new file mode 100644
index 00000000..62157207
--- /dev/null
+++ b/npc/008-2-1/inspector.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// The Inspector not willing to do his job.
+// THIS IS A PLACEHOLDER!
+
+008-1,30,34,0 script Inspector#008-1 NPC_INSPECTOR,{
+ speech
+ l("Oh hey!"),
+ lg("Got a beer for me? No? Then I am too busy for your stupid problems.");
+ l("Go away, and bring a beer next time you pass by.");
+
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 2;
+ end;
+}
diff --git a/npc/008-2-1/richard.txt b/npc/008-2-1/richard.txt
new file mode 100644
index 00000000..f71f52d0
--- /dev/null
+++ b/npc/008-2-1/richard.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Richard the Hurns storage guy.
+// THIS IS A PLACEHOLDER!
+
+008-1,26,35,0 script Richard#008-1 NPC_RICHARD_LEGACY,{
+ speech
+ l("Oh hey!"),
+ lg("I was supposed to act as storagekeeper, but I forgot my key.");
+ l("Come back later, perhaps I can find it.");
+
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 2;
+ end;
+}
diff --git a/npc/008-2-1/selim.txt b/npc/008-2-1/selim.txt
new file mode 100644
index 00000000..c578f6cd
--- /dev/null
+++ b/npc/008-2-1/selim.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Selim the Dyer.
+// THIS IS A PLACEHOLDER!
+
+008-1,38,40,0 script Selim#008-1 NPC_GUMI_THE_DYER,{
+ speech
+ l("Oh hey!"),
+ lg("Good you are here, you could be handy for me right now.");
+
+ close;
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 2;
+ end;
+}
diff --git a/npc/008-2-10/_import.txt b/npc/008-2-10/_import.txt
index 994726eb..2dd9ec77 100644
--- a/npc/008-2-10/_import.txt
+++ b/npc/008-2-10/_import.txt
@@ -1,4 +1,5 @@
// Map 008-2-10: Hurnscald City Hall
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/008-2-10/_warps.txt",
+"npc/008-2-10/airlia.txt",
"npc/008-2-10/mapflags.txt",
diff --git a/npc/008-2-10/airlia.txt b/npc/008-2-10/airlia.txt
new file mode 100644
index 00000000..d300b52a
--- /dev/null
+++ b/npc/008-2-10/airlia.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Airlia, the girl in the townhall.
+// THIS IS A PLACEHOLDER!
+
+008-2-10,41,29,0 script Airlia NPC_AIRLIA,{
+ speech
+ l("Hi!"),
+ lg("Did you visit the graveyard already? I havent met people coming back alive for ages.");
+ l("There must be cruel things going on.");
+
+ close;
+
+OnInit:
+ .sex = G_FEMALE;
+ .distance = 2;
+ end;
+}