diff --git a/changelog b/changelog index ea2e668..cc70618 100644 --- a/changelog +++ b/changelog @@ -35,6 +35,17 @@ export (QQ's a zone into a tarball) Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist) (lots of major bugfixes too) @ +tbaMUD 3.61 +[Oct 08 2009] - Rumble + Fixed do_purge to allow targetting of multiple objects of the same name. i.e. 2.knife. (thanks Drefs) +[Oct 07 2009] - Rumble + Added CAN_SEE_IN_DARK and AFF_BLIND checks in do_automap. (thanks Frenze) +[Oct 06 2009] - Rumble + Fixed do_cast to allow targetting of multiple objects of the same name. i.e. 2.knife. (thanks Drefs) +[Oct 04 2009] - Rumble + Fixed a bug on filling unlimited containers where it doesn't update weight. (thanks Drefs) +[Oct 02 2009] - Rumble + Fixed buildwalk so it does not require the first room to exist. (thanks Zizazat) tbaMUD 3.6 [Aug 29 2009] - Rumble Removed unused prototype log_death_trap in utils.h (thanks Xiuhtecuhtli) diff --git a/src/act.item.c b/src/act.item.c index 761fe15..bb7afbb 100644 --- a/src/act.item.c +++ b/src/act.item.c @@ -1145,9 +1145,10 @@ ACMD(do_pour) GET_OBJ_VAL(from_obj, 3) = 0; } } - else + else { GET_OBJ_VAL(to_obj, 1) = GET_OBJ_VAL(to_obj, 0); - + amount = GET_OBJ_VAL(to_obj, 0); + } /* Poisoned? */ GET_OBJ_VAL(to_obj, 3) = (GET_OBJ_VAL(to_obj, 3) || GET_OBJ_VAL(from_obj, 3)) ; diff --git a/src/act.wizard.c b/src/act.wizard.c index 6d6c0b9..25d3ad2 100644 --- a/src/act.wizard.c +++ b/src/act.wizard.c @@ -1394,15 +1394,18 @@ ACMD(do_vstat) ACMD(do_purge) { char buf[MAX_INPUT_LENGTH]; + char *t; struct char_data *vict; struct obj_data *obj; + int number; one_argument(argument, buf); /* argument supplied. destroy single object or char */ if (*buf) { - if ((vict = get_char_vis(ch, buf, NULL, FIND_CHAR_ROOM)) != NULL) { - if (!IS_NPC(vict) && (GET_LEVEL(ch) <= GET_LEVEL(vict))) { + t = buf; + number = get_number(&t); + if ((vict = get_char_vis(ch, buf, &number, FIND_CHAR_ROOM)) != NULL) { if (!IS_NPC(vict) && (GET_LEVEL(ch) <= GET_LEVEL(vict))) { send_to_char(ch, "You can't purge %s!\r\n", HMHR(vict)); return; } @@ -1417,7 +1420,7 @@ ACMD(do_purge) } } extract_char(vict); - } else if ((obj = get_obj_in_list_vis(ch, buf, NULL, world[IN_ROOM(ch)].contents)) != NULL) { + } else if ((obj = get_obj_in_list_vis(ch, buf, &number, world[IN_ROOM(ch)].contents)) != NULL) { act("$n destroys $p.", FALSE, ch, obj, 0, TO_ROOM); extract_obj(obj); } else { diff --git a/src/asciimap.c b/src/asciimap.c index fbeaa55..b2b625a 100644 --- a/src/asciimap.c +++ b/src/asciimap.c @@ -535,6 +535,13 @@ ACMD(do_map) { send_to_char(ch, "Sorry, the map is disabled!\r\n"); return; } + if (IS_DARK(IN_ROOM(ch)) && !CAN_SEE_IN_DARK(ch)) { + send_to_char(ch, "It is too dark to see the map.\r\n"); + return; + } else if (AFF_FLAGGED(ch, AFF_BLIND) && GET_LEVEL(ch) < LVL_IMMORT) { + send_to_char(ch, "You can't see the map while blind!\r\n"); + return; + } perform_map(ch, argument, ROOM_FLAGGED(IN_ROOM(ch), ROOM_WORLDMAP) ? 1 : 0 ); } diff --git a/src/oasis_copy.c b/src/oasis_copy.c index 1726a8d..751c68e 100644 --- a/src/oasis_copy.c +++ b/src/oasis_copy.c @@ -295,7 +295,7 @@ static room_vnum redit_find_new_vnum(zone_rnum zone) room_rnum rnum = real_room(vnum); if (rnum == NOWHERE) - return NOWHERE; + return vnum; for(;;) { if (vnum > zone_table[zone].top) diff --git a/src/spell_parser.c b/src/spell_parser.c index 0eba80c..16041a7 100644 --- a/src/spell_parser.c +++ b/src/spell_parser.c @@ -489,7 +489,7 @@ ACMD(do_cast) struct char_data *tch = NULL; struct obj_data *tobj = NULL; char *s, *t; - int mana, spellnum, i, target = 0; + int number, mana, spellnum, i, target = 0; if (IS_NPC(ch)) return; @@ -539,16 +539,17 @@ ACMD(do_cast) if (IS_SET(SINFO.targets, TAR_IGNORE)) { target = TRUE; } else if (t != NULL && *t) { + number = get_number(&t); if (!target && (IS_SET(SINFO.targets, TAR_CHAR_ROOM))) { - if ((tch = get_char_vis(ch, t, NULL, FIND_CHAR_ROOM)) != NULL) + if ((tch = get_char_vis(ch, t, &number, FIND_CHAR_ROOM)) != NULL) target = TRUE; } if (!target && IS_SET(SINFO.targets, TAR_CHAR_WORLD)) - if ((tch = get_char_vis(ch, t, NULL, FIND_CHAR_WORLD)) != NULL) + if ((tch = get_char_vis(ch, t, &number, FIND_CHAR_WORLD)) != NULL) target = TRUE; if (!target && IS_SET(SINFO.targets, TAR_OBJ_INV)) - if ((tobj = get_obj_in_list_vis(ch, t, NULL, ch->carrying)) != NULL) + if ((tobj = get_obj_in_list_vis(ch, t, &number, ch->carrying)) != NULL) target = TRUE; if (!target && IS_SET(SINFO.targets, TAR_OBJ_EQUIP)) { @@ -559,11 +560,11 @@ ACMD(do_cast) } } if (!target && IS_SET(SINFO.targets, TAR_OBJ_ROOM)) - if ((tobj = get_obj_in_list_vis(ch, t, NULL, world[IN_ROOM(ch)].contents)) != NULL) + if ((tobj = get_obj_in_list_vis(ch, t, &number, world[IN_ROOM(ch)].contents)) != NULL) target = TRUE; if (!target && IS_SET(SINFO.targets, TAR_OBJ_WORLD)) - if ((tobj = get_obj_vis(ch, t, NULL)) != NULL) + if ((tobj = get_obj_vis(ch, t, &number)) != NULL) target = TRUE; } else { /* if target string is empty */