From 8b5c09544b34d31408cf8ed141e9d2e0d090e869 Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Sat, 13 Feb 2016 22:18:15 -0500 Subject: Arrows from bow changed to projectile --- entities/entities/ws_projectile/shared.lua | 19 +------------------ gamemode/itemsystem/items/bow.lua | 23 ++++++++++++++++++++--- gamemode/itemsystem/items/spell_fireball.lua | 28 +++++++++++++++++++++++----- 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/entities/entities/ws_projectile/shared.lua b/entities/entities/ws_projectile/shared.lua index 7eb12e8..039a216 100644 --- a/entities/entities/ws_projectile/shared.lua +++ b/entities/entities/ws_projectile/shared.lua @@ -6,22 +6,5 @@ end function ENT:PhysicsCollide(data, phys) print("We're collideing!") - self:Explode() -end - -function ENT:Explode() - print("Explode called") - local exp = ents.Create("env_explosion") - exp:SetPos(self:GetPos()) - exp:Fire("Explode","",0) - exp:Spawn() - for k,v in pairs(ents.FindInSphere(self:GetPos(),200)) do - if(v.TakeDamage) then - local dmg = ( 200 - v:GetPos():Distance( self:GetPos() ) )/2 - v:TakeDamage(dmg,nil,self) - print("Takeing " .. dmg .. " dammage") - end - end - - self:Remove() + if(self.onhit) then self:onhit(self,data,phys) end end diff --git a/gamemode/itemsystem/items/bow.lua b/gamemode/itemsystem/items/bow.lua index 8ecee8e..d87e446 100644 --- a/gamemode/itemsystem/items/bow.lua +++ b/gamemode/itemsystem/items/bow.lua @@ -41,19 +41,36 @@ ITEM.Recipe = { ITEM.CD = 1 +local arrow = {} +arrow["model"] = "models/mixerman3d/other/arrow.mdl" +arrow["speed"] = 13000 +arrow["drop"] = 50 +arrow["init"] = function(fb) end +arrow["onhit"] = function (self,data,phys) + if(data.HitEntity and data.HitEntity.TakeDamage) then + data.HitEntity:TakeDamage(25) + end + self:Remove() +end + function ITEM:OnPrimary(pl,tr) if (CLIENT) then return end if (!pl:HasItem("Arrow",1)) then return end local aim = pl:GetAimVector() - local D = ents.Create("ws_arrow") - D:SetPos(pl:GetShootPos()+aim*20) + local D = ents.Create("ws_projectile") + if(arrow.speed) then D.speed = arrow.speed end + if(arrow.model) then D.model = arrow.model end + if(arrow.drop) then D.drop = arrow.drop end + if(arrow.init) then D.init = arrow.init end + if(arrow.onhit) then D.onhit = arrow.onhit end + + D:SetPos(pl:GetShootPos()+aim*50) D:SetOwner(pl) D:SetAngles(aim:Angle()) D:Spawn() pl:EmitSound(Sound("physics/flesh/flesh_impact_hard.wav"),100,math.random(90,110)) - D:GetPhysicsObject():ApplyForceCenter(aim * 10000) pl:RemoveItem("Arrow",1) end diff --git a/gamemode/itemsystem/items/spell_fireball.lua b/gamemode/itemsystem/items/spell_fireball.lua index 11b12b3..78a3693 100644 --- a/gamemode/itemsystem/items/spell_fireball.lua +++ b/gamemode/itemsystem/items/spell_fireball.lua @@ -17,21 +17,39 @@ ITEM.Recipe = { ITEM.CD = 1 +local fireball = {} +fireball["model"] = "models/hunter/blocks/cube025x025x025.mdl" +fireball["speed"] = 700 +fireball["drop"] = 50 +fireball["init"] = function(fb) fb:Ignite(10) end +fireball["onhit"] = function (self,data,phys) + print("Explode called") + local exp = ents.Create("env_explosion") + exp:SetPos(self:GetPos()) + exp:Fire("Explode","",0) + exp:Spawn() + for k,v in pairs(ents.FindInSphere(self:GetPos(),200)) do + if(v.TakeDamage) then + local dmg = ( 200 - v:GetPos():Distance( self:GetPos() ) )/2 + v:TakeDamage(dmg,nil,self) + print("Takeing " .. dmg .. " dammage") + end + end + + self:Remove() +end + function ITEM:DoFireball(pl) print("Fully successfull fireball callback:") print(pl) local aim = pl:GetAimVector() - local fireball = {} - fireball["model"] = "models/hunter/blocks/cube025x025x025.mdl" - fireball["speed"] = 700 - fireball["drop"] = 50 - fireball["init"] = function(fb) fb:Ignite(10) end local D = ents.Create("ws_projectile") if(fireball.speed) then D.speed = fireball.speed end if(fireball.model) then D.model = fireball.model end if(fireball.drop) then D.drop = fireball.drop end if(fireball.init) then D.init = fireball.init end + if(fireball.onhit) then D.onhit = fireball.onhit end print("D's speed:" .. D.speed) -- cgit v1.2.3-70-g09d2