diff --git a/depends.txt b/depends.txt index 70a8d1d..ff2a097 100644 --- a/depends.txt +++ b/depends.txt @@ -1,4 +1,5 @@ playereffects +playerphysics? default? vessels? flowers? diff --git a/init.lua b/init.lua index 699fb89..2e377fd 100644 --- a/init.lua +++ b/init.lua @@ -5,6 +5,7 @@ if minetest.get_modpath("intllib") then else S = function(s) return s end end +local ppa = minetest.get_modpath("playerphysics") pep = {} function pep.register_potion(potiondef) @@ -130,48 +131,63 @@ minetest.register_globalstep(function(dtime) end end) +local add_physic = function(player, attribute, value) + if ppa then + playerphysics.add_physics_factor(player, attribute, "pep:"..attribute, value) + else + player:set_physics_override({[attribute]=value}) + end +end +local remove_physic = function(player, attribute) + if ppa then + playerphysics.remove_physics_factor(player, attribute, "pep:"..attribute) + else + player:set_physics_override({[attribute]=1}) + end +end + playereffects.register_effect_type("pepspeedplus", S("High speed"), "pep_speedplus.png", {"speed"}, function(player) - player:set_physics_override({speed=2}) + add_physic(player, "speed", 2) end, function(effect, player) - player:set_physics_override({speed=1}) + remove_physic(player, "speed") end ) playereffects.register_effect_type("pepspeedminus", S("Low speed"), "pep_speedminus.png", {"speed"}, function(player) - player:set_physics_override({speed=0.5}) + add_physic(player, "speed", 0.5) end, function(effect, player) - player:set_physics_override({speed=1}) + remove_physic(player, "speed") end ) playereffects.register_effect_type("pepspeedreset", S("Speed neutralizer"), "pep_speedreset.png", {"speed"}, function() end, function() end) playereffects.register_effect_type("pepjumpplus", S("High jump"), "pep_jumpplus.png", {"jump"}, function(player) - player:set_physics_override({jump=2}) + add_physic(player, "jump", 2) end, function(effect, player) - player:set_physics_override({jump=1}) + remove_physic(player, "jump") end ) playereffects.register_effect_type("pepjumpminus", S("Low jump"), "pep_jumpminus.png", {"jump"}, function(player) - player:set_physics_override({jump=0.5}) + add_physic(player, "jump", 0.5) end, function(effect, player) - player:set_physics_override({jump=1}) + remove_physic(player, "jump") end ) playereffects.register_effect_type("pepjumpreset", S("Jump height neutralizer"), "pep_jumpreset.png", {"jump"}, function() end, function() end) playereffects.register_effect_type("pepgrav0", S("No gravity"), "pep_grav0.png", {"gravity"}, function(player) - player:set_physics_override({gravity=0}) + add_physic(player, "gravity", 0) end, function(effect, player) - player:set_physics_override({gravity=1}) + remove_physic(player, "gravity") end ) playereffects.register_effect_type("pepgravreset", S("Gravity neutralizer"), "pep_gravreset.png", {"gravity"},