mirror of
https://github.com/APercy/airutils.git
synced 2025-03-21 18:41:21 +00:00
added smoke by damage
This commit is contained in:
parent
5ae1a76779
commit
0963a3dc1a
2 changed files with 68 additions and 4 deletions
|
@ -274,6 +274,28 @@ function airutils.logic(self)
|
||||||
airutils.landing_lights_operate(self)
|
airutils.landing_lights_operate(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--smoke and fire
|
||||||
|
if self._engine_running then
|
||||||
|
local curr_health_percent = (self.hp_max * 100)/self._max_plane_hp
|
||||||
|
if curr_health_percent < 20 then
|
||||||
|
airutils.add_smoke_trail(self, 2)
|
||||||
|
elseif curr_health_percent < 50 then
|
||||||
|
airutils.add_smoke_trail(self, 1)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if self._smoke_spawner and not self._smoke_semaphore then
|
||||||
|
self._smoke_semaphore = 1 --to set it only one time
|
||||||
|
minetest.after(5, function()
|
||||||
|
if self._smoke_spawner then
|
||||||
|
minetest.delete_particlespawner(self._smoke_spawner)
|
||||||
|
self._smoke_spawner = nil
|
||||||
|
self._smoke_semaphore = nil
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if longit_speed == 0 and is_flying == false and is_attached == false and self._engine_running == false then
|
if longit_speed == 0 and is_flying == false and is_attached == false and self._engine_running == false then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -477,8 +499,6 @@ function airutils.logic(self)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- end accell
|
-- end accell
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
|
@ -487,6 +507,7 @@ function airutils.logic(self)
|
||||||
-- sound and animation
|
-- sound and animation
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
airutils.engine_set_sound_and_animation(self)
|
airutils.engine_set_sound_and_animation(self)
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
|
|
||||||
--self.object:get_luaentity() --hack way to fix jitter on climb
|
--self.object:get_luaentity() --hack way to fix jitter on climb
|
||||||
|
|
|
@ -689,6 +689,42 @@ function airutils.pid_controller(current_value, setpoint, last_error, d_time, kp
|
||||||
return output, last_error
|
return output, last_error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function airutils.add_smoke_trail(self, smoke_type)
|
||||||
|
smoke_type = smoke_type or 1
|
||||||
|
local smoke_texture = "airutils_smoke.png"
|
||||||
|
if smoke_type == 2 then
|
||||||
|
smoke_texture = "airutils_smoke.png^[multiply:#020202"
|
||||||
|
end
|
||||||
|
|
||||||
|
if self._curr_smoke_type ~= smoke_type then
|
||||||
|
self._curr_smoke_type = smoke_type
|
||||||
|
if self._smoke_spawner then
|
||||||
|
minetest.delete_particlespawner(self._smoke_spawner)
|
||||||
|
self._smoke_spawner = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if self._smoke_spawner == nil then
|
||||||
|
local radius = 1
|
||||||
|
self._smoke_spawner = minetest.add_particlespawner({
|
||||||
|
amount = 3,
|
||||||
|
time = 0,
|
||||||
|
--minpos = vector.subtract(pos, radius / 2),
|
||||||
|
--maxpos = vector.add(pos, radius / 2),
|
||||||
|
minvel = {x = -1, y = -1, z = -1},
|
||||||
|
maxvel = {x = 1, y = 5, z = 1},
|
||||||
|
minacc = vector.new(),
|
||||||
|
maxacc = vector.new(),
|
||||||
|
attached = self.object,
|
||||||
|
minexptime = 3,
|
||||||
|
maxexptime = 5.5,
|
||||||
|
minsize = 10,
|
||||||
|
maxsize = 15,
|
||||||
|
texture = smoke_texture,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function airutils.add_destruction_effects(pos, radius, w_fire)
|
function airutils.add_destruction_effects(pos, radius, w_fire)
|
||||||
if pos == nil then return end
|
if pos == nil then return end
|
||||||
w_fire = w_fire
|
w_fire = w_fire
|
||||||
|
@ -801,8 +837,15 @@ function airutils.start_engine(self)
|
||||||
self._power_lever = 0 --zero power
|
self._power_lever = 0 --zero power
|
||||||
self._last_applied_power = 0 --zero engine
|
self._last_applied_power = 0 --zero engine
|
||||||
elseif self._engine_running == false and self._energy > 0 then
|
elseif self._engine_running == false and self._energy > 0 then
|
||||||
self._engine_running = true
|
local curr_health_percent = (self.hp_max * 100)/self._max_plane_hp
|
||||||
self._last_applied_power = -1 --send signal to start
|
if curr_health_percent > 20 then
|
||||||
|
self._engine_running = true
|
||||||
|
self._last_applied_power = -1 --send signal to start
|
||||||
|
else
|
||||||
|
if self.driver_name then
|
||||||
|
minetest.chat_send_player(self.driver_name,core.colorize('#ff0000', " >>> The engine is damaged, start procedure failed."))
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue