mirror of
https://github.com/tbamud/tbamud.git
synced 2026-03-29 16:37:21 +02:00
Update unit tests
This commit is contained in:
parent
3d82609ec8
commit
c41e291770
2 changed files with 24 additions and 28 deletions
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "structs.h"
|
||||
#include "utils.h"
|
||||
#include "handler.h"
|
||||
#include "constants.h"
|
||||
|
||||
/* ---------- local RNG for the sim (do NOT use MUD's rand_number here) ---------- */
|
||||
|
|
@ -107,16 +108,14 @@ static void build_light(struct char_data *ch) {
|
|||
set_ability_scores(ch, 10, 18, 10, 10, 10, 10);
|
||||
equip_at(ch, WEAR_HEAD, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_BODY, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_LEGS, make_armor(1,2,0,0,0,0));
|
||||
equip_at(ch, WEAR_FEET, make_armor(1,1,0,0,0,0));
|
||||
}
|
||||
|
||||
static void build_medium(struct char_data *ch) {
|
||||
init_test_char(ch);
|
||||
set_ability_scores(ch, 10, 18, 10, 10, 10, 10);
|
||||
equip_at(ch, WEAR_HEAD, make_armor(2,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_BODY, make_armor(2,2,1,0,0,0));
|
||||
equip_at(ch, WEAR_LEGS, make_armor(2,2,0,0,0,0));
|
||||
equip_at(ch, WEAR_HEAD, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_BODY, make_armor(1,2,1,0,0,0));
|
||||
equip_at(ch, WEAR_LEGS, make_armor(1,2,0,0,0,0));
|
||||
equip_at(ch, WEAR_HANDS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_FEET, make_armor(1,1,0,0,0,0));
|
||||
}
|
||||
|
|
@ -124,9 +123,9 @@ static void build_medium(struct char_data *ch) {
|
|||
static void build_heavy(struct char_data *ch) {
|
||||
init_test_char(ch);
|
||||
set_ability_scores(ch, 10, 18, 10, 10, 10, 10);
|
||||
equip_at(ch, WEAR_HEAD, make_armor(2,1,1,0,0,0));
|
||||
equip_at(ch, WEAR_BODY, make_armor(3,3,1,0,0,0));
|
||||
equip_at(ch, WEAR_LEGS, make_armor(2,1,1,0,0,0));
|
||||
equip_at(ch, WEAR_HEAD, make_armor(1,1,1,0,0,0));
|
||||
equip_at(ch, WEAR_BODY, make_armor(1,3,1,0,0,0));
|
||||
equip_at(ch, WEAR_LEGS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_ARMS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_HANDS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(ch, WEAR_FEET, make_armor(1,1,0,0,0,0));
|
||||
|
|
@ -191,9 +190,9 @@ int main(void) {
|
|||
{18, 90, 3, "Expert (STR18, skill90, wm+3)"},
|
||||
};
|
||||
struct { struct char_data *def; const char *name; int hp; } def[] = {
|
||||
{ &light, "Light", 40 },
|
||||
{ &medium, "Medium", 50 },
|
||||
{ &heavy, "Heavy", 60 },
|
||||
{ &light, "Light", 90 },
|
||||
{ &medium, "Medium", 100 },
|
||||
{ &heavy, "Heavy", 110 },
|
||||
};
|
||||
|
||||
printf("Matchups (trials=20000, 1d8 weapon):\n");
|
||||
|
|
|
|||
|
|
@ -146,21 +146,21 @@ static void test_ac_light_medium_heavy(void) {
|
|||
* Bulk: legs=2, hands=2, feet=2, total=6
|
||||
* Magic: legs=1, hands=1, total=2
|
||||
* Dex +4, but cap at +2
|
||||
* Expect: base 10 + piece 4 + magic 2 + dex 2 = 18.
|
||||
* Expect: base 10 + piece 6 + magic 0 + dex 2 = 18.
|
||||
*/
|
||||
memset(ch.equipment, 0, sizeof(ch.equipment));
|
||||
equip_at(&ch, WEAR_HEAD, make_armor(2,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_BODY, make_armor(2,2,1,0,0,0));
|
||||
equip_at(&ch, WEAR_LEGS, make_armor(2,2,0,0,0,0));
|
||||
equip_at(&ch, WEAR_HEAD, make_armor(1,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_BODY, make_armor(2,2,0,0,0,0));
|
||||
equip_at(&ch, WEAR_LEGS, make_armor(1,2,0,0,0,0));
|
||||
equip_at(&ch, WEAR_HANDS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_FEET, make_armor(1,1,0,0,0,0));
|
||||
|
||||
struct ac_breakdown b2; compute_ac_breakdown(&ch, &b2);
|
||||
if (b2.total != 21) dbg_dump_ac("MEDIUM", &b2);
|
||||
if (b2.total != 18) dbg_dump_ac("MEDIUM", &b2);
|
||||
T_EQI(b2.dex_cap, 2, "Medium dex cap 2");
|
||||
T_EQI(b2.dex_mod_applied, 2, "Medium dex +2 applied");
|
||||
T_EQI(b2.total_bulk, 7, "Medium bulk score 7");
|
||||
T_EQI(b2.total, 21, "Medium total AC");
|
||||
T_EQI(b2.total, 18, "Medium total AC");
|
||||
|
||||
/* HEAVY SETUP:
|
||||
* Bulk target: Heavy (>=11)
|
||||
|
|
@ -169,27 +169,24 @@ static void test_ac_light_medium_heavy(void) {
|
|||
* Bulk: body=3, legs=2, total=13
|
||||
* Magic: body=3, legs=3, total=6 (max cap of 3, so total=3)
|
||||
* Dex +4 but cap 0 due to bulk
|
||||
* Shield: base 2 + magic +5 (clamped to +3) + prof 0 => +5 total
|
||||
* Expect: base 10 + piece 5 + armorMagic 3 + Dex 0 + shield 5 = 23
|
||||
* Expect: base 10 + piece 7 + armorMagic 0 + Dex 0 = 20
|
||||
*/
|
||||
memset(ch.equipment, 0, sizeof(ch.equipment));
|
||||
equip_at(&ch, WEAR_HEAD, make_armor(2,1,1,0,0,0));
|
||||
equip_at(&ch, WEAR_BODY, make_armor(3,3,1,0,0,0));
|
||||
equip_at(&ch, WEAR_LEGS, make_armor(2,1,1,0,0,0));
|
||||
equip_at(&ch, WEAR_ARMS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_HEAD, make_armor(1,1,1,0,0,0));
|
||||
equip_at(&ch, WEAR_BODY, make_armor(2,3,1,0,0,0));
|
||||
equip_at(&ch, WEAR_LEGS, make_armor(1,2,1,0,0,0));
|
||||
equip_at(&ch, WEAR_ARMS, make_armor(1,2,0,0,0,0));
|
||||
equip_at(&ch, WEAR_HANDS, make_armor(1,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_FEET, make_armor(1,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_WRIST_L, make_armor(1,1,0,0,0,0));
|
||||
equip_at(&ch, WEAR_WRIST_R, make_armor(1,1,0,0,0,0));
|
||||
|
||||
struct ac_breakdown b3; compute_ac_breakdown(&ch, &b3);
|
||||
if (b3.total != 25) dbg_dump_ac("HEAVY", &b3);
|
||||
if (b3.total != 20) dbg_dump_ac("HEAVY", &b3);
|
||||
T_EQI(b3.dex_cap, 0, "Heavy dex cap 0");
|
||||
T_EQI(b3.dex_mod_applied, 0, "Heavy dex applied 0");
|
||||
T_EQI(b3.total_bulk, 10, "Heavy bulk score 10");
|
||||
T_EQI(b3.armor_piece_sum, 12, "Heavy piece sum 12");
|
||||
T_EQI(b3.armor_piece_sum, 7, "Heavy piece sum 7");
|
||||
T_EQI(b3.armor_magic_sum, 3, "Heavy armor magic at global cap 3");
|
||||
T_EQI(b3.total, 25, "Heavy total AC");
|
||||
T_EQI(b3.total, 20, "Heavy total AC");
|
||||
}
|
||||
|
||||
static void test_hit_probability_sanity(void) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue