Cobalt's Universal IC +Message System
Wherein I will begin to discuss and scratch out my universal +message system for IC messages.
Overview: An set of soft code for tinymux (I'd be down to talk/work with @faraday on how to make it portable to other codebases), that can handle IC messages between players. It will allow for a backlog of what messages have been received and viewing of those old messages. It will come with a default set of message types but be set up to easily allow for game owners to add others. It is meant to be light, easy to "install", and easy to use. Players shouldn't be required to do more than +email/+call/+text <name> to send a message.
Purpose: IC messaging between players that can be track separately from OOC messages.
+email/+text: list your current last X messages (5-10 for ease not being spammy).
+email/+text #: View specified message.
+email/+text <person>=<message>: Send <person> an email/text with specified message.
+email/new and +text/new: Get first "new" email or text.
+email/delete and +text/delete #: Delete specified email or text. (Unsure if needed.)
The above commands would be the basis for any 'custom' messages-- a staff member could add +tinder for example, and they'd follow the same format from above.
+call[s]: List your current last X calls.
+call <person>: Call person. Their phone rings, possibly a message pops up in the room.
+call/answer: Answer incoming call.
+call/decline: Decline incoming call.
+call/end: End current call, done from either side.
+call <text>: Respond to current call. Possibly echo to the room what person is saying.
I am not 100% certain that I want to handle +Call in this manner, I may be overthinking +Call, and it could potentially just be like the above. And be quiet so other people don't see it. I'm debating immersion vs annoying to other people. I could add +Call/quiet so that someone can talk on the phone and not have it echo to the room, and +Call/silent, which sets their phone to 'silent' so only -they- get a message about their phone ringing.
- Set up central functions that can be called just by doing [u(fn.happyfunmessages, type)], where type is email, text, etc.
- Store message types on a list: d.message_types: text|email|twitter|whatever. (I'm not soft coding twitter.)
- Add softcode command that allows staff to add a new message type easily?
- Figure out how to store the data on the messages going between players. Store on players? Or a central log object using theno's log code?
@skew i know you wanna hook it to SQL, if you wanna work together and you do the sql bit we could do that? :P
@Cobaltasaurus Absolutely! <3 <3
Your goal will be mostly the same as if you were storing it in an attribute. Just...
Field 1|Field 2|Field 3|Field 4|Field 5
Then you'll toss that into another function which shoves it into the SQL!
I'd personally scrap +call as outlined here. Make it work exactly like +txt, and let people RP it out however they want to RP it out.
I also intend to implement a reminder alert that you have a waiting call/message/whatever. Might not make sense for call, but the core functionality will be: You receive a txt/e-mail, you get an alert when it first arrives. Then every 30 minutes after that, you get an alert that you have unread messages.
My goal is to make a /mute command, that'll mute the alert for a time, or perhaps until log off, but to not allow the alerts to be turned off permanently. I'll admit I might be wrong here, but I rather like the idea of not being able to fully opt out of IC communication. I've seen too many players who just ignore all that stuff, and frustrates me. And yes, this would be an OOC consideration.
Possibly look into the SQL-based logger I created for The Reach/Fallcoast, in order to see how I handled important timestamp issues.
Need to talk to SD about this when stuff RL is a little less hectic. O.O