Skip to content

Commit 9c15eaf

Browse files
committed
add --tier CLI arg to visual mode, set default LMS gear distribution
1 parent 982b4e5 commit 9c15eaf

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

pufferlib/ocean/osrs_pvp/osrs_pvp.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ static void run_visual(OsrsPvp* env, const char* encounter_name, const char* rep
431431

432432
int main(int argc, char** argv) {
433433
int use_visual = 0;
434+
int gear_tier = -1; /* -1 = random (default LMS distribution) */
434435
const char* encounter_name __attribute__((unused)) = NULL;
435436
const char* replay_path __attribute__((unused)) = NULL;
436437
for (int i = 1; i < argc; i++) {
@@ -439,6 +440,8 @@ int main(int argc, char** argv) {
439440
encounter_name = argv[++i];
440441
else if (strcmp(argv[i], "--replay") == 0 && i + 1 < argc)
441442
replay_path = argv[++i];
443+
else if (strcmp(argv[i], "--tier") == 0 && i + 1 < argc)
444+
gear_tier = atoi(argv[++i]);
442445
}
443446

444447
srand((unsigned int)time(NULL));
@@ -471,6 +474,18 @@ int main(int argc, char** argv) {
471474
#ifdef OSRS_PVP_VISUAL
472475
/* pvp_init uses internal buffers — no malloc needed */
473476
pvp_init(&env);
477+
/* set gear tier: --tier N forces both players to tier N,
478+
otherwise default LMS distribution (mostly tier 0) */
479+
if (gear_tier >= 0 && gear_tier <= 3) {
480+
for (int t = 0; t < 4; t++) env.gear_tier_weights[t] = 0.0f;
481+
env.gear_tier_weights[gear_tier] = 1.0f;
482+
} else {
483+
/* default LMS: 60% tier 0, 25% tier 1, 10% tier 2, 5% tier 3 */
484+
env.gear_tier_weights[0] = 0.60f;
485+
env.gear_tier_weights[1] = 0.25f;
486+
env.gear_tier_weights[2] = 0.10f;
487+
env.gear_tier_weights[3] = 0.05f;
488+
}
474489
env.ocean_acts = env.actions;
475490
env.ocean_obs = env._obs_buf;
476491
env.ocean_rew = env.rewards;

0 commit comments

Comments
 (0)