diff options
Diffstat (limited to 'advtrains/advtrains_train_steam')
18 files changed, 256 insertions, 0 deletions
diff --git a/advtrains/advtrains_train_steam/depends.txt b/advtrains/advtrains_train_steam/depends.txt new file mode 100755 index 0000000..0492ba2 --- /dev/null +++ b/advtrains/advtrains_train_steam/depends.txt @@ -0,0 +1,3 @@ +advtrains +advtrains_train_track +intllib? diff --git a/advtrains/advtrains_train_steam/init.lua b/advtrains/advtrains_train_steam/init.lua new file mode 100755 index 0000000..057ad8f --- /dev/null +++ b/advtrains/advtrains_train_steam/init.lua @@ -0,0 +1,253 @@ +local S = attrans + +-- length of the steam engine loop sound +local SND_LOOP_LEN = 5 + +advtrains.register_wagon("newlocomotive", { + mesh="advtrains_engine_steam.b3d", + textures = {"advtrains_engine_steam.png"}, + is_locomotive=true, + drives_on={default=true}, + max_speed=10, + seats = { + { + name=S("Driver Stand (left)"), + attach_offset={x=-5, y=0, z=-10}, + view_offset={x=0, y=6, z=0}, + group = "dstand", + }, + { + name=S("Driver Stand (right)"), + attach_offset={x=5, y=0, z=-10}, + view_offset={x=0, y=6, z=0}, + group = "dstand", + }, + }, + seat_groups = { + dstand={ + name = "Driver Stand", + driving_ctrl_access=true, + access_to = {}, + }, + }, + assign_to_seat_group = {"dstand"}, + visual_size = {x=1, y=1}, + wagon_span=2.3, + collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, + custom_on_velocity_change=function(self, velocity) + if self.old_anim_velocity~=advtrains.abs_ceil(velocity) then + self.object:set_animation({x=1,y=80}, advtrains.abs_ceil(velocity)*15, 0, true) + self.old_anim_velocity=advtrains.abs_ceil(velocity) + end + end, + + custom_on_activate = function(self, staticdata_table, dtime_s) + minetest.add_particlespawner({ + amount = 10, + time = 0, + -- ^ If time is 0 has infinite lifespan and spawns the amount on a per-second base + minpos = {x=0, y=2, z=1.2}, + maxpos = {x=0, y=2, z=1.2}, + minvel = {x=-0.2, y=1.8, z=-0.2}, + maxvel = {x=0.2, y=2, z=0.2}, + minacc = {x=0, y=-0.1, z=0}, + maxacc = {x=0, y=-0.3, z=0}, + minexptime = 2, + maxexptime = 4, + minsize = 1, + maxsize = 5, + -- ^ The particle's properties are random values in between the bounds: + -- ^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration), + -- ^ minsize/maxsize, minexptime/maxexptime (expirationtime) + collisiondetection = true, + -- ^ collisiondetection: if true uses collision detection + vertical = false, + -- ^ vertical: if true faces player using y axis only + texture = "smoke_puff.png", + -- ^ Uses texture (string) + attached = self.object, + }) + end, + drops={"default:steelblock 1"}, + horn_sound = "advtrains_steam_whistle", +}, S("Steam Engine"), "advtrains_engine_steam_inv.png") + +advtrains.register_wagon("detailed_steam_engine", { + mesh="advtrains_detailed_steam_engine.b3d", + textures = {"advtrains_detailed_steam_engine.png"}, + is_locomotive=true, + drives_on={default=true}, + max_speed=10, + seats = { + { + name=S("Driver Stand (left)"), + attach_offset={x=-5, y=10, z=-10}, + view_offset={x=9, y=-2, z=-6}, + group = "dstand", + }, + { + name=S("Driver Stand (right)"), + attach_offset={x=5, y=10, z=-10}, + view_offset={x=0, y=6, z=0}, + group = "dstand", + }, + }, + seat_groups = { + dstand={ + name = "Driver Stand", + driving_ctrl_access=true, + access_to = {}, + }, + }, + assign_to_seat_group = {"dstand"}, + visual_size = {x=1, y=1}, + wagon_span=2.05, + collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, + custom_on_velocity_change=function(self, velocity) + if self.old_anim_velocity~=advtrains.abs_ceil(velocity) then + self.object:set_animation({x=1,y=80}, advtrains.abs_ceil(velocity)*15, 0, true) + self.old_anim_velocity=advtrains.abs_ceil(velocity) + end + end, + custom_on_step=function(self, dtime) + if self:train().velocity > 0 then -- First make sure that the train isn't standing + if not self.sound_loop_tmr or self.sound_loop_tmr <= 0 then + -- start the sound if it was never started or has expired + self.sound_loop_handle = minetest.sound_play({name="advtrains_steam_loop", gain=2}, {object=self.object}) + self.sound_loop_tmr = SND_LOOP_LEN + end + --decrease the sound timer + self.sound_loop_tmr = self.sound_loop_tmr - dtime + else + -- If the train is standing, the sound will be stopped in some time. We do not need to interfere with it. + self.sound_loop_tmr = nil + end + end, + custom_on_activate = function(self, staticdata_table, dtime_s) + minetest.add_particlespawner({ + amount = 10, + time = 0, + -- ^ If time is 0 has infinite lifespan and spawns the amount on a per-second base + minpos = {x=0, y=2.3, z=1.45}, + maxpos = {x=0, y=2.3, z=1.4}, + minvel = {x=-0.2, y=1.8, z=-0.2}, + maxvel = {x=0.2, y=2, z=0.2}, + minacc = {x=0, y=-0.1, z=0}, + maxacc = {x=0, y=-0.3, z=0}, + minexptime = 2, + maxexptime = 4, + minsize = 1, + maxsize = 5, + -- ^ The particle's properties are random values in between the bounds: + -- ^ minpos/maxpos, minvel/maxvel (velocity), minacc/maxacc (acceleration), + -- ^ minsize/maxsize, minexptime/maxexptime (expirationtime) + collisiondetection = true, + -- ^ collisiondetection: if true uses collision detection + vertical = false, + -- ^ vertical: if true faces player using y axis only + texture = "smoke_puff.png", + -- ^ Uses texture (string) + attached = self.object, + }) + end, + drops={"default:steelblock 1"}, + horn_sound = "advtrains_steam_whistle", +}, S("Detailed Steam Engine"), "advtrains_detailed_engine_steam_inv.png") + +advtrains.register_wagon("wagon_default", { + mesh="advtrains_passenger_wagon.b3d", + textures = {"advtrains_wagon.png"}, + drives_on={default=true}, + max_speed=10, + seats = { + { + name="1", + attach_offset={x=2, y=6, z=8}, + view_offset={x=0, y=-4, z=0}, + group="pass", + }, + { + name="2", + attach_offset={x=-1, y=6, z=8}, + view_offset={x=0, y=-4, z=0}, + group="pass", + }, + { + name="3", + attach_offset={x=-4, y=8, z=-8}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + { + name="4", + attach_offset={x=4, y=8, z=-8}, + view_offset={x=0, y=0, z=0}, + group="pass", + }, + }, + seat_groups = { + pass={ + name = "Passenger area", + access_to = {}, + }, + }, + + assign_to_seat_group = {"pass"}, + visual_size = {x=1, y=1}, + wagon_span=2.634, + collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, + drops={"default:steelblock 1"}, +}, S("Passenger Wagon"), "advtrains_wagon_inv.png") + + +advtrains.register_wagon("wagon_box", { + mesh="advtrains_wagon_box.b3d", + textures = {"advtrains_wagon_box.png"}, + drives_on={default=true}, + max_speed=10, + seats = {}, + visual_size = {x=1, y=1}, + wagon_span=2, + collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0}, + drops={"default:steelblock 1"}, + has_inventory = true, + get_inventory_formspec = advtrains.standard_inventory_formspec, + inventory_list_sizes = { + box=8*3, + }, +}, S("Box Wagon"), "advtrains_wagon_box_inv.png") + +minetest.register_craft({ + output = 'advtrains:newlocomotive', + recipe = { + {'', '', 'advtrains:chimney'}, + {'advtrains:driver_cab', 'dye:black', 'advtrains:boiler'}, + {'advtrains:wheel', 'advtrains:wheel', 'advtrains:wheel'}, + }, +}) + +minetest.register_craft({ + output = 'advtrains:detailed_steam_engine', + recipe = { + {'', '', 'advtrains:chimney'}, + {'advtrains:driver_cab', 'dye:green', 'advtrains:boiler'}, + {'advtrains:wheel', 'advtrains:wheel', 'advtrains:wheel'}, + }, +}) + +minetest.register_craft({ + output = 'advtrains:wagon_default', + recipe = { + {'default:steelblock', 'default:steelblock', 'default:steelblock'}, + {'default:glass', 'dye:dark_green', 'default:glass'}, + {'advtrains:wheel', 'advtrains:wheel', 'advtrains:wheel'}, + }, +}) +minetest.register_craft({ + output = 'advtrains:wagon_box', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, + {'group:wood', 'default:chest', 'group:wood'}, + {'advtrains:wheel', '', 'advtrains:wheel'}, + }, +}) diff --git a/advtrains/advtrains_train_steam/models/advtrains_detailed_steam_engine.b3d b/advtrains/advtrains_train_steam/models/advtrains_detailed_steam_engine.b3d Binary files differnew file mode 100755 index 0000000..f73becb --- /dev/null +++ b/advtrains/advtrains_train_steam/models/advtrains_detailed_steam_engine.b3d diff --git a/advtrains/advtrains_train_steam/models/advtrains_engine_steam.b3d b/advtrains/advtrains_train_steam/models/advtrains_engine_steam.b3d Binary files differnew file mode 100755 index 0000000..6a92f57 --- /dev/null +++ b/advtrains/advtrains_train_steam/models/advtrains_engine_steam.b3d diff --git a/advtrains/advtrains_train_steam/models/advtrains_passenger_wagon.b3d b/advtrains/advtrains_train_steam/models/advtrains_passenger_wagon.b3d Binary files differnew file mode 100644 index 0000000..2bc01b2 --- /dev/null +++ b/advtrains/advtrains_train_steam/models/advtrains_passenger_wagon.b3d diff --git a/advtrains/advtrains_train_steam/models/advtrains_wagon.b3d b/advtrains/advtrains_train_steam/models/advtrains_wagon.b3d Binary files differnew file mode 100644 index 0000000..5c8214c --- /dev/null +++ b/advtrains/advtrains_train_steam/models/advtrains_wagon.b3d diff --git a/advtrains/advtrains_train_steam/models/advtrains_wagon_box.b3d b/advtrains/advtrains_train_steam/models/advtrains_wagon_box.b3d Binary files differnew file mode 100755 index 0000000..914975f --- /dev/null +++ b/advtrains/advtrains_train_steam/models/advtrains_wagon_box.b3d diff --git a/advtrains/advtrains_train_steam/screenshot.png b/advtrains/advtrains_train_steam/screenshot.png Binary files differnew file mode 100644 index 0000000..089da73 --- /dev/null +++ b/advtrains/advtrains_train_steam/screenshot.png diff --git a/advtrains/advtrains_train_steam/sounds/advtrains_steam_loop.ogg b/advtrains/advtrains_train_steam/sounds/advtrains_steam_loop.ogg Binary files differnew file mode 100644 index 0000000..8b221a9 --- /dev/null +++ b/advtrains/advtrains_train_steam/sounds/advtrains_steam_loop.ogg diff --git a/advtrains/advtrains_train_steam/sounds/advtrains_steam_whistle.ogg b/advtrains/advtrains_train_steam/sounds/advtrains_steam_whistle.ogg Binary files differnew file mode 100644 index 0000000..42172a2 --- /dev/null +++ b/advtrains/advtrains_train_steam/sounds/advtrains_steam_whistle.ogg diff --git a/advtrains/advtrains_train_steam/textures/advtrains_detailed_engine_steam_inv.png b/advtrains/advtrains_train_steam/textures/advtrains_detailed_engine_steam_inv.png Binary files differnew file mode 100755 index 0000000..51adb5a --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_detailed_engine_steam_inv.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_detailed_steam_engine.png b/advtrains/advtrains_train_steam/textures/advtrains_detailed_steam_engine.png Binary files differnew file mode 100755 index 0000000..926d5f0 --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_detailed_steam_engine.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_engine_steam.png b/advtrains/advtrains_train_steam/textures/advtrains_engine_steam.png Binary files differnew file mode 100755 index 0000000..4b27e77 --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_engine_steam.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_engine_steam_inv.png b/advtrains/advtrains_train_steam/textures/advtrains_engine_steam_inv.png Binary files differnew file mode 100755 index 0000000..8d3fafb --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_engine_steam_inv.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_wagon.png b/advtrains/advtrains_train_steam/textures/advtrains_wagon.png Binary files differnew file mode 100644 index 0000000..bd34e68 --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_wagon.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_wagon_box.png b/advtrains/advtrains_train_steam/textures/advtrains_wagon_box.png Binary files differnew file mode 100755 index 0000000..8cdd440 --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_wagon_box.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_wagon_box_inv.png b/advtrains/advtrains_train_steam/textures/advtrains_wagon_box_inv.png Binary files differnew file mode 100755 index 0000000..480f245 --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_wagon_box_inv.png diff --git a/advtrains/advtrains_train_steam/textures/advtrains_wagon_inv.png b/advtrains/advtrains_train_steam/textures/advtrains_wagon_inv.png Binary files differnew file mode 100755 index 0000000..65f7984 --- /dev/null +++ b/advtrains/advtrains_train_steam/textures/advtrains_wagon_inv.png |