diff options
Diffstat (limited to 'gamemode/itemsystem/items/spell_teleport.lua')
| -rw-r--r-- | gamemode/itemsystem/items/spell_teleport.lua | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/gamemode/itemsystem/items/spell_teleport.lua b/gamemode/itemsystem/items/spell_teleport.lua new file mode 100644 index 0000000..6294955 --- /dev/null +++ b/gamemode/itemsystem/items/spell_teleport.lua @@ -0,0 +1,73 @@ + +ITEM.Name = "Teleport" +ITEM.Class = "weapon" +ITEM.Desc = "Right click to set target location, left click to open a portal there." +ITEM.Model = "models/props_debris/wood_board02a.mdl" +ITEM.Icon = Material("wintersurvival2/hud/ws2_icons/icon_spellteleport.png") +ITEM.HoldType = "magic" + +//Load some nessessary stuff +game.AddParticles("particles/particletest.pcf") +PrecacheParticleSystem("firetest") + + +ITEM.Recipe = { + Resources = { + ["Plank"] = 2, + ["Rope"] = 1, + ["Sap"] = 1, + }, + Tools = {}, +} + +ITEM.CD = 0.25 + +ITEM.savedpoint = nil + +function ITEM:DoTeleport(score,pl,self) + print("DoTeleport called!") + if(self.savedpoint == nil) then return end + print("Fully successfull teleport callback:") + print(pl) + local aim = pl:GetAimVector() + + local D = ents.Create("ws_teleporter") + + + D:SetPos(pl:GetShootPos()+aim*200) + D:SetOwner(pl) + D:SetAngles(aim:Angle()) + D:Spawn() + D.endpoint = self.savedpoint + pl:EmitSound(Sound("physics/flesh/flesh_impact_hard.wav"),100,math.random(90,110)) +end + +local teleportfunc = function(score, pl, self) + print("teleportfunc called!") + if(self.savedpoint == nil) then return end + print("Fully successfull teleport callback:") + print(pl) + local aim = pl:GetAimVector() + + local D = ents.Create("ws_teleporter") + + + D:SetPos(pl:GetShootPos()+aim*200) + D:SetOwner(pl) + D:SetAngles(aim:Angle()) + D:Spawn() + D.endpoint = self.savedpoint + pl:EmitSound(Sound("physics/flesh/flesh_impact_hard.wav"),100,math.random(90,110)) +end + +function ITEM:OnSecondary(pl,tr) + print("Endpoint set?") + ParticleEffect("firetest",pl:GetPos(),pl:GetAngles(),pl) + self.savedpoint = pl:GetPos() +end + +function ITEM:OnPrimary(pl,tr) + if(CLIENT) then return end + print("Attempting to cast...") + pl:Cast("Gateway",teleportfunc,self) +end |
