From 4aa14925d21cb8b0e238ff8a32016dcc73274b8d Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Tue, 21 Jul 2020 19:53:58 +0200 Subject: [PATCH] add enable and disable rp shorthands to MRoleplay. --- handlers/mroleplay.go | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/handlers/mroleplay.go b/handlers/mroleplay.go index e2ba313..0267fe8 100644 --- a/handlers/mroleplay.go +++ b/handlers/mroleplay.go @@ -11,6 +11,28 @@ import ( // the input from the server. It's named after Charybdis IRCd's m_roleplay module. func MRoleplay(event *irc.Event, client *irc.Client) { switch event.Name() { + case "input.enablerp", "input.disablerp": + { + sign := "+" + if event.Verb() == "disablerp" { + sign = "-" + } + + chanMode, chanModeOk := client.ISupport().Get("RPCHAN") + channel := event.ChannelTarget() + if channel != nil && chanModeOk { + client.SendQueuedf("MODE %s %s%s", channel.Name(), sign, chanMode) + } + + userMode, userModeOk := client.ISupport().Get("RPUSER") + query := event.QueryTarget() + status := event.StatusTarget() + if (query != nil || status != nil) && userModeOk { + client.SendQueuedf("MODE %s%s", sign, userMode) + } + } + + // Parse roleplaying messages, and replace underscored-nick with a render tag. case "packet.privmsg", "ctcp.action": { // Detect m_roleplay @@ -33,6 +55,8 @@ func MRoleplay(event *irc.Event, client *irc.Client) { event.Text = event.Text[:lastSpace] } } + + // NPC commands case "input.npcc", "input.npcac": { isAction := event.Verb() == "npcac" @@ -62,7 +86,9 @@ func MRoleplay(event *irc.Event, client *irc.Client) { event.PreventDefault() } - case "input.scenec": + + // Scene/narrator command + case "input.scenec", "input.narratorc": { if event.Text == "" { client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /scenec "))