aboutsummaryrefslogtreecommitdiff
path: root/gamemode/itemsystem/items/spell_fireball.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/itemsystem/items/spell_fireball.lua')
-rw-r--r--gamemode/itemsystem/items/spell_fireball.lua51
1 files changed, 28 insertions, 23 deletions
diff --git a/gamemode/itemsystem/items/spell_fireball.lua b/gamemode/itemsystem/items/spell_fireball.lua
index f5de38d..51f835f 100644
--- a/gamemode/itemsystem/items/spell_fireball.lua
+++ b/gamemode/itemsystem/items/spell_fireball.lua
@@ -22,6 +22,10 @@ ITEM.Recipe = {
ITEM.CD = 0.25
+--[[
+ The number of fireballs a player has is held in a global table where each entry is
+ [player] = # of fireballs
+]]
ITEM.NumFireballs = {}
ITEM.MaxFireballs = 3
@@ -31,37 +35,38 @@ 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
+ 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
+local fireballfields = {
+ "speed",
+ "model",
+ "drop",
+ "init",
+ "onhit",
+}
function ITEM:DoFireball(pl)
- print("Fully successfull fireball callback:")
+ print("Fully successfull fireball callback:")
print(pl)
local aim = pl:GetAimVector()
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)
+ for k,v in pairs(fireballfields) do
+ if fireball[k] then D[k] = fireball[k] end
+ end
- D:SetPos(pl:GetShootPos()+aim*50)
+ D:SetPos(pl:GetShootPos() + aim * 50)
D:SetOwner(pl)
D:SetAngles(aim:Angle())
D:Spawn()
@@ -70,31 +75,31 @@ end
function ITEM:OnSecondary(pl,tr)
ParticleEffect("firetest",pl:GetPos(),pl:GetAngles(),pl)
- if(self.NumFireballs[pl] ~= nil and self.NumFireballs[pl] > 0) then
+ if self.NumFireballs[pl] ~= nil and self.NumFireballs[pl] > 0 then
self:DoFireball(pl)
self.NumFireballs = self.NumFireballs-1
end
end
hook.Add("PlayerDeath","remove_fireball_count",function(victim,inflictor,attacker)
- self.NumFireballs[victim] = 0
+ ITEM.NumFireballs[victim] = 0
end)
hook.Add("PlayerDisconnected","clean_fireball_count",function(ply)
- self.NumFireballs[ply] = nil
+ ITEM.NumFireballs[ply] = nil
end)
local fireballfunc = function(num,pl,self)
- if(num == 0) then return end
- if self.NumFireballs[ply] == nil then
- self.NumFireballs[ply] = 1
- elseif self.NumFireballs[ply] < self.MaxFireballs then
- self.NumFireballs[ply] = self.NumFireballs[ply] + 1
- end
+ if num == 0 then return end
+ if ITEM.NumFireballs[ply] == nil then
+ ITEM.NumFireballs[ply] = 1
+ elseif ITEM.NumFireballs[ply] < ITEM.MaxFireballs then
+ ITEM.NumFireballs[ply] = ITEM.NumFireballs[ply] + 1
+ end
end
function ITEM:OnPrimary(pl,tr)
- if(CLIENT) then return end
+ if CLIENT then return end
print("Attempting to cast...")
pl:Cast("Fireball",fireballfunc,self)
end