summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-02-12 20:02:32 -0600
committerthe lemons <citrons@mondecitronne.com>2022-02-12 20:02:32 -0600
commitbbd687ab8eb1d19177bcd2e46beb9cc1449bd03e (patch)
tree9e9c4738809d4c6ac2b40c43954536185dfc14d6
parentd742d5dfbdff8fc631dd237e40c0904ba12fd0c3 (diff)
parentc1a6df8b5ba5b5e472f0a6895180c726f271730c (diff)
Merge branch 'master' of citrons.xyz:vzxv
-rw-r--r--mods/vzxv_gravity/init.lua33
-rw-r--r--mods/vzxv_gravity/mod.conf3
2 files changed, 36 insertions, 0 deletions
diff --git a/mods/vzxv_gravity/init.lua b/mods/vzxv_gravity/init.lua
new file mode 100644
index 0000000..581a677
--- /dev/null
+++ b/mods/vzxv_gravity/init.lua
@@ -0,0 +1,33 @@
+local gravity_objects = {}
+
+local e = 2.718
+
+local function gravity(ylevel)
+ return 2 / (1+(e ^ (ylevel/6000)))
+end
+
+local gravmul = -9.81
+
+local gravfunc = function(e)
+ local pos = e:get_pos()
+ local grav = gravity(pos.y+30000) * gravmul
+ e:set_acceleration({x=0,y=grav,z=0})
+end
+
+function vzxv.register_gravity(entity)
+ local entdef = minetest.registered_entities[entity]
+ local old_onstep = entdef.on_step or function() end
+ entdef.on_step = function(self,dtime,moveresult)
+ gravfunc(self)
+ return old_onstep(self,dtime,moveresult)
+ end
+end
+
+minetest.register_globalstep(function()
+ local players = minetest.get_connected_players()
+ for _,player in ipairs(players) do
+ player:set_physics_override({
+ gravity = gravity(player:get_pos().y)
+ })
+ end
+end) \ No newline at end of file
diff --git a/mods/vzxv_gravity/mod.conf b/mods/vzxv_gravity/mod.conf
new file mode 100644
index 0000000..e51b4df
--- /dev/null
+++ b/mods/vzxv_gravity/mod.conf
@@ -0,0 +1,3 @@
+name=vzxv_gravity
+description = Vzxv
+depends = vzxv \ No newline at end of file