Skip to content

Commit

Permalink
Better settingtype handling, new option to skip ground check
Browse files Browse the repository at this point in the history
  • Loading branch information
test committed Sep 20, 2019
1 parent faacc4b commit a8a18fc
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 20 deletions.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,9 @@ Amount of stamina below which you can't start running
sprint_lite_spawn_particles = true
Spawn particles under sprinting players
sprint_lite_require_ground = false
Require ground to run
```

## Integration with other mods
Expand Down
50 changes: 30 additions & 20 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ sprint_lite = {}
local player_info = {}

--Get settingtypes
local max_stamina = minetest.settings:get("sprint_lite_max_stamina") or 20
local speed_multiplier = minetest.settings:get("sprint_lite_speed_multiplier") or 1.75
local jump_multiplier = minetest.settings:get("sprint_lite_jump_multiplier") or 1.25
local step_interval = minetest.settings:get("sprint_lite_step_interval") or 0.15
local drain_hunger = minetest.settings:get("sprint_lite_drain_hunger") ~= false
local drain_hunger_amount = minetest.settings:get("sprint_lite_hunger_amount") or 0.03
local stamina_drain = minetest.settings:get("sprint_lite_stamina_drain") or 0.5
local stamina_regen = minetest.settings:get("sprint_lite_stamina_regen") or 0.1
local stamina_threshold = minetest.settings:get("sprint_lite_stamina_threshold") or 8
local spawn_particles = minetest.settings:get("sprint_lite_spawn_particles") ~= false
local respawn_stamina = minetest.settings:get("sprint_lite_respawn_stamina") or max_stamina/4
local max_stamina = tonumber(minetest.settings:get("sprint_lite_max_stamina")) or 20
local speed_multiplier = tonumber(minetest.settings:get("sprint_lite_speed_multiplier")) or 1.75
local jump_multiplier = tonumber(minetest.settings:get("sprint_lite_jump_multiplier")) or 1.25
local step_interval = tonumber(minetest.settings:get("sprint_lite_step_interval")) or 0.15
local drain_hunger = minetest.settings:get_bool("sprint_lite_drain_hunger", false)
local drain_hunger_amount = tonumber(minetest.settings:get("sprint_lite_hunger_amount")) or 0.03
local stamina_drain = tonumber(minetest.settings:get("sprint_lite_stamina_drain")) or 0.5
local stamina_regen = tonumber(minetest.settings:get("sprint_lite_stamina_regen")) or 0.1
local stamina_threshold = tonumber(minetest.settings:get("sprint_lite_stamina_threshold")) or 8
local spawn_particles = minetest.settings:get_bool("sprint_lite_spawn_particles", true)
local respawn_stamina = tonumber(minetest.settings:get("sprint_lite_respawn_stamina")) or max_stamina/4
local require_ground = minetest.settings:get_bool("sprint_lite_require_ground", false)
local hudbars_enabled = false

--API functions
Expand Down Expand Up @@ -105,14 +106,16 @@ minetest.register_globalstep(function(dtime)
local keys = playerstats.ref:get_player_control()
local node = minetest.get_node_or_nil({x = pos.x, y = pos.y - 0.5, z = pos.z})

if node and (minetest.registered_nodes[node.name].walkable or minetest.registered_nodes[node.name].liquidtype ~= "none") then
if node and minetest.registered_nodes[node.name] and
(minetest.registered_nodes[node.name].walkable or minetest.registered_nodes[node.name].liquidtype ~= "none") then
playerstats.grounded = true
else
playerstats.grounded = false
end

print(require_ground, playerstats.grounded, not require_ground)
if keys.aux1 and keys.up and not keys.left and not keys.right and not keys.down and not keys.sneak then
if playerstats.grounded and
if ((require_ground and playerstats.grounded) or not require_ground) and
((not playerstats.sprinting and playerstats.stamina > stamina_threshold) or (playerstats.sprinting and playerstats.stamina > 0)) and
playerstats.ref:get_hp() > 0 then
if not playerstats.sprinting then
Expand Down Expand Up @@ -147,15 +150,22 @@ minetest.register_globalstep(function(dtime)
end

if spawn_particles then
local texture = minetest.registered_nodes[node.name].tiles[1]
if not texture or texture and type(texture) ~= "string" then
texture = "tnt_smoke.png"
end
local glow = minetest.registered_nodes[node.name].light_source or 0

local texture = "tnt_smoke.png"
local glow = 0
local acceleration = {x = 0, y = -9.8, z = 0}
if minetest.registered_nodes[node.name].liquidtype ~= "none" then
acceleration = {x = 0, y = 0, z = 0}

if playerstats.grounded and minetest.registered_nodes[node.name] then
if minetest.registered_nodes[node.name].tiles and
type(minetest.registered_nodes[node.name].tiles[1]) == "string" then
texture = minetest.registered_nodes[node.name].tiles[1]
end
if minetest.registered_nodes[node.name].liquidtype ~= "none" then
acceleration = {x = 0, y = 0, z = 0}
end
glow = minetest.registered_nodes[node.name].light_source or 0
end

minetest.add_particlespawner({
amount = math.random(4, 8),
time = 0.05,
Expand Down
1 change: 1 addition & 0 deletions settingtypes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@ sprint_lite_stamina_regen (Amount of stamina to regenerate per step, when not ru
sprint_lite_stamina_threshold (Amount of stamina below which you can't start running) float 8
sprint_lite_spawn_particles (Spawn particles under sprinting players) bool true
sprint_lite_respawn_stamina (Amount of stamina players have when they respawn) float 5.0
sprint_lite_require_ground (Require ground to run) bool false

0 comments on commit a8a18fc

Please sign in to comment.