From 3865d138874f688a8cc6210f5450a8ac18c30177 Mon Sep 17 00:00:00 2001 From: Piezo_ Date: Thu, 29 Nov 2018 21:46:05 -0800 Subject: [PATCH] Minetest_systemd dependency is now optional --- README.md | 38 +++++++++++++++++ depends.txt | 3 +- init.lua | 80 +++++++++++++++++++++++++++--------- textures/blank.png | Bin 4194 -> 0 bytes textures/glider_struts.png~ | Bin 32906 -> 0 bytes 5 files changed, 101 insertions(+), 20 deletions(-) create mode 100644 README.md delete mode 100644 textures/blank.png delete mode 100644 textures/glider_struts.png~ diff --git a/README.md b/README.md new file mode 100644 index 0000000..56c6a48 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +Hang Glider Mod for Minetest +---------------------------- +This is a fork of the minetest-hangglider mod by Piezo_ (orderofthefourthwall@gmail.com) + +Which is located at: + + +**This version is an experimental version that is not intended for general use.** + +It includes the following changes by David G (kestral246@gmail.com): + +- Give visual indication that hangglider is equiped. + - Display simple overlay with blurred struts when equiped. + - Issue: don't know how to disable overlay when using third person view. + +- Also unequip hangglider when landing on water. + +- Attempt to linearize parabolic flight path. + - Start gravity stronger, but gradually reduce it as descent velocity increases. + - Don't use airstopper when equipped from the ground (descent velocity is low). + - Slightly increase flight speed to 1.25. + +- Unequip/equip cycling mid-flight should not fly farther than continuous flight. + - When equipping mid-air (descent velocity higher), use airstopper but increase descent slope afterwards. + - Create airbreak flag so all equips mid-flight use faster descent. + - Reset airbreak flag only when land (canExist goes false). + - Issue: it wouldn't reset if land in water, use fly, and launch from air, before I added test for water, + - Not sure if there are other such cases. + +- Did another round of parameter tuning. + - Commented out hud debug display code with prefix "--debug:". + +- For Minetest 5.x the glider's set_attach point needs to be offset by 1 node. + - Provided alternate commented out version of this line that has the correct offset. + +- Discovered that sprint mod interferes with this mod's speed settings. + - It's likely that other mods that affect player_physics will have this same problem. + - May need to consider adding player_monoid support to this mod. diff --git a/depends.txt b/depends.txt index be420a3..f3e3b6d 100755 --- a/depends.txt +++ b/depends.txt @@ -1,2 +1,3 @@ default -wool \ No newline at end of file +wool +minetest_systemd? \ No newline at end of file diff --git a/init.lua b/init.lua index c694f0e..b246906 100644 --- a/init.lua +++ b/init.lua @@ -41,6 +41,10 @@ local HUD_Overlay = true --show glider struts as overlay on HUD local debug = false --show debug info in top-center of hud +local moveModelUp = false +if tonumber(string.sub(minetest.get_version().string, 1, 1)) and tonumber(string.sub(minetest.get_version().string, 1, 1)) > 4 then + moveModelUp = true +end hangglider = {} --Make this global, so other mods can tell if hangglider exists. hangglider.use = {} if HUD_Overlay then @@ -64,13 +68,17 @@ minetest.register_entity("hangglider:airstopper", { --A one-instant entity that if player:get_player_velocity().y < 0.5 and player:get_player_velocity().y > -0.5 then --Let go when the player actually stops, as that's the whole point. if hangglider.use[pname] then - minetest.add_entity(player:get_pos(), "hangglider:glider"):set_attach(player, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + if moveModelUp then + minetest.add_entity(player:get_pos(), "hangglider:glider"):set_attach(player, "", {x=0,y=10,z=0}, {x=0,y=0,z=0}) + else + minetest.add_entity(player:get_pos(), "hangglider:glider"):set_attach(player, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + end end canExist = false end end if not canExist then - self.attach:set_detach() + player:set_detach() end end if not canExist then @@ -79,6 +87,22 @@ minetest.register_entity("hangglider:airstopper", { --A one-instant entity that end }) +if minetestd and minetestd.services.gravityctl.enabled then +minetestd.gravityctl.register_gravity_effect("hangglider", + function(player) + return hangglider.use[player:get_player_name()] + end, + function(gravity, player) + local vel = player:get_player_velocity() + if debug then player:hud_change(hangglider.debug[pname].id, "text", vel.y..', '..player:get_physics_override().gravity..', '..tostring(hangglider.airbreak[pname])) end + return ((vel.y + 3)/20) + end, + 7, + 1000 +) +end + +local step_v minetest.register_entity("hangglider:glider", { visual = "mesh", visual_size = {x = 12, y = 12}, @@ -98,19 +122,31 @@ minetest.register_entity("hangglider:glider", { if mrn_name then if not (mrn_name.walkable or (mrn_name.drowning and mrn_name.drowning == 1)) then canExist = true - local vel = player:get_player_velocity() + step_v = player:get_player_velocity().y + if step_v < 0 then + player:set_physics_override({speed=math.abs(step_v/2) + 0.75}) + else + player:set_physics_override({speed=1}) + end + if not minetestd then + if debug then player:hud_change(hangglider.debug[pname].id, "text", step_v..', '..player:get_physics_override().gravity..', '..tostring(hangglider.airbreak[pname])) end + player:set_physics_override({gravity=((step_v + 3)/20)}) + end + --[[local vel = player:get_player_velocity() if debug then player:hud_change(hangglider.debug[pname].id, "text", vel.y..', '..grav..', '..tostring(hangglider.airbreak[pname])) end player:set_physics_override({gravity = (vel.y + 2.0)/20}) - end + ]]end end end if not canExist then player:set_physics_override({ - gravity = 1, jump = 1, speed = 1, }) + if not minetestd then + player:set_physics_override({gravity=1}) + end hangglider.use[pname] = false if HUD_Overlay then player:hud_change(hangglider.id[pname], "text", "blank.png") @@ -174,38 +210,44 @@ minetest.register_tool("hangglider:hangglider", { description = "Glider", inventory_image = "glider_item.png", stack_max=1, - on_use = function(itemstack, user, pointed_thing) - if not user then + on_use = function(itemstack, player, pointed_thing) + if not player then return end - local pos = user:get_pos() - local pname = user:get_player_name() + local pos = player:get_pos() + local pname = player:get_player_name() if minetest.get_node(pos).name == "air" and not hangglider.use[pname] then --Equip minetest.sound_play("bedsheet", {pos=pos, max_hear_distance = 8, gain = 1.0}) - if HUD_Overlay then user:hud_change(hangglider.id[pname], "text", "glider_struts.png") end + if HUD_Overlay then player:hud_change(hangglider.id[pname], "text", "glider_struts.png") end local airbreak = false - local vel = user:get_player_velocity().y + local vel = player:get_player_velocity().y if vel < -1.5 then -- engage mid-air, falling fast, so stop but ramp velocity more quickly --hangglider.airbreak[pname] = true airbreak = true local stopper = minetest.add_entity(pos, "hangglider:airstopper") - stopper:get_luaentity().attach = user - user:set_attach( stopper, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + minetest.after(0, function(stopper, player) --"Extreme Measures" + stopper:set_pos(player:get_pos()) + stopper:get_luaentity().attach = player + player:set_attach( stopper, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + end, stopper, player) end - user:set_physics_override({gravity = 0,jump=0,speed=1.75}) if not airbreak then - - minetest.add_entity(user:get_pos(), "hangglider:glider"):set_attach(user, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + if moveModelUp then + minetest.add_entity(pos, "hangglider:glider"):set_attach(player, "", {x=0,y=10,z=0}, {x=0,y=0,z=0}) + else + minetest.add_entity(pos, "hangglider:glider"):set_attach(player, "", {x=0,y=0,z=0}, {x=0,y=0,z=0}) + end end hangglider.use[pname] = true + player:set_physics_override({jump = 0}) -- if minetest 0.4.x use this: -- if minetest 5.x use this: - -- minetest.add_entity(user:get_pos(), "hangglider:glider"):set_attach(user, "", {x=0,y=10,z=0}, {x=0,y=0,z=0}) + -- minetest.add_entity(player:get_pos(), "hangglider:glider"):set_attach(player, "", {x=0,y=10,z=0}, {x=0,y=0,z=0}) itemstack:set_wear(itemstack:get_wear() + 255) return itemstack elseif hangglider.use[pname] then --Unequip - if HUD_Overlay then user:hud_change(hangglider.id[pname], "text", "blank.png") end + if HUD_Overlay then player:hud_change(hangglider.id[pname], "text", "default_wood.png^[colorize:#0000:255") end hangglider.use[pname] = false end end, @@ -225,4 +267,4 @@ minetest.register_craft({ {"default:stick", "", "default:stick"}, {"", "default:stick", ""}, } -}) +}) \ No newline at end of file diff --git a/textures/blank.png b/textures/blank.png deleted file mode 100644 index de728ad036ea83ce41243a45d4229d866171ae6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 zcmeAS@N?(olHy`uVBq!ia0y~yU~gbxV6os}0g5=?;yeMQn3BBRT^Rni_n+Ah4nJa0`PlBg3pY5H=O_D7uTBGO!;!O16qLb9155hc#~xw)x%B|t6%gL6@8 zVo7R>LV0FMhJw4NZ$OG(Dmw!M|0z!w$B+ufw+9UwfvOHE{9Yc%%bx(!F$zXQU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1O{CQ6zKTBWMEX|Q!fNL&C}J-Wt~$( F698ayDun<5 diff --git a/textures/glider_struts.png~ b/textures/glider_struts.png~ deleted file mode 100644 index 55dd0d281d4f4b53f10c9e42314aa09c1aede16b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32906 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