Mercurial > molko
annotate libmlk-rpg/rpg/character.h @ 286:3991779aaba9
adventure: initial test of spawn
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 23 Dec 2020 15:37:48 +0100 |
parents | 87b8c7510717 |
children | 08ab73b32832 |
rev | line source |
---|---|
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * character.h -- character definition |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
243
71b3b7036de7
misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents:
235
diff
changeset
|
19 #ifndef MOLKO_RPG_CHARACTER_H |
71b3b7036de7
misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents:
235
diff
changeset
|
20 #define MOLKO_RPG_CHARACTER_H |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <stdbool.h> |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
24 #define CHARACTER_SPELL_MAX (64) |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
25 |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 struct battle; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
27 struct save; |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 struct sprite; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 struct spell; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 enum character_status { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
32 CHARACTER_STATUS_NORMAL, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
33 CHARACTER_STATUS_POISON = (1 << 0) |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 }; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
36 enum character_sprite { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
37 CHARACTER_SPRITE_AXE, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
38 CHARACTER_SPRITE_BOW, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
39 CHARACTER_SPRITE_CROSSBOW, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
40 CHARACTER_SPRITE_DAGGER, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
41 CHARACTER_SPRITE_HAMMER, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
42 CHARACTER_SPRITE_NORMAL, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
43 CHARACTER_SPRITE_SPIKE, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
44 CHARACTER_SPRITE_SWORD, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
45 CHARACTER_SPRITE_WAND, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
46 CHARACTER_SPRITE_NUM |
235
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
47 }; |
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
48 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
49 enum character_equipment { |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
50 CHARACTER_EQUIPMENT_GLOVES, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
51 CHARACTER_EQUIPMENT_HELMET, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
52 CHARACTER_EQUIPMENT_SHIELD, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
53 CHARACTER_EQUIPMENT_TOP, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
54 CHARACTER_EQUIPMENT_TROUSERS, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
55 CHARACTER_EQUIPMENT_WEAPON, |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
56 CHARACTER_EQUIPMENT_NUM |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
57 }; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
58 |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 struct character { |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
60 const char *name; |
286
3991779aaba9
adventure: initial test of spawn
David Demelier <markand@malikania.fr>
parents:
281
diff
changeset
|
61 enum character_status status; |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
62 unsigned int level; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
63 int hp; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
64 unsigned int hpmax; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
65 unsigned int hpbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
66 int mp; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
67 unsigned int mpmax; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
68 unsigned int mpbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
69 int atk; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
70 unsigned int atkbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
71 int def; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
72 unsigned int defbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
73 int agt; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
74 unsigned int agtbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
75 int luck; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
76 unsigned int luckbonus; |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
77 unsigned int team_order; |
230
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
78 |
86b71e1f9dd5
rpg: add movements in battle
David Demelier <markand@malikania.fr>
parents:
192
diff
changeset
|
79 struct sprite *sprites[CHARACTER_SPRITE_NUM]; |
235
fb304a94a05c
rpg: prepare equipment
David Demelier <markand@malikania.fr>
parents:
230
diff
changeset
|
80 const struct equipment *equipments[CHARACTER_EQUIPMENT_NUM]; |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 const struct spell *spells[CHARACTER_SPELL_MAX]; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 void (*reset)(struct character *owner); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 void (*exec)(struct character *owner, struct battle *bt); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 }; |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 bool |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
88 character_ok(const struct character *ch); |
192
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 const char * |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 character_status_string(enum character_status status); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 void |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 character_reset(struct character *ch); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 void |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 character_exec(struct character *ch, struct battle *bt); |
4ad7420ab678
rpg: add minimalist battle system, continue #2477 @60h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 |
281
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
99 bool |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
100 character_save(const struct character *ch, struct save *s); |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
101 |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
102 bool |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
103 character_load(struct character *, struct save *); |
87b8c7510717
rpg: implement load/save for characters
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
104 |
243
71b3b7036de7
misc: lot of cleanups,
David Demelier <markand@malikania.fr>
parents:
235
diff
changeset
|
105 #endif /* !MOLKO_RPG_CHARACTER_H */ |