mirror of
https://github.com/APercy/airutils.git
synced 2025-03-15 08:01:22 +00:00
improved passengers rescue
This commit is contained in:
parent
e05d1c52d5
commit
315de219b1
2 changed files with 60 additions and 4 deletions
|
@ -323,10 +323,9 @@ function airutils.logic(self)
|
||||||
local is_attached = airutils.checkAttach(self, player)
|
local is_attached = airutils.checkAttach(self, player)
|
||||||
if self._indicated_speed == nil then self._indicated_speed = 0 end
|
if self._indicated_speed == nil then self._indicated_speed = 0 end
|
||||||
|
|
||||||
if not is_attached and not self._autoflymode == true then
|
-- for some engine error the player can be detached from the machine, so lets set him attached again
|
||||||
-- for some engine error the player can be detached from the machine, so lets set him attached again
|
airutils.checkattachBug(self)
|
||||||
airutils.checkattachBug(self)
|
|
||||||
end
|
|
||||||
|
|
||||||
if self._custom_step_additional_function then
|
if self._custom_step_additional_function then
|
||||||
self._custom_step_additional_function(self)
|
self._custom_step_additional_function(self)
|
||||||
|
|
|
@ -595,6 +595,62 @@ function airutils.rescueConnectionFailedPassengers(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
function airutils.checkattachBug(self)
|
function airutils.checkattachBug(self)
|
||||||
|
-- for some engine error the player can be detached from the submarine, so lets set him attached again
|
||||||
|
--[[local have_driver = (self.driver_name ~= nil)
|
||||||
|
if have_driver then
|
||||||
|
local max_seats = table.getn(self._passengers_base)
|
||||||
|
for i = max_seats,1,-1 do
|
||||||
|
if self._passengers[i] then
|
||||||
|
local player = minetest.get_player_by_name(self._passengers[i])
|
||||||
|
if player then
|
||||||
|
--we have a player!
|
||||||
|
if player:get_attach() == nil then
|
||||||
|
if self._passengers[i] == self.driver_name then
|
||||||
|
--attach the driver again
|
||||||
|
if player:get_hp() > 0 then
|
||||||
|
self._passengers[i] = nil --clear the slot first
|
||||||
|
airutils.attach(self, player, self._instruction_mode)
|
||||||
|
else
|
||||||
|
--he is dead, so good bye!
|
||||||
|
airutils.dettachPlayer(self, player)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--normal player
|
||||||
|
if player:get_hp() > 0 then
|
||||||
|
self._passengers[i] = nil --clear the slot first
|
||||||
|
do_attach(self, player, i) --attach
|
||||||
|
else
|
||||||
|
--let the work for the gravity
|
||||||
|
self._passengers[i] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--the player is gone
|
||||||
|
if self._passengers[i] == self.driver_name then
|
||||||
|
--oh nooo! The pilot is gone!
|
||||||
|
self.driver_name = nil
|
||||||
|
self._autopilot = false
|
||||||
|
airutils.transfer_control(self, true)
|
||||||
|
else
|
||||||
|
--no player, so clean it
|
||||||
|
self._passengers[i] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end ---end for
|
||||||
|
end]]--
|
||||||
|
|
||||||
|
local max_seats = table.getn(self._passengers_base)
|
||||||
|
for i = max_seats,1,-1 do
|
||||||
|
if self._passengers[i] then
|
||||||
|
local player = minetest.get_player_by_name(self._passengers[i])
|
||||||
|
if not player:get_attach() then
|
||||||
|
do_attach(self, player, i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- for some engine error the player can be detached from the submarine, so lets set him attached again
|
-- for some engine error the player can be detached from the submarine, so lets set him attached again
|
||||||
local have_driver = (self.driver_name ~= nil)
|
local have_driver = (self.driver_name ~= nil)
|
||||||
if have_driver then
|
if have_driver then
|
||||||
|
@ -621,6 +677,7 @@ function airutils.checkattachBug(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function airutils.engineSoundPlay(self)
|
function airutils.engineSoundPlay(self)
|
||||||
|
|
Loading…
Add table
Reference in a new issue