-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathitemtasks.inc
85 lines (64 loc) · 1.81 KB
/
itemtasks.inc
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
#include <item>
#include <PawnPlus>
#include <YSI_Coding\y_hooks>
forward ItemTasks_DefineItemType(ItemType:itemtype, reward);
forward ItemType:ItemTasks_GetItemTypeByIndex(index);
forward ItemTasks_GetTotalDefinedItems();
forward ItemTasks_GetItemTypeReward(ItemType:itemtype);
forward bool:ItemTasks_IsItemTypeDefined(ItemType:itemtype);
static
Map:definedItems,
List:itemsInTasks;
// An extra list, so we can easily select a random item from the list.
// There seem to be no way(?) to select a random value from a map that
// will be as performant as a helper list.
hook OnGameModeInit() {
definedItems = map_new();
itemsInTasks = list_new();
}
ItemTasks_DefineItemType(ItemType:itemtype, reward) {
if (!IsValidItemType(itemtype)) {
return 0;
}
map_add(definedItems, _:itemtype, reward);
list_add(itemsInTasks, _:itemtype);
return 1;
}
stock ItemType:ItemTasks_GetItemTypeByIndex(index) {
if (!list_valid(itemsInTasks)) {
return INVALID_ITEM_TYPE;
}
new
value,
ret;
ret = list_get_safe(itemsInTasks, index, value);
if (!ret) {
return INVALID_ITEM_TYPE;
}
if (!IsValidItemType(ItemType:value)) {
return INVALID_ITEM_TYPE;
}
return ItemType:value;
}
stock ItemTasks_GetTotalDefinedItems() {
if (!list_valid(itemsInTasks)) {
return 0;
}
return list_size(itemsInTasks);
}
stock ItemTasks_GetItemTypeReward(ItemType:itemtype) {
if (!ItemTasks_IsItemTypeDefined(itemtype)) {
return 0;
}
if (!map_valid(definedItems)) {
return 0;
}
return map_get(definedItems, _:itemtype);
}
stock bool:ItemTasks_IsItemTypeDefined(ItemType:itemtype) {
if (!IsValidItemType(itemtype)) {
return false;
}
return map_has_key(definedItems, _:itemtype);
}
#include "itemtasks-player"