Skip to content

Commit

Permalink
cleanup and maximize test coverage of living/stats
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelprograms committed Feb 7, 2025
1 parent 54181a3 commit 50b329b
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 24 deletions.
47 changes: 23 additions & 24 deletions lib/std/living/stats.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// @this_object /std/living.c

private mapping __Stats = ([
private mapping __Stat = ([
"strength": 0,
"perception": 0,
"endurance": 0,
Expand All @@ -9,7 +9,7 @@ private mapping __Stats = ([
"agility": 0,
"luck": 0,
]);
nosave private mapping __StatsBonus = ([
nosave mapping __StatBonus = ([
"strength": 0,
"perception": 0,
"endurance": 0,
Expand All @@ -19,12 +19,9 @@ nosave private mapping __StatsBonus = ([
"luck": 0,
]);

int query_stat_base (string stat) {
return __Stats[stat];
}
int query_stat_bonus (string stat) {
if (!__StatsBonus) {
__StatsBonus = ([
private void initialize_stat_bonus () {
if (!mapp(__StatBonus)) {
__StatBonus = ([
"strength": 0,
"perception": 0,
"endurance": 0,
Expand All @@ -34,31 +31,33 @@ int query_stat_bonus (string stat) {
"luck": 0,
]);
}
return __StatsBonus[stat];
}

int query_stat_base (string stat) {
initialize_stat_bonus();
return __Stat[stat];
}
int query_stat_bonus (string stat) {
initialize_stat_bonus();
return __StatBonus[stat];
}
int query_stat (string stat) {
return __Stats[stat] + query_stat_bonus(stat);
initialize_stat_bonus();
return __Stat[stat] + query_stat_bonus(stat);
}

void set_stat (string stat, int n) {
__Stats[stat] = n;
if (member_array(stat, keys(__Stat)) == -1) {
return;
}
__Stat[stat] = n;
this_object()->update_vitals();
this_object()->update_limbs();
}
void add_stat_bonus (string stat, int n) {
if (!__StatsBonus) {
__StatsBonus = ([
"strength": 0,
"perception": 0,
"endurance": 0,
"charisma": 0,
"intelligence": 0,
"agility": 0,
"luck": 0,
]);
}
if (member_array(stat, keys(__StatsBonus)) == -1) {
initialize_stat_bonus();
if (member_array(stat, keys(__StatBonus)) == -1) {
return;
}
__StatsBonus[stat] += n;
__StatBonus[stat] += n;
}
12 changes: 12 additions & 0 deletions lib/std/living/stats.test.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ void test_query_and_set_stat () {
}

void test_stat_bonus () {
expect("null stats bonus are initialized", (: ({
assert_equal(testOb->query_stat_bonus("luck"), 0),
store_variable("__StatBonus", UNDEFINED, testOb),
assert_equal(testOb->query_stat_bonus("luck"), 0),
}) :));

expect("handles setting and querying stats", (: ({
testOb->set_stat("strength", 100),
testOb->set_stat("perception", 100),
Expand Down Expand Up @@ -89,5 +95,11 @@ void test_stat_bonus () {
assert_equal(testOb->query_stat_bonus("intelligence"), 25),
assert_equal(testOb->query_stat_bonus("agility"), 25),
assert_equal(testOb->query_stat_bonus("luck"), 25),

testOb->set_stat("unknown", 100),
testOb->add_stat_bonus("unknown", 100),
assert_equal(testOb->query_stat("unknown"), UNDEFINED),
assert_equal(testOb->query_stat_base("unknown"), UNDEFINED),
assert_equal(testOb->query_stat_bonus("unknown"), UNDEFINED),
}) :));
}

0 comments on commit 50b329b

Please sign in to comment.