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
|
#include "q_bounty.h"
#define cquest (quest[QUEST_BOUNTY])
#define bounty_quest_monster (cquest.data[0])
static bool_ bounty_item_tester_hook(object_type *o_ptr)
{
if ((o_ptr->tval == TV_CORPSE) && (o_ptr->pval2 == bounty_quest_monster))
{
return TRUE;
}
else
{
return FALSE;
}
}
bool_ quest_bounty_init_hook(int dummy)
{
return FALSE;
}
bool_ quest_bounty_drop_item()
{
char mdesc[512];
char msg[512];
if (cquest.status == QUEST_STATUS_UNTAKEN)
{
cquest.status = QUEST_STATUS_TAKEN;
bounty_quest_monster = lua_get_new_bounty_monster(3 + (p_ptr->lev * 3) / 2);
monster_race_desc(mdesc, bounty_quest_monster, 0);
snprintf(msg, sizeof(msg), "You must bring me back %s corpse.", mdesc);
msg_print(msg);
}
else
{
monster_race_desc(mdesc, bounty_quest_monster, 0);
snprintf(msg, sizeof(msg), "You still must bring me back %s corpse.", mdesc);
msg_print(msg);
}
return FALSE;
}
bool_ quest_bounty_get_item()
{
if (cquest.status != QUEST_STATUS_TAKEN)
{
msg_print("You do not have any bounty quest yet.");
return FALSE;
}
// Get the corpse.
item_tester_hook = bounty_item_tester_hook;
int item = -1;
bool_ ret =
get_item(&item,
"What corpse to return?",
"You have no corpse to return.",
USE_INVEN);
if (!ret) {
return FALSE;
}
// Take the corpse from the inventory
inven_item_increase(item, -1);
inven_item_optimize(item);
msg_print("Ah well done adventurer!");
msg_print("As a reward I will teach you a bit of monster lore.");
skill_type *lore = &s_info[SKILL_LORE];
skill_type *preservation = &s_info[SKILL_PRESERVATION];
if (lore->mod == 0) {
lore->mod = 900;
lore->dev = TRUE;
}
lore->value += lore->mod;
if (preservation->mod == 0) {
preservation->value = 800;
preservation->mod = 800;
preservation->dev = TRUE;
msg_print("I see you don't know the corpse preservation skill, I shall teach you it too.");
}
// Need to ask for new quest.
cquest.status = QUEST_STATUS_UNTAKEN;
bounty_quest_monster = 0;
return FALSE;
}
bool_ quest_bounty_describe(FILE *fff)
{
char mdesc[512];
if (cquest.status == QUEST_STATUS_TAKEN)
{
monster_race_desc(mdesc, bounty_quest_monster, 0);
fprintf(fff, "#####yBounty quest!\n");
fprintf(fff, "You must bring back %s corpse to the beastmaster.\n", mdesc);
fprintf(fff, "\n");
return TRUE;
}
return FALSE;
}
|