2022-02-11 01:26:20 +01:00
|
|
|
-- rumble - Client side mod for Minetest
|
|
|
|
-- Scripted by: Li0n
|
|
|
|
|
2022-02-25 23:15:47 +01:00
|
|
|
-- configureable settings:
|
|
|
|
local rumble_strength_max_standard = 0.5
|
|
|
|
local rumble_duration_max_standard = 5
|
2022-02-25 00:22:40 +01:00
|
|
|
|
|
|
|
-- To do list:
|
|
|
|
-- sadist mode
|
|
|
|
-- tnt griefer mode
|
|
|
|
-- chat mode: trigger from specific words written by either yourself (humiliation) or others (degradation)
|
2022-02-11 01:26:20 +01:00
|
|
|
|
2022-02-25 23:46:39 +01:00
|
|
|
local rumble_strength_max = rumble_strength_max_standard
|
|
|
|
local rumble_duration_max = rumble_duration_max_standard
|
2022-02-26 16:26:30 +01:00
|
|
|
local log
|
|
|
|
local log_mode
|
2022-02-25 23:15:47 +01:00
|
|
|
|
|
|
|
local log_only = function(text)
|
|
|
|
minetest.log("action", text)
|
|
|
|
end
|
|
|
|
|
|
|
|
local log_and_chat = function(text)
|
|
|
|
minetest.log("action", text)
|
|
|
|
minetest.display_chat_message(text)
|
|
|
|
end
|
2022-02-25 20:58:58 +01:00
|
|
|
|
2022-02-25 23:30:34 +01:00
|
|
|
local no_log_no_chat = function(text)
|
|
|
|
end
|
|
|
|
|
2022-02-25 20:58:58 +01:00
|
|
|
-- step 1 (start)
|
|
|
|
minetest.register_on_mods_loaded(function()
|
|
|
|
minetest.display_chat_message("rumble mod loaded. May the rumble be with you!")
|
2022-02-26 16:26:30 +01:00
|
|
|
log = log_and_chat
|
|
|
|
log_mode = "log and chat"
|
2022-02-11 01:26:20 +01:00
|
|
|
end)
|
|
|
|
|
2022-02-19 19:41:17 +01:00
|
|
|
-- step 2 (take damage)
|
2022-02-11 01:26:20 +01:00
|
|
|
minetest.register_on_damage_taken(function(hp)
|
2022-02-25 00:36:09 +01:00
|
|
|
local rumble_strength = math.min( hp/20, rumble_strength_max )
|
|
|
|
local rumble_duration = math.min( hp, rumble_duration_max )
|
2022-02-25 23:15:47 +01:00
|
|
|
log("[rumble] ".."queue "..rumble_strength.." "..rumble_duration)
|
2022-02-11 01:26:20 +01:00
|
|
|
end)
|
|
|
|
|
|
|
|
-- step 3 (die)
|
|
|
|
minetest.register_on_death(function()
|
2022-02-25 23:15:47 +01:00
|
|
|
log("[rumble] instant 0 0")
|
2022-02-25 00:55:51 +01:00
|
|
|
end)
|
|
|
|
|
|
|
|
-- step 4 (disconnect)
|
|
|
|
minetest.register_on_shutdown(function()
|
2022-02-25 23:15:47 +01:00
|
|
|
log("[rumble] instant 0 0")
|
2022-02-25 00:55:51 +01:00
|
|
|
end)
|
2022-02-25 20:58:58 +01:00
|
|
|
|
|
|
|
-- step 5 (commands)
|
2022-02-25 23:51:15 +01:00
|
|
|
|
|
|
|
-- command 1
|
2022-02-25 20:58:58 +01:00
|
|
|
minetest.register_chatcommand("strength", {
|
2022-02-25 22:30:48 +01:00
|
|
|
description = "set max rumble strength (from 0 to 1)",
|
2022-02-25 20:58:58 +01:00
|
|
|
func = function(text)
|
2022-02-25 22:30:48 +01:00
|
|
|
if (string.match((text), "^%d+%.%d+$")) or (string.match((text), "^%d+$")) then
|
|
|
|
rumble_strength_max = text
|
2022-02-25 21:55:03 +01:00
|
|
|
minetest.display_chat_message("max rumble strength set to "..rumble_strength_max)
|
|
|
|
else
|
|
|
|
minetest.display_chat_message(minetest.colorize("#FF0", "error: value after .strength should be a positive number"))
|
|
|
|
end
|
2022-02-25 20:58:58 +01:00
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2022-02-25 23:51:15 +01:00
|
|
|
-- command 2
|
2022-02-25 20:58:58 +01:00
|
|
|
minetest.register_chatcommand("duration", {
|
|
|
|
description = "set max rumble duration (in seconds)",
|
|
|
|
func = function(text)
|
2022-02-25 22:30:48 +01:00
|
|
|
if (string.match((text), "^%d+%.%d+$")) or (string.match((text), "^%d+$")) then
|
|
|
|
rumble_duration_max = text
|
2022-02-25 21:55:03 +01:00
|
|
|
minetest.display_chat_message("max rumble duration set to "..rumble_duration_max)
|
|
|
|
else
|
|
|
|
minetest.display_chat_message(minetest.colorize("#FF0", "error: value after .duration should be a positive number"))
|
|
|
|
end
|
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2022-02-25 23:51:15 +01:00
|
|
|
-- command 3
|
2022-02-25 21:55:03 +01:00
|
|
|
minetest.register_chatcommand("settings", {
|
|
|
|
description = "shows current values of settings",
|
|
|
|
func = function()
|
|
|
|
minetest.display_chat_message("max rumble strength: "..rumble_strength_max)
|
|
|
|
minetest.display_chat_message("max rumble duration: "..rumble_duration_max)
|
2022-02-26 00:05:45 +01:00
|
|
|
minetest.display_chat_message("current chat and log mode: "..log_mode)
|
2022-02-25 20:58:58 +01:00
|
|
|
end,
|
|
|
|
})
|
2022-02-25 23:15:47 +01:00
|
|
|
|
2022-02-25 23:51:15 +01:00
|
|
|
-- command 4
|
2022-02-25 23:15:47 +01:00
|
|
|
minetest.register_chatcommand("chat_off", {
|
|
|
|
description = "disables rumble logs being written into chat",
|
|
|
|
func = function()
|
2022-02-26 00:05:45 +01:00
|
|
|
log = log_only
|
|
|
|
log_mode = "log only"
|
|
|
|
minetest.display_chat_message("rumble chat turned off")
|
2022-02-25 23:15:47 +01:00
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2022-02-25 23:51:15 +01:00
|
|
|
-- command 5
|
2022-02-25 23:15:47 +01:00
|
|
|
minetest.register_chatcommand("chat_on", {
|
|
|
|
description = "enables rumble logs being written into chat",
|
|
|
|
func = function()
|
2022-02-26 00:05:45 +01:00
|
|
|
log = log_and_chat
|
|
|
|
log_mode = "log and chat"
|
|
|
|
minetest.display_chat_message("rumble chat turned on")
|
2022-02-25 23:15:47 +01:00
|
|
|
end,
|
|
|
|
})
|
2022-02-25 23:30:34 +01:00
|
|
|
|
2022-02-25 23:51:15 +01:00
|
|
|
-- command 6
|
2022-02-25 23:30:34 +01:00
|
|
|
minetest.register_chatcommand("stop", {
|
2022-02-25 23:52:36 +01:00
|
|
|
description = "pauses logging",
|
2022-02-25 23:30:34 +01:00
|
|
|
func = function()
|
|
|
|
log = no_log_no_chat
|
2022-02-26 00:05:45 +01:00
|
|
|
log_mode = "no log no chat"
|
|
|
|
minetest.display_chat_message("rumble logging paused")
|
2022-02-25 23:30:34 +01:00
|
|
|
end,
|
|
|
|
})
|
|
|
|
|
2022-02-25 23:51:15 +01:00
|
|
|
-- command 7
|
2022-02-25 23:30:34 +01:00
|
|
|
minetest.register_chatcommand("resume", {
|
|
|
|
description = "resumes the rumble program",
|
|
|
|
func = function()
|
|
|
|
log = log_only
|
2022-02-26 00:05:45 +01:00
|
|
|
log_mode = "log only"
|
|
|
|
minetest.display_chat_message("rumble logging resumed")
|
2022-02-25 23:30:34 +01:00
|
|
|
end,
|
|
|
|
})
|