From 4f48a4ec5f7a92857f518bba67deb52ab0ced988 Mon Sep 17 00:00:00 2001 From: Apickx Date: Thu, 8 Mar 2018 20:15:37 -0500 Subject: Fixed fireball Fixed a bug with fireball spell, and projectile entity --- entities/entities/ws_projectile/init.lua | 11 ++++++++--- gamemode/itemsystem/items/spell_fireball.lua | 18 ++++++++++++++++-- gamemode/itemsystem/loaditems.lua | 17 ++++++++++++++++- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/entities/entities/ws_projectile/init.lua b/entities/entities/ws_projectile/init.lua index 0a18b1a..f47c75f 100644 --- a/entities/entities/ws_projectile/init.lua +++ b/entities/entities/ws_projectile/init.lua @@ -10,15 +10,18 @@ function ENT:Initialize() else self:SetModel("models/mixerman3d/other/arrow.mdl") end - if self.init then self:init(self) - --if(self.speed) then print(self.speed) + if self.init then self:init(self) end + + if(self.speed) then print(self.speed) else print("No speed for projectile!") end self:PhysicsInit(SOLID_VPHYSICS) self:SetMoveType(MOVETYPE_VPHYSICS) self:SetSolid(SOLID_VPHYSICS) - self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE) + -- self:SetCollisionGroup(COLLISION_GROUP_INTERACTIVE) self:PhysWake() + local po = self:GetPhysicsObject() + po:AddVelocity(self:GetForward() * self.speed * po:GetMass()) util.SpriteTrail( self, 0, Ab, true, 1, 0, 1, 1, "sprites/smoke_trail.vmt" ) end @@ -27,5 +30,7 @@ end function ENT:Think() --print("speed is " .. self.speed) + local po = self:GetPhysicsObject() + po:AddVelocity(self:GetForward() * self.speed * po:GetMass()) self:GetPhysicsObject():SetAngles(self:GetVelocity():Angle()) end diff --git a/gamemode/itemsystem/items/spell_fireball.lua b/gamemode/itemsystem/items/spell_fireball.lua index 14bca66..dc7d7e0 100644 --- a/gamemode/itemsystem/items/spell_fireball.lua +++ b/gamemode/itemsystem/items/spell_fireball.lua @@ -10,6 +10,15 @@ ITEM.HoldType = "magic" game.AddParticles("particles/particletest.pcf") PrecacheParticleSystem("firetest") +ITEM.Structure = { + { + Bone = "ValveBiped.Bip01_R_Hand", + Model = "models/props_junk/Rock001a.mdl", + Size = Vector(1,1,1), + Pos = Vector(0,0,0), + Ang = Angle(0,0,0), + }, +} ITEM.Recipe = { Resources = { @@ -21,6 +30,7 @@ ITEM.Recipe = { } ITEM.CD = 0.25 +ITEM.Range = 9999 --[[ The number of fireballs a player has is held in a global table where each entry is @@ -46,7 +56,7 @@ fireball["onhit"] = function (self,data,phys) end end - self:Remove() + self.Remove(self) end function ITEM:DoFireball(pl) @@ -100,6 +110,10 @@ end function ITEM:OnPrimary(pl,tr) if CLIENT then return end print("Attempting to cast...") - pl:Cast("Fireball",fireballfunc,self) + if NumFireballs[pl] == nil or NumFireballs[pl] < 3 then + pl:Cast("Fireball",fireballfunc,self) + else + pl:ChatPrint("You can't summon any more fireballs") + end end RegisterItem(ITEM) diff --git a/gamemode/itemsystem/loaditems.lua b/gamemode/itemsystem/loaditems.lua index 374fd18..2e5be4e 100644 --- a/gamemode/itemsystem/loaditems.lua +++ b/gamemode/itemsystem/loaditems.lua @@ -8,9 +8,12 @@ GM.Recipes = GM.Items or {} --This is so that the client can store info about items/recepies too. local gmitems = (GAMEMODE or GM).Items local gmrecepies = (GAMEMODE or GM).Recipes - +local itemfiles = {} function RegisterItem(tbl) assert(gmitems[tbl] == nil, "Cannot register 2 items with the same name!") + tb = debug.getinfo(2) + src = string.sub(tb.source,2) + itemfiles[#itemfiles + 1] = src insert(gmitems,tbl) if tbl.Recipe then insert(gmrecepies,tbl) @@ -18,6 +21,18 @@ function RegisterItem(tbl) print("Registered item:", tbl.Name) end +(GAMEMODE or GM).LoadItems = function() + allfiles = table.Copy(itemfiles) + for _,itemfile in pairs(allfiles) do + f = file.Read(itemfile,"GAME") + c = CompileString(f,itemfile) + print("executing",c) + if c ~= nil then + c() + end + end +end + function GetItemByName(name) for k,v in pairs( gmitems ) do if (v.Name == name) then return v end -- cgit v1.2.3-70-g09d2