4 Commits

Author SHA1 Message Date
92a1e0cddb Add LuaCheck and GitHub workflow (#32) 2023-01-15 14:17:54 +01:00
f566d0ff26 Use inventory_image for nodes without tiles for particles 2021-02-18 19:05:12 +01:00
1fe580a210 Don't drain hunger for players with fast privilege (#29) 2020-10-16 19:53:15 +02:00
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 46 additions and 17 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

@ -130,8 +130,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,17 +182,16 @@ 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
end
if stamina then if stamina then
stamina_timer[name] = (stamina_timer[name] or 0) + dtime stamina_timer[name] = (stamina_timer[name] or 0) + dtime
end end
if breath then if breath then
breath_timer[name] = (breath_timer[name] or 0) + dtime breath_timer[name] = (breath_timer[name] or 0) + dtime
end end
end
local ctrl = player:get_player_control() local ctrl = player:get_player_control()
local key_press local key_press
@ -204,7 +203,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 +234,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