-
Notifications
You must be signed in to change notification settings - Fork 0
/
classes.c
119 lines (107 loc) · 2.74 KB
/
classes.c
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
#include "classes.h"
struct class_t{
int id;
int display_color;
char *name;
int strength_bonus;
int perception_bonus;
int endurance_bonus;
int charisma_bonus;
int intelligence_bonus;
int agility_bonus;
int luck_bonus;
int dex_bonus;
int turn_tokens_starting_amount;
};
class_t class_data[CLASS_MAX+1];
void classes_data_init(){
class_data[CLASS_UNKNOWN] = (struct class_t){
.id = CLASS_UNKNOWN
};
class_data[CLASS_NEWB] = (struct class_t){
.id = CLASS_NEWB,
.name = "Newb",
.luck_bonus = 2, //Beginner's Luck ;)
.turn_tokens_starting_amount = 5
};
class_data[CLASS_WARRIOR] = (struct class_t){
.id = CLASS_WARRIOR,
.name = "Warrior",
.strength_bonus = 1,
.endurance_bonus = 1,
.turn_tokens_starting_amount = 4,
.dex_bonus = 1
};
class_data[CLASS_PIKEMAN] = (struct class_t){
.id = CLASS_PIKEMAN,
.name = "Pikeman",
.strength_bonus = 1,
.agility_bonus = 1,
.turn_tokens_starting_amount = 4
};
}
/* Returns the class name of the specified class. It is a reference to the
* original, not a copy.
*/
char *class_name(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].name;
}
/* Returns how long members of this class can go before getting exhausted.
*/
int class_stamina(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].turn_tokens_starting_amount;
}
int class_str_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].strength_bonus;
}
int class_per_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].perception_bonus;
}
int class_end_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].endurance_bonus;
}
int class_cha_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].charisma_bonus;
}
int class_int_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].intelligence_bonus;
}
int class_agi_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].agility_bonus;
}
int class_luc_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].luck_bonus;
}
int class_dex_bonus(int class_id){
if(class_id < 0 || class_id > CLASS_MAX){
class_id = CLASS_UNKNOWN;
}
return class_data[class_id].dex_bonus;
}