[Code] Silence

From: Thibor (roland@INTERPATH.COM)
Date: 12/11/97


Hadn't been able to get around to mailing this to the folks who
asked for it so I'll just post it here.  Questions and Criticism
are welcome.


in structs.h, around line 229, with the other affection definitions,
change:

#define AFF_UNUSED20          (1 << 20)    /* Room for future expansion
*/

to

#define AFF_SILENCE           (1 << 20)    /* Char can't cast spells
*/

---------
in spells.h around line 100 or so in the spell definitions, add:

#define SPELL_SILENCE                     67 /* (or whatever your number
is) */

---------
in magic.c in mag_affects, somewhere in the spell cases (I put mine
after blind)
add this:


  case SPELL_SILENCE:
    af[0].location = APPLY_INT;  /* Feel free to change this */
    af[0].modifier = -2;         /* this too */
    af[0].duration = 10;
    af[0].bitvector = AFF_SILENCE;

    to_room = "$n looks puzzled for a moment and grimaces.";
    to_vict = "You can't seem to remember your spells...";
    break;

---------
in spell_parser.c, around line 103 change the appropriate (the spell
define
number) "!UNUSED!" to "silence"

in the funtion cast_spell, around line 586 and just after:

    default:
      send_to_char("You can't do much of anything like this!\r\n", ch);
      break;
    }
    return 0;
  }

add:

  if (IS_AFFECTED(ch, AFF_SILENCE)) {
     send_to_char("You are silenced, you can't!\r\n", ch);
     return 0;
  }

in the ACMD(do_cast) around line 631 and just after:

  if (IS_NPC(ch) && IS_AFFECTED(ch, AFF_CHARM))
    return;

add:

  if (IS_AFFECTED(ch, AFF_SILENCE)) {
    send_to_char("But you have been magically hexed, you can't!\r\n",
ch);
    return;
  }


in the spello's and around line 1003, add:

  spello(SPELL_SILENCE, 60, 45, 2, POS_STANDING,
        TAR_CHAR_ROOM, TRUE, MAG_AFFECTS);

--------
in constants.c, along with the other AFF_x constants, change the
appropriate
"!UNUSED!" slot to "SILENCE".  Refer to the definition in structs.h.  If
you
followed the example above then it will come just before "CHARM".

--------
in act.informative.c around line 235 just after:

    if (IS_AFFECTED(i, AFF_BLIND))
      act("...$e is groping around blindly!", FALSE, i, 0, ch, TO_VICT);

add:

    if (IS_AFFECTED(i, AFF_SILENCE))
      act("...$e looks to be in deep contemplation..", FALSE, i, 0, ch,
TO_VICT);

around line 897 in do_score, after:

  if (IS_AFFECTED(ch, AFF_SANCTUARY))
    strcat(buf, "You are protected by Sanctuary.\r\n");

add:

  if (IS_AFFECTED(ch, AFF_SILENCE))
    strcat(buf, "You are silenced.\r\n");

---------



And that should do it.  Have any questions or flames, send to
roland@interpath.com.


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/08/00 PST