X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=init.lua;h=60b76e3e287e1355e1c3c828483d50d27abf93c7;hb=HEAD;hp=e9c34d6f8f3664540828df02e482b13ec3c28328;hpb=944efd5af71fbaf6f1d6dd47750d9a2a56bbc389;p=hangglider.git diff --git a/init.lua b/init.lua index e9c34d6..60b76e3 100644 --- a/init.lua +++ b/init.lua @@ -136,7 +136,7 @@ minetestd.physicsctl.register_physics_effect("hangglider", if vel_y < 0 and vel_y > -3 then phys.speed = (math.abs(vel_y/2) + 0.75) elseif vel_y <= -3 then --Cap our gliding movement speed. - phys.speed = phys.speed*2.25 + phys.speed = 2.25 end phys.jump = 0 end, @@ -172,29 +172,39 @@ hangglider.shot_sound = function (pos) }) end +local function set_fast(name, value) + local privs = minetest.get_player_privs(name) + privs.fast = value + minetest.set_player_privs(name, privs) +end + local physics_attrs = {"jump", "speed", "gravity"} local function apply_physics_override(player, overrides) - if player_monoids then - for _, attr in pairs(physics_attrs) do - if overrides[attr] then - player_monoids[attr]:add_change(player, overrides[attr], "hangglider:glider") - end - end - else - player:set_physics_override(overrides) - end + if player_monoids then + for _, attr in pairs(physics_attrs) do + if overrides[attr] then + player_monoids[attr]:add_change(player, overrides[attr], "hangglider:glider") + end + end + else + player:set_physics_override(overrides) + end + if minetest.settings:get_bool("hangglider_no_fast") then + set_fast(player:get_player_name(), nil) + end end local function remove_physics_override(player, overrides) - for _, attr in pairs(physics_attrs) do - if overrides[attr] then - if core.global_exists("player_monoids") then - player_monoids[attr]:del_change(player, "hangglider:glider") - else - player:set_physics_override({[attr] = 1}) - end - end - end + for _, attr in pairs(physics_attrs) do + if overrides[attr] then + if core.global_exists("player_monoids") then + player_monoids[attr]:del_change(player, "hangglider:glider") + else + player:set_physics_override({[attr] = 1}) + end + end + end + set_fast(player:get_player_name(), true) end local step_v @@ -239,18 +249,18 @@ minetest.register_entity("hangglider:glider", { end end if not hangglider.can_fly(pname,pos) then - if not self.warned then -- warning shot + if not self.warned then -- warning shot self.warned = 0 hangglider.shot_sound(pos) minetest.chat_send_player(pname, "Protected area! You will be shot down in two seconds by anti-aircraft guns!") - end - self.warned = self.warned + dtime - if self.warned > 2 then -- shoot down + end + self.warned = self.warned + dtime + if self.warned > 2 then -- shoot down player:set_hp(1) player:get_inventory():remove_item("main", ItemStack("hangglider:hangglider")) hangglider.shot_sound(pos) canExist = false - end + end end if not canExist then