@@ -431,6 +431,7 @@ static void run_visual(OsrsPvp* env, const char* encounter_name, const char* rep
431431
432432int 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