diff --git a/src/game/bondgun.c b/src/game/bondgun.c index 4a82c481d..593f712c9 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -5441,10 +5441,12 @@ void bgunTickSwitch2(void) ctrl->switchtoweaponnum = WEAPON_UNARMED; } +#ifdef PLATFORM_N64 #if VERSION == VERSION_JPN_FINAL if (ctrl->switchtoweaponnum == WEAPON_COMBATKNIFE) { ctrl->switchtoweaponnum = WEAPON_UNARMED; } +#endif #endif if (ctrl->dualwielding && !invHasDoubleWeaponIncAllGuns(ctrl->switchtoweaponnum, ctrl->switchtoweaponnum)) { diff --git a/src/game/botinv.c b/src/game/botinv.c index d4d55a538..1726fb884 100644 --- a/src/game/botinv.c +++ b/src/game/botinv.c @@ -56,10 +56,14 @@ struct aibotweaponpreference g_AibotWeaponPreferences[] = { /*0x17*/ { 176, 188, 0, 0, 1, 1, BOTDISTCFG_SHOOTEXPLOSIVE, BOTDISTCFG_SHOOTEXPLOSIVE, 20, 20, 4, 4, 2, 0 }, // WEAPON_DEVASTATOR /*0x18*/ { 160, 188, 0, 0, 1, 1, BOTDISTCFG_SHOOTEXPLOSIVE, BOTDISTCFG_SHOOTEXPLOSIVE, 2, 2, 1, 1, 2, 0 }, // WEAPON_ROCKETLAUNCHER /*0x19*/ { 168, 188, 0, 0, 1, 1, BOTDISTCFG_SHOOTEXPLOSIVE, BOTDISTCFG_SHOOTEXPLOSIVE, 2, 2, 1, 1, 3, 0 }, // WEAPON_SLAYER +#ifndef PLATFORM_N64 // add the combat knife in jpn-final + /*0x1a*/ { 20, 40, 24, 40, 1, 1, BOTDISTCFG_CLOSE, BOTDISTCFG_DEFAULT, 0, 5, 0, 1, 1, 0 }, // WEAPON_COMBATKNIFE +#else #if VERSION == VERSION_JPN_FINAL /*0x1a*/ { 0, 0, 0, 0, 0, 0, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 0, 0, 0, 0, 1, 0 }, // WEAPON_COMBATKNIFE #else /*0x1a*/ { 20, 40, 24, 40, 1, 1, BOTDISTCFG_CLOSE, BOTDISTCFG_DEFAULT, 0, 5, 0, 1, 1, 0 }, // WEAPON_COMBATKNIFE +#endif #endif /*0x1b*/ { 108, 176, 0, 0, 1, 1, BOTDISTCFG_DEFAULT, BOTDISTCFG_DEFAULT, 15, 15, 5, 5, 4, 1 }, // WEAPON_CROSSBOW /*0x1c*/ { 48, 188, 0, 0, 1, 1, BOTDISTCFG_DEFAULT, BOTDISTCFG_CLOSE, 20, 24, 6, 8, 1, 0 }, // WEAPON_TRANQUILIZER diff --git a/src/game/inv.c b/src/game/inv.c index 87b5504b7..f36733b02 100644 --- a/src/game/inv.c +++ b/src/game/inv.c @@ -286,10 +286,12 @@ s32 invAddOneIfCantHaveSlayer(s32 index) index++; } +#ifdef PLATFORM_N64 #if VERSION >= VERSION_JPN_FINAL if (index >= 26) { index++; } +#endif #endif return index; @@ -310,10 +312,12 @@ bool invCanHaveAllGunsWeapon(s32 weaponnum) { bool canhave = true; +#ifdef PLATFORM_N64 #if VERSION == VERSION_JPN_FINAL if (weaponnum == WEAPON_COMBATKNIFE) { canhave = false; } +#endif #endif if (weaponnum == WEAPON_SLAYER) { diff --git a/src/game/mplayer/mplayer.c b/src/game/mplayer/mplayer.c index d8efbd2b8..73d2ea367 100644 --- a/src/game/mplayer/mplayer.c +++ b/src/game/mplayer/mplayer.c @@ -81,8 +81,12 @@ struct mpweapon g_MpWeapons[NUM_MPWEAPONS] = { /*0x16*/ { WEAPON_DEVASTATOR, AMMOTYPE_DEVASTATOR, 16, 0, 0, 1, MPFEATURE_WEAPON_DEVASTATOR, MODEL_CHRDEVASTATOR, 256 }, /*0x17*/ { WEAPON_ROCKETLAUNCHER, AMMOTYPE_ROCKET, 3, 0, 0, 1, 0, MODEL_CHRDYROCKET, 256 }, /*0x18*/ { WEAPON_SLAYER, AMMOTYPE_ROCKET, 3, 0, 0, 1, MPFEATURE_WEAPON_SLAYER, MODEL_CHRSKROCKET, 256 }, +#ifndef PLATFORM_N64 + /*0x19*/ { WEAPON_COMBATKNIFE, AMMOTYPE_KNIFE, 5, 0, 0, 1, 0, MODEL_CHRKNIFE, 256 }, +#else #if VERSION != VERSION_JPN_FINAL /*0x19*/ { WEAPON_COMBATKNIFE, AMMOTYPE_KNIFE, 5, 0, 0, 1, 0, MODEL_CHRKNIFE, 256 }, +#endif #endif /*0x1a*/ { WEAPON_CROSSBOW, AMMOTYPE_CROSSBOW, 10, 0, 0, 1, MPFEATURE_WEAPON_CROSSBOW, MODEL_CHRCROSSBOW, 256 }, /*0x1b*/ { WEAPON_TRANQUILIZER, AMMOTYPE_SEDATIVE, 50, 0, 0, 1, MPFEATURE_WEAPON_TRANQUILIZER, MODEL_CHRDRUGGUN, 256 }, diff --git a/src/game/training.c b/src/game/training.c index 148c24912..43e5b2c26 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -70,12 +70,14 @@ u8 ciGetFiringRangeScore(s32 weaponindex) { // Data at firingrangescores is a u8 array where each score uses 2 bits +#ifdef PLATFORM_N64 #if VERSION == VERSION_JPN_FINAL if (weaponindex == frGetWeaponIndexByWeapon(WEAPON_COMBATKNIFE)) { // The knife doesn't exist in the JPN version. // Treat it as completed so unlockables still work. return 3; } +#endif #endif return (g_GameFile.firingrangescores[weaponindex >> 2] >> (weaponindex % 4) * 2) & 3; @@ -205,10 +207,12 @@ bool func0f19cbcc(s32 weapon) bool frIsWeaponAvailable(s32 weapon) { +#ifdef PLATFORM_N64 #if VERSION == VERSION_JPN_FINAL if (weapon == WEAPON_COMBATKNIFE) { return false; } +#endif #endif if (weapon < WEAPON_FALCON2 || weapon > WEAPON_REMOTEMINE diff --git a/src/include/constants.h b/src/include/constants.h index fd520c791..4103cf44e 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2958,6 +2958,7 @@ #define MPWEAPON_DEVASTATOR 0x16 #define MPWEAPON_ROCKETLAUNCHER 0x17 #define MPWEAPON_SLAYER 0x18 +#ifdef PLATFORM_N64 #define MPWEAPON_COMBATKNIFE (VERSION == VERSION_JPN_FINAL ? 0 : 0x19) #define MPWEAPON_CROSSBOW (VERSION == VERSION_JPN_FINAL ? 0x19 : 0x1a) #define MPWEAPON_TRANQUILIZER (VERSION == VERSION_JPN_FINAL ? 0x1a : 0x1b) @@ -2970,22 +2971,33 @@ #define MPWEAPON_XRAYSCANNER (VERSION == VERSION_JPN_FINAL ? 0x21 : 0x22) #define MPWEAPON_CLOAKINGDEVICE (VERSION == VERSION_JPN_FINAL ? 0x22 : 0x23) #define MPWEAPON_COMBATBOOST (VERSION == VERSION_JPN_FINAL ? 0x23 : 0x24) -#ifdef PLATFORM_N64 #define MPWEAPON_SHIELD (VERSION == VERSION_JPN_FINAL ? 0x24 : 0x25) #define MPWEAPON_DISABLED (VERSION == VERSION_JPN_FINAL ? 0x25 : 0x26) #define NUM_MPWEAPONS (VERSION == VERSION_JPN_FINAL ? 0x26 : 0x27) -#else // add all classic weapons to multiplayer -#define MPWEAPON_PP9I (VERSION == VERSION_JPN_FINAL ? 0x24 : 0x25) -#define MPWEAPON_CC13 (VERSION == VERSION_JPN_FINAL ? 0x25 : 0x26) -#define MPWEAPON_KL01313 (VERSION == VERSION_JPN_FINAL ? 0x26 : 0x27) -#define MPWEAPON_KF7SPECIAL (VERSION == VERSION_JPN_FINAL ? 0x27 : 0x28) -#define MPWEAPON_ZZT (VERSION == VERSION_JPN_FINAL ? 0x28 : 0x29) -#define MPWEAPON_DMC (VERSION == VERSION_JPN_FINAL ? 0x29 : 0x2a) -#define MPWEAPON_AR53 (VERSION == VERSION_JPN_FINAL ? 0x2a : 0x2b) -#define MPWEAPON_RCP45 (VERSION == VERSION_JPN_FINAL ? 0x2b : 0x2c) -#define MPWEAPON_SHIELD (VERSION == VERSION_JPN_FINAL ? 0x2c : 0x2d) -#define MPWEAPON_DISABLED (VERSION == VERSION_JPN_FINAL ? 0x2d : 0x2e) -#define NUM_MPWEAPONS (VERSION == VERSION_JPN_FINAL ? 0x2e : 0x2f) +#else // add all classic weapons to multiplayer and add the combat knife in jpn-final +#define MPWEAPON_COMBATKNIFE 0x19 +#define MPWEAPON_CROSSBOW 0x1a +#define MPWEAPON_TRANQUILIZER 0x1b +#define MPWEAPON_GRENADE 0x1c +#define MPWEAPON_NBOMB 0x1d +#define MPWEAPON_TIMEDMINE 0x1e +#define MPWEAPON_PROXIMITYMINE 0x1f +#define MPWEAPON_REMOTEMINE 0x20 +#define MPWEAPON_LASER 0x21 +#define MPWEAPON_XRAYSCANNER 0x22 +#define MPWEAPON_CLOAKINGDEVICE 0x23 +#define MPWEAPON_COMBATBOOST 0x24 +#define MPWEAPON_PP9I 0x25 +#define MPWEAPON_CC13 0x26 +#define MPWEAPON_KL01313 0x27 +#define MPWEAPON_KF7SPECIAL 0x28 +#define MPWEAPON_ZZT 0x29 +#define MPWEAPON_DMC 0x2a +#define MPWEAPON_AR53 0x2b +#define MPWEAPON_RCP45 0x2c +#define MPWEAPON_SHIELD 0x2d +#define MPWEAPON_DISABLED 0x2e +#define NUM_MPWEAPONS 0x2f #endif #define MUSICEVENTTYPE_PLAY 1