- {'1', 1, IT_AXE, STAT_SHELLS, 0},
- {'2', 2, IT_SHOTGUN, STAT_SHELLS, 1},
- {'3', 3, IT_SUPER_SHOTGUN, STAT_SHELLS, 1},
- {'4', 4, IT_NAILGUN, STAT_NAILS, 1},
- {'5', 5, IT_SUPER_NAILGUN, STAT_NAILS, 1},
- {'6', 6, IT_GRENADE_LAUNCHER, STAT_ROCKETS, 1},
- {'7', 7, IT_ROCKET_LAUNCHER, STAT_ROCKETS, 1},
- {'8', 8, IT_LIGHTNING, STAT_CELLS, 1},
- {'9', 9, 128, STAT_CELLS, 1}, // generic energy weapon for mods
- {'p', 209, 128, STAT_CELLS, 1}, // dpmod plasma gun
- {'w', 210, 8388608, STAT_CELLS, 1}, // dpmod plasma wave cannon
- {'l', 225, HIT_LASER_CANNON, STAT_CELLS, 1}, // hipnotic laser cannon
- {'h', 226, HIT_MJOLNIR, STAT_CELLS, 0}, // hipnotic mjolnir hammer
- {-1, 0, 0, 0, 0}
-};
+ int i;
+ for(i = 0; i < IN_BESTWEAPON_MAX && in_bestweapon_info[i].impulse; ++i)
+ if(in_bestweapon_info[i].impulse == impulse)
+ break;
+ if(i >= IN_BESTWEAPON_MAX)
+ {
+ Con_Printf("no slot left for weapon definition; increase IN_BESTWEAPON_MAX\n");
+ return; // sorry
+ }
+ strlcpy(in_bestweapon_info[i].name, name, sizeof(in_bestweapon_info[i].name));
+ in_bestweapon_info[i].impulse = impulse;
+ if(weaponbit != -1)
+ in_bestweapon_info[i].weaponbit = weaponbit;
+ if(activeweaponcode != -1)
+ in_bestweapon_info[i].activeweaponcode = activeweaponcode;
+ if(ammostat != -1)
+ in_bestweapon_info[i].ammostat = ammostat;
+ if(ammomin != -1)
+ in_bestweapon_info[i].ammomin = ammomin;
+}
+
+void IN_BestWeapon_ResetData (void)
+{
+ memset(in_bestweapon_info, 0, sizeof(in_bestweapon_info));
+ IN_BestWeapon_Register("1", 1, IT_AXE, IT_AXE, STAT_SHELLS, 0);
+ IN_BestWeapon_Register("2", 2, IT_SHOTGUN, IT_SHOTGUN, STAT_SHELLS, 1);
+ IN_BestWeapon_Register("3", 3, IT_SUPER_SHOTGUN, IT_SUPER_SHOTGUN, STAT_SHELLS, 1);
+ IN_BestWeapon_Register("4", 4, IT_NAILGUN, IT_NAILGUN, STAT_NAILS, 1);
+ IN_BestWeapon_Register("5", 5, IT_SUPER_NAILGUN, IT_SUPER_NAILGUN, STAT_NAILS, 1);
+ IN_BestWeapon_Register("6", 6, IT_GRENADE_LAUNCHER, IT_GRENADE_LAUNCHER, STAT_ROCKETS, 1);
+ IN_BestWeapon_Register("7", 7, IT_ROCKET_LAUNCHER, IT_ROCKET_LAUNCHER, STAT_ROCKETS, 1);
+ IN_BestWeapon_Register("8", 8, IT_LIGHTNING, IT_LIGHTNING, STAT_CELLS, 1);
+ IN_BestWeapon_Register("9", 9, 128, 128, STAT_CELLS, 1); // generic energy weapon for mods
+ IN_BestWeapon_Register("p", 209, 128, 128, STAT_CELLS, 1); // dpmod plasma gun
+ IN_BestWeapon_Register("w", 210, 8388608, 8388608, STAT_CELLS, 1); // dpmod plasma wave cannon
+ IN_BestWeapon_Register("l", 225, HIT_LASER_CANNON, HIT_LASER_CANNON, STAT_CELLS, 1); // hipnotic laser cannon
+ IN_BestWeapon_Register("h", 226, HIT_MJOLNIR, HIT_MJOLNIR, STAT_CELLS, 0); // hipnotic mjolnir hammer
+}
+
+void IN_BestWeapon_Register_f (void)
+{
+ if(Cmd_Argc() == 7)
+ {
+ IN_BestWeapon_Register(
+ Cmd_Argv(1),
+ atoi(Cmd_Argv(2)),
+ atoi(Cmd_Argv(3)),
+ atoi(Cmd_Argv(4)),
+ atoi(Cmd_Argv(5)),
+ atoi(Cmd_Argv(6))
+ );
+ }
+ else if(Cmd_Argc() == 2 && !strcmp(Cmd_Argv(1), "clear"))
+ {
+ memset(in_bestweapon_info, 0, sizeof(in_bestweapon_info));
+ }
+ else if(Cmd_Argc() == 2 && !strcmp(Cmd_Argv(1), "quake"))
+ {
+ IN_BestWeapon_ResetData();
+ }
+ else
+ {
+ Con_Printf("Usage: %s weaponshortname impulse itemcode activeweaponcode ammostat ammomin; %s clear; %s quake\n", Cmd_Argv(0), Cmd_Argv(0), Cmd_Argv(0));
+ }
+}
+