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)
end
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)
end
end
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()
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
player_stamina = math.min(20, player_stamina + standing)
player_stamina = math.min(max_stamina, player_stamina + standing)
else
player_stamina = math.min(20, player_stamina + stamina_heal)
player_stamina = math.min(max_stamina, player_stamina + stamina_heal)
end
player:get_meta():set_float("hbsprint:stamina", player_stamina)
end
if mod_hudbars then
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
@ -130,8 +133,8 @@ local function is_walkable(ground)
end
local function create_particles(player, name, ground)
local def = minetest.registered_nodes[ground.name]
local tile = def.tiles[1] or def.inventory_image
local def = minetest.registered_nodes[ground.name] or {}
local tile = def.tiles and def.tiles[1] or def.inventory_image
if type(tile) == "table" then
tile = tile.name
end
@ -182,16 +185,15 @@ end)
local function sprint_step(player, dtime)
local name = player:get_player_name()
local fast = minetest.get_player_privs(name).fast
if minetest.get_player_privs(name).fast then
return
end
if stamina then
stamina_timer[name] = (stamina_timer[name] or 0) + dtime
end
if breath then
breath_timer[name] = (breath_timer[name] or 0) + dtime
if not fast then
if stamina then
stamina_timer[name] = (stamina_timer[name] or 0) + dtime
end
if breath then
breath_timer[name] = (breath_timer[name] or 0) + dtime
end
end
local ctrl = player:get_player_control()
@ -204,7 +206,7 @@ local function sprint_step(player, dtime)
if not key_press then
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)
stamina_timer[name] = 0
end
@ -235,15 +237,15 @@ local function sprint_step(player, dtime)
hunger = hunger_ng.get_hunger_information(name).hunger.exact
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)
if stamina then drain_stamina(player) end
if starve then drain_hunger(player, name) end
if breath and breath_timer[name] >= 2 then
if stamina and not fast then drain_stamina(player) end
if starve and not fast then drain_hunger(player, name) end
if breath and not fast and breath_timer[name] >= 2 then
drain_breath(player)
breath_timer[name] = 0
end
if particles then
if particles and ground then
create_particles(player, name, ground)
end
else