summaryrefslogtreecommitdiff
path: root/npc/027-2/lover.txt
blob: 70fe1dc83ad81aacd86ee150468a183b86e616e1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
// author: Jenalya
// love triangle quest, involved npcs: Reid's Ghost, Hamond, Savaric, Aldred, Golbenez
// state 0: if baselevel >= 85, tells he want dark crystals
// state 1: needs @CRYSTAL_AMOUNT dark crystals to go on, tells the player to search the inn for source of magic (Golbenez)
// state 2: if the player has talked to Golbenez, he tells you to negotiate with him to find out what happened
// state 3: when player has seen all memories (@golbanez < 5), telling Savaric what happened. he asks the player to bring reid @DIAMOND_AMOUNT diamonds
// state 4: waiting for reid
// state 5: is set in reid, he thanks for help and asks to negotiate with golbanez for his soul
// state 6: waiting for youl, if @golbanez >= 7 got it, giving sorcerer robe
// state 7: done

027-2.gat,43,73,0	script	Savaric	317,{

	set @Graveyard_Inn_MASK, NIBBLE_1_MASK;
	set @Graveyard_Inn_SHIFT, NIBBLE_1_SHIFT;

	set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);

	set @Graveyard_Inn_Woman_MASK, NIBBLE_0_MASK;
	set @Graveyard_Inn_Woman_SHIFT, NIBBLE_0_SHIFT;

	set @woman, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Woman_MASK) >> @Graveyard_Inn_Woman_SHIFT);

	set @Graveyard_Inn_Golbenez_MASK, NIBBLE_4_MASK;
	set @Graveyard_Inn_Golbenez_SHIFT, NIBBLE_4_SHIFT;

	set @golbanez, ((QUEST_Graveyard_Inn & @Graveyard_Inn_Golbenez_MASK) >> @Graveyard_Inn_Golbenez_SHIFT);

	set @CRYSTAL_AMOUNT, 500;
	set @CRYSTAL_EXP, 200000;
	set @CRYSTAL_EXTRA_EXP, 100;
	set @CRYSTAL_MAX, 2000;
	set @DIAMOND_AMOUNT, 20; // caution, this value needs to be the same as in the innkeepers script!

	if (@state >= 7) goto L_Have_Soul;
	if (@state == 6) goto L_Want_Soul;
	if (@state == 5) goto L_Apologize;
	if (@state == 4) goto L_Waiting;
	if (@state == 3) goto L_Golb;
	if (@state == 2) goto L_News;
	if (@state == 1) goto L_Crystals;

	mes "You see a dead man hanging. This place is creepy!";
	next;
	if (baselevel < 85) goto L_Close;
	mes "Suddenly the man opens his eyes and looks at you.";
	next;
	mes "[Hanged Man]";
	mes "\"Oh, hello. Nice to see you - I seem to be dead, but I don't know why and why I'm still consciousness. This is very interesting.\"";
	menu
		"INTERESTING? Are you crazy?",-;
	mes "[Hanged Man]";
	mes "\"Well, as you mention it, it is quite annoying and uncomfortable. Would you mind helping me down to the floor?\"";
	next;
	mes "You take a step towards him, but some invisible force holds you back.";
	next;
	mes "[Hanged Man]";
	mes "\"Oh, someone is holding you back with magic! I sense a really dark and mighty power. What has happened!?\"";
	next;
	mes "\"Can I ask you for a favor? Can you bring me lots of Dark Crystals? You might need to ask a dark mage for it. I want to try to break the barrier.\"";
	next;
	mes "\"I'll need... well, at least " + @CRYSTAL_AMOUNT + ". But if you have more, I can use extras!\"";
	set @state, 1;
	callsub S_Update_Mask;
	close;

L_Crystals:
	mes "[Hanged Man]";
	mes "\"Ah, you're back! Did you get the Dark Crystals?\"";

	if (countitem("DarkCrystal") == 0)
		menu
			"Not yet.", L_Close;

	if (countitem("DarkCrystal") < @CRYSTAL_AMOUNT)
		goto L_Not_Enough_Crystals;

	delitem "DarkCrystal", @CRYSTAL_AMOUNT;
	getexp @CRYSTAL_EXP, 0;
	next;
	mes "\"Oh, I can feel them! Please lay them down on the floor.\"";
	next;
	mes "You lay "+ @CRYSTAL_AMOUNT + " dark crystals down on the floor and step back, nervously expecting the coming.";
	next;
	if (countitem("DarkCrystal") == 0) goto L_Skip;
	mes "[Hanged Man]";
	mes "\"You have more of them, haven't you? It will work better if you give them to me too.\"";
	menu
		"Ok, here you go.",-,
		"I prefer to keep them.",L_Skip;
	set @crystal, countitem("DarkCrystal");
	if (@crystal > @CRYSTAL_MAX)
		set @crystal, @CRYSTAL_MAX;
	delitem "DarkCrystal", @crystal;
	getexp @crystal*@CRYSTAL_EXTRA_EXP, 0;
L_Skip:
	mes "[Hanged Man]";
	mes "\"Well, let's start now.\"";
	next;
	mes "The hanged man seems very concentrated now, which looks absurd with him hanging there.";
	next;
	mes "The dark crystals start to glow and buzz. You take another step back.";
	next;
	mes "The buzzing gets louder and louder, so you can't hear a word the hanged man is saying now.";
	next;
	set hp, 5;
	mes "The crystals explode and hit you!";
	next;
	mes "You fall down on the floor and blink frantically to regain your eyesight.";
	next;
	mes "[Hanged Man]";
	mes "\"Hello? You're ok? I'm sorry, something went wrong. It seems, not only is there a magical barrier, but also my manaflow is blocked. I don't know if this is because I'm dead or part of the barrier spell.\"";
	next;
	mes "\"I never was dead before, so I can't be sure. But I was able to access my magic - it just got out of control at the critical moment.\"";
	next;
	mes "\"This is fascinating!\"";
	menu
		"Ok, you are crazy!",-,
		"Yes, it is very fascinating to be blown up!",-,
		"I NEARLY DIED! AND YOU THINK THIS IS FASCINATING?!",-;
	mes "[Hanged Man]";
	mes "\"I sometimes forget the fact that not everybody is fascinated by the riddles of magic. Please forgive me.\"";
	next;
	mes "\"And I even didn't introduce myself! I am very sorry for my rude behavior!\"";
	next;
	mes "\"My name is Savaric, first apprentice of the Great Demon Summoner Ymbert.\"";
	next;
	mes "\"If you can forgive me my behaviour, may I ask you for another favor? Can you please search for someone or something in this inn that could be the source of this dark magic?\"";
	set @state, 2;
	callsub S_Update_Mask;
	close;

L_News:
	mes "[Savaric]";
	mes "\"Welcome back. Did you find a possible source for the dark magic?\"";
	if ((@woman < 6) && (@golbanez == 0))
		menu
			"Not yet, I'm still searching.",L_Close;

	if ((@woman < 6) && (@golbanez > 0))
		menu
			"Yes, let me tell you.",L_Golbenez,
			"I don't think so.",L_Close;

	if ((@woman >=  6) && (@golbanez == 0))
		menu
			"Can you tell me about your relationship to Reid?",L_Reid,
			"Not yet, I'm still searching.",L_Close;

	if ((@woman >=  6) && (@golbanez >= 0))
		menu
			"Can you tell me about your relationship to Reid?",L_Reid,
			"Yes, let me tell you.",L_Golbenez,
			"I don't think so.",L_Close;

L_Golbenez:
	mes "You explain how you came to the inn and what Golbenez said to you.";
	next;
	mes "[Savaric]";
	mes "\"This... this is very disturbing news. Playground he said? Mh.. \"";
	next;
	mes "\"Savaric seems to be completely absorbed in his thoughts.\"";
	menu
		"Hello? Are you still there?",-,
		"Excuse me, I don't want to interrupt you, but can you explain to me what's going on? I'm confused",-,
		"Hey! I'm talking with you!",-;
	mes "Savaric winces.";
	next;
	mes "\"Oh, right - I was just thinking. It makes me feel uncomfortable to hear about Golbenez being involved in this.\"";
	next;
	mes "\"I told you I'm the apprentice of a demon summoner, remember? Well, this includes learning about the astral beings in this world.\"";
	next;
	mes "\"And Golbenez - he is a very powerful being, a Demi-God, with a very questionable sense of humor. He was worshipped by a group of cultists some hundred years ago - uhm, some hundred years ago from my lifetime, I mean.\"";
	next;
	mes "\"But most of his adherents died when he thought it would be funny to test their loyality by sending them on a journey over the sea to a paradise island he promised them - of course, there was no such island.\"";
	next;
	mes "\"Maybe now you understand what I mean about a questionable sense of humor.\"";
	next;
	mes "\"But on the other hand, he can grant great power to those who are capable of dealing with him and who offer him enough for his service. Trying to do that would be a risky undertaking in any case.\"";
	next;
	mes "\"He told you this inn was one of his favorite playgrounds - so it seems he was playing one of his evil games with the people in this inn. And now, he resurrected our memories to this parody of life!\"";
	next;
	mes "\"" + strcharinfo(0) + "! I need your help again! Please return to Golbenez and try to get out of him what was happening here. But be careful when negotiating.. he will demand a service in return.\"";
	set @state, 3;
	callsub S_Update_Mask;
	close;

L_Golb:
	mes "[Savaric]";
	mes "\"Good to see you back my friend. What did you find out?\"";
	if (@golbanez < 5)
		menu
			"I'm still working on doing all the stuff Golbanez wants me to do.",L_Close;
	menu
		"Now I know what happened. I'll tell you.",-,
		"I'm sorry to tell you, but this was all your fault.",-;

	mes "You tell Savaric about what Golbenez showed to you.";
	next;
	mes "[Savaric]";
	mes "\"I.. I can't believe.. My master told me, I need to be careful because of my temper - but I never thought it would lead me to make such a terrible mistake. Oh, Reid - and all the people in the inn! What have I done?!\"";
	next;
	mes "He seems pained by his guilt.";
	next;
	mes "[Savaric]";
	mes "\"" + strcharinfo(0) + ", please, can you go to Reid and tell her about what I've done? And then ask her if she will ever be able to forgive me?\"";
	next;
	mes "\"But wait. It is not enough just to ask for forgiveness. Please, can you bring her " + @DIAMOND_AMOUNT + " Diamonds? They symbolize my pure feelings for her.\"";
	set @state, 4;
	callsub S_Update_Mask;
	close;

L_Waiting:
	mes "[Savaric]";
	mes "\"Have you already brought the Diamonds to Reid?\"";
	close;

L_Apologize:
	mes "[Savaric]";
	mes "\"Oh thank you! I thank you so much! Reid came here to talk to me.\"";
	next;
	mes "\"She forgave me! I'm so happy!\"";
	next;
	mes "\"You did so much for me, can I ask you for one last favor?\"";
	next;
	mes "\"Golbenez took my soul and I want it back. You were very clever with how you negotiated with him so far. Could you get my soul back for me?\"";
	set @state, 6;
	callsub S_Update_Mask;
	close;

L_Want_Soul:
	if (@golbanez >= 7) goto L_Soul;
	mes "[Savaric]";
	mes "\"Welcome back! Are you still working on getting my soul back?\"";
	menu
		"I'm doing my best.",-,
		"Yes, but it isn't easy.",-;

	mes "[Savaric]";
	mes "\"Thank you so much! I'm counting on you!\"";
	close;

L_Soul:
	mes "[Savaric]";
	mes "\"My soul came back! Oh thank you!\"";
	next;
	mes "\"Please take this as a symbol of my gratitude.\"";
	getinventorylist;
	if (@inventorylist_count == 100) goto L_Full_Inv;
	getitem "SorcererRobeRed", 1;
	set @state, 7;
	callsub S_Update_Mask;
	mes "\"This is what mages and their apprentices wore when I lived. It is white because I wasn't a master yet.\"";
	next;
	mes "\"But I guess the old traditions have changed since then.\"";
	close;

L_Have_Soul:
	mes "[Savaric]";
	mes "\"I'll be in your debt forever. Thank you so much.\"";
	close;

L_Reid:
	mes "[Savaric]";
	mes "\"Relationship? Well, she is the innkeeper of this inn and I'm a patron. There is nothing more to say about this.\"";
	close;

L_Not_Enough_Crystals:
	mes "It seems you managed to get some, but not enough. Can you bring me more?";
	close;

L_Full_Inv:
	mes "[Savaric]";
	mes "\"Oh, you can't carry anything more. Come back when you can take it.\"";
	close;

L_Close:
	close;

S_Update_Mask:
        set QUEST_Graveyard_Inn,
        	(QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
                | (@state << @Graveyard_Inn_SHIFT);
        return;
}