Skip to content

Commit 6d6d429

Browse files
committed
Simplify character stats catalog
1 parent 64cbd4d commit 6d6d429

6 files changed

Lines changed: 207 additions & 231 deletions

File tree

src/btech/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ set(BTECH_SOURCES
2525
autopilot/autopilot_radio_parser.c
2626
autopilot/path_helpers.c
2727
character/btechstats.c
28+
character/character_value_catalog.c
2829
character/character_health.c
2930
character/character_experience.c
3031
character/character_battle_value.c

src/btech/character/btechstats.c

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#define BTECHSTATS_C
21
#include "btechstats_internal.h"
32
#include "checked_conversion.h"
43
#include "mux/support/checked_storage.h"
@@ -10,29 +9,6 @@ static size_t character_value_index(int code) {
109
return (size_t)code;
1110
}
1211

13-
const CharacterValue *character_value_definition(int code) {
14-
return checked_storage_at_const(char_values, NUM_CHARVALUES,
15-
sizeof(*char_values),
16-
character_value_index(code));
17-
}
18-
19-
const char *character_value_type_name(int type) {
20-
if (type < CHAR_VALUE || type > CHAR_ATTRIBUTE)
21-
return "Unknown";
22-
const char *const *name = checked_storage_at_const(
23-
btech_charvaluetype_names,
24-
sizeof(btech_charvaluetype_names) / sizeof(*btech_charvaluetype_names),
25-
sizeof(*btech_charvaluetype_names), (size_t)type);
26-
return *name;
27-
}
28-
29-
void character_value_xp_threshold_set(int code, int threshold) {
30-
CharacterValue *definition =
31-
checked_storage_at(char_values, NUM_CHARVALUES, sizeof(*char_values),
32-
character_value_index(code));
33-
definition->xpthreshold = threshold;
34-
}
35-
3612
unsigned char character_stats_value_get(const PSTATS *stats, int code) {
3713
const unsigned char *value = checked_storage_at_const(
3814
stats->value_storage, NUM_CHARVALUES, sizeof(*stats->value_storage),

src/btech/character/btechstats.h

Lines changed: 5 additions & 202 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
/*
32
* $Id: btechstats.h,v 1.1.1.1 2005/01/11 21:18:03 kstevens Exp $
43
*
@@ -23,21 +22,6 @@
2322
#include "btechstats_global.h"
2423
#include "mux/server/platform.h"
2524

26-
#ifdef BTECHSTATS_C
27-
static const char *const btech_charvaluetype_names[] = {
28-
"Char_value", "Char_skill", "Char_advantage", "Char_attribute"};
29-
30-
const char *btech_charskillflag_names[] = {"Athletic", "Mental", "Physical",
31-
"Social"};
32-
33-
#endif
34-
35-
#define EE_NUMBER 11
36-
37-
#ifdef BTECHSTATS
38-
39-
/* *INDENT-OFF* */
40-
4125
typedef struct CharacterValue {
4226
const char *name;
4327
char type;
@@ -47,194 +31,15 @@ typedef struct CharacterValue {
4731

4832
enum { NUM_CHARVALUES = 119 };
4933

50-
#ifdef BTECHSTATS_C
51-
static CharacterValue char_values[NUM_CHARVALUES] = {
52-
53-
{"XP", CHAR_VALUE, 0, 0},
54-
{"MaxXP", CHAR_VALUE, 0, 0},
55-
{"Type", CHAR_VALUE, 0, 0},
56-
{"Level", CHAR_VALUE, 0, 0},
57-
{"Package", CHAR_VALUE, 0, 0},
58-
{"Lives", CHAR_VALUE, 0, 0},
59-
{"Bruise", CHAR_VALUE, 0, 0},
60-
{"Lethal", CHAR_VALUE, 0, 0},
61-
{"Unused1", CHAR_VALUE, 0, 0},
62-
{"ShotsFired", CHAR_VALUE, 0, 0},
63-
{"ShotsMissed", CHAR_VALUE, 0, 0},
64-
{"ShotsHit", CHAR_VALUE, 0, 0},
65-
{"DamageTaken", CHAR_VALUE, 0, 0},
66-
{"DamageGiven", CHAR_VALUE, 0, 0},
67-
68-
/* Advantages */
69-
{"Ambidextrous", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
70-
{"Bloodname", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
71-
{"Combat_Sense", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
72-
{"Contact", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
73-
{"Dropship", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
74-
{"EI_Implant", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
75-
{"Exceptional_Attribute", CHAR_ADVANTAGE, CHAR_ADV_EXCEPT, 0},
76-
{"Extra_Edge", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
77-
{"Land_Grant", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
78-
{"Reputation", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
79-
{"Sixth_Sense", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
80-
{"Title", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
81-
{"Toughness", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
82-
{"Wealth", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
83-
{"Well-Connected", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
84-
{"Well_Equipped", CHAR_ADVANTAGE, CHAR_ADV_VALUE, 0},
85-
{"Dodge_Maneuver", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
86-
{"Maneuvering_Ace", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
87-
{"Melee_Specialist", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
88-
{"Pain_Resistance", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
89-
{"Speed_Demon", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
90-
{"Tech_Aptitude", CHAR_ADVANTAGE, CHAR_ADV_BOOL, 0},
91-
92-
/* Attributes */
93-
{"Build", CHAR_ATTRIBUTE, 0, 0},
94-
{"Reflexes", CHAR_ATTRIBUTE, 0, 0},
95-
{"Intuition", CHAR_ATTRIBUTE, 0, 0},
96-
{"Learn", CHAR_ATTRIBUTE, 0, 0},
97-
{"Charisma", CHAR_ATTRIBUTE, 0, 0},
98-
99-
/* Skills themselves */
100-
{"Acrobatics", CHAR_SKILL, CHAR_ATHLETIC, 50},
101-
{"Administration", CHAR_SKILL, CHAR_MENTAL, 50},
102-
{"Alternate_Identity", CHAR_SKILL, CHAR_MENTAL, 50},
103-
{"Appraisal", CHAR_SKILL, CHAR_MENTAL, 50},
104-
{"Archery", CHAR_SKILL, CHAR_ATHLETIC, 50},
105-
{"Blade", CHAR_SKILL, CHAR_ATHLETIC | CAREER_MISC, 50},
106-
{"Bureaucracy", CHAR_SKILL, CHAR_SOCIAL | CAREER_MISC, 50},
107-
{"Climbing", CHAR_SKILL, CHAR_ATHLETIC, 50},
108-
{"Comm-Conventional", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 150},
109-
{"Comm-Hyperpulse", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 50},
110-
{"Computer", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 50},
111-
{"Cryptography", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 50},
112-
{"Demolitions", CHAR_SKILL, CHAR_MENTAL, 50},
113-
{"Disguise", CHAR_SKILL, CHAR_MENTAL | CAREER_RECON, 50},
114-
/*Expanded Piloting Skills */
115-
{"Drive", CHAR_SKILL, CHAR_PHYSICAL | CAREER_CAVALRY, 3000},
116-
{"Drive-Naval", CHAR_SKILL, CHAR_PHYSICAL, 3000},
117-
/*End Expand */
118-
{"Engineering", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 50},
119-
{"Escape_Artist", CHAR_SKILL, CHAR_PHYSICAL | CAREER_RECON, 50},
120-
{"Forgery", CHAR_SKILL, CHAR_MENTAL, 50},
121-
{"Gambling", CHAR_SKILL, CHAR_MENTAL, 50},
122-
123-
/*Standard Gunnery Skills */
124-
{"Gunnery-Aerospace", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_AERO,
125-
1000},
126-
{"Gunnery-Artillery", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_ARTILLERY,
127-
500},
128-
{"Gunnery-Battlemech", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_BMECH,
129-
3000},
130-
{"Gunnery-BSuit", CHAR_SKILL, SK_XP | CHAR_PHYSICAL, 500},
131-
{"Gunnery-Conventional", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_CAVALRY,
132-
3000},
133-
{"Gunnery-Spacecraft", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_DROPSHIP,
134-
50},
135-
{"Gunnery-Spotting", CHAR_SKILL, CHAR_PHYSICAL | CAREER_ARTILLERY, 50},
136-
/* Expanded Gunnery Skills*/
137-
{"Gunnery-Ballistic", CHAR_SKILL, SK_XP | CHAR_PHYSICAL, 2500},
138-
{"Gunnery-Flamer", CHAR_SKILL, SK_XP | CHAR_PHYSICAL, 500},
139-
{"Gunnery-Laser", CHAR_SKILL, SK_XP | CHAR_PHYSICAL, 2500},
140-
{"Gunnery-Missile", CHAR_SKILL, SK_XP | CHAR_PHYSICAL, 2500},
141-
142-
{"Impersonation", CHAR_SKILL, CHAR_SOCIAL, 50},
143-
{"Interrogation", CHAR_SKILL, CHAR_SOCIAL | CAREER_RECON, 50},
144-
{"Jump_Pack", CHAR_SKILL, CHAR_ATHLETIC, 50},
145-
{"Leadership", CHAR_SKILL, CHAR_SOCIAL | CAREER_ACADMISC, 50},
146-
{"Medtech", CHAR_SKILL, CHAR_MENTAL | CAREER_MISC, 300},
147-
{"Navigation", CHAR_SKILL, CHAR_MENTAL, 25},
148-
{"Negotiation", CHAR_SKILL, CHAR_SOCIAL, 25},
149-
{"Perception", CHAR_SKILL, CHAR_MENTAL | CAREER_RECON, 150},
150-
151-
{"Piloting-Aerospace", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_AERO,
152-
2500},
153-
{"Piloting-Battlemech", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_BMECH,
154-
3000},
155-
{"Piloting-BSuit", CHAR_SKILL, SK_XP | CHAR_ATHLETIC, 3000},
156-
{"Piloting-Spacecraft", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_DROPSHIP,
157-
50},
158-
159-
/* Added skills for 'expanded' skill sets */
160-
{"Piloting-Biped", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_BMECH, 3000},
161-
{"Piloting-Hover", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_CAVALRY,
162-
3000},
163-
{"Piloting-Naval", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_CAVALRY,
164-
3000},
165-
{"Piloting-Quad", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_BMECH, 3000},
166-
{"Piloting-Tracked", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_CAVALRY,
167-
3000},
168-
{"Piloting-Wheeled", CHAR_SKILL, SK_XP | CHAR_PHYSICAL | CAREER_CAVALRY,
169-
3000},
170-
/* End add */
171-
{"Protocol", CHAR_SKILL, CHAR_SOCIAL, 50},
172-
{"Quickdraw", CHAR_SKILL, CHAR_PHYSICAL, 50},
173-
{"Research", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 100},
174-
{"Running", CHAR_SKILL, SK_XP | CHAR_ATHLETIC, 100},
175-
{"Riding", CHAR_SKILL, CHAR_ATHLETIC, 50},
176-
{"Scrounge", CHAR_SKILL, CHAR_SOCIAL | CAREER_TECH, 50},
177-
{"Security_Systems", CHAR_SKILL, CHAR_MENTAL | CAREER_RECON, 50},
178-
{"Seduction", CHAR_SKILL, CHAR_SOCIAL, 50},
179-
{"Small_Arms", CHAR_SKILL, CHAR_PHYSICAL | CAREER_MISC, 50},
180-
{"Stealth", CHAR_SKILL, CHAR_PHYSICAL | CAREER_RECON, 50},
181-
{"Strategy", CHAR_SKILL, CHAR_MENTAL | CAREER_ACADMISC, 50},
182-
{"Streetwise", CHAR_SKILL, CHAR_SOCIAL, 50},
183-
{"Support_Weapons", CHAR_SKILL, CHAR_PHYSICAL | CAREER_MISC, 50},
184-
{"Survival", CHAR_SKILL, CHAR_MENTAL, 50},
185-
{"Swimming", CHAR_SKILL, CHAR_ATHLETIC, 50},
186-
{"Tactics", CHAR_SKILL, CHAR_MENTAL | CAREER_ACADMISC, 50},
187-
{"Technician-Aerospace", CHAR_SKILL, SK_XP | CHAR_MENTAL | CAREER_TECHVEH,
188-
50},
189-
{"Technician-Battlemech", CHAR_SKILL, SK_XP | CHAR_MENTAL | CAREER_TECHMECH,
190-
600},
191-
{"Technician-Battlesuit", CHAR_SKILL, SK_XP | CHAR_MENTAL, 300},
192-
{"Technician-Electronics", CHAR_SKILL, SK_XP | CHAR_MENTAL | CAREER_TECH,
193-
50},
194-
{"Technician-Mechanic", CHAR_SKILL, SK_XP | CHAR_MENTAL | CAREER_TECHVEH,
195-
400},
196-
{"Technician-Weapons", CHAR_SKILL, SK_XP | CHAR_MENTAL | CAREER_TECH, 300},
197-
{"Technician-Spacecraft", CHAR_SKILL, SK_XP | CHAR_MENTAL, 300},
198-
{"Throwing_Weapons", CHAR_SKILL, CHAR_PHYSICAL, 50},
199-
{"Tinker", CHAR_SKILL, CHAR_MENTAL | CAREER_TECH, 50},
200-
{"Tracking", CHAR_SKILL, CHAR_MENTAL | CAREER_RECON, 50},
201-
{"Training", CHAR_SKILL, CHAR_SOCIAL, 50},
202-
{"Unarmed_Combat", CHAR_SKILL, CHAR_ATHLETIC | CAREER_MISC, 50},
203-
{"Zero-G_Operations", CHAR_SKILL, CHAR_PHYSICAL, 50},
204-
};
205-
206-
/* *INDENT-ON* */
207-
208-
const char *char_levels[] = {"Green", "Regular", "Veteran", "Elite",
209-
"Historical"};
210-
211-
const char *char_types[] = {"Inner_Sphere", "Clan_MechWarrior",
212-
"Clan_Aerospace", "Clan_Elemental",
213-
"Clan_Freebirth", "Clan_Other"};
214-
215-
const char *char_packages[] = {"None",
216-
"Primary_Clan_Warrior",
217-
"Secondary_Clan_Warrior",
218-
"Secondar_Clan_Pilot",
219-
"Clan_Elemental",
220-
"Basic_Academy",
221-
"Advanced_Academy",
222-
"Basic_University",
223-
"Advanced_University"};
224-
#else
225-
extern const char *char_levels[5];
226-
extern const char *char_types[6];
227-
extern const char *char_packages[9];
228-
#endif
229-
230-
/*************************************************************************/
231-
23234
constexpr int NUM_CHARLEVELS = 5;
233-
23435
constexpr int NUM_CHARTYPES = 6;
235-
23636
constexpr int NUM_CHARPACKAGES = 9;
23737

38+
extern const char *btech_charskillflag_names[4];
39+
extern const char *char_levels[NUM_CHARLEVELS];
40+
extern const char *char_types[NUM_CHARTYPES];
41+
extern const char *char_packages[NUM_CHARPACKAGES];
42+
23843
/*
23944
XP is added only if the player is online AND
24045
the skill is marked SK_XP OR the last xp-gain is 30 seconds or more ago.
@@ -246,5 +51,3 @@ typedef struct {
24651
time_t last_use_storage[NUM_CHARVALUES];
24752
int xp_storage[NUM_CHARVALUES];
24853
} PSTATS;
249-
250-
#endif

src/btech/character/btechstats_global.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,12 @@ constexpr int CAREER_ARTILLERY = 0x0080; /* Artillery-Gun */
4545
constexpr int CAREER_DROPSHIP = 0x0100; /* Dropship Pilot/Gun */
4646
constexpr int CAREER_TECHMECH = 0x0200;
4747
constexpr int CAREER_TECHVEH = 0x0400;
48-
#define CAREER_TECH (CAREER_TECHMECH | CAREER_TECHVEH)
48+
constexpr int CAREER_TECH = CAREER_TECHMECH | CAREER_TECHVEH;
4949
constexpr int CAREER_MISC = 0x0800;
5050
constexpr int CAREER_ACADMISC = 0x1000;
5151
constexpr int CAREER_RECON = 0x2000;
52-
constexpr int SK_XP = 0x4000; /* Always raise xp (not spammable) */
53-
54-
#define XP_MAX (256 * 256 * 256) /* Then we wrap ; tough beans */
52+
constexpr int SK_XP = 0x4000; /* Always raise xp (not spammable) */
53+
constexpr int XP_MAX = 256 * 256 * 256; /* Then we wrap ; tough beans */
5554

5655
/* 3 diff. adv types */
5756

src/btech/character/btechstats_internal.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
#include "special_object.h"
4848
#include "weapon_settings.h"
4949

50-
#define BTECHSTATS
5150
#include "coolmenu.h"
5251
#include "mech_crew_api.h"
5352
#include "mech_identity_api.h"

0 commit comments

Comments
 (0)