diff -rc SmaugFUSS.orig/src/act_comm.c SmaugFUSS/src/act_comm.c *** SmaugFUSS.orig/src/act_comm.c 2003-07-31 13:17:28.000000000 +1000 --- SmaugFUSS/src/act_comm.c 2004-02-12 12:28:21.000000000 +1100 *************** *** 141,147 **** } else { ! strcpy(pbuf2, cnv->new); pbuf2 += cnv->nlen; } pbuf += cnv->olen; --- 141,147 ---- } else { ! strcpy(pbuf2, cnv->lcnv_new); pbuf2 += cnv->nlen; } pbuf += cnv->olen; *************** *** 168,174 **** for (cnv = lng->first_cnv; cnv; cnv = cnv->next) if (!str_prefix(cnv->old, pbuf)) { ! strcpy(pbuf2, cnv->new); pbuf += cnv->olen; pbuf2 += cnv->nlen; break; --- 168,174 ---- for (cnv = lng->first_cnv; cnv; cnv = cnv->next) if (!str_prefix(cnv->old, pbuf)) { ! strcpy(pbuf2, cnv->lcnv_new); pbuf += cnv->olen; pbuf2 += cnv->nlen; break; *************** *** 1259,1270 **** knows_language(ch, ch->speaking, victim)); if ( speakswell < 85 ) ! act( AT_TELL, "$n tells you '$t'", ch, translate(speakswell, argument, lang_names[speaking]), victim, TO_VICT ); else ! act( AT_TELL, "$n tells you '$t'", ch, argument, victim, TO_VICT ); } else ! act( AT_TELL, "$n tells you '$t'", ch, argument, victim, TO_VICT ); MOBtrigger = TRUE; --- 1259,1273 ---- knows_language(ch, ch->speaking, victim)); if ( speakswell < 85 ) ! act( AT_TELL, MXPTAG ("player $n") "$n" MXPTAG ("/player") ! " tells you '$t'", ch, translate(speakswell, argument, lang_names[speaking]), victim, TO_VICT ); else ! act( AT_TELL, MXPTAG ("player $n") "$n" MXPTAG ("/player") ! " tells you '$t'", ch, argument, victim, TO_VICT ); } else ! act( AT_TELL, MXPTAG ("player $n") "$n" MXPTAG ("/player") ! " tells you '$t'", ch, argument, victim, TO_VICT ); MOBtrigger = TRUE; *************** *** 2364,2370 **** ch_printf( ch, "[%2d %s] %-16s %4s/%4s hp %4s/%4s %s %4s/%4s mv %5s xp\n\r", gch->level, ! IS_NPC(gch) ? "Mob" : class_table[gch->class]->who_name, capitalize( PERS(gch, ch) ), "????", "????", --- 2367,2373 ---- ch_printf( ch, "[%2d %s] %-16s %4s/%4s hp %4s/%4s %s %4s/%4s mv %5s xp\n\r", gch->level, ! IS_NPC(gch) ? "Mob" : class_table[gch->mudclass]->who_name, capitalize( PERS(gch, ch) ), "????", "????", *************** *** 2388,2394 **** ch_printf( ch, "%-2d %2.2s %3.3s", gch->level, buf, ! IS_NPC(gch) ? "Mob" : class_table[gch->class]->who_name ); set_char_color( AT_DGREEN, ch ); send_to_char( "] ", ch ); set_char_color( AT_GREEN, ch ); --- 2391,2397 ---- ch_printf( ch, "%-2d %2.2s %3.3s", gch->level, buf, ! IS_NPC(gch) ? "Mob" : class_table[gch->mudclass]->who_name ); set_char_color( AT_DGREEN, ch ); send_to_char( "] ", ch ); set_char_color( AT_GREEN, ch ); *************** *** 2406,2412 **** set_char_color( AT_BLOOD, ch ); else set_char_color( AT_LBLUE, ch ); ! if ( gch->class != CLASS_WARRIOR ) ch_printf( ch, "%5d/%-5d ", IS_VAMPIRE(gch) ? gch->pcdata->condition[COND_BLOODTHIRST] : gch->mana, IS_VAMPIRE(gch) ? 10 + gch->level : gch->max_mana ); --- 2409,2415 ---- set_char_color( AT_BLOOD, ch ); else set_char_color( AT_LBLUE, ch ); ! if ( gch->mudclass != CLASS_WARRIOR ) ch_printf( ch, "%5d/%-5d ", IS_VAMPIRE(gch) ? gch->pcdata->condition[COND_BLOODTHIRST] : gch->mana, IS_VAMPIRE(gch) ? 10 + gch->level : gch->max_mana ); diff -rc SmaugFUSS.orig/src/act_info.c SmaugFUSS/src/act_info.c *** SmaugFUSS.orig/src/act_info.c 2003-11-14 09:28:36.000000000 +1100 --- SmaugFUSS/src/act_info.c 2004-02-12 12:28:21.000000000 +1100 *************** *** 100,126 **** buf[0] = '\0'; if ( IS_OBJ_STAT(obj, ITEM_INVIS) ) strcat( buf, "(Invis) " ); ! if ( (IS_AFFECTED(ch, AFF_DETECT_EVIL) || ch->class==CLASS_PALADIN) && IS_OBJ_STAT(obj, ITEM_EVIL) ) strcat( buf, "(Red Aura) " ); ! if ( ch->class==CLASS_PALADIN && ( IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && !IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && !IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Flaming Red) " ); ! if ( ch->class==CLASS_PALADIN && ( !IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && !IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Flaming Grey) " ); ! if ( ch->class==CLASS_PALADIN && (!IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && !IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Flaming White) " ); ! if ( ch->class==CLASS_PALADIN && ( IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && !IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Smouldering Red-Grey) " ); ! if ( ch->class==CLASS_PALADIN && ( IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && !IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Smouldering Red-White) " ); ! if ( ch->class==CLASS_PALADIN && ( !IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Smouldering Grey-White) " ); --- 100,126 ---- buf[0] = '\0'; if ( IS_OBJ_STAT(obj, ITEM_INVIS) ) strcat( buf, "(Invis) " ); ! if ( (IS_AFFECTED(ch, AFF_DETECT_EVIL) || ch->mudclass==CLASS_PALADIN) && IS_OBJ_STAT(obj, ITEM_EVIL) ) strcat( buf, "(Red Aura) " ); ! if ( ch->mudclass==CLASS_PALADIN && ( IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && !IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && !IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Flaming Red) " ); ! if ( ch->mudclass==CLASS_PALADIN && ( !IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && !IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Flaming Grey) " ); ! if ( ch->mudclass==CLASS_PALADIN && (!IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && !IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Flaming White) " ); ! if ( ch->mudclass==CLASS_PALADIN && ( IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && !IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Smouldering Red-Grey) " ); ! if ( ch->mudclass==CLASS_PALADIN && ( IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && !IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Smouldering Red-White) " ); ! if ( ch->mudclass==CLASS_PALADIN && ( !IS_OBJ_STAT(obj, ITEM_ANTI_EVIL) && IS_OBJ_STAT(obj, ITEM_ANTI_NEUTRAL) && IS_OBJ_STAT(obj, ITEM_ANTI_GOOD)) ) strcat( buf, "(Smouldering Grey-White) " ); *************** *** 246,262 **** * Show a list to a character. * Can coalesce duplicated items. */ ! void show_list_to_char( OBJ_DATA *list, CHAR_DATA *ch, bool fShort, bool fShowNothing ) { char **prgpstrShow; int *prgnShow; int *pitShow; char *pstrShow; OBJ_DATA *obj; int nShow; int iShow; int count, offcount, tmp, ms, cnt; bool fCombine; if ( !ch->desc ) return; --- 246,267 ---- * Show a list to a character. * Can coalesce duplicated items. */ ! void show_list_to_char( OBJ_DATA *list, CHAR_DATA *ch, bool fShort, bool fShowNothing, const int iDefaultAction ) { char **prgpstrShow; + char **prgpstrName; /* for MXP */ + char **prgpstrShortName; /* for MXP */ int *prgnShow; int *pitShow; char *pstrShow; + char *pstrName; /* for MXP */ + char *pstrShortName; /* for MXP */ OBJ_DATA *obj; int nShow; int iShow; int count, offcount, tmp, ms, cnt; bool fCombine; + char * pAction = NULL; if ( !ch->desc ) return; *************** *** 275,280 **** --- 280,296 ---- } return; } + + /* work out which MXP tag to use */ + + switch (iDefaultAction) + { + case eItemGet: pAction = "Get"; break; /* item on ground */ + case eItemDrop: pAction = "Drop"; break; /* item in inventory */ + case eItemBid: pAction = "Bid"; break; /* auction item */ + + } /* end of switch on action */ + /* * Alloc space for output lines. */ *************** *** 313,318 **** --- 329,336 ---- } CREATE( prgpstrShow, char*, count + ((offcount > 0) ? offcount : 0) ); + CREATE( prgpstrName, char*, count + ((offcount > 0) ? offcount : 0) ); + CREATE( prgpstrShortName, char*, count + ((offcount > 0) ? offcount : 0) ); CREATE( prgnShow, int, count + ((offcount > 0) ? offcount : 0) ); CREATE( pitShow, int, count + ((offcount > 0) ? offcount : 0) ); nShow = 0; *************** *** 329,334 **** --- 347,354 ---- if ( tmp > 0 && number_bits(1) == 0 ) { prgpstrShow [nShow] = str_dup( hallucinated_object(ms, fShort) ); + prgpstrName [nShow] = str_dup( hallucinated_object(ms, TRUE) ); + prgpstrShortName [nShow] = str_dup( hallucinated_object(ms, TRUE) ); prgnShow [nShow] = 1; pitShow [nShow] = number_range( ITEM_LIGHT, ITEM_BOOK ); nShow++; *************** *** 339,344 **** --- 359,366 ---- && (obj->item_type != ITEM_TRAP || IS_AFFECTED(ch, AFF_DETECTTRAPS) ) ) { pstrShow = format_obj_to_char( obj, ch, fShort ); + pstrName = obj->name; + pstrShortName = obj->short_descr; fCombine = FALSE; if ( IS_NPC(ch) || xIS_SET(ch->act, PLR_COMBINE) ) *************** *** 365,370 **** --- 387,394 ---- if ( !fCombine ) { prgpstrShow [nShow] = str_dup( pstrShow ); + prgpstrName [nShow] = str_dup( pstrName ); + prgpstrShortName [nShow] = str_dup( pstrShortName ); prgnShow [nShow] = obj->count; nShow++; } *************** *** 376,381 **** --- 400,407 ---- for ( x = 0; x < tmp; x++ ) { prgpstrShow [nShow] = str_dup( hallucinated_object(ms, fShort) ); + prgpstrName [nShow] = str_dup( hallucinated_object(ms, TRUE) ); + prgpstrShortName [nShow] = str_dup( hallucinated_object(ms, TRUE) ); prgnShow [nShow] = 1; pitShow [nShow] = number_range( ITEM_LIGHT, ITEM_BOOK ); nShow++; *************** *** 417,423 **** --- 443,453 ---- } if ( fShowNothing ) send_to_char( " ", ch ); + if (pAction) + ch_printf (ch, MXPTAG ("%s '%s' '%s'"), pAction, prgpstrName[iShow], prgpstrShortName[iShow]); send_to_char( prgpstrShow[iShow], ch ); + if (pAction) + ch_printf (ch, MXPTAG ("/%s"), pAction); /* if ( IS_NPC(ch) || xIS_SET(ch->act, PLR_COMBINE) ) */ { if ( prgnShow[iShow] != 1 ) *************** *** 426,431 **** --- 456,463 ---- send_to_char( "\n\r", ch ); DISPOSE( prgpstrShow[iShow] ); + DISPOSE( prgpstrName[iShow] ); + DISPOSE( prgpstrShortName[iShow] ); } if ( fShowNothing && nShow == 0 ) *************** *** 440,445 **** --- 472,479 ---- * Clean up. */ DISPOSE( prgpstrShow ); + DISPOSE( prgpstrName ); + DISPOSE( prgpstrShortName ); DISPOSE( prgnShow ); DISPOSE( pitShow ); return; *************** *** 559,569 **** if ( IS_AFFECTED(victim, AFF_PASS_DOOR) ) strcat( buf, "(Translucent) "); if ( IS_AFFECTED(victim, AFF_FAERIE_FIRE) ) strcat( buf, "(Pink Aura) " ); if ( IS_EVIL(victim) ! && ( IS_AFFECTED(ch, AFF_DETECT_EVIL) || ch->class==CLASS_PALADIN) ) strcat( buf, "(Red Aura) " ); if ( IS_NEUTRAL(victim) ! && ch->class==CLASS_PALADIN ) strcat( buf, "(Grey Aura) " ); if ( IS_GOOD(victim) ! && ch->class==CLASS_PALADIN ) strcat( buf, "(White Aura) " ); if ( IS_AFFECTED(victim, AFF_BERSERK) ) strcat( buf, "(Wild-eyed) " ); --- 593,603 ---- if ( IS_AFFECTED(victim, AFF_PASS_DOOR) ) strcat( buf, "(Translucent) "); if ( IS_AFFECTED(victim, AFF_FAERIE_FIRE) ) strcat( buf, "(Pink Aura) " ); if ( IS_EVIL(victim) ! && ( IS_AFFECTED(ch, AFF_DETECT_EVIL) || ch->mudclass==CLASS_PALADIN) ) strcat( buf, "(Red Aura) " ); if ( IS_NEUTRAL(victim) ! && ch->mudclass==CLASS_PALADIN ) strcat( buf, "(Grey Aura) " ); if ( IS_GOOD(victim) ! && ch->mudclass==CLASS_PALADIN ) strcat( buf, "(White Aura) " ); if ( IS_AFFECTED(victim, AFF_BERSERK) ) strcat( buf, "(Wild-eyed) " ); *************** *** 815,828 **** race_table[victim->race]->race_name&& race_table[victim->race]->race_name[0] != '\0'? race_table[victim->race]->race_name:"unknown", ! IS_NPC(victim)?victim->classclass>=0? ! npc_class[victim->class] : "unknown":victim->classclass]->who_name&& ! class_table[victim->class]->who_name[0] != '\0'? ! class_table[victim->class]->who_name:"unknown"); /* Fix so it shows what is in class table victim->racerace>=0?npc_race[victim->race] : "unknown", ! victim->classclass>=0?npc_class[victim->class] : "unknown" ); */ } --- 849,862 ---- race_table[victim->race]->race_name&& race_table[victim->race]->race_name[0] != '\0'? race_table[victim->race]->race_name:"unknown", ! IS_NPC(victim)?victim->mudclassmudclass>=0? ! npc_class[victim->mudclass] : "unknown":victim->mudclassmudclass]->who_name&& ! class_table[victim->mudclass]->who_name[0] != '\0'? ! class_table[victim->mudclass]->who_name:"unknown"); /* Fix so it shows what is in class table victim->racerace>=0?npc_race[victim->race] : "unknown", ! victim->mudclassmudclass>=0?npc_class[victim->mudclass] : "unknown" ); */ } *************** *** 830,836 **** { ch_printf( ch, "\n\rYou peek at %s inventory:\n\r", victim->sex == 1 ? "his" : victim->sex == 2 ? "her" : "its" ); ! show_list_to_char( victim->first_carrying, ch, TRUE, TRUE ); learn_from_success( ch, gsn_peek ); } else --- 864,870 ---- { ch_printf( ch, "\n\rYou peek at %s inventory:\n\r", victim->sex == 1 ? "his" : victim->sex == 2 ? "her" : "its" ); ! show_list_to_char( victim->first_carrying, ch, TRUE, TRUE, eItemNothing ); learn_from_success( ch, gsn_peek ); } else *************** *** 963,969 **** --- 997,1007 ---- if ( arg1[0] == '\0' || ( !IS_NPC(ch) && !xIS_SET(ch->act, PLR_BRIEF) ) ) + { + send_to_char( MXPTAG ("rdesc"), ch); send_to_char( ch->in_room->description, ch ); + send_to_char( MXPTAG ("/rdesc"), ch); + } if ( !IS_NPC(ch) && xIS_SET(ch->act, PLR_AUTOMAP) ) /* maps */ { *************** *** 977,983 **** do_exits( ch, "auto" ); ! show_list_to_char( ch->in_room->first_content, ch, FALSE, FALSE ); show_char_to_char( ch->in_room->first_person, ch ); return; } --- 1015,1021 ---- do_exits( ch, "auto" ); ! show_list_to_char( ch->in_room->first_content, ch, FALSE, FALSE, eItemGet ); show_char_to_char( ch->in_room->first_person, ch ); return; } *************** *** 1014,1020 **** act( AT_PLAIN, "$n lifts $p and looks beneath it:", ch, obj, NULL, TO_ROOM ); obj->count = count; if ( IS_OBJ_STAT( obj, ITEM_COVERING ) ) ! show_list_to_char( obj->first_content, ch, TRUE, TRUE ); else send_to_char( "Nothing.\n\r", ch ); if( EXA_prog_trigger ) oprog_examine_trigger( ch, obj ); --- 1052,1058 ---- act( AT_PLAIN, "$n lifts $p and looks beneath it:", ch, obj, NULL, TO_ROOM ); obj->count = count; if ( IS_OBJ_STAT( obj, ITEM_COVERING ) ) ! show_list_to_char( obj->first_content, ch, TRUE, TRUE, eItemNothing ); else send_to_char( "Nothing.\n\r", ch ); if( EXA_prog_trigger ) oprog_examine_trigger( ch, obj ); *************** *** 1105,1111 **** else act( AT_PLAIN, "$p holds:", ch, obj, NULL, TO_CHAR ); obj->count = count; ! show_list_to_char( obj->first_content, ch, TRUE, TRUE ); if( EXA_prog_trigger ) oprog_examine_trigger( ch, obj ); break; } --- 1143,1149 ---- else act( AT_PLAIN, "$p holds:", ch, obj, NULL, TO_CHAR ); obj->count = count; ! show_list_to_char( obj->first_content, ch, TRUE, TRUE, eItemNothing ); if( EXA_prog_trigger ) oprog_examine_trigger( ch, obj ); break; } *************** *** 1144,1150 **** */ if ( pexit->to_room && ( IS_AFFECTED( ch, AFF_SCRYING ) ! || ch->class == CLASS_THIEF || IS_SET( pexit->exit_info, EX_xLOOK ) || get_trust(ch) >= LEVEL_IMMORTAL ) ) { --- 1182,1188 ---- */ if ( pexit->to_room && ( IS_AFFECTED( ch, AFF_SCRYING ) ! || ch->mudclass == CLASS_THIEF || IS_SET( pexit->exit_info, EX_xLOOK ) || get_trust(ch) >= LEVEL_IMMORTAL ) ) { *************** *** 1162,1168 **** int percent = LEARNED(ch, skill_lookup("scry") ); if ( !percent ) { ! if ( ch->class == CLASS_THIEF ) percent = 95; else percent = 55; /* 95 was too good -Thoric */ --- 1200,1206 ---- int percent = LEARNED(ch, skill_lookup("scry") ); if ( !percent ) { ! if ( ch->mudclass == CLASS_THIEF ) percent = 95; else percent = 55; /* 95 was too good -Thoric */ *************** *** 1431,1444 **** race_table[victim->race]->race_name&& race_table[victim->race]->race_name[0] != '\0'? race_table[victim->race]->race_name:"unknown", ! IS_NPC(victim)?victim->classclass>=0? ! npc_class[victim->class] : "unknown":victim->classclass]->who_name&& ! class_table[victim->class]->who_name[0] != '\0'? ! class_table[victim->class]->who_name:"unknown"); /* New Change victim->racerace>=0?npc_race[victim->race] : "unknown", ! victim->classclass>=0?npc_class[victim->class] : "unknown" ); */ } show_condition( ch, victim ); --- 1469,1482 ---- race_table[victim->race]->race_name&& race_table[victim->race]->race_name[0] != '\0'? race_table[victim->race]->race_name:"unknown", ! IS_NPC(victim)?victim->mudclassmudclass>=0? ! npc_class[victim->mudclass] : "unknown":victim->mudclassmudclass]->who_name&& ! class_table[victim->mudclass]->who_name[0] != '\0'? ! class_table[victim->mudclass]->who_name:"unknown"); /* New Change victim->racerace>=0?npc_race[victim->race] : "unknown", ! victim->mudclassmudclass>=0?npc_class[victim->mudclass] : "unknown" ); */ } show_condition( ch, victim ); *************** *** 1662,1667 **** --- 1700,1706 ---- EXIT_DATA *pexit; bool found; bool fAuto; + int spaces; set_char_color( AT_EXITS, ch ); buf[0] = '\0'; *************** *** 1685,1696 **** if ( fAuto ) { strcat( buf, " " ); strcat( buf, dir_name[pexit->vdir] ); } else { ! sprintf( buf + strlen(buf), "%-5s - %s\n\r", capitalize( dir_name[pexit->vdir] ), room_is_dark( pexit->to_room ) ? "Too dark to tell" : pexit->to_room->name --- 1724,1745 ---- if ( fAuto ) { strcat( buf, " " ); + strcat (buf, MXPTAG ("Ex")); strcat( buf, dir_name[pexit->vdir] ); + strcat (buf, MXPTAG ("/Ex")); } else { ! /* I don't want to underline spaces, so I'll calculate the number we need */ ! spaces = 5 - strlen (dir_name[pexit->vdir]); ! if (spaces < 0) ! spaces = 0; ! sprintf( buf + strlen(buf), "%s%s%s%*s - %s\n\r", ! MXPTAG ("Ex"), capitalize( dir_name[pexit->vdir] ), + MXPTAG ("/Ex"), + spaces, /* number of spaces */ + "", room_is_dark( pexit->to_room ) ? "Too dark to tell" : pexit->to_room->name *************** *** 1960,1966 **** default: break; case SUB_HELP_EDIT: ! if ( (pHelp = ch->dest_buf) == NULL ) { bug( "hedit: sub_help_edit: NULL ch->dest_buf", 0 ); stop_editing( ch ); --- 2009,2015 ---- default: break; case SUB_HELP_EDIT: ! if ( (pHelp = (HELP_DATA *) ch->dest_buf) == NULL ) { bug( "hedit: sub_help_edit: NULL ch->dest_buf", 0 ); stop_editing( ch ); *************** *** 2547,2553 **** d = (fGroup ? (whogr ? whogr->d : NULL) : d->prev)) { CHAR_DATA *wch; ! char const *class; if ( (d->connected != CON_PLAYING && d->connected != CON_EDITING) || !can_see( ch, d->character ) || d->original) --- 2596,2602 ---- d = (fGroup ? (whogr ? whogr->d : NULL) : d->prev)) { CHAR_DATA *wch; ! char const *mudclass; if ( (d->connected != CON_PLAYING && d->connected != CON_EDITING) || !can_see( ch, d->character ) || d->original) *************** *** 2557,2563 **** || wch->level > iLevelUpper || ( fPkill && !CAN_PKILL( wch ) ) || ( fImmortalOnly && wch->level < LEVEL_IMMORTAL ) ! || ( fClassRestrict && !rgfClass[wch->class] ) || ( fRaceRestrict && !rgfRace[wch->race] ) || ( fClanMatch && ( pClan != wch->pcdata->clan )) /* SB */ || ( fCouncilMatch && ( pCouncil != wch->pcdata->council )) /* SB */ --- 2606,2612 ---- || wch->level > iLevelUpper || ( fPkill && !CAN_PKILL( wch ) ) || ( fImmortalOnly && wch->level < LEVEL_IMMORTAL ) ! || ( fClassRestrict && !rgfClass[wch->mudclass] ) || ( fRaceRestrict && !rgfRace[wch->race] ) || ( fClanMatch && ( pClan != wch->pcdata->clan )) /* SB */ || ( fCouncilMatch && ( pCouncil != wch->pcdata->council )) /* SB */ *************** *** 2593,2619 **** else strcpy( char_name, wch->name ); ! sprintf( class_text, "%s%2d %s", NOT_AUTHED(wch) ? "N" : " ", wch->level, class_table[wch->class]->who_name ); ! class = class_text; switch ( wch->level ) { default: break; ! case MAX_LEVEL - 0: class = "Supreme Entity"; break; ! case MAX_LEVEL - 1: class = "Infinite"; break; ! case MAX_LEVEL - 2: class = "Eternal"; break; ! case MAX_LEVEL - 3: class = "Ancient"; break; ! case MAX_LEVEL - 4: class = "Exalted God"; break; ! case MAX_LEVEL - 5: class = "Ascendant God"; break; ! case MAX_LEVEL - 6: class = "Greater God"; break; ! case MAX_LEVEL - 7: class = "God"; break; ! case MAX_LEVEL - 8: class = "Lesser God"; break; ! case MAX_LEVEL - 9: class = "Immortal"; break; ! case MAX_LEVEL - 10: class = "Demi God"; break; ! case MAX_LEVEL - 11: class = "Savior"; break; ! case MAX_LEVEL - 12: class = "Creator"; break; ! case MAX_LEVEL - 13: class = "Acolyte"; break; ! case MAX_LEVEL - 14: class = "Neophyte"; break; ! case MAX_LEVEL - 15: class = "Avatar"; break; } if ( !str_cmp( wch->name, sysdata.guild_overseer ) ) --- 2642,2668 ---- else strcpy( char_name, wch->name ); ! sprintf( class_text, "%s%2d %s", NOT_AUTHED(wch) ? "N" : " ", wch->level, class_table[wch->mudclass]->who_name ); ! mudclass = class_text; switch ( wch->level ) { default: break; ! case MAX_LEVEL - 0: mudclass = "Supreme Entity"; break; ! case MAX_LEVEL - 1: mudclass = "Infinite"; break; ! case MAX_LEVEL - 2: mudclass = "Eternal"; break; ! case MAX_LEVEL - 3: mudclass = "Ancient"; break; ! case MAX_LEVEL - 4: mudclass = "Exalted God"; break; ! case MAX_LEVEL - 5: mudclass = "Ascendant God"; break; ! case MAX_LEVEL - 6: mudclass = "Greater God"; break; ! case MAX_LEVEL - 7: mudclass = "God"; break; ! case MAX_LEVEL - 8: mudclass = "Lesser God"; break; ! case MAX_LEVEL - 9: mudclass = "Immortal"; break; ! case MAX_LEVEL - 10: mudclass = "Demi God"; break; ! case MAX_LEVEL - 11: mudclass = "Savior"; break; ! case MAX_LEVEL - 12: mudclass = "Creator"; break; ! case MAX_LEVEL - 13: mudclass = "Acolyte"; break; ! case MAX_LEVEL - 14: mudclass = "Neophyte"; break; ! case MAX_LEVEL - 15: mudclass = "Avatar"; break; } if ( !str_cmp( wch->name, sysdata.guild_overseer ) ) *************** *** 2624,2646 **** extra_title = ""; if ( IS_RETIRED( wch ) ) ! class = "Retired"; else if ( IS_GUEST( wch ) ) ! class = "Guest"; else if ( wch->pcdata->clan && !str_cmp( wch->name, wch->pcdata->clan->leader ) && wch->pcdata->clan->leadrank[0] != '\0' ) ! class = wch->pcdata->clan->leadrank; else if ( wch->pcdata->clan && !str_cmp( wch->name, wch->pcdata->clan->number1 ) && wch->pcdata->clan->onerank[0] != '\0' ) ! class = wch->pcdata->clan->onerank; else if ( wch->pcdata->clan && !str_cmp( wch->name, wch->pcdata->clan->number2 ) && wch->pcdata->clan->tworank[0] != '\0' ) ! class = wch->pcdata->clan->tworank; else if ( wch->pcdata->rank && wch->pcdata->rank[0] != '\0' ) ! class = wch->pcdata->rank; if ( wch->pcdata->clan ) { --- 2673,2695 ---- extra_title = ""; if ( IS_RETIRED( wch ) ) ! mudclass = "Retired"; else if ( IS_GUEST( wch ) ) ! mudclass = "Guest"; else if ( wch->pcdata->clan && !str_cmp( wch->name, wch->pcdata->clan->leader ) && wch->pcdata->clan->leadrank[0] != '\0' ) ! mudclass = wch->pcdata->clan->leadrank; else if ( wch->pcdata->clan && !str_cmp( wch->name, wch->pcdata->clan->number1 ) && wch->pcdata->clan->onerank[0] != '\0' ) ! mudclass = wch->pcdata->clan->onerank; else if ( wch->pcdata->clan && !str_cmp( wch->name, wch->pcdata->clan->number2 ) && wch->pcdata->clan->tworank[0] != '\0' ) ! mudclass = wch->pcdata->clan->tworank; else if ( wch->pcdata->rank && wch->pcdata->rank[0] != '\0' ) ! mudclass = wch->pcdata->rank; if ( wch->pcdata->clan ) { *************** *** 2723,2737 **** sprintf( invis_str, "(%d) ", wch->pcdata->wizinvis ); else invis_str[0] = '\0'; ! sprintf( buf, "%*s%-15s %s%s%s%s%s%s%s%s.%s%s%s\n\r", (fGroup ? whogr->indent : 0), "", ! class, invis_str, (wch->desc && wch->desc->connected) ? "[WRITING] " : "", xIS_SET(wch->act, PLR_AFK) ? "[AFK] " : "", xIS_SET(wch->act, PLR_ATTACKER) ? "(ATTACKER) " : "", xIS_SET(wch->act, PLR_KILLER) ? "(KILLER) " : "", xIS_SET(wch->act, PLR_THIEF) ? "(THIEF) " : "", char_name, wch->pcdata->title, extra_title, --- 2772,2789 ---- sprintf( invis_str, "(%d) ", wch->pcdata->wizinvis ); else invis_str[0] = '\0'; ! sprintf( buf, "%*s%-15s %s%s%s%s%s%s" ! MXPTAG ("player '%s'") "%s" MXPTAG ("/player") ! "%s.%s%s%s\n\r", (fGroup ? whogr->indent : 0), "", ! mudclass, invis_str, (wch->desc && wch->desc->connected) ? "[WRITING] " : "", xIS_SET(wch->act, PLR_AFK) ? "[AFK] " : "", xIS_SET(wch->act, PLR_ATTACKER) ? "(ATTACKER) " : "", xIS_SET(wch->act, PLR_KILLER) ? "(KILLER) " : "", xIS_SET(wch->act, PLR_THIEF) ? "(THIEF) " : "", + wch->name, char_name, wch->pcdata->title, extra_title, *************** *** 3188,3198 **** if (!IS_IMMORTAL(ch) && ( skill_table[sn]->guild != CLASS_NONE && ( !IS_GUILDED(ch) ! || (ch->pcdata->clan->class != skill_table[sn]->guild) ) ) ) continue; ! if ( ch->level < skill_table[sn]->skill_level[ch->class] ! || (!IS_IMMORTAL(ch) && skill_table[sn]->skill_level[ch->class] == 0) ) continue; if ( ch->pcdata->learned[sn] <= 0 --- 3240,3250 ---- if (!IS_IMMORTAL(ch) && ( skill_table[sn]->guild != CLASS_NONE && ( !IS_GUILDED(ch) ! || (ch->pcdata->clan->mudclass != skill_table[sn]->guild) ) ) ) continue; ! if ( ch->level < skill_table[sn]->skill_level[ch->mudclass] ! || (!IS_IMMORTAL(ch) && skill_table[sn]->skill_level[ch->mudclass] == 0) ) continue; if ( ch->pcdata->learned[sn] <= 0 *************** *** 3249,3255 **** if ( can_prac && ( ( sn == -1 ) || ( !IS_NPC(ch) ! && ch->level < skill_table[sn]->skill_level[ch->class] /* OUT FOR THIS PORT -SHADDAI && ch->level < skill_table[sn]->race_level[ch->race] */ --- 3301,3307 ---- if ( can_prac && ( ( sn == -1 ) || ( !IS_NPC(ch) ! && ch->level < skill_table[sn]->skill_level[ch->mudclass] /* OUT FOR THIS PORT -SHADDAI && ch->level < skill_table[sn]->race_level[ch->race] */ *************** *** 3297,3303 **** } if ( !IS_NPC(ch) && skill_table[sn]->guild != CLASS_NONE ! && ch->pcdata->clan->class != skill_table[sn]->guild ) { act( AT_TELL, "$n tells you 'That can not be used by your guild.'" mob, NULL, ch, TO_VICT ); --- 3349,3355 ---- } if ( !IS_NPC(ch) && skill_table[sn]->guild != CLASS_NONE ! && ch->pcdata->clan->mudclass != skill_table[sn]->guild ) { act( AT_TELL, "$n tells you 'That can not be used by your guild.'" mob, NULL, ch, TO_VICT ); *************** *** 3313,3320 **** /* * Disabled for now ! if ( mob->level < skill_table[sn]->skill_level[ch->class] ! || mob->level < skill_table[sn]->skill_level[mob->class] ) { act( AT_TELL, "$n tells you 'You must seek another to teach you that...'", mob, NULL, ch, TO_VICT ); --- 3365,3372 ---- /* * Disabled for now ! if ( mob->level < skill_table[sn]->skill_level[ch->mudclass] ! || mob->level < skill_table[sn]->skill_level[mob->mudclass] ) { act( AT_TELL, "$n tells you 'You must seek another to teach you that...'", mob, NULL, ch, TO_VICT ); *************** *** 3322,3328 **** } */ ! adept = class_table[ch->class]->skill_adept * 0.2; if ( ch->pcdata->learned[sn] >= adept ) { --- 3374,3380 ---- } */ ! adept = class_table[ch->mudclass]->skill_adept * 0.2; if ( ch->pcdata->learned[sn] >= adept ) { *************** *** 4277,4283 **** && SPELL_FLAG(skill_table[sn], SF_SECRETSKILL) ) continue; ! if(i==skill_table[sn]->skill_level[ch->class] ) { if( !lFound ) { --- 4329,4335 ---- && SPELL_FLAG(skill_table[sn], SF_SECRETSKILL) ) continue; ! if(i==skill_table[sn]->skill_level[ch->mudclass] ) { if( !lFound ) { *************** *** 4338,4344 **** pager_printf(ch, "%7s: %20.20s \t Current: %-3d Max: %-3d MinPos: %s \n\r", skn, skill_table[sn]->name, ch->pcdata->learned[sn], ! skill_table[sn]->skill_adept[ch->class], buf ); } } --- 4390,4396 ---- pager_printf(ch, "%7s: %20.20s \t Current: %-3d Max: %-3d MinPos: %s \n\r", skn, skill_table[sn]->name, ch->pcdata->learned[sn], ! skill_table[sn]->skill_adept[ch->mudclass], buf ); } } *************** *** 4387,4393 **** victim->sex == SEX_FEMALE ? "female" : "neutral", victim->level, capitalize(race_table[victim->race]->race_name), ! class_table[victim->class]->who_name, get_age(victim) ); pager_printf(ch, " %s is a %sdeadly player", --- 4439,4445 ---- victim->sex == SEX_FEMALE ? "female" : "neutral", victim->level, capitalize(race_table[victim->race]->race_name), ! class_table[victim->mudclass]->who_name, get_age(victim) ); pager_printf(ch, " %s is a %sdeadly player", *************** *** 4691,4705 **** /* reached create a node and at it to the list */ if(i < MAX_IGN) { ! IGNORE_DATA *new; ! CREATE(new, IGNORE_DATA, 1); ! new->name = STRALLOC(capitalize(arg)); ! new->next = NULL; ! new->prev = NULL; ! LINK(new, ch->pcdata->first_ignored, ch->pcdata->last_ignored, next, prev); set_char_color(AT_IGNORE, ch); ! ch_printf(ch,"You now ignore %s.\n\r", new->name); return; } else --- 4743,4757 ---- /* reached create a node and at it to the list */ if(i < MAX_IGN) { ! IGNORE_DATA *mudnew; ! CREATE(mudnew, IGNORE_DATA, 1); ! mudnew->name = STRALLOC(capitalize(arg)); ! mudnew->next = NULL; ! mudnew->prev = NULL; ! LINK(mudnew, ch->pcdata->first_ignored, ch->pcdata->last_ignored, next, prev); set_char_color(AT_IGNORE, ch); ! ch_printf(ch,"You now ignore %s.\n\r", mudnew->name); return; } else diff -rc SmaugFUSS.orig/src/act_move.c SmaugFUSS/src/act_move.c *** SmaugFUSS.orig/src/act_move.c 2002-12-30 14:13:07.000000000 +1100 --- SmaugFUSS/src/act_move.c 2004-02-12 12:28:21.000000000 +1100 *************** *** 823,829 **** /* for ( iClass = 0; iClass < MAX_CLASS; iClass++ ) { ! if ( iClass != ch->class && to_room->vnum == class_table[iClass]->guild ) { send_to_char( "You aren't allowed in there.\n\r", ch ); --- 823,829 ---- /* for ( iClass = 0; iClass < MAX_CLASS; iClass++ ) { ! if ( iClass != ch->mudclass && to_room->vnum == class_table[iClass]->guild ) { send_to_char( "You aren't allowed in there.\n\r", ch ); *************** *** 1795,1801 **** char arg [ MAX_INPUT_LENGTH ]; if ( !IS_NPC( ch ) ! && ch->level < skill_table[gsn_bashdoor]->skill_level[ch->class] ) { send_to_char( "You're not enough of a warrior to bash doors!\n\r", ch ); return; --- 1795,1801 ---- char arg [ MAX_INPUT_LENGTH ]; if ( !IS_NPC( ch ) ! && ch->level < skill_table[gsn_bashdoor]->skill_level[ch->mudclass] ) { send_to_char( "You're not enough of a warrior to bash doors!\n\r", ch ); return; diff -rc SmaugFUSS.orig/src/act_obj.c SmaugFUSS/src/act_obj.c *** SmaugFUSS.orig/src/act_obj.c 2003-04-03 14:34:54.000000000 +1000 --- SmaugFUSS/src/act_obj.c 2004-02-12 12:28:21.000000000 +1100 *************** *** 30,36 **** */ void show_list_to_char args( ( OBJ_DATA *list, CHAR_DATA *ch, ! bool fShort, bool fShowNothing ) ); void write_corpses args( ( CHAR_DATA *ch, char *name, OBJ_DATA *objrem ) ); /* --- 30,36 ---- */ void show_list_to_char args( ( OBJ_DATA *list, CHAR_DATA *ch, ! bool fShort, bool fShowNothing, const int iDefaultAction ) ); void write_corpses args( ( CHAR_DATA *ch, char *name, OBJ_DATA *objrem ) ); /* *************** *** 41,47 **** bool remove_obj args( ( CHAR_DATA *ch, int iWear, bool fReplace ) ); void wear_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, bool fReplace, sh_int wear_bit ) ); ! char* get_chance_verb args( ( OBJ_DATA *obj ) ); char* get_ed_number args( ( OBJ_DATA *obj, int number ) ); OBJ_DATA* recursive_note_find args( ( OBJ_DATA *obj, char* argument) ); --- 41,47 ---- bool remove_obj args( ( CHAR_DATA *ch, int iWear, bool fReplace ) ); void wear_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj, bool fReplace, sh_int wear_bit ) ); ! const char* get_chance_verb args( ( OBJ_DATA *obj ) ); char* get_ed_number args( ( OBJ_DATA *obj, int number ) ); OBJ_DATA* recursive_note_find args( ( OBJ_DATA *obj, char* argument) ); *************** *** 1488,1510 **** if ( !IS_IMMORTAL(ch) && (( IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) ! && ch->class == CLASS_WARRIOR ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) ! && ch->class == CLASS_PALADIN ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_MAGE) ! && ch->class == CLASS_MAGE ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_THIEF) ! && ch->class == CLASS_THIEF ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_VAMPIRE) ! && ch->class == CLASS_VAMPIRE ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_DRUID) ! && ch->class == CLASS_DRUID ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) ! && ch->class == CLASS_RANGER ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_MAGE) ! && ch->class == CLASS_AUGURER ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_CLERIC) ! && ch->class == CLASS_CLERIC )) ) { act( AT_MAGIC, "You are forbidden to use that item.", ch, NULL, NULL, TO_CHAR ); act( AT_ACTION, "$n tries to use $p, but is forbidden to do so.", --- 1488,1510 ---- if ( !IS_IMMORTAL(ch) && (( IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) ! && ch->mudclass == CLASS_WARRIOR ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) ! && ch->mudclass == CLASS_PALADIN ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_MAGE) ! && ch->mudclass == CLASS_MAGE ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_THIEF) ! && ch->mudclass == CLASS_THIEF ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_VAMPIRE) ! && ch->mudclass == CLASS_VAMPIRE ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_DRUID) ! && ch->mudclass == CLASS_DRUID ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_WARRIOR) ! && ch->mudclass == CLASS_RANGER ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_MAGE) ! && ch->mudclass == CLASS_AUGURER ) || ( IS_OBJ_STAT(obj, ITEM_ANTI_CLERIC) ! && ch->mudclass == CLASS_CLERIC )) ) { act( AT_MAGIC, "You are forbidden to use that item.", ch, NULL, NULL, TO_CHAR ); act( AT_ACTION, "$n tries to use $p, but is forbidden to do so.", *************** *** 2689,2695 **** { set_char_color( AT_OBJECT, ch ); send_to_char( "Contents:\n\r", ch ); ! show_list_to_char( obj->first_content, ch, TRUE, FALSE ); } if (IS_IMMORTAL(ch)) --- 2689,2695 ---- { set_char_color( AT_OBJECT, ch ); send_to_char( "Contents:\n\r", ch ); ! show_list_to_char( obj->first_content, ch, TRUE, FALSE, eItemBid ); } if (IS_IMMORTAL(ch)) *************** *** 3124,3130 **** OBJ_DATA* returned_obj; bool match = TRUE; char* argcopy; ! char* subject; char arg[MAX_INPUT_LENGTH]; char subj[MAX_STRING_LENGTH]; --- 3124,3130 ---- OBJ_DATA* returned_obj; bool match = TRUE; char* argcopy; ! const char* subject; char arg[MAX_INPUT_LENGTH]; char subj[MAX_STRING_LENGTH]; *************** *** 3185,3191 **** char roll_string[MAX_STRING_LENGTH]; char total_string[MAX_STRING_LENGTH]; ! char* verb; /* char* face_string = NULL; char** face_table = NULL;*/ --- 3185,3191 ---- char roll_string[MAX_STRING_LENGTH]; char total_string[MAX_STRING_LENGTH]; ! const char* verb; /* char* face_string = NULL; char** face_table = NULL;*/ *************** *** 3234,3240 **** ch_printf(ch, "Nice try, but you can only %s %d times.\n\r", verb, numsides); return; } ! face_seen_table = calloc(numsides, sizeof(bool)); if(!face_seen_table) { bug("do_rolldie: cannot allocate memory for face_seen_table array, terminating.\n\r",0); --- 3234,3240 ---- ch_printf(ch, "Nice try, but you can only %s %d times.\n\r", verb, numsides); return; } ! face_seen_table = (bool *) calloc(numsides, sizeof(bool)); if(!face_seen_table) { bug("do_rolldie: cannot allocate memory for face_seen_table array, terminating.\n\r",0); *************** *** 3314,3320 **** return NULL; } ! char* get_chance_verb(OBJ_DATA* obj) { return (obj->action_desc[0] != '\0') ? obj->action_desc : "roll$q"; } --- 3314,3320 ---- return NULL; } ! const char* get_chance_verb(OBJ_DATA* obj) { return (obj->action_desc[0] != '\0') ? obj->action_desc : "roll$q"; } diff -rc SmaugFUSS.orig/src/act_wiz.c SmaugFUSS/src/act_wiz.c *** SmaugFUSS.orig/src/act_wiz.c 2004-01-15 06:36:02.000000000 +1100 --- SmaugFUSS/src/act_wiz.c 2004-02-12 12:34:00.000000000 +1100 *************** *** 631,637 **** victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->class]->who_name, IS_PKILL( victim ) ? "Deadly" : "Peaceful" ); return; } --- 631,637 ---- victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->mudclass]->who_name, IS_PKILL( victim ) ? "Deadly" : "Peaceful" ); return; } *************** *** 1898,1909 **** pager_printf_color( ch, "&cLevel : &P%-2d ", victim->level ); pager_printf_color( ch, "&cclass : &w%-2.2d/%-10s &cRace : &w%-2.2d/%-10s\n\r", ! victim->class, ! IS_NPC(victim)?victim->classclass>=0? ! npc_class[victim->class] : "unknown":victim->classclass]->who_name&& ! class_table[victim->class]->who_name[0] != '\0'? ! class_table[victim->class]->who_name:"unknown", victim->race, IS_NPC(victim)?victim->racerace>=0? npc_race[victim->race] : "unknown":victim->racelevel ); pager_printf_color( ch, "&cclass : &w%-2.2d/%-10s &cRace : &w%-2.2d/%-10s\n\r", ! victim->mudclass, ! IS_NPC(victim)?victim->mudclassmudclass>=0? ! npc_class[victim->mudclass] : "unknown":victim->mudclassmudclass]->who_name&& ! class_table[victim->mudclass]->who_name[0] != '\0'? ! class_table[victim->mudclass]->who_name:"unknown", victim->race, IS_NPC(victim)?victim->racerace>=0? npc_race[victim->race] : "unknown":victim->raceguild == victim->pcdata->clan->class && skill_table[sn]->name != NULL) victim->pcdata->learned[sn] = 0; } --- 3582,3588 ---- int sn; for (sn = 0; sn < top_sn; sn++) ! if (skill_table[sn]->guild == victim->pcdata->clan->mudclass && skill_table[sn]->name != NULL) victim->pcdata->learned[sn] = 0; } *************** *** 4210,4216 **** { SET_BIT(victim->pcdata->flags, PCFLAG_NOTITLE); sprintf( buf, "the %s", ! title_table [victim->class] [victim->level] [victim->sex == SEX_FEMALE ? 1 : 0] ); set_title( victim, buf ); send_to_char( "You can't set your own title!\n\r", victim ); --- 4210,4216 ---- { SET_BIT(victim->pcdata->flags, PCFLAG_NOTITLE); sprintf( buf, "the %s", ! title_table [victim->mudclass] [victim->level] [victim->sex == SEX_FEMALE ? 1 : 0] ); set_title( victim, buf ); send_to_char( "You can't set your own title!\n\r", victim ); *************** *** 5087,5106 **** obj = create_object( get_obj_index(OBJ_VNUM_SCHOOL_BANNER), 1 ); obj_to_char(obj, victim); ! if ( (victim->class == CLASS_MAGE) || (victim->class == CLASS_THIEF) ! || (victim->class == CLASS_VAMPIRE) || (victim->class == CLASS_AUGURER) ) { obj = create_object( get_obj_index(OBJ_VNUM_SCHOOL_DAGGER), 1 ); obj_to_char(obj, victim); } ! else if ((victim->class == CLASS_CLERIC) || (victim->class == CLASS_DRUID)) { obj = create_object( get_obj_index(OBJ_VNUM_SCHOOL_MACE), 1 ); obj_to_char(obj, victim); } ! else if ( (victim->class == CLASS_WARRIOR) || ! (victim->class == CLASS_RANGER) || ! (victim->class == CLASS_PALADIN) ) { obj = create_object(get_obj_index(OBJ_VNUM_SCHOOL_SWORD), 1 ); obj_to_char(obj, victim); --- 5087,5106 ---- obj = create_object( get_obj_index(OBJ_VNUM_SCHOOL_BANNER), 1 ); obj_to_char(obj, victim); ! if ( (victim->mudclass == CLASS_MAGE) || (victim->mudclass == CLASS_THIEF) ! || (victim->mudclass == CLASS_VAMPIRE) || (victim->mudclass == CLASS_AUGURER) ) { obj = create_object( get_obj_index(OBJ_VNUM_SCHOOL_DAGGER), 1 ); obj_to_char(obj, victim); } ! else if ((victim->mudclass == CLASS_CLERIC) || (victim->mudclass == CLASS_DRUID)) { obj = create_object( get_obj_index(OBJ_VNUM_SCHOOL_MACE), 1 ); obj_to_char(obj, victim); } ! else if ( (victim->mudclass == CLASS_WARRIOR) || ! (victim->mudclass == CLASS_RANGER) || ! (victim->mudclass == CLASS_PALADIN) ) { obj = create_object(get_obj_index(OBJ_VNUM_SCHOOL_SWORD), 1 ); obj_to_char(obj, victim); *************** *** 7250,7256 **** { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; ! struct class_type *class; int cl, low, hi; set_pager_color( AT_PLAIN, ch ); --- 7250,7256 ---- { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; ! struct class_type *mudclass; int cl, low, hi; set_pager_color( AT_PLAIN, ch ); *************** *** 7263,7298 **** return; } if ( is_number(arg1) && (cl=atoi(arg1)) >= 0 && cl < MAX_CLASS ) ! class = class_table[cl]; else { ! class = NULL; for ( cl = 0; cl < MAX_CLASS && class_table[cl]; cl++ ) if ( !str_cmp(class_table[cl]->who_name, arg1) ) { ! class = class_table[cl]; break; } } ! if ( !class ) { send_to_char( "No such class.\n\r", ch ); return; } pager_printf_color( ch, "&wCLASS: &W%s\n\r&wPrime Attribute: &W%-14s &wWeapon: &W%-5d &wGuild: &W%-5d\n\r", ! class->who_name, affect_loc_name(class->attr_prime), class->weapon, class->guild ); pager_printf_color( ch, "&wSecond Attribute: &W%-14s &wDeficient Attribute: &W%-14s\n\r", ! affect_loc_name(class->attr_second), affect_loc_name(class->attr_deficient) ); pager_printf_color( ch, "&wMax Skill Adept: &W%-3d &wThac0 : &W%-5d &wThac32: &W%d\n\r", ! class->skill_adept, class->thac0_00, class->thac0_32 ); pager_printf_color( ch, "&wHp Min/Hp Max : &W%-2d/%-2d &wMana : &W%-3s &wExpBase: &W%d\n\r", ! class->hp_min, class->hp_max, class->fMana ? "yes" : "no ", class->exp_base ); pager_printf_color( ch, "&wAffected by: &W%s\n\r", ! affect_bit_name( &class->affected ) ); pager_printf_color( ch, "&wResistant to: &W%s\n\r", ! flag_string(class->resist, ris_flags )); pager_printf_color( ch, "&wSusceptible to: &W%s\n\r", ! flag_string(class->suscept, ris_flags ) ); if ( arg2[0] != '\0' ) { int x, y, cnt; --- 7263,7298 ---- return; } if ( is_number(arg1) && (cl=atoi(arg1)) >= 0 && cl < MAX_CLASS ) ! mudclass = class_table[cl]; else { ! mudclass = NULL; for ( cl = 0; cl < MAX_CLASS && class_table[cl]; cl++ ) if ( !str_cmp(class_table[cl]->who_name, arg1) ) { ! mudclass = class_table[cl]; break; } } ! if ( !mudclass ) { send_to_char( "No such class.\n\r", ch ); return; } pager_printf_color( ch, "&wCLASS: &W%s\n\r&wPrime Attribute: &W%-14s &wWeapon: &W%-5d &wGuild: &W%-5d\n\r", ! mudclass->who_name, affect_loc_name(mudclass->attr_prime), mudclass->weapon, mudclass->guild ); pager_printf_color( ch, "&wSecond Attribute: &W%-14s &wDeficient Attribute: &W%-14s\n\r", ! affect_loc_name(mudclass->attr_second), affect_loc_name(mudclass->attr_deficient) ); pager_printf_color( ch, "&wMax Skill Adept: &W%-3d &wThac0 : &W%-5d &wThac32: &W%d\n\r", ! mudclass->skill_adept, mudclass->thac0_00, mudclass->thac0_32 ); pager_printf_color( ch, "&wHp Min/Hp Max : &W%-2d/%-2d &wMana : &W%-3s &wExpBase: &W%d\n\r", ! mudclass->hp_min, mudclass->hp_max, mudclass->fMana ? "yes" : "no ", mudclass->exp_base ); pager_printf_color( ch, "&wAffected by: &W%s\n\r", ! affect_bit_name( &mudclass->affected ) ); pager_printf_color( ch, "&wResistant to: &W%s\n\r", ! flag_string(mudclass->resist, ris_flags )); pager_printf_color( ch, "&wSusceptible to: &W%s\n\r", ! flag_string(mudclass->suscept, ris_flags ) ); if ( arg2[0] != '\0' ) { int x, y, cnt; *************** *** 7367,7373 **** char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; FILE *fpList; char classlist[256]; ! struct class_type *class; int cl, value, i; set_char_color( AT_PLAIN, ch ); --- 7367,7373 ---- char arg1[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; FILE *fpList; char classlist[256]; ! struct class_type *mudclass; int cl, value, i; set_char_color( AT_PLAIN, ch ); *************** *** 7387,7414 **** return; } if( is_number(arg1) && ( cl = atoi( arg1 ) ) >= 0 && cl < MAX_CLASS ) ! class = class_table[cl]; else { ! class = NULL; for ( cl = 0; cl < MAX_CLASS && class_table[cl]; cl++ ) { if ( !class_table[cl]->who_name ) continue; if ( !str_cmp( class_table[cl]->who_name, arg1 ) ) { ! class = class_table[cl]; break; } } } ! if ( !str_cmp( arg2, "create" ) && class ) { send_to_char( "That class already exists!\n\r", ch ); return; } ! if ( !class && str_cmp( arg2, "create" ) ) { send_to_char( "No such class.\n\r", ch ); return; --- 7387,7414 ---- return; } if( is_number(arg1) && ( cl = atoi( arg1 ) ) >= 0 && cl < MAX_CLASS ) ! mudclass = class_table[cl]; else { ! mudclass = NULL; for ( cl = 0; cl < MAX_CLASS && class_table[cl]; cl++ ) { if ( !class_table[cl]->who_name ) continue; if ( !str_cmp( class_table[cl]->who_name, arg1 ) ) { ! mudclass = class_table[cl]; break; } } } ! if ( !str_cmp( arg2, "create" ) && mudclass ) { send_to_char( "That class already exists!\n\r", ch ); return; } ! if ( !mudclass && str_cmp( arg2, "create" ) ) { send_to_char( "No such class.\n\r", ch ); return; *************** *** 7479,7487 **** { char buf[256]; ! snprintf( buf, 256, "%s%s.class", CLASSDIR, class->who_name ); ! STRFREE( class->who_name ); ! class->who_name = STRALLOC( capitalize( argument ) ); ch_printf( ch, "class %s renamed to %s.\n\r", arg1, argument ); write_class_file( cl ); unlink( buf ); --- 7479,7487 ---- { char buf[256]; ! snprintf( buf, 256, "%s%s.class", CLASSDIR, mudclass->who_name ); ! STRFREE( mudclass->who_name ); ! mudclass->who_name = STRALLOC( capitalize( argument ) ); ch_printf( ch, "class %s renamed to %s.\n\r", arg1, argument ); write_class_file( cl ); unlink( buf ); *************** *** 7516,7522 **** if ( value < 0 || value > MAX_BITS ) ch_printf( ch, "Unknown flag: %s\n\r", arg2 ); else ! xTOGGLE_BIT( class->affected, value ); } send_to_char( "Done.\n\r", ch ); write_class_file( cl ); --- 7516,7522 ---- if ( value < 0 || value > MAX_BITS ) ch_printf( ch, "Unknown flag: %s\n\r", arg2 ); else ! xTOGGLE_BIT( mudclass->affected, value ); } send_to_char( "Done.\n\r", ch ); write_class_file( cl ); *************** *** 7537,7543 **** if ( value < 0 || value > 31 ) ch_printf( ch, "Unknown flag: %s\n\r", arg2 ); else ! TOGGLE_BIT( class->resist, 1 << value ); } send_to_char( "Done.\n\r", ch ); write_class_file( cl ); --- 7537,7543 ---- if ( value < 0 || value > 31 ) ch_printf( ch, "Unknown flag: %s\n\r", arg2 ); else ! TOGGLE_BIT( mudclass->resist, 1 << value ); } send_to_char( "Done.\n\r", ch ); write_class_file( cl ); *************** *** 7558,7564 **** if ( value < 0 || value > 31 ) ch_printf( ch, "Unknown flag: %s\n\r", arg2 ); else ! TOGGLE_BIT( class->suscept, 1 << value ); } send_to_char( "Done.\n\r", ch ); write_class_file( cl ); --- 7558,7564 ---- if ( value < 0 || value > 31 ) ch_printf( ch, "Unknown flag: %s\n\r", arg2 ); else ! TOGGLE_BIT( mudclass->suscept, 1 << value ); } send_to_char( "Done.\n\r", ch ); write_class_file( cl ); *************** *** 7573,7579 **** send_to_char( "Invalid prime attribute!\n\r", ch ); else { ! class->attr_prime = x; send_to_char( "Prime attribute set.\n\r", ch ); write_class_file( cl ); } --- 7573,7579 ---- send_to_char( "Invalid prime attribute!\n\r", ch ); else { ! mudclass->attr_prime = x; send_to_char( "Prime attribute set.\n\r", ch ); write_class_file( cl ); } *************** *** 7581,7601 **** } if ( !str_cmp( arg2, "weapon" ) ) { ! class->weapon = atoi( argument ); send_to_char( "Starting weapon set.\n\r", ch ); write_class_file( cl ); return; } if ( !str_cmp( arg2, "hpmin" ) ) { ! class->hp_min = atoi( argument ); send_to_char( "Min HP gain set.\n\r", ch ); write_class_file( cl ); return; } if ( !str_cmp( arg2, "hpmax" ) ) { ! class->hp_max = atoi( argument ); send_to_char( "Max HP gain set.\n\r", ch ); write_class_file( cl ); return; --- 7581,7601 ---- } if ( !str_cmp( arg2, "weapon" ) ) { ! mudclass->weapon = atoi( argument ); send_to_char( "Starting weapon set.\n\r", ch ); write_class_file( cl ); return; } if ( !str_cmp( arg2, "hpmin" ) ) { ! mudclass->hp_min = atoi( argument ); send_to_char( "Min HP gain set.\n\r", ch ); write_class_file( cl ); return; } if ( !str_cmp( arg2, "hpmax" ) ) { ! mudclass->hp_max = atoi( argument ); send_to_char( "Max HP gain set.\n\r", ch ); write_class_file( cl ); return; *************** *** 7603,7611 **** if ( !str_cmp( arg2, "mana" ) ) { if ( UPPER(argument[0]) == 'Y' ) ! class->fMana = TRUE; else ! class->fMana = FALSE; send_to_char( "Mana flag toggled.\n\r", ch ); write_class_file( cl ); return; --- 7603,7611 ---- if ( !str_cmp( arg2, "mana" ) ) { if ( UPPER(argument[0]) == 'Y' ) ! mudclass->fMana = TRUE; else ! mudclass->fMana = FALSE; send_to_char( "Mana flag toggled.\n\r", ch ); write_class_file( cl ); return; *************** *** 8872,8878 **** ch->substate = SUB_NONE; return; } ! pproject = ch->dest_buf; STRFREE( pproject->description ); pproject->description = copy_buffer ( ch ); stop_editing( ch ); --- 8872,8878 ---- ch->substate = SUB_NONE; return; } ! pproject = (PROJECT_DATA *) ch->dest_buf; STRFREE( pproject->description ); pproject->description = copy_buffer ( ch ); stop_editing( ch ); diff -rc SmaugFUSS.orig/src/ban.c SmaugFUSS/src/ban.c *** SmaugFUSS.orig/src/ban.c 2002-12-30 10:25:52.000000000 +1100 --- SmaugFUSS/src/ban.c 2004-02-12 12:28:21.000000000 +1100 *************** *** 60,66 **** } for ( ; ; ) { ! word = feof (fp) ? "END" : fread_word ( fp ); fMatch = FALSE; switch ( UPPER ( word[0] ) ) { --- 60,66 ---- } for ( ; ; ) { ! word = feof (fp) ? (char *) "END" : fread_word ( fp ); fMatch = FALSE; switch ( UPPER ( word[0] ) ) { *************** *** 975,981 **** return 1; } case SUB_BAN_DESC: ! pban = ch->dest_buf; if ( !pban ) { bug ("do_ban: sub_ban_desc: NULL ch->dest_buf", 0); --- 975,981 ---- return 1; } case SUB_BAN_DESC: ! pban = (BAN_DATA *) ch->dest_buf; if ( !pban ) { bug ("do_ban: sub_ban_desc: NULL ch->dest_buf", 0); *************** *** 1170,1176 **** return FALSE; } for ( ; pban; pban = pban->next ) { ! if ( type == BAN_CLASS && pban->flag == ch->class ) { if ( check_expire( pban ) ) { --- 1170,1176 ---- return FALSE; } for ( ; pban; pban = pban->next ) { ! if ( type == BAN_CLASS && pban->flag == ch->mudclass ) { if ( check_expire( pban ) ) { diff -rc SmaugFUSS.orig/src/boards.c SmaugFUSS/src/boards.c *** SmaugFUSS.orig/src/boards.c 2003-05-09 02:28:32.000000000 +1000 --- SmaugFUSS/src/boards.c 2004-02-12 12:49:05.000000000 +1100 *************** *** 426,432 **** stop_editing( ch ); return; } ! ed = ch->dest_buf; STRFREE( ed->description ); ed->description = copy_buffer( ch ); stop_editing( ch ); --- 426,432 ---- stop_editing( ch ); return; } ! ed = (EXTRA_DESCR_DATA *) ch->dest_buf; STRFREE( ed->description ); ed->description = copy_buffer( ch ); stop_editing( ch ); *************** *** 1003,1009 **** if ( !str_cmp( arg, "show" ) ) { ! char *subject, *to_list, *text; if ( ( paper = get_eq_char(ch, WEAR_HOLD) ) == NULL || paper->item_type != ITEM_PAPER ) --- 1003,1009 ---- if ( !str_cmp( arg, "show" ) ) { ! const char *subject, *to_list, *text; if ( ( paper = get_eq_char(ch, WEAR_HOLD) ) == NULL || paper->item_type != ITEM_PAPER ) *************** *** 1090,1096 **** CREATE( pnote, NOTE_DATA, 1 ); pnote->date = STRALLOC( strtime ); ! pnote->to_list = to ? STRALLOC( to ) : STRALLOC( "all" ); pnote->text = text ? STRALLOC( text ) : STRALLOC( "" ); pnote->subject = subj ? STRALLOC( subj ) : STRALLOC( "" ); pnote->sender = QUICKLINK( ch->name ); --- 1090,1096 ---- CREATE( pnote, NOTE_DATA, 1 ); pnote->date = STRALLOC( strtime ); ! pnote->to_list = to ? STRALLOC( to ) : STRALLOC("all" ); pnote->text = text ? STRALLOC( text ) : STRALLOC( "" ); pnote->subject = subj ? STRALLOC( subj ) : STRALLOC( "" ); pnote->sender = QUICKLINK( ch->name ); *************** *** 1309,1315 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 1309,1315 ---- for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); fMatch = FALSE; switch ( UPPER(word[0]) ) diff -rc SmaugFUSS.orig/src/build.c SmaugFUSS/src/build.c *** SmaugFUSS.orig/src/build.c 2003-11-14 09:28:35.000000000 +1100 --- SmaugFUSS/src/build.c 2004-02-12 12:36:34.000000000 +1100 *************** *** 466,472 **** return FALSE; } ! int get_otype( char *type ) { int x; --- 466,472 ---- return FALSE; } ! int get_otype( const char *type ) { int x; *************** *** 476,482 **** return -1; } ! int get_aflag( char *flag ) { int x; --- 476,482 ---- return -1; } ! int get_aflag( const char *flag ) { int x; *************** *** 496,502 **** return -1; } ! int get_atype( char *type ) { int x; --- 496,502 ---- return -1; } ! int get_atype( const char *type ) { int x; *************** *** 516,527 **** return -1; } ! int get_pc_class( char *class ) { int x; for ( x = 0; x < MAX_PC_CLASS; x++ ) ! if ( !str_cmp ( class_table[x]->who_name, class ) ) return x; return -1; } --- 516,527 ---- return -1; } ! int get_pc_class( char *mudclass ) { int x; for ( x = 0; x < MAX_PC_CLASS; x++ ) ! if ( !str_cmp ( class_table[x]->who_name, mudclass ) ) return x; return -1; } *************** *** 556,562 **** return -1; } ! int get_exflag( char *flag ) { int x; --- 556,562 ---- return -1; } ! int get_exflag( const char *flag ) { int x; *************** *** 592,598 **** return -1; } ! int get_rflag( char *flag ) { int x; --- 592,598 ---- return -1; } ! int get_rflag( const char *flag ) { int x; *************** *** 612,618 **** return -1; } ! int get_oflag( char *flag ) { int x; --- 612,618 ---- return -1; } ! int get_oflag( const char *flag ) { int x; *************** *** 632,638 **** return -1; } ! int get_wflag( char *flag ) { int x; --- 632,638 ---- return -1; } ! int get_wflag( const char *flag ) { int x; *************** *** 1129,1135 **** ch->substate = SUB_NONE; return; } ! victim = ch->dest_buf; if ( char_died(victim) ) { send_to_char( "Your victim died!\n\r", ch ); --- 1129,1135 ---- ch->substate = SUB_NONE; return; } ! victim = (CHAR_DATA *) ch->dest_buf; if ( char_died(victim) ) { send_to_char( "Your victim died!\n\r", ch ); *************** *** 1154,1160 **** if ( ch->substate == SUB_REPEATCMD ) { ! victim = ch->dest_buf; if ( !victim ) --- 1154,1160 ---- if ( ch->substate == SUB_REPEATCMD ) { ! victim = (CHAR_DATA *) ch->dest_buf; if ( !victim ) *************** *** 1521,1529 **** ch_printf( ch, "NPC Class range is 0 to %d.\n", MAX_NPC_CLASS-1 ); return; } ! victim->class = value; if ( xIS_SET(victim->act, ACT_PROTOTYPE) ) ! victim->pIndexData->class = value; return; } --- 1521,1529 ---- ch_printf( ch, "NPC Class range is 0 to %d.\n", MAX_NPC_CLASS-1 ); return; } ! victim->mudclass = value; if ( xIS_SET(victim->act, ACT_PROTOTYPE) ) ! victim->pIndexData->mudclass = value; return; } *************** *** 1533,1539 **** ch_printf( ch, "Class range is 0 to %d.\n", MAX_CLASS ); return; } ! victim->class = value; return; } --- 1533,1539 ---- ch_printf( ch, "Class range is 0 to %d.\n", MAX_CLASS ); return; } ! victim->mudclass = value; return; } *************** *** 2868,2874 **** int sn; for (sn = 0; sn < top_sn; sn++) ! if (skill_table[sn]->guild == victim->pcdata->clan->class && skill_table[sn]->name != NULL) victim->pcdata->learned[sn] = 0; } --- 2868,2874 ---- int sn; for (sn = 0; sn < top_sn; sn++) ! if (skill_table[sn]->guild == victim->pcdata->clan->mudclass && skill_table[sn]->name != NULL) victim->pcdata->learned[sn] = 0; } *************** *** 3045,3054 **** * the object and index-object lists, searching through the * extra_descr lists for a matching pointer... */ ! ed = ch->dest_buf; STRFREE( ed->description ); ed->description = copy_buffer( ch ); ! tmpobj = ch->spare_ptr; stop_editing( ch ); ch->dest_buf = tmpobj; ch->substate = ch->tempnum; --- 3045,3054 ---- * the object and index-object lists, searching through the * extra_descr lists for a matching pointer... */ ! ed = (EXTRA_DESCR_DATA *) ch->dest_buf; STRFREE( ed->description ); ed->description = copy_buffer( ch ); ! tmpobj = (OBJ_DATA *) ch->spare_ptr; stop_editing( ch ); ch->dest_buf = tmpobj; ch->substate = ch->tempnum; *************** *** 3062,3068 **** ch->substate = SUB_NONE; return; } ! obj = ch->dest_buf; if ( obj && obj_extracted(obj) ) { send_to_char( "Your object was extracted!\n\r", ch ); --- 3062,3068 ---- ch->substate = SUB_NONE; return; } ! obj = (OBJ_DATA *) ch->dest_buf; if ( obj && obj_extracted(obj) ) { send_to_char( "Your object was extracted!\n\r", ch ); *************** *** 3079,3085 **** obj->pIndexData->description = QUICKLINK( obj->description ); } } ! tmpobj = ch->spare_ptr; stop_editing( ch ); ch->substate = ch->tempnum; ch->dest_buf = tmpobj; --- 3079,3085 ---- obj->pIndexData->description = QUICKLINK( obj->description ); } } ! tmpobj = (OBJ_DATA *) ch->spare_ptr; stop_editing( ch ); ch->substate = ch->tempnum; ch->dest_buf = tmpobj; *************** *** 3092,3098 **** if ( ch->substate == SUB_REPEATCMD ) { ! obj = ch->dest_buf; if ( !obj ) { send_to_char( "Your object was extracted!\n\r", ch ); --- 3092,3098 ---- if ( ch->substate == SUB_REPEATCMD ) { ! obj = (OBJ_DATA *) ch->dest_buf; if ( !obj ) { send_to_char( "Your object was extracted!\n\r", ch ); *************** *** 4231,4237 **** default: break; case SUB_ROOM_DESC: ! location = ch->dest_buf; if ( !location ) { bug( "redit: sub_room_desc: NULL ch->dest_buf", 0 ); --- 4231,4237 ---- default: break; case SUB_ROOM_DESC: ! location = (ROOM_INDEX_DATA *) ch->dest_buf; if ( !location ) { bug( "redit: sub_room_desc: NULL ch->dest_buf", 0 ); *************** *** 4243,4249 **** ch->substate = ch->tempnum; return; case SUB_ROOM_EXTRA: ! ed = ch->dest_buf; if ( !ed ) { bug( "redit: sub_room_extra: NULL ch->dest_buf", 0 ); --- 4243,4249 ---- ch->substate = ch->tempnum; return; case SUB_ROOM_EXTRA: ! ed = (EXTRA_DESCR_DATA *) ch->dest_buf; if ( !ed ) { bug( "redit: sub_room_extra: NULL ch->dest_buf", 0 ); *************** *** 5931,5937 **** || pMobIndex->perm_con != 13 || pMobIndex->perm_cha != 13 || pMobIndex->perm_lck != 13 || pMobIndex->hitroll != 0 || pMobIndex->damroll != 0 ! || pMobIndex->race != 0 || pMobIndex->class != 3 || !xIS_EMPTY(pMobIndex->attacks) || !xIS_EMPTY(pMobIndex->defenses) || pMobIndex->height != 0 || pMobIndex->weight != 0 --- 5931,5937 ---- || pMobIndex->perm_con != 13 || pMobIndex->perm_cha != 13 || pMobIndex->perm_lck != 13 || pMobIndex->hitroll != 0 || pMobIndex->damroll != 0 ! || pMobIndex->race != 0 || pMobIndex->mudclass != 3 || !xIS_EMPTY(pMobIndex->attacks) || !xIS_EMPTY(pMobIndex->defenses) || pMobIndex->height != 0 || pMobIndex->weight != 0 *************** *** 5983,5989 **** pMobIndex->saving_spell_staff ); fprintf( fpout, "%d %d %d %d %d %d %d\n", pMobIndex->race, ! pMobIndex->class, pMobIndex->height, pMobIndex->weight, pMobIndex->speaks, --- 5983,5989 ---- pMobIndex->saving_spell_staff ); fprintf( fpout, "%d %d %d %d %d %d %d\n", pMobIndex->race, ! pMobIndex->mudclass, pMobIndex->height, pMobIndex->weight, pMobIndex->speaks, *************** *** 7470,7476 **** ch->substate = SUB_NONE; return; } ! mprog = ch->dest_buf; if ( mprog->comlist ) STRFREE( mprog->comlist ); mprog->comlist = copy_buffer( ch ); --- 7470,7476 ---- ch->substate = SUB_NONE; return; } ! mprog = (MPROG_DATA *) ch->dest_buf; if ( mprog->comlist ) STRFREE( mprog->comlist ); mprog->comlist = copy_buffer( ch ); *************** *** 7802,7808 **** ch->substate = SUB_NONE; return; } ! mprog = ch->dest_buf; if ( mprog->comlist ) STRFREE( mprog->comlist ); mprog->comlist = copy_buffer( ch ); --- 7802,7808 ---- ch->substate = SUB_NONE; return; } ! mprog = (MPROG_DATA *) ch->dest_buf; if ( mprog->comlist ) STRFREE( mprog->comlist ); mprog->comlist = copy_buffer( ch ); *************** *** 8105,8111 **** ch->substate = SUB_NONE; return; } ! mprog = ch->dest_buf; if ( mprog->comlist ) STRFREE( mprog->comlist ); mprog->comlist = copy_buffer( ch ); --- 8105,8111 ---- ch->substate = SUB_NONE; return; } ! mprog = (MPROG_DATA *) ch->dest_buf; if ( mprog->comlist ) STRFREE( mprog->comlist ); mprog->comlist = copy_buffer( ch ); diff -rc SmaugFUSS.orig/src/clans.c SmaugFUSS/src/clans.c *** SmaugFUSS.orig/src/clans.c 2002-12-30 15:39:37.000000000 +1100 --- SmaugFUSS/src/clans.c 2004-02-12 12:58:26.000000000 +1100 *************** *** 154,160 **** fprintf( fp, "IllegalPK %d\n", clan->illegal_pk ); fprintf( fp, "Score %d\n", clan->score ); fprintf( fp, "Type %d\n", clan->clan_type ); ! fprintf( fp, "Class %d\n", clan->class ); fprintf( fp, "Favour %d\n", clan->favour ); fprintf( fp, "Strikes %d\n", clan->strikes ); fprintf( fp, "Members %d\n", clan->members ); --- 154,160 ---- fprintf( fp, "IllegalPK %d\n", clan->illegal_pk ); fprintf( fp, "Score %d\n", clan->score ); fprintf( fp, "Type %d\n", clan->clan_type ); ! fprintf( fp, "Class %d\n", clan->mudclass ); fprintf( fp, "Favour %d\n", clan->favour ); fprintf( fp, "Strikes %d\n", clan->strikes ); fprintf( fp, "Members %d\n", clan->members ); *************** *** 268,274 **** clan->mem_limit = 0; /* Set up defaults */ for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 268,275 ---- clan->mem_limit = 0; /* Set up defaults */ for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 293,299 **** KEY( "ClanObjThree",clan->clanobj3, fread_number( fp ) ); KEY( "ClanObjFour", clan->clanobj4, fread_number( fp ) ); KEY( "ClanObjFive", clan->clanobj5, fread_number( fp ) ); ! KEY( "Class", clan->class, fread_number( fp ) ); break; case 'D': --- 294,300 ---- KEY( "ClanObjThree",clan->clanobj3, fread_number( fp ) ); KEY( "ClanObjFour", clan->clanobj4, fread_number( fp ) ); KEY( "ClanObjFive", clan->clanobj5, fread_number( fp ) ); ! KEY( "Class", clan->mudclass, fread_number( fp ) ); break; case 'D': *************** *** 464,470 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 465,471 ---- for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 769,775 **** for ( ; ; ) { ! filename = feof( fpList ) ? "$" : fread_word( fpList ); log_string( filename ); if ( filename[0] == '$' ) break; --- 770,776 ---- for ( ; ; ) { ! filename = feof(fpList) ? (char *) "$" : fread_word(fpList); log_string( filename ); if ( filename[0] == '$' ) break; *************** *** 812,818 **** for ( ; ; ) { ! filename = feof( fpList ) ? "$" : fread_word( fpList ); log_string( filename ); if ( filename[0] == '$' ) break; --- 813,820 ---- for ( ; ; ) { ! filename = feof(fpList) ? (char *) "$" : fread_word(fpList); ! log_string( filename ); if ( filename[0] == '$' ) break; *************** *** 958,964 **** if ( clan->clan_type == CLAN_GUILD ) { ! if ( victim->class != clan->class) { send_to_char( "This player's will is not in accordance with your guild.\n\r", ch); return; --- 960,966 ---- if ( clan->clan_type == CLAN_GUILD ) { ! if ( victim->mudclass != clan->mudclass) { send_to_char( "This player's will is not in accordance with your guild.\n\r", ch); return; *************** *** 1027,1033 **** for ( sn = 0; sn < top_sn; sn++ ) { ! if (skill_table[sn]->guild == clan->class && skill_table[sn]->name != NULL ) { victim->pcdata->learned[sn] = GET_ADEPT(victim, sn); --- 1029,1035 ---- for ( sn = 0; sn < top_sn; sn++ ) { ! if (skill_table[sn]->guild == clan->mudclass && skill_table[sn]->name != NULL ) { victim->pcdata->learned[sn] = GET_ADEPT(victim, sn); *************** *** 1214,1220 **** int sn; for ( sn = 0; sn < top_sn; sn++ ) ! if ( skill_table[sn]->guild == victim->pcdata->clan->class && skill_table[sn]->name != NULL ) { victim->pcdata->learned[sn] = 0; --- 1216,1222 ---- int sn; for ( sn = 0; sn < top_sn; sn++ ) ! if ( skill_table[sn]->guild == victim->pcdata->clan->mudclass && skill_table[sn]->name != NULL ) { victim->pcdata->learned[sn] = 0; *************** *** 1541,1547 **** } if ( !str_cmp( arg2, "class" ) ) { ! clan->class = atoi( argument ); send_to_char( "Done.\n\r", ch ); save_clan( clan ); return; --- 1543,1549 ---- } if ( !str_cmp( arg2, "class" ) ) { ! clan->mudclass = atoi( argument ); send_to_char( "Done.\n\r", ch ); save_clan( clan ); return; *************** *** 1836,1843 **** clan->alignment ); if ( clan->clan_type == CLAN_GUILD ) ch_printf_color( ch, " &wClass : &W%d &w(&W%s&w)", ! clan->class, ! clan->classclass]->who_name: "unknown" ); send_to_char( "\n\r", ch ); ch_printf_color( ch, "&wBoard : &W%-5d &wRecall : &W%-5d &wStorage: &W%-5d\n\r", --- 1838,1845 ---- clan->alignment ); if ( clan->clan_type == CLAN_GUILD ) ch_printf_color( ch, " &wClass : &W%d &w(&W%s&w)", ! clan->mudclass, ! clan->mudclassmudclass]->who_name: "unknown" ); send_to_char( "\n\r", ch ); ch_printf_color( ch, "&wBoard : &W%-5d &wRecall : &W%-5d &wStorage: &W%-5d\n\r", *************** *** 2323,2341 **** } /* Check for class, assign percentage based on that. */ ! if (ch->class == CLASS_WARRIOR) chance = 70; ! if (ch->class == CLASS_VAMPIRE) chance = 65; ! if (ch->class == CLASS_RANGER) chance = 60; ! if (ch->class == CLASS_DRUID) chance = 45; ! if (ch->class == CLASS_CLERIC) chance = 35; ! if (ch->class == CLASS_THIEF) chance = 30; ! if (ch->class == CLASS_MAGE) chance = 15; /* Add 3 points to chance for every str point above 15, subtract for --- 2325,2343 ---- } /* Check for class, assign percentage based on that. */ ! if (ch->mudclass == CLASS_WARRIOR) chance = 70; ! if (ch->mudclass == CLASS_VAMPIRE) chance = 65; ! if (ch->mudclass == CLASS_RANGER) chance = 60; ! if (ch->mudclass == CLASS_DRUID) chance = 45; ! if (ch->mudclass == CLASS_CLERIC) chance = 35; ! if (ch->mudclass == CLASS_THIEF) chance = 30; ! if (ch->mudclass == CLASS_MAGE) chance = 15; /* Add 3 points to chance for every str point above 15, subtract for *************** *** 2534,2552 **** } /* Check for class, assign percentage based on that. */ ! if (ch->class == CLASS_WARRIOR) chance = 70; ! if (ch->class == CLASS_VAMPIRE) chance = 65; ! if (ch->class == CLASS_RANGER) chance = 60; ! if (ch->class == CLASS_DRUID) chance = 45; ! if (ch->class == CLASS_CLERIC) chance = 35; ! if (ch->class == CLASS_THIEF) chance = 30; ! if (ch->class == CLASS_MAGE) chance = 15; /* Add 3 points to chance for every str point above 15, subtract for --- 2536,2554 ---- } /* Check for class, assign percentage based on that. */ ! if (ch->mudclass == CLASS_WARRIOR) chance = 70; ! if (ch->mudclass == CLASS_VAMPIRE) chance = 65; ! if (ch->mudclass == CLASS_RANGER) chance = 60; ! if (ch->mudclass == CLASS_DRUID) chance = 45; ! if (ch->mudclass == CLASS_CLERIC) chance = 35; ! if (ch->mudclass == CLASS_THIEF) chance = 30; ! if (ch->mudclass == CLASS_MAGE) chance = 15; /* Add 3 points to chance for every str point above 15, subtract for diff -rc SmaugFUSS.orig/src/color.c SmaugFUSS/src/color.c *** SmaugFUSS.orig/src/color.c 2004-01-15 06:50:39.000000000 +1100 --- SmaugFUSS/src/color.c 2004-02-12 12:27:15.000000000 +1100 *************** *** 58,67 **** * 2. Add the default color(s) to the end of the default_set array. */ - #include #include #include "mud.h" char * const pc_displays[MAX_COLORS] = { "black", "dred", "dgreen", "orange", --- 58,71 ---- * 2. Add the default color(s) to the end of the default_set array. */ #include + #include + #include #include "mud.h" + int count_mxp_tags (const int bMXP, const char *txt, int length); + void convert_mxp_tags (const int bMXP, char * dest, const char *src, int length); + char * const pc_displays[MAX_COLORS] = { "black", "dred", "dgreen", "orange", *************** *** 87,93 **** "who4", "intermud", "helpfiles", "who5", "score5", "who6", "who7", "prac", "prac2", "prac3", "prac4", "mxpprompt", ! "guildtalk", "board", "board2", "board3" }; /* All defaults are set to Alsherok default scheme, if you don't --- 91,98 ---- "who4", "intermud", "helpfiles", "who5", "score5", "who6", "who7", "prac", "prac2", "prac3", "prac4", "mxpprompt", ! "guildtalk", "ooc", "avatar", "ship", ! "clan" }; /* All defaults are set to Alsherok default scheme, if you don't *************** *** 118,124 **** AT_GREEN, AT_PINK, AT_DGREEN, AT_CYAN, /* 83 */ AT_RED, AT_WHITE, AT_BLUE, AT_DGREEN, /* 87 */ AT_CYAN, AT_BLOOD, AT_RED, AT_DGREEN, /* 91 */ ! AT_GREEN, AT_GREY, AT_GREEN, AT_WHITE /* 95 */ }; char * const valid_color[] = --- 123,130 ---- AT_GREEN, AT_PINK, AT_DGREEN, AT_CYAN, /* 83 */ AT_RED, AT_WHITE, AT_BLUE, AT_DGREEN, /* 87 */ AT_CYAN, AT_BLOOD, AT_RED, AT_DGREEN, /* 91 */ ! AT_GREEN, AT_GREEN, AT_GREEN, AT_GREEN, /* 95 */ ! AT_GREEN }; char * const valid_color[] = *************** *** 142,156 **** "\0" }; void show_colors( CHAR_DATA *ch ) { sh_int count; ! send_to_pager( "&BSyntax: color [color type] [color] | default\n\r", ch ); ! send_to_pager( "&BSyntax: color _reset_ (Resets all colors to default set)\n\r", ch ); ! send_to_pager( "&BSyntax: color _all_ [color] (Sets all color types to [color])\n\r\n\r", ch ); ! send_to_pager( "&W********************************[ COLORS ]*********************************\n\r", ch ); for ( count = 0; count < 16; ++count ) { --- 148,408 ---- "\0" }; + /* Color align functions by Justice@Aaern */ + int const_color_str_len( const char *argument ) + { + int str, count = 0; + bool IS_COLOR = FALSE; + + for ( str = 0; argument[str] != '\0'; str++ ) + { + if ( argument[str] == '&' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + #ifdef OVERLANDCODE + else if ( argument[str] == '{' ) + #else + else if ( argument[str] == '^' ) + #endif + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else if ( argument[str] == '}' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else + { + if ( IS_COLOR == FALSE ) count++; + else IS_COLOR = FALSE; + } + } + + return count; + } + + int const_color_strnlen( const char *argument, int maxlength ) + { + int str, count = 0; + bool IS_COLOR = FALSE; + + for ( str = 0; argument[str] != '\0'; str++ ) + { + if ( argument[str] == '&' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + #ifdef OVERLANDCODE + else if ( argument[str] == '{' ) + #else + else if ( argument[str] == '^' ) + #endif + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else if ( argument[str] == '}' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else + { + if ( IS_COLOR == FALSE ) count++; + else IS_COLOR = FALSE; + } + + if ( count >= maxlength ) break; + } + if ( count < maxlength ) return ((str - count) + maxlength); + + str++; + return str; + } + + int color_str_len( char *argument ) + { + int str, count = 0; + bool IS_COLOR = FALSE; + + for ( str = 0; argument[str] != '\0'; str++ ) + { + if ( argument[str] == '&' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + #ifdef OVERLANDCODE + else if ( argument[str] == '{' ) + #else + else if ( argument[str] == '^' ) + #endif + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else if ( argument[str] == '}' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else + { + if ( IS_COLOR == FALSE ) count++; + else IS_COLOR = FALSE; + } + } + + return count; + } + + int color_strnlen( char *argument, int maxlength ) + { + int str, count = 0; + bool IS_COLOR = FALSE; + + for ( str = 0; argument[str] != '\0'; str++ ) + { + if ( argument[str] == '&' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + #ifdef OVERLANDCODE + else if ( argument[str] == '{' ) + #else + else if ( argument[str] == '^' ) + #endif + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else if ( argument[str] == '}' ) + { + if ( IS_COLOR == TRUE ) + { + count++; + IS_COLOR = FALSE; + } + else + IS_COLOR = TRUE; + } + else + { + if ( IS_COLOR == FALSE ) count++; + else IS_COLOR = FALSE; + } + + if ( count >= maxlength ) break; + } + if ( count < maxlength ) return ((str - count) + maxlength ); + + str++; + return str; + } + + const char *const_color_align( const char *argument, int size, int align ) + { + int space = ( size - const_color_str_len( argument ) ); + static char buf[MAX_STRING_LENGTH]; + + if( align == ALIGN_RIGHT || const_color_str_len( argument ) >= size ) + snprintf( buf, MAX_STRING_LENGTH, "%*.*s", const_color_strnlen( argument, size ), + const_color_strnlen( argument, size ), argument ); + else if( align == ALIGN_CENTER ) + snprintf( buf, MAX_STRING_LENGTH, "%*s%s%*s", ( space/2 ),"",argument, + ( (space/2) * 2 ) == space ? (space/2) : ( (space/2) + 1 ), "" ); + else + snprintf( buf, MAX_STRING_LENGTH, "%s%*s", argument, space, "" ); + + return buf; + } + + char *color_align( char *argument, int size, int align ) + { + int space = ( size - color_str_len( argument ) ); + static char buf[MAX_STRING_LENGTH]; + + if( align == ALIGN_RIGHT || color_str_len( argument ) >= size ) + snprintf( buf, MAX_STRING_LENGTH, "%*.*s", color_strnlen( argument, size ), color_strnlen( argument, size ), argument ); + else if( align == ALIGN_CENTER ) + snprintf( buf, MAX_STRING_LENGTH, "%*s%s%*s", ( space/2 ), "", argument, + ( (space/2) * 2 ) == space ? (space/2) : ( (space/2) + 1 ), "" ); + else if( align == ALIGN_LEFT ) + snprintf( buf, MAX_STRING_LENGTH, "%s%*s", argument, space, "" ); + + return buf; + } + void show_colors( CHAR_DATA *ch ) { sh_int count; ! send_to_pager_color( "&BSyntax: color [color type] [color] | default\n\r", ch ); ! send_to_pager_color( "&BSyntax: color _reset_ (Resets all colors to default set)\n\r", ch ); ! send_to_pager_color( "&BSyntax: color _all_ [color] (Sets all color types to [color])\n\r\n\r", ch ); ! send_to_pager_color( "&W********************************[ COLORS ]*********************************\n\r", ch ); for ( count = 0; count < 16; ++count ) { *************** *** 189,206 **** { bool dMatch, cMatch; sh_int count = 0, y = 0; ! char arg[MAX_INPUT_LENGTH], arg2[MAX_INPUT_LENGTH]; dMatch = FALSE; cMatch = FALSE; ! if( IS_NPC(ch) ) { send_to_pager( "Only PC's can change colors.\n\r", ch ); return; } ! if( !argument || argument[0] == '\0' ) { show_colors( ch ); return; --- 441,461 ---- { bool dMatch, cMatch; sh_int count = 0, y = 0; ! char arg[MIL]; ! char arg2[MIL]; ! char arg3[MIL]; ! char buf[MAX_STRING_LENGTH]; dMatch = FALSE; cMatch = FALSE; ! if (IS_NPC(ch)) { send_to_pager( "Only PC's can change colors.\n\r", ch ); return; } ! if ( !argument || argument[0] == '\0' ) { show_colors( ch ); return; *************** *** 296,363 **** return; } ! if ( !str_prefix( arg, "_reset_" ) ) { ! reset_colors( ch ); send_to_pager( "All color types reset to default colors.\n\r", ch ); return; } argument = one_argument( argument, arg2 ); ! if( !arg || arg[0] == '\0' ) { ! send_to_char( "Change which color type?\r\n", ch ); return; } ! if( !str_prefix( arg, "_all_" ) ) { dMatch = TRUE; count = -1; ! /* search for a valid color setting */ ! for( y = 0; y < 16 ; y++ ) { ! if( !str_cmp( arg2, valid_color[y] ) ) { cMatch = TRUE; break; } } } ! else if( !arg || arg2[0] == '\0' ) cMatch = FALSE; else { /* search for the display type and str_cmp*/ ! for( count = 0; count < MAX_COLORS ; count++ ) { ! if( !str_prefix( arg, pc_displays[count] ) ) { dMatch = TRUE; break; } } ! if( !dMatch ) { ch_printf( ch, "%s is an invalid color type.\n\r", arg ); send_to_char( "Type color with no arguments to see available options.\n\r", ch ); return; } ! if( !str_cmp( arg2, "default" ) ) { ! ch->colors[count] = default_set[count]; ! ch_printf( ch, "Display %s set back to default.\n\r", pc_displays[count] ); return; } /* search for a valid color setting*/ ! for( y = 0; y < 16 ; y++ ) { ! if( !str_cmp( arg2, valid_color[y] ) ) { cMatch = TRUE; break; --- 551,623 ---- return; } ! if ( !str_prefix(arg, "_reset_" ) ) { ! reset_colors(ch); send_to_pager( "All color types reset to default colors.\n\r", ch ); return; } argument = one_argument( argument, arg2 ); ! if ( arg[0] == '\0' ) { ! send_to_char("Change which color type?\r\n", ch); return; } ! argument = one_argument( argument, arg3 ); ! ! if ( !str_prefix(arg, "_all_") ) { dMatch = TRUE; count = -1; ! /* search for a valid color setting*/ ! for ( y = 0; y < 16 ; y++ ) { ! if (!str_cmp(arg2, valid_color[y])) { cMatch = TRUE; break; } } } ! else if ( arg2[0] == '\0' ) ! { cMatch = FALSE; + } else { /* search for the display type and str_cmp*/ ! for ( count = 0; count < MAX_COLORS ; count++ ) { ! if (!str_prefix (arg, pc_displays[count])) { dMatch = TRUE; break; } } ! if(!dMatch) { ch_printf( ch, "%s is an invalid color type.\n\r", arg ); send_to_char( "Type color with no arguments to see available options.\n\r", ch ); return; } ! if (!str_cmp (arg2, "default")) { ! ch->colors[count] = default_set[count]; ! sprintf(buf, "Display %s set back to default.\n\r", pc_displays[count] ); ! send_to_pager( buf, ch ); return; } /* search for a valid color setting*/ ! for ( y = 0; y < 16 ; y++ ) { ! if (!str_cmp(arg2, valid_color[y])) { cMatch = TRUE; break; *************** *** 365,427 **** } } ! if( !cMatch ) { ! if( arg[0] ) ! ch_printf( ch, "Invalid color for type %s.\n", arg ); else send_to_pager( "Invalid color.\n\r", ch ); send_to_pager( "Choices are:\n\r", ch ); ! for( count = 0; count < 16; count++ ) { ! if( count % 5 == 0 && count != 0 ) ! send_to_pager( "\r\n", ch ); ! pager_printf( ch, "%-10s", valid_color[count] ); } ! pager_printf( ch, "%-10s\r\n", "default" ); return; } else ! pager_printf( ch, "Color type %s set to color %s.\n\r", count == -1 ? "_all_" : pc_displays[count], valid_color[y] ); ! if( !str_cmp( argument, "blink" ) ) y += AT_BLINK; ! if( count == -1 ) { int ccount; ! for( ccount = 0; ccount < MAX_COLORS; ++ccount ) ch->colors[ccount] = y; ! set_pager_color( y, ch ); ! pager_printf( ch, "All color types set to color %s%s.%s\n\r", ! valid_color[y > AT_BLINK ? y - AT_BLINK : y], y > AT_BLINK ? " [BLINKING]" : "", ANSI_RESET ); } else { ch->colors[count] = y; ! set_pager_color( count , ch ); ! if( !str_cmp( argument, "blink" ) ) ! ch_printf( ch, "Display %s set to color %s [BLINKING]%s\n\r", ! pc_displays[count], valid_color[y-AT_BLINK], ANSI_RESET ); else ! ch_printf( ch, "Display %s set to color %s.\n\r", pc_displays[count], valid_color[y] ); } ! set_pager_color( AT_PLAIN , ch ); return; } void reset_colors( CHAR_DATA *ch ) { ! if( !IS_NPC(ch) ) ! memcpy( &ch->colors, &default_set, sizeof(default_set) ); } char *color_str( sh_int AType, CHAR_DATA *ch ) --- 625,701 ---- } } ! if(!cMatch) ! { ! if ( arg[0] ) { ! ch_printf(ch, "Invalid color for type %s.\n", arg); ! } else + { send_to_pager( "Invalid color.\n\r", ch ); + } send_to_pager( "Choices are:\n\r", ch ); ! for ( count = 0; count < 16; count++ ) { ! if ( count % 5 == 0 && count != 0 ) ! send_to_pager("\r\n", ch); ! pager_printf(ch, "%-10s", valid_color[count]); } ! ! pager_printf(ch, "%-10s\r\n", "default"); return; } else ! { ! sprintf(buf, "Color type %s set to color %s.\n\r",count==-1?"_all_":pc_displays[count], valid_color[y] ); ! } ! if (!str_cmp (arg3, "blink")) ! { y += AT_BLINK; + } ! if ( count == -1 ) { int ccount; ! for ( ccount = 0; ccount < MAX_COLORS; ++ccount ) ! { ch->colors[ccount] = y; + } + + set_pager_color(y, ch); ! sprintf(buf, "All color types set to color %s%s.%s\n\r", ! valid_color[y>AT_BLINK?y-AT_BLINK:y], y>AT_BLINK ? " [BLINKING]" : "", ANSI_RESET ); ! send_to_pager(buf, ch); } else { ch->colors[count] = y; ! set_pager_color( count , ch); ! if (!str_cmp (arg3, "blink")) ! sprintf(buf, "Display %s set to color %s [BLINKING]%s\n\r", pc_displays[count], valid_color[y-AT_BLINK], ANSI_RESET ); else ! sprintf(buf, "Display %s set to color %s.\n\r", pc_displays[count], valid_color[y] ); ! ! send_to_pager( buf, ch ); } ! set_pager_color( AT_PLAIN , ch); ! return; } void reset_colors( CHAR_DATA *ch ) { ! memcpy( &ch->colors, &default_set, sizeof(default_set) ); } char *color_str( sh_int AType, CHAR_DATA *ch ) *************** *** 432,438 **** return( "" ); } ! if( !xIS_SET( ch->act, PLR_ANSI ) ) return( "" ); switch( ch->colors[AType] ) --- 706,712 ---- return( "" ); } ! if( IS_NPC(ch) || !xIS_SET( ch->act, PLR_ANSI ) ) return( "" ); switch( ch->colors[AType] ) *************** *** 476,995 **** } } ! ! /* ! * Quixadhal - I rewrote this from scratch. It now returns the number of ! * characters in the SOURCE string that should be skipped, it always fills ! * the DESTINATION string with a valid translation (even if that is itself, ! * or an empty string), and the default for ANSI is FALSE, since mobs and ! * logfiles shouldn't need colour. ! * ! * NOTE: dstlen is the length of your pre-allocated buffer that you passed ! * in. It must be at least 3 bytes, but should be long enough to hold the ! * longest translation sequence (probably around 16-32). ! * ! * NOTE: vislen is the "visible" length of the translation token. This is ! * used by color_strlen to properly figure the visual length of a string. ! * If you need the number of bytes (such as for output buffering), use the ! * normal strlen function. ! */ ! int colorcode( const char *src, char *dst, DESCRIPTOR_DATA *d, int dstlen, int *vislen ) { ! CHAR_DATA *ch = NULL; ! bool ansi = FALSE; ! char *sympos = NULL; ! ! /* No descriptor, assume ANSI conversion can't be done. */ ! if( !d ) ! ansi = FALSE; ! /* But, if we have one, check for a PC and set accordingly. If no PC, assume ANSI can be done. For color logins. */ ! else ! { ! ch = d->original ? d->original : d->character; ! if( ch ) ! ansi = ( xIS_SET( ch->act, PLR_ANSI ) ); ! else ! ansi = TRUE; ! } ! ! if( !dst ) ! return 0; /* HEY, I said at least 3 BYTES! */ ! dst[0] = '\0'; /* Initialize the the default NOTHING */ ! /* Move along, nothing to see here */ ! if( !src || !*src ) ! return 0; ! switch( *src ) { ! case '&': /* NORMAL, Foreground colour */ ! switch( src[1] ) { ! case '&': /* Escaped self, return one of us */ ! dst[0] = src[0]; ! dst[1] = '\0'; ! if( vislen ) ! *vislen = 1; ! return 2; ! ! case '[': /* Symbolic color name */ ! if( ( sympos = strchr( src+2, ']' ) ) ) ! { ! register int subcnt = 0; ! unsigned int sublen = 0; ! ! sublen = sympos - src - 2; ! for( subcnt = 0; subcnt < MAX_COLORS ; subcnt++ ) ! { ! if( !strncmp( src+2, pc_displays[subcnt], sublen ) ) ! { ! if( strlen( pc_displays[subcnt] ) == sublen ) ! { ! /* These can only be used with a logged in char */ ! if( ansi && ch ) ! strncpy( dst, color_str( subcnt, ch ), dstlen ); ! if( vislen ) ! *vislen = 0; ! return sublen + 3; ! } ! } ! } ! } /* found matching ] */ ! ! /* Unknown symbolic name, return just the sequence */ ! dst[0] = src[0]; ! dst[1] = src[1]; ! dst[2] = '\0'; ! if( vislen ) ! *vislen = 2; ! return 2; ! ! case 'i': /* Italic text */ ! case 'I': ! if( ansi ) ! strncpy( dst, ANSI_ITALIC, dstlen ); ! break; ! ! case 'v': /* Reverse colors */ ! case 'V': ! if( ansi ) ! strncpy( dst, ANSI_REVERSE, dstlen ); ! break; ! ! case 'u': /* Underline */ ! case 'U': ! if( ansi ) ! strncpy( dst, ANSI_UNDERLINE, dstlen ); ! break; ! ! case 's': /* Strikeover */ ! case 'S': ! if( ansi ) ! strncpy( dst, ANSI_STRIKEOUT, dstlen ); ! break; ! ! case 'd': /* Player's client default color */ ! if( ansi ) ! strncpy( dst, ANSI_RESET, dstlen ); ! break; ! ! case 'D': /* Reset to custom color for whatever is being displayed */ ! if( ansi ) ! { ! /* Yes, this reset here is quite necessary to cancel out other things */ ! strncpy( dst, ANSI_RESET, dstlen ); ! if( ch ) ! strncat( dst, color_str( ch->desc->pagecolor, ch ), dstlen ); ! } ! break; ! ! case 'x': /* Black */ ! if( ansi ) ! strncpy( dst, ANSI_BLACK, dstlen ); ! break; ! ! case 'O': /* Orange/Brown */ ! if( ansi ) ! strncpy( dst, ANSI_ORANGE, dstlen ); ! break; ! ! case 'c': /* Cyan */ ! if( ansi ) ! strncpy( dst, ANSI_CYAN, dstlen ); break; ! ! case 'z': /* Dark Grey */ ! if( ansi ) ! strncpy( dst, ANSI_DGREY, dstlen ); break; ! ! case 'g': /* Dark Green */ ! if( ansi ) ! strncpy( dst, ANSI_DGREEN, dstlen ); break; ! ! case 'G': /* Light Green */ ! if( ansi ) ! strncpy( dst, ANSI_GREEN, dstlen ); ! break; ! ! case 'P': /* Pink/Light Purple */ ! if( ansi ) ! strncpy( dst, ANSI_PINK, dstlen ); break; - - case 'r': /* Dark Red */ - if( ansi ) - strncpy( dst, ANSI_DRED, dstlen ); - break; - - case 'b': /* Dark Blue */ - if( ansi ) - strncpy( dst, ANSI_DBLUE, dstlen ); - break; - - case 'w': /* Grey */ - if( ansi ) - strncpy( dst, ANSI_GREY, dstlen ); - break; - - case 'Y': /* Yellow */ - if( ansi ) - strncpy( dst, ANSI_YELLOW, dstlen ); - break; - - case 'C': /* Light Blue */ - if( ansi ) - strncpy( dst, ANSI_LBLUE, dstlen ); - break; - - case 'p': /* Purple */ - if( ansi ) - strncpy( dst, ANSI_PURPLE, dstlen ); - break; - - case 'R': /* Red */ - if( ansi ) - strncpy( dst, ANSI_RED, dstlen ); - break; - - case 'B': /* Blue */ - if( ansi ) - strncpy( dst, ANSI_BLUE, dstlen ); - break; - - case 'W': /* White */ - if( ansi ) - strncpy( dst, ANSI_WHITE, dstlen ); - break; - - default: /* Unknown sequence, return all the chars */ - dst[0] = src[0]; - dst[1] = src[1]; - dst[2] = '\0'; - if( vislen ) - *vislen = 2; - return 2; } ! break; ! ! case '{': /* BACKGROUND colour */ ! switch( src[1] ) { ! case '{': /* Escaped self, return one of us */ ! dst[0] = src[0]; ! dst[1] = '\0'; ! if( vislen ) ! *vislen = 1; ! return 2; ! ! case 'x': /* Black */ ! if( ansi ) ! strncpy( dst, BACK_BLACK, dstlen ); break; ! ! case 'r': /* Dark Red */ ! if( ansi ) ! strncpy( dst, BACK_DRED, dstlen ); break; ! ! case 'g': /* Dark Green */ ! if( ansi ) ! strncpy( dst, BACK_DGREEN, dstlen ); break; ! ! case 'O': /* Orange/Brown */ ! if( ansi ) ! strncpy( dst, BACK_ORANGE, dstlen ); break; ! ! case 'b': /* Dark Blue */ ! if( ansi ) ! strncpy( dst, BACK_DBLUE, dstlen ); break; ! ! case 'p': /* Purple */ ! if( ansi ) ! strncpy( dst, BACK_PURPLE, dstlen ); break; ! ! case 'c': /* Cyan */ ! if( ansi ) ! strncpy( dst, BACK_CYAN, dstlen ); break; ! ! case 'w': /* Grey */ ! if( ansi ) ! strncpy( dst, BACK_GREY, dstlen ); break; ! ! default: /* Unknown sequence, return all the chars */ ! dst[0] = src[0]; ! dst[1] = src[1]; ! dst[2] = '\0'; ! if( vislen ) ! *vislen = 2; ! return 2; ! } ! break; ! ! case '}': /* BLINK Foreground colour */ ! switch( src[1] ) ! { ! case '}': /* Escaped self, return one of us */ ! dst[0] = src[0]; ! dst[1] = '\0'; ! if( vislen ) ! *vislen = 1; ! return 2; ! ! case 'x': /* Black */ ! if( ansi ) ! strncpy( dst, BLINK_BLACK, dstlen ); break; ! ! case 'O': /* Orange/Brown */ ! if( ansi ) ! strncpy( dst, BLINK_ORANGE, dstlen ); break; ! ! case 'c': /* Cyan */ ! if( ansi ) ! strncpy( dst, BLINK_CYAN, dstlen ); break; ! ! case 'z': /* Dark Grey */ ! if( ansi ) ! strncpy( dst, BLINK_DGREY, dstlen ); break; ! ! case 'g': /* Dark Green */ ! if( ansi ) ! strncpy( dst, BLINK_DGREEN, dstlen ); ! break; ! ! case 'G': /* Light Green */ ! if( ansi ) ! strncpy( dst, BLINK_GREEN, dstlen ); ! break; ! ! case 'P': /* Pink/Light Purple */ ! if( ansi ) ! strncpy( dst, BLINK_PINK, dstlen ); break; ! ! case 'r': /* Dark Red */ ! if( ansi ) ! strncpy( dst, BLINK_DRED, dstlen ); ! break; ! ! case 'b': /* Dark Blue */ ! if( ansi ) ! strncpy( dst, BLINK_DBLUE, dstlen ); ! break; ! ! case 'w': /* Grey */ ! if( ansi ) ! strncpy( dst, BLINK_GREY, dstlen ); break; ! ! case 'Y': /* Yellow */ ! if( ansi ) ! strncpy( dst, BLINK_YELLOW, dstlen ); break; ! ! case 'C': /* Light Blue */ ! if( ansi ) ! strncpy( dst, BLINK_LBLUE, dstlen ); break; ! ! case 'p': /* Purple */ ! if( ansi ) ! strncpy( dst, BLINK_PURPLE, dstlen ); break; ! ! case 'R': /* Red */ ! if( ansi ) ! strncpy( dst, BLINK_RED, dstlen ); break; ! ! case 'B': /* Blue */ ! if( ansi ) ! strncpy( dst, BLINK_BLUE, dstlen ); break; ! ! case 'W': /* White */ ! if( ansi ) ! strncpy( dst, BLINK_WHITE, dstlen ); break; - - default: /* Unknown sequence, return all the chars */ - dst[0] = src[0]; - dst[1] = src[1]; - dst[2] = '\0'; - if( vislen ) - *vislen = 2; - return 2; } ! break; ! ! default: /* Just a normal character */ ! dst[0] = *src; ! dst[1] = '\0'; ! if( vislen ) ! *vislen = 1; ! return 1; ! } ! if( vislen ) ! *vislen = 0; ! return 2; ! } ! ! /* ! * Quixadhal - I rewrote this too, so that it uses colorcode. It may not ! * be as efficient as just walking over the string and counting, but it ! * keeps us from duplicating the code several times. ! * ! * This function returns the intended screen length of a string which has ! * color codes embedded in it. It does this by stripping the codes out ! * entirely (A NULL descriptor means ANSI will be false). ! */ ! int color_strlen( const char *src ) ! { ! register unsigned int i = 0; ! int len = 0; ! ! if( !src || !*src ) /* Move along, nothing to see here */ ! return 0; ! ! for( i = 0; i < strlen(src); ) ! { ! char dst[20]; ! int vislen; ! ! switch( src[i] ) ! { ! case '&': /* NORMAL, Foreground colour */ ! case '{': /* BACKGROUND colour */ ! case '}': /* BLINK Foreground colour */ ! *dst = '\0'; ! vislen = 0; ! i += colorcode( &src[i], dst, NULL, 20, &vislen ); /* Skip input token */ ! len += vislen; /* Count output token length */ ! break; /* this was missing - if you have issues, remove it */ ! ! default: /* No conversion, just count */ ! len++; ! i++; ! break; ! } } ! return len; } ! /* ! * Quixadhal - And this one needs to use the new version too. ! */ ! char *color_align( const char *argument, int size, int align ) ! { ! int space = 0; ! int len = 0; ! static char buf[MAX_STRING_LENGTH]; ! ! len = color_strlen( argument ); ! space = ( size - len ); ! if( align == ALIGN_RIGHT || len >= size ) ! snprintf( buf, MAX_STRING_LENGTH, "%*.*s", len, len, argument ); ! else if( align == ALIGN_CENTER ) ! snprintf( buf, MAX_STRING_LENGTH, "%*s%s%*s", ( space/2 ), "", argument, ! ( (space/2) * 2 ) == space ? (space/2) : ( (space/2) + 1 ), "" ); ! else if( align == ALIGN_LEFT ) ! snprintf( buf, MAX_STRING_LENGTH, "%s%*s", argument, space, "" ); ! ! return buf; ! } ! ! /* ! * Quixadhal - This takes a string and converts any and all color tokens ! * in it to the desired output tokens, using the provided character's ! * preferences. ! */ ! char *colorize( const char *txt, DESCRIPTOR_DATA *d ) { ! static char result[MAX_STRING_LENGTH]; ! ! *result = '\0'; ! if( txt && *txt && d ) { ! char *colstr; ! const char *prevstr = txt; ! char colbuf[20]; ! int ln; ! ! while( ( colstr = strpbrk( prevstr, "&{}" ) ) != NULL ) ! { ! register int reslen = 0; ! ! if( colstr > prevstr ) ! { ! if( ( MAX_STRING_LENGTH - ( reslen = strlen(result) ) ) <= ( colstr-prevstr ) ) ! { ! bug( "%s: OVERFLOW in internal MAX_STRING_LENGTH buffer!", __PRETTY_FUNCTION__ ); ! break; ! } ! strncat( result, prevstr, ( colstr-prevstr ) ); /* Leave this one alone! BAD THINGS(TM) will happen if you don't! */ ! result[ reslen + ( colstr-prevstr ) ] = '\0'; /* strncat will NOT NULL terminate this! */ ! } ! ln = colorcode( colstr, colbuf, d, 20, NULL ); ! if( ln > 0 ) ! { ! strncat( result, colbuf, MAX_STRING_LENGTH ); ! prevstr = colstr + ln; ! } ! else ! prevstr = colstr + 1; ! } ! if( *prevstr ) ! strncat( result, prevstr, MAX_STRING_LENGTH ); } ! return result; } ! /* Moved from comm.c */ ! void set_char_color( sh_int AType, CHAR_DATA *ch ) { if ( !ch || !ch->desc ) return; ! ! if( IS_NPC(ch) ) ! return; ! ! write_to_buffer( ch->desc, color_str( AType, ch ), 0 ); if( !ch->desc ) { ! bug( "set_char_color: NULL descriptor after WTB! CH: %s", ch->name ? ch->name : "Unknown?!?" ); return; } ch->desc->pagecolor = ch->colors[AType]; --- 750,1007 ---- } } ! int colorcode( const char *col, char *code, CHAR_DATA *ch ) { ! const char *ctype = col; ! int ln; ! bool ansi; ! if( !ch ) ! ansi = TRUE; ! else ! ansi = ( !IS_NPC(ch) && xIS_SET( ch->act, PLR_ANSI ) ); ! col++; ! if( !*col ) ! ln = -1; ! #ifdef OVERLANDCODE ! else if ( *ctype != '&' && *ctype != '{' && *ctype != '}' ) ! { ! bug( "colorcode: command '%c' not '&', '{' or '}'", *ctype ); ! ln = -1; ! } ! #else ! else if ( *ctype != '&' && *ctype != '^' && *ctype != '}' ) ! { ! bug( "colorcode: command '%c' not '&', '^' or '}'", *ctype ); ! ln = -1; ! } ! #endif ! else if( *col == *ctype ) { ! code[0] = *col; ! code[1] = '\0'; ! ln = 1; ! } ! else if( !ansi ) ! ln = 0; ! else ! { ! /* Foreground text - non-blinking */ ! if( *ctype == '&' ) ! { ! switch( *col ) { ! default: ! code[0] = *ctype; ! code[1] = *col; ! code[2] = '\0'; ! return 2; ! case 'i': /* Italic text */ ! case 'I': ! strncpy( code, ANSI_ITALIC, 20 ); ! break; ! case 'v': /* Reverse colors */ ! case 'V': ! strncpy( code, ANSI_REVERSE, 20 ); ! break; ! case 'u': /* Underline */ ! case 'U': ! strncpy( code, ANSI_UNDERLINE, 20 ); ! break; ! case 's': /* Strikeover */ ! case 'S': ! strncpy( code, ANSI_STRIKEOUT, 20 ); ! break; ! case 'd': /* Player's client default color */ ! strncpy( code, ANSI_RESET, 20 ); ! break; ! case 'D': /* Reset to custom color for whatever is being displayed */ ! strncpy( code, ANSI_RESET, 20 ); /* Yes, this reset here is quite necessary to cancel out other things */ ! strncat( code, color_str( ch->desc->pagecolor, ch ), 20 ); ! break; ! case 'x': /* Black */ ! strncpy( code, ANSI_BLACK, 20 ); ! break; ! case 'O': /* Orange/Brown */ ! strncpy( code, ANSI_ORANGE, 20 ); ! break; ! case 'c': /* Cyan */ ! strncpy( code, ANSI_CYAN, 20 ); ! break; ! case 'z': /* Dark Grey */ ! strncpy( code, ANSI_DGREY, 20 ); ! break; ! case 'g': /* Dark Green */ ! strncpy( code, ANSI_DGREEN, 20 ); ! break; ! case 'G': /* Light Green */ ! strncpy( code, ANSI_GREEN, 20 ); ! break; ! case 'P': /* Pink/Light Purple */ ! strncpy( code, ANSI_PINK, 20 ); ! break; ! case 'r': /* Dark Red */ ! strncpy( code, ANSI_DRED, 20 ); ! break; ! case 'b': /* Dark Blue */ ! strncpy( code, ANSI_DBLUE, 20 ); ! break; ! case 'w': /* Grey */ ! strncpy( code, ANSI_GREY, 20 ); ! break; ! case 'Y': /* Yellow */ ! strncpy( code, ANSI_YELLOW, 20 ); ! break; ! case 'C': /* Light Blue */ ! strncpy( code, ANSI_LBLUE, 20 ); ! break; ! case 'p': /* Purple */ ! strncpy( code, ANSI_PURPLE, 20 ); break; ! case 'R': /* Red */ ! strncpy( code, ANSI_RED, 20 ); break; ! case 'B': /* Blue */ ! strncpy( code, ANSI_BLUE, 20 ); break; ! case 'W': /* White */ ! strncpy( code, ANSI_WHITE, 20 ); break; } ! } ! /* Foreground text - blinking */ ! if( *ctype == '}' ) ! { ! switch( *col ) { ! default: ! code[0] = *ctype; ! code[1] = *col; ! code[2] = '\0'; ! return 2; ! case 'x': /* Black */ ! strncpy( code, BLINK_BLACK, 20 ); break; ! case 'O': /* Orange/Brown */ ! strncpy( code, BLINK_ORANGE, 20 ); break; ! case 'c': /* Cyan */ ! strncpy( code, BLINK_CYAN, 20 ); break; ! case 'z': /* Dark Grey */ ! strncpy( code, BLINK_DGREY, 20 ); break; ! case 'g': /* Dark Green */ ! strncpy( code, BLINK_DGREEN, 20 ); break; ! case 'G': /* Light Green */ ! strncpy( code, BLINK_GREEN, 20 ); break; ! case 'P': /* Pink/Light Purple */ ! strncpy( code, BLINK_PINK, 20 ); break; ! case 'r': /* Dark Red */ ! strncpy( code, BLINK_DRED, 20 ); break; ! case 'b': /* Dark Blue */ ! strncpy( code, BLINK_DBLUE, 20 ); break; ! case 'w': /* Grey */ ! strncpy( code, BLINK_GREY, 20 ); break; ! case 'Y': /* Yellow */ ! strncpy( code, BLINK_YELLOW, 20 ); break; ! case 'C': /* Light Blue */ ! strncpy( code, BLINK_LBLUE, 20 ); break; ! case 'p': /* Purple */ ! strncpy( code, BLINK_PURPLE, 20 ); break; ! case 'R': /* Red */ ! strncpy( code, BLINK_RED, 20 ); break; ! case 'B': /* Blue */ ! strncpy( code, BLINK_BLUE, 20 ); break; ! case 'W': /* White */ ! strncpy( code, BLINK_WHITE, 20 ); break; ! } ! } ! /* Background color */ ! #ifdef OVERLANDCODE ! if( *ctype == '{' ) ! #else ! if( *ctype == '^' ) ! #endif ! { ! switch( *col ) ! { ! default: ! code[0] = *ctype; ! code[1] = *col; ! code[2] = '\0'; ! return 2; ! case 'x': /* Black */ ! strncpy( code, BACK_BLACK, 20 ); ! break; ! case 'r': /* Dark Red */ ! strncpy( code, BACK_DRED, 20 ); ! break; ! case 'g': /* Dark Green */ ! strncpy( code, BACK_DGREEN, 20 ); ! break; ! case 'O': /* Orange/Brown */ ! strncpy( code, BACK_ORANGE, 20 ); ! break; ! case 'b': /* Dark Blue */ ! strncpy( code, BACK_DBLUE, 20 ); break; ! case 'p': /* Purple */ ! strncpy( code, BACK_PURPLE, 20 ); break; ! case 'c': /* Cyan */ ! strncpy( code, BACK_CYAN, 20 ); break; ! case 'w': /* Grey */ ! strncpy( code, BACK_GREY, 20 ); break; } ! } ! ln = strlen( code ); } ! if ( ln <= 0 ) ! *code = '\0'; ! return ln; } ! /* Moved from comm.c */ ! void set_char_color( sh_int AType, CHAR_DATA *ch ) { ! if ( !ch || !ch->desc ) ! return; ! write_to_buffer( ch->desc, color_str( AType, ch ), 0 ); ! if( !ch->desc ) { ! bug( "set_char_color: NULL descriptor after WTB! CH: %s", ch->name ? ch->name : "Unknown?!?" ); ! return; } ! ch->desc->pagecolor = ch->colors[AType]; } ! void set_pager_color( sh_int AType, CHAR_DATA *ch ) { if ( !ch || !ch->desc ) return; ! ! write_to_pager( ch->desc, color_str( AType, ch ), 0 ); if( !ch->desc ) { ! bug( "set_pager_color: NULL descriptor after WTP! CH: %s", ch->name ? ch->name : "Unknown?!?" ); return; } ch->desc->pagecolor = ch->colors[AType]; *************** *** 998,1003 **** --- 1010,1017 ---- void write_to_pager( DESCRIPTOR_DATA *d, const char *txt, int length ) { int pageroffset; /* Pager fix by thoric */ + int origlength; + if( length <= 0 ) length = strlen( txt ); *************** *** 1005,1010 **** --- 1019,1029 ---- if( length == 0 ) return; + origlength = length; + /* work out how much we need to expand/contract it */ + length += count_mxp_tags (d->mxp, txt, length); + + if( !d->pagebuf ) { d->pagesize = MAX_STRING_LENGTH; *************** *** 1038,1125 **** RECREATE( d->pagebuf, char, d->pagesize ); } d->pagepoint = d->pagebuf + pageroffset; /* pager fix (goofup fixed 08/21/97) */ ! strncpy( d->pagebuf + d->pagetop, txt, length ); /* Leave this one alone! BAD THINGS(TM) will happen if you don't! */ d->pagetop += length; d->pagebuf[d->pagetop] = '\0'; return; ! } ! ! void set_pager_color( sh_int AType, CHAR_DATA *ch ) ! { ! if ( !ch || !ch->desc ) ! return; ! ! if( IS_NPC(ch) ) ! return; ! ! write_to_pager( ch->desc, color_str( AType, ch ), 0 ); ! if( !ch->desc ) ! { ! bug( "set_pager_color: NULL descriptor after WTP! CH: %s", ch->name ? ch->name : "Unknown?!?" ); ! return; ! } ! ch->desc->pagecolor = ch->colors[AType]; ! } /* Writes to a descriptor, usually best used when there's no character to send to ( like logins ) */ ! void color_send_to_desc( const char *txt, DESCRIPTOR_DATA *d ) { ! if( !d ) { ! bug( "%s", "color_send_to_desc: NULL *d" ); return; } ! if( !txt || !d->descriptor ) return; ! write_to_buffer( d, colorize( txt, d ), 0 ); return; } /* * Write to one char. Convert color into ANSI sequences. */ ! void send_to_char( const char *txt, CHAR_DATA *ch ) { if( !ch ) { ! bug( "%s", "send_to_char: NULL ch!" ); return; } if( txt && ch->desc ) ! color_send_to_desc( txt, ch->desc ); return; } ! void send_to_pager( const char *txt, CHAR_DATA *ch ) { if( !ch ) { ! bug( "%s", "send_to_pager: NULL ch!" ); return; } ! if( txt && ch->desc ) { DESCRIPTOR_DATA *d = ch->desc; ch = d->original ? d->original : d->character; ! if( !IS_SET( ch->pcdata->flags, PCFLAG_PAGERON ) ) { ! if( ch->desc ) ! color_send_to_desc( txt, ch->desc ); } ! else { ! if( ch->desc ) ! write_to_pager( ch->desc, colorize( txt, ch->desc ), 0 ); } } return; } void ch_printf( CHAR_DATA *ch, char *fmt, ... ) { char buf[MAX_STRING_LENGTH*2]; --- 1057,1213 ---- RECREATE( d->pagebuf, char, d->pagesize ); } d->pagepoint = d->pagebuf + pageroffset; /* pager fix (goofup fixed 08/21/97) */ ! // strncpy( d->pagebuf + d->pagetop, txt, length ); ! convert_mxp_tags (d->mxp, d->pagebuf + d->pagetop, txt, origlength ); d->pagetop += length; d->pagebuf[d->pagetop] = '\0'; return; ! } /* Writes to a descriptor, usually best used when there's no character to send to ( like logins ) */ ! void send_to_desc_color( const char *txt, DESCRIPTOR_DATA *d ) { ! char *colstr; ! const char *prevstr = txt; ! char colbuf[20]; ! int ln; ! ! if ( !d ) { ! bug( "%s", "send_to_desc_color: NULL *d" ); return; } ! if ( !txt || !d->descriptor ) return; ! #ifdef OVERLANDCODE ! while( ( colstr = strpbrk( prevstr, "&{}" ) ) != NULL ) ! #else ! while( ( colstr = strpbrk( prevstr, "&^}" ) ) != NULL ) ! #endif ! { ! if( colstr > prevstr ) ! write_to_buffer( d, prevstr, ( colstr-prevstr ) ); ! ! ln = colorcode( colstr, colbuf, d->character ); ! if ( ln < 0 ) ! { ! prevstr = colstr+1; ! break; ! } ! ! else if ( ln > 0 ) ! write_to_buffer( d, colbuf, ln ); ! prevstr = colstr+2; ! } ! if ( *prevstr ) ! write_to_buffer( d, prevstr, 0 ); ! return; } /* * Write to one char. Convert color into ANSI sequences. */ ! void send_to_char_color( const char *txt, CHAR_DATA *ch ) { + char *colstr; + const char *prevstr = txt; + char colbuf[20]; + int ln; + if( !ch ) { ! bug( "%s", "send_to_char_color: NULL ch!" ); return; } if( txt && ch->desc ) ! { ! #ifdef OVERLANDCODE ! while( ( colstr = strpbrk( prevstr, "&{}" ) ) != NULL ) ! #else ! while( ( colstr = strpbrk( prevstr, "&^}" ) ) != NULL ) ! #endif ! { ! if( colstr > prevstr ) ! write_to_buffer( ch->desc, prevstr, ( colstr-prevstr ) ); ! ln = colorcode( colstr, colbuf, ch ); ! if ( ln < 0 ) ! { ! prevstr = colstr+1; ! break; ! } ! else if( ln > 0 ) ! write_to_buffer( ch->desc, colbuf, ln ); ! prevstr = colstr+2; ! } ! if ( *prevstr ) ! write_to_buffer( ch->desc, prevstr, 0 ); ! } return; } ! void send_to_pager_color( const char *txt, CHAR_DATA *ch ) { + char *colstr; + const char *prevstr = txt; + char colbuf[20]; + int ln; + if( !ch ) { ! bug( "%s", "send_to_pager_color: NULL ch!" ); return; } ! if ( txt && ch->desc ) { DESCRIPTOR_DATA *d = ch->desc; ch = d->original ? d->original : d->character; ! if ( IS_NPC(ch) || !IS_SET( ch->pcdata->flags, PCFLAG_PAGERON ) ) { ! send_to_char_color( txt, d->character ); ! return; } ! #ifdef OVERLANDCODE ! while( ( colstr = strpbrk( prevstr, "&{}" ) ) != NULL ) ! #else ! while( ( colstr = strpbrk( prevstr, "&^}" ) ) != NULL ) ! #endif { ! if( colstr > prevstr ) ! write_to_pager( ch->desc, prevstr, ( colstr-prevstr ) ); ! ln = colorcode( colstr, colbuf, ch ); ! if ( ln < 0 ) ! { ! prevstr = colstr+1; ! break; ! } ! else if( ln > 0 ) ! write_to_pager( ch->desc, colbuf, ln ); ! prevstr = colstr+2; } + if ( *prevstr ) + write_to_pager( ch->desc, prevstr, 0 ); } return; } + void send_to_char( const char *txt, CHAR_DATA *ch ) + { + send_to_char_color( txt, ch ); + return; + } + + void send_to_pager( const char *txt, CHAR_DATA *ch ) + { + send_to_pager_color( txt, ch ); + return; + } + void ch_printf( CHAR_DATA *ch, char *fmt, ... ) { char buf[MAX_STRING_LENGTH*2]; *************** *** 1129,1147 **** vsnprintf( buf, MAX_STRING_LENGTH*2, fmt, args ); va_end( args ); ! send_to_char( buf, ch ); } void pager_printf( CHAR_DATA *ch, char *fmt, ... ) { char buf[MAX_STRING_LENGTH*2]; va_list args; ! va_start( args, fmt ); vsnprintf( buf, MAX_STRING_LENGTH*2, fmt, args ); va_end( args ); ! ! send_to_pager( buf, ch ); } /* --- 1217,1235 ---- vsnprintf( buf, MAX_STRING_LENGTH*2, fmt, args ); va_end( args ); ! send_to_char_color( buf, ch ); } void pager_printf( CHAR_DATA *ch, char *fmt, ... ) { char buf[MAX_STRING_LENGTH*2]; va_list args; ! va_start( args, fmt ); vsnprintf( buf, MAX_STRING_LENGTH*2, fmt, args ); va_end( args ); ! ! send_to_pager_color( buf, ch ); } /* *************** *** 1162,1168 **** void pager_printf_color( CHAR_DATA *ch, char *fmt, ... ) { ! char buf[MAX_STRING_LENGTH*2]; va_list args; va_start( args, fmt ); --- 1250,1256 ---- void pager_printf_color( CHAR_DATA *ch, char *fmt, ... ) { ! char buf[MSL*2]; va_list args; va_start( args, fmt ); *************** *** 1171,1187 **** send_to_pager( buf, ch ); } - - /* Wrapper function for any "legacy" code that may be installed later */ - void send_to_char_color( const char *txt, CHAR_DATA *ch ) - { - send_to_char( txt, ch ); - return; - } - - /* Wrapper function for any "legacy" code that may be installed later */ - void send_to_pager_color( const char *txt, CHAR_DATA *ch ) - { - send_to_pager( txt, ch ); - return; - } --- 1259,1261 ---- Only in SmaugFUSS/src: color.c.fixed diff -rc SmaugFUSS.orig/src/color.h SmaugFUSS/src/color.h *** SmaugFUSS.orig/src/color.h 2004-01-15 06:58:51.000000000 +1100 --- SmaugFUSS/src/color.h 2004-02-01 12:51:11.000000000 +1100 *************** *** 24,38 **** * Enhanced ANSI parser by Samson * ****************************************************************************/ DECLARE_DO_FUN( do_color ); void reset_colors( CHAR_DATA *ch ); void set_char_color( sh_int AType, CHAR_DATA *ch ); void set_pager_color( sh_int AType, CHAR_DATA *ch ); char *color_str( sh_int AType, CHAR_DATA *ch ); ! char *color_align( const char *argument, int size, int align ); ! int color_strlen( const char *src ); ! char *colorize( const char *txt, DESCRIPTOR_DATA *d ); /* * Color Alignment Parameters --- 24,46 ---- * Enhanced ANSI parser by Samson * ****************************************************************************/ + #define SAMSONCOLOR /* To interact with other snippets */ + + #ifndef MSL + #define MSL MAX_STRING_LENGTH + #endif + + #ifndef MIL + #define MIL MAX_INPUT_LENGTH + #endif + DECLARE_DO_FUN( do_color ); void reset_colors( CHAR_DATA *ch ); void set_char_color( sh_int AType, CHAR_DATA *ch ); void set_pager_color( sh_int AType, CHAR_DATA *ch ); char *color_str( sh_int AType, CHAR_DATA *ch ); ! const char *const_color_align( const char *argument, int size, int align ); /* * Color Alignment Parameters *************** *** 42,100 **** #define ALIGN_RIGHT 3 /* These are the ANSI codes for foreground text colors */ ! #define ANSI_BLACK "\033[0;30m" ! #define ANSI_DRED "\033[0;31m" ! #define ANSI_DGREEN "\033[0;32m" ! #define ANSI_ORANGE "\033[0;33m" ! #define ANSI_DBLUE "\033[0;34m" ! #define ANSI_PURPLE "\033[0;35m" ! #define ANSI_CYAN "\033[0;36m" ! #define ANSI_GREY "\033[0;37m" ! #define ANSI_DGREY "\033[1;30m" ! #define ANSI_RED "\033[1;31m" ! #define ANSI_GREEN "\033[1;32m" ! #define ANSI_YELLOW "\033[1;33m" ! #define ANSI_BLUE "\033[1;34m" ! #define ANSI_PINK "\033[1;35m" ! #define ANSI_LBLUE "\033[1;36m" ! #define ANSI_WHITE "\033[1;37m" ! #define ANSI_RESET "\033[0m" /* These are the ANSI codes for blinking foreground text colors */ ! #define BLINK_BLACK "\033[0;5;30m" ! #define BLINK_DRED "\033[0;5;31m" ! #define BLINK_DGREEN "\033[0;5;32m" ! #define BLINK_ORANGE "\033[0;5;33m" ! #define BLINK_DBLUE "\033[0;5;34m" ! #define BLINK_PURPLE "\033[0;5;35m" ! #define BLINK_CYAN "\033[0;5;36m" ! #define BLINK_GREY "\033[0;5;37m" ! #define BLINK_DGREY "\033[1;5;30m" ! #define BLINK_RED "\033[1;5;31m" ! #define BLINK_GREEN "\033[1;5;32m" ! #define BLINK_YELLOW "\033[1;5;33m" ! #define BLINK_BLUE "\033[1;5;34m" ! #define BLINK_PINK "\033[1;5;35m" ! #define BLINK_LBLUE "\033[1;5;36m" ! #define BLINK_WHITE "\033[1;5;37m" /* These are the ANSI codes for background colors */ ! #define BACK_BLACK "\033[40m" ! #define BACK_DRED "\033[41m" ! #define BACK_DGREEN "\033[42m" ! #define BACK_ORANGE "\033[43m" ! #define BACK_DBLUE "\033[44m" ! #define BACK_PURPLE "\033[45m" ! #define BACK_CYAN "\033[46m" ! #define BACK_GREY "\033[47m" /* Other miscelaneous ANSI tags that can be used */ ! #define ANSI_BOLD "\033[1m" /* For bright color stuff */ ! #define ANSI_ITALIC "\033[3m" /* Italic text */ ! #define ANSI_UNDERLINE "\033[4m" /* Underline text */ ! #define ANSI_BLINK "\033[5m" /* Blinking text */ ! #define ANSI_REVERSE "\033[7m" /* Reverse colors */ ! #define ANSI_STRIKEOUT "\033[9m" /* Overstrike line */ #define AT_BLACK 0 #define AT_BLOOD 1 --- 50,108 ---- #define ALIGN_RIGHT 3 /* These are the ANSI codes for foreground text colors */ ! #define ANSI_BLACK "\e[0;30m" ! #define ANSI_DRED "\e[0;31m" ! #define ANSI_DGREEN "\e[0;32m" ! #define ANSI_ORANGE "\e[0;33m" ! #define ANSI_DBLUE "\e[0;34m" ! #define ANSI_PURPLE "\e[0;35m" ! #define ANSI_CYAN "\e[0;36m" ! #define ANSI_GREY "\e[0;37m" ! #define ANSI_DGREY "\e[1;30m" ! #define ANSI_RED "\e[1;31m" ! #define ANSI_GREEN "\e[1;32m" ! #define ANSI_YELLOW "\e[1;33m" ! #define ANSI_BLUE "\e[1;34m" ! #define ANSI_PINK "\e[1;35m" ! #define ANSI_LBLUE "\e[1;36m" ! #define ANSI_WHITE "\e[1;37m" ! #define ANSI_RESET "\e[0m" /* These are the ANSI codes for blinking foreground text colors */ ! #define BLINK_BLACK "\e[0;5;30m" ! #define BLINK_DRED "\e[0;5;31m" ! #define BLINK_DGREEN "\e[0;5;32m" ! #define BLINK_ORANGE "\e[0;5;33m" ! #define BLINK_DBLUE "\e[0;5;34m" ! #define BLINK_PURPLE "\e[0;5;35m" ! #define BLINK_CYAN "\e[0;5;36m" ! #define BLINK_GREY "\e[0;5;37m" ! #define BLINK_DGREY "\e[1;5;30m" ! #define BLINK_RED "\e[1;5;31m" ! #define BLINK_GREEN "\e[1;5;32m" ! #define BLINK_YELLOW "\e[1;5;33m" ! #define BLINK_BLUE "\e[1;5;34m" ! #define BLINK_PINK "\e[1;5;35m" ! #define BLINK_LBLUE "\e[1;5;36m" ! #define BLINK_WHITE "\e[1;5;37m" /* These are the ANSI codes for background colors */ ! #define BACK_BLACK "\e[40m" ! #define BACK_DRED "\e[41m" ! #define BACK_DGREEN "\e[42m" ! #define BACK_ORANGE "\e[43m" ! #define BACK_DBLUE "\e[44m" ! #define BACK_PURPLE "\e[45m" ! #define BACK_CYAN "\e[46m" ! #define BACK_GREY "\e[47m" /* Other miscelaneous ANSI tags that can be used */ ! #define ANSI_BOLD "\e[1m" /* For bright color stuff */ ! #define ANSI_ITALIC "\e[3m" /* Italic text */ ! #define ANSI_UNDERLINE "\e[4m" /* Underline text */ ! #define ANSI_BLINK "\e[5m" /* Blinking text */ ! #define ANSI_REVERSE "\e[7m" /* Reverse colors */ ! #define ANSI_STRIKEOUT "\e[9m" /* Overstrike line */ #define AT_BLACK 0 #define AT_BLOOD 1 *************** *** 193,203 **** #define AT_PRAC4 90 /* Added by Samson 1-21-02 */ #define AT_MXPPROMPT 91 /* Added by Samson 2-27-02 */ #define AT_GUILDTALK 92 /* Added by Tarl 28 Nov 02 */ ! #define AT_BOARD 93 /* Samson 10-14-03 */ ! #define AT_BOARD2 94 /* Samson 10-14-03 */ ! #define AT_BOARD3 95 /* Samson 10-14-03 */ /* Should ALWAYS be one more than the last numerical value in the list */ ! #define MAX_COLORS 96 extern const sh_int default_set [MAX_COLORS]; --- 201,212 ---- #define AT_PRAC4 90 /* Added by Samson 1-21-02 */ #define AT_MXPPROMPT 91 /* Added by Samson 2-27-02 */ #define AT_GUILDTALK 92 /* Added by Tarl 28 Nov 02 */ ! #define AT_OOC 93 ! #define AT_AVATAR 94 ! #define AT_SHIP 95 ! #define AT_CLAN 96 /* Should ALWAYS be one more than the last numerical value in the list */ ! #define MAX_COLORS 97 extern const sh_int default_set [MAX_COLORS]; diff -rc SmaugFUSS.orig/src/comm.c SmaugFUSS/src/comm.c *** SmaugFUSS.orig/src/comm.c 2004-02-01 18:04:54.000000000 +1100 --- SmaugFUSS/src/comm.c 2004-02-12 12:37:36.000000000 +1100 *************** *** 30,35 **** --- 30,36 ---- #endif #include "mud.h" + /* * Socket and TCP/IP stuff. */ *************** *** 44,49 **** --- 45,51 ---- #define TELOPT_ECHO '\x01' #define GA '\xF9' + #define SE '\xF0' #define SB '\xFA' #define WILL '\xFB' #define WONT '\xFC' *************** *** 63,75 **** #define closesocket close #endif #ifdef sun int gethostname ( char *name, int namelen ); #endif const char echo_off_str [] = { IAC, WILL, TELOPT_ECHO, '\0' }; ! const char echo_on_str [] = { IAC, WONT, TELOPT_ECHO, '\0' }; ! const char go_ahead_str [] = { IAC, GA, '\0' }; void auth_maxdesc args( ( int *md, fd_set *ins, fd_set *outs, fd_set *excs ) ); --- 65,90 ---- #define closesocket close #endif + #define TELOPT_MXP '\x5B' + #ifdef sun int gethostname ( char *name, int namelen ); #endif + // externs - NJG + bool DONT_UPPER; + bool MOBtrigger; + int area_version; + + const char echo_off_str [] = { IAC, WILL, TELOPT_ECHO, '\0' }; ! const char echo_on_str [] = { IAC, WONT, TELOPT_ECHO, '\0' }; ! const char go_ahead_str [] = { IAC, GA, '\0' }; ! const char will_mxp_str [] = { IAC, WILL, TELOPT_MXP, '\0' }; ! const char start_mxp_str [] = { IAC, SB, TELOPT_MXP, IAC, SE, '\0' }; ! const char do_mxp_str [] = { IAC, DO, TELOPT_MXP, '\0' }; ! const char dont_mxp_str [] = { IAC, DONT, TELOPT_MXP, '\0' }; ! void auth_maxdesc args( ( int *md, fd_set *ins, fd_set *outs, fd_set *excs ) ); *************** *** 325,330 **** --- 340,408 ---- return 0; } + /* set up MXP */ + void turn_on_mxp (DESCRIPTOR_DATA *d) + { + d->mxp = TRUE; /* turn it on now */ + write_to_buffer( d, start_mxp_str, 0 ); + write_to_buffer( d, MXPMODE (6), 0 ); /* permanent secure mode */ + write_to_buffer( d, MXPTAG ("!-- Set up MXP elements --"), 0); + /* Exit tag */ + write_to_buffer( d, MXPTAG ("!ELEMENT Ex '' FLAG=RoomExit"), 0); + /* Room description tag */ + write_to_buffer( d, MXPTAG ("!ELEMENT rdesc '

' FLAG=RoomDesc"), 0); + /* Get an item tag (for things on the ground) */ + write_to_buffer( d, MXPTAG + ("!ELEMENT Get \"\" ATT='name desc'"), + 0); + /* Drop an item tag (for things in the inventory) */ + write_to_buffer( d, MXPTAG + ("!ELEMENT Drop \"\" ATT='name desc'"), + 0); + /* Bid an item tag (for things in the auction) */ + write_to_buffer( d, MXPTAG + ("!ELEMENT Bid \"\" " + "ATT='name desc'"), + 0); + /* List an item tag (for things in a shop) */ + write_to_buffer( d, MXPTAG + ("!ELEMENT List \"\" " + "ATT='name desc'"), + 0); + /* Player tag (for who lists, tells etc.) */ + write_to_buffer( d, MXPTAG + ("!ELEMENT Player \"\" " + "ATT='name'"), + 0); + } /* end of turn_on_mxp */ + int init_socket( int port ) { *************** *** 388,394 **** return fd; } - /* static void SegVio() { CHAR_DATA *ch; --- 466,471 ---- *************** *** 404,415 **** } exit(0); } - */ /* * LAG alarm! -Thoric */ ! void caught_alarm() { char buf[MAX_STRING_LENGTH]; --- 481,491 ---- } exit(0); } /* * LAG alarm! -Thoric */ ! void caught_alarm(int) { char buf[MAX_STRING_LENGTH]; *************** *** 528,533 **** --- 604,610 ---- struct timeval last_time; char cmdline[MAX_INPUT_LENGTH]; DESCRIPTOR_DATA *d; + /* time_t last_check = 0; */ #ifndef WIN32 *************** *** 535,541 **** signal( SIGALRM, caught_alarm ); #endif ! /* signal( SIGSEGV, SegVio ); */ gettimeofday( &last_time, NULL ); current_time = (time_t) last_time.tv_sec; --- 612,618 ---- signal( SIGALRM, caught_alarm ); #endif ! // signal( SIGSEGV, SegVio ); gettimeofday( &last_time, NULL ); current_time = (time_t) last_time.tv_sec; *************** *** 615,620 **** --- 692,698 ---- } read_from_buffer( d ); + if ( d->incomm[0] != '\0' ) { d->fcommand = TRUE; *************** *** 764,770 **** struct sockaddr_in sock; struct hostent *from; int desc; ! int size; char bugbuf[MAX_STRING_LENGTH]; #ifdef WIN32 unsigned long arg = 1; --- 842,848 ---- struct sockaddr_in sock; struct hostent *from; int desc; ! socklen_t size; char bugbuf[MAX_STRING_LENGTH]; #ifdef WIN32 unsigned long arg = 1; *************** *** 823,828 **** --- 901,907 ---- dnew->user = STRALLOC("(unknown)"); dnew->newstate = 0; dnew->prevcolor = 0x07; + dnew->mxp = FALSE; /* NJG - initially MXP is off */ CREATE( dnew->outbuf, char, dnew->outsize ); *************** *** 1101,1106 **** --- 1180,1186 ---- void read_from_buffer( DESCRIPTOR_DATA *d ) { int i, j, k; + char * p; /* * Hold horses if pending command already. *************** *** 1108,1113 **** --- 1188,1218 ---- if ( d->incomm[0] != '\0' ) return; + /* + + Look for incoming telnet negotiation + */ + + + for (p = d->inbuf; *p; p++) + if ((unsigned char) *p == IAC) + { + if (memcmp (p, do_mxp_str, strlen (do_mxp_str)) == 0) + { + turn_on_mxp (d); + /* remove string from input buffer */ + memmove (p, &p [strlen (do_mxp_str)], strlen (&p [strlen (do_mxp_str)]) + 1); + p--; /* adjust to allow for discarded bytes */ + } /* end of turning on MXP */ + else if (memcmp (p, dont_mxp_str, strlen (dont_mxp_str)) == 0) + { + d->mxp = FALSE; + /* remove string from input buffer */ + memmove (p, &p [strlen (dont_mxp_str)], strlen (&p [strlen (dont_mxp_str)]) + 1); + p--; /* adjust to allow for discarded bytes */ + } /* end of turning off MXP */ + } /* end of finding an IAC */ + /* * Look for at least one new line. */ *************** *** 1295,1307 **** --- 1400,1590 ---- } } + /* + + MXP code by Nick Gammon. + + See: http://www.gammon.com.au + Queries: http://www.gammon.com.au/forum/ + + * Count number of mxp tags need converting + * ie. < becomes < + * > becomes > + * & becomes & + */ + + int count_mxp_tags (const int bMXP, const char *txt, int length) + { + char c; + const char * p; + int count; + int bInTag = FALSE; + int bInEntity = FALSE; + + for (p = txt, count = 0; + length > 0; + p++, length--) + { + c = *p; + + if (bInTag) /* in a tag, eg. */ + { + if (!bMXP) + count--; /* not output if not MXP */ + if (c == MXP_ENDc) + bInTag = FALSE; + } /* end of being inside a tag */ + else if (bInEntity) /* in a tag, eg. */ + { + if (!bMXP) + count--; /* not output if not MXP */ + if (c == ';') + bInEntity = FALSE; + } /* end of being inside a tag */ + else switch (c) + { + + case MXP_BEGc: + bInTag = TRUE; + if (!bMXP) + count--; /* not output if not MXP */ + break; + + case MXP_ENDc: /* shouldn't get this case */ + if (!bMXP) + count--; /* not output if not MXP */ + break; + + case MXP_AMPc: + bInEntity = TRUE; + if (!bMXP) + count--; /* not output if not MXP */ + break; + + default: + if (bMXP) + { + switch (c) + { + case '<': /* < becomes < */ + case '>': /* > becomes > */ + count += 3; + break; + + case '&': + count += 4; /* & becomes & */ + break; + + case '"': /* " becomes " */ + count += 5; + break; + + } /* end of inner switch */ + } /* end of MXP enabled */ + } /* end of switch on character */ + + } /* end of counting special characters */ + + return count; + } /* end of count_mxp_tags */ + + void convert_mxp_tags (const int bMXP, char * dest, const char *src, int length) + { + char c; + const char * ps; + char * pd; + int bInTag = FALSE; + int bInEntity = FALSE; + + for (ps = src, pd = dest; + length > 0; + ps++, length--) + { + c = *ps; + if (bInTag) /* in a tag, eg. */ + { + if (c == MXP_ENDc) + { + bInTag = FALSE; + if (bMXP) + *pd++ = '>'; + } + else if (bMXP) + *pd++ = c; /* copy tag only in MXP mode */ + } /* end of being inside a tag */ + else if (bInEntity) /* in a tag, eg. */ + { + if (bMXP) + *pd++ = c; /* copy tag only in MXP mode */ + if (c == ';') + bInEntity = FALSE; + } /* end of being inside a tag */ + else switch (c) + { + case MXP_BEGc: + bInTag = TRUE; + if (bMXP) + *pd++ = '<'; + break; + + case MXP_ENDc: /* shouldn't get this case */ + if (bMXP) + *pd++ = '>'; + break; + + case MXP_AMPc: + bInEntity = TRUE; + if (bMXP) + *pd++ = '&'; + break; + + default: + if (bMXP) + { + switch (c) + { + case '<': + memcpy (pd, "<", 4); + pd += 4; + break; + + case '>': + memcpy (pd, ">", 4); + pd += 4; + break; + + case '&': + memcpy (pd, "&", 5); + pd += 5; + break; + + case '"': + memcpy (pd, """, 6); + pd += 6; + break; + + default: + *pd++ = c; + break; /* end of default */ + + } /* end of inner switch */ + } + else + *pd++ = c; /* not MXP - just copy character */ + break; + + } /* end of switch on character */ + } /* end of converting special characters */ + } /* end of convert_mxp_tags */ /* * Append onto an output buffer. */ void write_to_buffer( DESCRIPTOR_DATA *d, const char *txt, int length ) { + int origlength; + if ( !d ) { bug( "Write_to_buffer: NULL descriptor" ); *************** *** 1327,1332 **** --- 1610,1619 ---- length = strlen(txt); } */ + origlength = length; + + /* work out how much we need to expand/contract it */ + length += count_mxp_tags (d->mxp, txt, length); /* * Initial \n\r if needed. *************** *** 1359,1365 **** /* * Copy. */ ! strncpy( d->outbuf + d->outtop, txt, length ); d->outtop += length; d->outbuf[d->outtop] = '\0'; return; --- 1646,1652 ---- /* * Copy. */ ! convert_mxp_tags (d->mxp, d->outbuf + d->outtop, txt, origlength ); d->outtop += length; d->outbuf[d->outtop] = '\0'; return; *************** *** 1443,1448 **** --- 1730,1736 ---- d->connected = CON_PRESS_ENTER; } + /* * Deal with sockets that haven't logged in yet. */ *************** *** 1594,1600 **** --- 1882,1891 ---- return; } + /* telnet negotiation to see if they support MXP */ + write_to_buffer( d, will_mxp_str, 0 ); + chk = check_reconnect( d, argument, FALSE ); if ( chk == BERR ) return; *************** *** 1856,1863 **** if ( toupper(arg[0]) == toupper(class_table[iClass]->who_name[0]) && !str_prefix( arg, class_table[iClass]->who_name ) ) { ! ch->class = iClass; ! if ( ch->class == CLASS_PALADIN ) ch->alignment = +500; break; } --- 2147,2154 ---- if ( toupper(arg[0]) == toupper(class_table[iClass]->who_name[0]) && !str_prefix( arg, class_table[iClass]->who_name ) ) { ! ch->mudclass = iClass; ! if ( ch->mudclass == CLASS_PALADIN ) ch->alignment = +500; break; } *************** *** 1887,1893 **** { if (iRace != RACE_VAMPIRE && race_table[iRace]->race_name && race_table[iRace]->race_name[0] != '\0' ! && !IS_SET(race_table[iRace]->class_restriction, 1 << ch->class) && str_cmp(race_table[iRace]->race_name,"unused") ) { if ( iRace > 0 ) --- 2178,2184 ---- { if (iRace != RACE_VAMPIRE && race_table[iRace]->race_name && race_table[iRace]->race_name[0] != '\0' ! && !IS_SET(race_table[iRace]->class_restriction, 1 << ch->mudclass) && str_cmp(race_table[iRace]->race_name,"unused") ) { if ( iRace > 0 ) *************** *** 1941,1947 **** if ( iRace == MAX_PC_RACE || !race_table[iRace]->race_name || race_table[iRace]->race_name[0] == '\0' || iRace == RACE_VAMPIRE ! || IS_SET(race_table[iRace]->class_restriction, 1 << ch->class ) || !str_cmp(race_table[iRace]->race_name,"unused") ) { --- 2232,2238 ---- if ( iRace == MAX_PC_RACE || !race_table[iRace]->race_name || race_table[iRace]->race_name[0] == '\0' || iRace == RACE_VAMPIRE ! || IS_SET(race_table[iRace]->class_restriction, 1 << ch->mudclass ) || !str_cmp(race_table[iRace]->race_name,"unused") ) { *************** *** 1975,1981 **** } sprintf( log_buf, "%s@%s new %s %s.", ch->name, d->host, race_table[ch->race]->race_name, ! class_table[ch->class]->who_name ); log_string_plus( log_buf, LOG_COMM, sysdata.log_level); to_channel( log_buf, CHANNEL_MONITOR, "Monitor", LEVEL_IMMORTAL ); write_to_buffer( d, "Press [ENTER] ", 0 ); --- 2266,2272 ---- } sprintf( log_buf, "%s@%s new %s %s.", ch->name, d->host, race_table[ch->race]->race_name, ! class_table[ch->mudclass]->who_name ); log_string_plus( log_buf, LOG_COMM, sysdata.log_level); to_channel( log_buf, CHANNEL_MONITOR, "Monitor", LEVEL_IMMORTAL ); write_to_buffer( d, "Press [ENTER] ", 0 ); *************** *** 1996,2002 **** if ( ch->position == POS_MOUNTED ) ch->position = POS_STANDING; - reset_colors (ch); set_pager_color( AT_PLAIN, ch ); if ( xIS_SET(ch->act, PLR_RIP) ) send_rip_screen(ch); --- 2287,2292 ---- *************** *** 2032,2038 **** int iLang; ch->pcdata->clan = NULL; ! switch ( class_table[ch->class]->attr_prime ) { case APPLY_STR: ch->perm_str = 16; break; case APPLY_INT: ch->perm_int = 16; break; --- 2322,2328 ---- int iLang; ch->pcdata->clan = NULL; ! switch ( class_table[ch->mudclass]->attr_prime ) { case APPLY_STR: ch->perm_str = 16; break; case APPLY_INT: ch->perm_int = 16; break; *************** *** 2065,2071 **** ch->height = number_range(race_table[ch->race]->height *.9, race_table[ch->race]->height *1.1); ch->weight = number_range(race_table[ch->race]->weight *.9, race_table[ch->race]->weight *1.1); ! if ( ch->class == CLASS_PALADIN ) ch->alignment = 1000; if ( (iLang = skill_lookup( "common" )) < 0 ) --- 2355,2361 ---- ch->height = number_range(race_table[ch->race]->height *.9, race_table[ch->race]->height *1.1); ch->weight = number_range(race_table[ch->race]->weight *.9, race_table[ch->race]->weight *1.1); ! if ( ch->mudclass == CLASS_PALADIN ) ch->alignment = 1000; if ( (iLang = skill_lookup( "common" )) < 0 ) *************** *** 2100,2106 **** ch->mana = UMAX(1,ch->max_mana); ch->move = ch->max_move; sprintf( buf, "the %s", ! title_table [ch->class] [ch->level] [ch->sex == SEX_FEMALE ? 1 : 0] ); set_title( ch, buf ); --- 2390,2396 ---- ch->mana = UMAX(1,ch->max_mana); ch->move = ch->max_move; sprintf( buf, "the %s", ! title_table [ch->mudclass] [ch->level] [ch->sex == SEX_FEMALE ? 1 : 0] ); set_title( ch, buf ); *************** *** 2813,2819 **** int getcolor(char clr) { ! static const char colors[16] = "xrgObpcwzRGYBPCW"; int r; for ( r = 0; r < 16; r++ ) --- 3103,3116 ---- int getcolor(char clr) { ! static const char colors[16] = ! { ! 'x', 'r', 'g', 'O', 'b', ! 'p', 'c', 'w', 'z', 'R', ! 'G', 'Y', 'B', 'P', 'C', ! 'W' ! }; ! int r; for ( r = 0; r < 16; r++ ) *************** *** 2857,2862 **** --- 3154,3167 ---- } else prompt = ch->pcdata->prompt; + + /* reset MXP to default operation */ + if (d->mxp) + { + strcpy (pbuf, ESC "[3z"); + pbuf += 4; + } + if ( ansi ) { strcpy( pbuf, ANSI_RESET ); diff -rc SmaugFUSS.orig/src/db.c SmaugFUSS/src/db.c *** SmaugFUSS.orig/src/db.c 2003-11-14 14:04:17.000000000 +1100 --- SmaugFUSS/src/db.c 2004-02-12 13:35:42.000000000 +1100 *************** *** 1173,1179 **** sscanf( ln, "%d %d %d %d %d %d %d", &x1, &x2, &x3, &x4, &x5, &x6, &x7 ); pMobIndex->race = x1; ! pMobIndex->class = x2; pMobIndex->height = x3; pMobIndex->weight = x4; pMobIndex->speaks = x5; --- 1173,1179 ---- sscanf( ln, "%d %d %d %d %d %d %d", &x1, &x2, &x3, &x4, &x5, &x6, &x7 ); pMobIndex->race = x1; ! pMobIndex->mudclass = x2; pMobIndex->height = x3; pMobIndex->weight = x4; pMobIndex->speaks = x5; *************** *** 1224,1230 **** pMobIndex->perm_con = 13; pMobIndex->perm_lck = 13; pMobIndex->race = 0; ! pMobIndex->class = 3; pMobIndex->xflags = 0; pMobIndex->resistant = 0; pMobIndex->immune = 0; --- 1224,1230 ---- pMobIndex->perm_con = 13; pMobIndex->perm_lck = 13; pMobIndex->race = 0; ! pMobIndex->mudclass = 3; pMobIndex->xflags = 0; pMobIndex->resistant = 0; pMobIndex->immune = 0; *************** *** 2171,2177 **** */ void load_neighbor(AREA_DATA *tarea, FILE *fp) { ! NEIGHBOR_DATA *new; if(!tarea) { --- 2171,2177 ---- */ void load_neighbor(AREA_DATA *tarea, FILE *fp) { ! NEIGHBOR_DATA *mudnew; if(!tarea) { *************** *** 2185,2196 **** return; } ! CREATE(new, NEIGHBOR_DATA, 1); ! new->next = NULL; ! new->prev = NULL; ! new->address = NULL; ! new->name = fread_string(fp); ! LINK(new, tarea->weather->first_neighbor, tarea->weather->last_neighbor, next, prev); --- 2185,2196 ---- return; } ! CREATE(mudnew, NEIGHBOR_DATA, 1); ! mudnew->next = NULL; ! mudnew->prev = NULL; ! mudnew->address = NULL; ! mudnew->name = fread_string(fp); ! LINK(mudnew, tarea->weather->first_neighbor, tarea->weather->last_neighbor, next, prev); *************** *** 2533,2539 **** mob->hitroll = pMobIndex->hitroll; mob->damroll = pMobIndex->damroll; mob->race = pMobIndex->race; ! mob->class = pMobIndex->class; mob->xflags = pMobIndex->xflags; mob->saving_poison_death = pMobIndex->saving_poison_death; mob->saving_wand = pMobIndex->saving_wand; --- 2533,2539 ---- mob->hitroll = pMobIndex->hitroll; mob->damroll = pMobIndex->damroll; mob->race = pMobIndex->race; ! mob->mudclass = pMobIndex->mudclass; mob->xflags = pMobIndex->xflags; mob->saving_poison_death = pMobIndex->saving_poison_death; mob->saving_wand = pMobIndex->saving_wand; *************** *** 2785,2791 **** ch->weight = 180; ch->xflags = 0; ch->race = 0; ! ch->class = 3; ch->speaking = LANG_COMMON; ch->speaks = LANG_COMMON; ch->barenumdie = 1; --- 2785,2791 ---- ch->weight = 180; ch->xflags = 0; ch->race = 0; ! ch->mudclass = 3; ch->speaking = LANG_COMMON; ch->speaks = LANG_COMMON; ch->barenumdie = 1; *************** *** 2934,2940 **** /* * Get an extra description from a list. */ ! char *get_extra_descr( const char *name, EXTRA_DESCR_DATA *ed ) { for ( ; ed; ed = ed->next ) if ( is_name( name, ed->keyword ) ) --- 2934,2940 ---- /* * Get an extra description from a list. */ ! char *get_extra_descr( char *name, EXTRA_DESCR_DATA *ed ) { for ( ; ed; ed = ed->next ) if ( is_name( name, ed->keyword ) ) *************** *** 4207,4217 **** gfp = fopen( buf, "r" ); if ( gfp ) { ! word = feof( gfp ) ? "End" : fread_word( gfp ); ilevel = fread_number( gfp ); fread_to_eol( gfp ); ! word = feof( gfp ) ? "End" : fread_word( gfp ); ! if ( !str_cmp( word, "Pcflags" ) ) iflags = fread_number( gfp ); else iflags = 0; --- 4207,4218 ---- gfp = fopen( buf, "r" ); if ( gfp ) { ! word = feof(gfp) ? (char *) "End" : fread_word(gfp); ! ilevel = fread_number( gfp ); fread_to_eol( gfp ); ! word = feof(gfp) ? (char *) "End" : fread_word(gfp); ! if ( !str_cmp( word, "Pcflags" ) ) iflags = fread_number( gfp ); else iflags = 0; *************** *** 5362,5368 **** pMobIndex->perm_con = 13; pMobIndex->perm_lck = 13; pMobIndex->race = 0; ! pMobIndex->class = 3; pMobIndex->xflags = 0; pMobIndex->resistant = 0; pMobIndex->immune = 0; --- 5363,5369 ---- pMobIndex->perm_con = 13; pMobIndex->perm_lck = 13; pMobIndex->race = 0; ! pMobIndex->mudclass = 3; pMobIndex->xflags = 0; pMobIndex->resistant = 0; pMobIndex->immune = 0; *************** *** 5407,5413 **** pMobIndex->perm_con = cMobIndex->perm_con; pMobIndex->perm_lck = cMobIndex->perm_lck; pMobIndex->race = cMobIndex->race; ! pMobIndex->class = cMobIndex->class; pMobIndex->xflags = cMobIndex->xflags; pMobIndex->resistant = cMobIndex->resistant; pMobIndex->immune = cMobIndex->immune; --- 5408,5414 ---- pMobIndex->perm_con = cMobIndex->perm_con; pMobIndex->perm_lck = cMobIndex->perm_lck; pMobIndex->race = cMobIndex->race; ! pMobIndex->mudclass = cMobIndex->mudclass; pMobIndex->xflags = cMobIndex->xflags; pMobIndex->resistant = cMobIndex->resistant; pMobIndex->immune = cMobIndex->immune; *************** *** 6114,6120 **** sys->mud_name = NULL; for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 6115,6122 ---- sys->mud_name = NULL; for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 6912,6918 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 6914,6921 ---- for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) diff -rc SmaugFUSS.orig/src/deity.c SmaugFUSS/src/deity.c *** SmaugFUSS.orig/src/deity.c 2003-05-09 02:32:26.000000000 +1000 --- SmaugFUSS/src/deity.c 2004-02-12 12:58:48.000000000 +1100 *************** *** 129,135 **** fprintf( fp, "Sdeityobj %d\n", deity->sdeityobj ); fprintf( fp, "Srecall %d\n", deity->srecall ); fprintf( fp, "Race %d\n", deity->race ); ! fprintf( fp, "Class %d\n", deity->class ); fprintf( fp, "Element %d\n", deity->element ); fprintf( fp, "Sex %d\n", deity->sex ); fprintf( fp, "Affected %s\n", print_bitvector(&deity->affected) ); --- 129,135 ---- fprintf( fp, "Sdeityobj %d\n", deity->sdeityobj ); fprintf( fp, "Srecall %d\n", deity->srecall ); fprintf( fp, "Race %d\n", deity->race ); ! fprintf( fp, "Class %d\n", deity->mudclass ); fprintf( fp, "Element %d\n", deity->element ); fprintf( fp, "Sex %d\n", deity->sex ); fprintf( fp, "Affected %s\n", print_bitvector(&deity->affected) ); *************** *** 171,177 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 171,178 ---- for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 195,201 **** break; case 'C': ! KEY( "Class", deity->class, fread_number( fp ) ); break; case 'D': --- 196,202 ---- break; case 'C': ! KEY( "Class", deity->mudclass, fread_number( fp ) ); break; case 'D': *************** *** 351,357 **** for ( ; ; ) { ! filename = feof( fpList ) ? "$" : fread_word( fpList ); log_string( filename ); if ( filename[0] == '$' ) break; --- 352,359 ---- for ( ; ; ) { ! filename = feof(fpList) ? (char *) "$" : fread_word(fpList); ! log_string( filename ); if ( filename[0] == '$' ) break; *************** *** 390,396 **** return; case SUB_DEITYDESC: ! deity = ch->dest_buf; STRFREE( deity->description ); deity->description = copy_buffer( ch ); stop_editing( ch ); --- 392,398 ---- return; case SUB_DEITYDESC: ! deity = (DEITY_DATA *) ch->dest_buf; STRFREE( deity->description ); deity->description = copy_buffer( ch ); stop_editing( ch ); *************** *** 724,731 **** if ( !str_cmp( arg2, "class" ) ) { ! deity->class = atoi( argument ); ! if ( ( deity->class < 0 ) || ( deity->class >= MAX_PC_CLASS ) ) deity->class = -1; send_to_char( "Done.\n\r", ch ); save_deity( deity ); return; --- 726,733 ---- if ( !str_cmp( arg2, "class" ) ) { ! deity->mudclass = atoi( argument ); ! if ( ( deity->mudclass < 0 ) || ( deity->mudclass >= MAX_PC_CLASS ) ) deity->mudclass = -1; send_to_char( "Done.\n\r", ch ); save_deity( deity ); return; *************** *** 888,894 **** ( deity->npcfoe < 0 || deity->npcfoe > MAX_NPC_RACE ) ? "none" : npc_race[deity->npcfoe] ); ch_printf( ch, "Race: %-12sClass: %-11sSex: %-13sRace2: %s\n\r", ( deity->race < 0 || deity->race > MAX_PC_RACE ) ? "none" : race_table[deity->race]->race_name, ! ( deity->class < 0 || deity->class > MAX_PC_CLASS ) ? "none" : class_table[deity->class]->who_name, deity->sex == -1 ? "none" : deity->sex == SEX_MALE ? "male" : deity->sex == SEX_FEMALE ? "female" : "neutral", --- 890,896 ---- ( deity->npcfoe < 0 || deity->npcfoe > MAX_NPC_RACE ) ? "none" : npc_race[deity->npcfoe] ); ch_printf( ch, "Race: %-12sClass: %-11sSex: %-13sRace2: %s\n\r", ( deity->race < 0 || deity->race > MAX_PC_RACE ) ? "none" : race_table[deity->race]->race_name, ! ( deity->mudclass < 0 || deity->mudclass > MAX_PC_CLASS ) ? "none" : class_table[deity->mudclass]->who_name, deity->sex == -1 ? "none" : deity->sex == SEX_MALE ? "male" : deity->sex == SEX_FEMALE ? "female" : "neutral", *************** *** 1010,1017 **** return; } ! if ( ( deity->class != -1 ) ! && ( deity->class != ch->class ) ) { send_to_char( "That deity will not accept your worship due to your class.\n\r", ch ); return; --- 1012,1019 ---- return; } ! if ( ( deity->mudclass != -1 ) ! && ( deity->mudclass != ch->mudclass ) ) { send_to_char( "That deity will not accept your worship due to your class.\n\r", ch ); return; diff -rc SmaugFUSS.orig/src/fight.c SmaugFUSS/src/fight.c *** SmaugFUSS.orig/src/fight.c 2002-12-30 14:36:54.000000000 +1100 --- SmaugFUSS/src/fight.c 2004-02-12 12:28:50.000000000 +1100 *************** *** 1127,1134 **** } else { ! thac0_00 = class_table[ch->class]->thac0_00; ! thac0_32 = class_table[ch->class]->thac0_32; } thac0 = interpolate( ch->level, thac0_00, thac0_32 ) - GET_HITROLL(ch); victim_ac = UMAX( -19, (int) (GET_AC(victim) / 10) ); --- 1127,1134 ---- } else { ! thac0_00 = class_table[ch->mudclass]->thac0_00; ! thac0_32 = class_table[ch->mudclass]->thac0_32; } thac0 = interpolate( ch->level, thac0_00, thac0_32 ) - GET_HITROLL(ch); victim_ac = UMAX( -19, (int) (GET_AC(victim) / 10) ); *************** *** 1468,1475 **** } else { ! thac0_00 = class_table[ch->class]->thac0_00; ! thac0_32 = class_table[ch->class]->thac0_32; } thac0 = interpolate( ch->level, thac0_00, thac0_32 ) - GET_HITROLL(ch) + (dist*2); victim_ac = UMAX( -19, (int) (GET_AC(victim) / 10) ); --- 1468,1475 ---- } else { ! thac0_00 = class_table[ch->mudclass]->thac0_00; ! thac0_32 = class_table[ch->mudclass]->thac0_32; } thac0 = interpolate( ch->level, thac0_00, thac0_32 ) - GET_HITROLL(ch) + (dist*2); victim_ac = UMAX( -19, (int) (GET_AC(victim) / 10) ); *************** *** 4255,4257 **** --- 4255,4258 ---- raw_kill( ch, victim ); return; } + diff -rc SmaugFUSS.orig/src/grub.c SmaugFUSS/src/grub.c *** SmaugFUSS.orig/src/grub.c 2001-04-08 05:37:56.000000000 +1000 --- SmaugFUSS/src/grub.c 2004-02-12 12:28:50.000000000 +1100 *************** *** 444,450 **** typedef struct gr_struct GR_STRUCT; typedef struct go_struct GO_STRUCT; ! int get_otype( char *type ); /* fun prototype for fun in build.c */ struct field_struct /* field table - info re each field */ { --- 444,450 ---- typedef struct gr_struct GR_STRUCT; typedef struct go_struct GO_STRUCT; ! int get_otype( const char *type ); /* fun prototype for fun in build.c */ struct field_struct /* field table - info re each field */ { *************** *** 471,484 **** } go_op [MAX_NUM_OPS]; enum gr_field_type /* enumerates the fields in the input record */ ! {name, sex, class, race, level, room, gold, clan, council, site, last, pkill}; struct gr_struct /* input record containing pfile info */ { char name [MAX_NAME_LENGTH]; char sex; ! char class; char race; char level; short room; --- 471,484 ---- } go_op [MAX_NUM_OPS]; enum gr_field_type /* enumerates the fields in the input record */ ! {name, sex, mudclass, race, level, room, gold, clan, council, site, last, pkill}; struct gr_struct /* input record containing pfile info */ { char name [MAX_NAME_LENGTH]; char sex; ! char mudclass; char race; char level; short room; *************** *** 1301,1308 **** if ( !go_eval_num (r.sex, gr_op[cou].op, gr_op[cou].nval) ) return FALSE; else break; ! case class: ! if ( !go_eval_num (r.class, gr_op[cou].op, gr_op[cou].nval) ) return FALSE; else break; case race: --- 1301,1308 ---- if ( !go_eval_num (r.sex, gr_op[cou].op, gr_op[cou].nval) ) return FALSE; else break; ! case mudclass: ! if ( !go_eval_num (r.mudclass, gr_op[cou].op, gr_op[cou].nval) ) return FALSE; else break; case race: *************** *** 1364,1371 **** if ( go_eval_num (r.sex, gr_op[cou].op, gr_op[cou].nval) ) return TRUE; else break; ! case class: ! if ( go_eval_num (r.class, gr_op[cou].op, gr_op[cou].nval) ) return TRUE; else break; case race: --- 1364,1371 ---- if ( go_eval_num (r.sex, gr_op[cou].op, gr_op[cou].nval) ) return TRUE; else break; ! case mudclass: ! if ( go_eval_num (r.mudclass, gr_op[cou].op, gr_op[cou].nval) ) return TRUE; else break; case race: *************** *** 1505,1511 **** int tot_match = 0; /* total records matched */ GR_STRUCT r; /* input (physical record) */ char sex[] = "NMF"; /* convert sex to text */ ! char class[] = "MCTWVDRAPN"; /* convert class to text */ char race[][3] = /* convert race to text */ {"Hu", "El", "Dw", "Ha", "Px", "Va", "Og", "HO", "HT", "HE", "Gi", "Dr", "SE", "Li", "Gn"}; --- 1505,1511 ---- int tot_match = 0; /* total records matched */ GR_STRUCT r; /* input (physical record) */ char sex[] = "NMF"; /* convert sex to text */ ! char mudclass[] = "MCTWVDRAPN"; /* convert class to text */ char race[][3] = /* convert race to text */ {"Hu", "El", "Dw", "Ha", "Px", "Va", "Og", "HO", "HT", "HE", "Gi", "Dr", "SE", "Li", "Gn"}; *************** *** 1543,1549 **** ch_printf(ch, "%-12s %2hd %c %2s %c %3s %3s %5hd %11ld %-15s %6lu %c\n\r", r.name, r.level, sex[(unsigned char) r.sex], ! race[(unsigned char) r.race], class[(unsigned char) r.class], clan[(unsigned char) r.clan], council[(unsigned char) r.council], r.room, r.gold, r.site, r.last, r.pkill); --- 1543,1549 ---- ch_printf(ch, "%-12s %2hd %c %2s %c %3s %3s %5hd %11ld %-15s %6lu %c\n\r", r.name, r.level, sex[(unsigned char) r.sex], ! race[(unsigned char) r.race], mudclass[(unsigned char) r.mudclass], clan[(unsigned char) r.clan], council[(unsigned char) r.council], r.room, r.gold, r.site, r.last, r.pkill); *************** *** 2018,2024 **** if (!str_cmp(arg1, "mrc")) { MOB_INDEX_DATA *pm; ! sh_int cou, race, class, dis_num, vnum1, vnum2, dis_cou = 0; if ( !*arg2 || !*arg3 || !*arg4 || !*arg5 || !*arg6 || !isdigit(*arg2) || !isdigit(*arg3) || !isdigit(*arg4) --- 2018,2024 ---- if (!str_cmp(arg1, "mrc")) { MOB_INDEX_DATA *pm; ! sh_int cou, race, mudclass, dis_num, vnum1, vnum2, dis_cou = 0; if ( !*arg2 || !*arg3 || !*arg4 || !*arg5 || !*arg6 || !isdigit(*arg2) || !isdigit(*arg3) || !isdigit(*arg4) *************** *** 2030,2041 **** } dis_num = UMIN(atoi (arg2), DIAG_MAX_SIZE); race = atoi (arg3); ! class = atoi (arg4); vnum1 = atoi (arg5); vnum2 = atoi (arg6); /* ch_printf(ch, "dis_num=%d race=%d class=%d vnum1=%d vnum2=%d\n\r", ! dis_num, race, class, vnum1, vnum2); */ send_to_char("\n\r", ch); --- 2030,2041 ---- } dis_num = UMIN(atoi (arg2), DIAG_MAX_SIZE); race = atoi (arg3); ! mudclass = atoi (arg4); vnum1 = atoi (arg5); vnum2 = atoi (arg6); /* ch_printf(ch, "dis_num=%d race=%d class=%d vnum1=%d vnum2=%d\n\r", ! dis_num, race, mudclass, vnum1, vnum2); */ send_to_char("\n\r", ch); *************** *** 2045,2051 **** for (pm = mob_index_hash[cou]; pm; pm = pm->next) { if ( pm->vnum >= vnum1 && pm->vnum <= vnum2 ! && pm->race==race && pm->class==class && dis_cou++ < dis_num ) pager_printf( ch, "%5d %s\n\r", pm->vnum, pm->player_name ); } } --- 2045,2051 ---- for (pm = mob_index_hash[cou]; pm; pm = pm->next) { if ( pm->vnum >= vnum1 && pm->vnum <= vnum2 ! && pm->race==race && pm->mudclass==mudclass && dis_cou++ < dis_num ) pager_printf( ch, "%5d %s\n\r", pm->vnum, pm->player_name ); } } diff -rc SmaugFUSS.orig/src/handler.c SmaugFUSS/src/handler.c *** SmaugFUSS.orig/src/handler.c 2003-04-04 00:41:07.000000000 +1000 --- SmaugFUSS/src/handler.c 2004-02-12 12:28:50.000000000 +1100 *************** *** 84,90 **** { if ( IS_NPC(ch) ) return 1000; ! return class_table[ch->class]->exp_base; } /* -Thoric --- 84,90 ---- { if ( IS_NPC(ch) ) return 1000; ! return class_table[ch->mudclass]->exp_base; } /* -Thoric *************** *** 165,175 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_STR ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_STR ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_STR ) max = 16; else max = 20; --- 165,175 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_STR ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_STR ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_STR ) max = 16; else max = 20; *************** *** 186,196 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_INT ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_INT ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_INT ) max = 16; else max = 20; --- 186,196 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_INT ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_INT ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_INT ) max = 16; else max = 20; *************** *** 207,217 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_WIS ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_WIS ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_WIS ) max = 16; else max = 20; --- 207,217 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_WIS ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_WIS ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_WIS ) max = 16; else max = 20; *************** *** 228,238 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_DEX ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_DEX ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_DEX ) max = 16; else max = 20; --- 228,238 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_DEX ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_DEX ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_DEX ) max = 16; else max = 20; *************** *** 249,259 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_CON ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_CON ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_CON ) max = 16; else max = 20; --- 249,259 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_CON ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_CON ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_CON ) max = 16; else max = 20; *************** *** 268,278 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_CHA ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_CHA ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_CHA ) max = 16; else max = 20; --- 268,278 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_CHA ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_CHA ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_CHA ) max = 16; else max = 20; *************** *** 287,297 **** { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->class]->attr_prime == APPLY_LCK ) max = 25; ! else if ( class_table[ch->class]->attr_second == APPLY_LCK ) max = 22; ! else if ( class_table[ch->class]->attr_deficient == APPLY_LCK ) max = 16; else max = 20; --- 287,297 ---- { sh_int max; ! if ( IS_NPC(ch) || class_table[ch->mudclass]->attr_prime == APPLY_LCK ) max = 25; ! else if ( class_table[ch->mudclass]->attr_second == APPLY_LCK ) max = 22; ! else if ( class_table[ch->mudclass]->attr_deficient == APPLY_LCK ) max = 16; else max = 20; *************** *** 368,374 **** /* * See if a string is one of the names of an object. */ ! bool is_name( const char *str, char *namelist ) { char name[MAX_INPUT_LENGTH]; --- 368,374 ---- /* * See if a string is one of the names of an object. */ ! bool is_name( char *str, char *namelist ) { char name[MAX_INPUT_LENGTH]; *************** *** 382,388 **** } } ! bool is_name_prefix( const char *str, char *namelist ) { char name[MAX_INPUT_LENGTH]; --- 382,388 ---- } } ! bool is_name_prefix( char *str, char *namelist ) { char name[MAX_INPUT_LENGTH]; *************** *** 959,967 **** SET_BIT(ch->susceptible, race_table[ch->race]->suscept); /* Add in effects from class */ ! xSET_BITS(ch->affected_by, class_table[ch->class]->affected); ! SET_BIT(ch->resistant, class_table[ch->class]->resist); ! SET_BIT(ch->susceptible, class_table[ch->class]->suscept); /* Add in effects from deities */ if (ch->pcdata->deity) --- 959,967 ---- SET_BIT(ch->susceptible, race_table[ch->race]->suscept); /* Add in effects from class */ ! xSET_BITS(ch->affected_by, class_table[ch->mudclass]->affected); ! SET_BIT(ch->resistant, class_table[ch->mudclass]->resist); ! SET_BIT(ch->susceptible, class_table[ch->mudclass]->suscept); /* Add in effects from deities */ if (ch->pcdata->deity) *************** *** 2850,2856 **** /* * Return ascii name of an affect bit vector. */ ! char *affect_bit_name( EXT_BV *vector ) { static char buf[512]; --- 2850,2856 ---- /* * Return ascii name of an affect bit vector. */ ! const char *affect_bit_name( EXT_BV *vector ) { static char buf[512]; *************** *** 2896,2902 **** /* * Return ascii name of extra flags vector. */ ! char *extra_bit_name( EXT_BV *extra_flags ) { static char buf[512]; --- 2896,2902 ---- /* * Return ascii name of extra flags vector. */ ! const char *extra_bit_name( EXT_BV *extra_flags ) { static char buf[512]; *************** *** 2935,2941 **** /* * Return ascii name of magic flags vector. - Scryn */ ! char *magic_bit_name( int magic_flags ) { static char buf[512]; --- 2935,2941 ---- /* * Return ascii name of magic flags vector. - Scryn */ ! const char *magic_bit_name( int magic_flags ) { static char buf[512]; diff -rc SmaugFUSS.orig/src/hashstr.c SmaugFUSS/src/hashstr.c *** SmaugFUSS.orig/src/hashstr.c 2001-04-08 05:38:11.000000000 +1000 --- SmaugFUSS/src/hashstr.c 2004-02-12 12:28:50.000000000 +1100 *************** *** 42,48 **** * If found, increase link count, and return pointer, * otherwise add new string to hash table, and return pointer. */ ! char *str_alloc( char *str ) { register int len, hash, psize; register struct hashstr_data *ptr; --- 42,48 ---- * If found, increase link count, and return pointer, * otherwise add new string to hash table, and return pointer. */ ! char *str_alloc( const char *str ) { register int len, hash, psize; register struct hashstr_data *ptr; diff -rc SmaugFUSS.orig/src/ident.c SmaugFUSS/src/ident.c *** SmaugFUSS.orig/src/ident.c 2001-04-08 05:39:17.000000000 +1000 --- SmaugFUSS/src/ident.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 296,302 **** CHAR_DATA *ch = (d->original ? d->original : d->character); AUTH_DATA *a; struct sockaddr_in us, them; ! int ulen = sizeof(us), tlen = sizeof(them); /* To stop an uninitialized memory read --Shaddai */ us.sin_port = 0; --- 296,302 ---- CHAR_DATA *ch = (d->original ? d->original : d->character); AUTH_DATA *a; struct sockaddr_in us, them; ! socklen_t ulen = sizeof(us), tlen = sizeof(them); /* To stop an uninitialized memory read --Shaddai */ us.sin_port = 0; diff -rc SmaugFUSS.orig/src/imm_host.c SmaugFUSS/src/imm_host.c *** SmaugFUSS.orig/src/imm_host.c 2001-04-08 05:40:43.000000000 +1000 --- SmaugFUSS/src/imm_host.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 59,65 **** while ( my_continue ) { ! word = feof (fp) ? "#END" : fread_word (fp); fMatch = FALSE; switch ( UPPER ( word[0] ) ) --- 59,65 ---- while ( my_continue ) { ! word = feof (fp) ? (char *) "#END" : fread_word (fp); fMatch = FALSE; switch ( UPPER ( word[0] ) ) *************** *** 110,116 **** for ( ; ; ) { ! word = feof (fp) ? "End" : fread_word (fp); fMatch = FALSE; switch ( UPPER ( word[0] ) ) --- 110,116 ---- for ( ; ; ) { ! word = feof (fp) ? (char *) "End" : fread_word (fp); fMatch = FALSE; switch ( UPPER ( word[0] ) ) diff -rc SmaugFUSS.orig/src/interp.c SmaugFUSS/src/interp.c *** SmaugFUSS.orig/src/interp.c 2003-07-31 13:22:55.000000000 +1000 --- SmaugFUSS/src/interp.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 19,24 **** --- 19,25 ---- #include #include #include + #define __retms__ #include #include "mud.h" *************** *** 771,777 **** /* * Return true if an argument is completely numeric. */ ! bool is_number( char *arg ) { bool first = TRUE; if ( *arg == '\0' ) --- 772,778 ---- /* * Return true if an argument is completely numeric. */ ! bool is_number( const char *arg ) { bool first = TRUE; if ( *arg == '\0' ) diff -rc SmaugFUSS.orig/src/magic.c SmaugFUSS/src/magic.c *** SmaugFUSS.orig/src/magic.c 2003-08-13 12:51:26.000000000 +1000 --- SmaugFUSS/src/magic.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 70,76 **** if ( !skill_table[sn]->name ) break; if ( ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->class] && LOWER(name[0]) == LOWER(skill_table[sn]->name[0]) && !str_prefix( name, skill_table[sn]->name ) ) return sn; --- 70,76 ---- if ( !skill_table[sn]->name ) break; if ( ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->mudclass] && LOWER(name[0]) == LOWER(skill_table[sn]->name[0]) && !str_prefix( name, skill_table[sn]->name ) ) return sn; *************** *** 250,256 **** if ( LOWER(name[0]) == LOWER(skill_table[sn]->name[0]) && !str_prefix(name, skill_table[sn]->name) && ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->class] ) return sn; if (first >= top) return -1; --- 250,256 ---- if ( LOWER(name[0]) == LOWER(skill_table[sn]->name[0]) && !str_prefix(name, skill_table[sn]->name) && ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->mudclass] ) return sn; if (first >= top) return -1; *************** *** 272,278 **** if (!str_cmp(name, skill_table[sn]->name) && ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->class] ) return sn; if (first >= top) return -1; --- 272,278 ---- if (!str_cmp(name, skill_table[sn]->name) && ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->mudclass] ) return sn; if (first >= top) return -1; *************** *** 357,368 **** dispel_casting (AFFECT_DATA *paf,CHAR_DATA *ch,CHAR_DATA *victim,int affect, bool dispel) { char buf[MAX_STRING_LENGTH]; ! char *spell; SKILLTYPE *sktmp; bool is_mage = FALSE, has_detect = FALSE; EXT_BV ext_bv = meb(affect); ! if ( IS_NPC ( ch ) || ch->class == CLASS_MAGE ) is_mage = TRUE; if ( IS_AFFECTED (ch, AFF_DETECT_MAGIC) ) has_detect = TRUE; --- 357,368 ---- dispel_casting (AFFECT_DATA *paf,CHAR_DATA *ch,CHAR_DATA *victim,int affect, bool dispel) { char buf[MAX_STRING_LENGTH]; ! const char *spell; SKILLTYPE *sktmp; bool is_mage = FALSE, has_detect = FALSE; EXT_BV ext_bv = meb(affect); ! if ( IS_NPC ( ch ) || ch->mudclass == CLASS_MAGE ) is_mage = TRUE; if ( IS_AFFECTED (ch, AFF_DETECT_MAGIC) ) has_detect = TRUE; *************** *** 609,615 **** struct syl_type { char * old; ! char * new; }; static const struct syl_type syl_table[] = --- 609,615 ---- struct syl_type { char * old; ! char * newthing; }; static const struct syl_type syl_table[] = *************** *** 654,660 **** { if ( !str_prefix( syl_table[iSyl].old, pName ) ) { ! strcat( buf, syl_table[iSyl].new ); break; } } --- 654,660 ---- { if ( !str_prefix( syl_table[iSyl].old, pName ) ) { ! strcat( buf, syl_table[iSyl].newthing ); break; } } *************** *** 669,675 **** for ( rch = ch->in_room->first_person; rch; rch = rch->next_in_room ) { if ( rch != ch ) ! act( AT_MAGIC, ch->class==rch->class ? buf : buf2, ch, NULL, rch, TO_VICT ); } --- 669,675 ---- for ( rch = ch->in_room->first_person; rch; rch = rch->next_in_room ) { if ( rch != ch ) ! act( AT_MAGIC, ch->mudclass==rch->mudclass ? buf : buf2, ch, NULL, rch, TO_VICT ); } *************** *** 1337,1343 **** if ( get_trust(ch) < LEVEL_GOD ) { if ( ( sn = find_spell( ch, arg1, TRUE ) ) < 0 ! || ( !IS_NPC(ch) && ch->level < skill_table[sn]->skill_level[ch->class] ) ) { send_to_char( "You can't do that.\n\r", ch ); return; --- 1337,1343 ---- if ( get_trust(ch) < LEVEL_GOD ) { if ( ( sn = find_spell( ch, arg1, TRUE ) ) < 0 ! || ( !IS_NPC(ch) && ch->level < skill_table[sn]->skill_level[ch->mudclass] ) ) { send_to_char( "You can't do that.\n\r", ch ); return; *************** *** 1451,1457 **** && !IS_IMMORTAL(ch) && skill->guild != CLASS_NONE && (!ch->pcdata->clan ! || skill->guild != ch->pcdata->clan->class) ) { send_to_char( "That is only available to members of a certain guild.\n\r", ch); return; --- 1451,1457 ---- && !IS_IMMORTAL(ch) && skill->guild != CLASS_NONE && (!ch->pcdata->clan ! || skill->guild != ch->pcdata->clan->mudclass) ) { send_to_char( "That is only available to members of a certain guild.\n\r", ch); return; *************** *** 1466,1472 **** } mana = IS_NPC(ch) ? 0 : UMAX(skill->min_mana, ! 100 / ( 2 + ch->level - skill->skill_level[ch->class] ) ); /* * Locate targets. --- 1466,1472 ---- } mana = IS_NPC(ch) ? 0 : UMAX(skill->min_mana, ! 100 / ( 2 + ch->level - skill->skill_level[ch->mudclass] ) ); /* * Locate targets. *************** *** 1527,1533 **** return; } mana = IS_NPC(ch) ? 0 : UMAX(skill->min_mana, ! 100 / ( 2 + ch->level - skill->skill_level[ch->class] ) ); blood = UMAX(1, (mana+4) / 8); if ( IS_VAMPIRE(ch) ) gain_condition( ch, COND_BLOODTHIRST, - UMAX(1, blood / 3) ); --- 1527,1533 ---- return; } mana = IS_NPC(ch) ? 0 : UMAX(skill->min_mana, ! 100 / ( 2 + ch->level - skill->skill_level[ch->mudclass] ) ); blood = UMAX(1, (mana+4) / 8); if ( IS_VAMPIRE(ch) ) gain_condition( ch, COND_BLOODTHIRST, - UMAX(1, blood / 3) ); *************** *** 1554,1560 **** return; } mana = IS_NPC(ch) ? 0 : UMAX(skill->min_mana, ! 100 / ( 2 + ch->level - skill->skill_level[ch->class] ) ); blood = UMAX(1, (mana+4) / 8); strcpy( staticbuf, ch->alloc_ptr ); target_name = one_argument(staticbuf, arg2); --- 1554,1560 ---- return; } mana = IS_NPC(ch) ? 0 : UMAX(skill->min_mana, ! 100 / ( 2 + ch->level - skill->skill_level[ch->mudclass] ) ); blood = UMAX(1, (mana+4) / 8); strcpy( staticbuf, ch->alloc_ptr ); target_name = one_argument(staticbuf, arg2); *************** *** 2629,2635 **** return rSPELL_FAILED; } ! if ( IS_NPC(ch) || ch->class == CLASS_MAGE ) is_mage = TRUE; if ( is_mage ) --- 2629,2635 ---- return rSPELL_FAILED; } ! if ( IS_NPC(ch) || ch->mudclass == CLASS_MAGE ) is_mage = TRUE; if ( is_mage ) *************** *** 4099,4105 **** send_to_char( "Your muscles seem to atrophy!\n\r", victim ); if ( ch != victim ) { ! if ( ( ( ( !IS_NPC(victim) && class_table[victim->class]->attr_prime == APPLY_STR ) || IS_NPC(victim) ) && get_curr_str(victim) < 25 ) || get_curr_str(victim) < 20 ) --- 4099,4105 ---- send_to_char( "Your muscles seem to atrophy!\n\r", victim ); if ( ch != victim ) { ! if ( ( ( ( !IS_NPC(victim) && class_table[victim->mudclass]->attr_prime == APPLY_STR ) || IS_NPC(victim) ) && get_curr_str(victim) < 25 ) || get_curr_str(victim) < 20 ) *************** *** 5080,5086 **** char buf[MAX_STRING_LENGTH]; AFFECT_DATA af; SKILLTYPE *skill = get_skilltype(sn); ! int try; if (!ch->desc || ch->desc->original) { --- 5080,5086 ---- char buf[MAX_STRING_LENGTH]; AFFECT_DATA af; SKILLTYPE *skill = get_skilltype(sn); ! int trything; if (!ch->desc || ch->desc->original) { *************** *** 5119,5131 **** return rSPELL_FAILED; } ! try = ris_save( victim, level, RIS_CHARM ); if ( IS_AFFECTED(victim, AFF_POSSESS) || IS_AFFECTED(ch, AFF_CHARM) || level < victim->level || victim->desc ! || saves_spell_staff( try, victim ) || !chance(ch, 25) ) { failed_casting( skill, ch, victim, NULL ); --- 5119,5131 ---- return rSPELL_FAILED; } ! trything = ris_save( victim, level, RIS_CHARM ); if ( IS_AFFECTED(victim, AFF_POSSESS) || IS_AFFECTED(ch, AFF_CHARM) || level < victim->level || victim->desc ! || saves_spell_staff( trything, victim ) || !chance(ch, 25) ) { failed_casting( skill, ch, victim, NULL ); diff -rc SmaugFUSS.orig/src/Makefile SmaugFUSS/src/Makefile *** SmaugFUSS.orig/src/Makefile 2003-11-14 09:28:39.000000000 +1100 --- SmaugFUSS/src/Makefile 2004-02-12 12:35:37.000000000 +1100 *************** *** 1,4 **** ! CC = gcc #PROF = -p NOCRYPT = --- 1,4 ---- ! CC = g++ #PROF = -p NOCRYPT = *************** *** 13,19 **** NEED_CRYPT = -lcrypt #Intermud-3 - Comment out to disable I3 support in your code ! I3 = 1 #IMC2 - Comment out to disable IMC2 support IMC = 1 --- 13,19 ---- NEED_CRYPT = -lcrypt #Intermud-3 - Comment out to disable I3 support in your code ! #I3 = 1 #IMC2 - Comment out to disable IMC2 support IMC = 1 *************** *** 22,28 **** #your core files may not be as much of a benefit if you do. #OPT_FLAG = -finline-functions -funroll-loops -fdefer-pop -fstrength-reduce ! C_FLAGS = $(OPT_FLAG) -O -g2 -Wall $(PROF) $(NOCRYPT) $(SOLARIS_FLAG) L_FLAGS = $(OPT_FLAG) $(PROF) $(SOLARIS_LINK) $(NEED_CRYPT) O_FILES = act_comm.o act_info.o act_move.o act_obj.o act_wiz.o boards.o \ --- 22,28 ---- #your core files may not be as much of a benefit if you do. #OPT_FLAG = -finline-functions -funroll-loops -fdefer-pop -fstrength-reduce ! C_FLAGS = $(OPT_FLAG) -O -g3 $(PROF) $(NOCRYPT) $(SOLARIS_FLAG) L_FLAGS = $(OPT_FLAG) $(PROF) $(SOLARIS_LINK) $(NEED_CRYPT) O_FILES = act_comm.o act_info.o act_move.o act_obj.o act_wiz.o boards.o \ diff -rc SmaugFUSS.orig/src/mpxset.c SmaugFUSS/src/mpxset.c *** SmaugFUSS.orig/src/mpxset.c 2001-04-08 05:41:09.000000000 +1000 --- SmaugFUSS/src/mpxset.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 21,28 **** #include "mud.h" ! int get_otype args( ( char *type ) ); ! int get_aflag args( ( char *flag ) ); int get_npc_race args( ( char *type ) ); int get_actflag args( ( char *flag ) ); int get_risflag args( ( char *flag ) ); --- 21,28 ---- #include "mud.h" ! int get_otype args( ( const char *type ) ); ! int get_aflag args( ( const char *flag ) ); int get_npc_race args( ( char *type ) ); int get_actflag args( ( char *flag ) ); int get_risflag args( ( char *flag ) ); *************** *** 251,257 **** progbug("MpMset: Invalid npc class", ch); return; } ! victim->class = value; return; } progbug("MpMset: can't set pc class", ch); --- 251,257 ---- progbug("MpMset: Invalid npc class", ch); return; } ! victim->mudclass = value; return; } progbug("MpMset: can't set pc class", ch); diff -rc SmaugFUSS.orig/src/mud_comm.c SmaugFUSS/src/mud_comm.c *** SmaugFUSS.orig/src/mud_comm.c 2002-12-30 09:36:23.000000000 +1100 --- SmaugFUSS/src/mud_comm.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 116,122 **** ch_printf( ch, "Lv: %d. Class: %d. Align: %d. AC: %d. Gold: %d. Exp: %d.\n\r", ! victim->level, victim->class, victim->alignment, GET_AC( victim ), victim->gold, victim->exp ); for ( mprg = victim->pIndexData->mudprogs; mprg; mprg = mprg->next ) --- 116,122 ---- ch_printf( ch, "Lv: %d. Class: %d. Align: %d. AC: %d. Gold: %d. Exp: %d.\n\r", ! victim->level, victim->mudclass, victim->alignment, GET_AC( victim ), victim->gold, victim->exp ); for ( mprg = victim->pIndexData->mudprogs; mprg; mprg = mprg->next ) *************** *** 1820,1826 **** return; } ! if(victim->level < skill_table[sn]->skill_level[victim->class] ) { sprintf(buf,"$n attempts to tutor you in %s, but it's beyond your comprehension.",skill_name); act( AT_TELL, buf, ch, NULL, victim, TO_VICT ); --- 1820,1826 ---- return; } ! if(victim->level < skill_table[sn]->skill_level[victim->mudclass] ) { sprintf(buf,"$n attempts to tutor you in %s, but it's beyond your comprehension.",skill_name); act( AT_TELL, buf, ch, NULL, victim, TO_VICT ); *************** *** 1828,1834 **** } /* adept is how high the player can learn it */ ! /* adept = class_table[ch->class]->skill_adept; */ adept = GET_ADEPT(victim,sn); if ( (victim->pcdata->learned[sn] >= adept ) --- 1828,1834 ---- } /* adept is how high the player can learn it */ ! /* adept = class_table[ch->mudclass]->skill_adept; */ adept = GET_ADEPT(victim,sn); if ( (victim->pcdata->learned[sn] >= adept ) *************** *** 2589,2595 **** sprintf( log_buf, "%s@%s new %s %s %s applying...", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->class]->who_name, IS_PKILL( victim ) ? "(Deadly)" : "(Peaceful)" ); /* log_string( log_buf );*/ to_channel( log_buf, CHANNEL_AUTH, "Auth", LEVEL_IMMORTAL ); --- 2589,2595 ---- sprintf( log_buf, "%s@%s new %s %s %s applying...", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->mudclass]->who_name, IS_PKILL( victim ) ? "(Deadly)" : "(Peaceful)" ); /* log_string( log_buf );*/ to_channel( log_buf, CHANNEL_AUTH, "Auth", LEVEL_IMMORTAL ); *************** *** 2641,2647 **** sprintf( log_buf, "%s@%s new %s %s %s applying...", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->class]->who_name, IS_PKILL( victim ) ? "(Deadly)" : "(Peaceful)" ); log_string( log_buf ); to_channel( log_buf, CHANNEL_AUTH, "Auth", LEVEL_IMMORTAL ); --- 2641,2647 ---- sprintf( log_buf, "%s@%s new %s %s %s applying...", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->mudclass]->who_name, IS_PKILL( victim ) ? "(Deadly)" : "(Peaceful)" ); log_string( log_buf ); to_channel( log_buf, CHANNEL_AUTH, "Auth", LEVEL_IMMORTAL ); *************** *** 2666,2672 **** victim->perm_cha = 13; victim->perm_con = 13; victim->perm_lck = 13; ! switch ( class_table[victim->class]->attr_prime ) { case APPLY_STR: victim->perm_str = 16; break; case APPLY_INT: victim->perm_int = 16; break; --- 2666,2672 ---- victim->perm_cha = 13; victim->perm_con = 13; victim->perm_lck = 13; ! switch ( class_table[victim->mudclass]->attr_prime ) { case APPLY_STR: victim->perm_str = 16; break; case APPLY_INT: victim->perm_int = 16; break; diff -rc SmaugFUSS.orig/src/mud.h SmaugFUSS/src/mud.h *** SmaugFUSS.orig/src/mud.h 2004-01-15 06:50:03.000000000 +1100 --- SmaugFUSS/src/mud.h 2004-02-12 13:35:33.000000000 +1100 *************** *** 41,46 **** --- 41,47 ---- #include #endif + #define NOCRYPT typedef int ch_ret; typedef int obj_ret; *************** *** 86,92 **** #define unix #else typedef short int sh_int; ! typedef unsigned char bool; #endif /* --- 87,93 ---- #define unix #else typedef short int sh_int; ! //typedef unsigned char bool; #endif /* *************** *** 266,272 **** #define LEVEL_HIGOD LEVEL_GOD /* This is to tell if act uses uppercasestring or not --Shaddai */ ! bool DONT_UPPER; #define SECONDS_PER_TICK 70 --- 267,273 ---- #define LEVEL_HIGOD LEVEL_GOD /* This is to tell if act uses uppercasestring or not --Shaddai */ ! extern bool DONT_UPPER; #define SECONDS_PER_TICK 70 *************** *** 286,292 **** /* * Stuff for area versions --Shaddai */ ! int area_version; #define HAS_SPELL_INDEX -1 #define AREA_VERSION_WRITE 1 --- 287,293 ---- /* * Stuff for area versions --Shaddai */ ! extern int area_version; #define HAS_SPELL_INDEX -1 #define AREA_VERSION_WRITE 1 *************** *** 434,440 **** char *unmorph_other; /* What others see when you unmorph */ char *unmorph_self; /* What you see when you unmorph */ EXT_BV affected_by; /* New affected_by added */ ! int class; /* Classes not allowed to use this */ int defpos; /* Default position */ EXT_BV no_affected_by; /* Prevents affects from being added */ int no_immune; /* Prevents Immunities */ --- 435,441 ---- char *unmorph_other; /* What others see when you unmorph */ char *unmorph_self; /* What you see when you unmorph */ EXT_BV affected_by; /* New affected_by added */ ! int mudclass; /* Classes not allowed to use this */ int defpos; /* Default position */ EXT_BV no_affected_by; /* Prevents affects from being added */ int no_immune; /* Prevents Immunities */ *************** *** 491,497 **** LCNV_DATA * prev; char * old; int olen; ! char * new; int nlen; }; --- 492,498 ---- LCNV_DATA * prev; char * old; int olen; ! char * lcnv_new; int nlen; }; *************** *** 737,742 **** --- 738,744 ---- sh_int idle; sh_int lines; sh_int scrlen; + sh_int mxp; bool fcommand; char inbuf [MAX_INBUF_SIZE]; char incomm [MAX_INPUT_LENGTH]; *************** *** 935,941 **** char * comlist; }; ! bool MOBtrigger; /* * Per-class stuff. --- 937,943 ---- char * comlist; }; ! extern bool MOBtrigger; /* * Per-class stuff. *************** *** 1051,1057 **** int storeroom; /* Vnum of clan's store room */ int guard1; /* Vnum of clan guard type 1 */ int guard2; /* Vnum of clan guard type 2 */ ! int class; /* For guilds */ }; struct council_data --- 1053,1059 ---- int storeroom; /* Vnum of clan's store room */ int guard1; /* Vnum of clan guard type 1 */ int guard2; /* Vnum of clan guard type 2 */ ! int mudclass; /* For guilds */ }; struct council_data *************** *** 1102,1108 **** sh_int dig_corpse; int race; int race2; ! int class; int sex; int npcrace; int npcfoe; --- 1104,1110 ---- sh_int dig_corpse; int race; int race2; ! int mudclass; int sex; int npcrace; int npcfoe; *************** *** 2043,2049 **** sh_int height; sh_int weight; sh_int race; ! sh_int class; sh_int hitroll; sh_int damroll; sh_int perm_str; --- 2045,2051 ---- sh_int height; sh_int weight; sh_int race; ! sh_int mudclass; sh_int hitroll; sh_int damroll; sh_int perm_str; *************** *** 2146,2152 **** sh_int num_fighting; sh_int substate; sh_int sex; ! sh_int class; sh_int race; sh_int level; sh_int trust; --- 2148,2154 ---- sh_int num_fighting; sh_int substate; sh_int sex; ! sh_int mudclass; sh_int race; sh_int level; sh_int trust; *************** *** 3181,3191 **** #define IS_AFFECTED(ch, sn) (xIS_SET((ch)->affected_by, (sn))) #define HAS_BODYPART(ch, part) ((ch)->xflags == 0 || IS_SET((ch)->xflags, (part))) ! #define CAN_CAST(ch) ((ch)->class != 2 && (ch)->class != 3) #define IS_VAMPIRE(ch) (!IS_NPC(ch) \ && ((ch)->race==RACE_VAMPIRE \ ! || (ch)->class==CLASS_VAMPIRE)) #define IS_GOOD(ch) ((ch)->alignment >= 350) #define IS_EVIL(ch) ((ch)->alignment <= -350) #define IS_NEUTRAL(ch) (!IS_GOOD(ch) && !IS_EVIL(ch)) --- 3183,3193 ---- #define IS_AFFECTED(ch, sn) (xIS_SET((ch)->affected_by, (sn))) #define HAS_BODYPART(ch, part) ((ch)->xflags == 0 || IS_SET((ch)->xflags, (part))) ! #define CAN_CAST(ch) ((ch)->mudclass != 2 && (ch)->mudclass != 3) #define IS_VAMPIRE(ch) (!IS_NPC(ch) \ && ((ch)->race==RACE_VAMPIRE \ ! || (ch)->mudclass==CLASS_VAMPIRE)) #define IS_GOOD(ch) ((ch)->alignment >= 350) #define IS_EVIL(ch) ((ch)->alignment <= -350) #define IS_NEUTRAL(ch) (!IS_GOOD(ch) && !IS_EVIL(ch)) *************** *** 3425,3430 **** --- 3427,3434 ---- extern const sh_int rev_dir []; extern const int trap_door []; extern char * const r_flags []; + extern char * const ex_flags []; + extern char * const sec_flags []; extern char * const w_flags []; extern char * const item_w_flags []; extern char * const o_flags []; *************** *** 3459,3464 **** --- 3463,3469 ---- extern char * const windtemp_msg [6][6]; extern char * const precip_msg []; extern char * const wind_msg []; + extern char * const wear_locs []; /* * Global variables. *************** *** 3962,3967 **** --- 3967,3973 ---- DECLARE_DO_FUN( do_supplicate ); DECLARE_DO_FUN( do_switch ); DECLARE_DO_FUN( do_showlayers ); + DECLARE_DO_FUN( do_stltest ); DECLARE_DO_FUN( do_tail ); DECLARE_DO_FUN( do_tamp ); DECLARE_DO_FUN( do_tell ); *************** *** 4376,4382 **** char * format_obj_to_char args( ( OBJ_DATA *obj, CHAR_DATA *ch, bool fShort ) ); void show_list_to_char args( ( OBJ_DATA *list, CHAR_DATA *ch, ! bool fShort, bool fShowNothing ) ); bool is_ignoring args( (CHAR_DATA *ch, CHAR_DATA *ign_ch) ); void show_race_line args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); --- 4382,4388 ---- char * format_obj_to_char args( ( OBJ_DATA *obj, CHAR_DATA *ch, bool fShort ) ); void show_list_to_char args( ( OBJ_DATA *list, CHAR_DATA *ch, ! bool fShort, bool fShowNothing, const int iDefaultAction ) ); bool is_ignoring args( (CHAR_DATA *ch, CHAR_DATA *ign_ch) ); void show_race_line args( ( CHAR_DATA *ch, CHAR_DATA *victim ) ); *************** *** 4478,4484 **** OD * create_object args( ( OBJ_INDEX_DATA *pObjIndex, int level ) ); void clear_char args( ( CHAR_DATA *ch ) ); void free_char args( ( CHAR_DATA *ch ) ); ! char * get_extra_descr args( ( const char *name, EXTRA_DESCR_DATA *ed ) ); MID * get_mob_index args( ( int vnum ) ); OID * get_obj_index args( ( int vnum ) ); RID * get_room_index args( ( int vnum ) ); --- 4484,4490 ---- OD * create_object args( ( OBJ_INDEX_DATA *pObjIndex, int level ) ); void clear_char args( ( CHAR_DATA *ch ) ); void free_char args( ( CHAR_DATA *ch ) ); ! char * get_extra_descr args( ( char *name, EXTRA_DESCR_DATA *ed ) ); MID * get_mob_index args( ( int vnum ) ); OID * get_obj_index args( ( int vnum ) ); RID * get_room_index args( ( int vnum ) ); *************** *** 4558,4568 **** EDD * SetOExtraProto args( ( OBJ_INDEX_DATA *obj, char *keywords ) ); bool DelOExtraProto args( ( OBJ_INDEX_DATA *obj, char *keywords ) ); void fold_area args( ( AREA_DATA *tarea, char *filename, bool install ) ); ! int get_otype args( ( char *type ) ); ! int get_atype args( ( char *type ) ); ! int get_aflag args( ( char *flag ) ); ! int get_oflag args( ( char *flag ) ); ! int get_wflag args( ( char *flag ) ); void init_area_weather args(( void ) ); void save_weatherdata args( ( void ) ); --- 4564,4574 ---- EDD * SetOExtraProto args( ( OBJ_INDEX_DATA *obj, char *keywords ) ); bool DelOExtraProto args( ( OBJ_INDEX_DATA *obj, char *keywords ) ); void fold_area args( ( AREA_DATA *tarea, char *filename, bool install ) ); ! int get_otype args( ( const char *type ) ); ! int get_atype args( ( const char *type ) ); ! int get_aflag args( ( const char *flag ) ); ! int get_oflag args( ( const char *flag ) ); ! int get_wflag args( ( const char *flag ) ); void init_area_weather args(( void ) ); void save_weatherdata args( ( void ) ); *************** *** 4739,4746 **** bool can_take_proto args( ( CHAR_DATA *ch ) ); int can_carry_n args( ( CHAR_DATA *ch ) ); int can_carry_w args( ( CHAR_DATA *ch ) ); ! bool is_name args( ( const char *str, char *namelist ) ); ! bool is_name_prefix args( ( const char *str, char *namelist ) ); bool nifty_is_name args( ( char *str, char *namelist ) ); bool nifty_is_name_prefix args( ( char *str, char *namelist ) ); void affect_modify args( ( CHAR_DATA *ch, AFFECT_DATA *paf, bool fAdd ) ); --- 4745,4752 ---- bool can_take_proto args( ( CHAR_DATA *ch ) ); int can_carry_n args( ( CHAR_DATA *ch ) ); int can_carry_w args( ( CHAR_DATA *ch ) ); ! bool is_name args( ( char *str, char *namelist ) ); ! bool is_name_prefix args( ( char *str, char *namelist ) ); bool nifty_is_name args( ( char *str, char *namelist ) ); bool nifty_is_name_prefix args( ( char *str, char *namelist ) ); void affect_modify args( ( CHAR_DATA *ch, AFFECT_DATA *paf, bool fAdd ) ); *************** *** 4793,4801 **** bool can_drop_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); char * item_type_name args( ( OBJ_DATA *obj ) ); char * affect_loc_name args( ( int location ) ); ! char * affect_bit_name args( ( EXT_BV *vector ) ); ! char * extra_bit_name args( ( EXT_BV *extra_flags ) ); ! char * magic_bit_name args( ( int magic_flags ) ); char * pull_type_name args( ( int pulltype ) ); ch_ret check_for_trap args( ( CHAR_DATA *ch, OBJ_DATA *obj, int flag ) ); ch_ret check_room_for_traps args( ( CHAR_DATA *ch, int flag ) ); --- 4799,4807 ---- bool can_drop_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) ); char * item_type_name args( ( OBJ_DATA *obj ) ); char * affect_loc_name args( ( int location ) ); ! const char * affect_bit_name args( ( EXT_BV *vector ) ); ! const char * extra_bit_name args( ( EXT_BV *extra_flags ) ); ! const char * magic_bit_name args( ( int magic_flags ) ); char * pull_type_name args( ( int pulltype ) ); ch_ret check_for_trap args( ( CHAR_DATA *ch, OBJ_DATA *obj, int flag ) ); ch_ret check_room_for_traps args( ( CHAR_DATA *ch, int flag ) ); *************** *** 4845,4851 **** /* interp.c */ bool check_pos args( ( CHAR_DATA *ch, sh_int position ) ); void interpret args( ( CHAR_DATA *ch, char *argument ) ); ! bool is_number args( ( char *arg ) ); int number_argument args( ( char *argument, char *arg ) ); char * one_argument args( ( char *argument, char *arg_first ) ); char * one_argument2 args( ( char *argument, char *arg_first ) ); --- 4851,4857 ---- /* interp.c */ bool check_pos args( ( CHAR_DATA *ch, sh_int position ) ); void interpret args( ( CHAR_DATA *ch, char *argument ) ); ! bool is_number args( ( const char *arg ) ); int number_argument args( ( char *argument, char *arg ) ); char * one_argument args( ( char *argument, char *arg_first ) ); char * one_argument2 args( ( char *argument, char *arg_first ) ); *************** *** 4952,4958 **** void weather_update args( ( void ) ); /* hashstr.c */ ! char * str_alloc args( ( char *str ) ); char * quick_link args( ( char *str ) ); int str_free args( ( char *str ) ); void show_hash args( ( int count ) ); --- 4958,4964 ---- void weather_update args( ( void ) ); /* hashstr.c */ ! char * str_alloc args( ( const char *str ) ); char * quick_link args( ( char *str ) ); int str_free args( ( char *str ) ); void show_hash args( ( int count ) ); *************** *** 5115,5121 **** #endif ! #define GET_ADEPT(ch,sn) ( skill_table[(sn)]->skill_adept[(ch)->class]) #define LEARNED(ch,sn) (IS_NPC(ch) ? 80 : URANGE(0, ch->pcdata->learned[sn], 101)) /* Structure and macros for using long bit vectors */ --- 5121,5127 ---- #endif ! #define GET_ADEPT(ch,sn) ( skill_table[(sn)]->skill_adept[(ch)->mudclass]) #define LEARNED(ch,sn) (IS_NPC(ch) ? 80 : URANGE(0, ch->pcdata->learned[sn], 101)) /* Structure and macros for using long bit vectors */ *************** *** 5144,5149 **** --- 5150,5203 ---- #define LV_TOGGLE_BIT(vector, index) \ (*(vector + index/CHAR_SIZE) ^= (1 << index%CHAR_SIZE)) + + + /* mxp stuff - added by Nick Gammon - 18 June 2001 */ + + /* + To simply using MXP we'll use special tags where we want to use MXP tags + and then change them to <, > and & at the last moment. + + eg. MXP_BEG "send" MXP_END becomes: + MXP_AMP "version;" becomes: &version; + + */ + + /* strings */ + #define MXP_BEG "\x03" /* becomes < */ + #define MXP_END "\x04" /* becomes > */ + #define MXP_AMP "\x05" /* becomes & */ + + /* characters */ + #define MXP_BEGc '\x03' /* becomes < */ + #define MXP_ENDc '\x04' /* becomes > */ + #define MXP_AMPc '\x05' /* becomes & */ + + // constructs an MXP tag with < and > around it + #define MXPTAG(arg) MXP_BEG arg MXP_END + + #define ESC "\x1B" /* esc character */ + + #define MXPMODE(arg) ESC "[" #arg "z" + + /* flags for show_list_to_char */ + + enum { + eItemNothing, /* item is not readily accessible */ + eItemGet, /* item on ground */ + eItemDrop, /* item in inventory */ + eItemBid /* auction item */ + }; + + #define MXP_open 0 /* only MXP commands in the "open" category are allowed. */ + #define MXP_secure 1 /* all tags and commands in MXP are allowed within the line. */ + #define MXP_locked 2 /* no MXP or HTML commands are allowed in the line. The line is not parsed for any tags at all. */ + #define MXP_reset 3 /* close all open tags */ + #define MXP_secure_once 4 /* next tag is secure only */ + #define MXP_perm_open 5 /* open mode until mode change */ + #define MXP_perm_secure 6 /* secure mode until mode change */ + #define MXP_perm_locked 7 /* locked mode until mode change */ + #ifdef WIN32 void gettimeofday(struct timeval *tv, struct timezone *tz); diff -rc SmaugFUSS.orig/src/mud_prog.c SmaugFUSS/src/mud_prog.c *** SmaugFUSS.orig/src/mud_prog.c 2003-10-25 11:46:09.000000000 +1000 --- SmaugFUSS/src/mud_prog.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 341,348 **** while ( *p ) ++p; *p = '\0'; ! chck = argv[0] ? argv[0] : ""; ! cvar = argv[1] ? argv[1] : ""; /* * chck contains check, cvar is the variable in the (), opr is the --- 341,348 ---- while ( *p ) ++p; *p = '\0'; ! chck = argv[0] ? argv[0] : (char *) ""; ! cvar = argv[1] ? argv[1] : (char *) ""; /* * chck contains check, cvar is the variable in the (), opr is the *************** *** 953,960 **** if ( !str_cmp(chck, "class") ) { if ( IS_NPC(chkchar) ) ! return mprog_seval(npc_class[chkchar->class], opr, rval, mob); ! return mprog_seval((char *)class_table[chkchar->class]->who_name, opr, rval, mob); } if ( !str_cmp(chck, "weight" ) ) --- 953,960 ---- if ( !str_cmp(chck, "class") ) { if ( IS_NPC(chkchar) ) ! return mprog_seval(npc_class[chkchar->mudclass], opr, rval, mob); ! return mprog_seval((char *)class_table[chkchar->mudclass]->who_name, opr, rval, mob); } if ( !str_cmp(chck, "weight" ) ) *************** *** 3426,3432 **** while ( (runner = room_act_list) != NULL ) { ! ROOM_INDEX_DATA *room = runner->vo; while ( (mpact = room->mpact) != NULL ) { --- 3426,3432 ---- while ( (runner = room_act_list) != NULL ) { ! ROOM_INDEX_DATA *room = (ROOM_INDEX_DATA *) runner->vo; while ( (mpact = room->mpact) != NULL ) { *************** *** 3481,3487 **** while ( (runner = obj_act_list) != NULL ) { ! OBJ_DATA *obj = runner->vo; while ( (mpact = obj->mpact) != NULL ) { --- 3481,3487 ---- while ( (runner = obj_act_list) != NULL ) { ! OBJ_DATA *obj = (OBJ_DATA *) runner->vo; while ( (mpact = obj->mpact) != NULL ) { diff -rc SmaugFUSS.orig/src/planes.c SmaugFUSS/src/planes.c *** SmaugFUSS.orig/src/planes.c 2001-04-08 05:41:26.000000000 +1000 --- SmaugFUSS/src/planes.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 162,168 **** CREATE(p, PLANE_DATA, 1); for (;;) { ! word = (feof(fp) ? "End" : fread_word(fp)); fMatch = FALSE; switch(UPPER(*word)) --- 162,168 ---- CREATE(p, PLANE_DATA, 1); for (;;) { ! word = (feof(fp) ? (char *) "End" : fread_word(fp)); fMatch = FALSE; switch(UPPER(*word)) diff -rc SmaugFUSS.orig/src/player.c SmaugFUSS/src/player.c *** SmaugFUSS.orig/src/player.c 2002-12-30 15:02:07.000000000 +1100 --- SmaugFUSS/src/player.c 2004-02-12 12:38:37.000000000 +1100 *************** *** 308,314 **** pager_printf(ch, "XP : %-9d Blood: %-5d of %5d MKills: %-5.5d AutoLoot(%c)\n\r", ch->exp, ch->pcdata->condition[COND_BLOODTHIRST], 10 + ch->level, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); ! else if (ch->class == CLASS_WARRIOR) pager_printf(ch, "XP : %-9d MKills: %-5.5d AutoLoot(%c)\n\r", ch->exp, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); else --- 308,314 ---- pager_printf(ch, "XP : %-9d Blood: %-5d of %5d MKills: %-5.5d AutoLoot(%c)\n\r", ch->exp, ch->pcdata->condition[COND_BLOODTHIRST], 10 + ch->level, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); ! else if (ch->mudclass == CLASS_WARRIOR) pager_printf(ch, "XP : %-9d MKills: %-5.5d AutoLoot(%c)\n\r", ch->exp, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); else *************** *** 727,733 **** pager_printf_color(ch, "&CEXP : &W%-9d &CBlood: &R%-5d &Cof &r%5d &CMKills: &W%5d &CAutoLoot(&W%c&C)\n\r", ch->exp, ch->pcdata->condition[COND_BLOODTHIRST], 10 + ch->level, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); ! else if (ch->class == CLASS_WARRIOR) pager_printf_color(ch, "&CEXP : &W%-9d &CMKills: &W%5d &CAutoLoot(&W%c&C)\n\r", ch->exp, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); else --- 727,733 ---- pager_printf_color(ch, "&CEXP : &W%-9d &CBlood: &R%-5d &Cof &r%5d &CMKills: &W%5d &CAutoLoot(&W%c&C)\n\r", ch->exp, ch->pcdata->condition[COND_BLOODTHIRST], 10 + ch->level, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); ! else if (ch->mudclass == CLASS_WARRIOR) pager_printf_color(ch, "&CEXP : &W%-9d &CMKills: &W%5d &CAutoLoot(&W%c&C)\n\r", ch->exp, ch->pcdata->mkills, xIS_SET(ch->act, PLR_AUTOLOOT) ? 'X' : ' '); else *************** *** 1027,1036 **** char * get_class(CHAR_DATA *ch) { ! if ( IS_NPC(ch) && ch->class < MAX_NPC_CLASS && ch->class >= 0) ! return ( npc_class[ch->class] ); ! else if ( !IS_NPC(ch) && ch->class < MAX_PC_CLASS && ch->class >= 0 ) ! return class_table[ch->class]->who_name; return ("Unknown"); } --- 1027,1036 ---- char * get_class(CHAR_DATA *ch) { ! if ( IS_NPC(ch) && ch->mudclass < MAX_NPC_CLASS && ch->mudclass >= 0) ! return ( npc_class[ch->mudclass] ); ! else if ( !IS_NPC(ch) && ch->mudclass < MAX_PC_CLASS && ch->mudclass >= 0 ) ! return class_table[ch->mudclass]->who_name; return ("Unknown"); } *************** *** 1397,1403 **** { set_char_color( AT_RED, ch ); send_to_char( "You are carrying:\n\r", ch ); ! show_list_to_char( ch->first_carrying, ch, TRUE, TRUE ); return; } --- 1397,1403 ---- { set_char_color( AT_RED, ch ); send_to_char( "You are carrying:\n\r", ch ); ! show_list_to_char( ch->first_carrying, ch, TRUE, TRUE, eItemDrop ); return; } diff -rc SmaugFUSS.orig/src/polymorph.c SmaugFUSS/src/polymorph.c *** SmaugFUSS.orig/src/polymorph.c 2004-01-15 06:58:08.000000000 +1100 --- SmaugFUSS/src/polymorph.c 2004-02-12 13:01:12.000000000 +1100 *************** *** 20,26 **** int get_risflag( char *flag ); int get_pc_race( char *type ); ! int get_pc_class( char *class ); #if defined(KEY) #undef KEY --- 20,26 ---- int get_risflag( char *flag ); int get_pc_race( char *type ); ! int get_pc_class( char *mudclass ); #if defined(KEY) #undef KEY *************** *** 108,114 **** return FALSE; if( morph->sex != -1 && morph->sex != ch->sex ) return FALSE; ! if( morph->class != 0 && !IS_SET( morph->class, (1 << ch->class) ) ) return FALSE; if( morph->race != 0 && IS_SET( morph->race, (1 << ch->race ) ) ) return FALSE; --- 108,114 ---- return FALSE; if( morph->sex != -1 && morph->sex != ch->sex ) return FALSE; ! if( morph->mudclass != 0 && !IS_SET( morph->mudclass, (1 << ch->mudclass) ) ) return FALSE; if( morph->race != 0 && IS_SET( morph->race, (1 << ch->race ) ) ) return FALSE; *************** *** 248,255 **** fprintf( fp, "UnmorphSelf %s~\n", morph->unmorph_self ); if( !xIS_EMPTY( morph->affected_by ) ) fprintf( fp, "Affected %s\n", print_bitvector(&morph->affected_by) ); ! if( morph->class != 0 ) ! fprintf( fp, "Class %s~\n", class_string(morph->class) ); if( morph->immune != 0 ) fprintf( fp, "Immune %d\n", morph->immune ); if( !xIS_EMPTY( morph->no_affected_by ) ) --- 248,255 ---- fprintf( fp, "UnmorphSelf %s~\n", morph->unmorph_self ); if( !xIS_EMPTY( morph->affected_by ) ) fprintf( fp, "Affected %s\n", print_bitvector(&morph->affected_by) ); ! if( morph->mudclass != 0 ) ! fprintf( fp, "Class %s~\n", class_string(morph->mudclass) ); if( morph->immune != 0 ) fprintf( fp, "Immune %d\n", morph->immune ); if( !xIS_EMPTY( morph->no_affected_by ) ) *************** *** 393,399 **** ch->substate = SUB_NONE; return; } ! morph = ch->dest_buf; DISPOSE( morph->description ); morph->description = copy_buffer_nohash( ch ); stop_editing( ch ); --- 393,399 ---- ch->substate = SUB_NONE; return; } ! morph = (MORPH_DATA *) ch->dest_buf; DISPOSE( morph->description ); morph->description = copy_buffer_nohash( ch ); stop_editing( ch ); *************** *** 410,416 **** ch->substate = SUB_NONE; return; } ! morph = ch->dest_buf; DISPOSE( morph->help ); morph->help = copy_buffer_nohash( ch ); stop_editing( ch ); --- 410,416 ---- ch->substate = SUB_NONE; return; } ! morph = (MORPH_DATA *) ch->dest_buf; DISPOSE( morph->help ); morph->help = copy_buffer_nohash( ch ); stop_editing( ch ); *************** *** 424,430 **** if( ch->substate == SUB_REPEATCMD ) { ! morph = ch->dest_buf; if( !morph ) { send_to_char( "Someone deleted your morph!\n\r", ch ); --- 424,430 ---- if( ch->substate == SUB_REPEATCMD ) { ! morph = (MORPH_DATA *) ch->dest_buf; if( !morph ) { send_to_char( "Someone deleted your morph!\n\r", ch ); *************** *** 1139,1145 **** ch_printf( ch, "Unknown PC class: %s", arg3 ); return; } ! TOGGLE_BIT( morph->class, ( 1 << value ) ); } else if( !str_cmp ( arg2, "race" ) ) { --- 1139,1145 ---- ch_printf( ch, "Unknown PC class: %s", arg3 ); return; } ! TOGGLE_BIT( morph->mudclass, ( 1 << value ) ); } else if( !str_cmp ( arg2, "race" ) ) { *************** *** 1224,1230 **** send_to_pager( "&B[----------------------------------------------------------------------------]\n\r", ch ); send_to_pager( " &BMorph Restrictions\n\r", ch ); send_to_pager( "&B[----------------------------------------------------------------------------]\n\r", ch ); ! pager_printf( ch, " &cClasses Allowed : &w%s\n\r", class_string( morph->class ) ); pager_printf( ch, " &cRaces Not Allowed: &w%s\n\r", race_string( morph->race ) ); pager_printf( ch, " &cSex: &C%s &cPkill: &C%s &cTime From: &C%d &cTime To: &C%d\n\r", morph->sex == SEX_MALE ? "male" : --- 1224,1230 ---- send_to_pager( "&B[----------------------------------------------------------------------------]\n\r", ch ); send_to_pager( " &BMorph Restrictions\n\r", ch ); send_to_pager( "&B[----------------------------------------------------------------------------]\n\r", ch ); ! pager_printf( ch, " &cClasses Allowed : &w%s\n\r", class_string( morph->mudclass ) ); pager_printf( ch, " &cRaces Not Allowed: &w%s\n\r", race_string( morph->race ) ); pager_printf( ch, " &cSex: &C%s &cPkill: &C%s &cTime From: &C%d &cTime To: &C%d\n\r", morph->sex == SEX_MALE ? "male" : *************** *** 1676,1682 **** void morph_defaults( MORPH_DATA *morph ) { xCLEAR_BITS( morph->affected_by ); ! morph->class = 0; morph->sex = -1; morph->timefrom = -1; morph->timeto = -1; --- 1676,1682 ---- void morph_defaults( MORPH_DATA *morph ) { xCLEAR_BITS( morph->affected_by ); ! morph->mudclass = 0; morph->sex = -1; morph->timefrom = -1; morph->timeto = -1; *************** *** 1738,1744 **** int i; bool fMatch; ! word = feof(fp) ? "End" : fread_word(fp); if( !str_cmp ( word, "End" ) ) return NULL; --- 1738,1744 ---- int i; bool fMatch; ! word = feof(fp) ? (char *) "End" : fread_word(fp); if( !str_cmp ( word, "End" ) ) return NULL; *************** *** 1750,1756 **** for( ; ; ) { ! word = feof(fp) ? "End" : fread_word(fp); fMatch = FALSE; switch( UPPER (word[0]) ) { --- 1750,1756 ---- for( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); fMatch = FALSE; switch( UPPER (word[0]) ) { *************** *** 1769,1775 **** for( i = 0; i < MAX_PC_CLASS; i++ ) if( !str_cmp( temp, class_table[i]->who_name ) ) { ! SET_BIT( morph->class, (1 << i) ); break; } } --- 1769,1775 ---- for( i = 0; i < MAX_PC_CLASS; i++ ) if( !str_cmp( temp, class_table[i]->who_name ) ) { ! SET_BIT( morph->mudclass, (1 << i) ); break; } } *************** *** 1941,1947 **** while( my_continue ) { morph = NULL; ! word = feof(fp) ? "#END" : fread_word(fp); fMatch = FALSE; switch( UPPER( word[0] ) ) --- 1941,1947 ---- while( my_continue ) { morph = NULL; ! word = feof(fp) ? (char *) "#END" : fread_word(fp); fMatch = FALSE; switch( UPPER( word[0] ) ) *************** *** 1997,2003 **** morph->unmorph_other = str_dup( temp->unmorph_other ); morph->unmorph_self = str_dup( temp->unmorph_self ); morph->affected_by = temp->affected_by; ! morph->class = temp->class; morph->sex = temp->sex; morph->timefrom = temp->timefrom; morph->timeto = temp->timeto; --- 1997,2003 ---- morph->unmorph_other = str_dup( temp->unmorph_other ); morph->unmorph_self = str_dup( temp->unmorph_self ); morph->affected_by = temp->affected_by; ! morph->mudclass = temp->mudclass; morph->sex = temp->sex; morph->timefrom = temp->timefrom; morph->timeto = temp->timeto; *************** *** 2264,2270 **** ch->morph = morph; for( ; ; ) { ! word = feof ( fp ) ? "End" : fread_word (fp); fMatch = FALSE; switch( UPPER ( word[0] ) ) --- 2264,2270 ---- ch->morph = morph; for( ; ; ) { ! word = feof ( fp ) ? (char *) "End" : fread_word (fp); fMatch = FALSE; switch( UPPER ( word[0] ) ) diff -rc SmaugFUSS.orig/src/reset.c SmaugFUSS/src/reset.c *** SmaugFUSS.orig/src/reset.c 2003-05-14 00:02:36.000000000 +1000 --- SmaugFUSS/src/reset.c 2004-02-12 13:27:59.000000000 +1100 *************** *** 46,53 **** CHAR_DATA *ch ) ); int get_wearloc args( ( char *type ) ); int get_trapflag args( ( char *flag ) ); ! int get_exflag args( ( char *flag ) ); ! int get_rflag args( ( char *flag ) ); extern char * const wear_locs[]; extern char * const ex_flags[]; --- 46,53 ---- CHAR_DATA *ch ) ); int get_wearloc args( ( char *type ) ); int get_trapflag args( ( char *flag ) ); ! int get_exflag args( ( const char *flag ) ); ! int get_rflag args( ( const char *flag ) ); extern char * const wear_locs[]; extern char * const ex_flags[]; *************** *** 377,385 **** argument = one_argument(argument, arg); if ( !*arg || !str_cmp(arg, "?") ) { ! char *nm = (ch->substate == SUB_REPEATCMD ? "" : (aRoom ? "rreset " : "reset ")); ! char *rn = (aRoom ? "" : " [room#]"); ch_printf(ch, "Syntax: %s\n\r", nm, (aRoom ? "" : "|area")); ch_printf( ch, "Syntax: %sremove <#>\n\r", nm ); --- 377,385 ---- argument = one_argument(argument, arg); if ( !*arg || !str_cmp(arg, "?") ) { ! const char *nm = (ch->substate == SUB_REPEATCMD ? "" : (aRoom ? "rreset " : "reset ")); ! const char *rn = (aRoom ? "" : " [room#]"); ch_printf(ch, "Syntax: %s\n\r", nm, (aRoom ? "" : "|area")); ch_printf( ch, "Syntax: %sremove <#>\n\r", nm ); *************** *** 834,840 **** } if ( !str_cmp(arg, "bit") ) { ! int (*flfunc)(char *type); int flags = 0; char option[MAX_INPUT_LENGTH]; char *parg; --- 834,840 ---- } if ( !str_cmp(arg, "bit") ) { ! int (*flfunc)(const char *type); int flags = 0; char option[MAX_INPUT_LENGTH]; char *parg; *************** *** 1011,1017 **** parg = one_argument(argument, arg); if ( ch->substate == SUB_REPEATCMD ) { ! pArea = ch->dest_buf; if ( pArea && pArea != ch->pcdata->area && pArea != ch->in_room->area ) { AREA_DATA *tmp; --- 1011,1017 ---- parg = one_argument(argument, arg); if ( ch->substate == SUB_REPEATCMD ) { ! pArea = (AREA_DATA *) ch->dest_buf; if ( pArea && pArea != ch->pcdata->area && pArea != ch->in_room->area ) { AREA_DATA *tmp; *************** *** 1079,1085 **** if ( ch->substate == SUB_REPEATCMD ) { ! pRoom = ch->dest_buf; if ( !pRoom ) { send_to_char( "Your room pointer got lost. Reset mode off.\n\r", ch); --- 1079,1085 ---- if ( ch->substate == SUB_REPEATCMD ) { ! pRoom = (ROOM_INDEX_DATA *) ch->dest_buf; if ( !pRoom ) { send_to_char( "Your room pointer got lost. Reset mode off.\n\r", ch); *************** *** 1789,1795 **** else oname = obj->name; sprintf( pbuf, "%s (%d) -> %s (%s) [%d]", oname, pReset->arg1, mname, ! (pReset->command == 'G' ? "carry" : wear_locs[pReset->arg3]), pReset->arg2 ); if ( mob && mob->pShop ) strcat( buf, " (shop)\n\r" ); --- 1789,1795 ---- else oname = obj->name; sprintf( pbuf, "%s (%d) -> %s (%s) [%d]", oname, pReset->arg1, mname, ! (pReset->command == 'G' ? "carry" : wear_locs [pReset->arg3]), pReset->arg2 ); if ( mob && mob->pShop ) strcat( buf, " (shop)\n\r" ); diff -rc SmaugFUSS.orig/src/save.c SmaugFUSS/src/save.c *** SmaugFUSS.orig/src/save.c 2003-10-09 08:50:23.000000000 +1000 --- SmaugFUSS/src/save.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 282,288 **** if ( ch->description[0] != '\0' ) fprintf( fp, "Description %s~\n", ch->description ); fprintf( fp, "Sex %d\n", ch->sex ); ! fprintf( fp, "Class %d\n", ch->class ); fprintf( fp, "Race %d\n", ch->race ); fprintf( fp, "Languages %d %d\n", ch->speaks, ch->speaking ); fprintf( fp, "Level %d\n", ch->level ); --- 282,288 ---- if ( ch->description[0] != '\0' ) fprintf( fp, "Description %s~\n", ch->description ); fprintf( fp, "Sex %d\n", ch->sex ); ! fprintf( fp, "Class %d\n", ch->mudclass ); fprintf( fp, "Race %d\n", ch->race ); fprintf( fp, "Languages %d %d\n", ch->speaks, ch->speaking ); fprintf( fp, "Level %d\n", ch->level ); *************** *** 1030,1036 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 1030,1036 ---- for ( ; ; ) { ! word = feof( fp ) ? (char *) "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 1158,1164 **** break; } ! KEY( "Class", ch->class, fread_number( fp ) ); /* Load color values - Samson 9-29-98 */ { --- 1158,1164 ---- break; } ! KEY( "Class", ch->mudclass, fread_number( fp ) ); /* Load color values - Samson 9-29-98 */ { *************** *** 1567,1573 **** * Assumes practices are loaded first too now. -- Altrag */ if ( ch->level < LEVEL_IMMORTAL ) { ! if ( skill_table[sn]->skill_level[ch->class] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; --- 1567,1573 ---- * Assumes practices are loaded first too now. -- Altrag */ if ( ch->level < LEVEL_IMMORTAL ) { ! if ( skill_table[sn]->skill_level[ch->mudclass] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; *************** *** 1597,1603 **** { ch->pcdata->learned[sn] = value; if ( ch->level < LEVEL_IMMORTAL ) ! if ( skill_table[sn]->skill_level[ch->class] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; --- 1597,1603 ---- { ch->pcdata->learned[sn] = value; if ( ch->level < LEVEL_IMMORTAL ) ! if ( skill_table[sn]->skill_level[ch->mudclass] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; *************** *** 1695,1701 **** { ch->pcdata->learned[sn] = value; if ( ch->level < LEVEL_IMMORTAL ) ! if ( skill_table[sn]->skill_level[ch->class] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; --- 1695,1701 ---- { ch->pcdata->learned[sn] = value; if ( ch->level < LEVEL_IMMORTAL ) ! if ( skill_table[sn]->skill_level[ch->mudclass] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; *************** *** 1756,1762 **** { ch->pcdata->learned[sn] = value; if ( ch->level < LEVEL_IMMORTAL ) ! if ( skill_table[sn]->skill_level[ch->class] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; --- 1756,1762 ---- { ch->pcdata->learned[sn] = value; if ( ch->level < LEVEL_IMMORTAL ) ! if ( skill_table[sn]->skill_level[ch->mudclass] >= LEVEL_IMMORTAL ) { ch->pcdata->learned[sn] = 0; ch->practice++; *************** *** 1804,1810 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 1804,1810 ---- for ( ; ; ) { ! word = feof( fp ) ? (char *) "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 2322,2328 **** int inroom = 0; ROOM_INDEX_DATA *pRoomIndex = NULL; ! word = feof( fp ) ? "EndMobile" : fread_word( fp ); if ( !strcmp(word, "Vnum") ) { int vnum; --- 2322,2328 ---- int inroom = 0; ROOM_INDEX_DATA *pRoomIndex = NULL; ! word = feof( fp ) ? (char *) "EndMobile" : fread_word( fp ); if ( !strcmp(word, "Vnum") ) { int vnum; *************** *** 2332,2338 **** if ( !mob ) { for ( ; ; ) { ! word = feof( fp ) ? "EndMobile" : fread_word( fp ); /* So we don't get so many bug messages when something messes up * --Shaddai */ --- 2332,2338 ---- if ( !mob ) { for ( ; ; ) { ! word = feof( fp ) ? (char *) "EndMobile" : fread_word( fp ); /* So we don't get so many bug messages when something messes up * --Shaddai */ *************** *** 2346,2352 **** else { for ( ; ; ) { ! word = feof( fp ) ? "EndMobile" : fread_word( fp ); /* So we don't get so many bug messages when something messes up * --Shaddai */ --- 2346,2352 ---- else { for ( ; ; ) { ! word = feof( fp ) ? (char *) "EndMobile" : fread_word( fp ); /* So we don't get so many bug messages when something messes up * --Shaddai */ *************** *** 2358,2364 **** return NULL; } for ( ; ;) { ! word = feof( fp ) ? "EndMobile" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) { case '*': --- 2358,2364 ---- return NULL; } for ( ; ;) { ! word = feof( fp ) ? (char *) "EndMobile" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) { case '*': diff -rc SmaugFUSS.orig/src/shops.c SmaugFUSS/src/shops.c *** SmaugFUSS.orig/src/shops.c 2003-04-04 00:42:18.000000000 +1000 --- SmaugFUSS/src/shops.c 2004-02-12 12:19:26.000000000 +1100 *************** *** 807,814 **** lower = -1; } ! pager_printf( ch, "[%2d %5d] %s.\n\r", ! obj->level, cost, capitalize( obj->short_descr ) ); } } --- 807,819 ---- lower = -1; } ! pager_printf( ch, "[%2d %5d] " ! MXPTAG ("list '%s' '%s'") ! "%s" ! MXPTAG ("/list") ".\n\r", ! obj->level, cost, obj->name, ! obj->short_descr, ! capitalize( obj->short_descr ) ); } } diff -rc SmaugFUSS.orig/src/skills.c SmaugFUSS/src/skills.c *** SmaugFUSS.orig/src/skills.c 2002-12-30 14:44:15.000000000 +1100 --- SmaugFUSS/src/skills.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 59,65 **** void show_char_to_char( CHAR_DATA *list, CHAR_DATA *ch ); void show_list_to_char( OBJ_DATA *list, CHAR_DATA *ch, bool fShort, ! bool fShowN ); int ris_save( CHAR_DATA *ch, int chance, int ris ); bool check_illegal_psteal( CHAR_DATA *ch, CHAR_DATA *victim ); --- 59,65 ---- void show_char_to_char( CHAR_DATA *list, CHAR_DATA *ch ); void show_list_to_char( OBJ_DATA *list, CHAR_DATA *ch, bool fShort, ! bool fShowN, const int iDefaultAction ); int ris_save( CHAR_DATA *ch, int chance, int ris ); bool check_illegal_psteal( CHAR_DATA *ch, CHAR_DATA *victim ); *************** *** 198,204 **** /* && (IS_NPC(ch) || (ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->class])) ) */ break; if (first >= top) --- 198,204 ---- /* && (IS_NPC(ch) || (ch->pcdata->learned[sn] > 0 ! && ch->level >= skill_table[sn]->skill_level[ch->mudclass])) ) */ break; if (first >= top) *************** *** 224,230 **** if ( skill_table[sn]->min_mana ) { mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana, ! 100 / ( 2 + ch->level - skill_table[sn]->skill_level[ch->class] ) ); blood = UMAX(1, (mana+4) / 8); /* NPCs don't have PCDatas. -- Altrag */ if ( IS_VAMPIRE(ch) ) { --- 224,230 ---- if ( skill_table[sn]->min_mana ) { mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana, ! 100 / ( 2 + ch->level - skill_table[sn]->skill_level[ch->mudclass] ) ); blood = UMAX(1, (mana+4) / 8); /* NPCs don't have PCDatas. -- Altrag */ if ( IS_VAMPIRE(ch) ) { *************** *** 383,389 **** if ( (number_percent( ) + skill_table[sn]->difficulty * 5) > (IS_NPC(ch) ? 75 : LEARNED(ch, sn)) ) { ! failed_casting( skill_table[sn], ch, vo, obj ); learn_from_failure( ch, sn ); if ( mana ) { --- 383,389 ---- if ( (number_percent( ) + skill_table[sn]->difficulty * 5) > (IS_NPC(ch) ? 75 : LEARNED(ch, sn)) ) { ! failed_casting( skill_table[sn], ch, (CHAR_DATA *) vo, obj ); learn_from_failure( ch, sn ); if ( mana ) { *************** *** 1223,1236 **** if ( !str_cmp( arg2, "level" ) ) { char arg3[MAX_INPUT_LENGTH]; ! int class; argument = one_argument( argument, arg3 ); ! class = atoi( arg3 ); ! if ( class >= MAX_PC_CLASS || class < 0 ) send_to_char( "Not a valid class.\n\r", ch ); else ! skill->skill_level[class] = URANGE(0, atoi(argument), MAX_LEVEL); return; } --- 1223,1236 ---- if ( !str_cmp( arg2, "level" ) ) { char arg3[MAX_INPUT_LENGTH]; ! int mudclass; argument = one_argument( argument, arg3 ); ! mudclass = atoi( arg3 ); ! if ( mudclass >= MAX_PC_CLASS || mudclass < 0 ) send_to_char( "Not a valid class.\n\r", ch ); else ! skill->skill_level[mudclass] = URANGE(0, atoi(argument), MAX_LEVEL); return; } *************** *** 1251,1264 **** if ( !str_cmp( arg2, "adept" ) ) { char arg3[MAX_INPUT_LENGTH]; ! int class; argument = one_argument( argument, arg3 ); ! class = atoi( arg3 ); ! if ( class >= MAX_PC_CLASS || class < 0 ) send_to_char( "Not a valid class.\n\r", ch ); else ! skill->skill_adept[class] = URANGE(0, atoi(argument), 100); return; } --- 1251,1264 ---- if ( !str_cmp( arg2, "adept" ) ) { char arg3[MAX_INPUT_LENGTH]; ! int mudclass; argument = one_argument( argument, arg3 ); ! mudclass = atoi( arg3 ); ! if ( mudclass >= MAX_PC_CLASS || mudclass < 0 ) send_to_char( "Not a valid class.\n\r", ch ); else ! skill->skill_adept[mudclass] = URANGE(0, atoi(argument), 100); return; } *************** *** 1499,1505 **** { /* Fix by Narn to prevent ssetting skills the player shouldn't have. */ if ( skill_table[sn]->name ! && ( victim->level >= skill_table[sn]->skill_level[victim->class] || value == 0 ) ) { if ( value == 100 && !IS_IMMORTAL( victim ) ) --- 1499,1505 ---- { /* Fix by Narn to prevent ssetting skills the player shouldn't have. */ if ( skill_table[sn]->name ! && ( victim->level >= skill_table[sn]->skill_level[victim->mudclass] || value == 0 ) ) { if ( value == 100 && !IS_IMMORTAL( victim ) ) *************** *** 1523,1529 **** if ( IS_NPC(ch) || ch->pcdata->learned[sn] <= 0 ) return; adept = GET_ADEPT(ch,sn); ! sklvl = skill_table[sn]->skill_level[ch->class]; if ( sklvl == 0 ) sklvl = ch->level; if ( ch->pcdata->learned[sn] < adept ) --- 1523,1529 ---- if ( IS_NPC(ch) || ch->pcdata->learned[sn] <= 0 ) return; adept = GET_ADEPT(ch,sn); ! sklvl = skill_table[sn]->skill_level[ch->mudclass]; if ( sklvl == 0 ) sklvl = ch->level; if ( ch->pcdata->learned[sn] < adept ) *************** *** 1541,1548 **** if ( ch->pcdata->learned[sn] == adept ) /* fully learned! */ { gain = 1000 * sklvl; ! if ( ch->class==CLASS_MAGE ) gain *= 5; /* h, mage upgrade */ ! if ( ch->class==CLASS_CLERIC ) gain *= 2; /* h, mage upgrade */ set_char_color( AT_WHITE, ch ); ch_printf( ch, "You are now an adept of %s! You gain %d bonus experience!\n\r", skill_table[sn]->name, gain ); --- 1541,1548 ---- if ( ch->pcdata->learned[sn] == adept ) /* fully learned! */ { gain = 1000 * sklvl; ! if ( ch->mudclass==CLASS_MAGE ) gain *= 5; /* h, mage upgrade */ ! if ( ch->mudclass==CLASS_CLERIC ) gain *= 2; /* h, mage upgrade */ set_char_color( AT_WHITE, ch ); ch_printf( ch, "You are now an adept of %s! You gain %d bonus experience!\n\r", skill_table[sn]->name, gain ); *************** *** 1550,1557 **** else { gain = 20 * sklvl; ! if ( ch->class==CLASS_MAGE ) gain *= 6; /* h, mage upgrade */ ! if ( ch->class==CLASS_CLERIC ) gain *= 3; /* h, mage upgrade */ if ( !ch->fighting && sn != gsn_hide && sn != gsn_sneak ) { set_char_color( AT_WHITE, ch ); --- 1550,1557 ---- else { gain = 20 * sklvl; ! if ( ch->mudclass==CLASS_MAGE ) gain *= 6; /* h, mage upgrade */ ! if ( ch->mudclass==CLASS_CLERIC ) gain *= 3; /* h, mage upgrade */ if ( !ch->fighting && sn != gsn_hide && sn != gsn_sneak ) { set_char_color( AT_WHITE, ch ); *************** *** 2494,2500 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_kick]->skill_level[ch->class] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); --- 2494,2500 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_kick]->skill_level[ch->mudclass] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); *************** *** 2532,2538 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_punch]->skill_level[ch->class] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); --- 2532,2538 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_punch]->skill_level[ch->mudclass] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); *************** *** 2571,2577 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_bite]->skill_level[ch->class] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); --- 2571,2577 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_bite]->skill_level[ch->mudclass] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); *************** *** 2604,2610 **** CHAR_DATA *victim; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_claw]->skill_level[ch->class] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); --- 2604,2610 ---- CHAR_DATA *victim; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_claw]->skill_level[ch->mudclass] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); *************** *** 2643,2649 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_sting]->skill_level[ch->class] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); --- 2643,2649 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_sting]->skill_level[ch->mudclass] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); *************** *** 2682,2688 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_tail]->skill_level[ch->class] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); --- 2682,2688 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_tail]->skill_level[ch->mudclass] ) { send_to_char( "That isn't quite one of your natural skills.\n\r", ch ); *************** *** 2722,2728 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_bash]->skill_level[ch->class] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); --- 2722,2728 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_bash]->skill_level[ch->mudclass] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); *************** *** 2773,2779 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_stun]->skill_level[ch->class] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); --- 2773,2779 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_stun]->skill_level[ch->mudclass] ) { send_to_char( "You better leave the martial arts to fighters.\n\r", ch ); *************** *** 3027,3033 **** } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_disarm]->skill_level[ch->class] ) { send_to_char( "You don't know how to disarm opponents.\n\r", ch ); return; --- 3027,3033 ---- } if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_disarm]->skill_level[ch->mudclass] ) { send_to_char( "You don't know how to disarm opponents.\n\r", ch ); return; *************** *** 3589,3595 **** CHAR_DATA *victim; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_mount]->skill_level[ch->class] ) { send_to_char( "I don't think that would be a good idea...\n\r", ch ); --- 3589,3595 ---- CHAR_DATA *victim; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_mount]->skill_level[ch->mudclass] ) { send_to_char( "I don't think that would be a good idea...\n\r", ch ); *************** *** 3784,3790 **** { int chances; ! if ( victim->class != CLASS_THIEF || !IS_AWAKE( victim ) ) return FALSE; if ( !IS_NPC( victim ) && !victim->pcdata->learned[gsn_tumble] > 0 ) --- 3784,3790 ---- { int chances; ! if ( victim->mudclass != CLASS_THIEF || !IS_AWAKE( victim ) ) return FALSE; if ( !IS_NPC( victim ) && !victim->pcdata->learned[gsn_tumble] > 0 ) *************** *** 3815,3821 **** int percent; if ( !IS_NPC( ch ) ! && ch->level < skill_table[gsn_poison_weapon]->skill_level[ch->class] ) { send_to_char( "What do you think you are, a thief?\n\r", ch ); return; --- 3815,3821 ---- int percent; if ( !IS_NPC( ch ) ! && ch->level < skill_table[gsn_poison_weapon]->skill_level[ch->mudclass] ) { send_to_char( "What do you think you are, a thief?\n\r", ch ); return; *************** *** 3951,3957 **** return; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_scribe]->skill_level[ch->class] ) { send_to_char( "A skill such as this requires more magical ability than that of your class.\n\r", ch ); return; --- 3951,3957 ---- return; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_scribe]->skill_level[ch->mudclass] ) { send_to_char( "A skill such as this requires more magical ability than that of your class.\n\r", ch ); return; *************** *** 3985,3991 **** } mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana, ! 100 / ( 2 + ch->level - skill_table[sn]->skill_level[ch->class] ) ); mana *=5; --- 3985,3991 ---- } mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana, ! 100 / ( 2 + ch->level - skill_table[sn]->skill_level[ch->mudclass] ) ); mana *=5; *************** *** 4070,4076 **** return; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_brew]->skill_level[ch->class] ) { send_to_char( "A skill such as this requires more magical ability than that of your class.\n\r", ch ); return; --- 4070,4076 ---- return; if ( !IS_NPC(ch) ! && ch->level < skill_table[gsn_brew]->skill_level[ch->mudclass] ) { send_to_char( "A skill such as this requires more magical ability than that of your class.\n\r", ch ); return; *************** *** 4104,4110 **** } mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana, ! 100 / ( 2 + ch->level - skill_table[sn]->skill_level[ch->class] ) ); mana *=4; --- 4104,4110 ---- } mana = IS_NPC(ch) ? 0 : UMAX(skill_table[sn]->min_mana, ! 100 / ( 2 + ch->level - skill_table[sn]->skill_level[ch->mudclass] ) ); mana *=4; *************** *** 4523,4529 **** set_char_color( AT_RMNAME, ch ); send_to_char( ch->in_room->name, ch ); send_to_char( "\n\r", ch ); ! show_list_to_char( ch->in_room->first_content, ch, FALSE, FALSE ); show_char_to_char( ch->in_room->first_person, ch ); switch( ch->in_room->sector_type ) --- 4523,4529 ---- set_char_color( AT_RMNAME, ch ); send_to_char( ch->in_room->name, ch ); send_to_char( "\n\r", ch ); ! show_list_to_char( ch->in_room->first_content, ch, FALSE, FALSE, eItemNothing ); show_char_to_char( ch->in_room->first_person, ch ); switch( ch->in_room->sector_type ) *************** *** 5318,5324 **** */ if ( !IS_NPC(ch) && !IS_IMMORTAL(ch) ! && ch->level < skill_table[gsn_slice]->skill_level[ch->class] ) { send_to_char("You are not learned in this skill.\n\r", ch ); return; --- 5318,5324 ---- */ if ( !IS_NPC(ch) && !IS_IMMORTAL(ch) ! && ch->level < skill_table[gsn_slice]->skill_level[ch->mudclass] ) { send_to_char("You are not learned in this skill.\n\r", ch ); return; *************** *** 5422,5428 **** } if( !str_prefix(arg, "evasive") ){ ! if( ch->level < skill_table[gsn_style_evasive]->skill_level[ch->class]) { send_to_char( "You have not yet learned enough to fight evasively.\n\r",ch); return; --- 5422,5428 ---- } if( !str_prefix(arg, "evasive") ){ ! if( ch->level < skill_table[gsn_style_evasive]->skill_level[ch->mudclass]) { send_to_char( "You have not yet learned enough to fight evasively.\n\r",ch); return; *************** *** 5446,5452 **** return; } } else if( !str_prefix(arg, "defensive")){ ! if( ch->level < skill_table[gsn_style_defensive]->skill_level[ch->class]) { send_to_char( "You have not yet learned enough to fight defensively.\n\r",ch); return; --- 5446,5452 ---- return; } } else if( !str_prefix(arg, "defensive")){ ! if( ch->level < skill_table[gsn_style_defensive]->skill_level[ch->mudclass]) { send_to_char( "You have not yet learned enough to fight defensively.\n\r",ch); return; *************** *** 5470,5476 **** return; } } else if( !str_prefix(arg,"standard")){ ! if( ch->level < skill_table[gsn_style_standard]->skill_level[ch->class]) { send_to_char( "You have not yet learned enough to fight in the standard style.\n\r",ch); return; --- 5470,5476 ---- return; } } else if( !str_prefix(arg,"standard")){ ! if( ch->level < skill_table[gsn_style_standard]->skill_level[ch->mudclass]) { send_to_char( "You have not yet learned enough to fight in the standard style.\n\r",ch); return; *************** *** 5494,5500 **** return; } } else if( !str_prefix(arg,"aggressive")){ ! if( ch->level < skill_table[gsn_style_aggressive]->skill_level[ch->class]) { send_to_char( "You have not yet learned enough to fight aggressively.\n\r",ch); return; --- 5494,5500 ---- return; } } else if( !str_prefix(arg,"aggressive")){ ! if( ch->level < skill_table[gsn_style_aggressive]->skill_level[ch->mudclass]) { send_to_char( "You have not yet learned enough to fight aggressively.\n\r",ch); return; *************** *** 5518,5524 **** return; } } else if( !str_prefix(arg,"berserk")){ ! if( ch->level < skill_table[gsn_style_berserk]->skill_level[ch->class]) { send_to_char( "You have not yet learned enough to fight as a berserker.\n\r",ch); return; --- 5518,5524 ---- return; } } else if( !str_prefix(arg,"berserk")){ ! if( ch->level < skill_table[gsn_style_berserk]->skill_level[ch->mudclass]) { send_to_char( "You have not yet learned enough to fight as a berserker.\n\r",ch); return; *************** *** 5576,5582 **** char buf[MAX_STRING_LENGTH]; one_argument( argument, arg ); ! if ( IS_NPC(ch) || ch->level < skill_table[gsn_cook]->skill_level[ch->class]) { send_to_char("That skill is beyond your understanding.\n\r", ch ); return; --- 5576,5582 ---- char buf[MAX_STRING_LENGTH]; one_argument( argument, arg ); ! if ( IS_NPC(ch) || ch->level < skill_table[gsn_cook]->skill_level[ch->mudclass]) { send_to_char("That skill is beyond your understanding.\n\r", ch ); return; diff -rc SmaugFUSS.orig/src/tables.c SmaugFUSS/src/tables.c *** SmaugFUSS.orig/src/tables.c 2003-07-31 13:26:12.000000000 +1000 --- SmaugFUSS/src/tables.c 2004-02-12 13:30:09.000000000 +1100 *************** *** 1262,1268 **** char buf[MAX_STRING_LENGTH]; char *word; bool fMatch; ! struct class_type *class; int cl = -1; int tlev = 0; FILE *fp; --- 1262,1268 ---- char buf[MAX_STRING_LENGTH]; char *word; bool fMatch; ! struct class_type *mudclass; int cl = -1; int tlev = 0; FILE *fp; *************** *** 1274,1291 **** return FALSE; } ! CREATE( class, struct class_type, 1 ); /* Setup defaults for additions to class structure */ ! class->attr_second = 0; ! class->attr_deficient = 0; ! xCLEAR_BITS(class->affected); ! class->resist = 0; ! class->suscept = 0; for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 1274,1293 ---- return FALSE; } ! CREATE( mudclass, struct class_type, 1 ); /* Setup defaults for additions to class structure */ ! mudclass->attr_second = 0; ! mudclass->attr_deficient = 0; ! xCLEAR_BITS(mudclass->affected); ! mudclass->resist = 0; ! mudclass->suscept = 0; for ( ; ; ) { ! ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 1296,1305 **** break; case 'A': ! KEY( "Affected", class->affected, fread_bitvector(fp)); ! KEY( "AttrPrime", class->attr_prime, fread_number( fp ) ); ! KEY( "AttrSecond", class->attr_second, fread_number( fp ) ); ! KEY( "AttrDeficient",class->attr_deficient, fread_number( fp ) ); break; case 'C': --- 1298,1307 ---- break; case 'A': ! KEY( "Affected", mudclass->affected, fread_bitvector(fp)); ! KEY( "AttrPrime", mudclass->attr_prime, fread_number( fp ) ); ! KEY( "AttrSecond", mudclass->attr_second, fread_number( fp ) ); ! KEY( "AttrDeficient",mudclass->attr_deficient, fread_number( fp ) ); break; case 'C': *************** *** 1313,1350 **** if ( cl < 0 || cl >= MAX_CLASS ) { sprintf( buf, "Load_class_file: Class (%s) bad/not found (%d)", ! class->who_name ? class->who_name : "name not found", cl ); bug( buf, 0 ); ! if ( class->who_name ) ! STRFREE( class->who_name ); ! DISPOSE( class ); return FALSE; } ! class_table[cl] = class; return TRUE; } ! KEY( "ExpBase", class->exp_base, fread_number( fp ) ); break; case 'G': ! KEY( "Guild", class->guild, fread_number( fp ) ); break; case 'H': ! KEY( "HpMax", class->hp_max, fread_number( fp ) ); ! KEY( "HpMin", class->hp_min, fread_number( fp ) ); break; case 'M': ! KEY( "Mana", class->fMana, fread_number( fp ) ); break; case 'N': ! KEY( "Name", class->who_name, fread_string( fp ) ); break; case 'R': ! KEY( "Resist", class->resist, fread_number( fp ) ); break; case 'S': --- 1315,1352 ---- if ( cl < 0 || cl >= MAX_CLASS ) { sprintf( buf, "Load_class_file: Class (%s) bad/not found (%d)", ! mudclass->who_name ? mudclass->who_name : "name not found", cl ); bug( buf, 0 ); ! if ( mudclass->who_name ) ! STRFREE( mudclass->who_name ); ! DISPOSE( mudclass ); return FALSE; } ! class_table[cl] = mudclass; return TRUE; } ! KEY( "ExpBase", mudclass->exp_base, fread_number( fp ) ); break; case 'G': ! KEY( "Guild", mudclass->guild, fread_number( fp ) ); break; case 'H': ! KEY( "HpMax", mudclass->hp_max, fread_number( fp ) ); ! KEY( "HpMin", mudclass->hp_min, fread_number( fp ) ); break; case 'M': ! KEY( "Mana", mudclass->fMana, fread_number( fp ) ); break; case 'N': ! KEY( "Name", mudclass->who_name, fread_string( fp ) ); break; case 'R': ! KEY( "Resist", mudclass->resist, fread_number( fp ) ); break; case 'S': *************** *** 1375,1382 **** fMatch = TRUE; break; } ! KEY( "Skilladept", class->skill_adept, fread_number( fp ) ); ! KEY( "Suscept", class->suscept, fread_number( fp ) ); break; case 'T': --- 1377,1384 ---- fMatch = TRUE; break; } ! KEY( "Skilladept", mudclass->skill_adept, fread_number( fp ) ); ! KEY( "Suscept", mudclass->suscept, fread_number( fp ) ); break; case 'T': *************** *** 1405,1416 **** fMatch = TRUE; break; } ! KEY( "Thac0", class->thac0_00, fread_number( fp ) ); ! KEY( "Thac32", class->thac0_32, fread_number( fp ) ); break; case 'W': ! KEY( "Weapon", class->weapon, fread_number( fp ) ); break; } if ( !fMatch ) --- 1407,1418 ---- fMatch = TRUE; break; } ! KEY( "Thac0", mudclass->thac0_00, fread_number( fp ) ); ! KEY( "Thac32", mudclass->thac0_32, fread_number( fp ) ); break; case 'W': ! KEY( "Weapon", mudclass->weapon, fread_number( fp ) ); break; } if ( !fMatch ) *************** *** 1450,1456 **** for ( ; ; ) { ! filename = feof( fpList ) ? "$" : fread_word( fpList ); if ( filename[0] == '$' ) break; --- 1452,1458 ---- for ( ; ; ) { ! filename = feof( fpList ) ? (char *) "$" : fread_word( fpList ); if ( filename[0] == '$' ) break; *************** *** 1480,1512 **** FILE *fpout; char buf[MAX_STRING_LENGTH]; char filename[MAX_INPUT_LENGTH]; ! struct class_type *class = class_table[cl]; int x, y; ! sprintf( filename, "%s%s.class", CLASSDIR, class->who_name ); if ( (fpout=fopen(filename, "w")) == NULL ) { sprintf( buf, "Cannot open: %s for writing", filename ); bug( buf, 0 ); return; } ! fprintf( fpout, "Name %s~\n", class->who_name ); fprintf( fpout, "Class %d\n", cl ); ! fprintf( fpout, "AttrPrime %d\n", class->attr_prime ); ! fprintf( fpout, "AttrSecond %d\n", class->attr_second ); ! fprintf( fpout, "AttrDeficient %d\n", class->attr_deficient ); ! fprintf( fpout, "Weapon %d\n", class->weapon ); ! fprintf( fpout, "Guild %d\n", class->guild ); ! fprintf( fpout, "Skilladept %d\n", class->skill_adept ); ! fprintf( fpout, "Thac0 %d\n", class->thac0_00 ); ! fprintf( fpout, "Thac32 %d\n", class->thac0_32 ); ! fprintf( fpout, "Hpmin %d\n", class->hp_min ); ! fprintf( fpout, "Hpmax %d\n", class->hp_max ); ! fprintf( fpout, "Mana %d\n", class->fMana ); ! fprintf( fpout, "Expbase %d\n", class->exp_base ); ! fprintf( fpout, "Affected %s\n", print_bitvector(&class->affected)); ! fprintf( fpout, "Resist %d\n", class->resist ); ! fprintf( fpout, "Suscept %d\n", class->suscept ); for ( x = 0; x < top_sn; x++ ) { if ( !skill_table[x]->name || skill_table[x]->name[0] == '\0' ) --- 1482,1514 ---- FILE *fpout; char buf[MAX_STRING_LENGTH]; char filename[MAX_INPUT_LENGTH]; ! struct class_type *mudclass = class_table[cl]; int x, y; ! sprintf( filename, "%s%s.class", CLASSDIR, mudclass->who_name ); if ( (fpout=fopen(filename, "w")) == NULL ) { sprintf( buf, "Cannot open: %s for writing", filename ); bug( buf, 0 ); return; } ! fprintf( fpout, "Name %s~\n", mudclass->who_name ); fprintf( fpout, "Class %d\n", cl ); ! fprintf( fpout, "AttrPrime %d\n", mudclass->attr_prime ); ! fprintf( fpout, "AttrSecond %d\n", mudclass->attr_second ); ! fprintf( fpout, "AttrDeficient %d\n", mudclass->attr_deficient ); ! fprintf( fpout, "Weapon %d\n", mudclass->weapon ); ! fprintf( fpout, "Guild %d\n", mudclass->guild ); ! fprintf( fpout, "Skilladept %d\n", mudclass->skill_adept ); ! fprintf( fpout, "Thac0 %d\n", mudclass->thac0_00 ); ! fprintf( fpout, "Thac32 %d\n", mudclass->thac0_32 ); ! fprintf( fpout, "Hpmin %d\n", mudclass->hp_min ); ! fprintf( fpout, "Hpmax %d\n", mudclass->hp_max ); ! fprintf( fpout, "Mana %d\n", mudclass->fMana ); ! fprintf( fpout, "Expbase %d\n", mudclass->exp_base ); ! fprintf( fpout, "Affected %s\n", print_bitvector(&mudclass->affected)); ! fprintf( fpout, "Resist %d\n", mudclass->resist ); ! fprintf( fpout, "Suscept %d\n", mudclass->suscept ); for ( x = 0; x < top_sn; x++ ) { if ( !skill_table[x]->name || skill_table[x]->name[0] == '\0' ) *************** *** 1550,1556 **** for ( ; ; ) { ! filename = feof( fpList ) ? "$" : fread_word( fpList ); if ( filename[0] == '$' ) break; --- 1552,1561 ---- for ( ; ; ) { ! ! ! filename = feof(fpList) ? (char *) "$" : fread_word(fpList); ! if ( filename[0] == '$' ) break; *************** *** 1668,1674 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 1673,1680 ---- for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 2207,2213 **** for ( ; ; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 2213,2220 ---- for ( ; ; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 2251,2260 **** case 'C': if ( !str_cmp( word, "Class" ) ) { ! int class = fread_number( fp ); ! skill->skill_level[class] = fread_number( fp ); ! skill->skill_adept[class] = fread_number( fp ); fMatch = TRUE; break; } --- 2258,2267 ---- case 'C': if ( !str_cmp( word, "Class" ) ) { ! int mudclass = fread_number( fp ); ! skill->skill_level[mudclass] = fread_number( fp ); ! skill->skill_adept[mudclass] = fread_number( fp ); fMatch = TRUE; break; } *************** *** 2588,2594 **** for ( ;; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 2595,2602 ---- for ( ;; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 2713,2719 **** for ( ;; ) { ! word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER(word[0]) ) --- 2721,2728 ---- for ( ;; ) { ! word = feof(fp) ? (char *) "End" : fread_word(fp); ! fMatch = FALSE; switch ( UPPER(word[0]) ) *************** *** 2876,2883 **** cnv->old = str_dup(fread_word(fp)); cnv->olen = strlen(cnv->old); ! cnv->new = str_dup(fread_word(fp)); ! cnv->nlen = strlen(cnv->new); fread_to_eol(fp); LINK(cnv, *first_cnv, *last_cnv, next, prev); } --- 2885,2892 ---- cnv->old = str_dup(fread_word(fp)); cnv->olen = strlen(cnv->old); ! cnv->lcnv_new = str_dup(fread_word(fp)); ! cnv->nlen = strlen(cnv->lcnv_new); fread_to_eol(fp); LINK(cnv, *first_cnv, *last_cnv, next, prev); } *************** *** 2942,2951 **** { fprintf(fp, "#%s\n", lng->name); for (cnv = lng->first_precnv; cnv; cnv = cnv->next) ! fprintf(fp, "'%s' '%s'\n", cnv->old, cnv->new); fprintf(fp, "~\n%s~\n", lng->alphabet); for (cnv = lng->first_cnv; cnv; cnv = cnv->next) ! fprintf(fp, "'%s' '%s'\n", cnv->old, cnv->new); fprintf(fp, "\n"); } fprintf(fp, "#end\n\n"); --- 2951,2960 ---- { fprintf(fp, "#%s\n", lng->name); for (cnv = lng->first_precnv; cnv; cnv = cnv->next) ! fprintf(fp, "'%s' '%s'\n", cnv->old, cnv->lcnv_new); fprintf(fp, "~\n%s~\n", lng->alphabet); for (cnv = lng->first_cnv; cnv; cnv = cnv->next) ! fprintf(fp, "'%s' '%s'\n", cnv->old, cnv->lcnv_new); fprintf(fp, "\n"); } fprintf(fp, "#end\n\n"); diff -rc SmaugFUSS.orig/src/tags SmaugFUSS/src/tags *** SmaugFUSS.orig/src/tags 2004-02-01 18:02:31.000000000 +1100 --- SmaugFUSS/src/tags 2004-02-12 12:46:13.000000000 +1100 *************** *** 1,5 **** ASSIGN_GSN mud.h /^#define ASSIGN_GSN(gsn, skill) \\$/ ! CAN_CAST mud.h /^#define CAN_CAST(ch) ((ch)->class != 2 && (ch)->c/ CAN_GO mud.h /^#define CAN_GO(ch, door) (EXIT((ch),(door)) \\$/ CAN_PKILL mud.h /^#define CAN_PKILL(ch) (IS_PKILL((ch)) &&/ CAN_WEAR mud.h /^#define CAN_WEAR(obj, part) (IS_SET((obj)->wear_fl/ --- 1,5 ---- ASSIGN_GSN mud.h /^#define ASSIGN_GSN(gsn, skill) \\$/ ! CAN_CAST mud.h /^#define CAN_CAST(ch) ((ch)->mudclass != 2 && (ch)/ CAN_GO mud.h /^#define CAN_GO(ch, door) (EXIT((ch),(door)) \\$/ CAN_PKILL mud.h /^#define CAN_PKILL(ch) (IS_PKILL((ch)) &&/ CAN_WEAR mud.h /^#define CAN_WEAR(obj, part) (IS_SET((obj)->wear_fl/ *************** *** 246,251 **** --- 246,253 ---- MKEY polymorph.c /^#define MKEY( literal, field, value ) \\$/ MORPHNAME comm.c /^#define MORPHNAME(ch) ((ch->morph&&ch->morph->mo/ MORPHPERS mud.h /^#define MORPHPERS(ch, looker) ( can_see( (looker/ + MXPMODE mud.h /^#define MXPMODE(arg) ESC "[" #arg "z"$/ + MXPTAG mud.h /^#define MXPTAG(arg) MXP_BEG arg MXP_END$/ Mservices services.c /^main(argc, argv)$/ NAME comm.c /^#define NAME(ch) (IS_NPC(ch) ? ch->short_de/ NOT_AUTHED mud.h /^#define NOT_AUTHED(ch) (!IS_NPC(ch) && ch->pcdata/ *************** *** 273,278 **** --- 275,281 ---- SPELL_SAVE mud.h /^#define SPELL_SAVE(skill) ( ((skill)->info >> 11) / STRALLOC mud.h /^#define STRALLOC(point) str_alloc((point))$/ STRFREE mud.h /^#define STRFREE(point) \\$/ + SegVio comm.c /^static void SegVio()$/ SetOExtra build.c /^EXTRA_DESCR_DATA *SetOExtra( OBJ_DATA *obj, char */ SetOExtraProto build.c /^EXTRA_DESCR_DATA *SetOExtraProto( OBJ_INDEX_DATA */ SetRExtra build.c /^EXTRA_DESCR_DATA *SetRExtra( ROOM_INDEX_DATA *room/ *************** *** 308,314 **** adjust_vectors update.c /^void adjust_vectors(WEATHER_DATA *weather)$/ advance_level update.c /^void advance_level( CHAR_DATA *ch )$/ advatoi bet.h /^int advatoi (char *s)$/ ! affect_bit_name handler.c /^char *affect_bit_name( EXT_BV *vector )$/ affect_join handler.c /^void affect_join( CHAR_DATA *ch, AFFECT_DATA *paf / affect_loc_name handler.c /^char *affect_loc_name( int location )$/ affect_modify handler.c /^void affect_modify( CHAR_DATA *ch, AFFECT_DATA *pa/ --- 311,317 ---- adjust_vectors update.c /^void adjust_vectors(WEATHER_DATA *weather)$/ advance_level update.c /^void advance_level( CHAR_DATA *ch )$/ advatoi bet.h /^int advatoi (char *s)$/ ! affect_bit_name handler.c /^const char *affect_bit_name( EXT_BV *vector )$/ affect_join handler.c /^void affect_join( CHAR_DATA *ch, AFFECT_DATA *paf / affect_loc_name handler.c /^char *affect_loc_name( int location )$/ affect_modify handler.c /^void affect_modify( CHAR_DATA *ch, AFFECT_DATA *pa/ *************** *** 372,378 **** capitalize db.c /^char *capitalize( const char *str )$/ carried_by handler.c /^CHAR_DATA *carried_by( OBJ_DATA *obj )$/ carryingvnum_visit mud_prog.c /^static bool carryingvnum_visit( CHAR_DATA * ch, OB/ ! caught_alarm comm.c /^void caught_alarm()$/ ch_bsearch_skill magic.c /^int ch_bsearch_skill( CHAR_DATA *ch, const char *n/ ch_bsearch_skill_exact magic.c /^int ch_bsearch_skill_exact( CHAR_DATA *ch, const c/ ch_bsearch_skill_prefix magic.c /^int ch_bsearch_skill_prefix( CHAR_DATA *ch, const / --- 375,381 ---- capitalize db.c /^char *capitalize( const char *str )$/ carried_by handler.c /^CHAR_DATA *carried_by( OBJ_DATA *obj )$/ carryingvnum_visit mud_prog.c /^static bool carryingvnum_visit( CHAR_DATA * ch, OB/ ! caught_alarm comm.c /^void caught_alarm(int)$/ ch_bsearch_skill magic.c /^int ch_bsearch_skill( CHAR_DATA *ch, const char *n/ ch_bsearch_skill_exact magic.c /^int ch_bsearch_skill_exact( CHAR_DATA *ch, const c/ ch_bsearch_skill_prefix magic.c /^int ch_bsearch_skill_prefix( CHAR_DATA *ch, const / *************** *** 432,450 **** close_service_handles services.c /^static void close_service_handles (void)$/ close_socket comm.c /^void close_socket( DESCRIPTOR_DATA *dclose, bool f/ closedir misc.c /^void closedir(DIR * dp)$/ ! color_align color.c /^char *color_align( const char *argument, int size,/ ! color_send_to_desc color.c /^void color_send_to_desc( const char *txt, DESCRIPT/ color_str color.c /^char *color_str( sh_int AType, CHAR_DATA *ch )$/ ! color_strlen color.c /^int color_strlen( const char *src )$/ ! colorcode color.c /^int colorcode( const char *src, char *dst, DESCRIP/ ! colorize color.c /^char *colorize( const char *txt, DESCRIPTOR_DATA */ comment_remove comments.c /^void comment_remove( CHAR_DATA *ch, CHAR_DATA *vic/ convert_error services.c /^static char * convert_error (DWORD error)$/ copy_buffer build.c /^char *copy_buffer( CHAR_DATA *ch )$/ copy_buffer_nohash build.c /^char *copy_buffer_nohash( CHAR_DATA *ch )$/ copy_morph polymorph.c /^void copy_morph( MORPH_DATA *morph, MORPH_DATA *te/ could_dual act_obj.c /^bool could_dual( CHAR_DATA *ch )$/ count_lines mapout.c /^char count_lines(char *txt)$/ count_obj_list handler.c /^int count_obj_list( OBJ_INDEX_DATA *pObjIndex, OBJ/ countlangs act_comm.c /^int countlangs( int languages )$/ create_mobile db.c /^CHAR_DATA *create_mobile( MOB_INDEX_DATA *pMobInde/ --- 435,457 ---- close_service_handles services.c /^static void close_service_handles (void)$/ close_socket comm.c /^void close_socket( DESCRIPTOR_DATA *dclose, bool f/ closedir misc.c /^void closedir(DIR * dp)$/ ! color_align color.c /^char *color_align( char *argument, int size, int a/ color_str color.c /^char *color_str( sh_int AType, CHAR_DATA *ch )$/ ! color_str_len color.c /^int color_str_len( char *argument )$/ ! color_strnlen color.c /^int color_strnlen( char *argument, int maxlength )/ ! colorcode color.c /^int colorcode( const char *col, char *code, CHAR_D/ comment_remove comments.c /^void comment_remove( CHAR_DATA *ch, CHAR_DATA *vic/ + const_color_align color.c /^const char *const_color_align( const char *argumen/ + const_color_str_len color.c /^int const_color_str_len( const char *argument )$/ + const_color_strnlen color.c /^int const_color_strnlen( const char *argument, int/ convert_error services.c /^static char * convert_error (DWORD error)$/ + convert_mxp_tags comm.c /^void convert_mxp_tags (const int bMXP, char * dest/ copy_buffer build.c /^char *copy_buffer( CHAR_DATA *ch )$/ copy_buffer_nohash build.c /^char *copy_buffer_nohash( CHAR_DATA *ch )$/ copy_morph polymorph.c /^void copy_morph( MORPH_DATA *morph, MORPH_DATA *te/ could_dual act_obj.c /^bool could_dual( CHAR_DATA *ch )$/ count_lines mapout.c /^char count_lines(char *txt)$/ + count_mxp_tags comm.c /^int count_mxp_tags (const int bMXP, const char *tx/ count_obj_list handler.c /^int count_obj_list( OBJ_INDEX_DATA *pObjIndex, OBJ/ countlangs act_comm.c /^int countlangs( int languages )$/ create_mobile db.c /^CHAR_DATA *create_mobile( MOB_INDEX_DATA *pMobInde/ *************** *** 988,994 **** ext_same_bits misc.c /^bool ext_same_bits( EXT_BV *var, EXT_BV *bits )$/ ext_set_bits misc.c /^void ext_set_bits( EXT_BV *var, EXT_BV *bits )$/ ext_toggle_bits misc.c /^void ext_toggle_bits( EXT_BV *var, EXT_BV *bits )$/ ! extra_bit_name handler.c /^char *extra_bit_name( EXT_BV *extra_flags )$/ extract_area_names act_wiz.c /^void extract_area_names (char *inp, char *out)$/ extract_char handler.c /^void extract_char( CHAR_DATA *ch, bool fPull )$/ extract_exit handler.c /^void extract_exit( ROOM_INDEX_DATA *room, EXIT_DAT/ --- 995,1001 ---- ext_same_bits misc.c /^bool ext_same_bits( EXT_BV *var, EXT_BV *bits )$/ ext_set_bits misc.c /^void ext_set_bits( EXT_BV *var, EXT_BV *bits )$/ ext_toggle_bits misc.c /^void ext_toggle_bits( EXT_BV *var, EXT_BV *bits )$/ ! extra_bit_name handler.c /^const char *extra_bit_name( EXT_BV *extra_flags )$/ extract_area_names act_wiz.c /^void extract_area_names (char *inp, char *out)$/ extract_char handler.c /^void extract_char( CHAR_DATA *ch, bool fPull )$/ extract_exit handler.c /^void extract_exit( ROOM_INDEX_DATA *room, EXIT_DAT/ *************** *** 1080,1094 **** generate_exit act_move.c /^ROOM_INDEX_DATA *generate_exit( ROOM_INDEX_DATA *i/ generate_itemlevel reset.c /^int generate_itemlevel( AREA_DATA *pArea, OBJ_INDE/ get_actflag build.c /^int get_actflag( char *flag )$/ ! get_aflag build.c /^int get_aflag( char *flag )$/ get_age handler.c /^sh_int get_age( CHAR_DATA *ch )$/ get_area handler.c /^AREA_DATA *get_area(char *name)$/ get_area_obj handler.c /^AREA_DATA * get_area_obj ( OBJ_INDEX_DATA *pObjInd/ get_areaflag build.c /^int get_areaflag( char *flag )$/ get_attackflag build.c /^int get_attackflag( char *flag )$/ ! get_atype build.c /^int get_atype( char *type )$/ get_board boards.c /^BOARD_DATA *get_board( OBJ_DATA *obj )$/ ! get_chance_verb act_obj.c /^char* get_chance_verb(OBJ_DATA* obj)$/ get_char_room handler.c /^CHAR_DATA *get_char_room( CHAR_DATA *ch, char *arg/ get_char_world handler.c /^CHAR_DATA *get_char_world( CHAR_DATA *ch, char *ar/ get_clan clans.c /^CLAN_DATA *get_clan( char *name )$/ --- 1087,1101 ---- generate_exit act_move.c /^ROOM_INDEX_DATA *generate_exit( ROOM_INDEX_DATA *i/ generate_itemlevel reset.c /^int generate_itemlevel( AREA_DATA *pArea, OBJ_INDE/ get_actflag build.c /^int get_actflag( char *flag )$/ ! get_aflag build.c /^int get_aflag( const char *flag )$/ get_age handler.c /^sh_int get_age( CHAR_DATA *ch )$/ get_area handler.c /^AREA_DATA *get_area(char *name)$/ get_area_obj handler.c /^AREA_DATA * get_area_obj ( OBJ_INDEX_DATA *pObjInd/ get_areaflag build.c /^int get_areaflag( char *flag )$/ get_attackflag build.c /^int get_attackflag( char *flag )$/ ! get_atype build.c /^int get_atype( const char *type )$/ get_board boards.c /^BOARD_DATA *get_board( OBJ_DATA *obj )$/ ! get_chance_verb act_obj.c /^const char* get_chance_verb(OBJ_DATA* obj)$/ get_char_room handler.c /^CHAR_DATA *get_char_room( CHAR_DATA *ch, char *arg/ get_char_world handler.c /^CHAR_DATA *get_char_world( CHAR_DATA *ch, char *ar/ get_clan clans.c /^CLAN_DATA *get_clan( char *name )$/ *************** *** 1110,1116 **** get_door act_info.c /^int get_door( char *arg )$/ get_ed_number act_obj.c /^char* get_ed_number(OBJ_DATA* obj, int number)$/ get_eq_char handler.c /^OBJ_DATA *get_eq_char( CHAR_DATA *ch, int iWear )$/ ! get_exflag build.c /^int get_exflag( char *flag )$/ get_exit act_move.c /^EXIT_DATA *get_exit( ROOM_INDEX_DATA *room, sh_int/ get_exit_num act_move.c /^EXIT_DATA *get_exit_num( ROOM_INDEX_DATA *room, sh/ get_exit_number db.c /^EXIT_DATA *get_exit_number( ROOM_INDEX_DATA *room,/ --- 1117,1123 ---- get_door act_info.c /^int get_door( char *arg )$/ get_ed_number act_obj.c /^char* get_ed_number(OBJ_DATA* obj, int number)$/ get_eq_char handler.c /^OBJ_DATA *get_eq_char( CHAR_DATA *ch, int iWear )$/ ! get_exflag build.c /^int get_exflag( const char *flag )$/ get_exit act_move.c /^EXIT_DATA *get_exit( ROOM_INDEX_DATA *room, sh_int/ get_exit_num act_move.c /^EXIT_DATA *get_exit_num( ROOM_INDEX_DATA *room, sh/ get_exit_number db.c /^EXIT_DATA *get_exit_number( ROOM_INDEX_DATA *room,/ *************** *** 1118,1124 **** get_exp handler.c /^int get_exp( CHAR_DATA *ch )$/ get_exp_base handler.c /^sh_int get_exp_base( CHAR_DATA *ch )$/ get_exp_worth handler.c /^int get_exp_worth( CHAR_DATA *ch )$/ ! get_extra_descr db.c /^char *get_extra_descr( const char *name, EXTRA_DES/ get_help act_info.c /^HELP_DATA *get_help( CHAR_DATA *ch, char *argument/ get_lang act_comm.c /^LANG_DATA *get_lang(const char *name)$/ get_langflag build.c /^int get_langflag( char *flag )$/ --- 1125,1131 ---- get_exp handler.c /^int get_exp( CHAR_DATA *ch )$/ get_exp_base handler.c /^sh_int get_exp_base( CHAR_DATA *ch )$/ get_exp_worth handler.c /^int get_exp_worth( CHAR_DATA *ch )$/ ! get_extra_descr db.c /^const char *get_extra_descr( char *name, EXTRA_DES/ get_help act_info.c /^HELP_DATA *get_help( CHAR_DATA *ch, char *argument/ get_lang act_comm.c /^LANG_DATA *get_lang(const char *name)$/ get_langflag build.c /^int get_langflag( char *flag )$/ *************** *** 1146,1155 **** get_obj_weight handler.c /^int get_obj_weight( OBJ_DATA *obj )$/ get_obj_world handler.c /^OBJ_DATA *get_obj_world( CHAR_DATA *ch, char *argu/ get_objtype handler.c /^OBJ_DATA *get_objtype( CHAR_DATA *ch, sh_int type / ! get_oflag build.c /^int get_oflag( char *flag )$/ ! get_otype build.c /^int get_otype( char *type )$/ get_partflag build.c /^int get_partflag( char *flag )$/ ! get_pc_class build.c /^int get_pc_class( char *class )$/ get_pc_race build.c /^int get_pc_race( char *type )$/ get_pcflag build.c /^int get_pcflag( char *flag )$/ get_permvalue i3.c /^int get_permvalue( const char *flag )$/ --- 1153,1162 ---- get_obj_weight handler.c /^int get_obj_weight( OBJ_DATA *obj )$/ get_obj_world handler.c /^OBJ_DATA *get_obj_world( CHAR_DATA *ch, char *argu/ get_objtype handler.c /^OBJ_DATA *get_objtype( CHAR_DATA *ch, sh_int type / ! get_oflag build.c /^int get_oflag( const char *flag )$/ ! get_otype build.c /^int get_otype( const char *type )$/ get_partflag build.c /^int get_partflag( char *flag )$/ ! get_pc_class build.c /^int get_pc_class( char *mudclass )$/ get_pc_race build.c /^int get_pc_race( char *type )$/ get_pcflag build.c /^int get_pcflag( char *flag )$/ get_permvalue i3.c /^int get_permvalue( const char *flag )$/ *************** *** 1160,1166 **** get_real_obj_weight handler.c /^int get_real_obj_weight( OBJ_DATA *obj )$/ get_reboot_string act_wiz.c /^void get_reboot_string(void)$/ get_repaircost shops.c /^int get_repaircost( CHAR_DATA *keeper, OBJ_DATA *o/ ! get_rflag build.c /^int get_rflag( char *flag )$/ get_risflag build.c /^int get_risflag( char *flag )$/ get_room_index db.c /^ROOM_INDEX_DATA *get_room_index( int vnum )$/ get_saction skills.c /^int get_saction( char *name )$/ --- 1167,1173 ---- get_real_obj_weight handler.c /^int get_real_obj_weight( OBJ_DATA *obj )$/ get_reboot_string act_wiz.c /^void get_reboot_string(void)$/ get_repaircost shops.c /^int get_repaircost( CHAR_DATA *keeper, OBJ_DATA *o/ ! get_rflag build.c /^int get_rflag( const char *flag )$/ get_risflag build.c /^int get_risflag( char *flag )$/ get_room_index db.c /^ROOM_INDEX_DATA *get_room_index( int vnum )$/ get_saction skills.c /^int get_saction( char *name )$/ *************** *** 1187,1193 **** get_waiting_desc act_wiz.c /^CHAR_DATA *get_waiting_desc( CHAR_DATA *ch, char */ get_wearloc build.c /^int get_wearloc( char *type )$/ get_weather_echo update.c /^void get_weather_echo(WEATHER_DATA *weath)$/ ! get_wflag build.c /^int get_wflag( char *flag )$/ getcolor comm.c /^int getcolor(char clr)$/ gettimeofday misc.c /^void gettimeofday(struct timeval *tv, struct timez/ go_accum_aff grub.c /^void go_accum_aff (GO_STRUCT *r, int loc, int mod)/ --- 1194,1200 ---- get_waiting_desc act_wiz.c /^CHAR_DATA *get_waiting_desc( CHAR_DATA *ch, char */ get_wearloc build.c /^int get_wearloc( char *type )$/ get_weather_echo update.c /^void get_weather_echo(WEATHER_DATA *weath)$/ ! get_wflag build.c /^int get_wflag( const char *flag )$/ getcolor comm.c /^int getcolor(char clr)$/ gettimeofday misc.c /^void gettimeofday(struct timeval *tv, struct timez/ go_accum_aff grub.c /^void go_accum_aff (GO_STRUCT *r, int loc, int mod)/ *************** *** 1277,1288 **** is_ignoring act_info.c /^bool is_ignoring(CHAR_DATA *ch, CHAR_DATA *ign_ch)/ is_immune magic.c /^bool is_immune( CHAR_DATA *ch, sh_int damtype )$/ is_legal_kill skills.c /^bool is_legal_kill(CHAR_DATA *ch, CHAR_DATA *vch)$/ ! is_name handler.c /^bool is_name( const char *str, char *namelist )$/ is_name2 handler.c /^bool is_name2( const char *str, char *namelist )$/ is_name2_prefix handler.c /^bool is_name2_prefix( const char *str, char *namel/ ! is_name_prefix handler.c /^bool is_name_prefix( const char *str, char *nameli/ is_note_to boards.c /^bool is_note_to( CHAR_DATA *ch, NOTE_DATA *pnote )/ ! is_number interp.c /^bool is_number( char *arg )$/ is_reserved_name comm.c /^bool is_reserved_name( char *name )$/ is_room_reset reset.c /^bool is_room_reset( RESET_DATA *pReset, ROOM_INDEX/ is_safe fight.c /^bool is_safe( CHAR_DATA *ch, CHAR_DATA *victim, bo/ --- 1284,1295 ---- is_ignoring act_info.c /^bool is_ignoring(CHAR_DATA *ch, CHAR_DATA *ign_ch)/ is_immune magic.c /^bool is_immune( CHAR_DATA *ch, sh_int damtype )$/ is_legal_kill skills.c /^bool is_legal_kill(CHAR_DATA *ch, CHAR_DATA *vch)$/ ! is_name handler.c /^bool is_name( char *str, char *namelist )$/ is_name2 handler.c /^bool is_name2( const char *str, char *namelist )$/ is_name2_prefix handler.c /^bool is_name2_prefix( const char *str, char *namel/ ! is_name_prefix handler.c /^bool is_name_prefix( char *str, char *namelist )$/ is_note_to boards.c /^bool is_note_to( CHAR_DATA *ch, NOTE_DATA *pnote )/ ! is_number interp.c /^bool is_number( const char *arg )$/ is_reserved_name comm.c /^bool is_reserved_name( char *name )$/ is_room_reset reset.c /^bool is_room_reset( RESET_DATA *pReset, ROOM_INDEX/ is_safe fight.c /^bool is_safe( CHAR_DATA *ch, CHAR_DATA *victim, bo/ *************** *** 1354,1360 **** log_string_plus db.c /^void log_string_plus( const char *str, sh_int log_/ lookup_spec special.c /^char *lookup_spec( SPEC_FUN *special )$/ lower_economy handler.c /^void lower_economy( AREA_DATA *tarea, int gold )$/ ! magic_bit_name handler.c /^char *magic_bit_name( int magic_flags )$/ mail_count boards.c /^void mail_count(CHAR_DATA *ch)$/ mainthread comm.c /^ int mainthread( int argc, char **argv )$/ make_blood makeobjs.c /^void make_blood( CHAR_DATA *ch )$/ --- 1361,1367 ---- log_string_plus db.c /^void log_string_plus( const char *str, sh_int log_/ lookup_spec special.c /^char *lookup_spec( SPEC_FUN *special )$/ lower_economy handler.c /^void lower_economy( AREA_DATA *tarea, int gold )$/ ! magic_bit_name handler.c /^const char *magic_bit_name( int magic_flags )$/ mail_count boards.c /^void mail_count(CHAR_DATA *ch)$/ mainthread comm.c /^ int mainthread( int argc, char **argv )$/ make_blood makeobjs.c /^void make_blood( CHAR_DATA *ch )$/ *************** *** 1597,1602 **** --- 1604,1610 ---- send_timer interp.c /^void send_timer(struct timerset *vtime, CHAR_DATA / send_to_char color.c /^void send_to_char( const char *txt, CHAR_DATA *ch / send_to_char_color color.c /^void send_to_char_color( const char *txt, CHAR_DAT/ + send_to_desc_color color.c /^void send_to_desc_color( const char *txt, DESCRIPT/ send_to_i3 i3.c /^void send_to_i3( const char *text )$/ send_to_pager color.c /^void send_to_pager( const char *txt, CHAR_DATA *ch/ send_to_pager_color color.c /^void send_to_pager_color( const char *txt, CHAR_DA/ *************** *** 1784,1790 **** stop_hating fight.c /^void stop_hating( CHAR_DATA *ch )$/ stop_hunting fight.c /^void stop_hunting( CHAR_DATA *ch )$/ stop_idling comm.c /^void stop_idling( CHAR_DATA *ch )$/ ! str_alloc hashstr.c /^char *str_alloc( char *str )$/ str_cmp db.c /^bool str_cmp( const char *astr, const char *bstr )/ str_count grub.c /^int str_count(char *psource, char *ptarget)$/ str_dup db.c /^char *str_dup( char const *str )$/ --- 1792,1798 ---- stop_hating fight.c /^void stop_hating( CHAR_DATA *ch )$/ stop_hunting fight.c /^void stop_hunting( CHAR_DATA *ch )$/ stop_idling comm.c /^void stop_idling( CHAR_DATA *ch )$/ ! str_alloc hashstr.c /^char *str_alloc( const char *str )$/ str_cmp db.c /^bool str_cmp( const char *astr, const char *bstr )/ str_count grub.c /^int str_count(char *psource, char *ptarget)$/ str_dup db.c /^char *str_dup( char const *str )$/ *************** *** 1816,1821 **** --- 1824,1830 ---- translate act_comm.c /^char *translate(int percent, const char *in, const/ trip skills.c /^void trip( CHAR_DATA *ch, CHAR_DATA *victim )$/ trunc grub.c /^void trunc(char *s, int len)$/ + turn_on_mxp comm.c /^void turn_on_mxp (DESCRIPTOR_DATA *d)$/ unequip_char handler.c /^void unequip_char( CHAR_DATA *ch, OBJ_DATA *obj )$/ unlink_command act_wiz.c /^void unlink_command( CMDTYPE *command )$/ unlink_social act_wiz.c /^void unlink_social( SOCIALTYPE *social )$/ diff -rc SmaugFUSS.orig/src/track.c SmaugFUSS/src/track.c *** SmaugFUSS.orig/src/track.c 2001-04-08 05:42:46.000000000 +1000 --- SmaugFUSS/src/track.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 64,70 **** { BFS_DATA *curr; ! curr = malloc( sizeof(BFS_DATA) ); curr->room = room; curr->dir = dir; curr->next = NULL; --- 64,70 ---- { BFS_DATA *curr; ! curr = (BFS_DATA *) malloc( sizeof(BFS_DATA) ); curr->room = room; curr->dir = dir; curr->next = NULL; *************** *** 101,107 **** { BFS_DATA *curr; ! curr = malloc( sizeof(BFS_DATA) ); curr->room = room; curr->next = room_queue; --- 101,107 ---- { BFS_DATA *curr; ! curr = (BFS_DATA *) malloc( sizeof(BFS_DATA) ); curr->room = room; curr->next = room_queue; diff -rc SmaugFUSS.orig/src/update.c SmaugFUSS/src/update.c *** SmaugFUSS.orig/src/update.c 2002-12-30 11:31:57.000000000 +1100 --- SmaugFUSS/src/update.c 2004-02-12 12:28:57.000000000 +1100 *************** *** 82,94 **** /* save_char_obj( ch );*/ sprintf( buf, "the %s", ! title_table [ch->class] [ch->level] [ch->sex == SEX_FEMALE ? 1 : 0] ); set_title( ch, buf ); add_hp = con_app[get_curr_con(ch)].hitp + number_range( ! class_table[ch->class]->hp_min, ! class_table[ch->class]->hp_max ); ! add_mana = class_table[ch->class]->fMana ? number_range(2, (2*get_curr_int(ch)+get_curr_wis(ch))/8) : 0; add_move = number_range( 5, (get_curr_con(ch)+get_curr_dex(ch))/4 ); --- 82,94 ---- /* save_char_obj( ch );*/ sprintf( buf, "the %s", ! title_table [ch->mudclass] [ch->level] [ch->sex == SEX_FEMALE ? 1 : 0] ); set_title( ch, buf ); add_hp = con_app[get_curr_con(ch)].hitp + number_range( ! class_table[ch->mudclass]->hp_min, ! class_table[ch->mudclass]->hp_max ); ! add_mana = class_table[ch->mudclass]->fMana ? number_range(2, (2*get_curr_int(ch)+get_curr_wis(ch))/8) : 0; add_move = number_range( 5, (get_curr_con(ch)+get_curr_dex(ch))/4 ); *************** *** 157,163 **** get_age( ch ), ch->in_room == NULL ? 0 : ch->in_room->vnum, capitalize(race_table[ch->race]->race_name), ! class_table[ch->class]->who_name ); append_to_file( PLEVEL_FILE, buf2 ); } } --- 157,163 ---- get_age( ch ), ch->in_room == NULL ? 0 : ch->in_room->vnum, capitalize(race_table[ch->race]->race_name), ! class_table[ch->mudclass]->who_name ); append_to_file( PLEVEL_FILE, buf2 ); } } *************** *** 410,416 **** switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are STARVING!\n\r", ch ); --- 410,416 ---- switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are STARVING!\n\r", ch ); *************** *** 422,428 **** break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You are DYING of THIRST!\n\r", ch ); --- 422,428 ---- break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You are DYING of THIRST!\n\r", ch ); *************** *** 465,471 **** switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are really hungry.\n\r", ch ); --- 465,471 ---- switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are really hungry.\n\r", ch ); *************** *** 476,482 **** break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You are really thirsty.\n\r", ch ); --- 476,482 ---- break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You are really thirsty.\n\r", ch ); *************** *** 510,516 **** switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are hungry.\n\r", ch ); --- 510,516 ---- switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are hungry.\n\r", ch ); *************** *** 518,524 **** break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You are thirsty.\n\r", ch ); --- 518,524 ---- break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You are thirsty.\n\r", ch ); *************** *** 540,546 **** switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are a mite peckish.\n\r", ch ); --- 540,546 ---- switch ( iCond ) { case COND_FULL: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_HUNGRY, ch ); send_to_char( "You are a mite peckish.\n\r", ch ); *************** *** 548,554 **** break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->class != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You could use a sip of something refreshing.\n\r", ch ); --- 548,554 ---- break; case COND_THIRST: ! if ( ch->level < LEVEL_AVATAR && ch->mudclass != CLASS_VAMPIRE ) { set_char_color( AT_THIRSTY, ch ); send_to_char( "You could use a sip of something refreshing.\n\r", ch ); *************** *** 593,599 **** } /* Paladins need some restrictions, this is where we crunch 'em -h */ ! if(ch->class == CLASS_PALADIN){ if(ch->alignment<250){ set_char_color( AT_BLOOD, ch ); send_to_char( "You are wracked with guilt and remorse for your craven actions!\n\r", ch ); --- 593,599 ---- } /* Paladins need some restrictions, this is where we crunch 'em -h */ ! if(ch->mudclass == CLASS_PALADIN){ if(ch->alignment<250){ set_char_color( AT_BLOOD, ch ); send_to_char( "You are wracked with guilt and remorse for your craven actions!\n\r", ch ); *************** *** 1045,1051 **** gain_condition( ch, COND_DRUNK, -1 ); gain_condition( ch, COND_FULL, -1 + race_table[ch->race]->hunger_mod ); ! if ( ch->class == CLASS_VAMPIRE && ch->level >= 10 ) { if ( time_info.hour < 21 && time_info.hour > 5 ) gain_condition( ch, COND_BLOODTHIRST, -1 ); --- 1045,1051 ---- gain_condition( ch, COND_DRUNK, -1 ); gain_condition( ch, COND_FULL, -1 + race_table[ch->race]->hunger_mod ); ! if ( ch->mudclass == CLASS_VAMPIRE && ch->level >= 10 ) { if ( time_info.hour < 21 && time_info.hour > 5 ) gain_condition( ch, COND_BLOODTHIRST, -1 ); *************** *** 1682,1688 **** /* check mobprog act queue */ while ( (apdtmp = mob_act_list) != NULL ) { ! wch = mob_act_list->vo; if ( !char_died(wch) && wch->mpactnum > 0 ) { MPROG_ACT_LIST * tmp_act; --- 1682,1688 ---- /* check mobprog act queue */ while ( (apdtmp = mob_act_list) != NULL ) { ! wch = (CHAR_DATA *) mob_act_list->vo; if ( !char_died(wch) && wch->mpactnum > 0 ) { MPROG_ACT_LIST * tmp_act; *************** *** 1854,1860 **** for ( vch = ch->in_room->first_person; vch; vch = vch->next_in_room ) if ( number_percent() < 10 ) rvch = vch; ! check_social( ch, "puke", (rvch ? rvch->name : "") ); } ch->position = position; --- 1854,1860 ---- for ( vch = ch->in_room->first_person; vch; vch = vch->next_in_room ) if ( number_percent() < 10 ) rvch = vch; ! check_social( ch, "puke", (rvch ? rvch->name : (char *) "") ); } ch->position = position; *************** *** 1953,1959 **** } sprintf( log_buf, " %s@%s new %s %s", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->class]->who_name ); /* log_string( log_buf ); */ to_channel( log_buf, CHANNEL_AUTH, "Auth", 1); } --- 1953,1959 ---- } sprintf( log_buf, " %s@%s new %s %s", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->mudclass]->who_name ); /* log_string( log_buf ); */ to_channel( log_buf, CHANNEL_AUTH, "Auth", 1); } *************** *** 1976,1982 **** found_hit = TRUE; sprintf( buf, " %s@%s new %s %s\n\r", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->class]->who_name ); strcat (log_buf, buf); } } --- 1976,1982 ---- found_hit = TRUE; sprintf( buf, " %s@%s new %s %s\n\r", victim->name, victim->desc->host, race_table[victim->race]->race_name, ! class_table[victim->mudclass]->who_name ); strcat (log_buf, buf); } } Only in SmaugFUSS/system: plevel.txt