mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
87
lua/entities/obj_vj_combineball_z.lua
Normal file
87
lua/entities/obj_vj_combineball_z.lua
Normal file
@@ -0,0 +1,87 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
-- This is just a regular VJ Base combine ball, but it explodes on impact with enemies.
|
||||
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
ENT.Base = "obj_vj_combineball"
|
||||
ENT.PrintName = "Impact Combine Ball"
|
||||
ENT.Author = "DrVrej" -- Edited by Zippy.
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
ENT.DirectDamage = 30
|
||||
ENT.ExplosionDamage = 30
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
function ENT:CustomOnPhysicsCollide(data, phys)
|
||||
local owner = self:GetOwner()
|
||||
local hitEnt = data.HitEntity
|
||||
if IsValid(owner) then
|
||||
local hit_enemy = ( (hitEnt != owner) && (owner:IsPlayer() or owner:DoRelationshipCheck(hitEnt)) )
|
||||
|
||||
if (VJ_IsProp(hitEnt)) or hit_enemy then
|
||||
self:CustomOnDoDamage_Direct(data, phys, hitEnt)
|
||||
local dmgInfo = DamageInfo()
|
||||
dmgInfo:SetDamage(self.DirectDamage)
|
||||
dmgInfo:SetDamageType(self.DirectDamageType)
|
||||
dmgInfo:SetAttacker(owner)
|
||||
dmgInfo:SetInflictor(self)
|
||||
dmgInfo:SetDamagePosition(data.HitPos)
|
||||
hitEnt:TakeDamageInfo(dmgInfo, self)
|
||||
VJ_DestroyCombineTurret(owner, hitEnt)
|
||||
self:DeathEffects()
|
||||
end
|
||||
else
|
||||
self:CustomOnDoDamage_Direct(data, phys, hitEnt)
|
||||
local dmgInfo = DamageInfo()
|
||||
dmgInfo:SetDamage(self.DirectDamage)
|
||||
dmgInfo:SetDamageType(self.DirectDamageType)
|
||||
dmgInfo:SetAttacker(self)
|
||||
dmgInfo:SetInflictor(self)
|
||||
dmgInfo:SetDamagePosition(data.HitPos)
|
||||
hitEnt:TakeDamageInfo(dmgInfo, self)
|
||||
VJ_DestroyCombineTurret(self, hitEnt)
|
||||
end
|
||||
|
||||
if (hitEnt:IsNPC() or hitEnt:IsPlayer()) then return end
|
||||
|
||||
self:OnBounce(data,phys)
|
||||
|
||||
local dataF = EffectData()
|
||||
dataF:SetOrigin(data.HitPos)
|
||||
util.Effect("cball_bounce", dataF)
|
||||
|
||||
dataF = EffectData()
|
||||
dataF:SetOrigin(data.HitPos)
|
||||
dataF:SetNormal(data.HitNormal)
|
||||
dataF:SetScale(50)
|
||||
util.Effect("AR2Impact", dataF)
|
||||
end
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
local color1 = Color(255, 255, 225, 32)
|
||||
local color2 = Color(255, 255, 225, 64)
|
||||
|
||||
function ENT:DeathEffects(data, phys)
|
||||
local myPos = self:GetPos()
|
||||
effects.BeamRingPoint(myPos, 0.2, 12, 1024, 64, 0, color1, {material="sprites/lgtning.vmt", framerate=2, flags=0, speed=0, delay=0, spread=0})
|
||||
effects.BeamRingPoint(myPos, 0.5, 12, 1024, 64, 0, color2, {material="sprites/lgtning.vmt", framerate=2, flags=0, speed=0, delay=0, spread=0})
|
||||
|
||||
local effectData = EffectData()
|
||||
effectData:SetOrigin(myPos)
|
||||
util.Effect("cball_explode", effectData)
|
||||
|
||||
VJ_EmitSound(self, "weapons/physcannon/energy_sing_explosion2.wav", 150)
|
||||
util.ScreenShake(myPos, 20, 150, 1, 1250)
|
||||
util.VJ_SphereDamage(self, self, myPos, 400, self.ExplosionDamage, bit.bor(DMG_SONIC, DMG_BLAST), true, true, {DisableVisibilityCheck=true, Force=80})
|
||||
|
||||
self:Remove()
|
||||
end
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user