summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcheapie <no-email-for-you@example.com>2024-05-11 16:27:42 -0500
committercheapie <no-email-for-you@example.com>2024-05-11 16:27:42 -0500
commit18b8f47dceec87d2ceb1126264928554978754fc (patch)
tree5e55fa0b655cc4b9fbe0f7e666d52f41d3e8cf0e
parenta659a519ebfc0ed34fea9f8acf5ffcd744b01db0 (diff)
downloadcelevator-18b8f47dceec87d2ceb1126264928554978754fc.tar
celevator-18b8f47dceec87d2ceb1126264928554978754fc.tar.gz
celevator-18b8f47dceec87d2ceb1126264928554978754fc.tar.bz2
celevator-18b8f47dceec87d2ceb1126264928554978754fc.tar.xz
celevator-18b8f47dceec87d2ceb1126264928554978754fc.zip
Add flashing fire hat and recall to next available floor for machine room smoke detectors
-rw-r--r--controllerfw.lua33
-rw-r--r--mesecons.lua10
-rw-r--r--textures/celevator_fire_hat_flashing.pngbin0 -> 4453 bytes
3 files changed, 41 insertions, 2 deletions
diff --git a/controllerfw.lua b/controllerfw.lua
index 8c3663e..cd54dff 100644
--- a/controllerfw.lua
+++ b/controllerfw.lua
@@ -647,6 +647,7 @@ elseif event.type == "fs1switch" then
end
mem.fs1switch = event.state
mem.fs1led = event.state
+ if not event.state then mem.flashfirehat = false end
elseif event.type == "cartopbox" then
if event.control == "inspectswitch" then
mem.cartopinspectsw = not mem.cartopinspectsw
@@ -729,6 +730,7 @@ elseif event.type == "dispatchermsg" then
elseif event.channel == "fs1switch" then
mem.fs1switch = event.msg
mem.fs1led = event.msg
+ if not event.msg then mem.flashfirehat = false end
end
elseif event.type == "remotemsg" then
if event.channel == "groupupcall" and mem.carstate == "normal" then
@@ -765,6 +767,29 @@ elseif event.iid == "nudge" and mem.carstate == "normal" then
elseif mem.doorstate == "opening" then
interrupt(1,"nudge")
end
+elseif event.type == "mrsmoke" then
+ mem.flashfirehat = true
+ if not mem.fs1led then
+ mem.fs1switch = true
+ mem.fs1led = true
+ mem.recallto = nil
+ if mem.drive.status.vel > 0 then
+ for i=getpos(),#mem.params.floornames,1 do
+ if mem.drive.status.neareststop < gettarget(i) then
+ mem.recallto = i
+ break
+ end
+ end
+ elseif mem.drive.status.vel < 0 then
+ for i=#mem.params.floornames,1,-1 do
+ if mem.drive.status.neareststop < gettarget(i) then
+ mem.recallto = i
+ break
+ end
+ end
+ end
+ if not mem.recallto then mem.recallto = getpos() end
+ end
end
local oldstate = mem.carstate
@@ -1462,8 +1487,12 @@ mem.copformspec = mem.copformspec..string.format("image_button[%f,%f;1.2,1.2;%s;
mem.copformspec = mem.copformspec..string.format("image_button[0.4,0.5;1.4,1.4;%s;callcancel;Call\nCancel;false;false;%s]",unlitimg,litimg)
-local firehat = mem.flash_fs and "celevator_fire_hat_lit.png" or "celevator_fire_hat_unlit.png"
-mem.copformspec = mem.copformspec..string.format("image[2.2,0.5;1.4,1.4;%s]",firehat)
+if mem.flashfirehat then
+ mem.copformspec = mem.copformspec.."animated_image[2.2,0.5;1.4,1.4;firehat;celevator_fire_hat_flashing.png;2;750]"
+else
+ local firehat = mem.flash_fs and "celevator_fire_hat_lit.png" or "celevator_fire_hat_unlit.png"
+ mem.copformspec = mem.copformspec..string.format("image[2.2,0.5;1.4,1.4;%s]",firehat)
+end
mem.switchformspec = "formspec_version[7]size[8,10]"
local fs2ontex = (mem.fs2sw == "on") and "celevator_button_rect_active.png" or "celevator_button_rect.png"
diff --git a/mesecons.lua b/mesecons.lua
index f5fd06b..bc00185 100644
--- a/mesecons.lua
+++ b/mesecons.lua
@@ -338,6 +338,16 @@ local inputoptions = {
end,
needsfloor = false,
},
+ {
+ id = "mrsmoke",
+ desc = "Machine Room or Hoistway Smoke Detector",
+ func_on = function(controllerpos)
+ celevator.controller.run(controllerpos,{
+ type = "mrsmoke",
+ })
+ end,
+ needsfloor = false,
+ },
}
local dinputoptions = {
diff --git a/textures/celevator_fire_hat_flashing.png b/textures/celevator_fire_hat_flashing.png
new file mode 100644
index 0000000..97c8e5c
--- /dev/null
+++ b/textures/celevator_fire_hat_flashing.png
Binary files differ