diff --git a/lua/weapons/koolaids_poo_blaster.lua b/lua/weapons/koolaids_poo_blaster.lua index ba72150..7737b7b 100644 --- a/lua/weapons/koolaids_poo_blaster.lua +++ b/lua/weapons/koolaids_poo_blaster.lua @@ -30,14 +30,12 @@ SWEP.Primary.Automatic = true SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = -1 -SWEP.Primary.Automatic = true SWEP.Primary.Ammo = "none" SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = -1 SWEP.Secondary.Automatic = false SWEP.Secondary.Ammo = "none" -SWEP.Secondary.Automatic = true SWEP.Secondary.Delay = 1 SWEP.Secondary.Sound = "pooblaster/pooblaster.ogg" @@ -51,7 +49,7 @@ local mdls = {"models/props_docks/channelmarker_gib01.mdl","models/props_c17/dol function SWEP:PrimaryAttack() -- This weapon is 'automatic'. This function call below defines -- the rate of fire. Here we set it to shoot every 0.5 seconds. - self:SetNextPrimaryFire( CurTime() + 0.5 ) + self:SetNextPrimaryFire( CurTime() + 0.4 ) self:EmitSound( self.Primary.Sound ) -- Call 'ThrowChair' on self with this model self:ThrowChair( mdls[math.random(1,table.Count(mdls))] ) @@ -61,9 +59,9 @@ end function SWEP:SecondaryAttack() -- Though the secondary fire isn't automatic -- players shouldn't be able to fire too fast - self:SetNextSecondaryFire( CurTime() + 0.1 ) + self:SetNextSecondaryFire( CurTime() + 1 ) self:EmitSound( self.Secondary.Sound ) - for i=1,10 do + for i=1,20 do self:ThrowChair( "models/weapons/w_bugbait.mdl" ) end end @@ -94,32 +92,29 @@ function SWEP:ThrowChair( model_file ) -- but the vector methods prevent duplicitous objects from being created -- which is faster and more memory efficient -- AimVector is not directly modified as it is used again later in the function - local aimvec = owner:GetAimVector() - local pos = aimvec * 32 -- This creates a new vector object - pos:Add( owner:EyePos() ) -- This translates the local aimvector to world coordinates - + local aimvec = owner:GetAimVector() -- This creates a new vector object + local pos = aimvec * 32 + pos:Add( owner:EyePos() ) -- Set the position to the player's eye position plus 16 units forward. - ent:SetPos( pos ) - + ent:SetPos( pos + VectorRand( -10, 10 )) + -- Set the angles to the player'e eye angles. Then spawn it. ent:SetAngles( owner:EyeAngles() ) ent:Spawn() - + -- Now get the physics object. Whenever we get a physics object -- we need to test to make sure its valid before using it. -- If it isn't then we'll remove the entity. local phys = ent:GetPhysicsObject() if ( not phys:IsValid() ) then ent:Remove() return end + phys:SetMass(4) -- Now we apply the force - so the chair actually throws instead -- of just falling to the ground. You can play with this value here -- to adjust how fast we throw it. -- Now that this is the last use of the aimvector vector we created, -- we can directly modify it instead of creating another copy - if model_file == "models/weapons/w_bugbait.mdl" then - aimvec:Mul( -1000 ) -- Add a random vector with elements [-10, 10) - else - aimvec:Mul( 1000 ) - end + aimvec:Mul( 10000 ) + aimvec:Add( VectorRand( -100, 100 ) ) phys:ApplyForceCenter( aimvec ) -- Assuming we're playing in Sandbox mode we want to add this -- entity to the cleanup and undo lists. This is done like so. @@ -129,7 +124,7 @@ function SWEP:ThrowChair( model_file ) undo.AddEntity( ent ) undo.SetPlayer( owner ) undo.Finish() - ent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) + --ent:SetCollisionGroup( COLLISION_GROUP_DEBRIS ) ent:SetMaterial("models/props_pipes/GutterMetal01a") -- A lot of items can clutter the workspace. -- To fix this we add a 10 second delay to remove the chair after it was spawned.