aboutsummaryrefslogtreecommitdiff
path: root/gamemode/itemsystem/items/spell_teleport.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/itemsystem/items/spell_teleport.lua')
-rw-r--r--gamemode/itemsystem/items/spell_teleport.lua73
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