Introduce option to spawn with weapon

This commit is contained in:
Ryan Dwyer 2022-12-07 23:23:22 +10:00
parent 902ffe50b7
commit 3681c7d75f
10 changed files with 71 additions and 3 deletions

View File

@ -2521,7 +2521,7 @@
},
{
"id": "L_MPMENU_252",
"en": "Touch That Box",
"en": "Spawn With Weapon",
"gb": "Touch That Box",
"jp": "Touch That Box",
"it": "Touch That Box",

View File

@ -252,6 +252,15 @@ void botSpawn(struct chrdata *chr, u8 respawning)
chr->aibot->unk0b4 = 0;
chr->aibot->unk0b8 = 0;
func0f02e9a0(chr, 0);
if ((g_MpSetup.options & MPOPTION_SPAWNWITHWEAPON)
&& g_MpSetup.weapons[0] != MPWEAPON_NONE
&& g_MpSetup.weapons[0] != MPWEAPON_DISABLED) {
struct mpweapon *mpweapon = &g_MpWeapons[g_MpSetup.weapons[0]];
botinvGiveSingleWeapon(chr, mpweapon->weaponnum);
botactGiveAmmoByType(aibot, mpweapon->weapon1ammotypeminusone, mpweapon->weapon1ammoqty);
botinvSwitchToWeapon(chr, mpweapon->weaponnum, FUNC_PRIMARY);
}
}
chr->maxdamage = 8;

View File

@ -60,6 +60,14 @@ struct menuitem g_CtcOptionsMenuItems[] = {
MPOPTION_NOAUTOAIM,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,
MENUITEMFLAG_LOCKABLEMINOR,
L_MPMENU_252, // "Spawn With Weapon"
MPOPTION_SPAWNWITHWEAPON,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,

View File

@ -55,6 +55,14 @@ struct menuitem g_MpCombatOptionsMenuItems[] = {
MPOPTION_NOAUTOAIM,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,
MENUITEMFLAG_LOCKABLEMINOR,
L_MPMENU_252, // "Spawn With Weapon"
MPOPTION_SPAWNWITHWEAPON,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_SEPARATOR,
0,

View File

@ -58,6 +58,14 @@ struct menuitem g_HtmOptionsMenuItems[] = {
MPOPTION_NOAUTOAIM,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,
MENUITEMFLAG_LOCKABLEMINOR,
L_MPMENU_252, // "Spawn With Weapon"
MPOPTION_SPAWNWITHWEAPON,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,

View File

@ -58,6 +58,14 @@ struct menuitem g_HtbOptionsMenuItems[] = {
MPOPTION_NOAUTOAIM,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,
MENUITEMFLAG_LOCKABLEMINOR,
L_MPMENU_252, // "Spawn With Weapon"
MPOPTION_SPAWNWITHWEAPON,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,

View File

@ -79,6 +79,14 @@ struct menuitem g_KohOptionsMenuItems[] = {
MPOPTION_NOAUTOAIM,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,
MENUITEMFLAG_LOCKABLEMINOR,
L_MPMENU_252, // "Spawn With Weapon"
MPOPTION_SPAWNWITHWEAPON,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,

View File

@ -56,6 +56,14 @@ struct menuitem g_PacOptionsMenuItems[] = {
MPOPTION_NOAUTOAIM,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,
MENUITEMFLAG_LOCKABLEMINOR,
L_MPMENU_252, // "Spawn With Weapon"
MPOPTION_SPAWNWITHWEAPON,
menuhandlerMpCheckboxOption,
},
{
MENUITEMTYPE_CHECKBOX,
0,

View File

@ -794,8 +794,18 @@ void playerSpawn(void)
invGiveSingleWeapon(WEAPON_UNARMED);
playerSetShieldFrac(0);
bgunEquipWeapon2(HAND_LEFT, g_DefaultWeapons[HAND_LEFT]);
bgunEquipWeapon2(HAND_RIGHT, g_DefaultWeapons[HAND_RIGHT]);
if ((g_MpSetup.options & MPOPTION_SPAWNWITHWEAPON)
&& g_MpSetup.weapons[0] != MPWEAPON_NONE
&& g_MpSetup.weapons[0] != MPWEAPON_DISABLED) {
struct mpweapon *mpweapon = &g_MpWeapons[g_MpSetup.weapons[0]];
invGiveSingleWeapon(mpweapon->weaponnum);
bgunEquipWeapon2(HAND_LEFT, WEAPON_NONE);
bgunEquipWeapon2(HAND_RIGHT, mpweapon->weaponnum);
bgunSetAmmoQuantity(mpweapon->weapon1ammotypeminusone, mpweapon->weapon1ammoqty);
} else {
bgunEquipWeapon2(HAND_LEFT, g_DefaultWeapons[HAND_LEFT]);
bgunEquipWeapon2(HAND_RIGHT, g_DefaultWeapons[HAND_RIGHT]);
}
if (g_Vars.currentplayer->model00d4 == NULL) {
playerTickChrBody();

View File

@ -2900,6 +2900,7 @@
#define MPOPTION_HTM_SHOWONRADAR 0x00040000
#define MPOPTION_PAC_HIGHLIGHTTARGET 0x00080000
#define MPOPTION_PAC_SHOWONRADAR 0x00100000
#define MPOPTION_SPAWNWITHWEAPON 0x00200000
#define MPPAUSEMODE_UNPAUSED 0
#define MPPAUSEMODE_PAUSED 1