#include #include "game/chraicommands.h" #include "game/prop.h" #include "game/inv.h" #include "stagesetup.h" #include "data.h" #include "types.h" /** * Noise settings * * - minradius * - maxradius * - incradius * - decbasespeed * - decremspeed * * incradius is how var the radius is incremented on each shot. * * decbasespeed controls how quickly the noise radius shrinks. * The value is the amount of seconds it takes to shrink by one increment. * * decremspeed also controls how quickly the noise radius shrinks. * The value is the amount of seconds it takes to shrink the total remaining. * Because the remaining amount changes on each frame, this property causes the * noise radius to shrink faster at high radiuses and slower at small radiuses. * * The highest speed out of both decbasespeed and decremspeed is used. */ struct noisesettings invnoisesettings_silent = { 0, 0, 0, 1, 6 }; struct noisesettings invnoisesettings_silenced = { 0, 3, 1.4, 1, 6 }; struct noisesettings invnoisesettings_sniper = { 0, 9, 2, 1, 6 }; struct noisesettings invnoisesettings_default = { 0, 14, 2, 1, 6 }; struct noisesettings invnoisesettings_loud = { 0, 18, 2, 1, 6 }; struct noisesettings invnoisesettings_louder = { 0, 22, 3, 1, 6 }; struct noisesettings invnoisesettings_loudest = { 0, 25, 15, 5, 6 }; struct noisesettings invnoisesettings_reaper = { 0, 35, 1, 1, 6 }; /** * Recoil settings * * - xrange * - yrange * - zrange * - unused * - unused * * These settings affect the gun's position, but only on the frame that it's firing. * The distance moved is random within the range that is specified here. * * xrange is left to right. * yrange is bottom to top. * zrange is forward to back. */ struct recoilsettings invrecoilsettings_tester = { 0, 0, 0, 0.2, 1 }; struct recoilsettings invrecoilsettings_laserstream = { 0.2, 0.2, 0.2, 0.2, 1 }; struct recoilsettings invrecoilsettings_default = { 0.6, 0.6, 0.6, 0.2, 1 }; struct recoilsettings invrecoilsettings_reaper = { 0.6, 0.6, 2.6, 0.2, 1 }; /** * Aim settings * * f32 zoomfov * f32 guntransup * f32 guntransdown * f32 guntransside * f32 aimdamppal * f32 aimdamp * u32 tracktype * u32 unused * u32 flags * * zoomfov is in degrees. The default field of view is 60. A zoomfov value of 30 * means a 2x zoom is being used. * * guntransup, guntransdown and guntransside is how far the gun's position is * translated when aiming in that direction, either with R or by turning. * * aimdamp is how quickly the aim slows down as it reaches its target. * The aimdamp value is only used on NTSC, while aimdamppal is only used on PAL. * * tracktype is what kind of red box tracking is used when aiming. * See the SIGHTRACKTYPE constants for possible values. * * flags is a bitfield of INVAIMFLAG constants. */ struct invaimsettings invaimsettings_default = { 0, // zoomfov 3, // guntransup 8, // guntransdown 15, // guntransside 0.9721, // aimdamppal 0.9767, // aimdamp SIGHTTRACKTYPE_DEFAULT, // tracktype 0, // unused INVAIMFLAG_AUTOAIM, // flags }; struct invaimsettings invaimsettings_smg = { 0, // zoomfov 3, // guntransup 8, // guntransdown 15, // guntransside 0.9721, // aimdamppal 0.9767, // aimdamp SIGHTTRACKTYPE_DEFAULT, // tracktype 0, // unused INVAIMFLAG_AUTOAIM | INVAIMFLAG_ACCURATESINGLESHOT, // flags }; struct invaimsettings invaimsettings_unarmed = { 0, // zoomfov 3, // guntransup 8, // guntransdown 15, // guntransside 0.9721, // aimdamppal 0.9767, // aimdamp SIGHTTRACKTYPE_NONE, // tracktype 7, // unused INVAIMFLAG_AUTOAIM, // flags }; struct invaimsettings invaimsettings_falcon2scope = { 30, // zoomfov 3, // guntransup 8, // guntransdown 15, // guntransside 0.9721, // aimdamppal 0.9767, // aimdamp SIGHTTRACKTYPE_DEFAULT, // tracktype 5, // unused INVAIMFLAG_AUTOAIM, // flags }; struct invaimsettings invaimsettings_heavy = { 30, // zoomfov 3, // guntransup 8, // guntransdown 15, // guntransside 0.9721, // aimdamppal 0.9767, // aimdamp SIGHTTRACKTYPE_DEFAULT, // tracktype 5, // unused INVAIMFLAG_AUTOAIM | INVAIMFLAG_ACCURATESINGLESHOT, // flags }; struct weaponfunc_shootsingle invfunc_00011160 = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_8039, // shootsound 1, // penetration }; struct inventory_ammo invammo_default = { AMMOTYPE_RIFLE, CASING_RIFLE, 30, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_hammer = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function &invammo_default, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_000, // short name L_GUN_000, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_DUALWIELD, }; struct weapon invitem_nothing = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_000, // short name L_GUN_000, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_DUALWIELD, }; struct guncmd invanim_punch_type3[] = { gunscript_playanimation(ANIM_GUN_UNARMED_LEFTPUNCH, 0, 10000) gunscript_waittime(7, 2) gunscript_end }; struct guncmd invanim_punch_type1[] = { gunscript_playanimation(ANIM_GUN_UNARMED_RIGHTPUNCH, 0, 10000) gunscript_waittime(8, 2) gunscript_end }; struct guncmd invanim_punch_type2[] = { gunscript_playanimation(ANIM_GUN_UNARMED_RIGHTPUSH, 0, 10000) gunscript_waittime(7, 2) gunscript_end }; struct guncmd invanim_punch_type4[] = { gunscript_playanimation(ANIM_GUN_UNARMED_DOUBLEPUNCH, 0, 10000) gunscript_waittime(8, 2) gunscript_waittime(18, 3) gunscript_end }; struct guncmd invanim_punch[] = { gunscript_random(20, invanim_punch_type1) gunscript_random(40, invanim_punch_type2) gunscript_random(60, invanim_punch_type3) gunscript_include(0, invanim_punch_type4) gunscript_end }; struct weaponfunc_melee invfunc_unarmed_punch = { INVENTORYFUNCTYPE_MELEE, L_GUN_100, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, invanim_punch, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_BLUNTIMPACT | FUNCFLAG_NOSTUN | FUNCFLAG_00400000, 0.5, // damage 60, // range 105, // unused 105, // unused 105, // unused 7.5, // unused -35, // unused 7.5, // unused -35, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct weaponfunc_melee invfunc_unarmed_disarm = { INVENTORYFUNCTYPE_MELEE, L_GUN_101, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, invanim_punch, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_DISARM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_BLUNTIMPACT | FUNCFLAG_NOSTUN | FUNCFLAG_00400000, 0.3, // damage 60, // range 105, // unused 105, // unused 105, // unused 7.5, // unused -35, // unused 7.5, // unused -35, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct weapon invitem_unarmed = { FILE_GCOMBATHANDSLOD, // hi model FILE_GCOMBATHANDSLOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation {&invfunc_unarmed_punch, &invfunc_unarmed_disarm}, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_unarmed, 1, // muzzlez 7.5, // posx -41, // posy -16, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_006, // short name L_GUN_006, // name L_GUN_000, // manufacturer L_GUN_155, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_HIDEMENUMODEL | WEAPONFLAG_UNDROPPABLE, }; struct modelpartvisibility invpartvisibility_falcon2[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_FALCON2_MAGAZINE1, false }, { MODELPART_FALCON2_MAGAZINE2, false }, { MODELPART_FALCON2_SCOPE, false }, { MODELPART_FALCON2_SILENCER, false }, { MODELPART_FALCON2_002E, false }, { MODELPART_FALCON2_002F, false }, { 255 }, }; struct modelpartvisibility invpartvisibility_falcon2scope[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_FALCON2_MAGAZINE1, false }, { MODELPART_FALCON2_MAGAZINE2, false }, { MODELPART_FALCON2_SILENCER, false }, { MODELPART_FALCON2_002F, false }, { 255 }, }; struct modelpartvisibility invpartvisibility_falcon2silencer[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_FALCON2_MAGAZINE1, false }, { MODELPART_FALCON2_MAGAZINE2, false }, { MODELPART_FALCON2_SCOPE, false }, { MODELPART_FALCON2_002E, false }, { 255 }, }; struct gunviscmd gunviscmds_falcon2[] = { gunviscmd_sethidden(MODELPART_FALCON2_MAGAZINE1) gunviscmd_sethidden(MODELPART_FALCON2_MAGAZINE2) gunviscmd_sethidden(MODELPART_FALCON2_SCOPE) gunviscmd_sethidden(MODELPART_FALCON2_SILENCER) gunviscmd_sethidden(MODELPART_FALCON2_002E) gunviscmd_sethidden(MODELPART_FALCON2_002F) gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct gunviscmd gunviscmds_falcon2scope[] = { gunviscmd_sethidden(MODELPART_FALCON2_MAGAZINE1) gunviscmd_sethidden(MODELPART_FALCON2_MAGAZINE2) gunviscmd_sethidden(MODELPART_FALCON2_SILENCER) gunviscmd_sethidden(MODELPART_FALCON2_002E) gunviscmd_sethidden(MODELPART_FALCON2_002F) gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct gunviscmd gunviscmds_falcon2silencer[] = { gunviscmd_sethidden(MODELPART_FALCON2_MAGAZINE1) gunviscmd_sethidden(MODELPART_FALCON2_MAGAZINE2) gunviscmd_sethidden(MODELPART_FALCON2_SCOPE) gunviscmd_sethidden(MODELPART_FALCON2_002E) gunviscmd_sethidden(MODELPART_FALCON2_002F) gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_falcon2_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_FALCON2_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_FALCON2_MAGAZINE2) gunscript_showpart(1, MODELPART_FALCON2_MAGAZINE1) gunscript_playsound(10, SFX_01D8) gunscript_hidepart(19, MODELPART_FALCON2_MAGAZINE1) gunscript_waittime(24, 1) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(24, SFX_80F6) #else gunscript_playsound(24, SFX_01D9) #endif gunscript_hidepart(24, MODELPART_FALCON2_MAGAZINE2) gunscript_playsound(53, SFX_01DB) gunscript_waittime(53, 3) gunscript_end }; struct guncmd invanim_falcon2scope_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_FALCON2_RELOAD_SCOPE, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_FALCON2_MAGAZINE2) gunscript_showpart(1, MODELPART_FALCON2_MAGAZINE1) gunscript_playsound(10, SFX_01D8) gunscript_hidepart(19, MODELPART_FALCON2_MAGAZINE1) gunscript_waittime(24, 1) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(24, SFX_80F6) #else gunscript_playsound(24, SFX_01D9) #endif gunscript_hidepart(24, MODELPART_FALCON2_MAGAZINE2) gunscript_playsound(53, SFX_01DB) gunscript_waittime(53, 3) gunscript_end }; struct guncmd invanim_falcon2_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_FALCON2_RELOAD_DUALWIELD, 0, 10000) gunscript_hidepart(1, MODELPART_FALCON2_MAGAZINE2) gunscript_showpart(1, MODELPART_FALCON2_MAGAZINE1) gunscript_playsound(6, SFX_01D8) gunscript_waittime(50, 1) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(50, SFX_80F6) #else gunscript_playsound(50, SFX_01D9) #endif gunscript_playsound(71, SFX_01DB) gunscript_end }; struct guncmd invanim_falcon2_reload[] = { gunscript_include(1, invanim_falcon2_reload_dualwield) gunscript_include(0, invanim_falcon2_reload_singlewield) gunscript_end }; struct guncmd invanim_falcon2scope_reload[] = { gunscript_include(1, invanim_falcon2_reload_dualwield) gunscript_include(0, invanim_falcon2scope_reload_singlewield) gunscript_end }; struct guncmd invanim_falcon2_pistolwhip[] = { gunscript_playanimation(ANIM_GUN_FALCON2_WHIP, 0, 10000) gunscript_waittime(23, 2) gunscript_end }; struct guncmd invanim_falcon2_equip[] = { gunscript_playanimation(ANIM_GUN_FALCON2_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_falcon2_unequip[] = { gunscript_playanimation(ANIM_GUN_FALCON2_UNEQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_falcon2_shoot[] = { gunscript_playanimation(ANIM_GUN_FALCON2_SHOOT, 0, 10000) gunscript_waittime(9, 5) gunscript_end }; struct weaponfunc_shootsingle invfunc_falcon2_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_falcon2_shoot, // fire animation 0, // flags &invrecoilsettings_default, 16, // recoverytime60 1, // damage 1, // spread 3, 5, 2, 0, 10, // recoildist 15, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_804D, // shootsound 1, // penetration }; struct weaponfunc_shootsingle invfunc_falcon2silenced_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_silenced, invanim_falcon2_shoot, // fire animation FUNCFLAG_NOMUZZLEFLASH, &invrecoilsettings_default, 16, // recoverytime60 1, // damage 1, // spread 3, 5, 2, 0, 10, // recoildist 15, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_8054, // shootsound 1, // penetration }; struct weaponfunc_melee invfunc_falcon2_pistolwhip = { INVENTORYFUNCTYPE_MELEE, L_GUN_094, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, invanim_falcon2_pistolwhip, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_BLUNTIMPACT | FUNCFLAG_NOSTUN | FUNCFLAG_00400000, 0.9, // damage 60, // range 105, // unused 105, // unused 105, // unused -16, // unused 0.8, // unused 23.5, // unused -32.7, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct inventory_ammo invammo_falcon2 = { AMMOTYPE_PISTOL, CASING_STANDARD, 8, // clip size invanim_falcon2_reload, // reload animation 0, // flags }; struct inventory_ammo invammo_falcon2scope = { AMMOTYPE_PISTOL, CASING_STANDARD, 8, // clip size invanim_falcon2scope_reload, // reload animation 0, // flags }; struct weapon invitem_falcon2 = { FILE_GFALCON2, // hi model FILE_GFALCON2LOD, // lo model invanim_falcon2_equip, // equip animation invanim_falcon2_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_falcon2_singleshot, &invfunc_falcon2_pistolwhip }, // functions &invammo_falcon2, // pri ammo NULL, // sec ammo &invaimsettings_default, 2, // muzzlez 9, // posx -15.7, // posy -23.8, // posz 1, // sway gunviscmds_falcon2, // gunviscmds invpartvisibility_falcon2, // part visibility #if VERSION == VERSION_JPN_FINAL L_GUN_257, // short name #else L_GUN_007, // short name #endif L_GUN_007, // name L_GUN_150, // manufacturer L_GUN_156, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_GANGSTA, }; struct weapon invitem_falcon2scope = { FILE_GFALCON2, // hi model FILE_GFALCON2LOD, // lo model invanim_falcon2_equip, // equip animation invanim_falcon2_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_falcon2_singleshot, &invfunc_falcon2_pistolwhip }, // functions &invammo_falcon2scope, // pri ammo NULL, // sec ammo &invaimsettings_falcon2scope, 1, // muzzlez 9, // posx -15.7, // posy -23.8, // posz 1, // sway gunviscmds_falcon2scope, // gunviscmds invpartvisibility_falcon2scope, // part visibility L_GUN_077, // short name L_GUN_009, // name L_GUN_150, // manufacturer L_GUN_158, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct weapon invitem_falcon2silencer = { FILE_GFALCON2, // hi model FILE_GFALCON2LOD, // lo model invanim_falcon2_equip, // equip animation invanim_falcon2_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_falcon2silenced_singleshot, &invfunc_falcon2_pistolwhip }, // functions &invammo_falcon2, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 9, // posx -15.7, // posy -23.8, // posz 1, // sway gunviscmds_falcon2silencer, // gunviscmds invpartvisibility_falcon2silencer, // part visibility L_GUN_078, // short name L_GUN_008, // name L_GUN_150, // manufacturer L_GUN_157, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_GANGSTA, }; struct modelpartvisibility invpartvisibility_magsec[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_PISTOL_MAGAZINE1, false }, { MODELPART_PISTOL_MAGAZINE2, false }, { 255 }, }; struct gunviscmd gunviscmds_magsec[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_sethidden(MODELPART_PISTOL_MAGAZINE2) gunviscmd_sethidden(MODELPART_PISTOL_MAGAZINE1) gunviscmd_end }; struct guncmd invanim_magsec_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_MAGSEC4_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_PISTOL_MAGAZINE1) gunscript_setsoundspeed(3, 1300) gunscript_playsound(3, SFX_01D8) gunscript_showpart(10, MODELPART_PISTOL_MAGAZINE2) gunscript_hidepart(14, MODELPART_PISTOL_MAGAZINE1) gunscript_hidepart(22, MODELPART_PISTOL_MAGAZINE2) gunscript_showpart(22, MODELPART_PISTOL_MAGAZINE1) gunscript_setsoundspeed(27, 1300) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(27, SFX_80F6) #else gunscript_playsound(27, SFX_01D9) #endif gunscript_waittime(30, 1) gunscript_waittime(56, 3) gunscript_setsoundspeed(58, 1300) gunscript_playsound(58, SFX_01DB) gunscript_end }; struct guncmd invanim_magsec_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_MAGSEC4_RELOAD_DUALWIELD, 0, 10000) gunscript_showpart(1, MODELPART_PISTOL_MAGAZINE1) gunscript_setsoundspeed(5, 1300) gunscript_playsound(5, SFX_01D8) gunscript_hidepart(25, MODELPART_PISTOL_MAGAZINE1) gunscript_setsoundspeed(47, 1300) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(47, SFX_80F6) #else gunscript_playsound(47, SFX_01D9) #endif gunscript_waittime(49, 1) gunscript_setsoundspeed(69, 1300) gunscript_playsound(69, SFX_01DB) gunscript_end }; struct guncmd invanim_magsec_reload[] = { gunscript_include(1, invanim_magsec_reload_dualwield) gunscript_include(0, invanim_magsec_reload_singlewield) gunscript_end }; struct guncmd invanim_magsec_shoot[] = { gunscript_playanimation(ANIM_GUN_MAGSEC4_SHOOT, 0, 10000) gunscript_waittime(12, 5) gunscript_end }; struct invaimsettings invaimsettings_magsec4 = { 25, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_DEFAULT, 1, INVAIMFLAG_AUTOAIM, }; struct weaponfunc_shootsingle invfunc_magsec_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_magsec_shoot, // fire animation 0, // flags &invrecoilsettings_default, 16, // recoverytime60 1.1, // damage 6, // spread 4, 8, 3, 0, 5, // recoildist 10, // recoilangle 59.999996185303, // slidemax 10, // impactforce 0, // duration60 SFX_804C, // shootsound 1, // penetration }; struct weaponfunc_shootsingle invfunc_magsec_burst = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_128, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_magsec_shoot, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 16, // recoverytime60 1.1, // damage 10, // spread 9, 14, 0, 0, 8, // recoildist 12, // recoilangle 59.999996185303, // slidemax 10, // impactforce 0, // duration60 SFX_804C, // shootsound 1, // penetration }; struct inventory_ammo invammo_magsec = { AMMOTYPE_PISTOL, CASING_STANDARD, 9, // clip size invanim_magsec_reload, // reload animation 0, // flags }; struct weapon invitem_magsec = { FILE_GLEEGUN1, // hi model FILE_GMAGSECLOD, // lo model invanim_magsec_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_magsec_singleshot, &invfunc_magsec_burst }, // functions &invammo_magsec, // pri ammo NULL, // sec ammo &invaimsettings_magsec4, 2, // muzzlez 10.5, // posx -17.2, // posy -26.5, // posz 1, // sway gunviscmds_magsec, // gunviscmds invpartvisibility_magsec, // part visibility L_GUN_010, // short name L_GUN_010, // name L_GUN_151, // manufacturer L_GUN_159, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_GANGSTA, }; struct modelpartvisibility invpartvisibility_dy357[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_MAGNUM_CART1, false }, { MODELPART_MAGNUM_CART2, false }, { MODELPART_MAGNUM_CART3, false }, { MODELPART_MAGNUM_CART4, false }, { MODELPART_MAGNUM_CART5, false }, { MODELPART_MAGNUM_CART6, false }, { 255 }, }; struct gunviscmd gunviscmds_magnum[] = { gunviscmd_sethidden(MODELPART_MAGNUM_CART1) gunviscmd_sethidden(MODELPART_MAGNUM_CART2) gunviscmd_sethidden(MODELPART_MAGNUM_CART3) gunviscmd_sethidden(MODELPART_MAGNUM_CART4) gunviscmd_sethidden(MODELPART_MAGNUM_CART5) gunviscmd_sethidden(MODELPART_MAGNUM_CART6) gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_dy357_shoot[] = { gunscript_playanimation(ANIM_GUN_DY357_SHOOT, 0, 10000) gunscript_waittime(12, 5) gunscript_waittime(12, 2) gunscript_end }; struct guncmd invanim_dy357_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_DY357_RELOAD, 0, 10000) gunscript_playsound(50, SFX_05CF) gunscript_setsoundspeed(80, 1830) gunscript_playsound(80, SFX_01D8) gunscript_popoutsackofpills(80) gunscript_popoutsackofpills(81) gunscript_popoutsackofpills(82) gunscript_popoutsackofpills(83) gunscript_popoutsackofpills(84) gunscript_popoutsackofpills(85) gunscript_showpart(92, MODELPART_HAND_LEFT) gunscript_showpart(92, MODELPART_MAGNUM_CART1) gunscript_showpart(92, MODELPART_MAGNUM_CART2) gunscript_showpart(92, MODELPART_MAGNUM_CART3) gunscript_showpart(92, MODELPART_MAGNUM_CART4) gunscript_showpart(92, MODELPART_MAGNUM_CART5) gunscript_showpart(92, MODELPART_MAGNUM_CART6) gunscript_setsoundspeed(114, 1210) gunscript_playsound(114, SFX_01D8) gunscript_hidepart(121, MODELPART_MAGNUM_CART1) gunscript_hidepart(121, MODELPART_MAGNUM_CART2) gunscript_hidepart(121, MODELPART_MAGNUM_CART3) gunscript_hidepart(121, MODELPART_MAGNUM_CART4) gunscript_hidepart(121, MODELPART_MAGNUM_CART5) gunscript_hidepart(121, MODELPART_MAGNUM_CART6) gunscript_waittime(123, 1) gunscript_playsound(147, SFX_05CD) gunscript_end }; struct guncmd invanim_dy357_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_DY357_RELOAD_DUALWIELD, 0, 10000) gunscript_playsound(50, SFX_05CF) gunscript_setsoundspeed(80, 1830) gunscript_playsound(80, SFX_01D8) gunscript_popoutsackofpills(80) gunscript_popoutsackofpills(81) gunscript_popoutsackofpills(82) gunscript_popoutsackofpills(83) gunscript_popoutsackofpills(84) gunscript_popoutsackofpills(85) gunscript_setsoundspeed(114, 1210) gunscript_playsound(114, SFX_01D8) gunscript_waittime(123, 1) gunscript_playsound(147, SFX_05CD) gunscript_end }; struct guncmd invanim_dy357_reload[] = { gunscript_include(1, invanim_dy357_reload_dualwield) gunscript_include(0, invanim_dy357_reload_singlewield) gunscript_end }; struct guncmd invanim_dy357_pistolwhip[] = { gunscript_playanimation(ANIM_GUN_DY357_WHIP, 0, 10000) gunscript_waittime(23, 2) gunscript_end }; struct weaponfunc_shootsingle invfunc_dy357_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_dy357_shoot, // fire animation 0, // flags &invrecoilsettings_default, 20, // recoverytime60 2, // damage 0, // spread 8, 16, 0, -1, 12, // recoildist 35, // recoilangle 0, // slidemax 6, // impactforce 0, // duration60 SFX_8066, // shootsound 5, // penetration }; struct weaponfunc_shootsingle invfunc_dy357lx_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_dy357_shoot, // fire animation 0, // flags &invrecoilsettings_default, 30, // recoverytime60 200, // damage 0, // spread 8, 24, 0, -1, 12, // recoildist 35, // recoilangle 0, // slidemax 6, // impactforce 0, // duration60 SFX_8066, // shootsound 5, // penetration }; struct weaponfunc_melee invfunc_dy357_pistolwhip = { INVENTORYFUNCTYPE_MELEE, L_GUN_094, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, invanim_dy357_pistolwhip, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_BLUNTIMPACT | FUNCFLAG_NOSTUN | FUNCFLAG_00400000, 0.9, // damage 60, // range 105, // unused 105, // unused 105, // unused 19, // unused -18.7, // unused 19, // unused -18.7, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct inventory_ammo invammo_dy357 = { AMMOTYPE_MAGNUM, CASING_STANDARD, 6, // clip size invanim_dy357_reload, // reload animation 0, // flags }; struct weapon invitem_dy357 = { FILE_GDY357, // hi model FILE_GDY357LOD, // lo model invanim_dy357_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_dy357_singleshot, &invfunc_dy357_pistolwhip }, // functions &invammo_dy357, // pri ammo NULL, // sec ammo &invaimsettings_default, 2, // muzzlez 9.5, // posx -18.2, // posy -25.5, // posz 1, // sway gunviscmds_magnum, // gunviscmds invpartvisibility_dy357, // part visibility L_GUN_084, // short name L_GUN_012, // name L_GUN_149, // manufacturer L_GUN_161, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct weapon invitem_dy357lx = { FILE_GDY357TRENT, // hi model FILE_GDY357TRENTLOD, // lo model invanim_dy357_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_dy357lx_singleshot, &invfunc_dy357_pistolwhip }, // functions &invammo_dy357, // pri ammo NULL, // sec ammo &invaimsettings_default, 2, // muzzlez 9.5, // posx -18.2, // posy -25.5, // posz 1, // sway gunviscmds_magnum, // gunviscmds invpartvisibility_dy357, // part visibility L_GUN_013, // short name L_GUN_013, // name L_GUN_149, // manufacturer L_GUN_162, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct modelpartvisibility invpartvisibility_phoenix[] = { { MODELPART_PHOENIX_ORB, false }, { 255 }, }; struct gunviscmd gunviscmds_phoenix[] = { gunviscmd_sethidden(MODELPART_PHOENIX_ORB) gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_phoenix_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_PHOENIX_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_PHOENIX_ORB) gunscript_setsoundspeed(44, 1510) gunscript_playsound(44, SFX_RELOAD_FARSIGHT) gunscript_hidepart(50, MODELPART_PHOENIX_ORB) gunscript_end }; struct guncmd invanim_phoenix_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_PHOENIX_RELOAD_DUALWIELD, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_PHOENIX_ORB) gunscript_setsoundspeed(44, 1510) gunscript_playsound(44, SFX_RELOAD_FARSIGHT) gunscript_hidepart(50, MODELPART_PHOENIX_ORB) gunscript_end }; struct guncmd invanim_phoenix_equiporreload[] = { gunscript_include(1, invanim_phoenix_reload_dualwield) gunscript_include(0, invanim_phoenix_reload_singlewield) gunscript_end }; struct guncmd invanim_phoenix_shoot[] = { gunscript_playanimation(ANIM_GUN_PHOENIX_SHOOT, 0, 10000) gunscript_waittime(9, 5) gunscript_end }; struct weaponfunc_shootsingle invfunc_phoenix_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_phoenix_shoot, // fire animation 0, // flags &invrecoilsettings_default, 16, // recoverytime60 1.1, // damage 3, // spread 3, 5, 2, 0, 10, // recoildist 15, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_8071, // shootsound 1, // penetration }; struct weaponfunc_shootsingle invfunc_phoenix_explosiveshells = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_095, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_phoenix_shoot, // fire animation FUNCFLAG_EXPLOSIVESHELLS, &invrecoilsettings_default, 16, // recoverytime60 1.2, // damage 5, // spread 13, 15, 25, 0, 15, // recoildist 25, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_8072, // shootsound 1, // penetration }; struct inventory_ammo invammo_phoenix = { AMMOTYPE_PISTOL, CASING_NONE, 8, // clip size invanim_phoenix_equiporreload, // reload animation 0, // flags }; struct weapon invitem_phoenix = { FILE_GMAIANPISTOL, // hi model FILE_GMAYANPISTOLLOD, // lo model invanim_phoenix_equiporreload, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_phoenix_singleshot, &invfunc_phoenix_explosiveshells }, // functions &invammo_phoenix, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 9.5, // posx -16.2, // posy -23, // posz 1, // sway gunviscmds_phoenix, // gunviscmds invpartvisibility_phoenix, // part visibility L_GUN_014, // short name L_GUN_014, // name L_GUN_153, // manufacturer L_GUN_163, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_GANGSTA, }; struct modelpartvisibility invpartvisibility_mauler[] = { { MODELPART_MAULER_MAGAZINE2, false }, { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct gunviscmd gunviscmds_mauler[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_sethidden(MODELPART_MAULER_MAGAZINE2) gunviscmd_end }; struct guncmd invanim_mauler_shoot[] = { gunscript_playanimation(ANIM_GUN_MAULER_SHOOT, 0, 10000) gunscript_waittime(9, 5) gunscript_end }; struct guncmd invanim_mauler_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_MAULER_RELOAD, 0, 10000) gunscript_showpart(0, MODELPART_HAND_LEFT) gunscript_setsoundspeed(4, 1200) gunscript_playsound(4, SFX_0053) gunscript_showpart(4, MODELPART_MAULER_MAGAZINE2) gunscript_hidepart(18, MODELPART_MAULER_MAGAZINE1) gunscript_setsoundspeed(20, 2500) gunscript_playsound(20, SFX_DOOR_8012) gunscript_waittime(25, 1) gunscript_showpart(25, MODELPART_MAULER_MAGAZINE1) gunscript_hidepart(25, MODELPART_MAULER_MAGAZINE2) gunscript_setsoundspeed(27, 2000) gunscript_playsound(27, SFX_05C5) gunscript_setsoundspeed(61, 1000) gunscript_playsound(61, SFX_01DB) gunscript_waittime(61, 3) gunscript_end }; struct guncmd invanim_mauler_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_MAULER_RELOAD_DUALWIELD, 0, 10000) gunscript_setsoundspeed(14, 1200) gunscript_playsound(14, SFX_0053) gunscript_setsoundspeed(40, 2500) gunscript_playsound(40, SFX_DOOR_8012) gunscript_setsoundspeed(47, 2000) gunscript_playsound(47, SFX_05C5) gunscript_waittime(47, 1) gunscript_setsoundspeed(68, 1000) gunscript_playsound(68, SFX_01DB) gunscript_end }; struct guncmd invanim_mauler_reload[] = { gunscript_include(1, invanim_mauler_reload_dualwield) gunscript_include(0, invanim_mauler_reload_singlewield) gunscript_end }; struct guncmd invanim_unused_8007c0bc[] = { gunscript_playanimation(ANIM_03F6, 0, 10000) gunscript_end }; struct weaponfunc_shootsingle invfunc_mauler_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_mauler_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.2, // damage 6, // spread 3, 9, 32, 28, 0, // recoildist 0, // recoilangle 59.999996185303, // slidemax 4, // impactforce 0, // duration60 SFX_805B, // shootsound 1, // penetration }; struct weaponfunc_shootsingle invfunc_mauler_chargeshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_129, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_mauler_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.2, // damage 6, // spread 3, 9, 32, 28, 0, // recoildist 0, // recoilangle 59.999996185303, // slidemax 4, // impactforce 0, // duration60 SFX_805B, // shootsound 1, // penetration }; struct inventory_ammo invammo_mauler = { AMMOTYPE_PISTOL, CASING_NONE, 20, // clip size invanim_mauler_reload, // reload animation 0, // flags }; struct weapon invitem_mauler = { FILE_GSKPISTOL, // hi model FILE_GSKPISTOLLOD, // lo model invanim_mauler_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_mauler_singleshot, &invfunc_mauler_chargeshot }, // functions &invammo_mauler, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 11.5, // posx -17.5, // posy -20, // posz 1, // sway gunviscmds_mauler, // gunviscmds invpartvisibility_mauler, // part visibility L_GUN_011, // short name L_GUN_011, // name L_GUN_152, // manufacturer L_GUN_160, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; struct modelpartvisibility invpartvisibility_cmp150[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_CMP150_MAGAZINE2, false }, { 255 }, }; struct gunviscmd gunviscmds_cmp150[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_sethidden(MODELPART_CMP150_MAGAZINE2) gunviscmd_sethidden(MODELPART_GUN_CARTFLAPOPEN) gunviscmd_end }; struct guncmd invanim_cmp150_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_CMP150_RELOAD, 0, 10000) gunscript_hidepart(23, MODELPART_CMP150_MAGAZINE1) gunscript_showpart(33, MODELPART_HAND_LEFT) gunscript_showpart(33, MODELPART_CMP150_MAGAZINE2) gunscript_setsoundspeed(9, 950) gunscript_playsound(9, SFX_01D8) gunscript_setsoundspeed(44, 950) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(44, SFX_80F6) #else gunscript_playsound(44, SFX_01D9) #endif gunscript_hidepart(45, MODELPART_CMP150_MAGAZINE2) gunscript_showpart(45, MODELPART_CMP150_MAGAZINE1) gunscript_waittime(45, 1) gunscript_playsound(86, SFX_0431) gunscript_end }; struct guncmd invanim_cmp150_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_CMP150_RELOAD_DUALWIELD, 0, 10000) gunscript_hidepart(23, MODELPART_CMP150_MAGAZINE1) gunscript_showpart(33, MODELPART_HAND_LEFT) gunscript_showpart(33, MODELPART_CMP150_MAGAZINE2) gunscript_setsoundspeed(20, 950) gunscript_playsound(20, SFX_01D8) gunscript_setsoundspeed(61, 950) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(61, SFX_80F6) #else gunscript_playsound(61, SFX_01D9) #endif gunscript_hidepart(61, MODELPART_CMP150_MAGAZINE2) gunscript_showpart(61, MODELPART_CMP150_MAGAZINE1) gunscript_waittime(61, 1) gunscript_playsound(76, SFX_0431) gunscript_end }; struct guncmd invanim_cmp150_reload[] = { gunscript_include(1, invanim_cmp150_reload_dualwield) gunscript_include(0, invanim_cmp150_reload_singlewield) gunscript_end }; struct guncmd invanim_cmp150_shoot[] = { gunscript_playanimation(ANIM_GUN_CMP150_SHOOT, 0, 10000) gunscript_waittime(14, 5) gunscript_waitforzreleased(14) gunscript_end }; struct invaimsettings invaimsettings_cmp150 = { 0, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_FOLLOWLOCKON, 0, INVAIMFLAG_AUTOAIM | INVAIMFLAG_ACCURATESINGLESHOT, }; struct weaponfunc_shootauto invfunc_cmp150_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_cmp150_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 9, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 3, // duration60 SFX_MENU_ERROR, // shootsound 1, // penetration 900, // initialrpm 900, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_shootauto invfunc_cmp150_followlockon = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_102, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_cmp150_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 9, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 3, // duration60 SFX_MENU_ERROR, // shootsound 1, // penetration 900, // initialrpm 900, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_cmp150 = { AMMOTYPE_SMG, CASING_STANDARD, 32, // clip size invanim_cmp150_reload, // reload animation 0, // flags }; struct weapon invitem_cmp150 = { FILE_GCMP150, // hi model FILE_GCMP150LOD, // lo model invanim_cmp150_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_cmp150_rapidfire, &invfunc_cmp150_followlockon }, // functions &invammo_cmp150, // pri ammo NULL, // sec ammo &invaimsettings_cmp150, 3, // muzzlez 13, // posx -17.7, // posy -27.5, // posz 1, // sway gunviscmds_cmp150, // gunviscmds invpartvisibility_cmp150, // part visibility L_GUN_015, // short name L_GUN_015, // name L_GUN_149, // manufacturer L_GUN_164, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_04000000 | WEAPONFLAG_AIMTRACK, }; struct modelpartvisibility invpartvisibility_cyclone[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_CYCLONE_MAGAZINE, false }, { 255 }, }; struct gunviscmd gunviscmds_cyclone[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_sethidden(MODELPART_CYCLONE_MAGAZINE) gunviscmd_end }; struct guncmd invanim_cyclone_reload_singlewield[] = { gunscript_playanimation(ANIM_GUN_CYCLONE_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_CYCLONE_MAGAZINE) gunscript_playsound(60, SFX_05D3) gunscript_end }; struct guncmd invanim_cyclone_reload_dualwield[] = { gunscript_playanimation(ANIM_GUN_CYCLONE_RELOAD_DUALWIELD, 0, 10000) gunscript_playsound(60, SFX_05D3) gunscript_end }; struct guncmd invanim_cyclone_equiporreload[] = { gunscript_include(1, invanim_cyclone_reload_dualwield) gunscript_include(0, invanim_cyclone_reload_singlewield) gunscript_end }; struct guncmd invanim_cyclone_shoot[] = { gunscript_playanimation(ANIM_GUN_CYCLONE_SHOOT, 0, 10000) gunscript_waittime(5, 5) gunscript_waitforzreleased(5) gunscript_end }; struct weaponfunc_shootauto invfunc_cyclone_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, invanim_cyclone_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 0.8, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_805F, // shootsound 1, // penetration 900, // initialrpm 900, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_shootauto invfunc_cyclone_magazinedischarge = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_097, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, invanim_cyclone_shoot, // fire animation FUNCFLAG_BURST50, &invrecoilsettings_default, 0, // recoverytime60 1.4, // damage 25, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_8075, // shootsound 1, // penetration 2000, // initialrpm 2000, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_cyclone = { AMMOTYPE_SMG, CASING_NONE, 50, // clip size invanim_cyclone_equiporreload, // reload animation 0, // flags }; struct weapon invitem_cyclone = { FILE_GCYCLONE, // hi model FILE_GCYCLONELOD, // lo model invanim_cyclone_equiporreload, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_cyclone_rapidfire, &invfunc_cyclone_magazinedischarge }, // functions &invammo_cyclone, // pri ammo NULL, // sec ammo &invaimsettings_smg, 1, // muzzlez 21.5, // posx -26.5, // posy -35, // posz 1, // sway gunviscmds_cyclone, // gunviscmds invpartvisibility_cyclone, // part visibility L_GUN_020, // short name L_GUN_020, // name L_GUN_151, // manufacturer L_GUN_169, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; struct guncmd invanim_rcp120_reload[] = { gunscript_playanimation(ANIM_GUN_RCP120_RELOAD, 0, 10000) gunscript_setsoundspeed(18, 1100) gunscript_playsound(18, SFX_0053) gunscript_showpart(25, MODELPART_RCP120_MAGAZINE1) gunscript_showpart(50, MODELPART_RCP120_MAGAZINE2) gunscript_playsound(74, SFX_05C5) gunscript_hidepart(75, MODELPART_RCP120_MAGAZINE2) gunscript_showpart(75, MODELPART_RCP120_MAGAZINE1) gunscript_playsound(112, SFX_0431) gunscript_end }; struct guncmd invanim_rcp120_shoot[] = { gunscript_playanimation(ANIM_GUN_RCP120_SHOOT, 0, 10000) gunscript_waittime(10, 5) gunscript_waitforzreleased(10) gunscript_end }; struct modelpartvisibility invpartvisibility_rcp120[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_RCP120_MAGAZINE2, false }, { 255 }, }; struct gunviscmd gunviscmds_rcp120[] = { gunviscmd_sethidden(MODELPART_RCP120_MAGAZINE2) gunviscmd_end }; struct weaponfunc_shootauto invfunc_rcp120_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_rcp120_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.2, // damage 6, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 4, // duration60 SFX_806D, // shootsound 1, // penetration 1100, // initialrpm 1100, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_special invfunc_rcp120_cloak = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_116, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_AUTOSWITCHUNSELECTABLE, HANDATTACKTYPE_RCP120CLOAK, 30, // recoverytime60 0, // soundnum (unused) }; struct inventory_ammo invammo_rcp120 = { AMMOTYPE_SMG, CASING_STANDARD, 120, // clip size invanim_rcp120_reload, // reload animation 0, // flags }; struct weapon invitem_rcp120 = { FILE_GRCP120, // hi model FILE_GRCP120LOD, // lo model invanim_rcp120_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_rcp120_rapidfire, &invfunc_rcp120_cloak }, // functions &invammo_rcp120, // pri ammo NULL, // sec ammo &invaimsettings_smg, 3, // muzzlez 13, // posx -18.2, // posy -27.5, // posz 1, // sway gunviscmds_rcp120, // gunviscmds invpartvisibility_rcp120, // part visibility L_GUN_022, // short name L_GUN_022, // name L_GUN_151, // manufacturer L_GUN_170, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN, }; struct guncmd invanim_callisto_reload[] = { gunscript_playanimation(ANIM_GUN_CALLISTO_RELOAD, 0, 10000) gunscript_showpart(30, MODELPART_CALLISTO_ORB) gunscript_setsoundspeed(58, 933) gunscript_playsound(58, SFX_RELOAD_FARSIGHT) gunscript_hidepart(79, MODELPART_CALLISTO_ORB) gunscript_end }; struct guncmd invanim_callisto_shoot[] = { gunscript_playanimation(ANIM_GUN_CALLISTO_SHOOT, 0, 10000) gunscript_waittime(8, 5) gunscript_waitforzreleased(8) gunscript_end }; struct modelpartvisibility invpartvisibility_callisto[] = { { MODELPART_CALLISTO_ORB, false }, { 255 }, }; struct gunviscmd gunviscmds_callisto[] = { gunviscmd_sethidden(MODELPART_CALLISTO_ORB) gunviscmd_end }; struct weaponfunc_shootauto invfunc_callisto_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_callisto_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.2, // damage 9, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 3, // duration60 SFX_8063, // shootsound 1, // penetration 900, // initialrpm 900, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_shootauto invfunc_callisto_highimpactshells = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_115, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_callisto_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 2.4, // damage 9, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 3, // duration60 SFX_8064, // shootsound 5, // penetration 300, // initialrpm 300, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_callisto = { AMMOTYPE_SMG, CASING_NONE, 32, // clip size invanim_callisto_reload, // reload animation 0, // flags }; struct weapon invitem_callisto = { FILE_GMAIANSMG, // hi model FILE_GMAYANSMGLOD, // lo model invanim_callisto_reload, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_callisto_rapidfire, &invfunc_callisto_highimpactshells }, // functions &invammo_callisto, // pri ammo NULL, // sec ammo &invaimsettings_smg, 3, // muzzlez 17.5, // posx -22.7, // posy -25, // posz 1, // sway gunviscmds_callisto, // gunviscmds invpartvisibility_callisto, // part visibility L_GUN_023, // short name L_GUN_023, // name L_GUN_153, // manufacturer L_GUN_171, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct gunviscmd gunviscmds_dragon[] = { gunviscmd_sethidden(MODELPART_DRAGON_MAGAZINE1) gunviscmd_end }; struct modelpartvisibility invpartvisibility_dragon[] = { { MODELPART_DRAGON_MAGAZINE1, false }, { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct guncmd invanim_dragon_shoot[] = { gunscript_playanimation(ANIM_GUN_DRAGON_SHOOT, 0, 10000) gunscript_end }; struct guncmd invanim_dragon_reload[] = { gunscript_playanimation(ANIM_GUN_DRAGON_RELOAD, 0, 10000) gunscript_playsound(8, SFX_0053) gunscript_hidepart(17, MODELPART_DRAGON_MAGAZINE2) gunscript_showpart(17, MODELPART_DRAGON_MAGAZINE1) gunscript_waittime(41, 1) gunscript_playsound(41, SFX_05C5) gunscript_showpart(41, MODELPART_DRAGON_MAGAZINE2) gunscript_hidepart(41, MODELPART_DRAGON_MAGAZINE1) gunscript_end }; struct weaponfunc_shootauto invfunc_dragon_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, invanim_dragon_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.1, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_8049, // shootsound 1, // penetration 700, // initialrpm 700, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_throw invfunc_dragon_selfdestruct = { INVENTORYFUNCTYPE_THROW, L_GUN_118, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_DISCARDWEAPON, MODEL_CHRDRAGON, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct inventory_ammo invammo_dragon = { AMMOTYPE_RIFLE, CASING_RIFLE, 30, // clip size invanim_dragon_reload, // reload animation 0, // flags }; struct weapon invitem_dragon = { FILE_GDYDRAGON, // hi model FILE_GDYDRAGONLOD, // lo model invanim_dragon_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_dragon_rapidfire, &invfunc_dragon_selfdestruct }, // functions &invammo_dragon, // pri ammo NULL, // sec ammo &invaimsettings_heavy, 1, // muzzlez 15, // posx -29.5, // posy -27, // posz 1, // sway gunviscmds_dragon, // gunviscmds invpartvisibility_dragon, // part visibility L_GUN_017, // short name L_GUN_017, // name L_GUN_149, // manufacturer L_GUN_166, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_04000000, }; struct gunviscmd gunviscmds_superdragon[] = { gunviscmd_sethidden(MODELPART_SUPERDRAGON_MAGAZINE1) gunviscmd_sethidden(MODELPART_SUPERDRAGON_MAGAZINE2) gunviscmd_end }; struct modelpartvisibility invpartvisibility_superdragon[] = { { MODELPART_SUPERDRAGON_MAGAZINE1, false }, { MODELPART_SUPERDRAGON_MAGAZINE2, false }, { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct guncmd invanim_superdragon_reload[] = { gunscript_playanimation(ANIM_GUN_SUPERDRAGON_RELOAD_PRI, 0, 10000) gunscript_playsound(8, SFX_0053) gunscript_hidepart(16, MODELPART_SUPERDRAGON_MAGAZINE3) gunscript_showpart(16, MODELPART_SUPERDRAGON_MAGAZINE1) gunscript_playsound(41, SFX_05C5) gunscript_waittime(43, 1) gunscript_showpart(43, MODELPART_SUPERDRAGON_MAGAZINE3) gunscript_hidepart(43, MODELPART_SUPERDRAGON_MAGAZINE1) gunscript_end }; struct guncmd invanim_superdragon_grenadereload[] = { gunscript_playanimation(ANIM_GUN_SUPERDRAGON_RELOAD_SEC, 0, 10000) gunscript_setsoundspeed(6, 700) gunscript_playsound(6, SFX_0053) gunscript_showpart(30, MODELPART_SUPERDRAGON_MAGAZINE2) gunscript_hidepart(30, MODELPART_SUPERDRAGON_MAGAZINE4) gunscript_hidepart(64, MODELPART_SUPERDRAGON_MAGAZINE2) gunscript_showpart(64, MODELPART_SUPERDRAGON_MAGAZINE4) gunscript_waittime(64, 1) gunscript_setsoundspeed(66, 850) gunscript_playsound(66, SFX_05C5) gunscript_end }; struct guncmd invanim_superdragon_shoot[] = { gunscript_playanimation(ANIM_GUN_SUPERDRAGON_SHOOT_PRI, 0, 10000) gunscript_end }; struct guncmd invanim_superdragon_shootgrenade[] = { gunscript_playanimation(ANIM_GUN_SUPERDRAGON_SHOOT_SEC, 0, 10000) gunscript_end }; struct guncmd invanim_superdragon_pritosec[] = { gunscript_playanimation(ANIM_GUN_SUPERDRAGON_CHANGEFUNC, 0, 10000) gunscript_end }; struct guncmd invanim_superdragon_sectopri[] = { gunscript_playanimation(ANIM_GUN_SUPERDRAGON_CHANGEFUNC, 65535, 55536) gunscript_end }; struct weaponfunc_shootauto invfunc_superdragon_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, invanim_superdragon_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.2, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_8049, // shootsound 1, // penetration 700, // initialrpm 700, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_shootprojectile invfunc_superdragon_grenadelauncher = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_098, // name 0, // unused 1, // ammoindex &invnoisesettings_loudest, invanim_superdragon_shootgrenade, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_10000000 | FUNCFLAG_20000000, NULL, 0, 1.2, // damage 6, // spread 5, 15, -1, 0, 3, 2, 0, 4, 4, SFX_8073, 1, MODEL_CHRDRAGGRENADE, // projectilemodelnum 0, // unused 1, // scale 0, // speed 0.08, // unk50 30, // traveldist 1200, // timer60 0.1, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct inventory_ammo invammo_superdragon = { AMMOTYPE_RIFLE, CASING_RIFLE, 30, // clip size invanim_superdragon_reload, // reload animation 0, // flags }; struct inventory_ammo invammo_superdragon_grenades = { AMMOTYPE_DEVASTATOR, CASING_NONE, 6, // clip size invanim_superdragon_grenadereload, // reload animation 0, // flags }; struct weapon invitem_superdragon = { FILE_GDYSUPERDRAGON, // hi model FILE_GDYSUPERDRAGONLOD, // lo model invanim_superdragon_shoot, // equip animation NULL, // unequip animation invanim_superdragon_pritosec, // pritosec animation invanim_superdragon_sectopri, // sectopri animation { &invfunc_superdragon_rapidfire, &invfunc_superdragon_grenadelauncher }, // functions &invammo_superdragon, // pri ammo &invammo_superdragon_grenades, // sec ammo &invaimsettings_heavy, 1, // muzzlez 15, // posx -29.5, // posy -27, // posz 1, // sway gunviscmds_superdragon, // gunviscmds invpartvisibility_superdragon, // part visibility L_GUN_018, // short name L_GUN_018, // name L_GUN_149, // manufacturer L_GUN_167, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; struct gunviscmd gunviscmds_ar34[] = { gunviscmd_sethidden(MODELPART_AR34_MAGAZINE2) gunviscmd_end }; struct modelpartvisibility invpartvisibility_ar34[] = { { MODELPART_AR34_MAGAZINE2, false }, { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct guncmd invanim_ar34_reload[] = { gunscript_playanimation(ANIM_GUN_AR34_RELOAD, 0, 10000) gunscript_setsoundspeed(16, 900) gunscript_playsound(16, SFX_0053) gunscript_hidepart(21, MODELPART_AR34_MAGAZINE1) gunscript_showpart(50, MODELPART_AR34_MAGAZINE2) gunscript_setsoundspeed(67, 1400) gunscript_playsound(67, SFX_8025) gunscript_hidepart(72, MODELPART_AR34_MAGAZINE2) gunscript_showpart(72, MODELPART_AR34_MAGAZINE1) gunscript_waittime(72, 1) gunscript_setsoundspeed(95, 900) gunscript_playsound(95, SFX_05C5) gunscript_end }; struct invaimsettings invaimsettings_ar34 = { 20, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_DEFAULT, 5, INVAIMFLAG_AUTOAIM | INVAIMFLAG_ACCURATESINGLESHOT, }; struct weaponfunc_shootauto invfunc_ar34_burstfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_087, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, NULL, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 0, // recoverytime60 1.4, // damage 8, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 5, // duration60 SFX_8059, // shootsound 1, // penetration 750, // initialrpm 750, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_shootauto invfunc_ar34_usescope = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_103, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, NULL, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 0, // recoverytime60 1.4, // damage 8, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 5, // duration60 SFX_8059, // shootsound 1, // penetration 750, // initialrpm 750, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_ar34 = { AMMOTYPE_RIFLE, CASING_RIFLE, 30, // clip size invanim_ar34_reload, // reload animation 0, // flags }; struct weapon invitem_ar34 = { FILE_GAR34, // hi model FILE_GAR34LOD, // lo model invanim_ar34_reload, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_ar34_burstfire, &invfunc_ar34_usescope }, // functions &invammo_ar34, // pri ammo NULL, // sec ammo &invaimsettings_ar34, 1, // muzzlez 11.5, // posx -25.7, // posy -30.5, // posz 1, // sway gunviscmds_ar34, // gunviscmds invpartvisibility_ar34, // part visibility L_GUN_016, // short name L_GUN_016, // name L_GUN_000, // manufacturer L_GUN_165, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN | WEAPONFLAG_04000000, }; struct gunviscmd gunviscmds_k7avenger[] = { gunviscmd_sethidden(MODELPART_K7AVENGER_MAGAZINE2) gunviscmd_end }; struct modelpartvisibility invpartvisibility_k7avenger[] = { { MODELPART_K7AVENGER_MAGAZINE2, false }, { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct guncmd invanim_k7avenger_reload[] = { gunscript_playanimation(ANIM_GUN_K7AVENGER_RELOAD, 0, 10000) gunscript_setsoundspeed(15, 1200) gunscript_playsound(15, SFX_0053) gunscript_hidepart(22, MODELPART_K7AVENGER_MAGAZINE1) gunscript_showpart(48, MODELPART_K7AVENGER_MAGAZINE2) gunscript_waittime(68, 1) gunscript_hidepart(69, MODELPART_K7AVENGER_MAGAZINE2) gunscript_showpart(69, MODELPART_K7AVENGER_MAGAZINE1) gunscript_setsoundspeed(69, 1400) gunscript_playsound(69, SFX_8025) gunscript_playsound(91, SFX_05C5) gunscript_end }; struct guncmd invanim_k7avenger_equip[] = { gunscript_playanimation(ANIM_GUN_K7AVENGER_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_k7avenger_unequip[] = { gunscript_playanimation(ANIM_GUN_K7AVENGER_UNEQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_unused_8007ce6c[] = { gunscript_playanimation(ANIM_00E8, 0, 10000) gunscript_end }; struct invaimsettings invaimsettings_k7avenger = { 20, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_DEFAULT, 5, INVAIMFLAG_AUTOAIM | INVAIMFLAG_ACCURATESINGLESHOT, }; struct weaponfunc_shootauto invfunc_k7avenger_burstfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_087, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, NULL, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 0, // recoverytime60 1.5, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_805A, // shootsound 1, // penetration 950, // initialrpm 950, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_shootauto invfunc_k7avenger_threatdetector = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_119, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, NULL, // fire animation FUNCFLAG_BURST3 | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_THREATDETECTOR, &invrecoilsettings_default, 0, // recoverytime60 1.5, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_805A, // shootsound 1, // penetration 950, // initialrpm 950, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_k7avenger = { AMMOTYPE_RIFLE, CASING_RIFLE, 25, // clip size invanim_k7avenger_reload, // reload animation 0, // flags }; struct weapon invitem_k7avenger = { FILE_GK7AVENGER, // hi model FILE_GAVENGERLOD, // lo model invanim_k7avenger_equip, // equip animation invanim_k7avenger_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_k7avenger_burstfire, &invfunc_k7avenger_threatdetector }, // functions &invammo_k7avenger, // pri ammo NULL, // sec ammo &invaimsettings_k7avenger, 1, // muzzlez 6.5, // posx -24, // posy -27, // posz 1, // sway gunviscmds_k7avenger, // gunviscmds invpartvisibility_k7avenger, // part visibility L_GUN_019, // short name L_GUN_019, // name L_GUN_149, // manufacturer L_GUN_168, // description #if VERSION >= VERSION_NTSC_1_0 WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, #else // NTSC beta uses "an" in "Picked up an K7 Avenger" WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN, #endif }; struct gunviscmd gunviscmds_laptopgun[] = { gunviscmd_sethidden(MODELPART_LAPTOPGUN_MAGAZINE2) gunviscmd_sethidden(MODELPART_LAPTOPGUN_MAGAZINE1) gunviscmd_end }; struct modelpartvisibility invpartvisibility_laptopgun[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_LAPTOPGUN_MAGAZINE1, false }, { MODELPART_LAPTOPGUN_MAGAZINE2, false }, { 255 }, }; struct guncmd invanim_laptopgun_reload[] = { gunscript_playanimation(ANIM_GUN_LAPTOP_RELOAD, 0, 10000) gunscript_setsoundspeed(4, 1630) gunscript_playsound(4, SFX_RELOAD_04FB) gunscript_setsoundspeed(15, 1436) gunscript_playsound(15, SFX_04FA) gunscript_playsound(25, SFX_04F7) gunscript_showpart(40, MODELPART_LAPTOPGUN_MAGAZINE1) gunscript_playsound(42, SFX_0053) gunscript_showpart(48, MODELPART_LAPTOPGUN_MAGAZINE2) gunscript_hidepart(55, MODELPART_LAPTOPGUN_MAGAZINE1) gunscript_hidepart(63, MODELPART_LAPTOPGUN_MAGAZINE2) gunscript_showpart(63, MODELPART_LAPTOPGUN_MAGAZINE1) gunscript_playsound(63, SFX_04F8) gunscript_hidepart(85, MODELPART_LAPTOPGUN_MAGAZINE1) gunscript_waittime(85, 1) gunscript_playsound(85, SFX_05C5) gunscript_playsound(91, SFX_04F9) gunscript_end }; struct guncmd invanim_laptopgun_shoot[] = { gunscript_playanimation(ANIM_GUN_LAPTOP_SHOOT, 0, 10000) gunscript_waittime(10, 5) gunscript_waitforzreleased(10) gunscript_end }; struct guncmd invanim_laptopgun_equip[] = { gunscript_playanimation(ANIM_GUN_LAPTOP_EQUIP, 0, 10000) gunscript_setsoundspeed(15, 720) gunscript_playsound(15, SFX_04F7) gunscript_playsound(35, SFX_04F7) gunscript_playsound(58, SFX_04F8) gunscript_end }; struct guncmd invanim_laptopgun_unequip[] = { gunscript_playanimation(ANIM_GUN_LAPTOP_UNEQUIP, 0, 10000) gunscript_playsound(1, SFX_04F7) gunscript_setsoundspeed(25, 720) gunscript_playsound(25, SFX_04F7) gunscript_playsound(50, SFX_04F8) gunscript_end }; struct weaponfunc_shootauto invfunc_laptopgun_burstfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_087, // name 0, // unused 0, // ammoindex &invnoisesettings_loud, invanim_laptopgun_shoot, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 0, // recoverytime60 1.15, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_8044, // shootsound 1, // penetration 1000, // initialrpm 1000, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weaponfunc_throw invfunc_laptopgun_deploy = { INVENTORYFUNCTYPE_THROW, L_GUN_117, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_STICKTOWALL | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_DISCARDWEAPON | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRAUTOGUN, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct inventory_ammo invammo_laptopgun = { AMMOTYPE_SMG, CASING_NONE, 50, // clip size invanim_laptopgun_reload, // reload animation 0, // flags }; struct weapon invitem_laptopgun = { FILE_GPCGUN, // hi model FILE_GPCGUNLOD, // lo model invanim_laptopgun_equip, // equip animation invanim_laptopgun_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_laptopgun_burstfire, &invfunc_laptopgun_deploy }, // functions &invammo_laptopgun, // pri ammo NULL, // sec ammo &invaimsettings_heavy, 1.2, // muzzlez 16, // posx -17.7, // posy -14.5, // posz 1, // sway gunviscmds_laptopgun, // gunviscmds invpartvisibility_laptopgun, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_251, // short name #else L_GUN_024, // short name #endif L_GUN_024, // name L_GUN_150, // manufacturer L_GUN_172, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_04000000, }; struct gunviscmd gunviscmds_shotgun[] = { gunviscmd_sethidden(MODELPART_SHOTGUN_CART) gunviscmd_end }; struct modelpartvisibility invpartvisibility_shotgun[] = { { MODELPART_SHOTGUN_CART, false }, { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct guncmd invanim_shotgun_reload[] = { gunscript_playanimation(ANIM_GUN_SHOTGUN_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_SHOTGUN_CART) gunscript_playsound(67, SFX_01D8) gunscript_waittime(74, 1) gunscript_hidepart(75, MODELPART_SHOTGUN_CART) gunscript_repeatuntilfull(0x0054, 0x0000, 0x0032) gunscript_playsound(103, SFX_RELOAD_04FB) gunscript_end }; struct guncmd invanim_shotgun_singleshot[] = { gunscript_playanimation(ANIM_GUN_SHOTGUN_SHOOT_SINGLE, 0, 10000) gunscript_waittime(9, 2) gunscript_playsound(34, SFX_RELOAD_04FB) gunscript_end }; struct guncmd invanim_shotgun_doubleshot[] = { gunscript_playanimation(ANIM_GUN_SHOTGUN_SHOOT_DOUBLE, 0, 10000) gunscript_waittime(9, 2) gunscript_playsound(54, SFX_RELOAD_04FB) gunscript_end }; struct weaponfunc_shootsingle invfunc_shotgun_single = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_089, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_shotgun_singleshot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 0.6, // damage 30, // spread 20, 28, 0, 0, 0, // recoildist 0, // recoilangle 0, // slidemax 4, // impactforce 0, // duration60 SFX_FIRE_SHOTGUN, // shootsound 1, // penetration }; struct weaponfunc_shootsingle invfunc_shotgun_double = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_105, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_shotgun_doubleshot, // fire animation FUNCFLAG_BURST2, &invrecoilsettings_default, 0, // recoverytime60 0.6, // damage 16, // spread 20, 28, 0, 0, 0, // recoildist 0, // recoilangle 0, // slidemax 4, // impactforce 0, // duration60 SFX_FIRE_SHOTGUN, // shootsound 1, // penetration }; struct inventory_ammo invammo_shotgun = { AMMOTYPE_SHOTGUN, CASING_SHOTGUN, 9, // clip size invanim_shotgun_reload, // reload animation AMMOFLAG_INCREMENTALRELOAD, // flags }; struct weapon invitem_shotgun = { FILE_GSHOTGUN, // hi model FILE_GSHOTGUNLOD, // lo model invanim_shotgun_singleshot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_shotgun_single, &invfunc_shotgun_double }, // functions &invammo_shotgun, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12, // posx -16.7, // posy -21, // posz 1, // sway gunviscmds_shotgun, // gunviscmds invpartvisibility_shotgun, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_253, // short name #else L_GUN_025, // short name #endif L_GUN_025, // name L_GUN_149, // manufacturer L_GUN_173, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; f32 vibrationstart_reaper[] = {0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}; f32 vibrationmax_reaper[] = {1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}; struct modelpartvisibility invpartvisibility_reaper[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { MODELPART_GUN_MUZZLEFLASH2, false }, { MODELPART_GUN_MUZZLEFLASH3, false }, { MODELPART_REAPER_MAGAZINE2, false }, { 255 }, }; struct gunviscmd gunviscmds_reaper[] = { gunviscmd_sethidden(MODELPART_REAPER_MAGAZINE2) gunviscmd_end }; struct guncmd invanim_reaper_shoot[] = { gunscript_playanimation(ANIM_GUN_REAPER_SHOOT, 0, 10000) gunscript_waittime(12, 5) gunscript_end }; struct guncmd invanim_reaper_reload[] = { gunscript_playanimation(ANIM_GUN_REAPER_RELOAD, 0, 10000) gunscript_playsound(49, SFX_05C7) gunscript_hidepart(70, MODELPART_REAPER_MAGAZINE1) gunscript_showpart(90, MODELPART_REAPER_MAGAZINE2) gunscript_playsound(124, SFX_05C6) gunscript_showpart(134, MODELPART_REAPER_MAGAZINE1) gunscript_hidepart(134, MODELPART_REAPER_MAGAZINE2) gunscript_waittime(134, 1) gunscript_end }; struct guncmd invanim_reaper_equip[] = { gunscript_playanimation(ANIM_GUN_REAPER_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_reaper_unequip[] = { gunscript_playanimation(ANIM_GUN_REAPER_UNEQUIP, 0, 10000) gunscript_end }; struct weaponfunc_shootauto invfunc_reaper_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_088, // name 0, // unused 0, // ammoindex &invnoisesettings_reaper, invanim_reaper_shoot, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_reaper, 0, // recoverytime60 1.2, // damage 56, // spread 3, 9, 32, 28, 0, // recoildist 0, // recoilangle 0, // slidemax 4, // impactforce 2, // duration60 SFX_803F, // shootsound 1, // penetration 60, // initialrpm 1800, // maxrpm vibrationstart_reaper, // vibrationstart vibrationmax_reaper, // vibrationmax 88, // turretaccel 88, // turretdecel }; struct weaponfunc_melee invfunc_reaper_grind = { INVENTORYFUNCTYPE_MELEE, L_GUN_106, // name 0, // unused -1, // ammoindex &invnoisesettings_default, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, 0.05, // damage 80, // range 105, // unused 105, // unused 105, // unused -0.5, // unused -21.2, // unused -0.5, // unused -21.2, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct inventory_ammo invammo_reaper = { AMMOTYPE_REAPER, CASING_REAPER, 200, // clip size invanim_reaper_reload, // reload animation 0, // flags }; struct weapon invitem_reaper = { FILE_GSKMINIGUN, // hi model FILE_GSKMINIGUNLOD, // lo model invanim_reaper_equip, // equip animation invanim_reaper_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_reaper_shoot, &invfunc_reaper_grind }, // functions &invammo_reaper, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 4, // posx -21.2, // posy -30.5, // posz 1, // sway gunviscmds_reaper, // gunviscmds invpartvisibility_reaper, // part visibility L_GUN_026, // short name L_GUN_026, // name L_GUN_152, // manufacturer L_GUN_174, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, }; struct modelpartvisibility invpartvisibility_rocketlauncher[] = { { MODELPART_ROCKETLAUNCHER_ROCKET, false }, { 255 }, }; struct gunviscmd gunviscmds_rocketlauncher[] = { gunviscmd_sethidden(MODELPART_ROCKETLAUNCHER_ROCKET) gunviscmd_end }; struct guncmd invanim_rocketlauncher_reload[] = { gunscript_playanimation(ANIM_GUN_ROCKETLAUNCHER_RELOAD, 0, 10000) gunscript_setsoundspeed(16, 900) gunscript_playsound(16, SFX_04F9) gunscript_playsound(40, SFX_0053) gunscript_showpart(24, MODELPART_ROCKETLAUNCHER_ROCKET) gunscript_waittime(76, 1) gunscript_hidepart(76, MODELPART_ROCKETLAUNCHER_ROCKET) gunscript_playsound(77, SFX_05D1) gunscript_setsoundspeed(106, 1000) gunscript_playsound(106, SFX_04F9) gunscript_playsound(123, SFX_0053) gunscript_playsound(135, SFX_04FA) gunscript_end }; struct guncmd invanim_rockerlauncher_shoot[] = { gunscript_playanimation(ANIM_GUN_ROCKETLAUNCHER_SHOOT, 0, 10000) gunscript_end }; struct invaimsettings invaimsettings_rocketlauncher = { 0, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_ROCKETLAUNCHER, 0, INVAIMFLAG_AUTOAIM, }; struct weaponfunc_shootprojectile invfunc_rockerlauncher_shoot = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_091, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_rockerlauncher_shoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED, NULL, 0, 1, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_LAUNCH_ROCKET_8053, 1, MODEL_CHRDYROCKETMIS, // projectilemodelnum 0, // unused 2.1, // scale 60, // speed 0, // unk50 0, // traveldist -1, // timer60 0.05, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct weaponfunc_shootprojectile invfunc_rocketlauncher_homing = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_092, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_rockerlauncher_shoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED | FUNCFLAG_HOMINGROCKET, NULL, 0, 1, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_LAUNCH_ROCKET_8053, 1, MODEL_CHRDYROCKETMIS, // projectilemodelnum 0, // unused 2.1, // scale 0, // speed 0, // unk50 5, // traveldist -1, // timer60 0.05, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct inventory_ammo invammo_rocketlauncher = { AMMOTYPE_ROCKET, CASING_NONE, 1, // clip size invanim_rocketlauncher_reload, // reload animation 0, // flags }; struct weapon invitem_rocketlauncher = { FILE_GDYROCKET, // hi model FILE_GROCKETLOD, // lo model invanim_rockerlauncher_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_rockerlauncher_shoot, &invfunc_rocketlauncher_homing }, // functions &invammo_rocketlauncher, // pri ammo NULL, // sec ammo &invaimsettings_rocketlauncher, 1, // muzzlez 24.5, // posx -25.2, // posy -30, // posz 1, // sway gunviscmds_rocketlauncher, // gunviscmds invpartvisibility_rocketlauncher, // part visibility L_GUN_080, // short name L_GUN_027, // name L_GUN_149, // manufacturer L_GUN_175, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_AIMTRACK, }; struct guncmd invanim_slayer_shoot[] = { gunscript_playanimation(ANIM_GUN_SLAYER_SHOOT, 0, 10000) gunscript_end }; struct guncmd invanim_slayer_reload[] = { gunscript_playanimation(ANIM_GUN_SLAYER_RELOAD, 0, 10000) gunscript_setsoundspeed(52, 800) gunscript_playsound(52, SFX_0053) gunscript_playsound(79, SFX_EYESPYHIT) gunscript_setsoundspeed(126, 900) gunscript_playsound(126, SFX_RELOAD_04FB) gunscript_end }; struct weaponfunc_shootprojectile invfunc_slayer_shoot = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_091, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_slayer_shoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED, NULL, 0, 1, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_8067, 1, MODEL_CHRSKROCKETMIS, // projectilemodelnum 0, // unused 4.1, // scale 10, // speed 0, // unk50 0, // traveldist -1, // timer60 0.05, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct weaponfunc_shootprojectile invfunc_slayer_flybywire = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_093, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, NULL, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_FLYBYWIRE | FUNCFLAG_PROJECTILE_POWERED | FUNCFLAG_20000000, NULL, 0, 1, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_8067, 1, MODEL_CHRSKROCKETMIS, // projectilemodelnum 0, // unused 4.1, // scale 10, // speed 0, // unk50 0, // traveldist -1, // timer60 0.05, // reflectangle SFX_SLAYER_WHIR, // soundnum }; struct inventory_ammo invammo_slayer = { AMMOTYPE_ROCKET, CASING_NONE, 1, // clip size invanim_slayer_reload, // reload animation 0, // flags }; struct weapon invitem_slayer = { FILE_GSKROCKET, // hi model FILE_GSKROCKETLOD, // lo model invanim_slayer_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_slayer_shoot, &invfunc_slayer_flybywire }, // functions &invammo_slayer, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 22.5, // posx -32, // posy -40.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_029, // short name L_GUN_029, // name L_GUN_152, // manufacturer L_GUN_177, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_02000000, }; struct gunviscmd gunviscmds_devastator[] = { gunviscmd_sethidden(MODELPART_DEVASTATOR_MAGAZINE1) gunviscmd_end }; struct guncmd invanim_devastator_shoot[] = { gunscript_playanimation(ANIM_GUN_DEVASTATOR_SHOOT, 0, 10000) gunscript_end }; struct guncmd invanim_devastator_reload[] = { gunscript_playanimation(ANIM_GUN_DEVASTATOR_RELOAD, 0, 10000) gunscript_setsoundspeed(15, 600) gunscript_playsound(15, SFX_0053) gunscript_hidepart(22, MODELPART_DEVASTATOR_MAGAZINE2) gunscript_showpart(36, MODELPART_DEVASTATOR_MAGAZINE1) gunscript_setsoundspeed(47, 700) gunscript_playsound(47, SFX_05C5) gunscript_hidepart(47, MODELPART_DEVASTATOR_MAGAZINE1) gunscript_showpart(47, MODELPART_DEVASTATOR_MAGAZINE2) gunscript_waittime(47, 1) gunscript_playsound(66, SFX_05CC) gunscript_end }; struct weaponfunc_shootprojectile invfunc_devastator_shoot = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_098, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_devastator_shoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_10000000 | FUNCFLAG_20000000, NULL, 0, 1, // damage 6, // spread 5, 58, -1, 0, 5, 8, 0, 4, 4, SFX_8073, 1, MODEL_CHRDEVGRENADE, // projectilemodelnum 0, // unused 1, // scale 0, // speed 0.08, // unk50 40, // traveldist 1200, // timer60 0.3, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct weaponfunc_shootprojectile invfunc_devastator_wallhugger = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_099, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_devastator_shoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_STICKTOWALL | FUNCFLAG_10000000 | FUNCFLAG_20000000, NULL, 0, 1, // damage 6, // spread 5, 58, -1, 0, 5, 8, 0, 4, 4, SFX_8073, 1, MODEL_CHRDEVGRENADE, // projectilemodelnum 0, // unused 1, // scale 0, // speed 0.08, // unk50 40, // traveldist 360, // timer60 0.3, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct inventory_ammo invammo_devastator = { AMMOTYPE_DEVASTATOR, CASING_NONE, 8, // clip size invanim_devastator_reload, // reload animation AMMOFLAG_QTYAFFECTSPARTVIS, // flags }; struct modelpartvisibility invpartvisibility_devastator[] = { { MODELPART_DEVASTATOR_MAGAZINE1, false }, { 255 }, }; struct weapon invitem_devastator = { FILE_GDYDEVASTATOR, // hi model FILE_GDEVASTATORLOD, // lo model invanim_devastator_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_devastator_shoot, &invfunc_devastator_wallhugger }, // functions &invammo_devastator, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 19.5, // posx -25.5, // posy -29, // posz 1, // sway NULL, // gunviscmds invpartvisibility_devastator, // part visibility L_GUN_028, // short name L_GUN_028, // name L_GUN_149, // manufacturer L_GUN_176, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; struct weaponfunc invfunc_mine_threatdetector = { INVENTORYFUNCTYPE_NONE, L_GUN_119, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_THREATDETECTOR, }; struct guncmd invanim_mine_equip[] = { gunscript_playanimation(ANIM_GUN_MINE_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_mine_unequip[] = { gunscript_playanimation(ANIM_GUN_MINE_UNEQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_mine_throw[] = { gunscript_playanimation(ANIM_GUN_MINE_THROW, 0, 10000) gunscript_waitforzreleased(10) gunscript_waittime(13, 2) gunscript_end }; struct weaponfunc_throw invfunc_timedmine_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_120, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_mine_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRTIMEDMINE, // projectilemodelnum 240, // activatetime60 0, // recoverytime60 0, // damage }; struct inventory_ammo invammo_timedmine = { AMMOTYPE_TIMED_MINE, CASING_NONE, 1, // clip size invanim_mine_equip, // reload animation AMMOFLAG_EQUIPPEDISRESERVE, // flags }; struct weapon invitem_timedmine = { FILE_GTIMEDMINE, // hi model FILE_GTIMEDMINE, // lo model invanim_mine_equip, // equip animation invanim_mine_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_timedmine_throw, &invfunc_mine_threatdetector }, // functions &invammo_timedmine, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 8, // posx -15, // posy -23, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_255, // short name #else L_GUN_038, // short name #endif L_GUN_038, // name L_GUN_000, // manufacturer L_GUN_185, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, }; struct gunviscmd gunviscmds_remotemine[] = { gunviscmd_checkinlefthand(GUNVISOP_SETVISIBILITY, MODELPART_HAND_LEFT) gunviscmd_checkinlefthand(GUNVISOP_SETVISIBILITY, MODELPART_REMOTEMINE_DETONATOR) gunviscmd_checkinrighthand(GUNVISOP_SETVISIBILITY, MODELPART_HAND_RIGHT) gunviscmd_checkinrighthand(GUNVISOP_SETVISIBILITY, MODELPART_REMOTEMINE_MINE) gunviscmd_end }; struct guncmd invanim_remotemine_equip[] = { gunscript_playanimation(ANIM_GUN_REMOTEMINE_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_remotemine_unequip[] = { gunscript_playanimation(ANIM_GUN_REMOTEMINE_UNEQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_remotemine_throw[] = { gunscript_playanimation(ANIM_GUN_REMOTEMINE_THROW, 0, 10000) gunscript_waitforzreleased(10) gunscript_waittime(11, 2) gunscript_end }; struct weaponfunc_throw invfunc_remotemine_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_122, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_remotemine_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRREMOTEMINE, // projectilemodelnum 240, // activatetime60 0, // recoverytime60 0, // damage }; struct weaponfunc_special invfunc_remotemine_detonate = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_123, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_AUTOSWITCHUNSELECTABLE, HANDATTACKTYPE_DETONATE, 30, // recoverytime60 0, // soundnum (unused) }; struct inventory_ammo invammo_remotemine = { AMMOTYPE_REMOTE_MINE, CASING_NONE, 1, // clip size invanim_remotemine_equip, // reload animation AMMOFLAG_EQUIPPEDISRESERVE, // flags }; struct modelpartvisibility invpartvisibility_remotemine[] = { { MODELPART_REMOTEMINE_DETONATOR, false }, { 255 }, }; struct weapon invitem_remotemine = { FILE_GREMOTEMINE, // hi model FILE_GREMOTEMINE, // lo model invanim_remotemine_equip, // equip animation invanim_remotemine_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_remotemine_throw, &invfunc_remotemine_detonate }, // functions &invammo_remotemine, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 4, // posx -15, // posy -23, // posz 1, // sway gunviscmds_remotemine, invpartvisibility_remotemine, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_252, // short name #else L_GUN_040, // short name #endif L_GUN_040, // name L_GUN_000, // manufacturer L_GUN_187, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, }; struct weaponfunc_throw invfunc_proxymine_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_121, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_mine_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRPROXIMITYMINE, // projectilemodelnum 240, // activatetime60 0, // recoverytime60 0, // damage }; struct inventory_ammo invammo_proximitymine = { AMMOTYPE_PROXY_MINE, CASING_NONE, 1, // clip size invanim_mine_equip, // reload animation AMMOFLAG_EQUIPPEDISRESERVE, // flags }; struct weapon invitem_proximitymine = { FILE_GPROXIMITYMINE, // hi model FILE_GPROXIMITYMINE, // lo model invanim_mine_equip, // equip animation invanim_mine_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_proxymine_throw, &invfunc_mine_threatdetector }, // functions &invammo_proximitymine, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 8, // posx -15, // posy -23, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_081, // short name L_GUN_039, // name L_GUN_000, // manufacturer L_GUN_186, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, }; struct guncmd invanim_ecmmine_equip[] = { gunscript_playanimation(ANIM_GUN_ECMMINE_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_ecmmine_unequip[] = { gunscript_playanimation(ANIM_GUN_ECMMINE_UNEQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_ecmmine_throw[] = { gunscript_playanimation(ANIM_GUN_ECMMINE_UNEQUIP, 0, 10000) gunscript_waittime(23, 2) gunscript_end }; struct weaponfunc_throw invfunc_ecmmine_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_140, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_ecmmine_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRECMMINE, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct inventory_ammo invammo_ecmmine = { AMMOTYPE_ECM_MINE, CASING_NONE, 1, // clip size invanim_ecmmine_equip, // reload animation AMMOFLAG_EQUIPPEDISRESERVE, // flags }; struct weapon invitem_ecmmine = { FILE_GECMMINE, // hi model FILE_GECMMINE, // lo model invanim_ecmmine_equip, // equip animation invanim_ecmmine_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_ecmmine_throw, NULL }, // functions &invammo_ecmmine, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 14, // posx -25, // posy -31.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_JPN_FINAL L_GUN_256, // short name #else L_GUN_041, // short name #endif L_GUN_041, // name L_GUN_000, // manufacturer L_GUN_188, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN | WEAPONFLAG_UNDROPPABLE, }; // Some unfinished Reaper-like gun. The name is "Timed Mine". The primary // function is detonate (and it works). It can't shoot. struct weapon invitem_unused_8007dd88 = { FILE_GSKMINIGUN, // hi model FILE_GSKMINIGUNLOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_remotemine_detonate, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_038, // short name L_GUN_038, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_00000040 | WEAPONFLAG_UNDROPPABLE, }; struct gunviscmd gunviscmds_grenade[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_grenade_throw[] = { gunscript_playanimation(ANIM_GUN_GRENADE_THROW, 0, 10000) gunscript_popoutsackofpills(6) gunscript_playsound(6, SFX_05C1) gunscript_waitforzreleased(43) gunscript_waittime(49, 2) gunscript_end }; struct guncmd invanim_grenade_equip[] = { gunscript_playanimation(ANIM_GUN_GRENADE_EQUIP, 0, 10000) gunscript_end }; struct weaponfunc_throw invfunc_grenade_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_124, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_grenade_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH, MODEL_CHRGRENADE, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct weaponfunc_throw invfunc_grenade_pinball = { INVENTORYFUNCTYPE_THROW, L_GUN_125, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_grenade_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH, MODEL_CHRGRENADE, // projectilemodelnum 90, // activatetime60 60, // recoverytime60 0, // damage }; struct inventory_ammo invammo_grenade = { AMMOTYPE_GRENADE, CASING_NONE, 1, // clip size invanim_grenade_equip, // reload animation AMMOFLAG_EQUIPPEDISRESERVE | AMMOFLAG_QTYAFFECTSPARTVIS, // flags }; struct weapon invitem_grenade = { FILE_GGRENADE, // hi model FILE_GGRENADELOD, // lo model invanim_grenade_equip, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_grenade_throw, &invfunc_grenade_pinball }, // functions &invammo_grenade, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 17, // posx -19.7, // posy -21, // posz 1, // sway gunviscmds_grenade, // gunviscmds NULL, // part visibility L_GUN_036, // short name L_GUN_036, // name L_GUN_000, // manufacturer L_GUN_183, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct weaponfunc_throw invfunc_nbomb_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_134, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_grenade_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_MAKEDIZZY | FUNCFLAG_DISARM | FUNCFLAG_NOMUZZLEFLASH, MODEL_CHRNBOMB, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct weaponfunc_throw invfunc_nbomb_proxy = { INVENTORYFUNCTYPE_THROW, L_GUN_127, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_grenade_throw, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_MAKEDIZZY | FUNCFLAG_DISARM | FUNCFLAG_NOMUZZLEFLASH, MODEL_CHRNBOMB, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct inventory_ammo invammo_nbomb = { AMMOTYPE_NBOMB, CASING_NONE, 1, // clip size invanim_grenade_equip, // reload animation AMMOFLAG_EQUIPPEDISRESERVE | AMMOFLAG_QTYAFFECTSPARTVIS, // flags }; struct weapon invitem_nbomb = { FILE_GNBOMB, // hi model FILE_GNBOMBLOD, // lo model invanim_grenade_equip, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_nbomb_throw, &invfunc_nbomb_proxy }, // functions &invammo_nbomb, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 17, // posx -19.7, // posy -21, // posz 1, // sway gunviscmds_grenade, // gunviscmds NULL, // part visibility L_GUN_037, // short name L_GUN_037, // name L_GUN_000, // manufacturer L_GUN_184, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN, }; struct gunviscmd gunviscmds_farsight[] = { gunviscmd_sethidden(0x0028) gunviscmd_end }; struct guncmd invanim_farsight_reload[] = { gunscript_playanimation(ANIM_GUN_FARSIGHT_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_FARSIGHT_ORB) gunscript_playsound(72, SFX_RELOAD_FARSIGHT) gunscript_waittime(76, 1) gunscript_hidepart(82, MODELPART_FARSIGHT_ORB) gunscript_end }; struct guncmd invanim_farsight_shoot[] = { gunscript_playanimation(ANIM_GUN_FARSIGHT_SHOOT, 0, 10000) gunscript_end }; struct invaimsettings invaimsettings_farsight = { 0, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_DEFAULT, 6, INVAIMFLAG_MANUALZOOM | INVAIMFLAG_ACCURATESINGLESHOT, }; struct weaponfunc_shootsingle invfunc_farsight_shoot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_090, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, invanim_farsight_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 100, // damage 0, // spread 70, 40, 0, 0, 0, // recoildist 0, // recoilangle 0, // slidemax 0, // impactforce 4, // duration60 SFX_813E, // shootsound 5, // penetration }; struct weaponfunc_shootsingle invfunc_farsight_targetlocator = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_111, // name 0, // unused 0, // ammoindex &invnoisesettings_louder, invanim_farsight_shoot, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 100, // damage 0, // spread 70, 40, 0, 0, 0, // recoildist 0, // recoilangle 0, // slidemax 0, // impactforce 4, // duration60 SFX_813E, // shootsound 5, // penetration }; struct inventory_ammo invammo_farsight = { AMMOTYPE_FARSIGHT, CASING_NONE, 8, // clip size invanim_farsight_reload, // reload animation 0, // flags }; struct modelpartvisibility invpartvisibility_farsight[] = { { MODELPART_FARSIGHT_ORB, false }, { 255 }, }; struct weapon invitem_farsight = { FILE_GZ2020, // hi model FILE_GZ2020LOD, // lo model invanim_farsight_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_farsight_shoot, &invfunc_farsight_targetlocator }, // functions &invammo_farsight, // pri ammo NULL, // sec ammo &invaimsettings_farsight, 6, // muzzlez 21.5, // posx -25.2, // posy -32.5, // posz 1, // sway gunviscmds_farsight, // gunviscmds invpartvisibility_farsight, // part visibility L_GUN_079, // short name L_GUN_031, // name L_GUN_000, // manufacturer L_GUN_178, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; struct gunviscmd gunviscmds_crossbow[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_sethidden(0x0029) gunviscmd_end }; struct guncmd invanim_crossbow_reload[] = { gunscript_playanimation(ANIM_GUN_CROSSBOW_RELOAD, 0, 10000) gunscript_hidepart(1, MODELPART_CROSSBOW_0028) gunscript_showpart(1, MODELPART_CROSSBOW_BOLT) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_hidepart(19, MODELPART_CROSSBOW_0028) gunscript_showpart(19, MODELPART_CROSSBOW_BOLT) gunscript_playsound(45, SFX_04FC) gunscript_waittime(50, 1) gunscript_hidepart(50, MODELPART_CROSSBOW_BOLT) gunscript_showpart(50, MODELPART_CROSSBOW_0028) gunscript_repeatuntilfull(0x0044, 0x0000, 0x0013) gunscript_end }; struct guncmd invanim_crossbow_shoot[] = { gunscript_playanimation(ANIM_GUN_CROSSBOW_SHOOT, 0, 10000) gunscript_hidepart(20, MODELPART_CROSSBOW_0028) gunscript_playsound(37, SFX_04F8) gunscript_end }; struct guncmd invanim_crossbow_unequip[] = { gunscript_playanimation(ANIM_GUN_CROSSBOW_UNEQUIP, 0, 10000) gunscript_hidepart(1, MODELPART_CROSSBOW_0028) gunscript_playsound(37, SFX_04F8) gunscript_end }; struct guncmd invanim_crosbow_equip[] = { gunscript_playanimation(ANIM_GUN_CROSSBOW_EQUIP, 0, 10000) gunscript_playsound(32, SFX_04FC) gunscript_playsound(75, SFX_04F8) gunscript_end }; struct weaponfunc_shootprojectile invfunc_crossbow_lethal = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_112, // name 0, // unused 0, // ammoindex &invnoisesettings_silenced, invanim_crossbow_shoot, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, NULL, 0, 100, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_8056, 1, MODEL_CHRCROSSBOLT, // projectilemodelnum 0, // unused 2.1, // scale 0, // speed 0, // unk50 60, // traveldist -1, // timer60 0.05, // reflectangle -1, // soundnum }; struct weaponfunc_shootprojectile invfunc_crossbow_shoot = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_107, // name 0, // unused 0, // ammoindex &invnoisesettings_silenced, invanim_crossbow_shoot, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, NULL, 0, 1, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_8056, 1, MODEL_CHRCROSSBOLT, // projectilemodelnum 0, // unused 2.1, // scale 0, // speed 0, // unk50 60, // traveldist -1, // timer60 0.05, // reflectangle -1, // soundnum }; struct inventory_ammo invammo_crossbow = { AMMOTYPE_CROSSBOW, CASING_NONE, 5, // clip size invanim_crossbow_reload, // reload animation AMMOFLAG_INCREMENTALRELOAD, // flags }; struct modelpartvisibility invpartvisibility_crossbow[] = { { MODELPART_CROSSBOW_0028, false }, { MODELPART_CROSSBOW_BOLT, false }, { MODELPART_CROSSBOW_HANDLE, false }, { 255 }, }; struct weapon invitem_crossbow = { FILE_GCROSSBOW, // hi model FILE_GCROSSBOWLOD, // lo model invanim_crosbow_equip, // equip animation invanim_crossbow_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_crossbow_shoot, &invfunc_crossbow_lethal }, // functions &invammo_crossbow, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 11, // posx -15, // posy -21, // posz 1, // sway gunviscmds_crossbow, // gunviscmds invpartvisibility_crossbow, // part visibility L_GUN_033, // short name L_GUN_033, // name L_GUN_000, // manufacturer L_GUN_180, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS, }; struct gunviscmd gunviscmds_tranquilizer[] = { gunviscmd_sethidden(0x0028) gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_tranquilizer_lethalinject[] = { gunscript_playanimation(ANIM_GUN_TRANQUILIZER_INJECT, 0, 10000) gunscript_waittime(18, 2) gunscript_end }; struct guncmd invanim_tranquilizer_shoot[] = { gunscript_playanimation(ANIM_GUN_TRANQUILIZER_SHOOT, 0, 10000) gunscript_waittime(7, 5) gunscript_end }; struct guncmd invanim_tranquilizer_reload[] = { gunscript_playanimation(ANIM_GUN_TRANQUILIZER_RELOAD, 0, 10000) gunscript_showpart(1, MODELPART_HAND_LEFT) gunscript_showpart(1, MODELPART_TRANQUILIZER_MAGAZINE1) gunscript_showpart(1, MODELPART_TRANQUILIZER_MAGAZINE3) gunscript_hidepart(1, MODELPART_TRANQUILIZER_MAGAZINE2) gunscript_popoutsackofpills(1) gunscript_setsoundspeed(3, 3500) gunscript_playsound(3, SFX_DOOR_8016) gunscript_waittime(39, 1) gunscript_hidepart(39, MODELPART_TRANQUILIZER_MAGAZINE3) gunscript_showpart(39, MODELPART_TRANQUILIZER_MAGAZINE2) gunscript_setsoundspeed(39, 3500) gunscript_playsound(39, SFX_HIT_MUD_8083) gunscript_setsoundspeed(63, 2070) gunscript_playsound(63, SFX_04F5) gunscript_setsoundspeed(72, 3000) gunscript_playsound(72, SFX_PRESS_SWITCH) gunscript_end }; struct weaponfunc_shootsingle invfunc_tranquilizer_shoot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_107, // name 0, // unused 0, // ammoindex &invnoisesettings_silenced, invanim_tranquilizer_shoot, // fire animation FUNCFLAG_MAKEDIZZY, &invrecoilsettings_default, 16, // recoverytime60 0.25, // damage 3, // spread 3, 5, 5, 0, 1, // recoildist 0, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_DRUGSPY_FIREDART, // shootsound 1, // penetration }; struct weaponfunc_melee invfunc_tranquilizer_lethal = { INVENTORYFUNCTYPE_MELEE, L_GUN_108, // name 0, // unused 0, // ammoindex &invnoisesettings_silenced, invanim_tranquilizer_lethalinject, // fire animation FUNCFLAG_NOMUZZLEFLASH, 100, // damage 60, // range 105, // unused 105, // unused 105, // unused 10, // unused -16.2, // unused 10, // unused -16.2, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct inventory_ammo invammo_tranquilizer = { AMMOTYPE_SEDATIVE, CASING_NONE, 8, // clip size invanim_tranquilizer_reload, // reload animation 0, // flags }; struct modelpartvisibility invpartvisibility_tranquilizer[] = { { MODELPART_TRANQUILIZER_MAGAZINE1, false }, { MODELPART_TRANQUILIZER_MAGAZINE2, false }, { MODELPART_TRANQUILIZER_MAGAZINE3, false }, { 255 }, }; struct weapon invitem_tranquilizer = { FILE_GDRUGGUN, // hi model FILE_GDRUGGUNLOD, // lo model invanim_tranquilizer_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_tranquilizer_shoot, &invfunc_tranquilizer_lethal }, // functions &invammo_tranquilizer, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 10, // posx -15.2, // posy -24, // posz 1, // sway gunviscmds_tranquilizer, // gunviscmds invpartvisibility_tranquilizer, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_247, // short name #else L_GUN_034, // short name #endif L_GUN_034, // name L_GUN_000, // manufacturer L_GUN_181, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct inventory_ammo invammo_psychosisgun = { AMMOTYPE_PSYCHOSIS, CASING_NONE, 8, // clip size invanim_tranquilizer_reload, // reload animation 0, // flags }; struct weaponfunc_shootsingle invfunc_psychosisgun_shoot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_131, // name 0, // unused 0, // ammoindex &invnoisesettings_silenced, invanim_tranquilizer_shoot, // fire animation FUNCFLAG_MAKEDIZZY | FUNCFLAG_PSYCHOSIS, &invrecoilsettings_default, 16, // recoverytime60 0.5, // damage 3, // spread 3, 5, 5, 0, 1, // recoildist 0, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_DRUGSPY_FIREDART, // shootsound 1, // penetration }; struct weapon invitem_psychosisgun = { FILE_GDRUGGUN, // hi model FILE_GDRUGGUNLOD, // lo model invanim_tranquilizer_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_psychosisgun_shoot, NULL }, // functions &invammo_psychosisgun, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 10, // posx -16.2, // posy -28.5, // posz 1, // sway gunviscmds_tranquilizer, // gunviscmds invpartvisibility_tranquilizer, // part visibility L_GUN_082, // short name L_GUN_049, // name L_GUN_000, // manufacturer L_GUN_210, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS, }; struct gunviscmd gunviscmds_sniperrifle[] = { gunviscmd_sethidden(0x0029) gunviscmd_end }; struct guncmd invanim_sniperrifle_equip[] = { gunscript_playanimation(ANIM_GUN_SNIPER_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_sniperrifle_reload[] = { gunscript_playanimation(ANIM_GUN_SNIPER_RELOAD, 0, 10000) gunscript_setsoundspeed(22, 850) gunscript_playsound(22, SFX_01D8) gunscript_showpart(42, MODELPART_SNIPERRIFLE_MAGAZINE2) gunscript_hidepart(42, MODELPART_SNIPERRIFLE_MAGAZINE1) gunscript_setsoundspeed(72, 850) #if VERSION >= VERSION_NTSC_1_0 gunscript_playsound(72, SFX_80F6) #else gunscript_playsound(72, SFX_01D9) #endif gunscript_hidepart(72, MODELPART_SNIPERRIFLE_MAGAZINE2) gunscript_showpart(72, MODELPART_SNIPERRIFLE_MAGAZINE1) gunscript_waittime(72, 1) gunscript_end }; struct invaimsettings invaimsettings_sniperrifle = { 0, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_DEFAULT, 5, INVAIMFLAG_MANUALZOOM | INVAIMFLAG_ACCURATESINGLESHOT, }; struct weaponfunc_shootsingle invfunc_sniperrifle_singleshot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_sniper, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, &invrecoilsettings_default, 16, // recoverytime60 1.2, // damage 0, // spread 6, 10, 0, 0, 8, // recoildist 0, // recoilangle 0, // slidemax 0, // impactforce 4, // duration60 SFX_8058, // shootsound 1, // penetration }; struct weaponfunc_special invfunc_sniperrifle_crouch = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_130, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_AUTOSWITCHUNSELECTABLE, HANDATTACKTYPE_CROUCH, 30, // recoverytime60 0, // soundnum (unused) }; struct inventory_ammo invammo_sniperrifle = { AMMOTYPE_RIFLE, CASING_RIFLE, 8, // clip size invanim_sniperrifle_reload, // reload animation 0, // flags }; struct modelpartvisibility invpartvisibility_sniperrifle[] = { { MODELPART_SNIPERRIFLE_MAGAZINE2, false }, { 255 }, }; struct weapon invitem_sniperrifle = { FILE_GSNIPERRIFLE, // hi model FILE_GSNIPERLOD, // lo model invanim_sniperrifle_equip, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_sniperrifle_singleshot, &invfunc_sniperrifle_crouch }, // functions &invammo_sniperrifle, // pri ammo NULL, // sec ammo &invaimsettings_sniperrifle, 6, // muzzlez 21, // posx -27.2, // posy -31.5, // posz 1, // sway gunviscmds_sniperrifle, // gunviscmds invpartvisibility_sniperrifle, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_254, // short name #else L_GUN_032, // short name #endif L_GUN_032, // name L_GUN_000, // manufacturer L_GUN_179, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS, }; struct guncmd invanim_laser_equip[] = { gunscript_playanimation(ANIM_GUN_LASER_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_laser_unequip[] = { gunscript_playanimation(ANIM_GUN_LASER_UNEQUIP, 0, 10000) gunscript_end }; struct weaponfunc_shootsingle invfunc_laser_pulse = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_132, // name 0, // unused -1, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 0, // spread 6, 18, 24, -1, 0, // recoildist 0, // recoilangle 0, // slidemax 0, // impactforce 3, // duration60 SFX_8043, // shootsound 1, // penetration }; struct weaponfunc_shootauto invfunc_laser_stream = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_133, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation 0, // flags &invrecoilsettings_laserstream, 0, // recoverytime60 0.1, // damage 0, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 3, // duration60 0, // shootsound 1, // penetration 3600, // initialrpm 3600, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct weapon invitem_laser = { FILE_GLASER, // hi model FILE_GLASERLOD, // lo model invanim_laser_equip, // equip animation invanim_laser_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_laser_pulse, &invfunc_laser_stream }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 3, // muzzlez -12, // posx -12.7, // posy -21.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_047, // short name L_GUN_047, // name L_GUN_150, // manufacturer L_GUN_189, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_DONTCOUNTSHOTS | WEAPONFLAG_04000000, }; struct modelpartvisibility invpartvisibility_classic[] = { { MODELPART_GUN_MUZZLEFLASH1, false }, { 255 }, }; struct gunviscmd gunviscmds_classicpistol[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_pp9i_shoot[] = { gunscript_playanimation(ANIM_GUN_PP9I_SHOOT, 0, 10000) gunscript_waittime(10, 5) gunscript_end }; struct weaponfunc_shootsingle invfunc_pp9i_shoot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_pp9i_shoot, // fire animation 0, // flags &invrecoilsettings_default, 16, // recoverytime60 1, // damage 1, // spread 4, 8, 3, 0, 3, // recoildist 10, // recoilangle 29.999998092651, // slidemax 0, // impactforce 0, // duration60 SFX_8069, // shootsound 1, // penetration }; struct inventory_ammo invammo_pp9i = { AMMOTYPE_PISTOL, CASING_STANDARD, 7, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_pp9i = { FILE_GWPPK, // hi model FILE_GWPPK, // lo model invanim_pp9i_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_pp9i_shoot, NULL }, // functions &invammo_pp9i, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 10, // posx -14.8, // posy -19, // posz 1, // sway gunviscmds_classicpistol, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_050, // short name L_GUN_050, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_GANGSTA, }; struct guncmd invanim_cc13_shoot[] = { gunscript_playanimation(ANIM_GUN_CC13_SHOOT, 0, 10000) gunscript_waittime(10, 5) gunscript_end }; struct weaponfunc_shootsingle invfunc_cc13_shoot = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_085, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_cc13_shoot, // fire animation 0, // flags &invrecoilsettings_default, 16, // recoverytime60 1, // damage 6, // spread 4, 8, 3, 0, 5, // recoildist 10, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_806A, // shootsound 1, // penetration }; struct inventory_ammo invammo_cc13 = { AMMOTYPE_PISTOL, CASING_STANDARD, 8, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_cc13 = { FILE_GTT33, // hi model FILE_GTT33, // lo model invanim_cc13_shoot, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_cc13_shoot, NULL }, // functions &invammo_cc13, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 10, // posx -17, // posy -26.5, // posz 1, // sway gunviscmds_classicpistol, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_051, // short name L_GUN_051, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_GANGSTA, }; struct weaponfunc_shootauto invfunc_kl01313_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 0.6, // damage 15, // spread 0, 0, 0, 6, 0, // recoildist 0, // recoilangle 0, // slidemax 0, // impactforce 11, // duration60 SFX_806B, // shootsound 1, // penetration 450, // initialrpm 450, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_kl01313 = { AMMOTYPE_SMG, CASING_STANDARD, 20, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_kl01313 = { FILE_GSKORPION, // hi model FILE_GSKORPION, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_kl01313_shoot, NULL }, // functions &invammo_kl01313, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 8.5, // posx -13, // posy -29.5, // posz 1, // sway NULL, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_052, // short name L_GUN_052, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00008000, }; struct weaponfunc_shootauto invfunc_kf7special_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_087, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 0, // recoverytime60 1, // damage 10, // spread 4, 12, 0, 6, 4.5, // recoildist 2, // recoilangle 0, // slidemax 3, // impactforce 4, // duration60 SFX_806C, // shootsound 1, // penetration 450, // initialrpm 450, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_kf7special = { AMMOTYPE_RIFLE, CASING_RIFLE, 30, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_kf7special = { FILE_GAK47, // hi model FILE_GAK47, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_kf7special_shoot, NULL }, // functions &invammo_kf7special, // pri ammo NULL, // sec ammo &invaimsettings_heavy, 2, // muzzlez 13, // posx -21, // posy -13.5, // posz 1, // sway NULL, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_053, // short name L_GUN_053, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00008000, }; struct weaponfunc_shootauto invfunc_zzt9mm_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 9, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 4, // duration60 SFX_806D, // shootsound 1, // penetration 600, // initialrpm 600, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_zzt9mm = { AMMOTYPE_SMG, CASING_STANDARD, 32, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_zzt9mm = { FILE_GUZI, // hi model FILE_GUZI, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_zzt9mm_shoot, NULL }, // functions &invammo_zzt9mm, // pri ammo NULL, // sec ammo &invaimsettings_smg, 0.5, // muzzlez 11, // posx -24.5, // posy -37, // posz 1, // sway NULL, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_054, // short name L_GUN_054, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00008000, }; struct weaponfunc_shootauto invfunc_dmc_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 7, // spread 6, 18, 0, 6, 4, // recoildist 3, // recoilangle 0, // slidemax 0, // impactforce 4, // duration60 SFX_806E, // shootsound 1, // penetration 450, // initialrpm 450, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_dmc = { AMMOTYPE_SMG, CASING_STANDARD, 30, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_dmc = { FILE_GMP5K, // hi model FILE_GMP5K, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_dmc_shoot, NULL }, // functions &invammo_dmc, // pri ammo NULL, // sec ammo &invaimsettings_smg, 1, // muzzlez 16.5, // posx -22.9, // posy -35, // posz 1, // sway NULL, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_055, // short name L_GUN_055, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00008000, }; struct weaponfunc_shootauto invfunc_ar53_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_087, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation FUNCFLAG_BURST3, &invrecoilsettings_default, 0, // recoverytime60 1.4, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 5, // duration60 SFX_806F, // shootsound 1, // penetration 550, // initialrpm 550, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_ar53 = { AMMOTYPE_RIFLE, CASING_RIFLE, 30, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_ar53 = { FILE_GM16, // hi model FILE_GM16, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_ar53_shoot, NULL }, // functions &invammo_ar53, // pri ammo NULL, // sec ammo &invaimsettings_heavy, 6, // muzzlez 11, // posx -19.2, // posy -21.5, // posz 1, // sway NULL, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_056, // short name L_GUN_056, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00008000 | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN, }; struct weaponfunc_shootauto invfunc_rcp45_shoot = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1.8, // damage 6, // spread 4, 8, 0, 3, 3.5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 2, // duration60 SFX_8070, // shootsound 1, // penetration 600, // initialrpm 600, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_rcp45 = { AMMOTYPE_SMG, CASING_STANDARD, 80, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_rcp45 = { FILE_GFNP90, // hi model FILE_GFNP90, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_rcp45_shoot, NULL }, // functions &invammo_rcp45, // pri ammo NULL, // sec ammo &invaimsettings_smg, 4, // muzzlez 11, // posx -22.3, // posy -29, // posz 1, // sway NULL, // gunviscmds invpartvisibility_classic, // part visibility L_GUN_057, // short name L_GUN_057, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00008000 | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN, }; struct weaponfunc invfunc_briefcase_use = { INVENTORYFUNCTYPE_NONE, L_GUN_000, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation 0, // flags }; struct gunviscmd gunviscmds_unused_8006edcc[] = { { 0, 0x001e, 0, 0x0002, 0x0001 }, gunviscmd_end }; struct weapon invitem_briefcase2 = { FILE_GFALCON2LOD, // hi model FILE_GFALCON2LOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_briefcase_use, &invfunc_briefcase_use }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_071, // short name L_GUN_071, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_00000800 | WEAPONFLAG_HIDEMENUMODEL | WEAPONFLAG_DONTCOUNTSHOTS | WEAPONFLAG_DETERMINER_S_THE | WEAPONFLAG_DETERMINER_F_THE, }; struct weaponfunc_shootauto invfunc_choppergun_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_8059, // shootsound 2, // penetration 900, // initialrpm 900, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_choppergun = { AMMOTYPE_SMG, CASING_RIFLE, 27, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_choppergun = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_choppergun_rapidfire, NULL }, // functions &invammo_choppergun, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 16.5, // posx -19.5, // posy -24, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_000, // short name L_GUN_000, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_DUALWIELD, }; struct weaponfunc_shootauto invfunc_watchlaser_rapidfire = { INVENTORYFUNCTYPE_SHOOT_AUTOMATIC, L_GUN_086, // name 0, // unused 0, // ammoindex &invnoisesettings_default, NULL, // fire animation 0, // flags &invrecoilsettings_default, 0, // recoverytime60 1, // damage 6, // spread 6, 18, 2, 8, 5, // recoildist 2, // recoilangle 0, // slidemax 4, // impactforce 4, // duration60 SFX_803F, // shootsound 1, // penetration 900, // initialrpm 900, // maxrpm NULL, // vibrationstart NULL, // vibrationmax 0, // turretaccel 0, // turretdecel }; struct inventory_ammo invammo_watchlaser = { AMMOTYPE_SMG, CASING_RIFLE, 27, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_watchlaser = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_watchlaser_rapidfire, NULL }, // functions &invammo_watchlaser, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 16.5, // posx -19.5, // posy -24, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_000, // short name L_GUN_000, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_DUALWIELD, }; struct gunviscmd gunviscmds_knife[] = { gunviscmd_sethidden(MODELPART_HAND_LEFT) gunviscmd_end }; struct guncmd invanim_combatknife_equip[] = { gunscript_playanimation(ANIM_GUN_KNIFE_EQUIP, 0, 10000) gunscript_waittime(24, 2) gunscript_end }; struct guncmd invanim_combatknife_slash2[] = { gunscript_playanimation(ANIM_GUN_KNIFE_SLASH, 0, 10000) gunscript_waittime(24, 2) gunscript_end }; struct guncmd invanim_combatknife_slash[] = { gunscript_random(50, invanim_combatknife_slash2) gunscript_include(0, invanim_combatknife_equip) gunscript_end }; struct guncmd invanim_combatknife_pritosec[] = { gunscript_playanimation(ANIM_GUN_KNIFE_CHANGEFUNC, 0, 10000) gunscript_playsound(30, SFX_80A7) gunscript_playsound(40, SFX_80A6) gunscript_end }; struct guncmd invanim_combatknife_sectopri[] = { gunscript_playanimation(ANIM_GUN_KNIFE_CHANGEFUNC, 65535, 55536) gunscript_playsound(10, SFX_80A8) gunscript_playsound(20, SFX_80A6) gunscript_end }; struct guncmd invanim_combatknife_throw[] = { gunscript_playanimation(ANIM_GUN_KNIFE_THROW, 0, 10000) gunscript_waitforzreleased(12) gunscript_waittime(16, 2) gunscript_end }; struct guncmd invanim_unused_8007f05c[] = { gunscript_playanimation(ANIM_041C, 0, 10000) gunscript_waittime(22, 1) gunscript_end }; struct guncmd invanim_combatknife_reload[] = { gunscript_include(2, invanim_combatknife_sectopri) gunscript_include(0, invanim_combatknife_pritosec) gunscript_end }; struct weaponfunc_melee invfunc_combatknife_slash = { INVENTORYFUNCTYPE_MELEE, L_GUN_109, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_combatknife_slash, // fire animation FUNCFLAG_NOMUZZLEFLASH, 2, // damage 70, // range 105, // unused 105, // unused 105, // unused 11, // unused -25.5, // unused 11, // unused -25.5, // unused -1, // unused -1, // unused 2, // unused 2, // unused 0, // unused }; struct weaponfunc_throw invfunc_combatknife_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_110, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, invanim_combatknife_throw, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRKNIFE, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 1, // damage }; struct inventory_ammo invammo_combatknife = { AMMOTYPE_KNIFE, CASING_NONE, 1, // clip size invanim_combatknife_reload, // reload animation AMMOFLAG_EQUIPPEDISRESERVE | AMMOFLAG_QTYAFFECTSPARTVIS, // flags }; struct weapon invitem_combatknife = { FILE_GKNIFE, // hi model FILE_GKNIFELOD, // lo model invanim_combatknife_equip, // equip animation NULL, // unequip animation invanim_combatknife_pritosec, // pritosec animation invanim_combatknife_sectopri, // sectopri animation { &invfunc_combatknife_slash, &invfunc_combatknife_throw }, // functions &invammo_combatknife, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 18.5, // posx -26.5, // posy -28, // posz 1, // sway gunviscmds_knife, // gunviscmds NULL, // part visibility L_GUN_083, // short name L_GUN_035, // name L_GUN_000, // manufacturer L_GUN_182, // description WEAPONFLAG_THROWABLE | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_TRACKTIMEUSED | WEAPONFLAG_00000400 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_00008000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_04000000, }; struct weaponfunc_throw invfunc_bug_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_000, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_CHRBUG, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct weaponfunc_throw invfunc_targetamplifier_throw = { INVENTORYFUNCTYPE_THROW, L_GUN_000, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_CALCULATETRAJECTORY, MODEL_TARGETAMP, // projectilemodelnum 240, // activatetime60 60, // recoverytime60 0, // damage }; struct inventory_ammo invammo_bug = { AMMOTYPE_BUG, CASING_NONE, 1, // clip size NULL, // reload animation AMMOFLAG_EQUIPPEDISRESERVE, // flags }; struct weapon invitem_commsrider = { FILE_PCHRBUG, // hi model FILE_PCHRBUG, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_bug_throw, NULL }, // functions &invammo_bug, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_222, // short name L_GUN_222, // name L_GUN_000, // manufacturer L_GUN_204, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_tracerbug = { FILE_PCHRBUG, // hi model FILE_PCHRBUG, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_bug_throw, NULL }, // functions &invammo_bug, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_223, // short name L_GUN_223, // name L_GUN_000, // manufacturer L_GUN_205, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_targetamplifier = { FILE_PTARGETAMP, // hi model FILE_PTARGETAMP, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_targetamplifier_throw, NULL }, // functions &invammo_bug, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_235, // short name L_GUN_224, // name L_GUN_000, // manufacturer L_GUN_206, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc_device invfunc_nightvision_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_135, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_NIGHTVISION, }; struct weapon invitem_nightvision = { FILE_PCHRNIGHTSIGHT, // hi model FILE_PCHRNIGHTSIGHT, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_nightvision_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_244, // short name #else L_GUN_059, // short name #endif L_GUN_059, // name L_GUN_000, // manufacturer L_GUN_191, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000080 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc invfunc_horizonscanner_primary = { INVENTORYFUNCTYPE_NONE, L_GUN_139, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation 0, // flags }; struct invaimsettings invaimsettings_horizonscanner = { 0, 3, 8, 15, 0.9721, 0.9767, SIGHTTRACKTYPE_NONE, 5, INVAIMFLAG_MANUALZOOM | INVAIMFLAG_ACCURATESINGLESHOT, }; struct weapon invitem_horizonscanner = { FILE_PBINOCULARS, // hi model FILE_PBINOCULARS, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_horizonscanner_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_horizonscanner, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_234, // short name L_GUN_076, // name L_GUN_000, // manufacturer L_GUN_196, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc_device invfunc_cloak_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_116, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_CLOAKDEVICE, }; struct inventory_ammo invammo_cloakingdevice = { AMMOTYPE_CLOAK, CASING_NONE, 10, // clip size NULL, // reload animation AMMOFLAG_NORESERVE, // flags }; struct weapon invitem_cloakingdevice = { FILE_PCHRCLOAKER, // hi model FILE_PCHRCLOAKER, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_cloak_primary, NULL }, // functions &invammo_cloakingdevice, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_073, // short name L_GUN_073, // name L_GUN_000, // manufacturer L_GUN_195, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_04000000, }; struct weaponfunc_special invfunc_combatboost_boost = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_113, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, HANDATTACKTYPE_BOOST, 30, // recoverytime60 SFX_JO_BOOST_ACTIVATE, // soundnum (unused) }; struct weaponfunc_special invfunc_combatboost_revert = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_114, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, HANDATTACKTYPE_REVERTBOOST, 30, // recoverytime60 SFX_JO_BOOST_ACTIVATE, // soundnum (unused) }; struct inventory_ammo invammo_combatboost = { AMMOTYPE_BOOST, CASING_NONE, 4, // clip size NULL, // reload animation AMMOFLAG_NORESERVE, // flags }; struct weapon invitem_combatboost = { FILE_PCHRSPEEDPILL, // hi model FILE_PCHRSPEEDPILL, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_combatboost_boost, &invfunc_combatboost_revert }, // functions &invammo_combatboost, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_232, // short name L_GUN_074, // name L_GUN_000, // manufacturer L_GUN_190, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_04000000 | WEAPONFLAG_DETERMINER_S_SOME | WEAPONFLAG_DETERMINER_F_SOME, }; struct weaponfunc_device invfunc_suicidepill_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_000, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_SUICIDEPILL, }; struct weapon invitem_suicidepill = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_suicidepill_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_246, // short name #else L_GUN_072, // short name #endif L_GUN_072, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc_device invfunc_irscanner_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_138, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_IRSCANNER, }; struct weapon invitem_irscanner = { FILE_GIRSCANNER, // hi model FILE_GIRSCANNER, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_irscanner_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_069, // short name L_GUN_069, // name L_GUN_000, // manufacturer L_GUN_194, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_DUALWIELD | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc invfunc_disguise_primary = { INVENTORYFUNCTYPE_NONE, L_GUN_143, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation 0, // flags }; struct weapon invitem_disguise40 = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_disguise_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_250, // short name #else L_GUN_043, // short name #endif L_GUN_043, // name L_GUN_000, // manufacturer L_GUN_211, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_UNDROPPABLE | WEAPONFLAG_FIRETOACTIVATE, }; struct weapon invitem_disguise41 = { 0, // hi model 0, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_disguise_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_250, // short name #else L_GUN_043, // short name #endif L_GUN_043, // name L_GUN_000, // manufacturer L_GUN_211, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_UNDROPPABLE | WEAPONFLAG_FIRETOACTIVATE, }; struct weaponfunc_device invfunc_camspy_deploy = { INVENTORYFUNCTYPE_DEVICE, L_GUN_136, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_EYESPY, }; struct weapon invitem_camspy = { FILE_CEYESPY, // hi model FILE_CEYESPY, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_camspy_deploy, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_060, // short name L_GUN_060, // name L_GUN_000, // manufacturer L_GUN_192, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALWIELD | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc_device invfunc_rtracker_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_142, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_RTRACKER, }; struct weapon invitem_rtracker = { FILE_PRUSSDAR, // hi model FILE_PRUSSDAR, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_rtracker_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_070, // short name L_GUN_070, // name L_GUN_000, // manufacturer L_GUN_198, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALWIELD | WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc_device invfunc_xray_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_137, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_XRAYSCANNER, }; struct weapon invitem_xrayscanner = { FILE_PXRAYSPECS, // hi model FILE_PXRAYSPECS, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_xray_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_233, // short name L_GUN_065, // name L_GUN_000, // manufacturer L_GUN_193, // description #if VERSION >= VERSION_NTSC_1_0 WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_DETERMINER_S_AN | WEAPONFLAG_DETERMINER_F_AN | WEAPONFLAG_UNDROPPABLE, #else // NTSC beta uses "a" in "Picked up a X-ray scanner" WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_00000040 | WEAPONFLAG_UNDROPPABLE, #endif }; struct guncmd invanim_datauplink_equip[] = { gunscript_playanimation(ANIM_GUN_UPLINK_EQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_datauplink_unequip[] = { gunscript_playanimation(ANIM_GUN_UPLINK_UNEQUIP, 0, 10000) gunscript_end }; struct guncmd invanim_unused_8007f794[] = { gunscript_playanimation(ANIM_043B, 0, 10000) gunscript_end }; struct weaponfunc_special invfunc_datauplink_primary = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_141, // name 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_AUTOSWITCHUNSELECTABLE, HANDATTACKTYPE_UPLINK, 30, // recoverytime60 0, // soundnum (unused) }; struct weapon invitem_datauplink = { FILE_GCOMMSUPLINK, // hi model FILE_GCOMMSUPLINK, // lo model invanim_datauplink_equip, // equip animation invanim_datauplink_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_datauplink_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 8, // posx -16.2, // posy -17.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_243, // short name #else L_GUN_075, // short name #endif L_GUN_075, // name L_GUN_000, // manufacturer L_GUN_197, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_00000040 | WEAPONFLAG_00002000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_UNDROPPABLE | WEAPONFLAG_FIRETOACTIVATE, }; struct weapon invitem_doordecoder = { FILE_PCHRDOORDECODER, // hi model FILE_PCHRDOORDECODER, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 35, // posx -26.7, // posy -41, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_245, // short name #else L_GUN_063, // short name #endif L_GUN_063, // name L_GUN_000, // manufacturer L_GUN_200, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_UNDROPPABLE | WEAPONFLAG_FIRETOACTIVATE, }; struct weapon invitem_rocket = { FILE_GCYCLONE, // hi model FILE_GCYCLONELOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function &invammo_default, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_044, // short name L_GUN_044, // name L_GUN_000, // manufacturer L_GUN_000, // description 0, // flags }; struct weapon invitem_homingrocket = { FILE_GCYCLONE, // hi model FILE_GCYCLONELOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function &invammo_default, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_045, // short name L_GUN_045, // name L_GUN_000, // manufacturer L_GUN_000, // description 0, // flags }; struct weapon invitem_grenaderound = { FILE_GCYCLONE, // hi model FILE_GCYCLONELOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_devastator_shoot, &invfunc_devastator_wallhugger }, // functions &invammo_default, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_046, // short name L_GUN_046, // name L_GUN_000, // manufacturer L_GUN_000, // description 0, // flags }; struct weapon invitem_bolt = { FILE_GCYCLONE, // hi model FILE_GCYCLONELOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_crossbow_shoot, &invfunc_crossbow_lethal }, // functions &invammo_default, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 12.5, // posx -17, // posy -27.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_048, // short name L_GUN_048, // name L_GUN_000, // manufacturer L_GUN_000, // description 0, // flags }; struct weaponfunc_special invfunc_unused_8006f9a4 = { INVENTORYFUNCTYPE_SPECIAL, L_GUN_144, // "Place Explosives" 0, // unused -1, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH | FUNCFLAG_AUTOSWITCHUNSELECTABLE, HANDATTACKTYPE_UPLINK, 30, // recoverytime60 0, // soundnum (unused) }; struct weapon invitem_skedarbomb = { FILE_PSKEDARBOMB, // hi model FILE_PSKEDARBOMB, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_JPN_FINAL L_GUN_259, // short name #else L_GUN_221, // short name #endif L_GUN_221, // name L_GUN_000, // manufacturer L_GUN_203, // description WEAPONFLAG_FIRETOACTIVATE, }; struct weapon invitem_explosives = { FILE_PEXPLOSIVEBRICK, // hi model FILE_PEXPLOSIVEBRICK, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_064, // short name L_GUN_064, // name L_GUN_000, // manufacturer L_GUN_202, // description WEAPONFLAG_FIRETOACTIVATE, }; struct weaponfunc_device invfunc_presidentscanner_primary = { INVENTORYFUNCTYPE_DEVICE, L_GUN_142, // name 0, // unused 0, // ammoindex &invnoisesettings_silent, NULL, // fire animation FUNCFLAG_NOMUZZLEFLASH, DEVICE_RTRACKER, }; struct weapon invitem_presidentscanner = { FILE_PRUSSDAR, // hi model FILE_PRUSSDAR, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_presidentscanner_primary, NULL }, // functions NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 0, // posx -39.5, // posy -55.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_231, // short name L_GUN_219, // name L_GUN_000, // manufacturer L_GUN_199, // description WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALWIELD | WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_autosurgeon = { FILE_PAUTOSURGEON, // hi model FILE_PAUTOSURGEON, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_248, // short name #else L_GUN_220, // short name #endif L_GUN_220, // name L_GUN_000, // manufacturer L_GUN_201, // description WEAPONFLAG_UNDROPPABLE | WEAPONFLAG_FIRETOACTIVATE, }; struct weapon invitem_flightplans = { FILE_PSAFEITEM, // hi model FILE_PSAFEITEM, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_225, // short name L_GUN_225, // name L_GUN_000, // manufacturer L_GUN_207, // description WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_researchtape = { FILE_PRESEARCHTAPE, // hi model FILE_PRESEARCHTAPE, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_226, // short name L_GUN_226, // name L_GUN_000, // manufacturer L_GUN_208, // description WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_backupdisk = { FILE_PZIGGYCARD, // hi model FILE_PZIGGYCARD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_PAL_FINAL L_GUN_249, // short name #else L_GUN_227, // short name #endif L_GUN_227, // name L_GUN_000, // manufacturer L_GUN_209, // description WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_briefcase = { FILE_PKEYCARD, // hi model FILE_PKEYCARD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_229, // short name L_GUN_229, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_HIDEMENUMODEL | WEAPONFLAG_UNDROPPABLE, }; struct weapon invitem_suitcase = { FILE_PCHRBRIEFCASE, // hi model FILE_PCHRBRIEFCASE, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility #if VERSION >= VERSION_JPN_FINAL L_GUN_258, // short name #else L_GUN_067, // short name #endif L_GUN_067, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_UNDROPPABLE | WEAPONFLAG_FIRETOACTIVATE, }; struct weapon invitem_necklace = { FILE_PCHRCHAIN, // hi model FILE_PCHRCHAIN, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_230, // short name L_GUN_230, // name L_GUN_000, // manufacturer L_GUN_238, // description WEAPONFLAG_UNDROPPABLE, }; #if VERSION >= VERSION_NTSC_1_0 struct weapon invitem_shieldtechitem = { FILE_PCHRSHIELD, // hi model FILE_PCHRSHIELD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_240, // short name L_GUN_240, // name L_GUN_000, // manufacturer L_GUN_241, // description WEAPONFLAG_UNDROPPABLE, }; #endif struct weapon invitem_keycard = { FILE_PKEYCARD, // hi model FILE_PKEYCARD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation NULL, // pri function NULL, // sec function NULL, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_228, // short name L_GUN_228, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_UNDROPPABLE, }; struct weaponfunc_shootprojectile invfunc_rocketlauncher34_primary = { INVENTORYFUNCTYPE_SHOOT_PROJECTILE, L_GUN_000, // name 0, // unused 0, // ammoindex &invnoisesettings_loudest, invanim_rockerlauncher_shoot, // fire animation FUNCFLAG_NOAUTOAIM | FUNCFLAG_PROJECTILE_POWERED, NULL, 0, 1, // damage 6, // spread 3, 12, 15, 0, 3, 2, 0, 4, 4, SFX_LAUNCH_ROCKET_8053, 1, MODEL_CHRDYROCKETMIS, // projectilemodelnum 0, // unused 2.1, // scale 20, // speed 0, // unk50 0, // traveldist -1, // timer60 0.05, // reflectangle SFX_LAUNCH_ROCKET_8053, // soundnum }; struct inventory_ammo invammo_rocketlauncher34 = { AMMOTYPE_ROCKET, CASING_NONE, 1, // clip size invanim_rocketlauncher_reload, // reload animation 0, // flags }; struct weapon invitem_rocketlauncher_34 = { FILE_GDYROCKET, // hi model FILE_GROCKETLOD, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_rocketlauncher34_primary, NULL }, // functions &invammo_rocketlauncher34, // pri ammo NULL, // sec ammo &invaimsettings_rocketlauncher, 1, // muzzlez 24.5, // posx -25.2, // posy -30, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_080, // short name L_GUN_027, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_00002000 | WEAPONFLAG_00004000 | WEAPONFLAG_HASHANDS | WEAPONFLAG_AIMTRACK, }; struct guncmd invanim_tester_shoot[] = { gunscript_playanimation(ANIM_GUN_TESTER_SHOOT, 0, 10000) gunscript_end }; struct weaponfunc_shootsingle invfunc_tester_primary = { INVENTORYFUNCTYPE_SHOOT_SINGLE, L_GUN_000, // name 0, // unused 0, // ammoindex &invnoisesettings_default, invanim_tester_shoot, // fire animation 0, // flags &invrecoilsettings_tester, 16, // recoverytime60 1, // damage 6, // spread 4, 8, 3, 0, 0, // recoildist 0, // recoilangle 59.999996185303, // slidemax 0, // impactforce 0, // duration60 SFX_804D, // shootsound 1, // penetration }; struct inventory_ammo invammo_tester = { AMMOTYPE_PISTOL, CASING_STANDARD, 8, // clip size NULL, // reload animation 0, // flags }; struct weapon invitem_tester = { FILE_GTESTGUN, // hi model FILE_GTESTGUN, // lo model NULL, // equip animation NULL, // unequip animation NULL, // pritosec animation NULL, // sectopri animation { &invfunc_tester_primary, NULL }, // functions &invammo_tester, // pri ammo NULL, // sec ammo &invaimsettings_default, 1, // muzzlez 15.5, // posx -20.2, // posy -33.5, // posz 1, // sway NULL, // gunviscmds NULL, // part visibility L_GUN_058, // short name L_GUN_058, // name L_GUN_000, // manufacturer L_GUN_000, // description WEAPONFLAG_00000004 | WEAPONFLAG_ONEHANDED | WEAPONFLAG_AICANUSE | WEAPONFLAG_DUALFLIP | WEAPONFLAG_00000040 | WEAPONFLAG_00000400 | WEAPONFLAG_00002000 | WEAPONFLAG_00008000, }; struct weapon *g_Weapons[] = { &invitem_nothing, &invitem_unarmed, &invitem_falcon2, &invitem_falcon2silencer, &invitem_falcon2scope, &invitem_magsec, &invitem_mauler, &invitem_phoenix, &invitem_dy357, &invitem_dy357lx, &invitem_cmp150, &invitem_cyclone, &invitem_callisto, &invitem_rcp120, &invitem_laptopgun, &invitem_dragon, &invitem_k7avenger, &invitem_ar34, &invitem_superdragon, &invitem_shotgun, &invitem_reaper, &invitem_sniperrifle, &invitem_farsight, &invitem_devastator, &invitem_rocketlauncher, &invitem_slayer, &invitem_combatknife, &invitem_crossbow, &invitem_tranquilizer, &invitem_laser, &invitem_grenade, &invitem_nbomb, &invitem_timedmine, &invitem_proximitymine, &invitem_remotemine, &invitem_combatboost, &invitem_pp9i, &invitem_cc13, &invitem_kl01313, &invitem_kf7special, &invitem_zzt9mm, &invitem_dmc, &invitem_ar53, &invitem_rcp45, &invitem_psychosisgun, &invitem_nightvision, &invitem_camspy, &invitem_xrayscanner, &invitem_irscanner, &invitem_cloakingdevice, &invitem_horizonscanner, &invitem_tester, &invitem_rocketlauncher_34, &invitem_ecmmine, &invitem_datauplink, &invitem_rtracker, &invitem_presidentscanner, &invitem_doordecoder, &invitem_autosurgeon, &invitem_explosives, &invitem_skedarbomb, &invitem_commsrider, &invitem_tracerbug, &invitem_targetamplifier, &invitem_disguise40, &invitem_disguise41, &invitem_flightplans, &invitem_researchtape, &invitem_backupdisk, &invitem_keycard, &invitem_keycard, &invitem_keycard, &invitem_keycard, &invitem_keycard, &invitem_keycard, &invitem_keycard, &invitem_keycard, &invitem_suitcase, &invitem_briefcase, #if VERSION >= VERSION_NTSC_1_0 &invitem_shieldtechitem, #endif &invitem_necklace, &invitem_hammer, &invitem_hammer, &invitem_rocket, &invitem_homingrocket, &invitem_grenaderound, &invitem_bolt, &invitem_briefcase2, &invitem_rocket, &invitem_choppergun, &invitem_watchlaser, &invitem_hammer, &invitem_hammer, &invitem_suicidepill, };