aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--entities/entities/ws_projectile/shared.lua19
-rw-r--r--gamemode/itemsystem/items/bow.lua23
-rw-r--r--gamemode/itemsystem/items/spell_fireball.lua28
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)