mirror of
https://github.com/tbamud/tbamud.git
synced 2026-01-29 12:26:10 +01:00
128 bits! --Rumble
This commit is contained in:
parent
3282b8fdc9
commit
be3a023fcd
559 changed files with 305718 additions and 304868 deletions
|
|
@ -146,7 +146,7 @@ int is_tell_ok(struct char_data *ch, struct char_data *vict)
|
|||
return (FALSE);
|
||||
}
|
||||
|
||||
/* Yes, do_tell probably could be combined with whisper and ask, but
|
||||
/* Yes, do_tell probably could be combined with whisper and ask, but it is
|
||||
* called frequently, and should IMHO be kept as tight as possible. */
|
||||
ACMD(do_tell)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -485,7 +485,7 @@ void look_at_room(struct char_data *ch, int ignore_brief)
|
|||
if (!IS_NPC(ch) && PRF_FLAGGED(ch, PRF_SHOWVNUMS)) {
|
||||
char buf[MAX_STRING_LENGTH];
|
||||
|
||||
sprintbit(ROOM_FLAGS(IN_ROOM(ch)), room_bits, buf, sizeof(buf));
|
||||
sprintbitarray(ROOM_FLAGS(IN_ROOM(ch)), room_bits, RF_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "[%5d] ", GET_ROOM_VNUM(IN_ROOM(ch)));
|
||||
|
||||
send_to_char(ch, "%s%s [ %s]",
|
||||
|
|
@ -1949,8 +1949,11 @@ ACMD(do_toggle)
|
|||
send_to_char(ch, "Usage: toggle color { Off | Normal | On }\r\n");
|
||||
return;
|
||||
}
|
||||
REMOVE_BIT(PRF_FLAGS(ch), PRF_COLOR_1 | PRF_COLOR_2);
|
||||
SET_BIT(PRF_FLAGS(ch), (PRF_COLOR_1 * (tp & 1)) | (PRF_COLOR_2 * (tp & 2) >> 1));
|
||||
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));
|
||||
|
||||
send_to_char(ch, "Your %scolor%s is now %s.\r\n", CCRED(ch, C_SPR), CCNRM(ch, C_OFF), types[tp]);
|
||||
return;
|
||||
case SCMD_SYSLOG:
|
||||
|
|
@ -1963,8 +1966,11 @@ ACMD(do_toggle)
|
|||
send_to_char(ch, "Usage: toggle syslog { Off | Brief | Normal | On }\r\n");
|
||||
return;
|
||||
}
|
||||
REMOVE_BIT(PRF_FLAGS(ch), PRF_LOG1 | PRF_LOG2);
|
||||
SET_BIT(PRF_FLAGS(ch), (PRF_LOG1 * (tp & 1)) | (PRF_LOG2 * (tp & 2) >> 1));
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_LOG1);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_LOG2);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), (PRF_LOG1 * (tp & 1)));
|
||||
SET_BIT_AR(PRF_FLAGS(ch), (PRF_LOG2 * (tp & 2) >> 1));
|
||||
|
||||
send_to_char(ch, "Your syslog is now %s.\r\n", types[tp]);
|
||||
return;
|
||||
case SCMD_SLOWNS:
|
||||
|
|
@ -2035,13 +2041,13 @@ ACMD(do_toggle)
|
|||
break;
|
||||
default:
|
||||
if (!*arg2) {
|
||||
TOGGLE_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||
TOGGLE_BIT_AR(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||
result = (PRF_FLAGGED(ch, tog_messages[toggle].toggle));
|
||||
} else if (!strcmp(arg2, "on")) {
|
||||
SET_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||
result = 1;
|
||||
} else if (!strcmp(arg2, "off")) {
|
||||
REMOVE_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||
} else {
|
||||
send_to_char(ch, "Value for %s must either be 'on' or 'off'.\r\n", tog_messages[toggle].command);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ void perform_put(struct char_data *ch, struct obj_data *obj, struct obj_data *co
|
|||
|
||||
/* Yes, I realize this is strange until we have auto-equip on rent. -gg */
|
||||
if (OBJ_FLAGGED(obj, ITEM_NODROP) && !OBJ_FLAGGED(cont, ITEM_NODROP)) {
|
||||
SET_BIT(GET_OBJ_EXTRA(cont), ITEM_NODROP);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(cont), ITEM_NODROP);
|
||||
act("You get a strange feeling as you put $p in $P.", FALSE,
|
||||
ch, obj, cont, TO_CHAR);
|
||||
} else
|
||||
|
|
|
|||
|
|
@ -762,7 +762,7 @@ ACMD(do_follow)
|
|||
}
|
||||
if (ch->master)
|
||||
stop_follower(ch);
|
||||
REMOVE_BIT(AFF_FLAGS(ch), AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), AFF_GROUP);
|
||||
add_follower(ch, leader);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -154,14 +154,14 @@ ACMD(do_hide)
|
|||
send_to_char(ch, "You attempt to hide yourself.\r\n");
|
||||
|
||||
if (AFF_FLAGGED(ch, AFF_HIDE))
|
||||
REMOVE_BIT(AFF_FLAGS(ch), AFF_HIDE);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), AFF_HIDE);
|
||||
|
||||
percent = rand_number(1, 101); /* 101% is a complete failure */
|
||||
|
||||
if (percent > GET_SKILL(ch, SKILL_HIDE) + dex_app_skill[GET_DEX(ch)].hide)
|
||||
return;
|
||||
|
||||
SET_BIT(AFF_FLAGS(ch), AFF_HIDE);
|
||||
SET_BIT_AR(AFF_FLAGS(ch), AFF_HIDE);
|
||||
}
|
||||
|
||||
ACMD(do_steal)
|
||||
|
|
@ -341,7 +341,7 @@ int perform_group(struct char_data *ch, struct char_data *vict)
|
|||
if (AFF_FLAGGED(vict, AFF_GROUP) || !CAN_SEE(ch, vict))
|
||||
return (0);
|
||||
|
||||
SET_BIT(AFF_FLAGS(vict), AFF_GROUP);
|
||||
SET_BIT_AR(AFF_FLAGS(vict), AFF_GROUP);
|
||||
if (ch != vict)
|
||||
act("$N is now a member of your group.", FALSE, ch, 0, vict, TO_CHAR);
|
||||
act("You are now a member of $n's group.", FALSE, ch, 0, vict, TO_VICT);
|
||||
|
|
@ -422,7 +422,7 @@ ACMD(do_group)
|
|||
act("$N is no longer a member of your group.", FALSE, ch, 0, vict, TO_CHAR);
|
||||
act("You have been kicked out of $n's group!", FALSE, ch, 0, vict, TO_VICT);
|
||||
act("$N has been kicked out of $n's group!", FALSE, ch, 0, vict, TO_NOTVICT);
|
||||
REMOVE_BIT(AFF_FLAGS(vict), AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(vict), AFF_GROUP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -444,14 +444,14 @@ ACMD(do_ungroup)
|
|||
for (f = ch->followers; f; f = next_fol) {
|
||||
next_fol = f->next;
|
||||
if (AFF_FLAGGED(f->follower, AFF_GROUP)) {
|
||||
REMOVE_BIT(AFF_FLAGS(f->follower), AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(f->follower), AFF_GROUP);
|
||||
act("$N has disbanded the group.", TRUE, f->follower, NULL, ch, TO_CHAR);
|
||||
if (!AFF_FLAGGED(f->follower, AFF_CHARM))
|
||||
stop_follower(f->follower);
|
||||
}
|
||||
}
|
||||
|
||||
REMOVE_BIT(AFF_FLAGS(ch), AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), AFF_GROUP);
|
||||
send_to_char(ch, "You disband the group.\r\n");
|
||||
return;
|
||||
}
|
||||
|
|
@ -469,7 +469,7 @@ ACMD(do_ungroup)
|
|||
return;
|
||||
}
|
||||
|
||||
REMOVE_BIT(AFF_FLAGS(tch), AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(tch), AFF_GROUP);
|
||||
|
||||
act("$N is no longer a member of your group.", FALSE, ch, 0, tch, TO_CHAR);
|
||||
act("You have been kicked out of $n's group!", FALSE, ch, 0, tch, TO_VICT);
|
||||
|
|
@ -663,28 +663,28 @@ ACMD(do_display)
|
|||
}
|
||||
|
||||
if (!str_cmp(argument, "auto")) {
|
||||
TOGGLE_BIT(PRF_FLAGS(ch), PRF_DISPAUTO);
|
||||
TOGGLE_BIT_AR(PRF_FLAGS(ch), PRF_DISPAUTO);
|
||||
send_to_char(ch, "Auto prompt %sabled.\r\n", PRF_FLAGGED(ch, PRF_DISPAUTO) ? "en" : "dis");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!str_cmp(argument, "on") || !str_cmp(argument, "all"))
|
||||
SET_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE);
|
||||
else if (!str_cmp(argument, "off") || !str_cmp(argument, "none"))
|
||||
REMOVE_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE);
|
||||
else {
|
||||
REMOVE_BIT(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(ch), PRF_DISPHP | PRF_DISPMANA | PRF_DISPMOVE);
|
||||
|
||||
for (i = 0; i < strlen(argument); i++) {
|
||||
switch (LOWER(argument[i])) {
|
||||
case 'h':
|
||||
SET_BIT(PRF_FLAGS(ch), PRF_DISPHP);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), PRF_DISPHP);
|
||||
break;
|
||||
case 'm':
|
||||
SET_BIT(PRF_FLAGS(ch), PRF_DISPMANA);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), PRF_DISPMANA);
|
||||
break;
|
||||
case 'v':
|
||||
SET_BIT(PRF_FLAGS(ch), PRF_DISPMOVE);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), PRF_DISPMOVE);
|
||||
break;
|
||||
default:
|
||||
send_to_char(ch, "Usage: prompt { { H | M | V } | all | auto | none }\r\n");
|
||||
|
|
@ -763,7 +763,6 @@ ACMD(do_gen_write)
|
|||
|
||||
#define TOG_OFF 0
|
||||
#define TOG_ON 1
|
||||
#define PRF_TOG_CHK(ch,flag) ((TOGGLE_BIT(PRF_FLAGS(ch), (flag))) & (flag))
|
||||
ACMD(do_gen_tog)
|
||||
{
|
||||
long result;
|
||||
|
|
|
|||
|
|
@ -565,7 +565,7 @@ void do_stat_room(struct char_data *ch, struct room_data *rm)
|
|||
zone_table[rm->zone].number, CCGRN(ch, C_NRM), rm->number,
|
||||
CCNRM(ch, C_NRM), IN_ROOM(ch), (long) rm->number + ROOM_ID_BASE, buf2);
|
||||
|
||||
sprintbit(rm->room_flags, room_bits, buf2, sizeof(buf2));
|
||||
sprintbitarray(rm->room_flags, room_bits, RF_ARRAY_MAX, buf2);
|
||||
send_to_char(ch, "SpecProc: %s, Flags: %s\r\n", rm->func == NULL ? "None" : "Exists", buf2);
|
||||
|
||||
send_to_char(ch, "Description:\r\n%s", rm->description ? rm->description : " None.\r\n");
|
||||
|
|
@ -671,13 +671,13 @@ void do_stat_object(struct char_data *ch, struct obj_data *j)
|
|||
send_to_char(ch, "%s\r\n", CCNRM(ch, C_NRM));
|
||||
}
|
||||
|
||||
sprintbit(GET_OBJ_WEAR(j), wear_bits, buf, sizeof(buf));
|
||||
sprintbitarray(GET_OBJ_WEAR(j), wear_bits, TW_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "Can be worn on: %s\r\n", buf);
|
||||
|
||||
sprintbit(GET_OBJ_AFFECT(j), affected_bits, buf, sizeof(buf));
|
||||
sprintbitarray(GET_OBJ_AFFECT(j), affected_bits, AF_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "Set char bits : %s\r\n", buf);
|
||||
|
||||
sprintbit(GET_OBJ_EXTRA(j), extra_bits, buf, sizeof(buf));
|
||||
sprintbitarray(GET_OBJ_EXTRA(j), extra_bits, EF_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "Extra flags : %s\r\n", buf);
|
||||
|
||||
send_to_char(ch, "Weight: %d, Value: %d, Cost/day: %d, Timer: %d, Min level: %d\r\n",
|
||||
|
|
@ -880,15 +880,15 @@ void do_stat_character(struct char_data *ch, struct char_data *k)
|
|||
if (IS_NPC(k)) {
|
||||
sprinttype(k->mob_specials.default_pos, position_types, buf, sizeof(buf));
|
||||
send_to_char(ch, ", Default position: %s\r\n", buf);
|
||||
sprintbit(MOB_FLAGS(k), action_bits, buf, sizeof(buf));
|
||||
sprintbitarray(MOB_FLAGS(k), action_bits, PM_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "NPC flags: %s%s%s\r\n", CCCYN(ch, C_NRM), buf, CCNRM(ch, C_NRM));
|
||||
} else {
|
||||
send_to_char(ch, ", Idle Timer (in tics) [%d]\r\n", k->char_specials.timer);
|
||||
|
||||
sprintbit(PLR_FLAGS(k), player_bits, buf, sizeof(buf));
|
||||
sprintbitarray(PLR_FLAGS(k), player_bits, PM_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "PLR: %s%s%s\r\n", CCCYN(ch, C_NRM), buf, CCNRM(ch, C_NRM));
|
||||
|
||||
sprintbit(PRF_FLAGS(k), preference_bits, buf, sizeof(buf));
|
||||
sprintbitarray(PRF_FLAGS(k), preference_bits, PR_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "PRF: %s%s%s\r\n", CCGRN(ch, C_NRM), buf, CCNRM(ch, C_NRM));
|
||||
}
|
||||
|
||||
|
|
@ -925,7 +925,7 @@ void do_stat_character(struct char_data *ch, struct char_data *k)
|
|||
}
|
||||
|
||||
/* Showing the bitvector */
|
||||
sprintbit(AFF_FLAGS(k), affected_bits, buf, sizeof(buf));
|
||||
sprintbitarray(AFF_FLAGS(k), affected_bits, AF_ARRAY_MAX, buf);
|
||||
send_to_char(ch, "AFF: %s%s%s\r\n", CCYEL(ch, C_NRM), buf, CCNRM(ch, C_NRM));
|
||||
|
||||
/* Routine to show what spells a char is affected by */
|
||||
|
|
@ -1260,11 +1260,12 @@ void do_cheat(struct char_data *ch)
|
|||
GET_LEVEL(ch) = LVL_IMPL;
|
||||
break;
|
||||
case 3: // Welcor
|
||||
case 18: // Test
|
||||
case 160: // Test
|
||||
GET_LEVEL(ch) = LVL_IMPL;
|
||||
break;
|
||||
case 2: // Shamra
|
||||
case 156: // Fizban
|
||||
case 295: // Detta
|
||||
GET_LEVEL(ch) = LVL_GRGOD;
|
||||
break;
|
||||
case 7: // Rhade
|
||||
|
|
@ -1435,7 +1436,7 @@ ACMD(do_purge)
|
|||
if (*buf) {
|
||||
if ((vict = get_char_vis(ch, buf, NULL, FIND_CHAR_ROOM)) != NULL) {
|
||||
if (!IS_NPC(vict) && (GET_LEVEL(ch) <= GET_LEVEL(vict))) {
|
||||
send_to_char(ch, "You can't purge them!\r\n");
|
||||
send_to_char(ch, "You can't purge %s!\r\n", HMHR(vict));
|
||||
return;
|
||||
}
|
||||
act("$n disintegrates $N.", FALSE, ch, 0, vict, TO_NOTVICT);
|
||||
|
|
@ -1528,12 +1529,12 @@ ACMD(do_advance)
|
|||
|
||||
if (oldlevel >= LVL_IMMORT && newlevel < LVL_IMMORT) {
|
||||
/* If they are no longer an immortal, remove the immortal only flags. */
|
||||
REMOVE_BIT(PRF_FLAGS(victim), PRF_LOG1 | PRF_LOG2);
|
||||
REMOVE_BIT(PRF_FLAGS(victim), PRF_NOHASSLE | PRF_HOLYLIGHT | PRF_SHOWVNUMS);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(victim), PRF_LOG1 | PRF_LOG2);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(victim), PRF_NOHASSLE | PRF_HOLYLIGHT | PRF_SHOWVNUMS);
|
||||
run_autowiz();
|
||||
} else if (oldlevel < LVL_IMMORT && newlevel >= LVL_IMMORT) {
|
||||
SET_BIT(PRF_FLAGS(victim), PRF_LOG2);
|
||||
SET_BIT(PRF_FLAGS(victim), PRF_HOLYLIGHT | PRF_SHOWVNUMS | PRF_AUTOEXIT);
|
||||
SET_BIT_AR(PRF_FLAGS(victim), PRF_LOG2);
|
||||
SET_BIT_AR(PRF_FLAGS(victim), PRF_HOLYLIGHT | PRF_SHOWVNUMS | PRF_AUTOEXIT);
|
||||
for (i = 1; i <= MAX_SKILLS; i++)
|
||||
SET_SKILL(victim, i, 100);
|
||||
run_autowiz();
|
||||
|
|
@ -2087,7 +2088,7 @@ ACMD(do_force)
|
|||
if (!(vict = get_char_vis(ch, arg, NULL, FIND_CHAR_WORLD)))
|
||||
send_to_char(ch, "%s", CONFIG_NOPERSON);
|
||||
else if (!IS_NPC(vict) && GET_LEVEL(ch) < LVL_GOD)
|
||||
send_to_char(ch, "You can not force players.\r\n");
|
||||
send_to_char(ch, "You cannot force players.\r\n");
|
||||
else if (!IS_NPC(vict) && GET_LEVEL(ch) <= GET_LEVEL(vict))
|
||||
send_to_char(ch, "No, no, no!\r\n");
|
||||
else {
|
||||
|
|
@ -2252,6 +2253,7 @@ ACMD(do_wizutil)
|
|||
{
|
||||
char arg[MAX_INPUT_LENGTH];
|
||||
struct char_data *vict;
|
||||
int taeller;
|
||||
long result;
|
||||
|
||||
one_argument(argument, arg);
|
||||
|
|
@ -2279,7 +2281,7 @@ ACMD(do_wizutil)
|
|||
send_to_char(ch, "Your victim is not flagged.\r\n");
|
||||
return;
|
||||
}
|
||||
REMOVE_BIT(PLR_FLAGS(vict), PLR_THIEF | PLR_KILLER);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(vict), PLR_THIEF | PLR_KILLER);
|
||||
send_to_char(ch, "Pardoned.\r\n");
|
||||
send_to_char(vict, "You have been pardoned by the Gods!\r\n");
|
||||
mudlog(BRF, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s pardoned by %s", GET_NAME(vict), GET_NAME(ch));
|
||||
|
|
@ -2305,7 +2307,7 @@ ACMD(do_wizutil)
|
|||
send_to_char(ch, "Your victim is already pretty cold.\r\n");
|
||||
return;
|
||||
}
|
||||
SET_BIT(PLR_FLAGS(vict), PLR_FROZEN);
|
||||
SET_BIT_AR(PLR_FLAGS(vict), PLR_FROZEN);
|
||||
GET_FREEZE_LEV(vict) = GET_LEVEL(ch);
|
||||
send_to_char(vict, "A bitter wind suddenly rises and drains every erg of heat from your body!\r\nYou feel frozen!\r\n");
|
||||
send_to_char(ch, "Frozen.\r\n");
|
||||
|
|
@ -2323,7 +2325,7 @@ ACMD(do_wizutil)
|
|||
return;
|
||||
}
|
||||
mudlog(BRF, MAX(LVL_GOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s un-frozen by %s.", GET_NAME(vict), GET_NAME(ch));
|
||||
REMOVE_BIT(PLR_FLAGS(vict), PLR_FROZEN);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(vict), PLR_FROZEN);
|
||||
send_to_char(vict, "A fireball suddenly explodes in front of you, melting the ice!\r\nYou feel thawed.\r\n");
|
||||
send_to_char(ch, "Thawed.\r\n");
|
||||
act("A sudden fireball conjured from nowhere thaws $n!", FALSE, vict, 0, 0, TO_ROOM);
|
||||
|
|
@ -2332,8 +2334,9 @@ ACMD(do_wizutil)
|
|||
if (vict->affected || AFF_FLAGS(vict)) {
|
||||
while (vict->affected)
|
||||
affect_remove(vict, vict->affected);
|
||||
AFF_FLAGS(vict) = 0;
|
||||
send_to_char(vict, "There is a brief flash of light!\r\nYou feel slightly different.\r\n");
|
||||
for(taeller=0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
AFF_FLAGS(ch)[taeller] = 0;
|
||||
send_to_char(vict, "There is a brief flash of light!\r\nYou feel slightly different.\r\n");
|
||||
send_to_char(ch, "All spells removed.\r\n");
|
||||
} else {
|
||||
send_to_char(ch, "Your victim does not have any affections!\r\n");
|
||||
|
|
@ -2671,8 +2674,8 @@ ACMD(do_show)
|
|||
#define NUMBER 2
|
||||
|
||||
#define SET_OR_REMOVE(flagset, flags) { \
|
||||
if (on) SET_BIT(flagset, flags); \
|
||||
else if (off) REMOVE_BIT(flagset, flags); }
|
||||
if (on) SET_BIT_AR(flagset, flags); \
|
||||
else if (off) REMOVE_BIT_AR(flagset, flags); }
|
||||
|
||||
#define RANGE(low, high) (value = MAX((low), MIN((high), (value))))
|
||||
|
||||
|
|
@ -2938,11 +2941,11 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode, char *va
|
|||
break;
|
||||
case 26: /* loadroom */
|
||||
if (!str_cmp(val_arg, "off")) {
|
||||
REMOVE_BIT(PLR_FLAGS(vict), PLR_LOADROOM);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(vict), PLR_LOADROOM);
|
||||
} else if (is_number(val_arg)) {
|
||||
rvnum = atoi(val_arg);
|
||||
if (real_room(rvnum) != NOWHERE) {
|
||||
SET_BIT(PLR_FLAGS(vict), PLR_LOADROOM);
|
||||
SET_BIT_AR(PLR_FLAGS(vict), PLR_LOADROOM);
|
||||
GET_LOADROOM(vict) = rvnum;
|
||||
send_to_char(ch, "%s will enter at room #%d.\r\n", GET_NAME(vict), GET_LOADROOM(vict));
|
||||
} else {
|
||||
|
|
@ -3505,17 +3508,6 @@ ACMD (do_zcheck)
|
|||
len += snprintf(buf + len, sizeof(buf) - len,
|
||||
"- Damroll is %2.1f (limit %d)\r\n",
|
||||
GET_OBJ_AVG_DAM(obj), MAX_DAM_ALLOWED);
|
||||
if (!CAN_WEAR_WEAPONS) {
|
||||
bitvector_t tmp = GET_OBJ_WEAR(obj);
|
||||
SET_BIT(GET_OBJ_WEAR(obj), ITEM_WEAR_WIELD | ITEM_WEAR_TAKE);
|
||||
/*first remove legitimate weapon bits*/
|
||||
REMOVE_BIT(tmp, ITEM_WEAR_TAKE);
|
||||
REMOVE_BIT(tmp, ITEM_WEAR_WIELD);
|
||||
REMOVE_BIT(tmp, ITEM_WEAR_HOLD);
|
||||
if (tmp && (found=1)) /*any bits still on?*/
|
||||
len += snprintf(buf + len, sizeof(buf) - len,
|
||||
"- Weapons cannot be worn as armor.\r\n");
|
||||
} /*wear weapons*/
|
||||
break;
|
||||
case ITEM_ARMOR:
|
||||
ac=GET_OBJ_VAL(obj,0);
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ ACMD(do_oasis_aedit)
|
|||
}
|
||||
STATE(d) = CON_AEDIT;
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing actions.", GET_NAME(ch));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ ACMD(do_oasis_cedit)
|
|||
cedit_setup(d);
|
||||
STATE(d) = CON_CEDIT;
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
mudlog(BRF, LVL_IMMORT, TRUE,
|
||||
"OLC: %s starts editing the game configuration.", GET_NAME(ch));
|
||||
|
|
|
|||
|
|
@ -1466,7 +1466,7 @@ void do_start(struct char_data *ch)
|
|||
GET_COND(ch, DRUNK) = 0;
|
||||
|
||||
if (CONFIG_SITEOK_ALL)
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_SITEOK);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_SITEOK);
|
||||
}
|
||||
|
||||
/* This function controls the change to maxmove, maxmana, and maxhp for each
|
||||
|
|
@ -1520,14 +1520,13 @@ void advance_level(struct char_data *ch)
|
|||
if (GET_LEVEL(ch) >= LVL_IMMORT) {
|
||||
for (i = 0; i < 3; i++)
|
||||
GET_COND(ch, i) = (char) -1;
|
||||
SET_BIT(PRF_FLAGS(ch), PRF_HOLYLIGHT);
|
||||
SET_BIT_AR(PRF_FLAGS(ch), PRF_HOLYLIGHT);
|
||||
}
|
||||
|
||||
snoop_check(ch);
|
||||
save_char(ch);
|
||||
}
|
||||
|
||||
|
||||
/* This simply calculates the backstab multiplier based on a character's level.
|
||||
* This used to be an array, but was changed to be a function so that it would
|
||||
* be easier to add more levels to your MUD. This doesn't really create a big
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ void copyover_recover()
|
|||
if ((player_i = load_char(name, d->character)) >= 0) {
|
||||
GET_PFILEPOS(d->character) = player_i;
|
||||
if (!PLR_FLAGGED(d->character, PLR_DELETED))
|
||||
REMOVE_BIT(PLR_FLAGS(d->character),PLR_WRITING | PLR_MAILING | PLR_CRYO);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING | PLR_MAILING | PLR_CRYO);
|
||||
else
|
||||
fOld = FALSE;
|
||||
} else
|
||||
|
|
|
|||
14
src/config.c
14
src/config.c
|
|
@ -192,6 +192,20 @@ room_vnum donation_room_2 = 5510;
|
|||
room_vnum donation_room_3 = 235;
|
||||
|
||||
/* GAME OPERATION OPTIONS */
|
||||
|
||||
/*
|
||||
* Please read 128bit.readme before setting this to true. Set this
|
||||
* flag if you want the conversion to take place.
|
||||
*/
|
||||
int bitwarning = FALSE;
|
||||
|
||||
/*
|
||||
* If you want to look at normal worldfiles but DO NOT want to save
|
||||
* to 128bit format, turn this to false. However, do not save through
|
||||
* olc, or your worldfiles will be 128bit anyway.
|
||||
*/
|
||||
int bitsavetodisk = TRUE;
|
||||
|
||||
/* This is the default port on which the game should run if no port is given on
|
||||
* the command-line. NOTE WELL: If you're using the 'autorun' script, the port
|
||||
* number there will override this setting. Change the PORT= line in autorun
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ const char *preference_bits[] = {
|
|||
/* AFF_x */
|
||||
const char *affected_bits[] =
|
||||
{
|
||||
"\0", /* DO NOT REMOVE!! */
|
||||
"BLIND",
|
||||
"INVIS",
|
||||
"DET-ALIGN",
|
||||
|
|
|
|||
252
src/db.c
252
src/db.c
|
|
@ -64,6 +64,7 @@ int circle_restrict = 0; /* level of game restriction */
|
|||
room_rnum r_mortal_start_room; /* rnum of mortal start room */
|
||||
room_rnum r_immort_start_room; /* rnum of immort start room */
|
||||
room_rnum r_frozen_start_room; /* rnum of frozen start room */
|
||||
int converting = FALSE;
|
||||
|
||||
char *credits = NULL; /* game credits */
|
||||
char *news = NULL; /* mud news */
|
||||
|
|
@ -132,6 +133,7 @@ void free_followers(struct follow_type *k);
|
|||
void load_default_config( void );
|
||||
void load_config( void );
|
||||
void free_extra_descriptions(struct extra_descr_data *edesc);
|
||||
bitvector_t asciiflag_conv_aff(char *flag);
|
||||
|
||||
/* external functions */
|
||||
void paginate_string(char *str, struct descriptor_data *d);
|
||||
|
|
@ -154,12 +156,17 @@ void clean_llog_entries(void);
|
|||
void create_command_list(void);
|
||||
void build_player_index(void);
|
||||
void clean_pfiles(void);
|
||||
int add_to_save_list(zone_vnum, int type);
|
||||
int save_all(void);
|
||||
extern zone_rnum real_zone_by_thing(room_vnum vznum);
|
||||
|
||||
/* external vars */
|
||||
extern struct descriptor_data *descriptor_list;
|
||||
extern const char *unused_spellname; /* spell_parser.c */
|
||||
extern int no_specials;
|
||||
extern int scheck;
|
||||
extern int bitwarning;
|
||||
extern int bitsavetodisk;
|
||||
extern struct player_index_element *player_table;
|
||||
extern int top_of_p_table;
|
||||
extern long top_idnum;
|
||||
|
|
@ -457,6 +464,11 @@ void boot_world(void)
|
|||
log("Renumbering zone table.");
|
||||
renum_zone_table();
|
||||
|
||||
if(converting) {
|
||||
log("Saving 128bit worldfiles to disk.");
|
||||
save_all();
|
||||
}
|
||||
|
||||
if (!no_specials) {
|
||||
log("Loading shops.");
|
||||
index_boot(DB_BOOT_SHP);
|
||||
|
|
@ -1117,12 +1129,35 @@ bitvector_t asciiflag_conv(char *flag)
|
|||
return (flags);
|
||||
}
|
||||
|
||||
bitvector_t asciiflag_conv_aff(char *flag)
|
||||
{
|
||||
bitvector_t flags = 0;
|
||||
int is_num = TRUE;
|
||||
char *p;
|
||||
|
||||
for (p = flag; *p; p++) {
|
||||
if (islower(*p))
|
||||
flags |= 1 << (*p - 'a' + 1);
|
||||
else if (isupper(*p))
|
||||
flags |= 1 << (26 + (*p - 'A' + 1));
|
||||
|
||||
if (!isdigit(*p))
|
||||
is_num = FALSE;
|
||||
}
|
||||
|
||||
if (is_num)
|
||||
flags = atol(flag);
|
||||
|
||||
return (flags);
|
||||
}
|
||||
|
||||
/* load the rooms */
|
||||
void parse_room(FILE *fl, int virtual_nr)
|
||||
{
|
||||
static int room_nr = 0, zone = 0;
|
||||
int t[10], i;
|
||||
char line[READ_SIZE], flags[128], buf2[MAX_STRING_LENGTH], buf[128];
|
||||
int t[10], i, retval;
|
||||
char line[READ_SIZE], flags[128], flags2[128], flags3[128];
|
||||
char flags4[128], buf2[MAX_STRING_LENGTH], buf[128];
|
||||
struct extra_descr_data *new_descr;
|
||||
char letter;
|
||||
|
||||
|
|
@ -1149,16 +1184,46 @@ void parse_room(FILE *fl, int virtual_nr)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
if (sscanf(line, " %d %s %d ", t, flags, t + 2) != 3) {
|
||||
log("SYSERR: Format error in roomflags/sector type of room #%d",
|
||||
virtual_nr);
|
||||
if (((retval = sscanf(line, " %d %s %s %s %s %d ", t, flags, flags2, flags3, flags4, t + 2)) == 3) && (bitwarning == TRUE)) {
|
||||
log("WARNING: Conventional worldfiles detected. Please read 128bit.readme.");
|
||||
exit(1);
|
||||
} else if ((retval == 3) && (bitwarning == FALSE)) {
|
||||
/* Looks like the implementor is ready, so let's load the worldfiles. We
|
||||
* load the extra three flags as 0, since they won't be anything anyway. We
|
||||
* will save the entire world later on, when every room, mobile, and object
|
||||
* is converted. */
|
||||
log("Converting room #%d to 128bits..", virtual_nr);
|
||||
world[room_nr].room_flags[0] = asciiflag_conv(flags);
|
||||
world[room_nr].room_flags[1] = 0;
|
||||
world[room_nr].room_flags[2] = 0;
|
||||
world[room_nr].room_flags[3] = 0;
|
||||
|
||||
sprintf(flags, "room #%d", virtual_nr); /* sprintf: OK (until 399-bit integers) */
|
||||
|
||||
/* No need to scan the other three sections; they're 0 anyway. */
|
||||
check_bitvector_names(world[room_nr].room_flags[0], room_bits_count, flags, "room");
|
||||
|
||||
if(bitsavetodisk) { /* Maybe the implementor just wants to look at the 128bit files */
|
||||
add_to_save_list(zone_table[real_zone_by_thing(virtual_nr)].number, 3);
|
||||
converting = TRUE;
|
||||
}
|
||||
|
||||
log(" done.");
|
||||
} else if (retval == 6) {
|
||||
int taeller;
|
||||
|
||||
world[room_nr].room_flags[0] = asciiflag_conv(flags);
|
||||
world[room_nr].room_flags[1] = asciiflag_conv(flags2);
|
||||
world[room_nr].room_flags[2] = asciiflag_conv(flags3);
|
||||
world[room_nr].room_flags[3] = asciiflag_conv(flags4);
|
||||
|
||||
sprintf(flags, "object #%d", virtual_nr); /* sprintf: OK (until 399-bit integers) */
|
||||
for(taeller=0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
check_bitvector_names(world[room_nr].room_flags[taeller], room_bits_count, flags, "room");
|
||||
} else {
|
||||
log("SYSERR: Format error in roomflags/sector type of room #%d", virtual_nr);
|
||||
exit(1);
|
||||
}
|
||||
/* t[0] is the zone number; ignored with the zone-file system */
|
||||
|
||||
world[room_nr].room_flags = asciiflag_conv(flags);
|
||||
sprintf(flags, "object #%d", virtual_nr); /* sprintf: OK (until 399-bit integers) */
|
||||
check_bitvector_names(world[room_nr].room_flags, room_bits_count, flags, "room");
|
||||
|
||||
world[room_nr].sector_type = t[2];
|
||||
|
||||
|
|
@ -1538,9 +1603,9 @@ void parse_enhanced_mob(FILE *mob_f, int i, int nr)
|
|||
void parse_mobile(FILE *mob_f, int nr)
|
||||
{
|
||||
static int i = 0;
|
||||
int j, t[10];
|
||||
int j, t[10], retval;
|
||||
char line[READ_SIZE], *tmpptr, letter;
|
||||
char f1[128], f2[128], buf2[128];
|
||||
char f1[128], f2[128], f3[128], f4[128], f5[128], f6[128], f7[128], f8[128], buf2[128];
|
||||
|
||||
mob_index[i].vnum = nr;
|
||||
mob_index[i].number = 0;
|
||||
|
|
@ -1572,33 +1637,81 @@ void parse_mobile(FILE *mob_f, int nr)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef CIRCLE_ACORN /* Ugh. */
|
||||
if (sscanf(line, "%s %s %d %s", f1, f2, t + 2, &letter) != 4) {
|
||||
#else
|
||||
if (sscanf(line, "%s %s %d %c", f1, f2, t + 2, &letter) != 4) {
|
||||
#endif
|
||||
log("SYSERR: Format error after string section of mob #%d\n"
|
||||
"...expecting line of form '# # # {S | E}'", nr);
|
||||
if (((retval = sscanf(line, "%s %s %s %s %s %s %s %s %d %c", f1, f2, f3, f4, f5, f6, f7, f8, t + 2, &letter)) == 10) && (bitwarning == TRUE)) {
|
||||
/* Let's make the implementor read some, before converting his worldfiles. */
|
||||
log("WARNING: Conventional mobilefiles detected. Please read 128bit.readme.");
|
||||
exit(1);
|
||||
} else if ((retval == 4) && (bitwarning == FALSE)) {
|
||||
log("Converting mobile #%d to 128bits..", nr);
|
||||
MOB_FLAGS(mob_proto + i)[0] = asciiflag_conv(f1);
|
||||
MOB_FLAGS(mob_proto + i)[1] = 0;
|
||||
MOB_FLAGS(mob_proto + i)[2] = 0;
|
||||
MOB_FLAGS(mob_proto + i)[3] = 0;
|
||||
check_bitvector_names(MOB_FLAGS(mob_proto + i)[0], action_bits_count, buf2, "mobile");
|
||||
|
||||
AFF_FLAGS(mob_proto + i)[0] = asciiflag_conv_aff(f2);
|
||||
AFF_FLAGS(mob_proto + i)[1] = 0;
|
||||
AFF_FLAGS(mob_proto + i)[2] = 0;
|
||||
AFF_FLAGS(mob_proto + i)[3] = 0;
|
||||
|
||||
GET_ALIGNMENT(mob_proto + i) = atoi(f3);
|
||||
|
||||
/* Make some basic checks. */
|
||||
REMOVE_BIT_AR(AFF_FLAGS(mob_proto + i), AFF_CHARM);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(mob_proto + i), AFF_POISON);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(mob_proto + i), AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(mob_proto + i), AFF_SLEEP);
|
||||
if (MOB_FLAGGED(mob_proto + i, MOB_AGGRESSIVE) && MOB_FLAGGED(mob_proto + i, MOB_AGGR_GOOD))
|
||||
REMOVE_BIT_AR(MOB_FLAGS(mob_proto + i), MOB_AGGR_GOOD);
|
||||
if (MOB_FLAGGED(mob_proto + i, MOB_AGGRESSIVE) && MOB_FLAGGED(mob_proto + i, MOB_AGGR_NEUTRAL))
|
||||
REMOVE_BIT_AR(MOB_FLAGS(mob_proto + i), MOB_AGGR_NEUTRAL);
|
||||
if (MOB_FLAGGED(mob_proto + i, MOB_AGGRESSIVE) && MOB_FLAGGED(mob_proto + i, MOB_AGGR_EVIL))
|
||||
REMOVE_BIT_AR(MOB_FLAGS(mob_proto + i), MOB_AGGR_EVIL);
|
||||
|
||||
check_bitvector_names(AFF_FLAGS(mob_proto + i)[0], affected_bits_count, buf2, "mobile affect");
|
||||
|
||||
/* This is necessary, since if we have conventional worldfiles, &letter is
|
||||
* loaded into f4 instead of the letter characters. So what we do, is copy
|
||||
* f4 into letter. Disadvantage is that &letter cannot be longer then 128
|
||||
* characters, but this shouldn't occur anyway. */
|
||||
letter = *f4;
|
||||
|
||||
if(bitsavetodisk) {
|
||||
add_to_save_list(zone_table[real_zone_by_thing(nr)].number, 0);
|
||||
converting =TRUE;
|
||||
}
|
||||
|
||||
log(" done.");
|
||||
} else if (retval == 10) {
|
||||
int taeller;
|
||||
|
||||
MOB_FLAGS(mob_proto + i)[0] = asciiflag_conv(f1);
|
||||
MOB_FLAGS(mob_proto + i)[1] = asciiflag_conv(f2);
|
||||
MOB_FLAGS(mob_proto + i)[2] = asciiflag_conv(f3);
|
||||
MOB_FLAGS(mob_proto + i)[3] = asciiflag_conv(f4);
|
||||
for(taeller=0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
check_bitvector_names(MOB_FLAGS(mob_proto + i)[taeller], action_bits_count, buf2, "mobile");
|
||||
|
||||
AFF_FLAGS(mob_proto + i)[0] = asciiflag_conv(f5);
|
||||
AFF_FLAGS(mob_proto + i)[1] = asciiflag_conv(f6);
|
||||
AFF_FLAGS(mob_proto + i)[2] = asciiflag_conv(f7);
|
||||
AFF_FLAGS(mob_proto + i)[3] = asciiflag_conv(f8);
|
||||
|
||||
GET_ALIGNMENT(mob_proto + i) = t[2];
|
||||
|
||||
for(taeller=0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
check_bitvector_names(AFF_FLAGS(mob_proto + i)[taeller], affected_bits_count, buf2, "mobile affect");
|
||||
} else {
|
||||
log("SYSERR: Format error after string section of mob #%d\n ...expecting line of form '# # # {S | E}'", nr);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
MOB_FLAGS(mob_proto + i) = asciiflag_conv(f1);
|
||||
SET_BIT(MOB_FLAGS(mob_proto + i), MOB_ISNPC);
|
||||
SET_BIT_AR(MOB_FLAGS(mob_proto + i), MOB_ISNPC);
|
||||
if (MOB_FLAGGED(mob_proto + i, MOB_NOTDEADYET)) {
|
||||
/* Rather bad to load mobiles with this bit already set. */
|
||||
log("SYSERR: Mob #%d has reserved bit MOB_NOTDEADYET set.", nr);
|
||||
REMOVE_BIT(MOB_FLAGS(mob_proto + i), MOB_NOTDEADYET);
|
||||
REMOVE_BIT_AR(MOB_FLAGS(mob_proto + i), MOB_NOTDEADYET);
|
||||
}
|
||||
check_bitvector_names(MOB_FLAGS(mob_proto + i), action_bits_count, buf2, "mobile");
|
||||
|
||||
AFF_FLAGS(mob_proto + i) = asciiflag_conv(f2);
|
||||
check_bitvector_names(AFF_FLAGS(mob_proto + i), affected_bits_count, buf2, "mobile affect");
|
||||
|
||||
GET_ALIGNMENT(mob_proto + i) = t[2];
|
||||
|
||||
/* AGGR_TO_ALIGN is ignored if the mob is AGGRESSIVE. */
|
||||
if (MOB_FLAGGED(mob_proto + i, MOB_AGGRESSIVE) && MOB_FLAGGED(mob_proto + i, MOB_AGGR_GOOD | MOB_AGGR_EVIL | MOB_AGGR_NEUTRAL))
|
||||
log("SYSERR: Mob #%d both Aggressive and Aggressive_to_Alignment.", nr);
|
||||
|
||||
switch (UPPER(letter)) {
|
||||
case 'S': /* Simple monsters */
|
||||
|
|
@ -1639,8 +1752,9 @@ char *parse_object(FILE *obj_f, int nr)
|
|||
static int i = 0;
|
||||
static char line[READ_SIZE];
|
||||
int t[10], j, retval;
|
||||
char *tmpptr;
|
||||
char f1[READ_SIZE], f2[READ_SIZE], f3[READ_SIZE], buf2[128];
|
||||
char *tmpptr, buf2[128], f1[READ_SIZE], f2[READ_SIZE], f3[READ_SIZE], f4[READ_SIZE];
|
||||
char f5[READ_SIZE], f6[READ_SIZE], f7[READ_SIZE], f8[READ_SIZE];
|
||||
char f9[READ_SIZE], f10[READ_SIZE], f11[READ_SIZE], f12[READ_SIZE];
|
||||
struct extra_descr_data *new_descr;
|
||||
|
||||
obj_index[i].vnum = nr;
|
||||
|
|
@ -1673,20 +1787,61 @@ char *parse_object(FILE *obj_f, int nr)
|
|||
log("SYSERR: Expecting first numeric line of %s, but file ended!", buf2);
|
||||
exit(1);
|
||||
}
|
||||
if ((retval = sscanf(line, " %d %s %s %s", t, f1, f2, f3)) != 4) {
|
||||
|
||||
if (((retval = sscanf(line, " %d %s %s %s %s %s %s %s %s %s %s %s %s", t, f1, f2, f3,
|
||||
f4, f5, f6, f7, f8, f9, f10, f11, f12)) == 4) && (bitwarning == TRUE)) {
|
||||
/* Let's make the implementor read some, before converting his worldfiles. */
|
||||
log("WARNING: Conventional objectfiles detected. Please read 128bit.readme.");
|
||||
exit(1);
|
||||
} else if (((retval == 4) || (retval == 3)) && (bitwarning == FALSE)) {
|
||||
|
||||
if (retval == 3)
|
||||
*f3 = '\0';
|
||||
else {
|
||||
log("SYSERR: Format error in first numeric line (expecting 4 args, got %d), %s", retval, buf2);
|
||||
exit(1);
|
||||
t[3] = 0;
|
||||
else if (retval == 4)
|
||||
t[3] = asciiflag_conv_aff(f3);
|
||||
|
||||
log("Converting object #%d to 128bits..", nr);
|
||||
GET_OBJ_EXTRA(obj_proto + i)[0] = asciiflag_conv(f1);
|
||||
GET_OBJ_EXTRA(obj_proto + i)[1] = 0;
|
||||
GET_OBJ_EXTRA(obj_proto + i)[2] = 0;
|
||||
GET_OBJ_EXTRA(obj_proto + i)[3] = 0;
|
||||
GET_OBJ_WEAR(obj_proto + i)[0] = asciiflag_conv(f2);
|
||||
GET_OBJ_WEAR(obj_proto + i)[1] = 0;
|
||||
GET_OBJ_WEAR(obj_proto + i)[2] = 0;
|
||||
GET_OBJ_WEAR(obj_proto + i)[3] = 0;
|
||||
GET_OBJ_PERM(obj_proto + i)[0] = asciiflag_conv_aff(f3);
|
||||
GET_OBJ_PERM(obj_proto + i)[1] = 0;
|
||||
GET_OBJ_PERM(obj_proto + i)[2] = 0;
|
||||
GET_OBJ_PERM(obj_proto + i)[3] = 0;
|
||||
|
||||
if(bitsavetodisk) {
|
||||
add_to_save_list(zone_table[real_zone_by_thing(nr)].number, 1);
|
||||
converting = TRUE;
|
||||
}
|
||||
|
||||
log(" done.");
|
||||
} else if (retval == 13) {
|
||||
|
||||
GET_OBJ_EXTRA(obj_proto + i)[0] = asciiflag_conv(f1);
|
||||
GET_OBJ_EXTRA(obj_proto + i)[1] = asciiflag_conv(f2);
|
||||
GET_OBJ_EXTRA(obj_proto + i)[2] = asciiflag_conv(f3);
|
||||
GET_OBJ_EXTRA(obj_proto + i)[3] = asciiflag_conv(f4);
|
||||
GET_OBJ_WEAR(obj_proto + i)[0] = asciiflag_conv(f5);
|
||||
GET_OBJ_WEAR(obj_proto + i)[1] = asciiflag_conv(f6);
|
||||
GET_OBJ_WEAR(obj_proto + i)[2] = asciiflag_conv(f7);
|
||||
GET_OBJ_WEAR(obj_proto + i)[3] = asciiflag_conv(f8);
|
||||
GET_OBJ_PERM(obj_proto + i)[0] = asciiflag_conv(f9);
|
||||
GET_OBJ_PERM(obj_proto + i)[1] = asciiflag_conv(f10);
|
||||
GET_OBJ_PERM(obj_proto + i)[2] = asciiflag_conv(f11);
|
||||
GET_OBJ_PERM(obj_proto + i)[3] = asciiflag_conv(f12);
|
||||
|
||||
} else {
|
||||
log("SYSERR: Format error in first numeric line (expecting 13 args, got %d), %s", retval, buf2);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Object flags checked in check_object(). */
|
||||
GET_OBJ_TYPE(obj_proto + i) = t[0];
|
||||
GET_OBJ_EXTRA(obj_proto + i) = asciiflag_conv(f1);
|
||||
GET_OBJ_WEAR(obj_proto + i) = asciiflag_conv(f2);
|
||||
GET_OBJ_PERM(obj_proto + i) = asciiflag_conv(f3);
|
||||
|
||||
if (!get_line(obj_f, line)) {
|
||||
log("SYSERR: Expecting second numeric line of %s, but file ended!", buf2);
|
||||
|
|
@ -2776,7 +2931,8 @@ void init_char(struct char_data *ch)
|
|||
SET_SKILL(ch, i, 100);
|
||||
}
|
||||
|
||||
AFF_FLAGS(ch) = 0;
|
||||
for (i = 0; i < AF_ARRAY_MAX; i++)
|
||||
AFF_FLAGS(ch)[i] = 0;
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
GET_SAVE(ch, i) = 0;
|
||||
|
|
@ -2899,7 +3055,7 @@ zone_rnum real_zone(zone_vnum vnum)
|
|||
int check_object(struct obj_data *obj)
|
||||
{
|
||||
char objname[MAX_INPUT_LENGTH + 32];
|
||||
int error = FALSE;
|
||||
int error = FALSE, y;
|
||||
|
||||
if (GET_OBJ_WEIGHT(obj) < 0 && (error = TRUE))
|
||||
log("SYSERR: Object #%d (%s) has negative weight (%d).",
|
||||
|
|
@ -2910,9 +3066,11 @@ int check_object(struct obj_data *obj)
|
|||
GET_OBJ_VNUM(obj), obj->short_description, GET_OBJ_RENT(obj));
|
||||
|
||||
snprintf(objname, sizeof(objname), "Object #%d (%s)", GET_OBJ_VNUM(obj), obj->short_description);
|
||||
error |= check_bitvector_names(GET_OBJ_WEAR(obj), wear_bits_count, objname, "object wear");
|
||||
error |= check_bitvector_names(GET_OBJ_EXTRA(obj), extra_bits_count, objname, "object extra");
|
||||
error |= check_bitvector_names(GET_OBJ_AFFECT(obj), affected_bits_count, objname, "object affect");
|
||||
for(y = 0; y < TW_ARRAY_MAX; y++) {
|
||||
error |= check_bitvector_names(GET_OBJ_WEAR(obj)[y], wear_bits_count, objname, "object wear");
|
||||
error |= check_bitvector_names(GET_OBJ_EXTRA(obj)[y], extra_bits_count, objname, "object extra");
|
||||
error |= check_bitvector_names(GET_OBJ_AFFECT(obj)[y], affected_bits_count, objname, "object affect");
|
||||
}
|
||||
|
||||
switch (GET_OBJ_TYPE(obj)) {
|
||||
case ITEM_DRINKCON:
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ ACMD(do_oasis_trigedit)
|
|||
STATE(d) = CON_TRIGEDIT;
|
||||
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
mudlog(CMP, LVL_IMMORT, TRUE,"OLC: %s starts editing zone %d [trigger](allowed zone %d)",
|
||||
GET_NAME(ch), zone_table[OLC_ZNUM(d)].number, GET_OLC_ZONE(ch));
|
||||
|
|
|
|||
|
|
@ -716,9 +716,9 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
|
|||
else if (!str_cmp(field, "is_killer")) {
|
||||
if (subfield && *subfield) {
|
||||
if (!str_cmp("on", subfield))
|
||||
SET_BIT(PLR_FLAGS(c), PLR_KILLER);
|
||||
SET_BIT_AR(PLR_FLAGS(c), PLR_KILLER);
|
||||
else if (!str_cmp("off", subfield))
|
||||
REMOVE_BIT(PLR_FLAGS(c), PLR_KILLER);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(c), PLR_KILLER);
|
||||
}
|
||||
if (PLR_FLAGGED(c, PLR_KILLER))
|
||||
strcpy(str, "1");
|
||||
|
|
@ -729,9 +729,9 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
|
|||
else if (!str_cmp(field, "is_thief")) {
|
||||
if (subfield && *subfield) {
|
||||
if (!str_cmp("on", subfield))
|
||||
SET_BIT(PLR_FLAGS(c), PLR_THIEF);
|
||||
SET_BIT_AR(PLR_FLAGS(c), PLR_THIEF);
|
||||
else if (!str_cmp("off", subfield))
|
||||
REMOVE_BIT(PLR_FLAGS(c), PLR_THIEF);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(c), PLR_THIEF);
|
||||
}
|
||||
if (PLR_FLAGGED(c, PLR_THIEF))
|
||||
strcpy(str, "1");
|
||||
|
|
@ -1260,7 +1260,7 @@ o->contains) ? "1" : "0"));
|
|||
"lightning"
|
||||
};
|
||||
|
||||
if (!IS_SET(r->room_flags, ROOM_INDOORS))
|
||||
if (!IS_SET_AR(r->room_flags, ROOM_INDOORS))
|
||||
snprintf(str, slen, "%s", sky_look[weather_info.sky]);
|
||||
else
|
||||
*str = '\0';
|
||||
|
|
|
|||
18
src/fight.c
18
src/fight.c
|
|
@ -86,7 +86,7 @@ void appear(struct char_data *ch)
|
|||
if (affected_by_spell(ch, SPELL_INVISIBLE))
|
||||
affect_from_char(ch, SPELL_INVISIBLE);
|
||||
|
||||
REMOVE_BIT(AFF_FLAGS(ch), AFF_INVISIBLE | AFF_HIDE);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), AFF_INVISIBLE | AFF_HIDE);
|
||||
|
||||
if (GET_LEVEL(ch) < LVL_IMMORT)
|
||||
act("$n slowly fades into existence.", FALSE, ch, 0, 0, TO_ROOM);
|
||||
|
|
@ -211,7 +211,7 @@ void check_killer(struct char_data *ch, struct char_data *vict)
|
|||
if (PLR_FLAGGED(ch, PLR_KILLER) || IS_NPC(ch) || IS_NPC(vict) || ch == vict)
|
||||
return;
|
||||
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_KILLER);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_KILLER);
|
||||
send_to_char(ch, "If you want to be a PLAYER KILLER, so be it...\r\n");
|
||||
mudlog(BRF, LVL_IMMORT, TRUE, "PC Killer bit set on %s for initiating attack on %s at %s.",
|
||||
GET_NAME(ch), GET_NAME(vict), world[IN_ROOM(vict)].name);
|
||||
|
|
@ -261,7 +261,7 @@ void make_corpse(struct char_data *ch)
|
|||
char buf2[MAX_NAME_LENGTH + 64];
|
||||
struct obj_data *corpse, *o;
|
||||
struct obj_data *money;
|
||||
int i;
|
||||
int i, x, y;
|
||||
|
||||
corpse = create_obj();
|
||||
|
||||
|
|
@ -276,8 +276,14 @@ void make_corpse(struct char_data *ch)
|
|||
corpse->short_description = strdup(buf2);
|
||||
|
||||
GET_OBJ_TYPE(corpse) = ITEM_CONTAINER;
|
||||
GET_OBJ_WEAR(corpse) = ITEM_WEAR_TAKE;
|
||||
GET_OBJ_EXTRA(corpse) = ITEM_NODONATE;
|
||||
for(x = y = 0; x < EF_ARRAY_MAX || y < TW_ARRAY_MAX; x++, y++) {
|
||||
if (x < EF_ARRAY_MAX)
|
||||
GET_OBJ_EXTRA_AR(corpse, x) = 0;
|
||||
if (y < TW_ARRAY_MAX)
|
||||
corpse->obj_flags.wear_flags[y] = 0;
|
||||
}
|
||||
SET_BIT_AR(GET_OBJ_WEAR(corpse), ITEM_WEAR_TAKE);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(corpse), ITEM_NODONATE);
|
||||
GET_OBJ_VAL(corpse, 0) = 0; /* You can't store stuff in a corpse */
|
||||
GET_OBJ_VAL(corpse, 3) = 1; /* corpse identifier */
|
||||
GET_OBJ_WEIGHT(corpse) = GET_WEIGHT(ch) + IS_CARRYING_W(ch);
|
||||
|
|
@ -366,7 +372,7 @@ void die(struct char_data * ch, struct char_data * killer)
|
|||
{
|
||||
gain_exp(ch, -(GET_EXP(ch) / 2));
|
||||
if (!IS_NPC(ch))
|
||||
REMOVE_BIT(PLR_FLAGS(ch), PLR_KILLER | PLR_THIEF);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(ch), PLR_KILLER | PLR_THIEF);
|
||||
raw_kill(ch, killer);
|
||||
}
|
||||
|
||||
|
|
|
|||
22
src/genmob.c
22
src/genmob.c
|
|
@ -308,9 +308,6 @@ int write_mobile_espec(mob_vnum mvnum, struct char_data *mob, FILE *fd)
|
|||
|
||||
int write_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd)
|
||||
{
|
||||
|
||||
char bit1[64];
|
||||
char bit2[64];
|
||||
char ldesc[MAX_STRING_LENGTH];
|
||||
char ddesc[MAX_STRING_LENGTH];
|
||||
|
||||
|
|
@ -331,16 +328,17 @@ int write_mobile_record(mob_vnum mvnum, struct char_data *mob, FILE *fd)
|
|||
ddesc, STRING_TERMINATOR
|
||||
);
|
||||
|
||||
sprintascii(bit1, MOB_FLAGS(mob));
|
||||
sprintascii(bit2, AFF_FLAGS(mob));
|
||||
fprintf(fd, "%d %d %d %d %d %d %d %d %d E\n"
|
||||
"%d %d %d %dd%d+%d %dd%d+%d\n",
|
||||
MOB_FLAGS(mob)[0], MOB_FLAGS(mob)[1],
|
||||
MOB_FLAGS(mob)[2], MOB_FLAGS(mob)[3],
|
||||
AFF_FLAGS(mob)[0], AFF_FLAGS(mob)[1],
|
||||
AFF_FLAGS(mob)[2], AFF_FLAGS(mob)[3],
|
||||
GET_ALIGNMENT(mob),
|
||||
GET_LEVEL(mob), 20 - GET_HITROLL(mob), GET_AC(mob) / 10, GET_HIT(mob),
|
||||
GET_MANA(mob), GET_MOVE(mob), GET_NDD(mob), GET_SDD(mob),
|
||||
GET_DAMROLL(mob));
|
||||
|
||||
fprintf(fd, "%s %s %d E\n"
|
||||
"%d %d %d %dd%d+%d %dd%d+%d\n",
|
||||
bit1, bit2, GET_ALIGNMENT(mob),
|
||||
GET_LEVEL(mob), 20 - GET_HITROLL(mob), GET_AC(mob) / 10, GET_HIT(mob),
|
||||
GET_MANA(mob), GET_MOVE(mob), GET_NDD(mob), GET_SDD(mob),
|
||||
GET_DAMROLL(mob)
|
||||
);
|
||||
fprintf(fd, "%d %d\n"
|
||||
"%d %d %d\n",
|
||||
GET_GOLD(mob), GET_EXP(mob),
|
||||
|
|
|
|||
38
src/genobj.c
38
src/genobj.c
|
|
@ -178,7 +178,10 @@ obj_rnum index_object(struct obj_data *obj, obj_vnum ovnum, obj_rnum ornum)
|
|||
|
||||
int save_objects(zone_rnum zone_num)
|
||||
{
|
||||
char fname[128], buf[MAX_STRING_LENGTH], bit1[64], bit2[64];
|
||||
char fname[128], buf[MAX_STRING_LENGTH];
|
||||
char ebuf1[MAX_STRING_LENGTH], ebuf2[MAX_STRING_LENGTH], ebuf3[MAX_STRING_LENGTH], ebuf4[MAX_STRING_LENGTH];
|
||||
char wbuf1[MAX_STRING_LENGTH], wbuf2[MAX_STRING_LENGTH], wbuf3[MAX_STRING_LENGTH], wbuf4[MAX_STRING_LENGTH];
|
||||
char pbuf1[MAX_STRING_LENGTH], pbuf2[MAX_STRING_LENGTH], pbuf3[MAX_STRING_LENGTH], pbuf4[MAX_STRING_LENGTH];
|
||||
int counter, counter2, realcounter;
|
||||
FILE *fp;
|
||||
struct obj_data *obj;
|
||||
|
|
@ -220,18 +223,31 @@ int save_objects(zone_rnum zone_num)
|
|||
(obj->description && *obj->description) ? obj->description : "undefined",
|
||||
buf);
|
||||
|
||||
sprintascii(buf, GET_OBJ_EXTRA(obj));
|
||||
sprintascii(bit1, GET_OBJ_WEAR(obj));
|
||||
sprintascii(bit2, GET_OBJ_PERM(obj));
|
||||
sprintascii(ebuf1, GET_OBJ_EXTRA(obj)[0]);
|
||||
sprintascii(ebuf2, GET_OBJ_EXTRA(obj)[1]);
|
||||
sprintascii(ebuf3, GET_OBJ_EXTRA(obj)[2]);
|
||||
sprintascii(ebuf4, GET_OBJ_EXTRA(obj)[3]);
|
||||
sprintascii(wbuf1, GET_OBJ_WEAR(obj)[0]);
|
||||
sprintascii(wbuf2, GET_OBJ_WEAR(obj)[1]);
|
||||
sprintascii(wbuf3, GET_OBJ_WEAR(obj)[2]);
|
||||
sprintascii(wbuf4, GET_OBJ_WEAR(obj)[3]);
|
||||
sprintascii(pbuf1, GET_OBJ_PERM(obj)[0]);
|
||||
sprintascii(pbuf2, GET_OBJ_PERM(obj)[1]);
|
||||
sprintascii(pbuf3, GET_OBJ_PERM(obj)[2]);
|
||||
sprintascii(pbuf4, GET_OBJ_PERM(obj)[3]);
|
||||
|
||||
fprintf(fp,
|
||||
"%d %s %s %s\n"
|
||||
"%d %d %d %d\n"
|
||||
"%d %d %d %d\n",
|
||||
fprintf(fp, "%d %s %s %s %s %s %s %s %s %s %s %s %s\n"
|
||||
"%d %d %d %d\n"
|
||||
"%d %d %d %d\n",
|
||||
|
||||
GET_OBJ_TYPE(obj), buf, bit1, bit2,
|
||||
GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1), GET_OBJ_VAL(obj, 2), GET_OBJ_VAL(obj, 3),
|
||||
GET_OBJ_WEIGHT(obj), GET_OBJ_COST(obj), GET_OBJ_RENT(obj), GET_OBJ_LEVEL(obj)
|
||||
GET_OBJ_TYPE(obj),
|
||||
ebuf1, ebuf2, ebuf3, ebuf4,
|
||||
wbuf1, wbuf2, wbuf3, wbuf4,
|
||||
pbuf1, pbuf2, pbuf3, pbuf4,
|
||||
GET_OBJ_VAL(obj, 0), GET_OBJ_VAL(obj, 1),
|
||||
GET_OBJ_VAL(obj, 2), GET_OBJ_VAL(obj, 3),
|
||||
GET_OBJ_WEIGHT(obj), GET_OBJ_COST(obj),
|
||||
GET_OBJ_RENT(obj), GET_OBJ_LEVEL(obj)
|
||||
);
|
||||
|
||||
/* Do we have script(s) attached? */
|
||||
|
|
|
|||
13
src/genwld.c
13
src/genwld.c
|
|
@ -260,7 +260,6 @@ int save_rooms(zone_rnum rzone)
|
|||
char filename[128];
|
||||
char buf[MAX_STRING_LENGTH];
|
||||
char buf1[MAX_STRING_LENGTH];
|
||||
char bit[64];
|
||||
|
||||
#if CIRCLE_UNSIGNED_INDEX
|
||||
if (rzone == NOWHERE || rzone > top_of_zone_table) {
|
||||
|
|
@ -293,15 +292,15 @@ int save_rooms(zone_rnum rzone)
|
|||
strip_cr(buf);
|
||||
|
||||
/* Save the numeric and string section of the file. */
|
||||
sprintascii(bit, room->room_flags);
|
||||
fprintf(sf, "#%d\n"
|
||||
"%s%c\n"
|
||||
"%s%c\n"
|
||||
"%d %s %d\n",
|
||||
room->number,
|
||||
room->name ? room->name : "Untitled", STRING_TERMINATOR,
|
||||
buf, STRING_TERMINATOR,
|
||||
zone_table[room->zone].number, bit, room->sector_type
|
||||
"%d %d %d %d %d %d\n",
|
||||
room->number,
|
||||
room->name ? room->name : "Untitled", STRING_TERMINATOR,
|
||||
buf, STRING_TERMINATOR,
|
||||
zone_table[room->zone].number, room->room_flags[0], room->room_flags[1], room->room_flags[2],
|
||||
room->room_flags[3], room->sector_type
|
||||
);
|
||||
|
||||
/* Now you write out the exits for the room. */
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ struct bfs_queue_struct {
|
|||
static struct bfs_queue_struct *queue_head = 0, *queue_tail = 0;
|
||||
|
||||
/* Utility macros */
|
||||
#define MARK(room) (SET_BIT(ROOM_FLAGS(room), ROOM_BFS_MARK))
|
||||
#define UNMARK(room) (REMOVE_BIT(ROOM_FLAGS(room), ROOM_BFS_MARK))
|
||||
#define MARK(room) (SET_BIT_AR(ROOM_FLAGS(room), ROOM_BFS_MARK))
|
||||
#define UNMARK(room) (REMOVE_BIT_AR(ROOM_FLAGS(room), ROOM_BFS_MARK))
|
||||
#define IS_MARKED(room) (ROOM_FLAGGED(room, ROOM_BFS_MARK))
|
||||
#define TOROOM(x, y) (world[(x)].dir_option[(y)]->to_room)
|
||||
#define IS_CLOSED(x, y) (EXIT_FLAGGED(world[(x)].dir_option[(y)], EX_CLOSED))
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ extern struct char_data *combat_list;
|
|||
int apply_ac(struct char_data *ch, int eq_pos);
|
||||
void update_object(struct obj_data *obj, int use);
|
||||
void update_char_objects(struct char_data *ch);
|
||||
void affect_modify(struct char_data *ch, byte loc, sbyte mod, bitvector_t bitv, bool add);
|
||||
void affect_modify(struct char_data *ch, byte loc, sbyte mod, long bitv, bool add);
|
||||
|
||||
/* external functions */
|
||||
int invalid_class(struct char_data *ch, struct obj_data *obj);
|
||||
|
|
@ -107,15 +107,8 @@ int isname(const char *str, const char *namelist)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void affect_modify(struct char_data *ch, byte loc, sbyte mod, bitvector_t bitv, bool add)
|
||||
void aff_apply_modify(struct char_data *ch, byte loc, sbyte mod, char *msg)
|
||||
{
|
||||
if (add)
|
||||
SET_BIT(AFF_FLAGS(ch), bitv);
|
||||
else {
|
||||
REMOVE_BIT(AFF_FLAGS(ch), bitv);
|
||||
mod = -mod;
|
||||
}
|
||||
|
||||
switch (loc) {
|
||||
case APPLY_NONE:
|
||||
break;
|
||||
|
|
@ -214,6 +207,38 @@ void affect_modify(struct char_data *ch, byte loc, sbyte mod, bitvector_t bitv,
|
|||
} /* switch */
|
||||
}
|
||||
|
||||
void affect_modify(struct char_data * ch, byte loc, sbyte mod, long bitv, bool add)
|
||||
{
|
||||
if (add) {
|
||||
SET_BIT_AR(AFF_FLAGS(ch), bitv);
|
||||
} else {
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), bitv);
|
||||
mod = -mod;
|
||||
}
|
||||
|
||||
aff_apply_modify(ch, loc, mod, "affect_modify");
|
||||
}
|
||||
|
||||
void affect_modify_ar(struct char_data * ch, byte loc, sbyte mod, int bitv[], bool add)
|
||||
{
|
||||
int i , j;
|
||||
|
||||
if (add) {
|
||||
for(i = 0; i < AF_ARRAY_MAX; i++)
|
||||
for(j = 0; j < 32; j++)
|
||||
if(IS_SET_AR(bitv, (i*32)+j))
|
||||
SET_BIT_AR(AFF_FLAGS(ch), (i*32)+j);
|
||||
} else {
|
||||
for(i = 0; i < AF_ARRAY_MAX; i++)
|
||||
for(j = 0; j < 32; j++)
|
||||
if(IS_SET_AR(bitv, (i*32)+j))
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), (i*32)+j);
|
||||
mod = -mod;
|
||||
}
|
||||
|
||||
aff_apply_modify(ch, loc, mod, "affect_modify_ar");
|
||||
}
|
||||
|
||||
/* This updates a character by subtracting everything he is affected by
|
||||
* restoring original abilities, and then affecting all again. */
|
||||
void affect_total(struct char_data *ch)
|
||||
|
|
@ -224,7 +249,7 @@ void affect_total(struct char_data *ch)
|
|||
for (i = 0; i < NUM_WEARS; i++) {
|
||||
if (GET_EQ(ch, i))
|
||||
for (j = 0; j < MAX_OBJ_AFFECT; j++)
|
||||
affect_modify(ch, GET_EQ(ch, i)->affected[j].location,
|
||||
affect_modify_ar(ch, GET_EQ(ch, i)->affected[j].location,
|
||||
GET_EQ(ch, i)->affected[j].modifier,
|
||||
GET_OBJ_AFFECT(GET_EQ(ch, i)), FALSE);
|
||||
}
|
||||
|
|
@ -237,7 +262,7 @@ void affect_total(struct char_data *ch)
|
|||
for (i = 0; i < NUM_WEARS; i++) {
|
||||
if (GET_EQ(ch, i))
|
||||
for (j = 0; j < MAX_OBJ_AFFECT; j++)
|
||||
affect_modify(ch, GET_EQ(ch, i)->affected[j].location,
|
||||
affect_modify_ar(ch, GET_EQ(ch, i)->affected[j].location,
|
||||
GET_EQ(ch, i)->affected[j].modifier,
|
||||
GET_OBJ_AFFECT(GET_EQ(ch, i)), TRUE);
|
||||
}
|
||||
|
|
@ -414,7 +439,7 @@ void obj_to_char(struct obj_data *object, struct char_data *ch)
|
|||
|
||||
/* set flag for crash-save system, but not on mobs! */
|
||||
if (!IS_NPC(ch))
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_CRASH);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_CRASH);
|
||||
} else
|
||||
log("SYSERR: NULL obj (%p) or char (%p) passed to obj_to_char.", object, ch);
|
||||
}
|
||||
|
|
@ -432,7 +457,7 @@ void obj_from_char(struct obj_data *object)
|
|||
|
||||
/* set flag for crash-save system, but not on mobs! */
|
||||
if (!IS_NPC(object->carried_by))
|
||||
SET_BIT(PLR_FLAGS(object->carried_by), PLR_CRASH);
|
||||
SET_BIT_AR(PLR_FLAGS(object->carried_by), PLR_CRASH);
|
||||
|
||||
IS_CARRYING_W(object->carried_by) -= GET_OBJ_WEIGHT(object);
|
||||
IS_CARRYING_N(object->carried_by)--;
|
||||
|
|
@ -528,7 +553,7 @@ void equip_char(struct char_data *ch, struct obj_data *obj, int pos)
|
|||
log("SYSERR: IN_ROOM(ch) = NOWHERE when equipping char %s.", GET_NAME(ch));
|
||||
|
||||
for (j = 0; j < MAX_OBJ_AFFECT; j++)
|
||||
affect_modify(ch, obj->affected[j].location,
|
||||
affect_modify_ar(ch, obj->affected[j].location,
|
||||
obj->affected[j].modifier,
|
||||
GET_OBJ_AFFECT(obj), TRUE);
|
||||
|
||||
|
|
@ -562,7 +587,7 @@ struct obj_data *unequip_char(struct char_data *ch, int pos)
|
|||
GET_EQ(ch, pos) = NULL;
|
||||
|
||||
for (j = 0; j < MAX_OBJ_AFFECT; j++)
|
||||
affect_modify(ch, obj->affected[j].location,
|
||||
affect_modify_ar(ch, obj->affected[j].location,
|
||||
obj->affected[j].modifier,
|
||||
GET_OBJ_AFFECT(obj), FALSE);
|
||||
|
||||
|
|
@ -663,7 +688,7 @@ void obj_to_room(struct obj_data *object, room_rnum room)
|
|||
IN_ROOM(object) = room;
|
||||
object->carried_by = NULL;
|
||||
if (ROOM_FLAGGED(room, ROOM_HOUSE))
|
||||
SET_BIT(ROOM_FLAGS(room), ROOM_HOUSE_CRASH);
|
||||
SET_BIT_AR(ROOM_FLAGS(room), ROOM_HOUSE_CRASH);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -681,7 +706,7 @@ void obj_from_room(struct obj_data *object)
|
|||
REMOVE_FROM_LIST(object, world[IN_ROOM(object)].contents, next_content);
|
||||
|
||||
if (ROOM_FLAGGED(IN_ROOM(object), ROOM_HOUSE))
|
||||
SET_BIT(ROOM_FLAGS(IN_ROOM(object)), ROOM_HOUSE_CRASH);
|
||||
SET_BIT_AR(ROOM_FLAGS(IN_ROOM(object)), ROOM_HOUSE_CRASH);
|
||||
IN_ROOM(object) = NOWHERE;
|
||||
object->next_content = NULL;
|
||||
}
|
||||
|
|
@ -944,9 +969,9 @@ void extract_char(struct char_data *ch)
|
|||
char_from_furniture(ch);
|
||||
|
||||
if (IS_NPC(ch))
|
||||
SET_BIT(MOB_FLAGS(ch), MOB_NOTDEADYET);
|
||||
SET_BIT_AR(MOB_FLAGS(ch), MOB_NOTDEADYET);
|
||||
else
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_NOTDEADYET);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_NOTDEADYET);
|
||||
|
||||
extractions_pending++;
|
||||
}
|
||||
|
|
@ -966,9 +991,9 @@ void extract_pending_chars(void)
|
|||
next_vict = vict->next;
|
||||
|
||||
if (MOB_FLAGGED(vict, MOB_NOTDEADYET))
|
||||
REMOVE_BIT(MOB_FLAGS(vict), MOB_NOTDEADYET);
|
||||
REMOVE_BIT_AR(MOB_FLAGS(vict), MOB_NOTDEADYET);
|
||||
else if (PLR_FLAGGED(vict, PLR_NOTDEADYET))
|
||||
REMOVE_BIT(PLR_FLAGS(vict), PLR_NOTDEADYET);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(vict), PLR_NOTDEADYET);
|
||||
else {
|
||||
/* Last non-free'd character to continue chain from. */
|
||||
prev_vict = vict;
|
||||
|
|
@ -1222,6 +1247,7 @@ struct obj_data *create_money(int amount)
|
|||
struct obj_data *obj;
|
||||
struct extra_descr_data *new_descr;
|
||||
char buf[200];
|
||||
int y;
|
||||
|
||||
if (amount <= 0) {
|
||||
log("SYSERR: Try to create negative or 0 money. (%d)", amount);
|
||||
|
|
@ -1261,7 +1287,9 @@ struct obj_data *create_money(int amount)
|
|||
obj->ex_description = new_descr;
|
||||
|
||||
GET_OBJ_TYPE(obj) = ITEM_MONEY;
|
||||
GET_OBJ_WEAR(obj) = ITEM_WEAR_TAKE;
|
||||
for(y = 0; y < TW_ARRAY_MAX; y++)
|
||||
obj->obj_flags.wear_flags[y] = 0;
|
||||
SET_BIT_AR(GET_OBJ_WEAR(obj), ITEM_WEAR_TAKE);
|
||||
GET_OBJ_VAL(obj, 0) = amount;
|
||||
GET_OBJ_COST(obj) = amount;
|
||||
obj->item_number = NOTHING;
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ ACMD(do_oasis_hedit)
|
|||
|
||||
STATE(d) = CON_HEDIT;
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing help files.", GET_NAME(d->character));
|
||||
}
|
||||
|
||||
|
|
|
|||
24
src/house.c
24
src/house.c
|
|
@ -146,7 +146,7 @@ void House_crashsave(room_vnum vnum)
|
|||
}
|
||||
fclose(fp);
|
||||
House_restore_weight(world[rnum].contents);
|
||||
REMOVE_BIT(ROOM_FLAGS(rnum), ROOM_HOUSE_CRASH);
|
||||
REMOVE_BIT_AR(ROOM_FLAGS(rnum), ROOM_HOUSE_CRASH);
|
||||
}
|
||||
|
||||
/* Delete a house save file */
|
||||
|
|
@ -275,8 +275,8 @@ void House_boot(void)
|
|||
|
||||
house_control[num_of_houses++] = temp_house;
|
||||
|
||||
SET_BIT(ROOM_FLAGS(real_house), ROOM_HOUSE | ROOM_PRIVATE);
|
||||
SET_BIT(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
SET_BIT_AR(ROOM_FLAGS(real_house), ROOM_HOUSE | ROOM_PRIVATE);
|
||||
SET_BIT_AR(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
House_load(temp_house.vnum);
|
||||
}
|
||||
|
||||
|
|
@ -425,8 +425,8 @@ void hcontrol_build_house(struct char_data *ch, char *arg)
|
|||
|
||||
house_control[num_of_houses++] = temp_house;
|
||||
|
||||
SET_BIT(ROOM_FLAGS(real_house), ROOM_HOUSE | ROOM_PRIVATE);
|
||||
SET_BIT(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
SET_BIT_AR(ROOM_FLAGS(real_house), ROOM_HOUSE | ROOM_PRIVATE);
|
||||
SET_BIT_AR(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
House_crashsave(virt_house);
|
||||
|
||||
send_to_char(ch, "House built. Mazel tov!\r\n");
|
||||
|
|
@ -449,12 +449,12 @@ void hcontrol_destroy_house(struct char_data *ch, char *arg)
|
|||
if ((real_atrium = real_room(house_control[i].atrium)) == NOWHERE)
|
||||
log("SYSERR: House %d had invalid atrium %d!", atoi(arg), house_control[i].atrium);
|
||||
else
|
||||
REMOVE_BIT(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
REMOVE_BIT_AR(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
|
||||
if ((real_house = real_room(house_control[i].vnum)) == NOWHERE)
|
||||
log("SYSERR: House %d had invalid vnum %d!", atoi(arg), house_control[i].vnum);
|
||||
else
|
||||
REMOVE_BIT(ROOM_FLAGS(real_house), ROOM_HOUSE | ROOM_PRIVATE | ROOM_HOUSE_CRASH);
|
||||
REMOVE_BIT_AR(ROOM_FLAGS(real_house), ROOM_HOUSE | ROOM_PRIVATE | ROOM_HOUSE_CRASH);
|
||||
|
||||
House_delete_file(house_control[i].vnum);
|
||||
|
||||
|
|
@ -470,7 +470,7 @@ void hcontrol_destroy_house(struct char_data *ch, char *arg)
|
|||
* case the house we just deleted shared an atrium with another house. -JE */
|
||||
for (i = 0; i < num_of_houses; i++)
|
||||
if ((real_atrium = real_room(house_control[i].atrium)) != NOWHERE)
|
||||
SET_BIT(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
SET_BIT_AR(ROOM_FLAGS(real_atrium), ROOM_ATRIUM);
|
||||
}
|
||||
|
||||
void hcontrol_pay_house(struct char_data *ch, char *arg)
|
||||
|
|
@ -729,7 +729,7 @@ struct obj_data *Obj_from_store(struct obj_file_elem object, int *location)
|
|||
{
|
||||
struct obj_data *obj;
|
||||
obj_rnum itemnum;
|
||||
int j;
|
||||
int j, taeller;
|
||||
|
||||
*location = 0;
|
||||
if ((itemnum = real_object(object.item_number)) == NOTHING)
|
||||
|
|
@ -743,10 +743,12 @@ struct obj_data *Obj_from_store(struct obj_file_elem object, int *location)
|
|||
GET_OBJ_VAL(obj, 1) = object.value[1];
|
||||
GET_OBJ_VAL(obj, 2) = object.value[2];
|
||||
GET_OBJ_VAL(obj, 3) = object.value[3];
|
||||
GET_OBJ_EXTRA(obj) = object.extra_flags;
|
||||
for(taeller = 0; taeller < EF_ARRAY_MAX; taeller++)
|
||||
GET_OBJ_EXTRA(obj)[taeller] = object.extra_flags[taeller];
|
||||
GET_OBJ_WEIGHT(obj) = object.weight;
|
||||
GET_OBJ_TIMER(obj) = object.timer;
|
||||
GET_OBJ_AFFECT(obj) = object.bitvector;
|
||||
for(taeller = 0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
GET_OBJ_AFFECT(obj)[taeller] = object.bitvector[taeller];
|
||||
|
||||
for (j = 0; j < MAX_OBJ_AFFECT; j++)
|
||||
obj->affected[j] = object.affected[j];
|
||||
|
|
|
|||
|
|
@ -562,7 +562,7 @@ void command_interpreter(struct char_data *ch, char *argument)
|
|||
char *line;
|
||||
char arg[MAX_INPUT_LENGTH];
|
||||
|
||||
REMOVE_BIT(AFF_FLAGS(ch), AFF_HIDE);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), AFF_HIDE);
|
||||
|
||||
/* just drop to next line for hitting CR */
|
||||
skip_spaces(&argument);
|
||||
|
|
@ -1208,8 +1208,8 @@ int perform_dupe_check(struct descriptor_data *d)
|
|||
d->character->desc = d;
|
||||
d->original = NULL;
|
||||
d->character->char_specials.timer = 0;
|
||||
REMOVE_BIT(PLR_FLAGS(d->character), PLR_MAILING | PLR_WRITING);
|
||||
REMOVE_BIT(AFF_FLAGS(d->character), AFF_GROUP);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_MAILING | PLR_WRITING);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(d->character), AFF_GROUP);
|
||||
STATE(d) = CON_PLAYING;
|
||||
|
||||
switch (mode) {
|
||||
|
|
@ -1383,9 +1383,8 @@ void nanny(struct descriptor_data *d, char *arg)
|
|||
STATE(d) = CON_NAME_CNFRM;
|
||||
} else {
|
||||
/* undo it just in case they are set */
|
||||
REMOVE_BIT(PLR_FLAGS(d->character),
|
||||
PLR_WRITING | PLR_MAILING | PLR_CRYO);
|
||||
REMOVE_BIT(AFF_FLAGS(d->character), AFF_GROUP);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING | PLR_MAILING | PLR_CRYO);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(d->character), AFF_GROUP);
|
||||
d->character->player.time.logon = time(0);
|
||||
write_to_output(d, "Password: ");
|
||||
echo_off(d);
|
||||
|
|
@ -1640,7 +1639,7 @@ void nanny(struct descriptor_data *d, char *arg)
|
|||
}
|
||||
d->has_prompt = 0;
|
||||
/* We've updated to 3.1 - some bits might be set wrongly: */
|
||||
REMOVE_BIT(PRF_FLAGS(d->character), PRF_BUILDWALK);
|
||||
REMOVE_BIT_AR(PRF_FLAGS(d->character), PRF_BUILDWALK);
|
||||
break;
|
||||
|
||||
case '2':
|
||||
|
|
@ -1714,7 +1713,7 @@ void nanny(struct descriptor_data *d, char *arg)
|
|||
return;
|
||||
}
|
||||
if (GET_LEVEL(d->character) < LVL_GRGOD)
|
||||
SET_BIT(PLR_FLAGS(d->character), PLR_DELETED);
|
||||
SET_BIT_AR(PLR_FLAGS(d->character), PLR_DELETED);
|
||||
save_char(d->character);
|
||||
Crash_delete_file(GET_NAME(d->character));
|
||||
/* If the selfdelete_fastwipe flag is set (in config.c), remove all the
|
||||
|
|
|
|||
10
src/magic.c
10
src/magic.c
|
|
@ -692,7 +692,7 @@ void mag_summons(int level, struct char_data *ch, struct obj_data *obj,
|
|||
char_to_room(mob, IN_ROOM(ch));
|
||||
IS_CARRYING_W(mob) = 0;
|
||||
IS_CARRYING_N(mob) = 0;
|
||||
SET_BIT(AFF_FLAGS(mob), AFF_CHARM);
|
||||
SET_BIT_AR(AFF_FLAGS(mob), AFF_CHARM);
|
||||
if (spellnum == SPELL_CLONE) {
|
||||
/* Don't mess up the prototype; use new string copies. */
|
||||
mob->player.name = strdup(GET_NAME(ch));
|
||||
|
|
@ -798,13 +798,13 @@ void mag_alter_objs(int level, struct char_data *ch, struct obj_data *obj,
|
|||
case SPELL_BLESS:
|
||||
if (!OBJ_FLAGGED(obj, ITEM_BLESS) &&
|
||||
(GET_OBJ_WEIGHT(obj) <= 5 * GET_LEVEL(ch))) {
|
||||
SET_BIT(GET_OBJ_EXTRA(obj), ITEM_BLESS);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_BLESS);
|
||||
to_char = "$p glows briefly.";
|
||||
}
|
||||
break;
|
||||
case SPELL_CURSE:
|
||||
if (!OBJ_FLAGGED(obj, ITEM_NODROP)) {
|
||||
SET_BIT(GET_OBJ_EXTRA(obj), ITEM_NODROP);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_NODROP);
|
||||
if (GET_OBJ_TYPE(obj) == ITEM_WEAPON)
|
||||
GET_OBJ_VAL(obj, 2)--;
|
||||
to_char = "$p briefly glows red.";
|
||||
|
|
@ -812,7 +812,7 @@ void mag_alter_objs(int level, struct char_data *ch, struct obj_data *obj,
|
|||
break;
|
||||
case SPELL_INVISIBLE:
|
||||
if (!OBJ_FLAGGED(obj, ITEM_NOINVIS | ITEM_INVISIBLE)) {
|
||||
SET_BIT(GET_OBJ_EXTRA(obj), ITEM_INVISIBLE);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_INVISIBLE);
|
||||
to_char = "$p vanishes.";
|
||||
}
|
||||
break;
|
||||
|
|
@ -826,7 +826,7 @@ void mag_alter_objs(int level, struct char_data *ch, struct obj_data *obj,
|
|||
break;
|
||||
case SPELL_REMOVE_CURSE:
|
||||
if (OBJ_FLAGGED(obj, ITEM_NODROP)) {
|
||||
REMOVE_BIT(GET_OBJ_EXTRA(obj), ITEM_NODROP);
|
||||
REMOVE_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_NODROP);
|
||||
if (GET_OBJ_TYPE(obj) == ITEM_WEAPON)
|
||||
GET_OBJ_VAL(obj, 2)++;
|
||||
to_char = "$p briefly glows blue.";
|
||||
|
|
|
|||
|
|
@ -353,7 +353,7 @@ void postmaster_send_mail(struct char_data *ch, struct char_data *mailman,
|
|||
if (GET_LEVEL(ch) < LVL_IMMORT)
|
||||
GET_GOLD(ch) -= STAMP_PRICE;
|
||||
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_MAILING); /* string_write() sets writing. */
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_MAILING); /* string_write() sets writing. */
|
||||
|
||||
/* Start writing! */
|
||||
CREATE(mailwrite, char *, 1);
|
||||
|
|
@ -374,6 +374,7 @@ void postmaster_receive_mail(struct char_data *ch, struct char_data *mailman,
|
|||
{
|
||||
char buf[256];
|
||||
struct obj_data *obj;
|
||||
int y;
|
||||
|
||||
if (!has_mail(GET_IDNUM(ch))) {
|
||||
snprintf(buf, sizeof(buf), "$n tells you, 'Sorry, you don't have any mail waiting.'");
|
||||
|
|
@ -388,7 +389,9 @@ void postmaster_receive_mail(struct char_data *ch, struct char_data *mailman,
|
|||
obj->description = strdup("Someone has left a piece of mail here.");
|
||||
|
||||
GET_OBJ_TYPE(obj) = ITEM_NOTE;
|
||||
GET_OBJ_WEAR(obj) = ITEM_WEAR_TAKE;
|
||||
for(y = 0; y < TW_ARRAY_MAX; y++)
|
||||
obj->obj_flags.wear_flags[y] = 0;
|
||||
SET_BIT_AR(GET_OBJ_WEAR(obj), ITEM_WEAR_TAKE);
|
||||
GET_OBJ_WEIGHT(obj) = 1;
|
||||
GET_OBJ_COST(obj) = 30;
|
||||
GET_OBJ_RENT(obj) = 10;
|
||||
|
|
|
|||
23
src/medit.c
23
src/medit.c
|
|
@ -160,7 +160,7 @@ ACMD(do_oasis_medit)
|
|||
/* Display the OLC messages to the players in the same room as the
|
||||
builder and also log it. */
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
mudlog(CMP, LVL_IMMORT, TRUE,"OLC: %s starts editing zone %d allowed zone %d",
|
||||
GET_NAME(ch), zone_table[OLC_ZNUM(d)].number, GET_OLC_ZONE(ch));
|
||||
|
|
@ -234,7 +234,7 @@ void init_mobile(struct char_data *mob)
|
|||
mob->real_abils.dex = mob->real_abils.con = mob->real_abils.cha = 11;
|
||||
mob->aff_abils = mob->real_abils;
|
||||
|
||||
SET_BIT(MOB_FLAGS(mob), MOB_ISNPC);
|
||||
SET_BIT_AR(MOB_FLAGS(mob), MOB_ISNPC);
|
||||
mob->player_specials = &dummy_mob;
|
||||
}
|
||||
|
||||
|
|
@ -350,7 +350,7 @@ void medit_disp_mob_flags(struct descriptor_data *d)
|
|||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, action_bits[i],
|
||||
!(++columns % 2) ? "\r\n" : "");
|
||||
}
|
||||
sprintbit(MOB_FLAGS(OLC_MOB(d)), action_bits, flags, sizeof(flags));
|
||||
sprintbitarray(MOB_FLAGS(OLC_MOB(d)), action_bits, AF_ARRAY_MAX, flags);
|
||||
write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter mob flags (0 to quit) : ",
|
||||
cyn, flags, nrm);
|
||||
}
|
||||
|
|
@ -364,10 +364,10 @@ void medit_disp_aff_flags(struct descriptor_data *d)
|
|||
get_char_colors(d->character);
|
||||
clear_screen(d);
|
||||
for (i = 0; i < NUM_AFF_FLAGS; i++) {
|
||||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, affected_bits[i],
|
||||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, i + 1, nrm, affected_bits[i+1],
|
||||
!(++columns % 2) ? "\r\n" : "");
|
||||
}
|
||||
sprintbit(AFF_FLAGS(OLC_MOB(d)), affected_bits, flags, sizeof(flags));
|
||||
sprintbitarray(AFF_FLAGS(OLC_MOB(d)), affected_bits, AF_ARRAY_MAX, flags);
|
||||
write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter aff flags (0 to quit) : ",
|
||||
cyn, flags, nrm);
|
||||
}
|
||||
|
|
@ -414,8 +414,8 @@ void medit_disp_menu(struct descriptor_data *d)
|
|||
grn, nrm, cyn, GET_GOLD(mob), nrm
|
||||
);
|
||||
|
||||
sprintbit(MOB_FLAGS(mob), action_bits, flags, sizeof(flags));
|
||||
sprintbit(AFF_FLAGS(mob), affected_bits, flag2, sizeof(flag2));
|
||||
sprintbitarray(MOB_FLAGS(mob), action_bits, AF_ARRAY_MAX, flags);
|
||||
sprintbitarray(AFF_FLAGS(mob), affected_bits, AF_ARRAY_MAX, flag2);
|
||||
write_to_output(d,
|
||||
"%sI%s) Position : %s%s\r\n"
|
||||
"%sJ%s) Default : %s%s\r\n"
|
||||
|
|
@ -458,7 +458,7 @@ void medit_parse(struct descriptor_data *d, char *arg)
|
|||
switch (OLC_MODE(d)) {
|
||||
case MEDIT_CONFIRM_SAVESTRING:
|
||||
/* Ensure mob has MOB_ISNPC set. */
|
||||
SET_BIT(MOB_FLAGS(OLC_MOB(d)), MOB_ISNPC);
|
||||
SET_BIT_AR(MOB_FLAGS(OLC_MOB(d)), MOB_ISNPC);
|
||||
switch (*arg) {
|
||||
case 'y':
|
||||
case 'Y':
|
||||
|
|
@ -669,7 +669,7 @@ void medit_parse(struct descriptor_data *d, char *arg)
|
|||
if ((i = atoi(arg)) <= 0)
|
||||
break;
|
||||
else if (i <= NUM_MOB_FLAGS)
|
||||
TOGGLE_BIT(MOB_FLAGS(OLC_MOB(d)), 1 << (i - 1));
|
||||
TOGGLE_BIT_AR(MOB_FLAGS(OLC_MOB(d)), 1 << (i - 1));
|
||||
medit_disp_mob_flags(d);
|
||||
return;
|
||||
|
||||
|
|
@ -677,11 +677,10 @@ void medit_parse(struct descriptor_data *d, char *arg)
|
|||
if ((i = atoi(arg)) <= 0)
|
||||
break;
|
||||
else if (i <= NUM_AFF_FLAGS)
|
||||
TOGGLE_BIT(AFF_FLAGS(OLC_MOB(d)), 1 << (i - 1));
|
||||
TOGGLE_BIT_AR(AFF_FLAGS(OLC_MOB(d)), 1 << (i - 1));
|
||||
|
||||
/* Remove unwanted bits right away. */
|
||||
REMOVE_BIT(AFF_FLAGS(OLC_MOB(d)),
|
||||
AFF_CHARM | AFF_POISON | AFF_GROUP | AFF_SLEEP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(OLC_MOB(d)), AFF_CHARM | AFF_POISON | AFF_GROUP | AFF_SLEEP);
|
||||
medit_disp_aff_flags(d);
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ void mobile_activity(void)
|
|||
if (mob_index[GET_MOB_RNUM(ch)].func == NULL) {
|
||||
log("SYSERR: %s (#%d): Attempting to call non-existing mob function.",
|
||||
GET_NAME(ch), GET_MOB_VNUM(ch));
|
||||
REMOVE_BIT(MOB_FLAGS(ch), MOB_SPEC);
|
||||
REMOVE_BIT_AR(MOB_FLAGS(ch), MOB_SPEC);
|
||||
} else {
|
||||
char actbuf[MAX_INPUT_LENGTH] = "";
|
||||
if ((mob_index[GET_MOB_RNUM(ch)].func) (ch, ch, 0, actbuf))
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ void smash_tilde(char *str)
|
|||
void string_write(struct descriptor_data *d, char **writeto, size_t len, long mailto, void *data)
|
||||
{
|
||||
if (d->character && !IS_NPC(d->character))
|
||||
SET_BIT(PLR_FLAGS(d->character), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING);
|
||||
|
||||
if (using_improved_editor)
|
||||
d->backstr = (char *)data;
|
||||
|
|
@ -202,7 +202,7 @@ void string_add(struct descriptor_data *d, char *str)
|
|||
d->mail_to = 0;
|
||||
d->max_str = 0;
|
||||
if (d->character && !IS_NPC(d->character))
|
||||
REMOVE_BIT(PLR_FLAGS(d->character), PLR_MAILING | PLR_WRITING);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_MAILING | PLR_WRITING);
|
||||
} else if (action != STRINGADD_ACTION && strlen(*d->str) + 3 <= d->max_str) /* 3 = \r\n\0 */
|
||||
strcat(*d->str, "\r\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ void cleanup_olc(struct descriptor_data *d, byte cleanup_type)
|
|||
|
||||
/* Restore descriptor playing status. */
|
||||
if (d->character) {
|
||||
REMOVE_BIT(PLR_FLAGS(d->character), PLR_WRITING);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_WRITING);
|
||||
act("$n stops using OLC.", TRUE, d->character, NULL, NULL, TO_ROOM);
|
||||
|
||||
if (cleanup_type == CLEANUP_CONFIG)
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ ACMD(do_dig)
|
|||
ACMD(do_room_copy)
|
||||
{
|
||||
struct room_data *room_src, *room_dst;
|
||||
int room_num, j, buf_num;
|
||||
int room_num, j, buf_num, taeller;
|
||||
zone_rnum dst_zone;
|
||||
struct descriptor_data *dsc;
|
||||
char buf[MAX_INPUT_LENGTH];
|
||||
|
|
@ -210,8 +210,9 @@ ACMD(do_room_copy)
|
|||
room_dst->description = str_udup(world[IN_ROOM(ch)].description);
|
||||
room_dst->description = str_udup(world[IN_ROOM(ch)].description);
|
||||
room_dst->number = buf_num;
|
||||
room_dst->room_flags = ROOM_FLAGS(IN_ROOM(ch));
|
||||
room_dst->sector_type = world[IN_ROOM(ch)].sector_type;
|
||||
for(taeller=0; taeller < RF_ARRAY_MAX; taeller++)
|
||||
room_dst->room_flags[taeller] = ROOM_FLAGS(IN_ROOM(ch))[taeller];
|
||||
|
||||
/* Extra descriptions, if necessary. */
|
||||
send_to_char(ch, "Cloning extra descriptions....\r\n");
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ int objsave_save_obj_record(struct obj_data *obj, FILE *fp, int locate)
|
|||
int counter2;
|
||||
struct extra_descr_data *ex_desc;
|
||||
char buf1[MAX_STRING_LENGTH +1];
|
||||
char flags[65];
|
||||
struct obj_data *temp = NULL;
|
||||
|
||||
if (GET_OBJ_VNUM(obj) != NOTHING)
|
||||
|
|
@ -105,10 +104,8 @@ int objsave_save_obj_record(struct obj_data *obj, FILE *fp, int locate)
|
|||
GET_OBJ_VAL(obj, 2),
|
||||
GET_OBJ_VAL(obj, 3)
|
||||
);
|
||||
if (GET_OBJ_EXTRA(obj) != GET_OBJ_EXTRA(temp)) {
|
||||
sprintascii(flags, GET_OBJ_EXTRA(obj));
|
||||
fprintf(fp, "Flag: %s\n", flags);
|
||||
}
|
||||
if (GET_OBJ_EXTRA(obj) != GET_OBJ_EXTRA(temp))
|
||||
fprintf(fp, "Flag: %d %d %d %d\n", GET_OBJ_EXTRA(obj)[0], GET_OBJ_EXTRA(obj)[1], GET_OBJ_EXTRA(obj)[2], GET_OBJ_EXTRA(obj)[3]);
|
||||
|
||||
#define TEST_OBJS(obj1, obj2, field) ((!obj1->field || !obj2->field || \
|
||||
strcmp(obj1->field, obj2->field)))
|
||||
|
|
@ -136,14 +133,10 @@ int objsave_save_obj_record(struct obj_data *obj, FILE *fp, int locate)
|
|||
fprintf(fp, "Cost: %d\n", GET_OBJ_COST(obj));
|
||||
if (TEST_OBJN(cost_per_day))
|
||||
fprintf(fp, "Rent: %d\n", GET_OBJ_RENT(obj));
|
||||
if (TEST_OBJN(bitvector)) {
|
||||
sprintascii(flags, obj->obj_flags.bitvector);
|
||||
fprintf(fp, "Perm: %s\n", flags);
|
||||
}
|
||||
if (TEST_OBJN(wear_flags)) {
|
||||
sprintascii(flags, GET_OBJ_WEAR(obj));
|
||||
fprintf(fp, "Wear: %s\n", flags);
|
||||
}
|
||||
if (TEST_OBJN(bitvector))
|
||||
fprintf(fp, "Perm: %d %d %d %d\n", GET_OBJ_PERM(obj)[0], GET_OBJ_PERM(obj)[1], GET_OBJ_PERM(obj)[2], GET_OBJ_PERM(obj)[3]);
|
||||
if (TEST_OBJN(wear_flags))
|
||||
fprintf(fp, "Wear: %d %d %d %d\n", GET_OBJ_WEAR(obj)[0], GET_OBJ_WEAR(obj)[1], GET_OBJ_WEAR(obj)[2], GET_OBJ_WEAR(obj)[3]);
|
||||
|
||||
/* Do we have affects? */
|
||||
for (counter2 = 0; counter2 < MAX_OBJ_AFFECT; counter2++)
|
||||
|
|
@ -614,7 +607,7 @@ void Crash_crashsave(struct char_data *ch)
|
|||
|
||||
fprintf(fp, "$~\n");
|
||||
fclose(fp);
|
||||
REMOVE_BIT(PLR_FLAGS(ch), PLR_CRASH);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(ch), PLR_CRASH);
|
||||
}
|
||||
|
||||
void Crash_idlesave(struct char_data *ch)
|
||||
|
|
@ -790,7 +783,7 @@ void Crash_cryosave(struct char_data *ch, int cost)
|
|||
fclose(fp);
|
||||
|
||||
Crash_extract_objs(ch->carrying);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_CRYO);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_CRYO);
|
||||
}
|
||||
|
||||
/* Routines used for the receptionist. */
|
||||
|
|
@ -961,7 +954,7 @@ int gen_receptionist(struct char_data *ch, struct char_data *recep, int cmd,
|
|||
FALSE, recep, 0, ch, TO_VICT);
|
||||
Crash_cryosave(ch, cost);
|
||||
mudlog(NRM, MAX(LVL_IMMORT, GET_INVIS_LEV(ch)), TRUE, "%s has cryo-rented.", GET_NAME(ch));
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_CRYO);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_CRYO);
|
||||
}
|
||||
|
||||
act("$n helps $N into $S private chamber.", FALSE, recep, 0, ch, TO_NOTVICT);
|
||||
|
|
@ -993,7 +986,7 @@ void Crash_save_all(void)
|
|||
if (PLR_FLAGGED(d->character, PLR_CRASH)) {
|
||||
Crash_crashsave(d->character);
|
||||
save_char(d->character);
|
||||
REMOVE_BIT(PLR_FLAGS(d->character), PLR_CRASH);
|
||||
REMOVE_BIT_AR(PLR_FLAGS(d->character), PLR_CRASH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1005,7 +998,7 @@ void Crash_save_all(void)
|
|||
obj_save_data *objsave_parse_objects(FILE *fl)
|
||||
{
|
||||
obj_save_data *head, *current;
|
||||
char line[READ_SIZE];
|
||||
char f1[128], f2[128], f3[128], f4[128], line[READ_SIZE];
|
||||
int t[4],i, nr;
|
||||
struct obj_data *temp;
|
||||
|
||||
|
|
@ -1122,8 +1115,13 @@ obj_save_data *objsave_parse_objects(FILE *fl)
|
|||
}
|
||||
break;
|
||||
case 'F':
|
||||
if (!strcmp(tag, "Flag"))
|
||||
GET_OBJ_EXTRA(temp) = asciiflag_conv(line);
|
||||
if (!strcmp(tag, "Flag")) {
|
||||
sscanf(line, "%s %s %s %s", f1, f2, f3, f4);
|
||||
GET_OBJ_EXTRA(temp)[0] = asciiflag_conv(f1);
|
||||
GET_OBJ_EXTRA(temp)[1] = asciiflag_conv(f2);
|
||||
GET_OBJ_EXTRA(temp)[2] = asciiflag_conv(f3);
|
||||
GET_OBJ_EXTRA(temp)[3] = asciiflag_conv(f4);
|
||||
}
|
||||
break;
|
||||
case 'L':
|
||||
if(!strcmp(tag, "Loc "))
|
||||
|
|
@ -1134,8 +1132,13 @@ obj_save_data *objsave_parse_objects(FILE *fl)
|
|||
temp->name = strdup(line);
|
||||
break;
|
||||
case 'P':
|
||||
if (!strcmp(tag, "Perm"))
|
||||
temp->obj_flags.bitvector = asciiflag_conv(line);
|
||||
if (!strcmp(tag, "Perm")) {
|
||||
sscanf(line, "%s %s %s %s", f1, f2, f3, f4);
|
||||
GET_OBJ_PERM(temp)[0] = asciiflag_conv(f1);
|
||||
GET_OBJ_PERM(temp)[1] = asciiflag_conv(f2);
|
||||
GET_OBJ_PERM(temp)[2] = asciiflag_conv(f3);
|
||||
GET_OBJ_PERM(temp)[3] = asciiflag_conv(f4);
|
||||
}
|
||||
break;
|
||||
case 'R':
|
||||
if (!strcmp(tag, "Rent"))
|
||||
|
|
@ -1150,8 +1153,13 @@ obj_save_data *objsave_parse_objects(FILE *fl)
|
|||
GET_OBJ_TYPE(temp) = num;
|
||||
break;
|
||||
case 'W':
|
||||
if (!strcmp(tag, "Wear"))
|
||||
GET_OBJ_WEAR(temp) = asciiflag_conv(line);
|
||||
if (!strcmp(tag, "Wear")) {
|
||||
sscanf(line, "%s %s %s %s", f1, f2, f3, f4);
|
||||
GET_OBJ_WEAR(temp)[0] = asciiflag_conv(f1);
|
||||
GET_OBJ_WEAR(temp)[1] = asciiflag_conv(f2);
|
||||
GET_OBJ_WEAR(temp)[2] = asciiflag_conv(f3);
|
||||
GET_OBJ_WEAR(temp)[3] = asciiflag_conv(f4);
|
||||
}
|
||||
else if (!strcmp(tag, "Wght"))
|
||||
GET_OBJ_WEIGHT(temp) = num;
|
||||
break;
|
||||
|
|
|
|||
32
src/oedit.c
32
src/oedit.c
|
|
@ -174,7 +174,7 @@ ACMD(do_oasis_oedit)
|
|||
|
||||
/* Send the OLC message to the players in the same room as the builder. */
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
/* Log the OLC message. */
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing zone %d allowed zone %d",
|
||||
|
|
@ -189,7 +189,7 @@ void oedit_setup_new(struct descriptor_data *d)
|
|||
OLC_OBJ(d)->name = strdup("unfinished object");
|
||||
OLC_OBJ(d)->description = strdup("An unfinished object is lying here.");
|
||||
OLC_OBJ(d)->short_description = strdup("an unfinished object");
|
||||
GET_OBJ_WEAR(OLC_OBJ(d)) = ITEM_WEAR_TAKE;
|
||||
SET_BIT_AR(GET_OBJ_WEAR(OLC_OBJ(d)), ITEM_WEAR_TAKE);
|
||||
OLC_VAL(d) = 0;
|
||||
OLC_ITEM_TYPE(d) = OBJ_TRIGGER;
|
||||
|
||||
|
|
@ -433,7 +433,7 @@ void oedit_disp_val1_menu(struct descriptor_data *d)
|
|||
write_to_output(d, "Spell level : ");
|
||||
break;
|
||||
case ITEM_WEAPON:
|
||||
/* This doesn't seem to be used if I remembe right. */
|
||||
/* This doesn't seem to be used if I remember right. */
|
||||
write_to_output(d, "Modifier to Hitroll : ");
|
||||
break;
|
||||
case ITEM_ARMOR:
|
||||
|
|
@ -578,7 +578,7 @@ void oedit_disp_extra_menu(struct descriptor_data *d)
|
|||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm,
|
||||
extra_bits[counter], !(++columns % 2) ? "\r\n" : "");
|
||||
}
|
||||
sprintbit(GET_OBJ_EXTRA(OLC_OBJ(d)), extra_bits, bits, sizeof(bits));
|
||||
sprintbitarray(GET_OBJ_EXTRA(OLC_OBJ(d)), extra_bits, EF_ARRAY_MAX, bits);
|
||||
write_to_output(d, "\r\nObject flags: %s%s%s\r\n"
|
||||
"Enter object extra flag (0 to quit) : ",
|
||||
cyn, bits, nrm);
|
||||
|
|
@ -596,7 +596,7 @@ void oedit_disp_perm_menu(struct descriptor_data *d)
|
|||
for (counter = 0; counter < NUM_AFF_FLAGS; counter++) {
|
||||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm, affected_bits[counter], !(++columns % 2) ? "\r\n" : "");
|
||||
}
|
||||
sprintbit(GET_OBJ_PERM(OLC_OBJ(d)), affected_bits, bits, sizeof(bits));
|
||||
sprintbitarray(GET_OBJ_PERM(OLC_OBJ(d)), affected_bits, EF_ARRAY_MAX, bits);
|
||||
write_to_output(d, "\r\nObject permanent flags: %s%s%s\r\n"
|
||||
"Enter object perm flag (0 to quit) : ", cyn, bits, nrm);
|
||||
}
|
||||
|
|
@ -614,7 +614,7 @@ void oedit_disp_wear_menu(struct descriptor_data *d)
|
|||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm,
|
||||
wear_bits[counter], !(++columns % 2) ? "\r\n" : "");
|
||||
}
|
||||
sprintbit(GET_OBJ_WEAR(OLC_OBJ(d)), wear_bits, bits, sizeof(bits));
|
||||
sprintbitarray(GET_OBJ_WEAR(OLC_OBJ(d)), wear_bits, TW_ARRAY_MAX, bits);
|
||||
write_to_output(d, "\r\nWear flags: %s%s%s\r\n"
|
||||
"Enter wear flag, 0 to quit : ", cyn, bits, nrm);
|
||||
}
|
||||
|
|
@ -632,7 +632,7 @@ void oedit_disp_menu(struct descriptor_data *d)
|
|||
|
||||
/* Build buffers for first part of menu. */
|
||||
sprinttype(GET_OBJ_TYPE(obj), item_types, buf1, sizeof(buf1));
|
||||
sprintbit(GET_OBJ_EXTRA(obj), extra_bits, buf2, sizeof(buf2));
|
||||
sprintbitarray(GET_OBJ_EXTRA(obj), extra_bits, EF_ARRAY_MAX, buf2);
|
||||
|
||||
/* Build first half of menu. */
|
||||
write_to_output(d,
|
||||
|
|
@ -653,8 +653,8 @@ void oedit_disp_menu(struct descriptor_data *d)
|
|||
grn, nrm, cyn, buf2
|
||||
);
|
||||
/* Send first half then build second half of menu. */
|
||||
sprintbit(GET_OBJ_WEAR(obj), wear_bits, buf1, sizeof(buf1));
|
||||
sprintbit(GET_OBJ_PERM(obj), affected_bits, buf2, sizeof(buf2));
|
||||
sprintbitarray(GET_OBJ_WEAR(OLC_OBJ(d)), wear_bits, EF_ARRAY_MAX, buf1);
|
||||
sprintbitarray(GET_OBJ_PERM(OLC_OBJ(d)), affected_bits, EF_ARRAY_MAX, buf2);
|
||||
|
||||
write_to_output(d,
|
||||
"%s7%s) Wear flags : %s%s\r\n"
|
||||
|
|
@ -889,7 +889,7 @@ void oedit_parse(struct descriptor_data *d, char *arg)
|
|||
} else if (number == 0)
|
||||
break;
|
||||
else {
|
||||
TOGGLE_BIT(GET_OBJ_EXTRA(OLC_OBJ(d)), 1 << (number - 1));
|
||||
TOGGLE_BIT_AR(GET_OBJ_EXTRA(OLC_OBJ(d)), 1 << (number - 1));
|
||||
oedit_disp_extra_menu(d);
|
||||
return;
|
||||
}
|
||||
|
|
@ -903,7 +903,7 @@ void oedit_parse(struct descriptor_data *d, char *arg)
|
|||
} else if (number == 0) /* Quit. */
|
||||
break;
|
||||
else {
|
||||
TOGGLE_BIT(GET_OBJ_WEAR(OLC_OBJ(d)), 1 << (number - 1));
|
||||
TOGGLE_BIT_AR(GET_OBJ_WEAR(OLC_OBJ(d)), 1 << (number - 1));
|
||||
oedit_disp_wear_menu(d);
|
||||
return;
|
||||
}
|
||||
|
|
@ -931,11 +931,11 @@ void oedit_parse(struct descriptor_data *d, char *arg)
|
|||
case OEDIT_PERM:
|
||||
if ((number = atoi(arg)) == 0)
|
||||
break;
|
||||
if (number > 0 && number <= NUM_AFF_FLAGS)
|
||||
TOGGLE_BIT(GET_OBJ_PERM(OLC_OBJ(d)), 1 << (number - 1));
|
||||
if (IS_SET(GET_OBJ_PERM(OLC_OBJ(d)), AFF_BLIND | AFF_GROUP | AFF_POISON | AFF_SLEEP | AFF_CHARM)) {
|
||||
write_to_output(d, "Illegal bit(s) not set.\r\n");
|
||||
REMOVE_BIT(GET_OBJ_PERM(OLC_OBJ(d)), AFF_BLIND | AFF_GROUP | AFF_POISON | AFF_SLEEP | AFF_CHARM);
|
||||
if (number > 0 && number <= NUM_AFF_FLAGS) {
|
||||
/* Setting AFF_CHARM on objects like this is dangerous. */
|
||||
if (number != AFF_CHARM) {
|
||||
TOGGLE_BIT_AR(GET_OBJ_PERM(OLC_OBJ(d)), number);
|
||||
}
|
||||
}
|
||||
oedit_disp_perm_menu(d);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ int load_char(const char *name, struct char_data *ch)
|
|||
FILE *fl;
|
||||
char fname[40];
|
||||
char buf[128], buf2[128], line[MAX_INPUT_LENGTH + 1], tag[6];
|
||||
char f1[128], f2[128], f3[128], f4[128];
|
||||
|
||||
if ((id = get_ptable_by_name(name)) < 0)
|
||||
return (-1);
|
||||
|
|
@ -227,8 +228,6 @@ int load_char(const char *name, struct char_data *ch)
|
|||
GET_HEIGHT(ch) = PFDEF_HEIGHT;
|
||||
GET_WEIGHT(ch) = PFDEF_WEIGHT;
|
||||
GET_ALIGNMENT(ch) = PFDEF_ALIGNMENT;
|
||||
PLR_FLAGS(ch) = PFDEF_PLRFLAGS;
|
||||
AFF_FLAGS(ch) = PFDEF_AFFFLAGS;
|
||||
for (i = 0; i < NUM_OF_SAVE_THROWS; i++)
|
||||
GET_SAVE(ch, i) = PFDEF_SAVETHROW;
|
||||
GET_LOADROOM(ch) = PFDEF_LOADROOM;
|
||||
|
|
@ -239,7 +238,6 @@ int load_char(const char *name, struct char_data *ch)
|
|||
GET_COND(ch, THIRST) = PFDEF_THIRST;
|
||||
GET_COND(ch, DRUNK) = PFDEF_DRUNK;
|
||||
GET_BAD_PWS(ch) = PFDEF_BADPWS;
|
||||
PRF_FLAGS(ch) = PFDEF_PREFFLAGS;
|
||||
GET_PRACTICES(ch) = PFDEF_PRACTICES;
|
||||
GET_GOLD(ch) = PFDEF_GOLD;
|
||||
GET_BANK_GOLD(ch) = PFDEF_BANK;
|
||||
|
|
@ -268,16 +266,33 @@ int load_char(const char *name, struct char_data *ch)
|
|||
NEXT_SITTING(ch) = NULL;
|
||||
GET_QUESTPOINTS(ch) = PFDEF_QUESTPOINTS;
|
||||
|
||||
for (i = 0; i < AF_ARRAY_MAX; i++)
|
||||
AFF_FLAGS(ch)[i] = PFDEF_AFFFLAGS;
|
||||
for (i = 0; i < PM_ARRAY_MAX; i++)
|
||||
PLR_FLAGS(ch)[i] = PFDEF_PLRFLAGS;
|
||||
for (i = 0; i < PR_ARRAY_MAX; i++)
|
||||
PRF_FLAGS(ch)[i] = PFDEF_PREFFLAGS;
|
||||
|
||||
while (get_line(fl, line)) {
|
||||
tag_argument(line, tag);
|
||||
|
||||
switch (*tag) {
|
||||
case 'A':
|
||||
if (!strcmp(tag, "Ac ")) GET_AC(ch) = atoi(line);
|
||||
else if (!strcmp(tag, "Act ")) PLR_FLAGS(ch) = asciiflag_conv(line);
|
||||
else if (!strcmp(tag, "Aff ")) AFF_FLAGS(ch) = asciiflag_conv(line);
|
||||
else if (!strcmp(tag, "Affs")) load_affects(fl, ch);
|
||||
else if (!strcmp(tag, "Alin")) GET_ALIGNMENT(ch) = atoi(line);
|
||||
if (!strcmp(tag, "Ac ")) GET_AC(ch) = atoi(line);
|
||||
else if (!strcmp(tag, "Act ")) {
|
||||
sscanf(line, "%s %s %s %s", f1, f2, f3, f4);
|
||||
PLR_FLAGS(ch)[0] = asciiflag_conv(f1);
|
||||
PLR_FLAGS(ch)[1] = asciiflag_conv(f2);
|
||||
PLR_FLAGS(ch)[2] = asciiflag_conv(f3);
|
||||
PLR_FLAGS(ch)[3] = asciiflag_conv(f4);
|
||||
} else if (!strcmp(tag, "Aff ")) {
|
||||
sscanf(line, "%s %s %s %s", f1, f2, f3, f4);
|
||||
AFF_FLAGS(ch)[0] = asciiflag_conv(f1);
|
||||
AFF_FLAGS(ch)[1] = asciiflag_conv(f2);
|
||||
AFF_FLAGS(ch)[2] = asciiflag_conv(f3);
|
||||
AFF_FLAGS(ch)[3] = asciiflag_conv(f4);
|
||||
} else if (!strcmp(tag, "Affs")) load_affects(fl, ch);
|
||||
else if (!strcmp(tag, "Alin")) GET_ALIGNMENT(ch) = atoi(line);
|
||||
else if (!strcmp(tag, "Alis")) read_aliases_ascii(fl, ch, atoi(line));
|
||||
break;
|
||||
|
||||
|
|
@ -352,7 +367,12 @@ 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")) PRF_FLAGS(ch) = asciiflag_conv(line);
|
||||
else if (!strcmp(tag, "Pref"))
|
||||
sscanf(line, "%s %s %s %s", f1, f2, f3, f4);
|
||||
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);
|
||||
break;
|
||||
|
||||
case 'R':
|
||||
|
|
@ -409,7 +429,7 @@ int load_char(const char *name, struct char_data *ch)
|
|||
void save_char(struct char_data * ch)
|
||||
{
|
||||
FILE *fl;
|
||||
char fname[40], bits[127], buf[MAX_STRING_LENGTH];
|
||||
char fname[40], buf[MAX_STRING_LENGTH];
|
||||
int i, id, save_index = FALSE;
|
||||
struct affected_type *aff, tmp_aff[MAX_AFFECT];
|
||||
struct obj_data *char_eq[NUM_WEARS];
|
||||
|
|
@ -506,15 +526,12 @@ void save_char(struct char_data * ch)
|
|||
if (GET_WEIGHT(ch) != PFDEF_HEIGHT) fprintf(fl, "Wate: %d\n", GET_WEIGHT(ch));
|
||||
if (GET_ALIGNMENT(ch) != PFDEF_ALIGNMENT) fprintf(fl, "Alin: %d\n", GET_ALIGNMENT(ch));
|
||||
|
||||
if (PLR_FLAGS(ch) != PFDEF_PLRFLAGS) {
|
||||
sprintascii(bits, PLR_FLAGS(ch)); fprintf(fl, "Act : %s\n", bits);
|
||||
}
|
||||
if (AFF_FLAGS(ch) != PFDEF_AFFFLAGS) {
|
||||
sprintascii(bits, AFF_FLAGS(ch)); fprintf(fl, "Aff : %s\n", bits);
|
||||
}
|
||||
if (PRF_FLAGS(ch) != PFDEF_PREFFLAGS) {
|
||||
sprintascii(bits, PRF_FLAGS(ch)); fprintf(fl, "Pref: %s\n", bits);
|
||||
}
|
||||
if(PLR_FLAGS(ch) != PFDEF_PLRFLAGS)
|
||||
fprintf(fl, "Act : %u %u %u %u\n", PLR_FLAGS(ch)[0], PLR_FLAGS(ch)[1], PLR_FLAGS(ch)[2], PLR_FLAGS(ch)[3]);
|
||||
if(AFF_FLAGS(ch) != PFDEF_AFFFLAGS)
|
||||
fprintf(fl, "Aff : %u %u %u %u\n", AFF_FLAGS(ch)[0], AFF_FLAGS(ch)[1], AFF_FLAGS(ch)[2], AFF_FLAGS(ch)[3]);
|
||||
if(PRF_FLAGS(ch) != PFDEF_PREFFLAGS)
|
||||
fprintf(fl, "Pref: %d %d %d %d\n", PRF_FLAGS(ch)[0], PRF_FLAGS(ch)[1], PRF_FLAGS(ch)[2], PRF_FLAGS(ch)[3]);
|
||||
|
||||
if (GET_SAVE(ch, 0) != PFDEF_SAVETHROW) fprintf(fl, "Thr1: %d\n", GET_SAVE(ch, 0));
|
||||
if (GET_SAVE(ch, 1) != PFDEF_SAVETHROW) fprintf(fl, "Thr2: %d\n", GET_SAVE(ch, 1));
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ ACMD(do_oasis_redit)
|
|||
|
||||
STATE(d) = CON_REDIT;
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing zone %d allowed zone %d",
|
||||
GET_NAME(ch), zone_table[OLC_ZNUM(d)].number, GET_OLC_ZONE(ch));
|
||||
|
|
@ -381,7 +381,7 @@ void redit_disp_flag_menu(struct descriptor_data *d)
|
|||
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter + 1, nrm,
|
||||
room_bits[counter], !(++columns % 2) ? "\r\n" : "");
|
||||
}
|
||||
sprintbit(OLC_ROOM(d)->room_flags, room_bits, bits, sizeof(bits));
|
||||
sprintbitarray(OLC_ROOM(d)->room_flags, room_bits, RF_ARRAY_MAX, bits);
|
||||
write_to_output(d, "\r\nRoom flags: %s%s%s\r\n"
|
||||
"Enter room flags, 0 to quit : ", cyn, bits, nrm);
|
||||
OLC_MODE(d) = REDIT_FLAGS;
|
||||
|
|
@ -412,7 +412,7 @@ void redit_disp_menu(struct descriptor_data *d)
|
|||
clear_screen(d);
|
||||
room = OLC_ROOM(d);
|
||||
|
||||
sprintbit((long)room->room_flags, room_bits, buf1, sizeof(buf1));
|
||||
sprintbitarray(room->room_flags, room_bits, RF_ARRAY_MAX, buf1);
|
||||
sprinttype(room->sector_type, sector_types, buf2, sizeof(buf2));
|
||||
write_to_output(d,
|
||||
"-- Room number : [%s%d%s] Room zone: [%s%d%s]\r\n"
|
||||
|
|
@ -611,7 +611,7 @@ void redit_parse(struct descriptor_data *d, char *arg)
|
|||
break;
|
||||
else {
|
||||
/* Toggle the bit. */
|
||||
TOGGLE_BIT(OLC_ROOM(d)->room_flags, 1 << (number - 1));
|
||||
TOGGLE_BIT_AR(OLC_ROOM(d)->room_flags, 1 << (number - 1));
|
||||
redit_disp_flag_menu(d);
|
||||
}
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ ACMD(do_oasis_sedit)
|
|||
STATE(d) = CON_SEDIT;
|
||||
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing zone %d allowed zone %d",
|
||||
GET_NAME(ch), zone_table[OLC_ZNUM(d)].number, GET_OLC_ZONE(ch));
|
||||
|
|
|
|||
|
|
@ -634,7 +634,7 @@ SPECIAL(pet_shops)
|
|||
|
||||
pet = read_mobile(GET_MOB_RNUM(pet), REAL);
|
||||
GET_EXP(pet) = 0;
|
||||
SET_BIT(AFF_FLAGS(pet), AFF_CHARM);
|
||||
SET_BIT_AR(AFF_FLAGS(pet), AFF_CHARM);
|
||||
|
||||
if (*pet_name) {
|
||||
snprintf(buf, sizeof(buf), "%s %s", pet->player.name, pet_name);
|
||||
|
|
|
|||
12
src/spells.c
12
src/spells.c
|
|
@ -279,7 +279,7 @@ ASPELL(spell_charm)
|
|||
|
||||
act("Isn't $n just such a nice fellow?", FALSE, ch, 0, victim, TO_VICT);
|
||||
if (IS_NPC(victim))
|
||||
REMOVE_BIT(MOB_FLAGS(victim), MOB_SPEC);
|
||||
REMOVE_BIT_AR(MOB_FLAGS(victim), MOB_SPEC);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -295,11 +295,11 @@ ASPELL(spell_identify)
|
|||
send_to_char(ch, "You feel informed:\r\nObject '%s', Item type: %s\r\n", obj->short_description, bitbuf);
|
||||
|
||||
if (GET_OBJ_AFFECT(obj)) {
|
||||
sprintbit(GET_OBJ_AFFECT(obj), affected_bits, bitbuf, sizeof(bitbuf));
|
||||
sprintbitarray(GET_OBJ_AFFECT(obj), affected_bits, AF_ARRAY_MAX, bitbuf);
|
||||
send_to_char(ch, "Item will give you following abilities: %s\r\n", bitbuf);
|
||||
}
|
||||
|
||||
sprintbit(GET_OBJ_EXTRA(obj), extra_bits, bitbuf, sizeof(bitbuf));
|
||||
sprintbitarray(GET_OBJ_EXTRA(obj), extra_bits, AF_ARRAY_MAX, bitbuf);
|
||||
send_to_char(ch, "Item is: %s\r\n", bitbuf);
|
||||
|
||||
send_to_char(ch, "Weight: %d, Value: %d, Rent: %d, Min. level: %d\r\n",
|
||||
|
|
@ -389,7 +389,7 @@ ASPELL(spell_enchant_weapon)
|
|||
if (obj->affected[i].location != APPLY_NONE)
|
||||
return;
|
||||
|
||||
SET_BIT(GET_OBJ_EXTRA(obj), ITEM_MAGIC);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_MAGIC);
|
||||
|
||||
obj->affected[0].location = APPLY_HITROLL;
|
||||
obj->affected[0].modifier = 1 + (level >= 18);
|
||||
|
|
@ -398,10 +398,10 @@ ASPELL(spell_enchant_weapon)
|
|||
obj->affected[1].modifier = 1 + (level >= 20);
|
||||
|
||||
if (IS_GOOD(ch)) {
|
||||
SET_BIT(GET_OBJ_EXTRA(obj), ITEM_ANTI_EVIL);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_ANTI_EVIL);
|
||||
act("$p glows blue.", FALSE, ch, obj, 0, TO_CHAR);
|
||||
} else if (IS_EVIL(ch)) {
|
||||
SET_BIT(GET_OBJ_EXTRA(obj), ITEM_ANTI_GOOD);
|
||||
SET_BIT_AR(GET_OBJ_EXTRA(obj), ITEM_ANTI_GOOD);
|
||||
act("$p glows red.", FALSE, ch, obj, 0, TO_CHAR);
|
||||
} else
|
||||
act("$p glows yellow.", FALSE, ch, obj, 0, TO_CHAR);
|
||||
|
|
|
|||
355
src/structs.h
355
src/structs.h
|
|
@ -53,22 +53,22 @@
|
|||
|
||||
/* Room flags: used in room_data.room_flags */
|
||||
/* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */
|
||||
#define ROOM_DARK (1 << 0) /* Dark */
|
||||
#define ROOM_DEATH (1 << 1) /* Death trap */
|
||||
#define ROOM_NOMOB (1 << 2) /* MOBs not allowed */
|
||||
#define ROOM_INDOORS (1 << 3) /* Indoors */
|
||||
#define ROOM_PEACEFUL (1 << 4) /* Violence not allowed */
|
||||
#define ROOM_SOUNDPROOF (1 << 5) /* Shouts, gossip blocked */
|
||||
#define ROOM_NOTRACK (1 << 6) /* Track won't go through */
|
||||
#define ROOM_NOMAGIC (1 << 7) /* Magic not allowed */
|
||||
#define ROOM_TUNNEL (1 << 8) /* room for only 1 pers */
|
||||
#define ROOM_PRIVATE (1 << 9) /* Can't teleport in */
|
||||
#define ROOM_GODROOM (1 << 10) /* LVL_GOD+ only allowed */
|
||||
#define ROOM_HOUSE (1 << 11) /* (R) Room is a house */
|
||||
#define ROOM_HOUSE_CRASH (1 << 12) /* (R) House needs saving */
|
||||
#define ROOM_ATRIUM (1 << 13) /* (R) The door to a house */
|
||||
#define ROOM_OLC (1 << 14) /* (R) Modifyable/!compress */
|
||||
#define ROOM_BFS_MARK (1 << 15) /* (R) breath-first srch mrk */
|
||||
#define ROOM_DARK 0 /* Dark */
|
||||
#define ROOM_DEATH 1 /* Death trap */
|
||||
#define ROOM_NOMOB 2 /* MOBs not allowed */
|
||||
#define ROOM_INDOORS 3 /* Indoors */
|
||||
#define ROOM_PEACEFUL 4 /* Violence not allowed */
|
||||
#define ROOM_SOUNDPROOF 5 /* Shouts, gossip blocked */
|
||||
#define ROOM_NOTRACK 6 /* Track won't go through */
|
||||
#define ROOM_NOMAGIC 7 /* Magic not allowed */
|
||||
#define ROOM_TUNNEL 8 /* room for only 1 pers */
|
||||
#define ROOM_PRIVATE 9 /* Can't teleport in */
|
||||
#define ROOM_GODROOM 10 /* LVL_GOD+ only allowed */
|
||||
#define ROOM_HOUSE 11 /* (R) Room is a house */
|
||||
#define ROOM_HOUSE_CRASH 12 /* (R) House needs saving */
|
||||
#define ROOM_ATRIUM 13 /* (R) The door to a house */
|
||||
#define ROOM_OLC 14 /* (R) Modifyable/!compress */
|
||||
#define ROOM_BFS_MARK 15 /* (R) breath-first srch mrk */
|
||||
|
||||
/* Exit info: used in room_data.dir_option.exit_info */
|
||||
#define EX_ISDOOR (1 << 0) /* Exit is a door */
|
||||
|
|
@ -137,102 +137,102 @@
|
|||
#define POS_STANDING 8 /* standing */
|
||||
|
||||
/* Player flags: used by char_data.char_specials.act */
|
||||
#define PLR_KILLER (1 << 0) /* Player is a player-killer */
|
||||
#define PLR_THIEF (1 << 1) /* Player is a player-thief */
|
||||
#define PLR_FROZEN (1 << 2) /* Player is frozen */
|
||||
#define PLR_DONTSET (1 << 3) /* Don't EVER set (ISNPC bit) */
|
||||
#define PLR_WRITING (1 << 4) /* Player writing (board/mail/olc) */
|
||||
#define PLR_MAILING (1 << 5) /* Player is writing mail */
|
||||
#define PLR_CRASH (1 << 6) /* Player needs to be crash-saved */
|
||||
#define PLR_SITEOK (1 << 7) /* Player has been site-cleared */
|
||||
#define PLR_NOSHOUT (1 << 8) /* Player not allowed to shout/goss */
|
||||
#define PLR_NOTITLE (1 << 9) /* Player not allowed to set title */
|
||||
#define PLR_DELETED (1 << 10) /* Player deleted - space reusable */
|
||||
#define PLR_LOADROOM (1 << 11) /* Player uses nonstandard loadroom */
|
||||
#define PLR_NOWIZLIST (1 << 12) /* Player shouldn't be on wizlist */
|
||||
#define PLR_NODELETE (1 << 13) /* Player shouldn't be deleted */
|
||||
#define PLR_INVSTART (1 << 14) /* Player should enter game wizinvis */
|
||||
#define PLR_CRYO (1 << 15) /* Player is cryo-saved (purge prog) */
|
||||
#define PLR_NOTDEADYET (1 << 16) /* (R) Player being extracted. */
|
||||
#define PLR_KILLER 0 /* Player is a player-killer */
|
||||
#define PLR_THIEF 1 /* Player is a player-thief */
|
||||
#define PLR_FROZEN 2 /* Player is frozen */
|
||||
#define PLR_DONTSET 3 /* Don't EVER set (ISNPC bit) */
|
||||
#define PLR_WRITING 4 /* Player writing (board/mail/olc) */
|
||||
#define PLR_MAILING 5 /* Player is writing mail */
|
||||
#define PLR_CRASH 6 /* Player needs to be crash-saved */
|
||||
#define PLR_SITEOK 7 /* Player has been site-cleared */
|
||||
#define PLR_NOSHOUT 8 /* Player not allowed to shout/goss */
|
||||
#define PLR_NOTITLE 9 /* Player not allowed to set title */
|
||||
#define PLR_DELETED 10 /* Player deleted - space reusable */
|
||||
#define PLR_LOADROOM 11 /* Player uses nonstandard loadroom */
|
||||
#define PLR_NOWIZLIST 12 /* Player shouldn't be on wizlist */
|
||||
#define PLR_NODELETE 13 /* Player shouldn't be deleted */
|
||||
#define PLR_INVSTART 14 /* Player should enter game wizinvis */
|
||||
#define PLR_CRYO 15 /* Player is cryo-saved (purge prog) */
|
||||
#define PLR_NOTDEADYET 16 /* (R) Player being extracted */
|
||||
|
||||
/* Mobile flags: used by char_data.char_specials.act */
|
||||
#define MOB_SPEC (1 << 0) /* Mob has a callable spec-proc */
|
||||
#define MOB_SENTINEL (1 << 1) /* Mob should not move */
|
||||
#define MOB_SCAVENGER (1 << 2) /* Mob picks up stuff on the ground */
|
||||
#define MOB_ISNPC (1 << 3) /* (R) Automatically set on all Mobs */
|
||||
#define MOB_AWARE (1 << 4) /* Mob can't be backstabbed */
|
||||
#define MOB_AGGRESSIVE (1 << 5) /* Mob auto-attacks everybody nearby */
|
||||
#define MOB_STAY_ZONE (1 << 6) /* Mob shouldn't wander out of zone */
|
||||
#define MOB_WIMPY (1 << 7) /* Mob flees if severely injured */
|
||||
#define MOB_AGGR_EVIL (1 << 8) /* Auto-attack any evil PC's */
|
||||
#define MOB_AGGR_GOOD (1 << 9) /* Auto-attack any good PC's */
|
||||
#define MOB_AGGR_NEUTRAL (1 << 10) /* Auto-attack any neutral PC's */
|
||||
#define MOB_MEMORY (1 << 11) /* remember attackers if attacked */
|
||||
#define MOB_HELPER (1 << 12) /* attack PCs fighting other NPCs */
|
||||
#define MOB_NOCHARM (1 << 13) /* Mob can't be charmed */
|
||||
#define MOB_NOSUMMON (1 << 14) /* Mob can't be summoned */
|
||||
#define MOB_NOSLEEP (1 << 15) /* Mob can't be slept */
|
||||
#define MOB_NOBASH (1 << 16) /* Mob can't be bashed (e.g. trees) */
|
||||
#define MOB_NOBLIND (1 << 17) /* Mob can't be blinded */
|
||||
#define MOB_NOTDEADYET (1 << 18) /* (R) Mob being extracted. */
|
||||
#define MOB_SPEC 0 /* Mob has a callable spec-proc */
|
||||
#define MOB_SENTINEL 1 /* Mob should not move */
|
||||
#define MOB_SCAVENGER 2 /* Mob picks up stuff on the ground */
|
||||
#define MOB_ISNPC 3 /* (R) Automatically set on all Mobs */
|
||||
#define MOB_AWARE 4 /* Mob can't be backstabbed */
|
||||
#define MOB_AGGRESSIVE 5 /* Mob auto-attacks everybody nearby */
|
||||
#define MOB_STAY_ZONE 6 /* Mob shouldn't wander out of zone */
|
||||
#define MOB_WIMPY 7 /* Mob flees if severely injured */
|
||||
#define MOB_AGGR_EVIL 8 /* Auto-attack any evil PC's */
|
||||
#define MOB_AGGR_GOOD 9 /* Auto-attack any good PC's */
|
||||
#define MOB_AGGR_NEUTRAL 10 /* Auto-attack any neutral PC's */
|
||||
#define MOB_MEMORY 11 /* remember attackers if attacked */
|
||||
#define MOB_HELPER 12 /* attack PCs fighting other NPCs */
|
||||
#define MOB_NOCHARM 13 /* Mob can't be charmed */
|
||||
#define MOB_NOSUMMON 14 /* Mob can't be summoned */
|
||||
#define MOB_NOSLEEP 15 /* Mob can't be slept */
|
||||
#define MOB_NOBASH 16 /* Mob can't be bashed (e.g. trees) */
|
||||
#define MOB_NOBLIND 17 /* Mob can't be blinded */
|
||||
#define MOB_NOTDEADYET 18 /* (R) Mob being extracted */
|
||||
|
||||
/* Preference flags: used by char_data.player_specials.pref */
|
||||
#define PRF_BRIEF (1 << 0) /* Room descs won't normally be shown */
|
||||
#define PRF_COMPACT (1 << 1) /* No extra CRLF pair before prompts */
|
||||
#define PRF_NOSHOUT (1 << 2) /* Can't hear shouts */
|
||||
#define PRF_NOTELL (1 << 3) /* Can't receive tells */
|
||||
#define PRF_DISPHP (1 << 4) /* Display hit points in prompt */
|
||||
#define PRF_DISPMANA (1 << 5) /* Display mana points in prompt */
|
||||
#define PRF_DISPMOVE (1 << 6) /* Display move points in prompt */
|
||||
#define PRF_AUTOEXIT (1 << 7) /* Display exits in a room */
|
||||
#define PRF_NOHASSLE (1 << 8) /* Aggr mobs won't attack */
|
||||
#define PRF_QUEST (1 << 9) /* On quest */
|
||||
#define PRF_SUMMONABLE (1 << 10) /* Can be summoned */
|
||||
#define PRF_NOREPEAT (1 << 11) /* No repetition of comm commands */
|
||||
#define PRF_HOLYLIGHT (1 << 12) /* Can see in dark */
|
||||
#define PRF_COLOR_1 (1 << 13) /* Color (low bit) */
|
||||
#define PRF_COLOR_2 (1 << 14) /* Color (high bit) */
|
||||
#define PRF_NOWIZ (1 << 15) /* Can't hear wizline */
|
||||
#define PRF_LOG1 (1 << 16) /* On-line System Log (low bit) */
|
||||
#define PRF_LOG2 (1 << 17) /* On-line System Log (high bit) */
|
||||
#define PRF_NOAUCT (1 << 18) /* Can't hear auction channel */
|
||||
#define PRF_NOGOSS (1 << 19) /* Can't hear gossip channel */
|
||||
#define PRF_NOGRATZ (1 << 20) /* Can't hear grats channel */
|
||||
#define PRF_SHOWVNUMS (1 << 21) /* Can see VNUMs */
|
||||
#define PRF_DISPAUTO (1 << 22) /* Show prompt HP, MP, MV when < 25%. */
|
||||
#define PRF_CLS (1 << 23) /* Clear screen in OLC */
|
||||
#define PRF_BUILDWALK (1 << 24) /* Build new rooms while walking ? */
|
||||
#define PRF_AFK (1 << 25) /* AFK flag */
|
||||
#define PRF_AUTOLOOT (1 << 26) /* Loot everything from a corpse */
|
||||
#define PRF_AUTOGOLD (1 << 27) /* Loot gold from a corpse */
|
||||
#define PRF_AUTOSPLIT (1 << 28) /* Split gold with group */
|
||||
#define PRF_AUTOSAC (1 << 29) /* Sacrifice a corpse */
|
||||
#define PRF_AUTOASSIST (1 << 30) /* Auto-assist toggle */
|
||||
#define PRF_BRIEF 0 /* Room descs won't normally be shown */
|
||||
#define PRF_COMPACT 1 /* No extra CRLF pair before prompts */
|
||||
#define PRF_NOSHOUT 2 /* Can't hear shouts */
|
||||
#define PRF_NOTELL 3 /* Can't receive tells */
|
||||
#define PRF_DISPHP 4 /* Display hit points in prompt */
|
||||
#define PRF_DISPMANA 5 /* Display mana points in prompt */
|
||||
#define PRF_DISPMOVE 6 /* Display move points in prompt */
|
||||
#define PRF_AUTOEXIT 7 /* Display exits in a room */
|
||||
#define PRF_NOHASSLE 8 /* Aggr mobs won't attack */
|
||||
#define PRF_QUEST 9 /* On quest */
|
||||
#define PRF_SUMMONABLE 10 /* Can be summoned */
|
||||
#define PRF_NOREPEAT 11 /* No repetition of comm commands */
|
||||
#define PRF_HOLYLIGHT 12 /* Can see in dark */
|
||||
#define PRF_COLOR_1 13 /* Color (low bit) */
|
||||
#define PRF_COLOR_2 14 /* Color (high bit) */
|
||||
#define PRF_NOWIZ 15 /* Can't hear wizline */
|
||||
#define PRF_LOG1 16 /* On-line System Log (low bit) */
|
||||
#define PRF_LOG2 17 /* On-line System Log (high bit) */
|
||||
#define PRF_NOAUCT 18 /* Can't hear auction channel */
|
||||
#define PRF_NOGOSS 19 /* Can't hear gossip channel */
|
||||
#define PRF_NOGRATZ 20 /* Can't hear grats channel */
|
||||
#define PRF_SHOWVNUMS 21 /* Can see VNUMs */
|
||||
#define PRF_DISPAUTO 22 /* Show prompt HP, MP, MV when < 25% */
|
||||
#define PRF_CLS 23 /* Clear screen in OLC */
|
||||
#define PRF_BUILDWALK 24 /* Build new rooms while walking */
|
||||
#define PRF_AFK 25 /* AFK flag */
|
||||
#define PRF_AUTOLOOT 26 /* Loot everything from a corpse */
|
||||
#define PRF_AUTOGOLD 27 /* Loot gold from a corpse */
|
||||
#define PRF_AUTOSPLIT 28 /* Split gold with group */
|
||||
#define PRF_AUTOSAC 29 /* Sacrifice a corpse */
|
||||
#define PRF_AUTOASSIST 30 /* Auto-assist toggle */
|
||||
|
||||
/* Affect bits: used in char_data.char_specials.saved.affected_by */
|
||||
/* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */
|
||||
#define AFF_BLIND (1 << 0) /* (R) Char is blind */
|
||||
#define AFF_INVISIBLE (1 << 1) /* Char is invisible */
|
||||
#define AFF_DETECT_ALIGN (1 << 2) /* Char is sensitive to align*/
|
||||
#define AFF_DETECT_INVIS (1 << 3) /* Char can see invis chars */
|
||||
#define AFF_DETECT_MAGIC (1 << 4) /* Char is sensitive to magic*/
|
||||
#define AFF_SENSE_LIFE (1 << 5) /* Char can sense hidden life*/
|
||||
#define AFF_WATERWALK (1 << 6) /* Char can walk on water */
|
||||
#define AFF_SANCTUARY (1 << 7) /* Char protected by sanct. */
|
||||
#define AFF_GROUP (1 << 8) /* (R) Char is grouped */
|
||||
#define AFF_CURSE (1 << 9) /* Char is cursed */
|
||||
#define AFF_INFRAVISION (1 << 10) /* Char can see in dark */
|
||||
#define AFF_POISON (1 << 11) /* (R) Char is poisoned */
|
||||
#define AFF_PROTECT_EVIL (1 << 12) /* Char protected from evil */
|
||||
#define AFF_PROTECT_GOOD (1 << 13) /* Char protected from good */
|
||||
#define AFF_SLEEP (1 << 14) /* (R) Char magically asleep */
|
||||
#define AFF_NOTRACK (1 << 15) /* Char can't be tracked */
|
||||
#define AFF_UNUSED16 (1 << 16) /* Room for future expansion */
|
||||
#define AFF_UNUSED17 (1 << 17) /* Room for future expansion */
|
||||
#define AFF_SNEAK (1 << 18) /* Char can move quietly */
|
||||
#define AFF_HIDE (1 << 19) /* Char is hidden */
|
||||
#define AFF_UNUSED20 (1 << 20) /* Room for future expansion */
|
||||
#define AFF_CHARM (1 << 21) /* Char is charmed */
|
||||
#define AFF_BLIND 0 /* (R) Char is blind */
|
||||
#define AFF_INVISIBLE 1 /* Char is invisible */
|
||||
#define AFF_DETECT_ALIGN 2 /* Char is sensitive to align*/
|
||||
#define AFF_DETECT_INVIS 3 /* Char can see invis chars */
|
||||
#define AFF_DETECT_MAGIC 4 /* Char is sensitive to magic*/
|
||||
#define AFF_SENSE_LIFE 5 /* Char can sense hidden life*/
|
||||
#define AFF_WATERWALK 6 /* Char can walk on water */
|
||||
#define AFF_SANCTUARY 7 /* Char protected by sanct */
|
||||
#define AFF_GROUP 8 /* (R) Char is grouped */
|
||||
#define AFF_CURSE 9 /* Char is cursed */
|
||||
#define AFF_INFRAVISION 10 /* Char can see in dark */
|
||||
#define AFF_POISON 11 /* (R) Char is poisoned */
|
||||
#define AFF_PROTECT_EVIL 12 /* Char protected from evil */
|
||||
#define AFF_PROTECT_GOOD 13 /* Char protected from good */
|
||||
#define AFF_SLEEP 14 /* (R) Char magically asleep */
|
||||
#define AFF_NOTRACK 15 /* Char can't be tracked */
|
||||
#define AFF_UNUSED16 16 /* Room for future expansion */
|
||||
#define AFF_UNUSED17 17 /* Room for future expansion */
|
||||
#define AFF_SNEAK 18 /* Char can move quietly */
|
||||
#define AFF_HIDE 19 /* Char is hidden */
|
||||
#define AFF_UNUSED20 20 /* Room for future expansion */
|
||||
#define AFF_CHARM 21 /* Char is charmed */
|
||||
|
||||
/* Modes of connectedness: used by descriptor_data.state */
|
||||
#define CON_PLAYING 0 /* Playing - Nominal state */
|
||||
|
|
@ -315,40 +315,40 @@
|
|||
#define ITEM_FOUNTAIN 23 /* Item is a fountain */
|
||||
|
||||
/* Take/Wear flags: used by obj_data.obj_flags.wear_flags */
|
||||
#define ITEM_WEAR_TAKE (1 << 0) /* Item can be taken */
|
||||
#define ITEM_WEAR_FINGER (1 << 1) /* Can be worn on finger */
|
||||
#define ITEM_WEAR_NECK (1 << 2) /* Can be worn around neck */
|
||||
#define ITEM_WEAR_BODY (1 << 3) /* Can be worn on body */
|
||||
#define ITEM_WEAR_HEAD (1 << 4) /* Can be worn on head */
|
||||
#define ITEM_WEAR_LEGS (1 << 5) /* Can be worn on legs */
|
||||
#define ITEM_WEAR_FEET (1 << 6) /* Can be worn on feet */
|
||||
#define ITEM_WEAR_HANDS (1 << 7) /* Can be worn on hands */
|
||||
#define ITEM_WEAR_ARMS (1 << 8) /* Can be worn on arms */
|
||||
#define ITEM_WEAR_SHIELD (1 << 9) /* Can be used as a shield */
|
||||
#define ITEM_WEAR_ABOUT (1 << 10) /* Can be worn about body */
|
||||
#define ITEM_WEAR_WAIST (1 << 11) /* Can be worn around waist */
|
||||
#define ITEM_WEAR_WRIST (1 << 12) /* Can be worn on wrist */
|
||||
#define ITEM_WEAR_WIELD (1 << 13) /* Can be wielded */
|
||||
#define ITEM_WEAR_HOLD (1 << 14) /* Can be held */
|
||||
#define ITEM_WEAR_TAKE 0 /* Item can be taken */
|
||||
#define ITEM_WEAR_FINGER 1 /* Can be worn on finger */
|
||||
#define ITEM_WEAR_NECK 2 /* Can be worn around neck */
|
||||
#define ITEM_WEAR_BODY 3 /* Can be worn on body */
|
||||
#define ITEM_WEAR_HEAD 4 /* Can be worn on head */
|
||||
#define ITEM_WEAR_LEGS 5 /* Can be worn on legs */
|
||||
#define ITEM_WEAR_FEET 6 /* Can be worn on feet */
|
||||
#define ITEM_WEAR_HANDS 7 /* Can be worn on hands */
|
||||
#define ITEM_WEAR_ARMS 8 /* Can be worn on arms */
|
||||
#define ITEM_WEAR_SHIELD 9 /* Can be used as a shield */
|
||||
#define ITEM_WEAR_ABOUT 10 /* Can be worn about body */
|
||||
#define ITEM_WEAR_WAIST 11 /* Can be worn around waist */
|
||||
#define ITEM_WEAR_WRIST 12 /* Can be worn on wrist */
|
||||
#define ITEM_WEAR_WIELD 13 /* Can be wielded */
|
||||
#define ITEM_WEAR_HOLD 14 /* Can be held */
|
||||
|
||||
/* Extra object flags: used by obj_data.obj_flags.extra_flags */
|
||||
#define ITEM_GLOW (1 << 0) /* Item is glowing */
|
||||
#define ITEM_HUM (1 << 1) /* Item is humming */
|
||||
#define ITEM_NORENT (1 << 2) /* Item cannot be rented */
|
||||
#define ITEM_NODONATE (1 << 3) /* Item cannot be donated */
|
||||
#define ITEM_NOINVIS (1 << 4) /* Item cannot be made invis */
|
||||
#define ITEM_INVISIBLE (1 << 5) /* Item is invisible */
|
||||
#define ITEM_MAGIC (1 << 6) /* Item is magical */
|
||||
#define ITEM_NODROP (1 << 7) /* Item is cursed: can't drop */
|
||||
#define ITEM_BLESS (1 << 8) /* Item is blessed */
|
||||
#define ITEM_ANTI_GOOD (1 << 9) /* Not usable by good people */
|
||||
#define ITEM_ANTI_EVIL (1 << 10) /* Not usable by evil people */
|
||||
#define ITEM_ANTI_NEUTRAL (1 << 11) /* Not usable by neutral people */
|
||||
#define ITEM_ANTI_MAGIC_USER (1 << 12) /* Not usable by mages */
|
||||
#define ITEM_ANTI_CLERIC (1 << 13) /* Not usable by clerics */
|
||||
#define ITEM_ANTI_THIEF (1 << 14) /* Not usable by thieves */
|
||||
#define ITEM_ANTI_WARRIOR (1 << 15) /* Not usable by warriors */
|
||||
#define ITEM_NOSELL (1 << 16) /* Shopkeepers won't touch it */
|
||||
#define ITEM_GLOW 0 /* Item is glowing */
|
||||
#define ITEM_HUM 1 /* Item is humming */
|
||||
#define ITEM_NORENT 2 /* Item cannot be rented */
|
||||
#define ITEM_NODONATE 3 /* Item cannot be donated */
|
||||
#define ITEM_NOINVIS 4 /* Item cannot be made invis */
|
||||
#define ITEM_INVISIBLE 5 /* Item is invisible */
|
||||
#define ITEM_MAGIC 6 /* Item is magical */
|
||||
#define ITEM_NODROP 7 /* Item is cursed: can't drop */
|
||||
#define ITEM_BLESS 8 /* Item is blessed */
|
||||
#define ITEM_ANTI_GOOD 9 /* Not usable by good people */
|
||||
#define ITEM_ANTI_EVIL 10 /* Not usable by evil people */
|
||||
#define ITEM_ANTI_NEUTRAL 11 /* Not usable by neutral people */
|
||||
#define ITEM_ANTI_MAGIC_USER 12 /* Not usable by mages */
|
||||
#define ITEM_ANTI_CLERIC 13 /* Not usable by clerics */
|
||||
#define ITEM_ANTI_THIEF 14 /* Not usable by thieves */
|
||||
#define ITEM_ANTI_WARRIOR 15 /* Not usable by warriors */
|
||||
#define ITEM_NOSELL 16 /* Shopkeepers won't touch it */
|
||||
|
||||
/* Modifier constants used with obj affects ('A' fields) */
|
||||
#define APPLY_NONE 0 /* No effect */
|
||||
|
|
@ -427,6 +427,14 @@
|
|||
#define RENT_FORCED 4
|
||||
#define RENT_TIMEDOUT 5
|
||||
|
||||
/* 128 Bits */
|
||||
#define RF_ARRAY_MAX 4
|
||||
#define PM_ARRAY_MAX 4
|
||||
#define PR_ARRAY_MAX 4
|
||||
#define AF_ARRAY_MAX 4
|
||||
#define TW_ARRAY_MAX 4
|
||||
#define EF_ARRAY_MAX 4
|
||||
|
||||
/* other #defined constants */
|
||||
/* **DO**NOT** blindly change the number of levels in your MUD merely by
|
||||
* changing these numbers and without changing the rest of the code to match.
|
||||
|
|
@ -545,13 +553,13 @@ struct obj_flag_data {
|
|||
int value[NUM_OBJ_VAL_POSITIONS]; /* Values of the item (see list) */
|
||||
byte type_flag; /* Type of item */
|
||||
int level; /* Minimum level of object */
|
||||
int /*bitvector_t*/ wear_flags; /* Where you can wear it */
|
||||
int /*bitvector_t*/ extra_flags; /* If it hums, glows, etc. */
|
||||
int wear_flags[TW_ARRAY_MAX]; /* Where you can wear it */
|
||||
int extra_flags[EF_ARRAY_MAX]; /* If it hums, glows, etc. */
|
||||
int weight; /* Weight what else */
|
||||
int cost; /* Value when sold (gp.) */
|
||||
int cost_per_day; /* Cost to keep pr. real day */
|
||||
int timer; /* Timer for object */
|
||||
long /*bitvector_t*/ bitvector; /* To set chars bits */
|
||||
int bitvector[AF_ARRAY_MAX]; /* To set chars bits */
|
||||
};
|
||||
|
||||
/* Used in obj_file_elem *DO*NOT*CHANGE* */
|
||||
|
|
@ -597,10 +605,10 @@ struct obj_file_elem {
|
|||
sh_int location;
|
||||
#endif
|
||||
int value[NUM_OBJ_VAL_POSITIONS];
|
||||
int /*bitvector_t*/ extra_flags;
|
||||
int extra_flags[EF_ARRAY_MAX];
|
||||
int weight;
|
||||
int timer;
|
||||
long /*bitvector_t*/ bitvector;
|
||||
int bitvector[AF_ARRAY_MAX];
|
||||
struct obj_affected_type affected[MAX_OBJ_AFFECT];
|
||||
};
|
||||
|
||||
|
|
@ -635,23 +643,20 @@ struct room_direction_data {
|
|||
|
||||
/* Memory Structure for room */
|
||||
struct room_data {
|
||||
room_vnum number; /* Rooms number (vnum) */
|
||||
zone_rnum zone; /* Room zone (for resetting) */
|
||||
int sector_type; /* sector type (move/hide) */
|
||||
char *name; /* Rooms name 'You are ...' */
|
||||
char *description; /* Shown when entered */
|
||||
struct extra_descr_data *ex_description; /* for examine/look */
|
||||
room_vnum number; /* Rooms number (vnum) */
|
||||
zone_rnum zone; /* Room zone (for resetting) */
|
||||
int sector_type; /* sector type (move/hide) */
|
||||
int room_flags[RF_ARRAY_MAX]; /* DEATH, DARK, etc */
|
||||
char *name; /* Rooms name */
|
||||
char *description; /* Shown when entered */
|
||||
struct extra_descr_data *ex_description; /* for look/examine */
|
||||
struct room_direction_data *dir_option[NUM_OF_DIRS]; /* Directions */
|
||||
int /*bitvector_t*/ room_flags; /* DEATH,DARK ... etc */
|
||||
|
||||
byte light; /* Number of lightsources in room */
|
||||
byte light; /* Number of lightsources in room */
|
||||
SPECIAL(*func);
|
||||
|
||||
struct trig_proto_list *proto_script; /* list of default triggers */
|
||||
struct script_data *script; /* script info for the room */
|
||||
|
||||
struct obj_data *contents; /* List of items in room */
|
||||
struct char_data *people; /* List of NPC / PC in room */
|
||||
struct trig_proto_list *proto_script; /* list of default triggers */
|
||||
struct script_data *script; /* script info for the room */
|
||||
struct obj_data *contents; /* List of items in room */
|
||||
struct char_data *people; /* List of NPC / PC in room */
|
||||
};
|
||||
|
||||
/* char-related structures */
|
||||
|
|
@ -736,10 +741,8 @@ struct char_point_data {
|
|||
struct char_special_data_saved {
|
||||
int alignment; /* +-1000 for alignments */
|
||||
long idnum; /* player's idnum; -1 for mobiles */
|
||||
long /*bitvector_t*/ act; /* act flag for NPC's; player flag for PC's */
|
||||
|
||||
long /*bitvector_t*/ affected_by;
|
||||
/* Bitvector for spells/skills affected by */
|
||||
int act[PM_ARRAY_MAX]; /* act flag for NPC's; player flag for PC's */
|
||||
int affected_by[AF_ARRAY_MAX]; /* Bitvector for spells/skills affected by */
|
||||
sh_int apply_saving_throw[5]; /* Saving throw (Bonuses) */
|
||||
};
|
||||
|
||||
|
|
@ -760,21 +763,21 @@ struct char_special_data {
|
|||
};
|
||||
|
||||
struct player_special_data_saved {
|
||||
byte skills[MAX_SKILLS+1]; /* array of skills plus skill 0 */
|
||||
byte PADDING0; /* used to be spells_to_learn */
|
||||
bool talks[MAX_TONGUE]; /* PC s Tongues 0 for NPC */
|
||||
int wimp_level; /* Below this # of hit points, flee! */
|
||||
byte freeze_level; /* Level of god who froze char, if any */
|
||||
sh_int invis_level; /* level of invisibility */
|
||||
room_vnum load_room; /* Which room to place char in */
|
||||
long /*bitvector_t*/ pref; /* preference flags for PC's. */
|
||||
ubyte bad_pws; /* number of bad password attemps */
|
||||
sbyte conditions[3]; /* Drunk, hunger, thirst */
|
||||
struct txt_block *comm_hist[NUM_HIST]; /* Player's communcations history */
|
||||
ubyte page_length;
|
||||
int spells_to_learn; /* How many can you learn yet this level*/
|
||||
int olc_zone;
|
||||
int questpoints;
|
||||
byte skills[MAX_SKILLS+1]; /* array of skills plus skill 0 */
|
||||
byte PADDING0; /* used to be spells_to_learn */
|
||||
bool talks[MAX_TONGUE]; /* PC s Tongues 0 for NPC */
|
||||
int wimp_level; /* Below this # of hit points, flee! */
|
||||
byte freeze_level; /* Level of god who froze char, if any */
|
||||
sh_int invis_level; /* level of invisibility */
|
||||
room_vnum load_room; /* Which room to place char in */
|
||||
int pref[PR_ARRAY_MAX]; /* preference flags for players */
|
||||
ubyte bad_pws; /* number of bad password attemps */
|
||||
sbyte conditions[3]; /* Drunk, hunger, thirst */
|
||||
struct txt_block *comm_hist[NUM_HIST]; /* Player's comms history */
|
||||
ubyte page_length; /* How long a players page is */
|
||||
int spells_to_learn; /* How many spells you can learn */
|
||||
int olc_zone; /* A players olc access */
|
||||
int questpoints; /* A players questpoints earned */
|
||||
};
|
||||
|
||||
/* Specials needed only by PCs, not NPCs. Space for this structure is
|
||||
|
|
|
|||
|
|
@ -150,6 +150,6 @@ ACMD(do_tedit)
|
|||
string_write(ch->desc, (char **)fields[l].buffer, fields[l].size, 0, backstr);
|
||||
|
||||
act("$n begins editing a scroll.", TRUE, ch, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
STATE(ch->desc) = CON_TEDIT;
|
||||
}
|
||||
|
|
|
|||
28
src/utils.c
28
src/utils.c
|
|
@ -291,6 +291,32 @@ size_t sprinttype(int type, const char *names[], char *result, size_t reslen)
|
|||
return strlcpy(result, *names[nr] != '\n' ? names[nr] : "UNDEFINED", reslen);
|
||||
}
|
||||
|
||||
void sprintbitarray(int bitvector[], const char *names[], int maxar, char *result)
|
||||
{
|
||||
int nr, teller, found = FALSE;
|
||||
|
||||
*result = '\0';
|
||||
|
||||
for(teller = 0; teller < maxar && !found; teller++)
|
||||
for (nr = 0; nr < 32 && !found; nr++) {
|
||||
if (IS_SET_AR(bitvector, (teller*32)+nr)) {
|
||||
if (*names[(teller*32)+nr] != '\n') {
|
||||
if (*names[(teller*32)+nr] != '\0') {
|
||||
strcat(result, names[(teller*32)+nr]);
|
||||
strcat(result, " ");
|
||||
}
|
||||
} else {
|
||||
strcat(result, "UNDEFINED ");
|
||||
}
|
||||
}
|
||||
if (*names[(teller*32)+nr] == '\n')
|
||||
found = TRUE;
|
||||
}
|
||||
|
||||
if (!*result)
|
||||
strcpy(result, "NOBITS ");
|
||||
}
|
||||
|
||||
/* Calculate the REAL time passed over the last t2-t1 centuries (secs) */
|
||||
struct time_info_data *real_time_passed(time_t t2, time_t t1)
|
||||
{
|
||||
|
|
@ -404,7 +430,7 @@ void stop_follower(struct char_data *ch)
|
|||
}
|
||||
|
||||
ch->master = NULL;
|
||||
REMOVE_BIT(AFF_FLAGS(ch), AFF_CHARM | AFF_GROUP);
|
||||
REMOVE_BIT_AR(AFF_FLAGS(ch), AFF_CHARM | AFF_GROUP);
|
||||
}
|
||||
|
||||
int num_followers_charmed(struct char_data *ch)
|
||||
|
|
|
|||
30
src/utils.h
30
src/utils.h
|
|
@ -26,6 +26,7 @@ int rand_number(int from, int to);
|
|||
int dice(int number, int size);
|
||||
size_t sprintbit(bitvector_t vektor, const char *names[], char *result, size_t reslen);
|
||||
size_t sprinttype(int type, const char *names[], char *result, size_t reslen);
|
||||
void sprintbitarray(int bitvector[], const char *names[], int maxar, char *result);
|
||||
int get_line(FILE *fl, char *buf);
|
||||
int get_filename(char *filename, size_t fbufsize, int mode, const char *orig_name);
|
||||
time_t mud_time_to_secs(struct time_info_data *now);
|
||||
|
|
@ -172,6 +173,12 @@ void char_from_furniture(struct char_data *ch);
|
|||
} \
|
||||
|
||||
/* basic bitvector utils */
|
||||
#define Q_FIELD(x) ((int) (x) / 32)
|
||||
#define Q_BIT(x) (1 << ((x) % 32))
|
||||
#define IS_SET_AR(var, bit) ((var)[Q_FIELD(bit)] & Q_BIT(bit))
|
||||
#define SET_BIT_AR(var, bit) ((var)[Q_FIELD(bit)] |= Q_BIT(bit))
|
||||
#define REMOVE_BIT_AR(var, bit) ((var)[Q_FIELD(bit)] &= ~Q_BIT(bit))
|
||||
#define TOGGLE_BIT_AR(var, bit) ((var)[Q_FIELD(bit)] = (var)[Q_FIELD(bit)] ^ Q_BIT(bit))
|
||||
#define IS_SET(flag,bit) ((flag) & (bit))
|
||||
#define SET_BIT(var,bit) ((var) |= (bit))
|
||||
#define REMOVE_BIT(var,bit) ((var) &= ~(bit))
|
||||
|
|
@ -198,27 +205,27 @@ void char_from_furniture(struct char_data *ch);
|
|||
#define SPELL_ROUTINES(spl) (spell_info[spl].routines)
|
||||
|
||||
/* IS_MOB() acts as a VALID_MOB_RNUM()-like function.*/
|
||||
#define IS_NPC(ch) (IS_SET(MOB_FLAGS(ch), MOB_ISNPC))
|
||||
#define IS_NPC(ch) (IS_SET_AR(MOB_FLAGS(ch), MOB_ISNPC))
|
||||
#define IS_MOB(ch) (IS_NPC(ch) && GET_MOB_RNUM(ch) <= top_of_mobt && \
|
||||
GET_MOB_RNUM(ch) != NOBODY)
|
||||
|
||||
#define MOB_FLAGGED(ch, flag) (IS_NPC(ch) && IS_SET(MOB_FLAGS(ch), (flag)))
|
||||
#define PLR_FLAGGED(ch, flag) (!IS_NPC(ch) && IS_SET(PLR_FLAGS(ch), (flag)))
|
||||
#define AFF_FLAGGED(ch, flag) (IS_SET(AFF_FLAGS(ch), (flag)))
|
||||
#define PRF_FLAGGED(ch, flag) (IS_SET(PRF_FLAGS(ch), (flag)))
|
||||
#define ROOM_FLAGGED(loc, flag) (IS_SET(ROOM_FLAGS(loc), (flag)))
|
||||
#define MOB_FLAGGED(ch, flag) (IS_NPC(ch) && IS_SET_AR(MOB_FLAGS(ch), (flag)))
|
||||
#define PLR_FLAGGED(ch, flag) (!IS_NPC(ch) && IS_SET_AR(PLR_FLAGS(ch), (flag)))
|
||||
#define AFF_FLAGGED(ch, flag) (IS_SET_AR(AFF_FLAGS(ch), (flag)))
|
||||
#define PRF_FLAGGED(ch, flag) (IS_SET_AR(PRF_FLAGS(ch), (flag)))
|
||||
#define ROOM_FLAGGED(loc, flag) (IS_SET_AR(ROOM_FLAGS(loc), (flag)))
|
||||
#define EXIT_FLAGGED(exit, flag) (IS_SET((exit)->exit_info, (flag)))
|
||||
#define OBJAFF_FLAGGED(obj, flag) (IS_SET(GET_OBJ_AFFECT(obj), (flag)))
|
||||
#define OBJVAL_FLAGGED(obj, flag) (IS_SET(GET_OBJ_VAL((obj), 1), (flag)))
|
||||
#define OBJWEAR_FLAGGED(obj, flag) (IS_SET(GET_OBJ_WEAR(obj), (flag)))
|
||||
#define OBJ_FLAGGED(obj, flag) (IS_SET(GET_OBJ_EXTRA(obj), (flag)))
|
||||
#define OBJWEAR_FLAGGED(obj, flag) (IS_SET_AR(GET_OBJ_WEAR(obj), (flag)))
|
||||
#define OBJ_FLAGGED(obj, flag) (IS_SET_AR(GET_OBJ_EXTRA(obj), (flag)))
|
||||
#define HAS_SPELL_ROUTINE(spl, flag) (IS_SET(SPELL_ROUTINES(spl), (flag)))
|
||||
|
||||
/* IS_AFFECTED for backwards compatibility */
|
||||
#define IS_AFFECTED(ch, skill) (AFF_FLAGGED((ch), (skill)))
|
||||
|
||||
#define PLR_TOG_CHK(ch,flag) ((TOGGLE_BIT(PLR_FLAGS(ch), (flag))) & (flag))
|
||||
#define PRF_TOG_CHK(ch,flag) ((TOGGLE_BIT(PRF_FLAGS(ch), (flag))) & (flag))
|
||||
#define PLR_TOG_CHK(ch,flag) ((TOGGLE_BIT_AR(PLR_FLAGS(ch), (flag))) & (flag))
|
||||
#define PRF_TOG_CHK(ch,flag) ((TOGGLE_BIT_AR(PRF_FLAGS(ch), (flag))) & Q_BIT(flag))
|
||||
|
||||
/* new define for quick check */
|
||||
#define DEAD(ch) (PLR_FLAGGED((ch), PLR_NOTDEADYET) || MOB_FLAGGED((ch), MOB_NOTDEADYET))
|
||||
|
|
@ -379,6 +386,7 @@ void char_from_furniture(struct char_data *ch);
|
|||
#define GET_OBJ_RENT(obj) ((obj)->obj_flags.cost_per_day)
|
||||
#define GET_OBJ_AFFECT(obj) ((obj)->obj_flags.bitvector)
|
||||
#define GET_OBJ_EXTRA(obj) ((obj)->obj_flags.extra_flags)
|
||||
#define GET_OBJ_EXTRA_AR(obj, i) ((obj)->obj_flags.extra_flags[(i)])
|
||||
#define GET_OBJ_WEAR(obj) ((obj)->obj_flags.wear_flags)
|
||||
#define GET_OBJ_VAL(obj, val) ((obj)->obj_flags.value[(val)])
|
||||
#define GET_OBJ_WEIGHT(obj) ((obj)->obj_flags.weight)
|
||||
|
|
@ -452,7 +460,7 @@ void char_from_furniture(struct char_data *ch);
|
|||
(CAN_WEAR((obj), ITEM_WEAR_TAKE) && CAN_CARRY_OBJ((ch),(obj)) && \
|
||||
CAN_SEE_OBJ((ch),(obj)))
|
||||
|
||||
#define PERS(ch, vict) GET_NAME(ch)
|
||||
#define PERS(ch, vict) (CAN_SEE(vict, ch) ? GET_NAME(ch) : "someone")
|
||||
|
||||
#define OBJS(obj, vict) (CAN_SEE_OBJ((vict), (obj)) ? \
|
||||
(obj)->short_description : "something")
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ ACMD(do_oasis_zedit)
|
|||
STATE(d) = CON_ZEDIT;
|
||||
|
||||
act("$n starts using OLC.", TRUE, d->character, 0, 0, TO_ROOM);
|
||||
SET_BIT(PLR_FLAGS(ch), PLR_WRITING);
|
||||
SET_BIT_AR(PLR_FLAGS(ch), PLR_WRITING);
|
||||
|
||||
mudlog(CMP, LVL_IMMORT, TRUE, "OLC: %s starts editing zone %d allowed zone %d",
|
||||
GET_NAME(ch), zone_table[OLC_ZNUM(d)].number, GET_OLC_ZONE(ch));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue