diff -ur src/act_wiz.c new/act_wiz.c --- src/act_wiz.c Thu Mar 27 02:17:55 2003 +++ new/act_wiz.c Wed Apr 9 23:26:58 2003 @@ -1485,10 +1485,9 @@ chprintlnf(ch, "Vnum: %ld Format: %s Race: %s Group: %d Sex: %s Room: %ld", IS_NPC(victim) ? victim->pIndexData->vnum : 0, - IS_NPC(victim) ? victim-> - pIndexData->new_format ? "new" : "old" : "pc", - victim->race->name, IS_NPC(victim) ? victim->group : 0, - sex_table[victim->sex].name, + IS_NPC(victim) ? victim->pIndexData-> + new_format ? "new" : "old" : "pc", victim->race->name, + IS_NPC(victim) ? victim->group : 0, sex_table[victim->sex].name, victim->in_room == NULL ? 0 : victim->in_room->vnum); if (IS_NPC(victim)) @@ -4094,8 +4093,8 @@ count++; sprintf(buf + strlen(buf), "[%3d %2d] %s@%s\n\r", d->descriptor, d->connected, - d->original ? d->original->name : d-> - character ? d->character->name : "(none)", d->host); + d->original ? d->original->name : d->character ? d-> + character->name : "(none)", d->host); } } if (count == 0) diff -ur src/arena.c new/arena.c --- src/arena.c Thu Mar 27 02:17:55 2003 +++ new/arena.c Wed Apr 9 23:26:58 2003 @@ -79,8 +79,9 @@ chprintlnf (ch, "You have already been challenged, either ACCEPT or DECLINE %s first.", - ch->pcdata->challenger ? ch->pcdata->challenger->name : ch-> - pcdata->challenged ? ch->pcdata->challenged->name : "!BUG!"); + ch->pcdata->challenger ? ch->pcdata->challenger-> + name : ch->pcdata->challenged ? ch->pcdata->challenged-> + name : "!BUG!"); return; } diff -ur src/auction.c new/auction.c --- src/auction.c Thu Mar 27 02:17:55 2003 +++ new/auction.c Wed Apr 9 23:26:58 2003 @@ -237,9 +237,9 @@ reset_auc(auc, TRUE); } else if ((unsigned long) (!IS_OBJ_STAT(auc->item, ITEM_QUEST) - ? auc->high_bidder-> - gold : auc->high_bidder->pcdata-> - questpoints) < auc->bid) + ? auc->high_bidder->gold : auc-> + high_bidder->pcdata->questpoints) < + auc->bid) { announce(auc->high_bidder, INFO_AUCTION, "$n can't cover their stake in the auction, sale stopped."); diff -ur src/automap.c new/automap.c --- src/automap.c Thu Mar 27 02:17:55 2003 +++ new/automap.c Wed Apr 9 23:26:58 2003 @@ -47,9 +47,7 @@ char symbol; vnum_t vnum; int depth; - flag_t info; - bool up; - bool dn; + ROOM_INDEX_DATA *pRoom; }; typedef struct map_type MAP_DATA; @@ -88,9 +86,7 @@ map[x][y].symbol = ' '; map[x][y].vnum = 0; map[x][y].depth = 0; - map[x][y].up = FALSE; - map[x][y].dn = FALSE; - map[x][y].info = 0; + map[x][y].pRoom = NULL; } void clear_room(int x, int y) @@ -159,21 +155,10 @@ if (!can_see_room(ch, pRoom)) return; - map[x][y].symbol = get_sector_symbol(ch->in_room->sector_type); + map[x][y].symbol = get_sector_symbol(pRoom->sector_type); map[x][y].vnum = pRoom->vnum; map[x][y].depth = depth; - map[x][y].dn = FALSE; - map[x][y].up = FALSE; - - if (!IS_NPC(ch) && getbit(ch->pcdata->explored, pRoom->vnum)) - { - map[x][y].info = pRoom->room_flags; - - if (pRoom->exit[DIR_DOWN] != NULL) - map[x][y].dn = TRUE; - if (pRoom->exit[DIR_UP] != NULL) - map[x][y].up = TRUE; - } + map[x][y].pRoom = pRoom; if (depth >= MAXDEPTH) return; @@ -209,7 +194,7 @@ map[exitx][exity].depth = depth; map[exitx][exity].vnum = pExit->u1.to_room->vnum; map[exitx][exity].symbol = map_chars[door]; - map[exitx][exity].info = pExit->exit_info; + map[exitx][exity].pRoom = pExit->u1.to_room; if ((depth < MAXDEPTH) && ((map[roomx][roomy].vnum == pExit->u1.to_room->vnum) @@ -277,7 +262,11 @@ for (m = 0; m <= strlen(desc); m++) { if (desc[m] == ANSI_KEY) - m += 2; + { + m++; + lcolor = desc[m]; + m++; + } else if (desc[m] == ANSI_CUSTOM) { while (desc[m] != ANSI_END) @@ -291,14 +280,6 @@ } for (l = m; l > 0; l--) - { - if (desc[l] == ANSI_KEY) - { - lcolor = desc[l + 1]; - break; - } - } - for (l = m; l > 0; l--) if (desc[l] == ' ') break; @@ -353,18 +334,29 @@ for (x = 0; x <= MAPX; x++) { - if (map[x][y].symbol == 'o') + if (map[x][y].pRoom) { - if (map[x][y].up && map[x][y].dn) - map[x][y].symbol = 'O'; - if (!map[x][y].up && map[x][y].dn) - map[x][y].symbol = 'D'; - if (map[x][y].up && !map[x][y].dn) - map[x][y].symbol = 'U'; + if (map[x][y].symbol == + get_sector_symbol(map[x][y].pRoom->sector_type) + && !IS_NPC(ch) + && getbit(ch->pcdata->explored, map[x][y].pRoom->vnum)) + { + if (map[x][y].pRoom->exit[DIR_UP] + && map[x][y].pRoom->exit[DIR_DOWN]) + map[x][y].symbol = 'O'; + else if (!map[x][y].pRoom->exit[DIR_UP] + && map[x][y].pRoom->exit[DIR_DOWN]) + map[x][y].symbol = 'D'; + else if (map[x][y].pRoom->exit[DIR_UP] + && !map[x][y].pRoom->exit[DIR_DOWN]) + map[x][y].symbol = 'U'; + } + sprintf(buf + strlen(buf), "%s%c", + get_sector_color(map[x][y].pRoom->sector_type), + map[x][y].symbol); } - sprintf(buf + strlen(buf), "%s%c", - get_sector_color(ch->in_room->sector_type), - map[x][y].symbol); + else + strcat(buf, &map[x][y].symbol); } strcat(buf, "{R| {"); diff -ur src/clans.c new/clans.c --- src/clans.c Thu Mar 27 02:17:55 2003 +++ new/clans.c Wed Apr 9 23:26:58 2003 @@ -330,8 +330,8 @@ { chprintlnf(ch, "%-12s %-8s %s", victim->name, position_table[victim->position].name, - victim->in_room ? victim->in_room-> - area->name : "Unknown"); + victim->in_room ? victim->in_room->area-> + name : "Unknown"); found = TRUE; } } diff -ur src/comm.c new/comm.c --- src/comm.c Thu Mar 27 02:17:55 2003 +++ new/comm.c Wed Apr 9 23:26:58 2003 @@ -111,6 +111,8 @@ void read_from_buffer args((DESCRIPTOR_DATA * d)); void stop_idling args((CHAR_DATA * ch)); void bust_a_prompt args((CHAR_DATA * ch)); +void set_game_levels args((int Old, int New)); +void save_helps args((void)); #if !defined(WIN32) #if !defined(__CYGWIN__) @@ -200,7 +202,21 @@ port = 4000; if (argc > 1) { - if (!is_number(argv[1])) + if (!str_cmp(argv[1], "levels")) + { + if (IS_NULLSTR(argv[2]) || IS_NULLSTR(argv[3]) + || !is_number(argv[2]) || !is_number(argv[3])) + { + logf("Usage: %s levels [old max level] [new max level]", + argv[0]); + exit(1); + } + + boot_db(); + set_game_levels(atoi(argv[2]), atoi(argv[3])); + exit(0); + } + else if (!is_number(argv[1])) { logf("Usage: %s [port #]\n", argv[0]); exit(1); @@ -1577,8 +1593,8 @@ ((!IS_NPC(ch) && IS_SET(ch->act, PLR_HOLYLIGHT)) || (!IS_AFFECTED(ch, AFF_BLIND) && - !room_is_dark(ch->in_room))) ? ch-> - in_room->name : "darkness"); + !room_is_dark(ch->in_room))) ? ch->in_room-> + name : "darkness"); else sprintf(buf2, " "); i = buf2; @@ -1879,8 +1895,8 @@ dold->connected != CON_GET_NAME && dold->connected != CON_GET_OLD_PASSWORD && !str_cmp(name, - dold->original ? dold->original->name : dold-> - character->name)) + dold->original ? dold->original->name : dold->character-> + name)) { write_to_buffer(d, "That character is already playing.\n\r", 0); write_to_buffer(d, "Do you wish to connect anyway (Y/N)?", 0); @@ -2759,3 +2775,81 @@ } } #endif + +void set_game_levels(int Old, int New) +{ + CMD_DATA *cmd; + HELP_DATA *pHelp; + OBJ_INDEX_DATA *pObj; + MOB_INDEX_DATA *pMob; + BAN_DATA *ban; + DISABLED_DATA *d; + MBR_DATA *mbr; + int hash, sn, x; + int diff = MAX_LEVEL - LEVEL_IMMORTAL; + int imm_level = Old - diff; + int mod = New - Old; + + logf("Old Imm Level = %d, Old Max Level = %d.", imm_level, Old); + logf("New Imm Level = %d, New Max Level = %d.", New - diff, New); + + for (cmd = cmd_first; cmd; cmd = cmd->next) + { + if (cmd->level >= imm_level) + cmd->level += mod; + } + save_commands(); + for (pHelp = help_first; pHelp; pHelp = pHelp->next) + { + if (pHelp->level >= imm_level) + pHelp->level += mod; + } + save_helps(); + for (hash = 0; hash < MAX_KEY_HASH; hash++) + { + for (pMob = mob_index_hash[hash]; pMob; pMob = pMob->next) + { + if (pMob->level >= imm_level) + { + pMob->level += mod; + SET_BIT(pMob->area->area_flags, AREA_CHANGED); + } + } + for (pObj = obj_index_hash[hash]; pObj; pObj = pObj->next) + { + if (pObj->level >= imm_level) + { + pObj->level += mod; + SET_BIT(pObj->area->area_flags, AREA_CHANGED); + } + } + } + do_asave(NULL, "changed"); + for (ban = ban_first; ban; ban = ban->next) + { + if (ban->level >= imm_level) + ban->level += mod; + } + save_bans(); + for (d = disabled_first; d; d = d->next) + { + if (d->level >= imm_level) + d->level += mod; + } + save_disabled(); + for (sn = 0; sn < maxSkill; sn++) + { + for (x = 0; x < maxClass; x++) + { + if (skill_table[sn].skill_level[x] >= imm_level) + skill_table[sn].skill_level[x] += mod; + } + } + save_skills(); + for (mbr = mbr_first; mbr; mbr = mbr->next) + { + if (mbr->level >= imm_level) + mbr->level += mod; + } + save_members(); +} diff -ur src/fight.c new/fight.c --- src/fight.c Thu Mar 27 02:17:55 2003 +++ new/fight.c Wed Apr 9 23:26:58 2003 @@ -3112,8 +3112,9 @@ if ((pexit = was_in->exit[door]) == 0 || pexit->u1.to_room == NULL || IS_SET(pexit->exit_info, EX_CLOSED) || number_range(0, ch->daze) != 0 || (IS_NPC(ch) && - IS_SET(pexit->u1.to_room-> - room_flags, ROOM_NO_MOB))) + IS_SET(pexit->u1. + to_room->room_flags, + ROOM_NO_MOB))) continue; move_char(ch, door, FALSE); diff -ur src/handler.c new/handler.c --- src/handler.c Thu Mar 27 02:17:55 2003 +++ new/handler.c Wed Apr 9 23:26:58 2003 @@ -319,7 +319,8 @@ bool is_same_clan(CHAR_DATA * ch, CHAR_DATA * victim) { - if (ch->clan->independent || victim->clan->independent) + if (ch->clan == NULL || victim->clan == NULL + || ch->clan->independent || victim->clan->independent) return FALSE; else return (ch->clan == victim->clan); @@ -1898,6 +1899,9 @@ UNLINK(obj, object_first, object_last, next, prev); + if (obj->item_type == ITEM_CORPSE_PC) + update_corpses(obj, TRUE); + --obj->pIndexData->count; free_obj(obj); return; @@ -1951,7 +1955,10 @@ /* Death room is set in the clan tabe now */ if (!fPull) { - ROOM_INDEX_DATA *room = get_room_index(ch->clan->hall); + ROOM_INDEX_DATA *room = NULL; + + if (is_clan(ch)) + room = get_room_index(ch->clan->hall); if (room == NULL) room = get_room_index(ROOM_VNUM_ALTAR); char_to_room(ch, room); diff -ur src/magic.c new/magic.c --- src/magic.c Thu Mar 27 02:17:55 2003 +++ new/magic.c Wed Apr 9 23:26:58 2003 @@ -286,8 +286,8 @@ if ((sn = find_spell(ch, arg1)) < 1 || skill_table[sn].spell_fun == spell_null || (!IS_NPC(ch) && (!can_use_skpell(ch, sn) - || ch-> - pcdata->learned[sn] == 0))) + || ch->pcdata-> + learned[sn] == 0))) { chprintln(ch, "You don't know any spells of that name."); return; @@ -2788,7 +2788,9 @@ || IS_SET(victim->in_room->room_flags, ROOM_NO_RECALL) || IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL) || (IS_NPC(victim) && is_gqmob(ch, - victim->pIndexData->vnum) + victim-> + pIndexData-> + vnum) != -1) || (IS_NPC(victim) && IS_QUESTOR(ch) && ch->pcdata->questmob == victim->pIndexData->vnum) diff -ur src/magic2.c new/magic2.c --- src/magic2.c Thu Mar 27 02:17:55 2003 +++ new/magic2.c Wed Apr 9 23:26:58 2003 @@ -64,9 +64,7 @@ || IS_SET(victim->in_room->room_flags, ROOM_NO_RECALL) || IS_SET(ch->in_room->room_flags, ROOM_NO_RECALL) || (IS_NPC(victim) && is_gqmob(ch, - victim-> - pIndexData-> - vnum) + victim->pIndexData->vnum) != -1) || (IS_NPC(victim) && IS_QUESTOR(ch) && ch->pcdata->questmob == victim->pIndexData->vnum) @@ -125,17 +123,10 @@ || IS_SET(to_room->room_flags, ROOM_ARENA) || IS_SET(from_room->room_flags, ROOM_ARENA) || (IS_NPC(victim) && is_gqmob(ch, - victim-> - pIndexData-> - vnum) != - -1) || (IS_NPC(victim) - && - IS_QUESTOR(ch) - && ch->pcdata-> - questmob == - victim-> - pIndexData-> - vnum) + victim->pIndexData->vnum) + != -1) + || (IS_NPC(victim) && IS_QUESTOR(ch) + && ch->pcdata->questmob == victim->pIndexData->vnum) || victim->level >= level + 3 || (!IS_NPC(victim) && victim->level >= LEVEL_HERO) /* NOT trust */ || (IS_NPC(victim) && IS_SET(victim->imm_flags, IMM_SUMMON)) || (IS_NPC(victim) && saves_spell(level, victim, DAM_NONE)) diff -ur src/mob_cmds.c new/mob_cmds.c --- src/mob_cmds.c Thu Mar 27 02:17:55 2003 +++ new/mob_cmds.c Wed Apr 9 23:26:58 2003 @@ -1340,8 +1340,8 @@ || IS_SET(pexit->exit_info, EX_CLOSED) || (IS_NPC(ch) && IS_SET - (pexit->u1.to_room-> - room_flags, + (pexit->u1. + to_room->room_flags, ROOM_NO_MOB))) continue; @@ -1792,8 +1792,8 @@ { if ((vobj = get_obj_here(NULL, - obj->in_room ? obj->in_room : obj->carried_by-> - in_room, arg))) + obj->in_room ? obj->in_room : obj-> + carried_by->in_room, arg))) { extract_obj(vobj); } @@ -2026,8 +2026,8 @@ if ((victim = get_char_room(NULL, - (obj->in_room) ? obj->in_room : obj->carried_by-> - in_room, arg)) == NULL) + (obj->in_room) ? obj->in_room : obj-> + carried_by->in_room, arg)) == NULL) return; interpret(victim, argument); @@ -2119,8 +2119,8 @@ fAll = TRUE; else if ((victim = get_char_room(NULL, - obj->in_room ? obj->in_room : obj->carried_by-> - in_room, target)) == NULL) + obj->in_room ? obj->in_room : obj-> + carried_by->in_room, target)) == NULL) return; if (is_number(min)) @@ -2228,8 +2228,8 @@ if (!IS_NULLSTR(arg)) vch = get_char_room(NULL, - obj->in_room ? obj->in_room : obj->carried_by-> - in_room, arg); + obj->in_room ? obj->in_room : obj-> + carried_by->in_room, arg); argument = one_argument(argument, arg); if (!IS_NULLSTR(arg)) obj1 = @@ -2355,8 +2355,8 @@ } else if ((ch = get_char_room(NULL, - obj->in_room ? obj->in_room : obj->carried_by-> - in_room, target)) == NULL) + obj->in_room ? obj->in_room : obj-> + carried_by->in_room, target)) == NULL) return; if (!str_cmp(arg1, "none")) diff -ur src/mob_prog.c new/mob_prog.c --- src/mob_prog.c Thu Mar 27 02:17:55 2003 +++ new/mob_prog.c Wed Apr 9 23:26:58 2003 @@ -296,8 +296,8 @@ || (iFlag == 2 && IS_NPC(vch)) || (iFlag == 3 && IS_NPC(mob) && IS_NPC(vch) - && mob->pIndexData-> - vnum == + && mob-> + pIndexData->vnum == vch->pIndexData->vnum) || (iFlag == 4 && is_same_group(mob, vch))) && can_see(mob, vch)) @@ -1021,8 +1021,8 @@ else if (lval_obj != NULL && (lval_obj->in_room != NULL || lval_obj->carried_by != NULL)) lval = - lval_obj->in_room ? lval_obj->in_room-> - vnum : lval_obj->carried_by->in_room->vnum; + lval_obj->in_room ? lval_obj->in_room->vnum : lval_obj-> + carried_by->in_room->vnum; break; case CHK_SEX: if (lval_char != NULL) @@ -1331,8 +1331,8 @@ else if (lval_obj != NULL && (lval_obj->in_room != NULL || lval_obj->carried_by != NULL)) lval = - lval_obj->in_room ? lval_obj->in_room-> - vnum : lval_obj->carried_by->in_room->vnum; + lval_obj->in_room ? lval_obj->in_room->vnum : lval_obj-> + carried_by->in_room->vnum; break; case CHK_SEX: if (lval_char != NULL) @@ -1441,8 +1441,8 @@ case 'N': i = (ch != NULL && can_see(mob, - ch)) ? (IS_NPC(ch) ? ch-> - short_descr : ch->name) : someone; + ch)) ? (IS_NPC(ch) ? ch->short_descr : ch-> + name) : someone; break; case 't': i = someone; @@ -1455,8 +1455,8 @@ case 'T': i = (vch != NULL && can_see(mob, - vch)) ? (IS_NPC(vch) ? vch-> - short_descr : vch->name) : someone; + vch)) ? (IS_NPC(vch) ? vch->short_descr : vch-> + name) : someone; break; case 'r': if (rch == NULL) @@ -1473,8 +1473,8 @@ rch = get_random_char(mob, NULL, NULL); i = (rch != NULL && can_see(mob, - rch)) ? (IS_NPC(ch) ? ch-> - short_descr : ch->name) : someone; + rch)) ? (IS_NPC(ch) ? ch->short_descr : ch-> + name) : someone; break; case 'q': i = someone; @@ -1488,10 +1488,10 @@ i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? (IS_NPC(mob->mprog_target) ? - mob-> - mprog_target->short_descr : mob->mprog_target-> - name) : someone; + short_descr : mob-> + mprog_target->name) : + someone; break; case 'j': i = he_she[URANGE(0, mob->sex, 2)]; @@ -1513,7 +1513,9 @@ case 'X': i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? he_she[URANGE(0, - mob->mprog_target->sex, + mob-> + mprog_target-> + sex, 2)] : someone; break; @@ -1540,7 +1542,9 @@ case 'Y': i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? him_her[URANGE(0, - mob->mprog_target->sex, + mob-> + mprog_target-> + sex, 2)] : someone; break; @@ -1567,7 +1571,9 @@ case 'Z': i = (mob->mprog_target != NULL && can_see(mob, mob->mprog_target)) ? his_her[URANGE(0, - mob->mprog_target->sex, + mob-> + mprog_target-> + sex, 2)] : someones; break; @@ -1733,13 +1739,14 @@ case 'Q': i = (obj && obj->oprog_target != - NULL) ? (IS_NPC(obj->oprog_target) ? obj-> - oprog_target->short_descr : obj->oprog_target-> - name) : (room - && room->rprog_target != - NULL) ? (IS_NPC(room->rprog_target) ? room-> - rprog_target->short_descr : room-> - rprog_target->name) : someone; + NULL) ? (IS_NPC(obj->oprog_target) ? obj->oprog_target-> + short_descr : obj->oprog_target->name) : (room + && room-> + rprog_target + != + NULL) + ? (IS_NPC(room->rprog_target) ? room->rprog_target-> + short_descr : room->rprog_target->name) : someone; break; case 'j': bug("Obj/room received case 'j'", 0); @@ -1757,13 +1764,15 @@ case 'X': i = (obj && obj->oprog_target != NULL) ? he_she[URANGE(0, - obj->oprog_target->sex, - 2)] : (room - && - room->rprog_target - != - NULL) ? - he_she[URANGE(0, room->rprog_target->sex, 2)] : someone; + obj-> + oprog_target-> + sex, 2)] : (room + && + room-> + rprog_target + != + NULL) + ? he_she[URANGE(0, room->rprog_target->sex, 2)] : someone; break; case 'k': bug("received case 'k'.", 0); @@ -1785,13 +1794,15 @@ case 'Y': i = (obj && obj->oprog_target != NULL) ? him_her[URANGE(0, - obj->oprog_target->sex, - 2)] : (room - && - room->rprog_target - != - NULL) ? - him_her[URANGE(0, room->rprog_target->sex, 2)] : someone; + obj-> + oprog_target-> + sex, 2)] : (room + && + room-> + rprog_target + != + NULL) + ? him_her[URANGE(0, room->rprog_target->sex, 2)] : someone; break; case 'l': bug("received case 'l'.", 0); @@ -1813,13 +1824,15 @@ case 'Z': i = (obj && obj->oprog_target != NULL) ? his_her[URANGE(0, - obj->oprog_target->sex, - 2)] : (room - && - room->rprog_target - != - NULL) ? - his_her[URANGE(0, room->rprog_target->sex, 2)] : someones; + obj-> + oprog_target-> + sex, 2)] : (room + && + room-> + rprog_target + != + NULL) + ? his_her[URANGE(0, room->rprog_target->sex, 2)] : someones; break; case 'o': i = something; diff -ur src/nanny.c new/nanny.c --- src/nanny.c Thu Mar 27 02:17:55 2003 +++ new/nanny.c Wed Apr 9 23:26:58 2003 @@ -216,8 +216,8 @@ if (str_cmp (ch->name, - d_old->original ? d_old->original->name : d_old->character-> - name)) + d_old->original ? d_old->original->name : d_old-> + character->name)) continue; close_socket(d_old); diff -ur src/olc.c new/olc.c --- src/olc.c Thu Mar 27 02:17:55 2003 +++ new/olc.c Wed Apr 9 23:26:59 2003 @@ -1896,14 +1896,7 @@ return; } - pClan = clan_lookup(arg); - - if (!pClan || IS_NULLSTR(pClan->name)) - { - chprintln(ch, "That clan does not exist."); - return; - } - else if (!str_cmp(arg, "save")) + if (!str_cmp(arg, "save")) { save_clans(); chprintln(ch, "Clan database saved."); @@ -1920,6 +1913,11 @@ return; } + else if (!(pClan = clan_lookup(arg)) || IS_NULLSTR(pClan->name)) + { + chprintln(ch, "That clan does not exist."); + return; + } edit_start(ch, pClan, ED_CLAN); return; @@ -1942,14 +1940,7 @@ return; } - pCmd = command_lookup(arg); - - if (!pCmd || IS_NULLSTR(pCmd->name)) - { - chprintln(ch, "That command does not exist."); - return; - } - else if (!str_cmp(arg, "save")) + if (!str_cmp(arg, "save")) { save_commands(); chprintln(ch, "Command database saved."); @@ -1968,6 +1959,11 @@ return; } + else if (!(pCmd = command_lookup(arg)) || IS_NULLSTR(pCmd->name)) + { + chprintln(ch, "That command does not exist."); + return; + } edit_start(ch, pCmd, ED_CMD); @@ -2410,9 +2406,7 @@ RESET_DATA *reset; int iReset = 0; - pIndex--; - - if (pIndex == 0 || !room->reset_first) + if (!room->reset_first) { LINK(pReset, room->reset_first, room->reset_last, next, prev); return; @@ -2420,11 +2414,14 @@ for (reset = room->reset_first; reset; reset = reset->next) { - if (++iReset == pIndex || reset->next == NULL) + if (++iReset == pIndex) break; } - INSERT(pReset, reset, room->reset_first, next, prev); + if (reset) + INSERT(pReset, reset, room->reset_first, next, prev); + else + LINK(pReset, room->reset_first, room->reset_last, next, prev); return; } @@ -2585,7 +2582,8 @@ * -------------------------- */ { - if (flag_value(wear_loc_flags, arg4) == -1) + if (str_cmp(arg4, "none") + && flag_value(wear_loc_flags, arg4) == -1) { chprintln(ch, "Resets: '? wear-loc'"); return; @@ -2596,11 +2594,16 @@ return; } pReset->arg1 = atol(arg3); - pReset->arg3 = flag_value(wear_loc_flags, arg4); - if (pReset->arg3 == WEAR_NONE) + if (!str_cmp(arg4, "none")) + { + pReset->arg3 = WEAR_NONE; pReset->command = 'G'; + } else + { + pReset->arg3 = flag_value(wear_loc_flags, arg4); pReset->command = 'E'; + } } } add_reset(ch->in_room, pReset, atol(arg1)); diff -ur src/olc_act.c new/olc_act.c --- src/olc_act.c Thu Mar 27 02:17:55 2003 +++ new/olc_act.c Wed Apr 9 23:26:58 2003 @@ -820,9 +820,8 @@ #if 0 /* ROM OLC */ chprintlnf(ch, "Recall: [%5d] %s", pArea->recall, - get_room_index(pArea->recall) ? get_room_index(pArea-> - recall)->name : - "none"); + get_room_index(pArea->recall) ? get_room_index(pArea->recall)-> + name : "none"); #endif /* ROM */ chprintlnf(ch, "File: %s", pArea->file_name); @@ -2068,9 +2067,8 @@ "[v4] Weight Mult [%ld]", obj->value[0], flag_string(container_flags, obj->value[1]), get_obj_index(obj->value[2]) ? get_obj_index(obj->value - [2])-> - short_descr : "none", obj->value[2], obj->value[3], - obj->value[4]); + [2])->short_descr + : "none", obj->value[2], obj->value[3], obj->value[4]); break; case ITEM_DRINK_CON: diff -ur src/olc_cmd.c new/olc_cmd.c --- src/olc_cmd.c Thu Mar 27 02:17:55 2003 +++ new/olc_cmd.c Wed Apr 9 23:26:59 2003 @@ -139,7 +139,7 @@ if (!IS_NULLSTR(argument) && command_lookup(argument) == NULL) sprintf(buf, argument); else - sprintf(buf, "New Command%d", maxCommands + 1); + sprintf(buf, "NewCommand%d", maxCommands + 1); pCmd = new_command(); replace_string(pCmd->name, buf); diff -ur src/save.c new/save.c --- src/save.c Thu Mar 27 02:17:55 2003 +++ new/save.c Wed Apr 9 23:26:59 2003 @@ -377,11 +377,11 @@ fprintf(fp, "Name %s~\n", pet->name); fprintf(fp, "LogO %ld\n", current_time); - if (pet->short_descr != pet->pIndexData->short_descr) + if (str_cmp(pet->short_descr, pet->pIndexData->short_descr)) fprintf(fp, "ShD %s~\n", pet->short_descr); - if (pet->long_descr != pet->pIndexData->long_descr) + if (str_cmp(pet->long_descr, pet->pIndexData->long_descr)) fprintf(fp, "LnD %s~\n", pet->long_descr); - if (pet->description != pet->pIndexData->description) + if (str_cmp(pet->description, pet->pIndexData->description)) fprintf(fp, "Desc %s~\n", pet->description); if (pet->race != pet->pIndexData->race) fprintf(fp, "Race %s~\n", pet->race->name); @@ -486,11 +486,11 @@ /* these data are only used if they do not match the defaults */ - if (!ch || obj->name != obj->pIndexData->name) + if (!ch || str_cmp(obj->name, obj->pIndexData->name)) fprintf(fp, "Name %s~\n", obj->name); - if (!ch || obj->short_descr != obj->pIndexData->short_descr) + if (!ch || str_cmp(obj->short_descr, obj->pIndexData->short_descr)) fprintf(fp, "ShD %s~\n", obj->short_descr); - if (!ch || obj->description != obj->pIndexData->description) + if (!ch || str_cmp(obj->description, obj->pIndexData->description)) fprintf(fp, "Desc %s~\n", obj->description); if (!ch || obj->extra_flags != obj->pIndexData->extra_flags) fprintf(fp, "ExtF %s\n", fwrite_flags(obj->extra_flags)); @@ -574,6 +574,22 @@ return; } +void set_player_level(CHAR_DATA * ch, int Old, int New, int version) +{ + int diff = MAX_LEVEL - LEVEL_IMMORTAL; + int imm_level = Old - diff; + int mod = New - Old; + + if (ch->version >= version) + return; + + if (ch->level >= imm_level) + ch->level += mod; + if (ch->trust >= imm_level) + ch->trust += mod; + save_char_obj(ch); +} + void pload_default(CHAR_DATA * ch) { int stat, i, iClass; @@ -737,6 +753,14 @@ { ch->gold /= 100; } + + if (found) + /* Change this to set player levels when changing max level + The first number is the OLD max level, the second is the + NEW max level, and the third is the version that should be + in the pfile after the change. */ + set_player_level(ch, 0, 0, 0); + return found; } diff -ur src/tables.c new/tables.c --- src/tables.c Thu Mar 27 02:17:55 2003 +++ new/tables.c Wed Apr 9 23:26:59 2003 @@ -711,14 +711,14 @@ }; const struct flag_type position_flags[] = { - {"dead", POS_DEAD, FALSE}, + {"dead", POS_DEAD, TRUE}, {"mortal", POS_MORTAL, FALSE}, {"incap", POS_INCAP, FALSE}, {"stunned", POS_STUNNED, FALSE}, {"sleeping", POS_SLEEPING, TRUE}, {"resting", POS_RESTING, TRUE}, {"sitting", POS_SITTING, TRUE}, - {"fighting", POS_FIGHTING, FALSE}, + {"fighting", POS_FIGHTING, TRUE}, {"standing", POS_STANDING, TRUE}, {NULL, 0, 0} }; diff -ur src/tablesave.c new/tablesave.c --- src/tablesave.c Thu Mar 27 02:17:55 2003 +++ new/tablesave.c Wed Apr 9 23:26:59 2003 @@ -771,8 +771,8 @@ fprintf(fp, "%s\t\t", temp->field); for (i = 0; i < - (temp->argument ? (int) temp->argument : *(int *) temp-> - argument2); i++) + (temp->argument ? (int) temp-> + argument : *(int *) temp->argument2); i++) fprintf(fp, "%d ", pbool[i] == TRUE ? 1 : 0); fprintf(fp, "@\n"); break; diff -ur src/webserver.c new/webserver.c --- src/webserver.c Thu Mar 27 02:17:55 2003 +++ new/webserver.c Wed Apr 9 23:26:59 2003 @@ -1170,8 +1170,8 @@ else if (victim->in_room == victim->fighting->in_room) { strcat(buf, - IS_NPC(victim) ? victim->fighting->short_descr : victim-> - fighting->name); + IS_NPC(victim) ? victim->fighting-> + short_descr : victim->fighting->name); strcat(buf, "."); } else