diff options
Diffstat (limited to 'gamemode/itemsystem/items/spell_fireball.lua')
| -rw-r--r-- | gamemode/itemsystem/items/spell_fireball.lua | 51 |
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 |
