4Dimensions Forum

General Category => Suggestions & Ideas => Topic started by: Calypso on September 15, 2013, 10:27:33 am

Title: Blind Players
Post by: Calypso on September 15, 2013, 10:27:33 am
We have enough blind players  8) to justify changing some things around to make it fair for them. Anything that relies on color as an indicator should be changed. For instance, instead of having a colored tier bar in front of a mob, we can use T4 or |||| as an indicator. And instead of the skills/spells being in green to indicate which ones a player can train, just use a *. 

Can you think of anything else like this?
Title: Re: Blind Players
Post by: Bane on September 16, 2013, 10:04:46 pm
Has anyone actually taken the time to talk to the blind players?

Calypso does have a point, Someone should take some time to chat with one of our blind players and see what annoys them on here or what suggestions they may have that would make the game better for them to play.

I know at least in mushclient you can do quite a few things with texts in colors, If its something we cant add to the code its something that could be whipped up as a plugin for mushclient. I have a full plate of things I need to do on here so I wont say Ill take on the project but id be willing to help anyone who would take on this task if its under lua.

But I will add there has been one player I never knew was blind for a very long time and was quite in shock when I found out the news on how far he managed to get into this game. I believe this has actually been brought up in another post, or least something Molly has brought up somewhere here on the forums to make the mud more friendly to our blind players.
Title: Re: Blind Players
Post by: Molly on September 17, 2013, 02:12:13 am
Some of the blind players have actually contacted the staff and told about problems, and we've made some fixes already.

The tier symbols havn't been fixed yet however, and I really hope some coder will do that soon.
Do you hear me, Coders? ???

One of the main problems is of course ascii art, which comes out as gibberish.
We don't have much of that in 4D, just a few rooms in the Mediterranean Sea, and I don't think these are a problem.
One particular problem mentioned was however the archeology quest in Carthage Bay, where the shards you collect are represented as ascii pictures that you are supposed to puzzle together, so we made some additions there. I believe what I did was to add info about the number of pieces to each item, and each set of shards also has a different feel desc, so you can identify what item the pieces belong to).

The only other places where I know that ascii art is used are the Worth and Gold commands, but I think they can read the text part on those regardless. At least to my knowledge nobody has complained about those so far.

But talking to the blind players and finding out what else we can do is a good idea. Perhaps someone could ask them about the worth and gold commands.


Title: Re: Blind Players
Post by: Bane on September 17, 2013, 09:49:43 am
Do we have any suggestion as to what we want the tier symbol to be?
Title: Re: Blind Players
Post by: Calypso on September 17, 2013, 10:04:18 am
Well it could be one tier bar for each tier. Or we could simply add T# in front of it. Otherwise perhaps use a symbol to indicate certain tiers. I.E. v for T1, < for T2, ^ for T3, and > for T4.
Title: Re: Blind Players
Post by: Bane on September 17, 2013, 11:31:10 am
Well it could be one tier bar for each tier. Or we could simply add T# in front of it. Otherwise perhaps use a symbol to indicate certain tiers. I.E. v for T1, < for T2, ^ for T3, and > for T4.

My initial thought myself was using the T symbol but the problem with that is we already use [T] for trainers. I dont think Id really like the idea of having ||||| to represent a tier 4 mob. Im not really sure how that would sound over a screen reader. Seems long to me, This is where we need some input from the players who will benefit from this.

I took a look over the code it doesnt seem a big challenge to do. I think if we start adding things for blind players we need to have a option under character creation also that blind players can select that will toggle a the handicap options in game for them.

As far as the gold display and such if we have a blind toggle we can just have it list out the gold rather than use the graphic ASCII. ex

Gold Carried 1,200,000
Gold In Bank 5,000,000
Total Gold 6,200,000
Gold Tokens 1
Silver Tokens 2
Bronze Tokens 3
Brass Tokens 1


personal note I wont be doing any coding as of now as much as I want to dwell into our code and start tinkering with things I have a long over due promise I need to finish first on here and thats going to be my primary focus on this game for now.
Title: Re: Blind Players
Post by: Calypso on September 23, 2013, 07:00:15 am
Has anyone done anything? At least fix the skills available indicator. That's a simple fix. Just put a star next to the ones that are available instead of or in addition to it being green. That one seems to be a bigger problem run into more frequently.

I love the idea of having a toggle for screen readers.
Title: Re: Blind Players
Post by: Calypso on September 23, 2013, 08:22:17 am
These are the things I have gathered so far.

-Brief mode skips too many important things. Definitely want to see each room just don't want to read the same thing over and over again. Is there a way to make it so that players can skip through room descriptions that are repetitive, like in mazes?

Personally, I would suggest using brief mode and typing look if you want to see something, but the complaint is that brief mode would skip the important items too, not just the unwanted stuff.

-  Put the mobs and objects before room desc.

- Convert the [#####--] max 600 to  80% used, or 480 used out of 600- on containers.
- Convert all spells and skills percentage used indicators to a number rather a [####---]

- Remove the ascii art from score, worth, and gold. 

- Maybe make a stats command where you can just see:
 STR: 22/30    INT: 22   WIS: 18   CON: 22   DEX: 22   CHA: 35

- The login and menu screens are super spammy. Can we remove the art and move the ABOUT info to a menu option?

Title: Re: Blind Players
Post by: Kvetch on September 23, 2013, 11:59:28 am
In response to the brief command, that's the chance ANYONE - blind or not - takes when they use brief.  Should we make it reveal MORE information just because it's annoying to have to walk through a maze that has mostly the same description?  Even I find that tedious, but there is usually a reason for such mazes.

As for the log in ascii art, I'd hate to lose the almost only picture 4dimensions has that's been around for longer than I have.

I believe the credits on the log in screen have to remain there via the diku/circlemud credit rules - though anything related specifically to our mud could possibly be moved.  It seems outdated by a few years anyway.

As for the rest, it would require a coder to do and they all seem to either not care enough or are too busy. 
Title: Re: Blind Players
Post by: Calypso on September 23, 2013, 12:49:28 pm
Let me offer this motivation. There is a group of visually impaired folks that were going to start their own mud but lack the funding and time it takes to do so. They are all planning to come invade 4D partially due to the assurance I made that we are looking into making some changes and wish to have their input.

I agree about not wanting to lose a lot of stuff like the art. What I am suggesting is more a toggle option than a mud-wide conversion.

I tend to agree with you about the brief command. There doesn't seem to be much we can do about that barring we put bright neon signs up saying :QUEST HINT- THE ITEM YOU NEED IS RIGHT HERE: and of course that would take the fun out of the game.

I hear what you are saying about time constraints. Is there anyway we can get outside help with this? I know that requires pulling a favor but I am thinking this is a worthy goal. We talk about needing to increase our player base- well here is a group of players who could contribute a lot to our game if we let them, not to mention our small crew of V.I. folks that already call 4D home. And the cause is a worthy one regardless.

Granted, I have the same amount of coding knowledge that a rock would have, but it seems to me that some of these changes aren't that hugely major, like putting the mobs and objects before the room description and switching the [####--] to a number-based indicator, and adding a star in front of the skills that are available rather than depending on color. I make all these suggestions as a toggle rather than a mud-wide conversion.

Molly? Xerxes? Any thoughts?
Title: Re: Blind Players
Post by: Bane on September 23, 2013, 03:12:17 pm
As far as the the skill % thats something we already have in game, it just only shows when our wisdom I think has reached a certain point. So thats a really easy fix.

I think the the best results we can do right now would just setting a toggle to display different scores/gold/practice skills&spells/worth wit no special characters. I would just go straight down a line and list the information.

Still need to come to some conclusion of how to interpret different tiers.

Ill look but I cant promise anything in a timely fashion. For one I cant pull down our latest code down till I speak with Thotter. Not sure If that will affect anything if not.

Nay nay to removing 4d skull.

As far as changing the credits location we can not I found this under the License agreement.

The login sequence must contain the names of the DikuMUD and CircleMUD creators. The 'login sequence' is defined as the text seen by players between the time they connect to the MUD and when they start to play the game itself.

Title: Re: Blind Players
Post by: Bane on September 23, 2013, 03:41:16 pm
Also I asked Calypso to gather more information like what type of client they use and what screen reader they use. I know under mushclient i could easily create a plugin to gag alot of the stuff at log in.
Title: Re: Blind Players
Post by: Molly on September 23, 2013, 04:37:14 pm
I am not prepared to remove something that a majority of our players are used to and like, to accomodate a very small minority, however sympathetic I may be to making it easier for blind players. That goes for both the log-in screen and the worth/gold commands. I also don't see the log-in screen as a big problem for blind players, since you only come across that once in each session.

My recommendation would definitely be a toggle, so that you can turn the graphics off if you want to. Toggles are generally good, since they leave a free choice.

The same thing goes for Brief. I don't see any way around that, you either toggle it on or off, and if you toggle it off, you WILL risk missing info. It's a choice you'll have to make. (And it's not like we have that many repetitive descs either, it's usually just in mazes and grids).

The credits to the original Diku teams are obligatory, we'd violate the Circle Licence if we removed them, so that is a big NO.

I'm not sure it's such a great idea to put the mobs and objects before the room desc. Again we have to consider that there is a majority of players who also have preferences, and that there is a reason for things being set up in the order they are now. To me the room desc is usually more important than the mobs. And given the fact that there can sometimes be scores of mobs in the same room, the negative outweighs the positive to me.

Also putting objects before the desc in a room would immediately reveal the fact that there are !display objects in the room, to everybody BUT the blind players, meaning that it would just put them at another disadvantage.

One thing that WOULD be nice is if it could be set up so that several similar mobs would be bunched together on the look, scan and look <direction> commands, in the way that several similar objects are bunched together in the inventory command. So it would say for instance "You see (5) the soldier:  immediately to the west" instead of "you see the soldier, the soldier, the soldier, the soldier, the soldier: immediately to the west".

The other suggestions sound good to me.

Tiers should definitely be displaysd in another way, perhaps t1, t2 etc. to separate it from the [T] for trainer?
Title: Re: Blind Players
Post by: lharc on October 06, 2013, 02:15:10 am
I prefer to address any user inclusively by using 'our' rather than 'they'.

If I may think about our current userbase and future userbase more generally in mind, I see following categorization:
* a user who uses a braille display.
* a user who uses an audio converter.
* a user who whishes for a easer/compact english.
* a user who has seen the same room thousand times and whishes more silent output unless something extraordinarly happens in the environment.

Anyway, looking at the tbamud I've added a BRAILLE and AUDIO option to preferences. For now the option is toggable, and survives a server-restart  :P
Patch:
Code: [Select]
Date:   Sun Oct 6 09:02:09 2013 +0200

    braille/audio toggle

diff --git a/src/act.h b/src/act.h
index 7ec7f94..dd70496 100644
--- a/src/act.h
+++ b/src/act.h
@@ -226,6 +226,8 @@ ACMD(do_gen_tog);
 #define SCMD_WIMPY       30
 #define SCMD_PAGELENGTH  31
 #define SCMD_SCREENWIDTH 32
+#define SCMD_AUDIO       33
+#define SCMD_BRAILLE     34
 
 /* do_quit */
 ACMD(do_quit);
diff --git a/src/act.informative.c b/src/act.informative.c
index 6a4c15d..2da81cc 100644
--- a/src/act.informative.c
+++ b/src/act.informative.c
@@ -1843,6 +1843,12 @@ ACMD(do_toggle)
     {"compact", PRF_COMPACT, 0,
     "Compact mode off.\r\n",
     "Compact mode on.\r\n"},
+    {"audio", PRF_AUDIO, 0,
+    "Audio mode off.\r\n",
+    "Audio mode on.\r\n"},
+    {"braille", PRF_BRAILLE, 0,
+    "Braille mode off.\r\n",
+    "Braille mode on.\r\n"},
     {"notell", PRF_NOTELL, 0,
     "You can now hear tells.\r\n",
     "You are now deaf to tells.\r\n"},
diff --git a/src/act.other.c b/src/act.other.c
index a579ac0..447498e 100644
--- a/src/act.other.c
+++ b/src/act.other.c
@@ -670,8 +670,9 @@ ACMD(do_gen_tog)
     "Nohassle enabled.\r\n"},
     {"Brief mode off.\r\n",
     "Brief mode on.\r\n"},
-    {"Compact mode off.\r\n",
-    "Compact mode on.\r\n"},
+    {"Compact mode off.\r\n", "Compact mode on.\r\n"},
+    {"Braille mode off.\r\n", "Braille mode on.\r\n"},
+    {"Audio mode off.\r\n", "Audio mode on.\r\n"},
     {"You can now hear tells.\r\n",
     "You are now deaf to tells.\r\n"},
     {"You can now hear auctions.\r\n",
@@ -738,6 +739,12 @@ ACMD(do_gen_tog)
   case SCMD_COMPACT:
     result = PRF_TOG_CHK(ch, PRF_COMPACT);
     break;
+  case SCMD_BRAILLE:
+    result = PRF_TOG_CHK(ch, PRF_BRAILLE);
+    break;
+  case SCMD_AUDIO:
+    result = PRF_TOG_CHK(ch, PRF_AUDIO);
+    break;
   case SCMD_NOTELL:
     result = PRF_TOG_CHK(ch, PRF_NOTELL);
     break;
diff --git a/src/interpreter.c b/src/interpreter.c
index 248f7bb..7339357 100644
--- a/src/interpreter.c
+++ b/src/interpreter.c
@@ -123,6 +123,9 @@ cpp_extern const struct command_info cmd_info[] = {
   { "consider" , "con"     , POS_RESTING , do_consider , 0, 0 },
   { "commands" , "com"     , POS_DEAD    , do_commands , 0, SCMD_COMMANDS },
   { "compact"  , "comp"    , POS_DEAD    , do_gen_tog  , 0, SCMD_COMPACT },
+  { "braille"  , "braille" , POS_DEAD    , do_gen_tog  , 0, SCMD_BRAILLE },
+  { "audio"  ,   "audio"   , POS_DEAD    , do_gen_tog  , 0, SCMD_AUDIO   },
+
   { "copyover" , "copyover", POS_DEAD    , do_copyover , LVL_GRGOD, 0 },
   { "credits"  , "cred"    , POS_DEAD    , do_gen_ps   , 0, SCMD_CREDITS },
 
diff --git a/src/prefedit.c b/src/prefedit.c
index 64cb894..e99c7fb 100644
--- a/src/prefedit.c
+++ b/src/prefedit.c
@@ -243,7 +243,8 @@ static void prefedit_disp_toggles_menu(struct descriptor_data *d)
   send_to_char(d->character, "\r\n"
                              "%sOther Flags\r\n"
                              "%sF%s) No Summon    %s[%s%3s%s]      %sH%s) Brief    %s[%s%3s%s]\r\n"
-                             "%sG%s) No Repeat    %s[%s%3s%s]      %sI%s) Compact  %s[%s%3s%s]\r\n",
+                             "%sG%s) No Repeat    %s[%s%3s%s]      %sI%s) Compact  %s[%s%3s%s]\r\n"
+                             "%sY%s) Audio        %s[%s%3s%s]      %sZ%s) Braille  %s[%s%3s%s]\r\n",
              CBWHT(d->character, C_NRM),
 /* Line 10 - nosummon and brief */
              CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
@@ -252,7 +253,11 @@ static void prefedit_disp_toggles_menu(struct descriptor_data *d)
 /* Line 11 - norepeat and compact */
              CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
              ONOFF(PREFEDIT_FLAGGED(PRF_NOREPEAT)), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
-             CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(PREFEDIT_FLAGGED(PRF_COMPACT)), CCCYN(d->character, C_NRM)
+             CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(PREFEDIT_FLAGGED(PRF_COMPACT)), CCCYN(d->character, C_NRM),
+/* Line 12 - audio and braille */
+             CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
+             ONOFF(PREFEDIT_FLAGGED(PRF_AUDIO   )), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
+             CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(PREFEDIT_FLAGGED(PRF_BRAILLE)), CCCYN(d->character, C_NRM)
              );
 
   /* The bottom section of the toggles menu */
@@ -264,19 +269,19 @@ static void prefedit_disp_toggles_menu(struct descriptor_data *d)
                              "%sP%s) UTF-8        %s[%s%3s%s]      %sR%s) MSP      %s[%s%3s%s]\r\n"
                              "\r\n",
              CBWHT(d->character, C_NRM),
-/* Line 12 - 256 and mxp */
+/* Line 13 - 256 and mxp */
              CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
              ONOFF(d->pProtocol->pVariables[eMSDP_XTERM_256_COLORS]->ValueInt), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
              CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(d->pProtocol->pVariables[eMSDP_MXP]->ValueInt), CCCYN(d->character, C_NRM),
-/* Line 13 - ansi and msdp */
+/* Line 14 - ansi and msdp */
              CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
              ONOFF(d->pProtocol->pVariables[eMSDP_ANSI_COLORS]->ValueInt), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
              CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(d->pProtocol->bMSDP), CCCYN(d->character, C_NRM),
-/* Line 14 - charset and atcp */
+/* Line 15 - charset and atcp */
              CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
              ONOFF(d->pProtocol->bCHARSET), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
              CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(d->pProtocol->bATCP), CCCYN(d->character, C_NRM),
-/* Line 15 - utf-8 and msp */
+/* Line 16 - utf-8 and msp */
              CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM), CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM),
              ONOFF(d->pProtocol->pVariables[eMSDP_UTF_8]->ValueInt), CCCYN(d->character, C_NRM), CBYEL(d->character, C_NRM), CCNRM(d->character, C_NRM),
              CCCYN(d->character, C_NRM), CCYEL(d->character, C_NRM), ONOFF(d->pProtocol->bMSP), CCCYN(d->character, C_NRM)
@@ -624,6 +629,14 @@ void prefedit_parse(struct descriptor_data * d, char *arg)
       case 'I':
         TOGGLE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_COMPACT);
         break;
+      case 'z':
+      case 'Z':
+        TOGGLE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_BRAILLE);
+        break;
+      case 'y':
+      case 'Y':
+        TOGGLE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_AUDIO);
+        break;
         
       case 'j':
       case 'J':
@@ -755,6 +768,12 @@ void prefedit_Restore_Defaults(struct descriptor_data *d)
   /* PRF_COMPACT    - Off */
   if (PREFEDIT_FLAGGED(PRF_COMPACT))
      REMOVE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_COMPACT);
+  /* PRF_AUDIO      - Off */
+  if (PREFEDIT_FLAGGED(PRF_AUDIO))
+     REMOVE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_AUDIO);
+  /* PRF_BRAILLE    - Off */
+  if (PREFEDIT_FLAGGED(PRF_BRAILLE))
+     REMOVE_BIT_AR(PREFEDIT_GET_FLAGS, PRF_BRAILLE);
 
   /* PRF_NOSHOUT       - Off */
   if (PREFEDIT_FLAGGED(PRF_NOSHOUT))
diff --git a/src/structs.h b/src/structs.h
index 758652b..6a9ce0d 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -272,8 +272,10 @@
 #define PRF_AUTOMAP      31   /**< Show map at the side of room descs */
 #define PRF_AUTOKEY      32   /**< Automatically unlock locked doors when opening */
 #define PRF_AUTODOOR     33   /**< Use the next available door */
+#define PRF_AUDIO        34   /**< Text through audio */
+#define PRF_BRAILLE      35   /**< Text through braille display */
 /** Total number of available PRF flags */
-#define NUM_PRF_FLAGS    34
+#define NUM_PRF_FLAGS    36
 
 /* Affect bits: used in char_data.char_specials.saved.affected_by */
 /* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */


Title: Re: Blind Players
Post by: Molly on October 07, 2013, 11:54:16 am
Excellent idea.

I'm not a coder myself, but we do have several, although not very active.

But hopefully one of them will find the time to implement this.

Then we can announce it on the Mud sites, and hopefully get some new inflow.
Title: Re: Blind Players
Post by: Bane on October 08, 2013, 02:12:54 pm
I can upload this to my port and test it, but I cant upload it to main server.

And I dont think anyone meant to refer to them as they as an offence but Lharc is right they are "our" players.
Title: Re: Blind Players
Post by: Calypso on October 09, 2013, 08:30:10 pm
The "they" mentioned was referring to a group of individuals not yet members of our mud but rather considering it.  Wasn't really sure how else to refer to that specific group with a pronoun other than using 'they' since the group of individuals are not currently 'ours'.  Sorry to have ruffled feathers. Unintended.

Anyway, Thanks Bane for jumping on this. I really appreciate it. This is something that I feel should be a priority for the mud in as much as it can be.
Title: Re: Blind Players
Post by: Prometheus on October 15, 2013, 10:00:57 am
I was going to say we need to add a couple of toggles for blind players. One would be color toggle to convert the colors into symbols or numbers. And a sound toggle might not be a bad one either.

If things stabilize for me which they should soon I can start doing some more coding. But we coders need to coordinate our efforts on this. So we don't step on each others toes. :)

Prometheus.
Title: Re: Blind Players
Post by: Bane on October 15, 2013, 12:22:53 pm
Thotters server crashed a few days ago, needs to be reloaded. But while its been down Ryanld was looking for some work and he said he would test this and see what else he could do since he codes locally.
Title: Re: Blind Players
Post by: rynald on October 16, 2013, 02:17:26 pm
I used Lharc's post to make a start with the blind toggle. Btw, why do we need a braille and an audio toggle? I can imagine you want to skip the graphical stuff for both but what's the difference between them?

Anyway, here's the code. I only did worth and tier so far, should i keep working on it?

Code: [Select]
diff --git a/act.informative.cpp b/act.informative.cpp
index 5d086e1..581a6a3 100755
--- a/act.informative.cpp
+++ b/act.informative.cpp
@@ -751,7 +751,14 @@ void list_one_char ( Character *i, Character *ch )
  return;
  }
  }
- ch->Send ( "%s%s", TIER_COLOUR_LIST ( ( IS_NPC ( i ) ? MOB_TIER ( i ) : current_class_is_tier_num ( i ) ) ) , CBCYN ( ch, C_NRM ) );
+
+ if ( PRF_FLAGGED ( ch, PRF_BRAILLE ))
+
+    char tier_string[] = "T0.";
+    tier_string[1] += ( IS_NPC ( i ) ? MOB_TIER ( i ) : current_class_is_tier_num ( i ) );
+    ch->Send ( "%s%s", tier_string, CBCYN ( ch, C_NRM ) );
+ }
+ else ch->Send ( "%s%s", TIER_COLOUR_LIST ( ( IS_NPC ( i ) ? MOB_TIER ( i ) : current_class_is_tier_num ( i ) ) ) , CBCYN ( ch, C_NRM ) );
 
  if ( AFF_FLAGGED ( i, AFF_POLY_TOAD ) )
  {
@@ -4868,7 +4875,7 @@ ACMD ( do_toggle )
      "     Keep Title: %-3s    "
      "     IC Channel: %-3s\r\n"
      "    Color Level: %-8s"
-     "  NoBattlespam: %-3s     "
+     "  NoBattlespam: %-3s    "
      "  NoMail Prompt: %-3s\r\n"
      "        NOCTalk: %-3s    "
      "        AFKTELL: %-3s    "
@@ -4888,7 +4895,9 @@ ACMD ( do_toggle )
      "         NOGATE: %-3s    "
      "      FishTally: %-3s    "
      "     NOTELEPORT: %-3s\r\n"
-     " NoDisplayTitle: %-3s    ",
+     " NoDisplayTitle: %-3s    "
+     "     Audio Mode: %-3s    "
+     "   Braille Mode: %-3s\r\n",
      ONOFF ( PRF_FLAGGED ( ch, PRF_DISPHP ) ),
      ONOFF ( PRF_FLAGGED ( ch, PRF_BRIEF ) ),
      ONOFF ( !PRF_FLAGGED ( ch, PRF_SUMMONABLE ) ),
@@ -4935,7 +4944,9 @@ ACMD ( do_toggle )
      ONOFF ( !PRF_FLAGGED ( ch, PRF_GATEABLE ) ),
      ONOFF ( !PRF_FLAGGED ( ch, PRF_FISHPROMPT ) ),
      ONOFF ( !PRF_FLAGGED ( ch, PRF_TELEPORTABLE ) ),
-     ONOFF ( !PRF_FLAGGED ( ch, PRF_NOTITLE) )
+     ONOFF ( !PRF_FLAGGED ( ch, PRF_NOTITLE) ),
+     ONOFF ( PRF_FLAGGED ( ch, PRF_AUDIO) ),
+     ONOFF ( PRF_FLAGGED ( ch, PRF_BRAILLE) )
      );
 
 }
@@ -5287,6 +5298,48 @@ ACMD ( do_worth )
  if ( GET_MASTERY ( ch, i ) )
  len += snprintf ( buf+len, sizeof ( buf ) - len, "%c ", UPPER ( *pc_class_types[i] ) );
 
+ if ( PRF_FLAGGED ( ch, PRF_BRAILLE ))
+ {
+    ch->Send ( "\r\n"
+       "{cwRemorts: {cg%-3d{cy 1:%3s 2:%3s 3:%3s      \r\n"
+               "{cwNatural Accuracy Rating: {cg%-3d{cy         \r\n"
+               "{cwNatural Evasion Rating: {cg%-3d{cy         \r\n"
+               "{cwRegenerating per mud hour:{cy          \r\n"
+               "{cyHp:{cc%-3d{cy  Ma:{cc%-3d{cy  Mv:{cc%-3d{cy  St:{cc%-3d{cy        \r\n"
+               "{cwHead And Neck Armor: {cL%%%-3d{cy        \r\n"
+               "{cwUpper Left Body Armor: {cL%%%-3d{cy        \r\n"
+               "{cwUpper Right Body Armor: {cL%%%-3d{cy        \r\n"
+               "{cwTorso Armor: {cL%%%-3d{cy        \r\n"
+               "{cwLower Left Body Armor: {cL%%%-3d{cy        \r\n"
+               "{cwLower Right Body Armor: {cL%%%-3d{cy        \r\n"
+               "{cwCoolness: {cg%-3d{cy       \r\n"
+               "{cwAward Points: {cg%-3d{cw Ethos: {cg%-3s{cy   \r\n"
+               "{cwStamina: {cC%d/%d{cw Detector: {cg%-3s{cy \r\n"
+                      "{cwMastered Classes: {cg%s{cy\r\n"
+               "{cwElemental Weakness: {cr%s{cy\r\n"
+               "{cwElemental Strength: {cc%s{cy\r\n",
+               REMORTS ( ch ),
+               GET_REMORT ( ch ) == -1 ? "---" : class_abbrevs[ ( int ) GET_REMORT ( ch ) ],
+               GET_REMORT_TWO ( ch ) == -1 ? "---" : class_abbrevs[ ( int ) GET_REMORT_TWO ( ch ) ],
+               GET_REMORT_THREE ( ch ) == -1 ? "---" : class_abbrevs[ ( int ) GET_REMORT_THREE ( ch ) ],
+               GET_PERM_ACCURACY ( ch ),
+               GET_PERM_EVASION ( ch ),
+             hit_gain ( ch ), mana_gain ( ch ), move_gain ( ch ), stamina_gain ( ch ),
+       chance_hit_part ( ch, PART_HEAD ),
+               chance_hit_part ( ch, PART_LEFT_ARM ),
+               chance_hit_part ( ch, PART_RIGHT_ARM ),
+               chance_hit_part ( ch, PART_TORSO ),
+               chance_hit_part ( ch, PART_LEFT_LEG ),
+               chance_hit_part ( ch, PART_LEFT_LEG ),
+               GET_COOLNESS ( ch ),
+               update_award ( ch ), *ethos,
+               GET_STAMINA ( ch ), GET_MAX_STAMINA ( ch ), *detector,
+                     buf,
+               print_elemental ( GET_CLASS ( ch ), TRUE, buf1, sizeof ( buf1 ) ),
+               print_elemental ( GET_CLASS ( ch ), FALSE, buf2, sizeof ( buf2 ) ) );
+    return;
+ }
+
  ch->Send ( "\r\n{cy"
             "O=====================================================================O\r\n"
             "|%-32s{cy|#|   {cwRemorts: {cg%-3d{cy 1:%3s 2:%3s 3:%3s      \r\n"
diff --git a/act.other.cpp b/act.other.cpp
index ca465af..060f51c 100755
--- a/act.other.cpp
+++ b/act.other.cpp
@@ -1528,8 +1528,11 @@ ACMD ( do_gen_tog )
  {   "You will NOT automaticly agree to group people when they request to follow.\r\n",
      "You will automaticly agree to group people when they request to follow.\r\n"},
  {"You will no longer see players' full titles.\r\n",
- "You can now see players' full titles.\r\n"}
-
+ "You can now see players' full titles.\r\n"},
+ {"Audio mode off.\r\n",
+ "Audio mode on.\r\n"},
+ {"Braille mode off.\r\n",
+ "Braille mode on.\r\n"},
 
  };
 
@@ -1723,6 +1726,12 @@ ACMD ( do_gen_tog )
  case SCMD_NOTITLE1:
  result = PRF_TOG_CHK ( ch, PRF_NOTITLE );
  break;
+ case SCMD_AUDIO:
+ result = PRF_TOG_CHK ( ch, PRF_AUDIO );
+ break;
+ case SCMD_BRAILLE:
+ result = PRF_TOG_CHK ( ch, PRF_BRAILLE );
+ break;
  default:
  log ( "SYSERR: Unknown subcmd %d in do_gen_toggle.", subcmd );
  return;
diff --git a/interpreter.cpp b/interpreter.cpp
index 2131c05..8d0e6a6 100755
--- a/interpreter.cpp
+++ b/interpreter.cpp
@@ -500,6 +500,7 @@ const command_info cmd_info[] =
  { "ask"      , "ask" , POS_RESTING , do_spec_comm, 0, SCMD_ASK, 0 },
  { "auction"  , "auc"  , POS_RESTING , do_auction  , 1, 0, 0 },
  { "auctalk"  , "auct"     , POS_SLEEPING, do_gen_comm , 0, SCMD_AUCTION, 0 },
+ { "audio"    , "audio", POS_DEAD    , do_gen_tog  , 0, SCMD_AUDIO, 0 },
  { "autoassist","autoa", POS_DEAD    , do_gen_tog  , 0, SCMD_AUTOASSIST, 0 },
  { "autocompress","autoc", POS_DEAD    , do_gen_tog  , 0, SCMD_AUTOZLIB, 0 },
  { "autoexit" , "autoe", POS_DEAD    , do_gen_tog  , 0, SCMD_AUTOEXIT, 0 },
@@ -520,6 +521,7 @@ const command_info cmd_info[] =
  { "bid"      , "bid"  , POS_RESTING , do_bid      , 1, 0, 0 },
  { "blowup"   , "blow" , POS_STANDING, do_blowup   , LVL_SEN, 0, WIZ_IMPL_GRP},
  { "bprompt"   , "bpromp", POS_DEAD    , /*do_display*/ do_prompt_new  , 0, SCMD_BPROMPT, 0 },
+ { "braille"  , "braille", POS_DEAD  , do_gen_tog  , 0, SCMD_BRAILLE, 0 },
  { "brief"    , "br"   , POS_DEAD    , do_gen_tog  , 0, SCMD_BRIEF, 0 },
  //{ "brew"     , "brew"   , POS_SITTING , do_assemble , 0, SUB_BREW, 0 },
  { "buildwalk", "buildwalk", POS_STANDING, do_gen_tog,   LVL_IMMORT, SCMD_BUILDWALK, WIZ_OLC_GRP },
diff --git a/interpreter.h b/interpreter.h
index eadace9..164e98a 100755
--- a/interpreter.h
+++ b/interpreter.h
@@ -193,7 +193,9 @@ struct alias_data {
 #define SCMD_FISHTALLY  48
 #define SCMD_NOTELEPORT 49
 #define SCMD_AUTOGROUP  50
-#define SCMD_NOTITLE1    51
+#define SCMD_NOTITLE1   51
+#define SCMD_AUDIO      52
+#define SCMD_BRAILLE    53
 
 /* do_wizutil */
 #define SCMD_REROLL 0
diff --git a/structs.h b/structs.h
index 0fd987d..534979d 100755
--- a/structs.h
+++ b/structs.h
@@ -665,6 +665,8 @@ class Room;
 #define PRF_RETIRED      55    /* For retired clan leaders */
 #define PRF_NOTITLE    56
 #define PRF_DEED_MASTER 57
+#define PRF_AUDIO 58    /* For players with an audio converter */
+#define PRF_BRAILLE 59    /* For players with a braille converter */
 
 /* Descriptor flags */
 #define DESC_CANZLIB     (1 << 0)  /* Client says compression capable.   */
Title: Re: Blind Players
Post by: lharc on October 18, 2013, 12:29:59 pm
rynald: Thats great!
I would be glad if you could finish it into production quality, since I cant continue any further with your patch.

Regarding your question.
I've based the toggles depending on the user-interface.
The other option would be user-condition toggles like blind, dyslexia, deaf, etc. But that doesn't make sense (in my opinion).

The toggles would give hints for the code on how to produce/output text the best way for the end-user equipment. Though I have no experience no how a braille display works.

Doing my initial work I didn't figured out what the PRF_BRIEF toggle is. So I ignored it ;) ... maybe there is some redundant work if that toggle is already supposed to produce leaner text?

Thanks for giving my patch some love!

love,
lharc
Title: Re: Blind Players
Post by: rynald on October 19, 2013, 09:03:14 am
BRIEF gags room descs. Blind players can turn this on if they want to, but it doesn't remove the graphics from worth for example. What if we make a single toggle, NOGRAPHICS for example? I'll move the implementation to the coders forum, that's where it belongs i guess.
Title: Re: Blind Players
Post by: rynald on October 20, 2013, 02:45:21 pm
Here are the effects for the blind toggle as it is now:

Worth:

Remorts: 9   1:War 2:War 3:War     
Natural Accuracy Rating: 5           
Natural Evasion Rating: 5           
Regenerating per mud hour: Hp:25  Ma:0   Mv:12  St:62
Head And Neck Armor: %0         
Upper Left Body Armor: %0         
Upper Right Body Armor: %0         
Torso Armor: %0         
Lower Left Body Armor: %0         
Lower Right Body Armor: %0         
Coolness: 0         
Award Points: 0   Ethos: None.   
Stamina: 158/158 Detector: Low
Mastered Classes: W G
Elemental Weakness: fire electricity
Elemental Strength: ice earth

Gold:

4 DIMENSIONS FINANCIAL SERVICES
Gold in Bank: [                  0]
Gold Carried: [             15,000]
Total Balance: [             15,000]
Tokens on file:     0 brass,     0 bronze,     0 silver,     0 gold.
Tradepoints:     0
Total Deeds:     0

Score:

Name: Bill             Level: 50 [ Hun - Forager      - 1 ]
Race: Indian           Align: -93   [ War - Mercenary    - 3 ]
Sex: Male          Practices: 1168                               
Clan: <none>            Rank: 0                               
Hit  Points: [  3465][  3465] Speed: [  1000] AC: [  98]
Mana Points: [  8402][  8402] Hitroll: [   0] Dam-Bonus: [   0]
Move Points: [  5019][  5019] Accuracy: [  96] Evasion: [ 115]
PKwin: [     0] PKloss: [     0] PK-Points: [     0]
Kills: [     4] Deaths: [     2] Deathtraps: [   0]
Primary Weapon:   30 to 360    Secondary Weapon:   18 to 128
Primary Weapon:   32 to 396    Shield Block Chance: 24.00%
[Mining] Speed:  15 Bonus: -20 Protection:   0 Stealth:  20
STR: 15/0   INT: 22 WIS: 18 CON: 13 DEX: 15 CHA: 13
Hunger: [100%] Thirst: [100%] Intoxication: [  0%]
Exp. Total: 889,397,485     Needed To Level: No More       
Age: 36  You have been playing for [  2] days and [ 8] hours
You are standing.
You are gateable by other players.
You are teleportable.
You are single.

Tier:

T2.A cityguard is here, guarding the gate.
T0.A cityguard is here, guarding the gate.

look <dir>:

You see the North Gate of the City of Olde Yorke.
You see an alley cat, the cityguard (2) and a stray dog close by south.
You see the vagabond far off to the south.

look in <container>:

When you look inside, you see:
a traveller's backpack (carried):
 12% - max 100
a big pot pie
a yellow potion of see invisible

As for the skills/spells list, you get to see percentages when you have 22 int.
Is there anything you want to see changed or added?
Title: Re: Blind Players
Post by: Bane on October 26, 2013, 11:19:01 am
Hmm didnt get an email notification on you posting here but anyways.

As far as the skill percentage on skills/spells if no one objects go ahead and remove the requirement for 22 int to see. Just go ahead and let everyone see it. It doesn't give anyone a advantage or anything so I would go ahead and remove that.

Other then that, everything looks good. Go ahead and push it and let Xerxes/Thotter know. I might suggest emailing them rather then trying to catch them in game.


Good Work Rynald.
Title: Re: Blind Players
Post by: Prometheus on October 26, 2013, 02:38:22 pm
Made this topic sticky since it is an important one :)

Prometheus.
Title: Blind Players and MAPS
Post by: Molly on December 16, 2013, 11:05:50 am
One of the things we could do for blind players is to add more readable maps and improve the existing ones.

As it is our maps and directions are a jumble between plain language directions, ascii art and the oldfashioned method (3n,5e,2n,2w). The reason why they are so different is mostly historic, it varies with the builder and age of the zone.

However, I am pretty convinced that the blind players prefer the oldfashioned 3n,7e,etc system.
And since the blind players already have a handicap by not being able to see graphical maps, it would probably be a great help for them to have access to maps of the other type.

This alone would make it worth the work to set up a full map system for all Dimensions, but it would also be helpful for other newbies.

Maps are usually most important for new players, the more experienced ones generally have set up aliases for speedwalk to all important locations.

One of our next projects will be to set up a map system for all Dimensions, where the maps are objects that would be sold in shops at the entrance of each Dimension.
This means a bit of OLC work, but that is not the most time consuming part. What really takes a bit of work is to map out the directions to each location. Unless you've already done it, of course.

And this is where you guys come in.
I am pretty certain that most of you oldbies have notes or speedwalks to all your favourite zones, set up like n n e e s s s  or 2n, 2e,3s. (The second would be preferable, but both are usable).
All put together, we'll hopefully be able to cover most of the Realms.

What I am asking for is that you share those notes, either in this thread, or by mailing them to me (molly.4d@tele2.se) if you don't want them to become public. (The latter is preferable, since all zones should not have exact directions, since their location is supposed to be a secret).

Below is and example of how I'd like the system set up:

MEDIEVAL DIMENSION, EASTERN REALMS
From where the Timewarp lands you in Yorke Square:
Eastern Crossroads:    <directions>
Tournament Place:       <directions>
Convent and Nunnery: <directions>
Robber Baron Castle:   <directions>
Sherwood Forest:        <directions>
Nottingham City:         <directions>
Pirate Bay:                  <directions>
Green Fen:                  <directions>
Fenizia:                       From Green Fen south through Lostlands
Dun Shivaar:               <directions>
Serf Village:                 <directions>



Title: Re: Blind Players
Post by: Molly on December 17, 2013, 04:15:07 am
Thanks to Loria, for mailing me a whole bunch of alias directions,
for Tournament Place, Camelot, Midlands, Elven Forest, Elven Metropolis, Robber Baron Castle, Enchanted Lands, Aussie, VE and Dry Gulch.

I could still use more, so if you have aliases or speedwalks for any more zones, please mail them to me, don't post them here, since we don't want secrets about hidden entrances and stuff revealed publically, (they won't be in the maps either).

These maps could be a great help for blind players and maybe help us getting more newbies as well, see this thread on TMC:
http://www.mudconnect.com/SMF/index.php?topic=78293.msg202142#new
Title: Re: Blind Players
Post by: Molly on December 22, 2013, 03:15:55 am
Thanks to Rynald, for mailing me speedwalks for all Oldwest zones, all Greek Islands from Kea, and most of the Medieval zones that Loria hadn't already provided.

Thanks to Rynald and Loria we now have more than enough to start working with the actual maps.

By now it would be easier to set up a list of what directions we DON'T have, so please confer with me, Loria or Rynald first, if you want to do some mapping of the remaining zones, so we don't do double work.

For instance we don't yet have any speedwaks for the Future, which is one giant grid, with several smaller grids for the planet systems. We need some directional maps there, for players that like to travel by spaceship or spacebike rather than shuttle.

There should be an overall map, starting fom The Future spaceport, with a safe route to the Centerpoing of all Planet systems. Then there should be a map for each Planet system, with directions to each planet there, starting with the Centerpoint.

The main priority would be the Alpha Centauri system, which doesn't even have a shuttle. But since all locations in Space have x,y,z-coordinates, moving around with brief mode on should be relatively easy, even if you are blind.

So, if you are used to space travel, here is something that we still need.
 
---------------
The first map is already in the game, a map over Old Carthage, sold by the Tourist guide at the Timewarp entrance. If any of our blind players would like to check it out, and make suggestions of improvements, that would be greatly appreciated.

We'll keep you posted each time a new bunch of maps is put in the game.

Title: Re: Blind Players
Post by: Prometheus on March 06, 2014, 10:46:20 pm
Unless another coder is going to do this I will work on a self report command. It will probably be srep or sreport. I will see how far i get this weekend on it.

Prometheus
Title: Re: Blind Players
Post by: Molly on March 07, 2014, 01:58:43 am
So the medieval maps are in now, thanks to Loria and Rynald, who did the work.

What we have is a map over the entrance zone Olde Yorke, and then one map for each cardinaql direction from that point, north, east, south and west. The Olde Yorke map will be sold by the bartender south of Recall, the other medieval maps in the Cartography shop in Olde Yorke.

Coming up next are maps over the Prehistoric Dimensions, starting with the Aegean Island and Greek Mainland. These are more tricky, sine the entire Meditteranean area is set up as one large grid, but the maps witjj goa from the Timewarp starting points, Islands of Kea and Carpathos, Cape Aulis and Harbour of Mycenae.

Later we will also have maps of the Nile, leading to Egypt, the Land of Kush and the Land of Punt.

We'd like some input from the visually impaired of course. If you would like the maps set up inm a different way, now is the time to let us know.
Title: Re: Blind Players
Post by: Calypso on May 11, 2014, 01:01:42 pm
Molly, Rynald, and I have put in hours and hours of work into text maps for the game. I think they are useful for everyone in game. I am very happy with it so far.

Molly, Which text maps are currently available in game right now? What still needs to be worked on?
Title: Re: Blind Players
Post by: Molly on May 11, 2014, 04:13:15 pm
The following maps are already in the game:

Old Carthage
Greek Mainland
Greek Islands
River Nile 
       
NorthRealms of Medieval
WestRealms of Medieval
EastRealms of Medieval
SouthRealms of Medieval
Olde Yorke         

Old West   
Dodge City         
Dry Gulch
         
Space Port         
Fun Fair     

A couple of more are in the builport,   not yet copied over, (for iinstance an overall map of the space in Future, and the Recall area).
We'll probably make verbal maps for all the bigger cities  and planets too, but all in all I think we have a pretty good set already, that should be useful for all players.

Thanks Loria and Rynald for all the dedicated work you put into those maps! :)

If there are any particular zones that you'd like to see a map over, please let us know.
Title: Re: Blind Players
Post by: Loran on June 10, 2014, 11:40:26 am
just a note on something we may need to look into to remove some confusion

one of our newest players (rosey) is using a screen reader on a mobile device and trying to use the farms in Old Yorke, when farming the scripts load pigs/birds with a message about it, but it seems by the time the information has been read out the script has already continued, we may need to add a longer timer to wait to account for this.

Also i noticed that when farming in these 5? fields they do not list the crop received in the room description or title so you don't know what you will receive until you start farming.

also they do not transfer you to another room/repeat the last farming command you need to use to continue - say plant/hoe like the ones i believe outside fort sutter that update/display a different room desc based on your progress.
Title: Re: Blind Players
Post by: Mirage on August 27, 2014, 04:45:30 pm
I just wanted to say a huge thank-you to the builders and coders.  I'm fairly new to Muds, but it appears that extensive work has gone into making this one accessible to those of us who use screen readers.  My biggest problem in other games is maps, and I was happy to discover the text maps on 4D today.  I found 4D because I was looking for a game with extensive crafting, and I'm looking forward to trying it out soon.