# Jedi Knight Cog Script # # WEAP_BRYAR.COG # # WEAPON 2 Script - Bryar Pistol # # The trusty weapon of Kyle Katarn. This is actually an older modified rifle # that has been cut down to more of a pistol size. It is very accurate but # somewhat of a low power weapon. This weapon has only one type of fire. # # - Affected by MagSealed sectors/surfaces. # # [YB & CYW] # # (C) 1997 LucasArts Entertainment Co. All Rights Reserved symbols model povModel=bryv.3do local model weaponMesh=bryg.3do local keyframe mountAnim=bryvmnt.key local keyframe dismountAnim=bryvdis.key local keyframe povfireAnim=bryvpst1.key local keyframe holsterAnim=kyhlstr.key local sound outSound=pistout1.wav local sound mountSound=df_bry_ready.wav local sound dismountSound=PutWeaponAway01.wav local sound fireSound=pistol-1.wav local template projectile=+bryarbolt local thing player local thing victim local thing potential local flex dot local flex maxDot local flex fireWait=0.5 local flex holsterWait local flex fireDelay=0.6 local flex powerBoost local flex autoAimFOV=30 local flex autoAimMaxDist=5 local int weaponIndex local int trackID=-1 local int dummy=0 local int mode local int holsterTrack local int OldFocus local int Stay local int Dummy local template CameraTpl=+Zoom_Cam local int Zoom=1 local int ZoomCount local flex ZoomMag=0.15 local vector ZoomFactor local message activated message deactivated message selected message deselected message autoselect message fire message timer message pulse end # ======================================================================================== code fire: player = GetSourceRef(); // Check that the player is still alive. if(GetThingHealth(player) <= 0) { Return; } // Check Ammo - If we are out, autoselect best weapon. if(GetInv(player, 11) < 1.0) { PlaySoundThing(outSound, player, 1.0, -1.0, -1.0, 0x80); if(GetAutoSwitch() & 1) SelectWeapon(player, AutoSelectWeapon(player, 1)); Return; } SetPOVShake('0.0 -.003 0.0', '1.0 0.0 0.0', .05, 80.0); FireProjectile(player, projectile, fireSound, 8, '0.0135 0.1624 0.0', '0 0 0', 1.0, 0x20, autoAimFOV, autoAimFOV*2); ChangeInv(player, 11, -1.0); jkPlayPOVKey(player, povfireAnim, 1, 0x38); powerBoost = GetInv(player, 63); ChangeFireRate(player, fireWait/powerBoost); Return; # ........................................................................................ activated: player = GetSourceRef(); mode = GetSenderRef(); if(mode == 0) { jkSetWaggle(player, '0.0 0.0 0.0', 0); powerBoost = GetInv(player, 63); ActivateWeapon( player, fireWait/powerBoost, mode ); } else { if(Zoom) { OldFocus = GetCurrentCamera(); ParseArg(player, "maxrotvel=20 maxrotthrust=20"); SetPulse(0.01); } Stay = 0; ZoomCount = 0; } Return; # ........................................................................................ pulse: if(!Stay) { if(Zoom) { ZoomMag = ZoomMag + ZoomCount * 0.005; if(ZoomMag > 5) ZoomMag = 5; } else { ZoomMag = ZoomMag - ZoomCount * 0.005; if(ZoomMag < 0.15) ZoomMag = 0.15; } ZoomFactor = VectorSet(0, ZoomMag, 0.037); ZoomCount = ZoomCount + 1; } if( (ZoomMag == 0.15) && !Zoom) { call stop_power; return; } Dummy = FireProjectile(player, CameraTpl, -1, -1, ZoomFactor, '0 0 0', 0, 0, 0, 0); SetThingPos(Dummy, VectorAdd(GetThingPos(Dummy), VectorScale(VectorNorm(GetThingLVec(Dummy)), -0.1))); SetCameraFocus(0, Dummy); if(GetCurrentCamera() == 1) CycleCamera(); Return; # ........................................................................................ deactivated: player = GetSourceRef(); mode = GetSenderRef(); if(mode == 0) { jkSetWaggle(player, '10.0 7.0 0.0', 350); DeactivateWeapon( player, mode ); } else { Zoom = 1 - Zoom; Stay = 1; if(ZoomCount <= 3) call stop_power; } Return; # ........................................................................................ stop_power: SetPulse(0); ParseArg(player, "maxrotvel=200 maxrotthrust=180"); SetCameraFocus(0, player); ZoomMag = 0.15; if( (OldFocus == 1) && (GetCurrentCamera() != 1) ) CycleCamera(); return; # ........................................................................................ selected: player = GetSourceRef(); // Setup the meshes and models. jkSetPOVModel(player, povModel); jkSetWeaponMesh(player, weaponMesh); SetArmedMode(player, 1); // Play mounting sound. PlayMode(player, 41); PlaySoundThing(mountSound, player, 1.0, -1.0, -1.0, 0x80); // Play the animation (NOLOOP + UNIQUE + ENDPAUSE). // The animation is held at the last frame after it is played. trackID = jkPlayPOVKey(player, mountAnim, 0, 0x14); jkSetWaggle(player, '10.0 7.0 0.0', 350); // Clear saber flags, and allow activation of the weapon jkClearFlags(player, 0x5); SetCurWeapon(player, 2); SetMountWait(player, GetKeyLen(mountAnim)); Return; # ........................................................................................ deselected: player = GetSourceRef(); weaponIndex = GetSenderRef(); PlaySoundThing(dismountSound, player, 1.0, -1, -1, 0x80); jkPlayPOVKey(player, dismountAnim, 0, 0x18); holsterWait = GetKeyLen(holsterAnim); SetMountWait(player, holsterWait); holsterTrack = PlayKey(player, holsterAnim, 1, 0x4); SetTimerEx(holsterWait, 2, 0.0, 0.0); if (trackID != -1) { jkStopPOVKey(player, trackID, 0); trackID = -1; } jkSetWaggle(player, '0.0 0.0 0.0', 0); call stop_power; Zoom = 1; Return; # ........................................................................................ autoselect: player = GetSourceRef(); // If the player has the weapon if(GetInv(player, 2) != 0.0) { // If the player has ammo if(GetInv(player, 11) != 0.0) { ReturnEx(500.0); } else { ReturnEx(-1.0); } } else { ReturnEx(-1.0); } Return; # ........................................................................................ timer: StopKey(player, holsterTrack, 0.0); Return; end