Compare commits

...

9 Commits

Author SHA1 Message Date
bri cassa b9cb4871a8 Merge remote-tracking branch 'upstream/master' 2023-06-05 23:58:51 +02:00
David Leal 92a1e0cddb
Add LuaCheck and GitHub workflow (#32) 2023-01-15 14:17:54 +01:00
Sys Quatre b8943369c6 Merge remote-tracking branch 'upstream/master' 2021-02-23 21:15:44 +01:00
SmallJoker f566d0ff26 Use inventory_image for nodes without tiles for particles 2021-02-18 19:05:12 +01:00
Sys Quatre 7b8b37a061 Merge remote-tracking branch 'upstream/master' 2020-10-17 13:38:22 +02:00
auouymous 1fe580a210
Don't drain hunger for players with fast privilege (#29) 2020-10-16 19:53:15 +02:00
Sys Quatre dc766c1336 Fix hbsprint behaviour with max value greater than 20 2020-10-16 00:10:14 +02:00
Sys Quatre b3773c0470 Merge remote-tracking branch 'upstream/master' 2020-09-15 00:28:19 +02:00
auouymous 899d246832 Fix sprinting for players with the fast and fly privileges.
Sprinting didn't work when a player has fast but it was turned off. With
fly, fast was always enabled and sprinting didn't make them any faster,
now it does.
2020-09-13 13:08:23 +02:00
3 changed files with 55 additions and 23 deletions

11
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,11 @@
on: [push, pull_request]
name: build
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: lint
uses: Roang-zero1/factorio-mod-luacheck@master
with:
luacheckrc_url: ""

19
.luacheckrc Normal file
View File

@ -0,0 +1,19 @@
allow_defined_top = true
unused_args = false
max_line_length = false
read_globals = {
string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn"}},
"player_monoids",
"playerphysics",
"hb",
"vector",
"hunger_ng",
}
globals = {
"minetest",
"hbhunger"
}

View File

@ -84,25 +84,28 @@ local function drain_stamina(player)
player:get_meta():set_float("hbsprint:stamina", player_stamina) player:get_meta():set_float("hbsprint:stamina", player_stamina)
end end
if mod_hudbars then if mod_hudbars then
if autohide and player_stamina < 20 then hb.unhide_hudbar(player, "stamina") end if autohide and
player_stamina < hb.get_hudtable("stamina").hudstate[player:get_player_name()].max
then hb.unhide_hudbar(player, "stamina") end
hb.change_hudbar(player, "stamina", player_stamina) hb.change_hudbar(player, "stamina", player_stamina)
end end
end end
local function replenish_stamina(player) local function replenish_stamina(player)
local player_stamina = player:get_meta():get_float("hbsprint:stamina") local player_stamina = player:get_meta():get_float("hbsprint:stamina")
local max_stamina = hb.get_hudtable("stamina").hudstate[player:get_player_name()].max
local ctrl = player:get_player_control() local ctrl = player:get_player_control()
if player_stamina < 20 and not ctrl.jump then if player_stamina < max_stamina and not ctrl.jump then
if not ctrl.right and not ctrl.left and not ctrl.down and not ctrl.up and not ctrl.LMB and not ctrl.RMB then if not ctrl.right and not ctrl.left and not ctrl.down and not ctrl.up and not ctrl.LMB and not ctrl.RMB then
player_stamina = math.min(20, player_stamina + standing) player_stamina = math.min(max_stamina, player_stamina + standing)
else else
player_stamina = math.min(20, player_stamina + stamina_heal) player_stamina = math.min(max_stamina, player_stamina + stamina_heal)
end end
player:get_meta():set_float("hbsprint:stamina", player_stamina) player:get_meta():set_float("hbsprint:stamina", player_stamina)
end end
if mod_hudbars then if mod_hudbars then
hb.change_hudbar(player, "stamina", player_stamina) hb.change_hudbar(player, "stamina", player_stamina)
if autohide and player_stamina >= 20 then hb.hide_hudbar(player, "stamina") end if autohide and player_stamina >= max_stamina then hb.hide_hudbar(player, "stamina") end
end end
end end
@ -130,8 +133,8 @@ local function is_walkable(ground)
end end
local function create_particles(player, name, ground) local function create_particles(player, name, ground)
local def = minetest.registered_nodes[ground.name] local def = minetest.registered_nodes[ground.name] or {}
local tile = def.tiles[1] or def.inventory_image local tile = def.tiles and def.tiles[1] or def.inventory_image
if type(tile) == "table" then if type(tile) == "table" then
tile = tile.name tile = tile.name
end end
@ -182,16 +185,15 @@ end)
local function sprint_step(player, dtime) local function sprint_step(player, dtime)
local name = player:get_player_name() local name = player:get_player_name()
local fast = minetest.get_player_privs(name).fast
if minetest.get_player_privs(name).fast then if not fast then
return if stamina then
end stamina_timer[name] = (stamina_timer[name] or 0) + dtime
end
if stamina then if breath then
stamina_timer[name] = (stamina_timer[name] or 0) + dtime breath_timer[name] = (breath_timer[name] or 0) + dtime
end end
if breath then
breath_timer[name] = (breath_timer[name] or 0) + dtime
end end
local ctrl = player:get_player_control() local ctrl = player:get_player_control()
@ -204,7 +206,7 @@ local function sprint_step(player, dtime)
if not key_press then if not key_press then
stop_sprint(player) stop_sprint(player)
if stamina and stamina_timer[name] >= replenish then if stamina and not fast and stamina_timer[name] >= replenish then
replenish_stamina(player) replenish_stamina(player)
stamina_timer[name] = 0 stamina_timer[name] = 0
end end
@ -235,15 +237,15 @@ local function sprint_step(player, dtime)
hunger = hunger_ng.get_hunger_information(name).hunger.exact hunger = hunger_ng.get_hunger_information(name).hunger.exact
end end
if player_stamina > 0 and hunger > starve_limit and ground then if (player_stamina > 0 and hunger > starve_limit and ground) or fast then
start_sprint(player) start_sprint(player)
if stamina then drain_stamina(player) end if stamina and not fast then drain_stamina(player) end
if starve then drain_hunger(player, name) end if starve and not fast then drain_hunger(player, name) end
if breath and breath_timer[name] >= 2 then if breath and not fast and breath_timer[name] >= 2 then
drain_breath(player) drain_breath(player)
breath_timer[name] = 0 breath_timer[name] = 0
end end
if particles then if particles and ground then
create_particles(player, name, ground) create_particles(player, name, ground)
end end
else else