mirror of
https://github.com/APercy/automobiles_pck
synced 2025-06-16 13:58:01 +02:00
71 lines
2.7 KiB
Lua
Executable File
71 lines
2.7 KiB
Lua
Executable File
--dofile(minetest.get_modpath("automobiles_vespa") .. DIR_DELIM .. "vespa_global_definitions.lua")
|
|
--dofile(minetest.get_modpath("automobiles_vespa") .. DIR_DELIM .. "vespa_hud.lua")
|
|
|
|
-- destroy the vespa
|
|
function vespa.destroy(self, puncher)
|
|
automobiles_lib.remove_light(self)
|
|
if self.sound_handle then
|
|
minetest.sound_stop(self.sound_handle)
|
|
self.sound_handle = nil
|
|
end
|
|
|
|
if self.driver_name then
|
|
-- detach the driver first (puncher must be driver)
|
|
if puncher then
|
|
puncher:set_detach()
|
|
puncher:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
|
if minetest.global_exists("player_api") then
|
|
player_api.player_attached[self.driver_name] = nil
|
|
-- player should stand again
|
|
player_api.set_animation(puncher, "stand")
|
|
end
|
|
end
|
|
self.driver_name = nil
|
|
end
|
|
|
|
local pos = self.object:get_pos()
|
|
|
|
if self.driver_seat then self.driver_seat:remove() end
|
|
if self.passenger_seat then self.passenger_seat:remove() end
|
|
if self.lights then self.lights:remove() end
|
|
if self.rlights then self.rlights:remove() end
|
|
if self.driver_mesh then self.driver_mesh:remove() end
|
|
if self.pax_mesh then self.pax_mesh:remove() end
|
|
|
|
automobiles_lib.destroy_inventory(self)
|
|
|
|
pos.y=pos.y+2
|
|
|
|
if automobiles_lib.can_collect_car == false then
|
|
--minetest.add_item({x=pos.x+math.random()-0.5,y=pos.y,z=pos.z+math.random()-0.5},'automobiles_vespa:vespa')
|
|
minetest.add_item({x=pos.x+math.random()-0.5,y=pos.y,z=pos.z+math.random()-0.5},'automobiles_lib:engine')
|
|
minetest.add_item({x=pos.x+math.random()-0.5,y=pos.y,z=pos.z+math.random()-0.5},'automobiles_vespa:wheel')
|
|
minetest.add_item({x=pos.x+math.random()-0.5,y=pos.y,z=pos.z+math.random()-0.5},'automobiles_vespa:wheel')
|
|
else
|
|
local lua_ent = self.object:get_luaentity()
|
|
local staticdata = lua_ent:get_staticdata(self)
|
|
local obj_name = lua_ent.name
|
|
local player = puncher
|
|
|
|
local stack = ItemStack(obj_name)
|
|
local stack_meta = stack:get_meta()
|
|
stack_meta:set_string("staticdata", staticdata)
|
|
|
|
if player then
|
|
local inv = player:get_inventory()
|
|
if inv then
|
|
if inv:room_for_item("main", stack) then
|
|
inv:add_item("main", stack)
|
|
else
|
|
minetest.add_item({x=pos.x+math.random()-0.5,y=pos.y,z=pos.z+math.random()-0.5}, stack)
|
|
end
|
|
end
|
|
else
|
|
minetest.add_item({x=pos.x+math.random()-0.5,y=pos.y,z=pos.z+math.random()-0.5}, stack)
|
|
end
|
|
end
|
|
|
|
self.object:remove()
|
|
end
|
|
|