mirror of
https://github.com/tbamud/tbamud.git
synced 2025-12-22 10:10:13 +01:00
[Nov 12 2007] - Rumble
Updated users command to fix GET_INVIS_LEV bug. Updated the drink command to work in rooms where the sector type should logically allow it. [Oct 04 2007] - Rumble Increased the size of a mail message from 4k to 8k. Updated remove_player so that the players command would not show phantom users when someone self-deletes. Updated sedit_rooms_menu to prevent a crash bug when trying to display a shop with rooms that have been removed. [Nov 01 2007] - Rumble Updated mag_objectmagic bug where action description was not being used correctly on scrolls. Increased the size of MAX_RAW_INPUT_LENGTH and PLR_DESC_LENGTH. [Oct 19 2007] - Rumble Fixed a few more 128 bit MOB_FLAGGED bugs. [Oct 17 2007] - Rumble Fixed loading of non-128 bit prefs in load_char. (thanks Ziz) [Oct 15 2007] - Rumble Removed some prototypes leftover from the old history command. (thanks Rhade)
This commit is contained in:
parent
0cf7b69493
commit
9107040d32
22 changed files with 108 additions and 104 deletions
16
changelog
16
changelog
|
|
@ -5,6 +5,22 @@ The Builder Academy
|
|||
builderacademy.net 9091
|
||||
|
||||
tbaMUD 3.54
|
||||
[Nov 12 2007] - Rumble
|
||||
Updated users command to fix GET_INVIS_LEV bug.
|
||||
Updated the drink command to work in rooms where the sector type should logically allow it.
|
||||
[Oct 04 2007] - Rumble
|
||||
Increased the size of a mail message from 4k to 8k.
|
||||
Updated remove_player so that the players command would not show phantom users when someone self-deletes.
|
||||
Updated sedit_rooms_menu to prevent a crash bug when trying to display a shop with rooms that have been removed.
|
||||
[Nov 01 2007] - Rumble
|
||||
Updated mag_objectmagic bug where action description was not being used correctly on scrolls.
|
||||
Increased the size of MAX_RAW_INPUT_LENGTH and PLR_DESC_LENGTH.
|
||||
[Oct 19 2007] - Rumble
|
||||
Fixed a few more 128 bit MOB_FLAGGED bugs.
|
||||
[Oct 17 2007] - Rumble
|
||||
Fixed loading of non-128 bit prefs in load_char. (thanks Ziz)
|
||||
[Oct 15 2007] - Rumble
|
||||
Removed some prototypes leftover from the old history command. (thanks Rhade)
|
||||
[Oct 13 2007] - Rumble
|
||||
Updated World, Help, News, Socials, and src for tbaMUD3.54rc.
|
||||
Fixed bug where toggling syslog enabled brief. (thanks Rhade)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
Greater Gods
|
||||
~~~~~~~~~~~~
|
||||
Zizazat
|
||||
|
||||
Gods
|
||||
~~~~
|
||||
|
|
|
|||
|
|
@ -198,20 +198,6 @@ reason why Kell is so successful. Myrama is truly marvelous!
|
|||
50 2500
|
||||
8 8 2
|
||||
E
|
||||
#29215
|
||||
herbalist shopkeeper~
|
||||
the Herbalist~
|
||||
The herbalist is here, reading to her plants.
|
||||
~
|
||||
The herbalist is an ancient woman, but she still seems spry and sharp-minded
|
||||
when it comes to plants. You've no doubt this woman is an expert in her field.
|
||||
|
||||
~
|
||||
188426 0 0 0 0 0 0 0 500 E
|
||||
23 13 -3 4d4+230 3d3+3
|
||||
230 52900
|
||||
8 8 2
|
||||
E
|
||||
#29216
|
||||
lawyer~
|
||||
the Lawyer~
|
||||
|
|
|
|||
|
|
@ -530,32 +530,6 @@ A small, quick, loyal beagle is here.
|
|||
8 8 0
|
||||
BareHandAttack: 4
|
||||
E
|
||||
#3093
|
||||
rottweiler pets~
|
||||
the rottweiler~
|
||||
A large, loyal rottweiler is here.
|
||||
~
|
||||
The rottweiler looks like a strong, fierce fighter.
|
||||
~
|
||||
16398 0 0 0 0 0 0 0 0 E
|
||||
3 19 8 0d0+30 1d2+0
|
||||
30 900
|
||||
8 8 0
|
||||
BareHandAttack: 4
|
||||
E
|
||||
#3094
|
||||
wolf pets~
|
||||
the wolf~
|
||||
A large, trained wolf is here.
|
||||
~
|
||||
The wolf looks like a strong, fearless fighter.
|
||||
~
|
||||
16398 0 0 0 0 0 0 0 0 E
|
||||
4 19 7 0d0+40 1d2+0
|
||||
40 1600
|
||||
8 8 0
|
||||
BareHandAttack: 4
|
||||
E
|
||||
#3095
|
||||
cryogenicist cryo~
|
||||
the cryogenicist~
|
||||
|
|
|
|||
|
|
@ -124,19 +124,6 @@ A guard is standing watch here.
|
|||
8 8 1
|
||||
BareHandAttack: 10
|
||||
E
|
||||
#709
|
||||
woodswoman~
|
||||
a woodswoman~
|
||||
A woodswoman is looking for a woodsman to nag.
|
||||
~
|
||||
She looks upset about something.
|
||||
~
|
||||
72 0 0 0 8192 0 0 0 0 E
|
||||
7 18 5 1d1+70 1d2+1
|
||||
70 4900
|
||||
8 8 2
|
||||
BareHandAttack: 8
|
||||
E
|
||||
#710
|
||||
messenger~
|
||||
a messenger~
|
||||
|
|
|
|||
|
|
@ -33,9 +33,6 @@ ACMD(do_page);
|
|||
ACMD(do_gen_comm);
|
||||
ACMD(do_qcomm);
|
||||
void handle_webster_file(void);
|
||||
ACMD(do_list_history);
|
||||
void new_hist_messg(struct descriptor_data *d, const char *msg);
|
||||
void free_hist_messg(struct descriptor_data *d);
|
||||
|
||||
static long last_webster_teller = -1L;
|
||||
|
||||
|
|
|
|||
|
|
@ -1419,7 +1419,7 @@ ACMD(do_users)
|
|||
continue;
|
||||
if (showclass && !(showclass & (1 << GET_CLASS(tch))))
|
||||
continue;
|
||||
if (GET_INVIS_LEV(ch) > GET_LEVEL(ch))
|
||||
if (GET_INVIS_LEV(tch) > GET_LEVEL(ch))
|
||||
continue;
|
||||
|
||||
if (d->original)
|
||||
|
|
@ -1967,8 +1967,8 @@ ACMD(do_toggle)
|
|||
}
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_1);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_2);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), (PRF_COLOR_1 * (tp & 1)));
|
||||
SET_BIT_AR(PRF_FLAGS(ch), (PRF_COLOR_2 * (tp & 2) >> 1));
|
||||
if (tp & 1) SET_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_1);
|
||||
if (tp & 2) SET_BIT_AR(PRF_FLAGS(ch), PRF_COLOR_2);
|
||||
|
||||
send_to_char(ch, "Your %scolor%s is now %s.\r\n", CCRED(ch, C_SPR), CCNRM(ch, C_OFF), types[tp]);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -825,9 +825,26 @@ ACMD(do_drink)
|
|||
return;
|
||||
|
||||
if (!*arg) {
|
||||
char buf[MAX_STRING_LENGTH];
|
||||
switch (SECT(IN_ROOM(ch))) {
|
||||
case SECT_WATER_SWIM:
|
||||
case SECT_WATER_NOSWIM:
|
||||
case SECT_UNDERWATER:
|
||||
if ((GET_COND(ch, HUNGER) > 20) && (GET_COND(ch, THIRST) > 0)) {
|
||||
send_to_char(ch, "Your stomach can't contain anymore!\r\n");
|
||||
}
|
||||
snprintf(buf, sizeof(buf), "$n takes a refreshing drink.");
|
||||
act(buf, TRUE, ch, 0, 0, TO_ROOM);
|
||||
send_to_char(ch, "You take a refreshing drink.\r\n");
|
||||
gain_condition(ch, THIRST, 1);
|
||||
if (GET_COND(ch, THIRST) > 20)
|
||||
send_to_char(ch, "You don't feel thirsty any more.\r\n");
|
||||
return;
|
||||
default:
|
||||
send_to_char(ch, "Drink from what?\r\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!(temp = get_obj_in_list_vis(ch, arg, NULL, ch->carrying))) {
|
||||
if (!(temp = get_obj_in_list_vis(ch, arg, NULL, world[IN_ROOM(ch)].contents))) {
|
||||
send_to_char(ch, "You can't find it!\r\n");
|
||||
|
|
|
|||
|
|
@ -202,9 +202,8 @@ ACMD(do_steal)
|
|||
if (!AWAKE(vict)) /* Easier to steal from sleeping people. */
|
||||
percent -= 50;
|
||||
|
||||
/* NO NO With Imp's and Shopkeepers, and if player thieving is not allowed */
|
||||
if (GET_LEVEL(vict) >= LVL_IMMORT || pcsteal ||
|
||||
GET_MOB_SPEC(vict) == shop_keeper)
|
||||
/* No stealing if not allowed. If it is no stealing from Imm's or Shopkeepers. */
|
||||
if (GET_LEVEL(vict) >= LVL_IMMORT || pcsteal || GET_MOB_SPEC(vict) == shop_keeper)
|
||||
percent = 101; /* Failure */
|
||||
|
||||
if (str_cmp(obj_name, "coins") && str_cmp(obj_name, "gold")) {
|
||||
|
|
|
|||
|
|
@ -1317,35 +1317,43 @@ ACMD(do_return)
|
|||
|
||||
ACMD(do_load)
|
||||
{
|
||||
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
||||
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH], buf3[MAX_INPUT_LENGTH];
|
||||
int i=0, n=1;
|
||||
|
||||
two_arguments(argument, buf, buf2);
|
||||
one_argument(two_arguments(argument, buf, buf2), buf3);
|
||||
|
||||
if (!*buf || !*buf2 || !isdigit(*buf2)) {
|
||||
send_to_char(ch, "Usage: load { obj | mob } <number>\r\n");
|
||||
send_to_char(ch, "Usage: load < obj | mob > <vnum> <number>\r\n");
|
||||
return;
|
||||
}
|
||||
if (!is_number(buf2)) {
|
||||
if (!is_number(buf2) || !is_number(buf3)) {
|
||||
send_to_char(ch, "That is not a number.\r\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (atoi(buf3) > 0 ) {
|
||||
n = atoi(buf3);
|
||||
} else {
|
||||
n = 1;
|
||||
}
|
||||
|
||||
if (is_abbrev(buf, "mob")) {
|
||||
struct char_data *mob;
|
||||
struct char_data *mob=NULL;
|
||||
mob_rnum r_num;
|
||||
|
||||
if ((r_num = real_mobile(atoi(buf2))) == NOBODY) {
|
||||
send_to_char(ch, "There is no monster with that number.\r\n");
|
||||
return;
|
||||
}
|
||||
for (i=0; i < n; i++) {
|
||||
mob = read_mobile(r_num, REAL);
|
||||
char_to_room(mob, IN_ROOM(ch));
|
||||
|
||||
act("$n makes a quaint, magical gesture with one hand.", TRUE, ch,
|
||||
0, 0, TO_ROOM);
|
||||
act("$n makes a quaint, magical gesture with one hand.", TRUE, ch, 0, 0, TO_ROOM);
|
||||
act("$n has created $N!", FALSE, ch, 0, mob, TO_ROOM);
|
||||
act("You create $N.", FALSE, ch, 0, mob, TO_CHAR);
|
||||
load_mtrigger(mob);
|
||||
}
|
||||
} else if (is_abbrev(buf, "obj")) {
|
||||
struct obj_data *obj;
|
||||
obj_rnum r_num;
|
||||
|
|
@ -1354,6 +1362,7 @@ ACMD(do_load)
|
|||
send_to_char(ch, "There is no object with that number.\r\n");
|
||||
return;
|
||||
}
|
||||
for (i=0; i < n; i++) {
|
||||
obj = read_object(r_num, REAL);
|
||||
if (CONFIG_LOAD_INVENTORY)
|
||||
obj_to_char(obj, ch);
|
||||
|
|
@ -1363,6 +1372,7 @@ ACMD(do_load)
|
|||
act("$n has created $p!", FALSE, ch, obj, 0, TO_ROOM);
|
||||
act("You create $p.", FALSE, ch, obj, 0, TO_CHAR);
|
||||
load_otrigger(obj);
|
||||
}
|
||||
} else
|
||||
send_to_char(ch, "That'll have to be either 'obj' or 'mob'.\r\n");
|
||||
}
|
||||
|
|
|
|||
3
src/db.c
3
src/db.c
|
|
@ -3233,7 +3233,7 @@ int check_object_spell_number(struct obj_data *obj, int val)
|
|||
int error = FALSE;
|
||||
const char *spellname;
|
||||
|
||||
if (GET_OBJ_VAL(obj, val) == -1) /* i.e.: no spell */
|
||||
if (GET_OBJ_VAL(obj, val) == -1 || GET_OBJ_VAL(obj, val) == 0) /* no spell */
|
||||
return (error);
|
||||
|
||||
/* Check for negative spells, spells beyond the top define, and any spell
|
||||
|
|
@ -3428,6 +3428,7 @@ void load_config( void )
|
|||
snprintf(buf, sizeof(buf), "%s/%s", DFLT_DIR, CONFIG_CONFFILE);
|
||||
if ( !(fl = fopen(CONFIG_CONFFILE, "r")) && !(fl = fopen(buf, "r")) ) {
|
||||
snprintf(buf, sizeof(buf), "No %s file, using defaults", CONFIG_CONFFILE);
|
||||
perror(buf);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1113,6 +1113,19 @@ o->contains));
|
|||
strcpy(str, "0");
|
||||
}
|
||||
break;
|
||||
case 'e':
|
||||
if (!str_cmp(field, "extra")) {
|
||||
if (subfield && *subfield) {
|
||||
if (check_flags_by_name_ar(GET_OBJ_EXTRA(o), NUM_ITEM_FLAGS, subfield, extra_bits) > 0)
|
||||
snprintf(str, slen, "1");
|
||||
else
|
||||
snprintf(str, slen, "0");
|
||||
} else
|
||||
snprintf(str, slen, "0");
|
||||
} else {
|
||||
sprintbitarray(GET_OBJ_EXTRA(o), extra_bits, EF_ARRAY_MAX, str);
|
||||
}
|
||||
break;
|
||||
case 'h':
|
||||
/* thanks to Jamie Nelson (Mordecai of 4 Dimensions MUD) */
|
||||
if (!str_cmp(field, "has_in")) {
|
||||
|
|
|
|||
|
|
@ -1005,7 +1005,7 @@ void perform_violence(void)
|
|||
/* should master auto-assist followers? */
|
||||
if (ch->master && PRF_FLAGGED(ch->master, PRF_AUTOASSIST) &&
|
||||
FIGHTING(ch) && !FIGHTING(ch->master) &&
|
||||
(IN_ROOM(ch->master) == IN_ROOM(ch)))
|
||||
(IN_ROOM(ch->master) == IN_ROOM(ch)) && !IS_NPC(ch->master))
|
||||
do_assist(ch->master, GET_NAME(ch), 0, 0);
|
||||
|
||||
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
|
||||
|
|
|
|||
|
|
@ -1222,12 +1222,7 @@ int perform_dupe_check(struct descriptor_data *d)
|
|||
case RECON:
|
||||
write_to_output(d, "Reconnecting.\r\n");
|
||||
act("$n has reconnected.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
|
||||
if (GET_INVIS_LEV(d->character))
|
||||
mudlog(BRF, MAX(LVL_IMMORT, GET_INVIS_LEV(d->character)), TRUE, "%s has reconnected. (invis %d)", GET_NAME(d->character), GET_INVIS_LEV(d->character));
|
||||
else
|
||||
mudlog(BRF, LVL_IMMORT, TRUE, "%s has reconnected.", GET_NAME(d->character));
|
||||
|
||||
mudlog(NRM, MAX(0, GET_INVIS_LEV(d->character)), TRUE, "%s [%s] has reconnected.", GET_NAME(d->character), d->host);
|
||||
if (has_mail(GET_IDNUM(d->character)))
|
||||
write_to_output(d, "You have mail waiting.\r\n");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
#define STAMP_PRICE 150
|
||||
|
||||
/* Maximum size of mail in bytes (arbitrary) */
|
||||
#define MAX_MAIL_SIZE 4096
|
||||
#define MAX_MAIL_SIZE 8192
|
||||
|
||||
/* size of mail file allocation blocks */
|
||||
#define BLOCK_SIZE 100
|
||||
|
|
|
|||
|
|
@ -447,7 +447,7 @@ void medit_parse(struct descriptor_data *d, char *arg)
|
|||
if (OLC_MODE(d) > MEDIT_NUMERICAL_RESPONSE) {
|
||||
i = atoi(arg);
|
||||
if (!*arg || (!isdigit(arg[0]) && ((*arg == '-') && !isdigit(arg[1])))) {
|
||||
write_to_output(d, "Field must be numerical, try again : ");
|
||||
write_to_output(d, "Try again : ");
|
||||
return;
|
||||
}
|
||||
} else { /* String response. */
|
||||
|
|
|
|||
|
|
@ -402,7 +402,7 @@ void page_string(struct descriptor_data *d, char *str, int keep_internal)
|
|||
if (!str || !*str)
|
||||
return;
|
||||
|
||||
if ((GET_PAGE_LENGTH(d->character) < 5 || GET_PAGE_LENGTH(d->character) > 254))
|
||||
if ((GET_PAGE_LENGTH(d->character) < 5 || GET_PAGE_LENGTH(d->character) > 255))
|
||||
GET_PAGE_LENGTH(d->character) = PAGE_LENGTH;
|
||||
d->showstr_count = count_pages(str, d->character);
|
||||
CREATE(d->showstr_vector, char *, d->showstr_count);
|
||||
|
|
|
|||
|
|
@ -374,12 +374,14 @@ int load_char(const char *name, struct char_data *ch)
|
|||
else if (!strcmp(tag, "Plyd")) ch->player.time.played = atoi(line);
|
||||
else if (!strcmp(tag, "PfIn")) POOFIN(ch) = strdup(line);
|
||||
else if (!strcmp(tag, "PfOt")) POOFOUT(ch) = strdup(line);
|
||||
else if (!strcmp(tag, "Pref"))
|
||||
else if (!strcmp(tag, "Pref")) {
|
||||
if (sscanf(line, "%s %s %s %s", f1, f2, f3, f4) == 4) {
|
||||
PRF_FLAGS(ch)[0] = asciiflag_conv(f1);
|
||||
PRF_FLAGS(ch)[1] = asciiflag_conv(f2);
|
||||
PRF_FLAGS(ch)[2] = asciiflag_conv(f3);
|
||||
PRF_FLAGS(ch)[3] = asciiflag_conv(f4);
|
||||
} else
|
||||
PRF_FLAGS(ch)[0] = asciiflag_conv(f1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -705,6 +707,9 @@ void remove_player(int pfilepos)
|
|||
if (!*player_table[pfilepos].name)
|
||||
return;
|
||||
|
||||
/* Update top_of_p_table. */
|
||||
top_of_p_table -= 1;
|
||||
|
||||
/* Unlink all player-owned files */
|
||||
for (i = 0; i < MAX_FILES; i++) {
|
||||
if (get_filename(fname, sizeof(fname), i, player_table[pfilepos].name))
|
||||
|
|
|
|||
|
|
@ -246,15 +246,18 @@ void sedit_products_menu(struct descriptor_data *d)
|
|||
void sedit_compact_rooms_menu(struct descriptor_data *d)
|
||||
{
|
||||
struct shop_data *shop;
|
||||
int i, count = 0;
|
||||
int i;
|
||||
|
||||
shop = OLC_SHOP(d);
|
||||
get_char_colors(d->character);
|
||||
|
||||
clear_screen(d);
|
||||
for (i = 0; S_ROOM(shop, i) != NOWHERE; i++) {
|
||||
write_to_output(d, "%2d - [%s%5d%s] | %s", i, cyn, S_ROOM(shop, i), nrm,
|
||||
!(++count % 5) ? "\r\n" : "");
|
||||
if (real_room(S_ROOM(shop, i)) != NOWHERE) {
|
||||
write_to_output(d, "%2d - [@c%5d@n] - @y%s@n\r\n", i, S_ROOM(shop, i), world[real_room(S_ROOM(shop, i))].name);
|
||||
} else {
|
||||
write_to_output(d, "%2d - [@R!Removed Room!@n]\r\n", i);
|
||||
}
|
||||
}
|
||||
write_to_output(d, "\r\n"
|
||||
"%sA%s) Add a new room.\r\n"
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ int evaluate_expression(struct obj_data *obj, char *expr)
|
|||
name[ptr - end] = '\0';
|
||||
for (eindex = 0; *extra_bits[eindex] != '\n'; eindex++)
|
||||
if (!str_cmp(name, extra_bits[eindex])) {
|
||||
push(&vals, OBJ_FLAGGED(obj, 1 << eindex));
|
||||
push(&vals, OBJ_FLAGGED(obj, eindex));
|
||||
break;
|
||||
}
|
||||
if (*extra_bits[eindex] == '\n')
|
||||
|
|
|
|||
|
|
@ -386,7 +386,7 @@ void mag_objectmagic(struct char_data *ch, struct obj_data *obj,
|
|||
|
||||
act("You recite $p which dissolves.", TRUE, ch, obj, 0, TO_CHAR);
|
||||
if (obj->action_description)
|
||||
act(obj->action_description, FALSE, ch, obj, NULL, TO_ROOM);
|
||||
act(obj->action_description, FALSE, ch, obj, tch, TO_ROOM);
|
||||
else
|
||||
act("$n recites $p.", FALSE, ch, obj, NULL, TO_ROOM);
|
||||
|
||||
|
|
|
|||
|
|
@ -485,14 +485,14 @@
|
|||
#define HISTORY_SIZE 5 /* Keep last 5 commands. */
|
||||
#define MAX_STRING_LENGTH 49152
|
||||
#define MAX_INPUT_LENGTH 512 /* Max length per *line* of input */
|
||||
#define MAX_RAW_INPUT_LENGTH 512 /* Max size of *raw* input */
|
||||
#define MAX_RAW_INPUT_LENGTH 1024 /* Max size of *raw* input */
|
||||
#define MAX_MESSAGES 60
|
||||
#define MAX_NAME_LENGTH 20
|
||||
/* ** MAX_PWD_LENGTH changed from 10 to 30 for ascii test - Sam ** */
|
||||
#define MAX_PWD_LENGTH 30
|
||||
#define MAX_TITLE_LENGTH 80
|
||||
#define HOST_LENGTH 40
|
||||
#define PLR_DESC_LENGTH 512
|
||||
#define PLR_DESC_LENGTH 2048
|
||||
#define MAX_SKILLS 200
|
||||
#define MAX_AFFECT 32
|
||||
#define MAX_OBJ_AFFECT 6 /* Used in obj_file_elem */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue