-
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Grenades! #68
base: main
Are you sure you want to change the base?
Grenades! #68
Changes from all commits
07a2977
7a012e5
36fdca5
7c2e597
ec60ae9
a615beb
f18ca29
29697e6
3d9f5a8
2933b50
ef9cfe9
1b18373
f4f3c29
3c3e399
579b1f0
6eb9fc7
a2b2128
dcd6f53
457e4fd
6e0d88b
8f74cc1
7556c5e
32f9f9a
ded002a
595c0cf
325bd57
84808f0
b60ef3b
cd22076
4910d02
07f76dd
7e8fc48
99e4044
2be545c
51993a0
6ab7c9b
5713143
0d0bdad
32033fd
e741724
2275791
e20ab06
4c7f0e2
9195e71
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,8 @@ | ||
local icol = Color( 255, 255, 255, 255 ) | ||
local icolOrange = Color( 255, 80, 0, 255 ) | ||
|
||
killicon.Add( "cfc_bonk_shotgun", "vgui/hud/cfc_bonk_shotgun", icol ) | ||
killicon.Add( "cfc_trash_blaster", "vgui/hud/cfc_trash_blaster", icol ) -- Sadly won't appear since the kills will attribute to generic prop kill instead | ||
killicon.Add( "cfc_ion_cannon", "vgui/hud/cfc_ion_cannon", icol ) | ||
|
||
killicon.Add( "cfc_simple_ent_cluster_grenade", "vgui/hud/cfc_simple_ent_cluster_grenade", icolOrange ) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,6 @@ | ||
resource.AddWorkshop( "3097864891" ) | ||
|
||
|
||
if SERVER then | ||
include( "cfc_pvp_weapons/server/utils.lua" ) | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
CFCPvPWeapons = CFCPvPWeapons or {} | ||
|
||
|
||
--[[ | ||
- util.BlastDamageInfo(), with damage callbacks. | ||
- Do NOT call any damage-inflicting functions in the callbacks, it will cause feedback loops and/or misattribute the callback. | ||
- If you need to inflict damage from the callbacks, use a timer, entity with a fuse, etc. | ||
|
||
etdCallback: (optional) (function) | ||
- A callback function that listens during EntityTakeDamage with HOOK_LOW. | ||
- Whatever is returned by the function will be returned in the hook, if you need to block the normal damage event. | ||
petdCallback: (optional) (function) | ||
- A callback function that listens during PostEntityTakeDamage. | ||
--]] | ||
function CFCPvPWeapons.BlastDamageInfo( dmgInfo, pos, radius, etdCallback, petdCallback ) | ||
if etdCallback then | ||
hook.Add( "EntityTakeDamage", "CFC_PvPWeapons_BlastDamageInfo", etdCallback, HOOK_LOW ) | ||
end | ||
|
||
if petdCallback then | ||
hook.Add( "PostEntityTakeDamage", "CFC_PvPWeapons_BlastDamageInfo", petdCallback ) | ||
end | ||
|
||
util.BlastDamageInfo( dmgInfo, pos, radius ) | ||
|
||
if etdCallback then | ||
hook.Remove( "EntityTakeDamage", "CFC_PvPWeapons_BlastDamageInfo" ) | ||
end | ||
|
||
if petdCallback then | ||
hook.Remove( "PostEntityTakeDamage", "CFC_PvPWeapons_BlastDamageInfo" ) | ||
end | ||
end | ||
|
||
-- Similar to CFCPvPWeapons.BlastDamageInfo(), but for util.BlastDamage(). | ||
function CFCPvPWeapons.BlastDamage( inflictor, attacker, pos, radius, damage, etdCallback, petdCallback ) | ||
local dmgInfo = DamageInfo() | ||
dmgInfo:SetInflictor( inflictor ) | ||
dmgInfo:SetAttacker( attacker ) | ||
dmgInfo:SetDamage( damage ) | ||
|
||
CFCPvPWeapons.BlastDamageInfo( dmgInfo, pos, radius, etdCallback, petdCallback ) | ||
end | ||
|
||
-- Spread is on 0-180 scale, output will be a unit vector. | ||
function CFCPvPWeapons.SpreadDir( dir, pitchSpread, yawSpread ) | ||
yawSpread = yawSpread or pitchSpread | ||
|
||
local ang = dir:Angle() | ||
local right = ang:Right() | ||
local up = ang:Up() | ||
|
||
ang:RotateAroundAxis( right, math.Rand( -pitchSpread, pitchSpread ) ) | ||
ang:RotateAroundAxis( up, math.Rand( -yawSpread, yawSpread ) ) | ||
|
||
return ang:Forward() | ||
end |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,172 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AddCSLuaFile() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DEFINE_BASECLASS( "cfc_simple_ent_bubble_grenade" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.Base = "cfc_simple_ent_bubble_grenade" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.Model = Model( "models/weapons/w_eq_fraggrenade.mdl" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.BubbleRadius = 250 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.BubbleDuration = 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.BubbleGrowDuration = 0.25 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.BubbleShrinkDuration = 0.25 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.EffectLingerOutsideBubble = 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.GravityMult = -2.5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.PushStrength = 260 -- Pushes the player up to get them off the ground. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ENT.FuseOnImpact = 1 -- On the first impact, shortens the remaining fuse time to this. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:SetTimer( delay ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BaseClass.SetTimer( self, delay ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
self.Beep = CurTime() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:Initialize() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BaseClass.Initialize( self ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
self:SetMaterial( "models/weapons/w_models/cfc_frag_grenade/frag_grenade_antigrav" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local fuseOnImpact = self.FuseOnImpact | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if SERVER and fuseOnImpact then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
timer.Simple( 0, function() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not IsValid( self ) then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local fuseShortened = false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function self:PhysicsCollide() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local fuseLeft = self._explodeDelay | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not fuseLeft then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if fuseShortened then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fuseShortened = true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if fuseLeft > fuseOnImpact then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
self:SetTimer( fuseOnImpact ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+33
to
+51
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this actually need a timer?
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:CreateBubble() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: Could you localize angles/colors in here? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local pos = self:WorldSpaceCenter() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local bubble = ents.Create( "cfc_simple_ent_bubble" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble:SetPos( pos ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble:SetAngles( Angle( 0, 0, 0 ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble:SetMaterial( "models/props_combine/portalball001_sheet" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble:Spawn() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble:SetBubbleRadius( self.BubbleRadius ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local cosmeticBubbles = {} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local bubble2 = ents.Create( "cfc_simple_ent_bubble" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:SetPos( pos ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:SetAngles( Angle( 0, 0, 0 ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:SetMaterial( "sprites/heatwave" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:Spawn() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:SetBubbleRadius( self.BubbleRadius ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:SetColor( Color( 255, 255, 255, 100 ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2:SetRenderMode( RENDERMODE_TRANSCOLOR ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble2._bubbleScaleMult = 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table.insert( cosmeticBubbles, bubble2 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local bubble3 = ents.Create( "cfc_simple_ent_bubble" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:SetPos( pos ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:SetAngles( Angle( 0, 0, 0 ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:SetMaterial( "sprites/heatwave" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:Spawn() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:SetBubbleRadius( self.BubbleRadius ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:SetColor( Color( 255, 255, 255, 100 ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3:SetRenderMode( RENDERMODE_TRANSCOLOR ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bubble3._bubbleScaleMult = -1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
table.insert( cosmeticBubbles, bubble3 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sound.Play( "ambient/levels/labs/electric_explosion1.wav", pos, 90, 110 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sound.Play( "ambient/fire/ignite.wav", pos, 90, 75, 0.5 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sound.Play( "ambient/machines/machine1_hit2.wav", pos, 90, 100 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return bubble, cosmeticBubbles | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:BubbleStartTouch( ent ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not ent:IsPlayer() then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not ent:Alive() then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- Check if we're allowed to affect the player (there might be a build/pvp system, etc) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local allowed = false | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hook.Add( "EntityTakeDamage", "CFC_PvPWeapons_AntiGravityGrenade_CheckIfDamageIsAllowed", function() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
allowed = true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end, HOOK_LOW ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local dmgInfo = DamageInfo() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmgInfo:SetAttacker( self:GetOwner() ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmgInfo:SetInflictor( self ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmgInfo:SetDamage( 100 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmgInfo:SetDamageType( ent:InVehicle() and DMG_VEHICLE or DMG_GENERIC ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent:TakeDamageInfo( dmgInfo ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hook.Remove( "EntityTakeDamage", "CFC_PvPWeapons_AntiGravityGrenade_CheckIfDamageIsAllowed" ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not allowed then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- Apply the effect | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent:SetGravity( self.GravityMult ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ent:IsOnGround() then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent:SetVelocity( Vector( 0, 0, self.PushStrength ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent._cfcPvPWeapons_AntiGravityGrenade = self | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local rf = RecipientFilter() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rf:AddPlayer( ent ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sound.Play( "ambient/machines/machine1_hit2.wav", ent:EyePos(), 75, 120 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
util.ScreenShake( ent:EyePos(), 3, 5, 1.5, 500, true, ent ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+127
to
+131
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Did you forget to use the recipientfilter here? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+94
to
+134
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think this is going to work like you think it will. A much simpler and more reliable option:
I believe the only difference will be that the bubbles will pop on non-pvpers, but I think that's fine |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:BubbleTouch( ent ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if ent:IsOnGround() then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent:SetVelocity( Vector( 0, 0, self.PushStrength ) ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+137
to
+139
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:BubbleEndTouch() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:BubbleEndEffect( ent ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if not ent:IsPlayer() then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-- Prevent grenades from resetting gravity early if the player quickly enters another one. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local otherGrenade = ent._cfcPvPWeapons_AntiGravityGrenade | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if otherGrenade ~= self and IsValid( otherGrenade ) then return end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent:SetGravity( 1 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ent._cfcPvPWeapons_AntiGravityGrenade = nil | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
function ENT:Think() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if SERVER and self.Beep and self.Beep <= CurTime() then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
self:EmitSound( "npc/scanner/combat_scan4.wav", 75, 120 ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
local time = 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if self._explodeTime and self._explodeTime - CurTime() <= 1.5 then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
time = 0.3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
self.Beep = CurTime() + time | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+157
to
+167
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could you move this to a |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BaseClass.Think( self ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
return true | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
AddCSLuaFile() | ||
|
||
ENT.Base = "base_anim" | ||
ENT.Type = "anim" | ||
|
||
ENT.AutomaticFrameAdvance = true | ||
|
||
ENT.Model = Model( "models/cfc_pvp_weapons/bubble.mdl" ) | ||
|
||
|
||
function ENT:SetupDataTables() | ||
self:NetworkVar( "Float", 0, "BubbleRadius" ) | ||
end | ||
|
||
function ENT:Initialize() | ||
self:SetModel( self.Model ) | ||
self:DrawShadow( false ) | ||
|
||
if CLIENT then | ||
local radius = self:GetBubbleRadius() | ||
self:SetRenderBounds( Vector( -radius, -radius, -radius ), Vector( radius, radius, radius ) ) | ||
|
||
self:NetworkVarNotify( "BubbleRadius", function( ent, _, _, new ) | ||
ent:SetRenderBounds( Vector( -new, -new, -new ), Vector( new, new, new ) ) | ||
end ) | ||
end | ||
end | ||
|
||
function ENT:SetUpPhysics() | ||
self:PhysicsInit( SOLID_VPHYSICS ) | ||
self:SetMoveType( MOVETYPE_VPHYSICS ) | ||
self:SetSolid( SOLID_VPHYSICS ) | ||
self:SetNotSolid( true ) | ||
self:GetPhysicsObject():EnableMotion( false ) | ||
end | ||
|
||
function ENT:ACF_PreDamage() | ||
return false | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.