Efficiency updates and fixes
parent
b007c4b6e9
commit
60478df200
|
@ -1,9 +1,7 @@
|
|||
--------------------------
|
||||
-- Advanced Lightsabers --
|
||||
--------------------------
|
||||
-------- Ver 1.0 ---------
|
||||
|
||||
local modpath, modname = ...
|
||||
------- Ver 1.0.1 --------
|
||||
|
||||
colors={"green","blue","red"}
|
||||
|
||||
|
@ -20,7 +18,7 @@ minetest.register_craftitem("adv_lightsabers:kyber_crystal", { -- Uncolored Ligh
|
|||
stack_max = 1,
|
||||
})
|
||||
|
||||
for n,color in ipairs(colors) do
|
||||
for _,color in ipairs(colors) do
|
||||
for n,hilt in ipairs(hilts) do
|
||||
minetest.register_craftitem("adv_lightsabers:kyber_crystal_"..color, { -- Colored Kyber Crystal
|
||||
description = "Kyber Crystal",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
--------------------------
|
||||
-- Advanced Lightsabers --
|
||||
--------------------------
|
||||
-------- Ver 1.0 ---------
|
||||
------- Ver 1.0.1 --------
|
||||
|
||||
force_ability = {}
|
||||
ability_cooldown = {}
|
||||
|
@ -21,6 +21,16 @@ minetest.register_on_leaveplayer(function(player)
|
|||
force_ability[player:get_player_name()] = nil
|
||||
end)
|
||||
|
||||
function cooldown(player,duration)
|
||||
local playername = player:get_player_name()
|
||||
ability_cooldown[playername] = duration
|
||||
minetest.after(duration,function()
|
||||
ability_cooldown[playername] = 0.0
|
||||
end)
|
||||
return ability_cooldown[playername]
|
||||
end
|
||||
|
||||
|
||||
-------------------
|
||||
-- Menu Formspec --
|
||||
-------------------
|
||||
|
@ -59,9 +69,7 @@ local function ray_pointed_thing(player)
|
|||
for pointed_thing in ray do
|
||||
if pointed_thing.type == "object" then
|
||||
local pointedobject = pointed_thing.ref
|
||||
if pointedobject:is_player() and pointedobject:get_player_name() == player:get_player_name() then
|
||||
pointedobject = nil
|
||||
else
|
||||
if pointedobject:is_player() and pointedobject:get_player_name() ~= player:get_player_name() then
|
||||
return pointedobject
|
||||
end
|
||||
end
|
||||
|
@ -73,39 +81,24 @@ end
|
|||
---------------------
|
||||
|
||||
function force_jump(player) -- Heightened Jump
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
if player:get_player_control().sneak == true and player:get_player_control().jump == true then
|
||||
player:add_player_velocity({x=0,y=8,z=0})
|
||||
ability_cooldown[playername] = 20
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
cooldown(player,20)
|
||||
end
|
||||
end
|
||||
|
||||
function force_push(player) -- Push entities a far distance
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
local pointedobject = ray_pointed_thing(player)
|
||||
if player:get_player_control().sneak == true and player:get_player_control().LMB == true then
|
||||
if pointedobject and pointedobject:is_player() then
|
||||
local dir = player:get_look_dir()
|
||||
pointedobject:add_player_velocity(vector.multiply(dir,25))
|
||||
ability_cooldown[playername] = 30
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
cooldown(player,20)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function force_choke(player) -- Lift a Player off the ground and slowly choke them
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
local pointedobject = ray_pointed_thing(player)
|
||||
if player:get_player_control().sneak == true and player:get_player_control().LMB == true then
|
||||
if pointedobject and pointedobject:is_player() then
|
||||
|
@ -124,49 +117,31 @@ function force_choke(player) -- Lift a Player off the ground and slowly choke th
|
|||
minetest.after(7.5,function()
|
||||
pointedobject:set_physics_override(1.0,1.0,1.0,true,true,false)
|
||||
end)
|
||||
ability_cooldown[playername] = 60
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
cooldown(player,20)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function force_dash(player) -- Give yourself a short but quick burst of speed
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
local pointedobject = ray_pointed_thing(player)
|
||||
if player:get_player_control().sneak == true and player:get_player_control().up == true and player:get_player_control().down == true then
|
||||
if player:get_player_control().sneak == true
|
||||
and player:get_player_control().up == true
|
||||
and player:get_player_control().down == true then
|
||||
local dir = player:get_look_dir()
|
||||
dir.y = dir.y * 0.1
|
||||
player:add_player_velocity(vector.multiply(dir,25))
|
||||
ability_cooldown[playername] = 20
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
cooldown(player,20)
|
||||
end
|
||||
end
|
||||
|
||||
function force_heal(player) -- Heal yourself by 4 hearts
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
local pointedobject = ray_pointed_thing(player)
|
||||
if player:get_player_control().sneak == true and player:get_player_control().RMB then
|
||||
local hp = player:get_hp()
|
||||
player:set_hp(hp + 8)
|
||||
ability_cooldown[playername] = 60
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
cooldown(player,20)
|
||||
end
|
||||
end
|
||||
|
||||
function force_stun(player) -- Freeze Players in place for 5 seconds
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
local pointedobject = ray_pointed_thing(player)
|
||||
if player:get_player_control().sneak == true and player:get_player_control().LMB == true then
|
||||
if pointedobject and pointedobject:is_player() then
|
||||
|
@ -174,10 +149,7 @@ function force_stun(player) -- Freeze Players in place for 5 seconds
|
|||
minetest.after(5,function()
|
||||
pointedobject:set_physics_override(1.0,1.0,1.0,true,true,false)
|
||||
end)
|
||||
ability_cooldown[playername] = 60
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
cooldown(player,20)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -190,22 +162,22 @@ function adv_lightsabers.force_menu()
|
|||
for _,player in ipairs(minetest.get_connected_players()) do
|
||||
if minetest.check_player_privs(player:get_player_name(), {force_abilities = true}) then
|
||||
local playername = player:get_player_name()
|
||||
local cooldown = ability_cooldown[playername]
|
||||
local ability = force_ability[playername]
|
||||
if player:get_player_control().LMB == true and player:get_player_control().up == true and player:get_player_control().down == true then
|
||||
if player:get_player_control().LMB == true
|
||||
and player:get_player_control().up == true
|
||||
and player:get_player_control().down == true then
|
||||
adv_lightsabers.show_force_menu(player:get_player_name())
|
||||
end
|
||||
if ability == "force_jump" and cooldown == 0.0 then
|
||||
if force_ability[playername] == "force_jump" and ability_cooldown[playername] == 0.0 then
|
||||
force_jump(player)
|
||||
elseif ability == "force_push" and cooldown == 0.0 then
|
||||
elseif force_ability[playername] == "force_push" and ability_cooldown[playername] == 0.0 then
|
||||
force_push(player)
|
||||
elseif ability == "force_choke" and cooldown == 0.0 then
|
||||
elseif force_ability[playername] == "force_choke" and ability_cooldown[playername] == 0.0 then
|
||||
force_choke(player)
|
||||
elseif ability == "force_dash" and cooldown == 0.0 then
|
||||
elseif force_ability[playername] == "force_dash" and ability_cooldown[playername] == 0.0 then
|
||||
force_dash(player)
|
||||
elseif ability == "force_heal" and cooldown == 0.0 then
|
||||
elseif force_ability[playername] == "force_heal" and ability_cooldown[playername] == 0.0 then
|
||||
force_heal(player)
|
||||
elseif ability == "force_stun" and cooldown == 0.0 then
|
||||
elseif force_ability[playername] == "force_stun" and ability_cooldown[playername] == 0.0 then
|
||||
force_stun(player)
|
||||
end
|
||||
end
|
||||
|
@ -259,7 +231,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
end
|
||||
if fields.bleed then
|
||||
local playername = player:get_player_name()
|
||||
if player:get_wielded_item():get_name() == "adv_lightsabers:kyber_crystal_blue" or player:get_wielded_item():get_name() == "adv_lightsabers:kyber_crystal_green" then
|
||||
if player:get_wielded_item():get_name() == "adv_lightsabers:kyber_crystal_blue"
|
||||
or player:get_wielded_item():get_name() == "adv_lightsabers:kyber_crystal_green" then
|
||||
minetest.chat_send_player(playername,"You have bled your Kyber Crystal")
|
||||
player:set_wielded_item("adv_lightsabers:kyber_crystal_red")
|
||||
end
|
||||
|
@ -273,4 +246,4 @@ end)
|
|||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
adv_lightsabers.force_menu()
|
||||
end)
|
||||
end)
|
19
init.lua
19
init.lua
|
@ -1,17 +1,18 @@
|
|||
--------------------------
|
||||
-- Advanced Lightsabers --
|
||||
--------------------------
|
||||
-------- Ver 1.0 ---------
|
||||
------- Ver 1.0.1 --------
|
||||
|
||||
local modpath = minetest.get_modpath("adv_lightsabers")
|
||||
|
||||
adv_lightsabers = {}
|
||||
force_ability = {}
|
||||
ability_cooldown = {}
|
||||
|
||||
local modname = "adv_lightsabers"
|
||||
local modpath = minetest.get_modpath(modname)
|
||||
|
||||
assert(loadfile(modpath .. "/force_api.lua"))(modpath, modname)
|
||||
assert(loadfile(modpath .. "/register_lightsabers.lua"))(modpath, modname)
|
||||
assert(loadfile(modpath .. "/lightsabers.lua"))(modpath, modname)
|
||||
assert(loadfile(modpath .. "/craftitems.lua"))(modpath, modname)
|
||||
assert(loadfile(modpath .. "/ores.lua"))(modpath, modname)
|
||||
dofile(modpath.."/force_api.lua")
|
||||
dofile(modpath.."/register_lightsabers.lua")
|
||||
dofile(modpath.."/lightsabers.lua")
|
||||
dofile(modpath.."/craftitems.lua")
|
||||
dofile(modpath.."/ores.lua")
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
--------------------------
|
||||
-- Advanced Lightsabers --
|
||||
--------------------------
|
||||
-------- Ver 1.0 ---------
|
||||
|
||||
local modpath, modname = ...
|
||||
------- Ver 1.0.1 --------
|
||||
|
||||
colors={"green","blue","red"}
|
||||
|
||||
|
|
4
ores.lua
4
ores.lua
|
@ -1,9 +1,7 @@
|
|||
--------------------------
|
||||
-- Advanced Lightsabers --
|
||||
--------------------------
|
||||
-------- Ver 1.0 ---------
|
||||
|
||||
local modpath, modname = ...
|
||||
------- Ver 1.0.1 --------
|
||||
|
||||
minetest.register_node("adv_lightsabers:kyber_ore", {
|
||||
description = "Kyber Ore",
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
--------------------------
|
||||
-- Advanced Lightsabers --
|
||||
--------------------------
|
||||
-------- Ver 1.0 ---------
|
||||
|
||||
local modpath, modname = ...
|
||||
------- Ver 1.0.1 --------
|
||||
|
||||
function adv_lightsabers.play_sound(player,soundfile)
|
||||
minetest.sound_play(soundfile,{object = minetest.get_player_by_name(player:get_player_name()),gain = 1.0,max_hear_distance = 32,loop = false })
|
||||
minetest.sound_play(soundfile,{
|
||||
object = minetest.get_player_by_name(player:get_player_name()),
|
||||
gain = 1.0,
|
||||
max_hear_distance = 32,
|
||||
loop = false,
|
||||
})
|
||||
end
|
||||
|
||||
function adv_lightsabers.lightsaber_attack(player,pointed_thing,swing,clash)
|
||||
adv_lightsabers.play_sound(player,swing)
|
||||
if pointed_thing.type == "object" and pointed_thing.ref:is_player() then
|
||||
local pointed_weapon = pointed_thing.ref:get_wielded_item():get_name()
|
||||
if minetest.registered_items[pointed_weapon].groups.lightsaber == 1 and pointed_thing.ref:get_player_control().LMB == true then
|
||||
if minetest.registered_items[pointed_weapon].groups.lightsaber == 1
|
||||
and pointed_thing.ref:get_player_control().LMB == true then
|
||||
adv_lightsabers.play_sound(player,clash)
|
||||
else
|
||||
pointed_thing.ref:punch(player,1.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 8}},nil)
|
||||
|
@ -26,112 +30,114 @@ function adv_lightsabers.lightsaber_attack(player,pointed_thing,swing,clash)
|
|||
end
|
||||
end
|
||||
|
||||
function adv_lightsabers:register_lightsaber_entity(type,color)
|
||||
colors={"green","blue","red"}
|
||||
|
||||
local function is_owner_at_pos(self,pos) -- Check if Lightsaber owner is at current position
|
||||
for _,player in pairs(minetest.get_objects_inside_radius(pos,1.5)) do
|
||||
if player:is_player() and player:get_player_name() == self.owner then
|
||||
return true, player
|
||||
end
|
||||
hilts={"single","cross","double"}
|
||||
|
||||
for _,color in ipairs(colors) do
|
||||
for n,type in ipairs(hilts) do
|
||||
local function is_owner_at_pos(self,pos) -- Check if Lightsaber owner is at current position
|
||||
for _,player in pairs(minetest.get_objects_inside_radius(pos,1.5)) do
|
||||
if player:is_player() and player:get_player_name() == self.owner then
|
||||
return true, player
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function return_to_owner(self,pos) -- Return to Owner
|
||||
local owner = minetest.get_player_by_name(self.owner)
|
||||
local owner_pos = owner:get_pos()
|
||||
local node = minetest.get_node_or_nil(owner_pos)
|
||||
owner_pos.y = owner_pos.y + 1
|
||||
local dir = vector.direction(pos,owner_pos)
|
||||
local dist = vector.distance(pos,owner_pos)
|
||||
for _,entity in pairs(minetest.get_objects_inside_radius(pos,2)) do
|
||||
if entity:is_player() and entity:get_player_name() ~= self.owner then -- Punch Player
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
end
|
||||
local luaentity = entity:get_luaentity() -- Punch Mob
|
||||
if luaentity and not self.removing then
|
||||
if luaentity.name ~= self.object:get_luaentity().name then
|
||||
if entity:get_armor_groups().fleshy then
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
end
|
||||
local function return_to_owner(self,pos) -- Return to Owner
|
||||
local owner = minetest.get_player_by_name(self.owner)
|
||||
local owner_pos = owner:get_pos()
|
||||
owner_pos.y = owner_pos.y + 1
|
||||
local dir = vector.direction(pos,owner_pos)
|
||||
for _,entity in pairs(minetest.get_objects_inside_radius(pos,2)) do
|
||||
if entity:is_player() and entity:get_player_name() ~= self.owner then -- Punch Player
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
end
|
||||
local luaentity = entity:get_luaentity() -- Punch Mob
|
||||
if luaentity and not self.removing then
|
||||
if luaentity.name ~= self.object:get_luaentity().name then
|
||||
if entity:get_armor_groups().fleshy then
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
self.returning_to_owner = true
|
||||
self.object:set_velocity(vector.multiply(dir,15))
|
||||
local get_owner, player = is_owner_at_pos(self,pos)
|
||||
end
|
||||
self.returning_to_owner = true
|
||||
self.object:set_velocity(vector.multiply(dir,15))
|
||||
local get_owner, player = is_owner_at_pos(self,pos)
|
||||
if get_owner then
|
||||
self.removing = true
|
||||
if player:get_wielded_item():get_name() == "" then
|
||||
player:set_wielded_item("adv_lightsabers:lightsaber_"..type.."_"..color.."_on")
|
||||
self.object:remove()
|
||||
else
|
||||
self.object:remove()
|
||||
minetest.add_item(pos,"adv_lightsabers:lightsaber_"..type.."_"..color.."_off")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function punch_entities(self,pos) -- Punch Players and Entities
|
||||
for _,entity in pairs(minetest.get_objects_inside_radius(pos,2)) do
|
||||
if entity:is_player() and entity:get_player_name() ~= self.owner then -- Punch Player
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
return_to_owner(self,pos)
|
||||
return
|
||||
end
|
||||
local luaentity = entity:get_luaentity()
|
||||
if luaentity and not self.removing then -- Punch Mob
|
||||
if luaentity.name ~= self.object:get_luaentity().name then
|
||||
if entity:get_armor_groups().fleshy then
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
return_to_owner(self,pos)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_entity("adv_lightsabers:lightsaber_"..type.."_"..color.."_ent", { -- Register entity
|
||||
physical = false,
|
||||
visual = "wielditem",
|
||||
visual_size = {x=.25,y=.25,z=.25},
|
||||
textures = {"adv_lightsabers:lightsaber_"..type.."_"..color.."_on"},
|
||||
collisionbox = {-0.125,-0.125,-0.125,0.125,0.125,0.125},
|
||||
glow = 10,
|
||||
owner = {},
|
||||
timer = 0,
|
||||
on_activate = function(self)
|
||||
self.object:set_armor_groups({immortal=1})
|
||||
local pos = self.object:get_pos()
|
||||
for _,player in pairs(minetest.get_objects_inside_radius(pos,1.0)) do
|
||||
if player:is_player() then
|
||||
local name = player:get_player_name()
|
||||
self.owner = name
|
||||
end
|
||||
end
|
||||
local rot = self.object:get_rotation()
|
||||
self.object:set_rotation({x=rot.x,y=rot.y,z=-40})
|
||||
if self.owner == nil then
|
||||
self.object:remove()
|
||||
minetest.add_item(pos,"adv_lightsabers:lightsaber_"..type.."_"..color.."_off")
|
||||
end
|
||||
end,
|
||||
on_step = function(self)
|
||||
local pos = self.object:get_pos()
|
||||
self.timer = self.timer + 1
|
||||
local rot = self.object:get_rotation()
|
||||
self.object:set_rotation({x=rot.x,y=self.timer,z=rot.z})
|
||||
if self.timer >= 35 and self.owner ~= nil then
|
||||
return_to_owner(self,pos)
|
||||
end
|
||||
punch_entities(self,pos)
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if get_owner then
|
||||
self.removing = true
|
||||
if player:get_wielded_item():get_name() == "" then
|
||||
player:set_wielded_item("adv_lightsabers:lightsaber_"..type.."_"..color.."_on")
|
||||
self.object:remove()
|
||||
else
|
||||
self.object:remove()
|
||||
minetest.add_item(pos,"adv_lightsabers:lightsaber_"..type.."_"..color.."_off")
|
||||
end
|
||||
if minetest.registered_nodes[node.name].walkable then
|
||||
return_to_owner(self,pos)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
local function punch_entities(self,pos) -- Punch Players and Entities
|
||||
for _,entity in pairs(minetest.get_objects_inside_radius(pos,2)) do
|
||||
if entity:is_player() and entity:get_player_name() ~= self.owner then -- Punch Player
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
return_to_owner(self,pos)
|
||||
return
|
||||
end
|
||||
local luaentity = entity:get_luaentity()
|
||||
if luaentity and not self.removing then -- Punch Mob
|
||||
if luaentity.name ~= self.object:get_luaentity().name then
|
||||
if entity:get_armor_groups().fleshy then
|
||||
entity:punch(self.object,2.0,{full_punch_interval = 0.1,damage_groups = {fleshy = 6}},nil)
|
||||
return_to_owner(self,pos)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_entity("adv_lightsabers:lightsaber_"..type.."_"..color.."_ent", { -- Register entity
|
||||
physical = false,
|
||||
visual = "wielditem",
|
||||
visual_size = {x=.25,y=.25,z=.25},
|
||||
textures = {"adv_lightsabers:lightsaber_"..type.."_"..color.."_on"},
|
||||
collisionbox = {-0.125,-0.125,-0.125,0.125,0.125,0.125},
|
||||
glow = 10,
|
||||
owner = owner,
|
||||
timer = 0,
|
||||
on_activate = function(self)
|
||||
self.object:set_armor_groups({immortal=1})
|
||||
local pos = self.object:get_pos()
|
||||
for _,player in pairs(minetest.get_objects_inside_radius(pos,1.0)) do
|
||||
if player:is_player() then
|
||||
local name = player:get_player_name()
|
||||
self.owner = name
|
||||
end
|
||||
end
|
||||
local rot = self.object:get_rotation()
|
||||
self.object:set_rotation({x=rot.x,y=rot.y,z=-40})
|
||||
if self.owner == nil then
|
||||
self.object:remove()
|
||||
minetest.add_item(pos,"adv_lightsabers:lightsaber_"..type.."_"..color.."_off")
|
||||
end
|
||||
end,
|
||||
on_step = function(self)
|
||||
local pos = self.object:get_pos()
|
||||
self.timer = self.timer + 1
|
||||
local rot = self.object:get_rotation()
|
||||
self.object:set_rotation({x=rot.x,y=self.timer,z=rot.z})
|
||||
if self.timer >= 35 and self.owner ~= nil then
|
||||
return_to_owner(self,pos)
|
||||
end
|
||||
punch_entities(self,pos)
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
if minetest.registered_nodes[node.name].walkable then
|
||||
return_to_owner(self,pos)
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
function adv_lightsabers:saber_throw(itemstack,player,type,color)
|
||||
|
@ -150,8 +156,6 @@ function adv_lightsabers:register_lightsaber(type,color)
|
|||
|
||||
if type == "single" then
|
||||
|
||||
adv_lightsabers:register_lightsaber_entity(type,color)
|
||||
|
||||
minetest.register_craftitem("adv_lightsabers:lightsaber_single_"..color.."_off", {
|
||||
description = "Lightsaber",
|
||||
inventory_image = "adv_lightsabers_hilt_single_inv.png",
|
||||
|
@ -180,10 +184,6 @@ function adv_lightsabers:register_lightsaber(type,color)
|
|||
local playername = player:get_player_name()
|
||||
if force_ability[playername] == "saber_throw" then
|
||||
adv_lightsabers:saber_throw(itemstack,player,type,color)
|
||||
ability_cooldown[playername] = 5
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
return itemstack
|
||||
end
|
||||
else
|
||||
|
@ -207,8 +207,6 @@ function adv_lightsabers:register_lightsaber(type,color)
|
|||
|
||||
if type == "cross" then
|
||||
|
||||
adv_lightsabers:register_lightsaber_entity(type,color)
|
||||
|
||||
minetest.register_craftitem("adv_lightsabers:lightsaber_cross_"..color.."_off", {
|
||||
description = "Crossguarded Lightsaber",
|
||||
inventory_image = "adv_lightsabers_hilt_cross_inv.png",
|
||||
|
@ -237,10 +235,6 @@ function adv_lightsabers:register_lightsaber(type,color)
|
|||
local playername = player:get_player_name()
|
||||
if force_ability[playername] == "saber_throw" then
|
||||
adv_lightsabers:saber_throw(itemstack,player,type,color)
|
||||
ability_cooldown[playername] = 5
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
return itemstack
|
||||
end
|
||||
else
|
||||
|
@ -264,8 +258,6 @@ function adv_lightsabers:register_lightsaber(type,color)
|
|||
|
||||
if type == "double" then
|
||||
|
||||
adv_lightsabers:register_lightsaber_entity(type,color)
|
||||
|
||||
minetest.register_craftitem("adv_lightsabers:lightsaber_double_"..color.."_off", {
|
||||
description = "Double Bladed Lightsaber",
|
||||
inventory_image = "adv_lightsabers_hilt_double_inv.png",
|
||||
|
@ -295,9 +287,6 @@ function adv_lightsabers:register_lightsaber(type,color)
|
|||
if force_ability[playername] == "saber_throw" then
|
||||
adv_lightsabers:saber_throw(itemstack,player,type,color)
|
||||
ability_cooldown[playername] = 5
|
||||
minetest.after(ability_cooldown[playername],function(playername)
|
||||
ability_cooldown[playername] = 0.0
|
||||
end, playername)
|
||||
return itemstack
|
||||
end
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue