- Removed MOBprograms, fixed trg/index a few typos and some bleeding, added ALL_PERMISSIONS, --Rumble

This commit is contained in:
Rumble 2007-02-24 00:12:44 +00:00
parent 8508dc476a
commit 916281ecb0
14 changed files with 37 additions and 600 deletions

View file

@ -10,7 +10,6 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "comm.h"
@ -28,7 +27,6 @@ extern struct help_index_element *help_table;
extern char *help;
extern char *ihelp;
extern struct time_info_data time_info;
extern char *credits;
extern char *news;
extern char *info;
@ -49,6 +47,7 @@ char *title_male(int chclass, int level);
char *title_female(int chclass, int level);
struct time_info_data *real_time_passed(time_t t2, time_t t1);
int compute_armor_class(struct char_data *ch);
int has_mail(long id);
/* local functions */
int sort_commands_helper(const void *a, const void *b);
@ -98,7 +97,6 @@ int *cmd_sort_info;
#define SHOW_OBJ_SHORT 1
#define SHOW_OBJ_ACTION 2
void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode)
{
if (!obj || !ch) {
@ -170,7 +168,6 @@ void show_obj_to_char(struct obj_data *obj, struct char_data *ch, int mode)
send_to_char(ch, "\r\n");
}
void show_obj_modifiers(struct obj_data *obj, struct char_data *ch)
{
if (OBJ_FLAGGED(obj, ITEM_INVISIBLE))
@ -189,7 +186,6 @@ void show_obj_modifiers(struct obj_data *obj, struct char_data *ch)
send_to_char(ch, " ..It emits a faint humming sound!");
}
void list_obj_to_char(struct obj_data *list, struct char_data *ch, int mode, int show)
{
struct obj_data *i, *j;
@ -209,9 +205,12 @@ void list_obj_to_char(struct obj_data *list, struct char_data *ch, int mode, int
if (!strcmp(j->short_description, i->short_description))
num++;
if (CAN_SEE_OBJ(ch, i) && (*i->description != '.' || (IS_NPC(ch) || PRF_FLAGGED(ch, PRF_HOLYLIGHT)))) {
if (mode == SHOW_OBJ_LONG)
send_to_char(ch, "%s", CCGRN(ch, C_NRM));
if (num != 1)
send_to_char(ch, "(%2i) ", num);
show_obj_to_char(i, ch, mode);
send_to_char(ch, "%s", CCNRM(ch, C_NRM));
found = TRUE;
}
}
@ -249,7 +248,6 @@ void diag_char_to_char(struct char_data *i, struct char_data *ch)
send_to_char(ch, "%c%s %s\r\n", UPPER(*pers), pers + 1, diagnosis[ar_index].text);
}
void look_at_char(struct char_data *i, struct char_data *ch)
{
int j, found;
@ -294,7 +292,6 @@ void look_at_char(struct char_data *i, struct char_data *ch)
}
}
void list_one_char(struct char_data *i, struct char_data *ch)
{
const char *positions[] = {
@ -378,8 +375,6 @@ void list_one_char(struct char_data *i, struct char_data *ch)
act("...$e glows with a bright light!", FALSE, i, 0, ch, TO_VICT);
}
void list_char_to_char(struct char_data *list, struct char_data *ch)
{
struct char_data *i;
@ -390,15 +385,16 @@ void list_char_to_char(struct char_data *list, struct char_data *ch)
if (!IS_NPC(ch) && !PRF_FLAGGED(ch, PRF_HOLYLIGHT) &&
IS_NPC(i) && i->player.long_descr && *i->player.long_descr == '.')
continue;
send_to_char(ch, "%s", CCYEL(ch, C_NRM));
if (CAN_SEE(ch, i))
list_one_char(i, ch);
else if (IS_DARK(IN_ROOM(ch)) && !CAN_SEE_IN_DARK(ch) &&
AFF_FLAGGED(i, AFF_INFRAVISION))
send_to_char(ch, "You see a pair of glowing red eyes looking your way.\r\n");
send_to_char(ch, "%s", CCNRM(ch, C_NRM));
}
}
void do_auto_exits(struct char_data *ch)
{
int door, slen = 0;
@ -418,7 +414,6 @@ void do_auto_exits(struct char_data *ch)
send_to_char(ch, "%s]%s\r\n", slen ? "" : "None!", CCNRM(ch, C_NRM));
}
ACMD(do_exits)
{
int door, len = 0;
@ -438,7 +433,7 @@ ACMD(do_exits)
len++;
if (GET_LEVEL(ch) >= LVL_IMMORT)
if (PRF_FLAGGED(ch, PRF_SHOWVNUMS))
send_to_char(ch, "%-5s - [%5d] %s\r\n", dirs[door], GET_ROOM_VNUM(EXIT(ch, door)->to_room),
world[EXIT(ch, door)->to_room].name);
else
@ -450,8 +445,6 @@ ACMD(do_exits)
send_to_char(ch, " None.\r\n");
}
void look_at_room(struct char_data *ch, int ignore_brief)
{
struct room_data *rm = &world[IN_ROOM(ch)];
@ -489,15 +482,10 @@ void look_at_room(struct char_data *ch, int ignore_brief)
do_auto_exits(ch);
/* now list characters & objects */
send_to_char(ch, "%s", CCGRN(ch, C_NRM));
list_obj_to_char(world[IN_ROOM(ch)].contents, ch, SHOW_OBJ_LONG, FALSE);
send_to_char(ch, "%s", CCYEL(ch, C_NRM));
list_char_to_char(world[IN_ROOM(ch)].people, ch);
send_to_char(ch, "%s", CCNRM(ch, C_NRM));
}
void look_in_direction(struct char_data *ch, int dir)
{
if (EXIT(ch, dir)) {
@ -514,8 +502,6 @@ void look_in_direction(struct char_data *ch, int dir)
send_to_char(ch, "Nothing special there...\r\n");
}
void look_in_obj(struct char_data *ch, char *arg)
{
struct obj_data *obj = NULL;
@ -568,8 +554,6 @@ void look_in_obj(struct char_data *ch, char *arg)
}
}
char *find_exdesc(char *word, struct extra_descr_data *list)
{
struct extra_descr_data *i;
@ -581,7 +565,6 @@ char *find_exdesc(char *word, struct extra_descr_data *list)
return (NULL);
}
/*
* Given the argument "look at <target>", figure out what object or char
* matches the target. First, see if there is another char in the room
@ -668,7 +651,6 @@ void look_at_target(struct char_data *ch, char *arg)
send_to_char(ch, "You do not see that here.\r\n");
}
ACMD(do_look)
{
int look_type;
@ -722,8 +704,6 @@ ACMD(do_look)
}
}
ACMD(do_examine)
{
struct char_data *tmp_char;
@ -753,8 +733,6 @@ ACMD(do_examine)
}
}
ACMD(do_gold)
{
if (GET_GOLD(ch) == 0)
@ -765,7 +743,6 @@ ACMD(do_gold)
send_to_char(ch, "You have %d gold coins.\r\n", GET_GOLD(ch));
}
ACMD(do_score)
{
struct time_info_data playing_time;
@ -892,7 +869,6 @@ ACMD(do_inventory)
list_obj_to_char(ch->carrying, ch, SHOW_OBJ_SHORT, TRUE);
}
ACMD(do_equipment)
{
int i, found = 0;
@ -915,7 +891,6 @@ ACMD(do_equipment)
send_to_char(ch, " Nothing.\r\n");
}
ACMD(do_time)
{
const char *suf;
@ -959,7 +934,6 @@ ACMD(do_time)
day, suf, month_name[time_info.month], time_info.year);
}
ACMD(do_weather)
{
const char *sky_look[] = {
@ -1073,7 +1047,6 @@ ACMD(do_help)
page_string(ch->desc, help_table[mid].entry, 0);
}
#define WHO_FORMAT \
"Usage: who [minlev[-maxlev]] [-n name] [-c classlist] [-k] [-l] [-n] [-q] [-r] [-s] [-z]\r\n"
@ -1314,11 +1287,9 @@ ACMD(do_who)
send_to_char(ch, "%d characters displayed.\r\n", num_can_see);
}
#define USERS_FORMAT \
"format: users [-l minlevel[-maxlevel]] [-n name] [-h host] [-c classlist] [-o] [-p]\r\n"
/* BIG OL' FIXME: Rewrite it all. Similar to do_who(). */
ACMD(do_users)
{
char line[200], line2[220], idletime[10], classname[20];
@ -1383,7 +1354,7 @@ ACMD(do_users)
}
} /* end while (parser) */
send_to_char(ch,
"Num Class Name State Idl Login@ Site\r\n"
"Num Class Name State Idl Login@@ Site\r\n"
"--- ------- ------------ -------------- ----- -------- ------------------------\r\n");
one_argument(argument, arg);
@ -1462,7 +1433,6 @@ ACMD(do_users)
send_to_char(ch, "\r\n%d visible sockets connected.\r\n", num_can_see);
}
/* Generic page_string function for displaying text */
ACMD(do_gen_ps)
{
@ -1520,7 +1490,6 @@ ACMD(do_gen_ps)
}
}
void perform_mortal_where(struct char_data *ch, char *arg)
{
struct char_data *i;
@ -1554,7 +1523,6 @@ void perform_mortal_where(struct char_data *ch, char *arg)
}
}
void print_object_location(int num, struct obj_data *obj, struct char_data *ch,
int recur)
{
@ -1580,8 +1548,6 @@ void print_object_location(int num, struct obj_data *obj, struct char_data *ch,
send_to_char(ch, "in an unknown location\r\n");
}
void perform_immort_where(struct char_data *ch, char *arg)
{
struct char_data *i;
@ -1621,8 +1587,6 @@ void perform_immort_where(struct char_data *ch, char *arg)
}
}
ACMD(do_where)
{
char arg[MAX_INPUT_LENGTH];
@ -1635,8 +1599,6 @@ ACMD(do_where)
perform_mortal_where(ch, arg);
}
ACMD(do_levels)
{
char buf[MAX_STRING_LENGTH];
@ -1677,8 +1639,6 @@ ACMD(do_levels)
page_string(ch->desc, buf, TRUE);
}
ACMD(do_consider)
{
char buf[MAX_INPUT_LENGTH];
@ -1725,8 +1685,6 @@ ACMD(do_consider)
send_to_char(ch, "You ARE mad!\r\n");
}
ACMD(do_diagnose)
{
char buf[MAX_INPUT_LENGTH];
@ -2009,8 +1967,11 @@ ACMD(do_toggle)
case SCMD_AFK:
if ((result = PRF_TOG_CHK(ch, PRF_AFK)))
act("$n is now away from $s keyboard.", TRUE, ch, 0, 0, TO_ROOM);
else
else {
act("$n has return to $s keyboard.", TRUE, ch, 0, 0, TO_ROOM);
if (has_mail(GET_IDNUM(ch)))
send_to_char(ch, "You have mail waiting.\r\n");
}
break;
case SCMD_WIMPY:
if (!*arg2) {
@ -2076,7 +2037,6 @@ int sort_commands_helper(const void *a, const void *b)
complete_cmd_info[*(const int *)b].sort_as);
}
void sort_commands(void)
{
int a, num_of_cmds = 0;
@ -2094,7 +2054,6 @@ void sort_commands(void)
qsort(cmd_sort_info + 1, num_of_cmds - 2, sizeof(int), sort_commands_helper);
}
ACMD(do_commands)
{
int no, i, cmd_num;

View file

@ -836,6 +836,8 @@ void do_stat_character(struct char_data *ch, struct char_data *k)
send_to_char(ch, ", OLC[%sAedit%s]", CCCYN(ch, C_NRM), CCNRM(ch, C_NRM));
else if (GET_OLC_ZONE(k)==HEDIT_PERMISSION)
send_to_char(ch, ", OLC[%sHedit%s]", CCCYN(ch, C_NRM), CCNRM(ch, C_NRM));
else if (GET_OLC_ZONE(k) == ALL_PERMISSION)
send_to_char(ch, ", OLC[%sAll%s]", CCCYN(ch, C_NRM), CCNRM(ch, C_NRM));
else if (GET_OLC_ZONE(k)==NOWHERE)
send_to_char(ch, ", OLC[%sOFF%s]", CCCYN(ch, C_NRM), CCNRM(ch, C_NRM));
else
@ -2160,7 +2162,7 @@ ACMD(do_wiznet)
delete_doubledollar(argument);
if (!*argument) {
send_to_char(ch, "Usage: wiznet <text> | #<level> <text> | *<emotetext> |\r\n wiznet @<level> *<emotetext> | wiz @\r\n");
send_to_char(ch, "Usage: wiznet [ #<level> ] [<text> | *<emotetext> | @@ ]\r\n");
return;
}
switch (*argument) {
@ -3020,8 +3022,10 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode, char *va
case 36: /* olc */
if (is_abbrev(val_arg, "socials") || is_abbrev(val_arg, "actions") || is_abbrev(val_arg, "aedit"))
GET_OLC_ZONE(vict) = AEDIT_PERMISSION;
else if (is_abbrev(val_arg, "hedit"))
else if (is_abbrev(val_arg, "hedit") || is_abbrev(val_arg, "help"))
GET_OLC_ZONE(vict) = HEDIT_PERMISSION;
else if (*val_arg == '*' || is_abbrev(val_arg, "all"))
GET_OLC_ZONE(vict) = ALL_PERMISSION;
else if (is_abbrev(val_arg, "off"))
GET_OLC_ZONE(vict) = NOWHERE;
else if (!is_number(val_arg)) {

View file

@ -53,7 +53,7 @@ ACMD(do_oasis_aedit)
return;
}
if (GET_OLC_ZONE(ch) != AEDIT_PERMISSION && GET_LEVEL(ch) < LVL_GOD) {
if (!can_edit_zone(ch, AEDIT_PERMISSION)) {
send_to_char(ch, "You don't have access to editing socials.\r\n");
return;
}

View file

@ -10,7 +10,6 @@
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "interpreter.h" /* alias_data */
@ -24,11 +23,8 @@ cpp_extern const char *ascii_pfiles_version =
"ASCII Player Files 3.0.1";
/* strings corresponding to ordinals/bitvectors in structs.h */
/* (Note: strings for class definitions in class.c instead of here) */
/* cardinal directions */
const char *dirs[] =
{
@ -41,7 +37,6 @@ const char *dirs[] =
"\n"
};
/* ROOM_x */
const char *room_bits[] = {
"DARK",
@ -63,7 +58,6 @@ const char *room_bits[] = {
"\n"
};
/* EX_x */
const char *exit_bits[] = {
"DOOR",
@ -73,7 +67,6 @@ const char *exit_bits[] = {
"\n"
};
/* SECT_ */
const char *sector_types[] = {
"Inside",
@ -89,7 +82,6 @@ const char *sector_types[] = {
"\n"
};
/*
* SEX_x
* Not used in sprinttype() so no \n.
@ -102,7 +94,6 @@ const char *genders[] =
"\n"
};
/* POS_x */
const char *position_types[] = {
"Dead",
@ -117,7 +108,6 @@ const char *position_types[] = {
"\n"
};
/* PLR_x */
const char *player_bits[] = {
"KILLER",
@ -145,7 +135,6 @@ const char *player_bits[] = {
"\n"
};
/* MOB_x */
const char *action_bits[] = {
"SPEC",
@ -170,7 +159,6 @@ const char *action_bits[] = {
"\n"
};
/* PRF_x */
const char *preference_bits[] = {
"BRIEF",
@ -207,7 +195,6 @@ const char *preference_bits[] = {
"\n"
};
/* AFF_x */
const char *affected_bits[] =
{
@ -236,7 +223,6 @@ const char *affected_bits[] =
"\n"
};
/* CON_x */
const char *connected_types[] = {
"Playing",
@ -295,7 +281,6 @@ const char *wear_where[] = {
"<held> "
};
/* WEAR_x - for stat */
const char *equipment_types[] = {
"Used as light",
@ -319,7 +304,6 @@ const char *equipment_types[] = {
"\n"
};
/* ITEM_x (ordinal object types) */
const char *item_types[] = {
"UNDEFINED",
@ -349,7 +333,6 @@ const char *item_types[] = {
"\n"
};
/* ITEM_WEAR_ (wear bitvector) */
const char *wear_bits[] = {
"TAKE",
@ -370,7 +353,6 @@ const char *wear_bits[] = {
"\n"
};
/* ITEM_x (extra bits) */
const char *extra_bits[] = {
"GLOW",
@ -393,7 +375,6 @@ const char *extra_bits[] = {
"\n"
};
/* APPLY_x */
const char *apply_types[] = {
"NONE",
@ -424,7 +405,6 @@ const char *apply_types[] = {
"\n"
};
/* CONT_x */
const char *container_bits[] = {
"CLOSEABLE",
@ -434,7 +414,6 @@ const char *container_bits[] = {
"\n",
};
/* LIQ_x */
const char *drinks[] =
{
@ -457,10 +436,7 @@ const char *drinks[] =
"\n"
};
/* other constants for liquids ******************************************/
/* one-word alias for each drink */
const char *drinknames[] =
{
@ -483,7 +459,6 @@ const char *drinknames[] =
"\n"
};
/* effect of drinks on hunger, thirst, and drunkenness -- see values.doc */
int drink_aff[][3] = {
{0, 1, 10},
@ -504,7 +479,6 @@ int drink_aff[][3] = {
{0, 0, 13}
};
/* color of the various drinks */
const char *color_liquid[] =
{
@ -527,7 +501,6 @@ const char *color_liquid[] =
"\n"
};
/*
* level of fullness for drink containers
* Not used in sprinttype() so no \n.
@ -540,10 +513,7 @@ const char *fullness[] =
""
};
/* str, int, wis, dex, con applies **************************************/
/* [ch] strength apply (all) */
cpp_extern const struct str_app_type str_app[] = {
{-5, -4, 0, 0}, /* str = 0 */
@ -579,8 +549,6 @@ cpp_extern const struct str_app_type str_app[] = {
{3, 6, 480, 30} /* str = 18/100 */
};
/* [dex] skill apply (thieves only) */
cpp_extern const struct dex_skill_type dex_app_skill[] = {
{-99, -99, -90, -99, -60}, /* dex = 0 */
@ -611,8 +579,6 @@ cpp_extern const struct dex_skill_type dex_app_skill[] = {
{25, 30, 15, 25, 25} /* dex = 25 */
};
/* [dex] apply (all) */
cpp_extern const struct dex_app_type dex_app[] = {
{-7, -7, 6}, /* dex = 0 */
@ -643,8 +609,6 @@ cpp_extern const struct dex_app_type dex_app[] = {
{5, 5, -6} /* dex = 25 */
};
/* [con] apply (all) */
cpp_extern const struct con_app_type con_app[] = {
{-4, 20}, /* con = 0 */
@ -675,8 +639,6 @@ cpp_extern const struct con_app_type con_app[] = {
{6, 99} /* con = 25 */
};
/* [int] apply (all) */
cpp_extern const struct int_app_type int_app[] = {
{3}, /* int = 0 */
@ -707,7 +669,6 @@ cpp_extern const struct int_app_type int_app[] = {
{60} /* int = 25 */
};
/* [wis] apply (all) */
cpp_extern const struct wis_app_type wis_app[] = {
{0}, /* wis = 0 */
@ -738,14 +699,12 @@ cpp_extern const struct wis_app_type wis_app[] = {
{7} /* wis = 25 */
};
const char *npc_class_types[] = {
"Normal",
"Undead",
"\n"
};
int rev_dir[] =
{
2,
@ -756,7 +715,6 @@ int rev_dir[] =
4
};
int movement_loss[] =
{
1, /* Inside */
@ -782,7 +740,6 @@ const char *weekdays[] = {
"the Day of the Sun"
};
/* Not used in sprinttype(). */
const char *month_name[] = {
"Month of Winter", /* 0 */
@ -829,7 +786,6 @@ const char *trig_types[] = {
"\n"
};
/* obj trigger types */
const char *otrig_types[] = {
"Global",
@ -855,7 +811,6 @@ const char *otrig_types[] = {
"\n"
};
/* wld trigger types */
const char *wtrig_types[] = {
"Global",
@ -881,27 +836,6 @@ const char *wtrig_types[] = {
"\n"
};
#if defined(CONFIG_OASIS_MPROG)
/*
* Definitions necessary for MobProg support in OasisOLC
*/
const char *mobprog_types[] = {
"INFILE",
"ACT",
"SPEECH",
"RAND",
"FIGHT",
"DEATH",
"HITPRCNT",
"ENTRY",
"GREET",
"ALL_GREET",
"GIVE",
"BRIBE",
"\n"
};
#endif
/* --- End of constants arrays. --- */
/*

View file

@ -38,9 +38,6 @@ extern int drink_aff[][3];
extern const char *trig_types[];
extern const char *otrig_types[];
extern const char *wtrig_types[];
#if defined(CONFIG_OASIS_MPROG)
extern const char *mobprog_types[];
#endif
extern size_t room_bits_count;
extern size_t action_bits_count;
extern size_t affected_bits_count;

View file

@ -3279,7 +3279,7 @@ void load_default_config( void )
CONFIG_DON_ROOM_3 = donation_room_3;
/****************************************************************************/
/**eration options. **/
/** Game operation options. **/
/****************************************************************************/
CONFIG_DFLT_PORT = DFLT_PORT;

View file

@ -70,15 +70,6 @@ int add_mobile(struct char_data *mob, mob_vnum vnum)
log("GenOLC: add_mobile: Added mobile %d at index #%d.", vnum, found);
#if CONFIG_GENOLC_MOBPROG
GET_MPROG(OLC_MOB(d)) = OLC_MPROGL(d);
GET_MPROG_TYPE(OLC_MOB(d)) = (OLC_MPROGL(d) ? OLC_MPROGL(d)->type : 0);
while (OLC_MPROGL(d)) {
GET_MPROG_TYPE(OLC_MOB(d)) |= OLC_MPROGL(d)->type;
OLC_MPROGL(d) = OLC_MPROGL(d)->next;
}
#endif
/*
* Update live mobile rnums.
*/
@ -313,29 +304,6 @@ int save_mobiles(zone_rnum rznum)
return written;
}
#if CONFIG_GENOLC_MOBPROG
int write_mobile_mobprog(mob_vnum mvnum, struct char_data *mob, FILE *fd)
{
char wmmarg[MAX_STRING_LENGTH], wmmcom[MAX_STRING_LENGTH];
MPROG_DATA *mob_prog;
for (mob_prog = GET_MPROG(mob); mob_prog; mob_prog = mob_prog->next) {
wmmarg[MAX_STRING_LENGTH - 1] = '\0';
wmmcom[MAX_STRING_LENGTH - 1] = '\0';
strip_cr(strncpy(wmmarg, mob_prog->arglist, MAX_STRING_LENGTH - 1));
strip_cr(strncpy(wmmcom, mob_prog->comlist, MAX_STRING_LENGTH - 1));
fprintf(fd, "%s %s~\n"
"%s%c\n",
medit_get_mprog_type(mob_prog), wmmarg,
wmmcom, STRING_TERMINATOR
);
if (mob_prog->next == NULL)
fputs("|\n", fd);
}
return TRUE;
}
#endif
int write_mobile_espec(mob_vnum mvnum, struct char_data *mob, FILE *fd)
{
if (GET_ATTACK(mob) != 0)

View file

@ -26,17 +26,8 @@
/* external variables */
extern struct attack_hit_type attack_hit_text[];
#if CONFIG_OASIS_MPROG
extern const char *mobprog_types[];
#endif
/* local functions */
#if CONFIG_OASIS_MPROG
void medit_disp_mprog(struct descriptor_data *d);
void medit_disp_mprog_types(struct descriptor_data *d);
void medit_change_mprog(struct descriptor_data *d);
const char *medit_get_mprog_type(struct mob_prog_data *mprog);
#endif
void medit_setup_new(struct descriptor_data *d);
void medit_setup_existing(struct descriptor_data *d, int rmob_num);
void init_mobile(struct char_data *mob);
@ -49,12 +40,6 @@ void medit_disp_mob_flags(struct descriptor_data *d);
void medit_disp_aff_flags(struct descriptor_data *d);
void medit_disp_menu(struct descriptor_data *d);
/* handy macros */
#if CONFIG_OASIS_MPROG
#define GET_MPROG(mob) (mob_index[(mob)->nr].mobprogs)
#define GET_MPROG_TYPE(mob) (mob_index[(mob)->nr].progtypes)
#endif
/*-------------------------------------------------------------------*\
utility functions
\*-------------------------------------------------------------------*/
@ -226,10 +211,6 @@ void medit_setup_new(struct descriptor_data *d)
GET_SDESC(mob) = strdup("the unfinished mob");
GET_LDESC(mob) = strdup("An unfinished mob stands here.\r\n");
GET_DDESC(mob) = strdup("It looks unfinished.\r\n");
#if CONFIG_OASIS_MPROG
OLC_MPROGL(d) = NULL;
OLC_MPROG(d) = NULL;
#endif
SCRIPT(mob) = NULL;
mob->proto_script = OLC_SCRIPT(d) = NULL;
@ -254,28 +235,6 @@ void medit_setup_existing(struct descriptor_data *d, int rmob_num)
copy_mobile(mob, mob_proto + rmob_num);
#if CONFIG_OASIS_MPROG
{
MPROG_DATA *temp;
MPROG_DATA *head;
if (GET_MPROG(mob))
CREATE(OLC_MPROGL(d), MPROG_DATA, 1);
head = OLC_MPROGL(d);
for (temp = GET_MPROG(mob); temp; temp = temp->next) {
OLC_MPROGL(d)->type = temp->type;
OLC_MPROGL(d)->arglist = strdup(temp->arglist);
OLC_MPROGL(d)->comlist = strdup(temp->comlist);
if (temp->next) {
CREATE(OLC_MPROGL(d)->next, MPROG_DATA, 1);
OLC_MPROGL(d) = OLC_MPROGL(d)->next;
}
}
OLC_MPROGL(d) = head;
OLC_MPROG(d) = OLC_MPROGL(d);
}
#endif
OLC_MOB(d) = mob;
OLC_ITEM_TYPE(d) = MOB_TRIGGER;
dg_olc_script_copy(d);
@ -332,8 +291,6 @@ void medit_save_internally(struct descriptor_data *d)
return;
}
/* Update triggers */
/* Free old proto list */
if (mob_proto[new_rnum].proto_script &&
@ -401,97 +358,6 @@ void medit_disp_positions(struct descriptor_data *d)
write_to_output(d, "Enter position number : ");
}
/*-------------------------------------------------------------------*/
#if CONFIG_OASIS_MPROG
/*
* Get the type of MobProg.
*/
const char *medit_get_mprog_type(struct mob_prog_data *mprog)
{
switch (mprog->type) {
case IN_FILE_PROG: return ">in_file_prog";
case ACT_PROG: return ">act_prog";
case SPEECH_PROG: return ">speech_prog";
case RAND_PROG: return ">rand_prog";
case FIGHT_PROG: return ">fight_prog";
case HITPRCNT_PROG: return ">hitprcnt_prog";
case DEATH_PROG: return ">death_prog";
case ENTRY_PROG: return ">entry_prog";
case GREET_PROG: return ">greet_prog";
case ALL_GREET_PROG: return ">all_greet_prog";
case GIVE_PROG: return ">give_prog";
case BRIBE_PROG: return ">bribe_prog";
}
return ">ERROR_PROG";
}
/*-------------------------------------------------------------------*/
/*
* Display the MobProgs.
*/
void medit_disp_mprog(struct descriptor_data *d)
{
struct mob_prog_data *mprog = OLC_MPROGL(d);
OLC_MTOTAL(d) = 1;
clear_screen(d);
while (mprog) {
write_to_output(d, "%d) %s %s\r\n", OLC_MTOTAL(d), medit_get_mprog_type(mprog),
(mprog->arglist ? mprog->arglist : "NONE"));
OLC_MTOTAL(d)++;
mprog = mprog->next;
}
write_to_output(d, "%d) Create New Mob Prog\r\n"
"%d) Purge Mob Prog\r\n"
"Enter number to edit [0 to exit]: ",
OLC_MTOTAL(d), OLC_MTOTAL(d) + 1);
OLC_MODE(d) = MEDIT_MPROG;
}
/*-------------------------------------------------------------------*/
/*
* Change the MobProgs.
*/
void medit_change_mprog(struct descriptor_data *d)
{
clear_screen(d);
write_to_output(d, "1) Type: %s\r\n"
"2) Args: %s\r\n"
"3) Commands:\r\n%s\r\n\r\n"
"Enter number to edit [0 to exit]: ",
medit_get_mprog_type(OLC_MPROG(d)),
(OLC_MPROG(d)->arglist ? OLC_MPROG(d)->arglist: "NONE"),
(OLC_MPROG(d)->comlist ? OLC_MPROG(d)->comlist : "NONE"));
OLC_MODE(d) = MEDIT_CHANGE_MPROG;
}
/*-------------------------------------------------------------------*/
/*
* Change the MobProg type.
*/
void medit_disp_mprog_types(struct descriptor_data *d)
{
int i;
get_char_colors(d->character);
clear_screen(d);
for (i = 0; i < NUM_PROGS-1; i++) {
write_to_output(d, "%s%2d%s) %s\r\n", grn, i, nrm, mobprog_types[i]);
}
write_to_output(d, "Enter mob prog type : ");
OLC_MODE(d) = MEDIT_MPROG_TYPE;
}
#endif
/*-------------------------------------------------------------------*/
/*
* Display the gender of the mobile.
*/
@ -622,9 +488,6 @@ void medit_disp_menu(struct descriptor_data *d)
"%sK%s) Attack : %s%s\r\n"
"%sL%s) NPC Flags : %s%s\r\n"
"%sM%s) AFF Flags : %s%s\r\n"
#if CONFIG_OASIS_MPROG
"%sP%s) Mob Progs : %s%s\r\n"
#endif
"%sS%s) Script : %s%s\r\n"
"%sX%s) Delete mob\r\n"
"%sQ%s) Quit\r\n"
@ -635,9 +498,6 @@ void medit_disp_menu(struct descriptor_data *d)
grn, nrm, yel, attack_hit_text[(int)GET_ATTACK(mob)].singular,
grn, nrm, cyn, flags,
grn, nrm, cyn, flag2,
#if CONFIG_OASIS_MPROG
grn, nrm, cyn, (OLC_MPROGL(d) ? "Set." : "Not Set."),
#endif
grn, nrm, cyn, OLC_SCRIPT(d) ?"Set.":"Not Set.",
grn, nrm,
grn, nrm
@ -822,13 +682,6 @@ void medit_parse(struct descriptor_data *d, char *arg)
write_to_output(d, "Are you sure you want to delete this mobile? ");
OLC_MODE(d) = MEDIT_DELETE;
return;
#if CONFIG_OASIS_MPROG
case 'p':
case 'P':
OLC_MODE(d) = MEDIT_MPROG;
medit_disp_mprog(d);
return;
#endif
case 's':
case 'S':
OLC_SCRIPT_EDIT_MODE(d) = SCRIPT_MAIN_MENU;
@ -887,16 +740,6 @@ void medit_parse(struct descriptor_data *d, char *arg)
mudlog(BRF, LVL_BUILDER, TRUE, "SYSERR: OLC: medit_parse(): Reached D_DESC case!");
write_to_output(d, "Oops...\r\n");
break;
/*-------------------------------------------------------------------*/
#if CONFIG_OASIS_MPROG
case MEDIT_MPROG_COMLIST:
/*
* We should never get here, but if we do, bail out.
*/
cleanup_olc(d, CLEANUP_ALL);
mudlog(BRF, LVL_BUILDER, TRUE, "SYSERR: OLC: medit_parse(): Reached MPROG_COMLIST case!");
break;
#endif
/*-------------------------------------------------------------------*/
case MEDIT_NPC_FLAGS:
if ((i = atoi(arg)) <= 0)
@ -917,102 +760,12 @@ void medit_parse(struct descriptor_data *d, char *arg)
AFF_CHARM | AFF_POISON | AFF_GROUP | AFF_SLEEP);
medit_disp_aff_flags(d);
return;
/*-------------------------------------------------------------------*/
#if CONFIG_OASIS_MPROG
case MEDIT_MPROG:
if ((i = atoi(arg)) == 0)
medit_disp_menu(d);
else if (i == OLC_MTOTAL(d)) {
struct mob_prog_data *temp;
CREATE(temp, struct mob_prog_data, 1);
temp->next = OLC_MPROGL(d);
temp->type = -1;
temp->arglist = NULL;
temp->comlist = NULL;
OLC_MPROG(d) = temp;
OLC_MPROGL(d) = temp;
OLC_MODE(d) = MEDIT_CHANGE_MPROG;
medit_change_mprog (d);
} else if (i < OLC_MTOTAL(d)) {
struct mob_prog_data *temp;
int x = 1;
for (temp = OLC_MPROGL(d); temp && x < i; temp = temp->next)
x++;
OLC_MPROG(d) = temp;
OLC_MODE(d) = MEDIT_CHANGE_MPROG;
medit_change_mprog (d);
} else if (i == (OLC_MTOTAL(d) + 1)) {
write_to_output(d, "Which mob prog do you want to purge? ");
OLC_MODE(d) = MEDIT_PURGE_MPROG;
} else
medit_disp_menu(d);
return;
case MEDIT_PURGE_MPROG:
if ((i = atoi(arg)) > 0 && i < OLC_MTOTAL(d)) {
struct mob_prog_data *temp;
int x = 1;
for (temp = OLC_MPROGL(d); temp && x < i; temp = temp->next)
x++;
OLC_MPROG(d) = temp;
REMOVE_FROM_LIST(OLC_MPROG(d), OLC_MPROGL(d), next);
free(OLC_MPROG(d)->arglist);
free(OLC_MPROG(d)->comlist);
free(OLC_MPROG(d));
OLC_MPROG(d) = NULL;
OLC_VAL(d) = 1;
}
medit_disp_mprog(d);
return;
case MEDIT_CHANGE_MPROG:
if ((i = atoi(arg)) == 1)
medit_disp_mprog_types(d);
else if (i == 2) {
write_to_output(d, "Enter new arg list: ");
OLC_MODE(d) = MEDIT_MPROG_ARGS;
} else if (i == 3) {
write_to_output(d, "Enter new mob prog commands:\r\n");
/*
* Pass control to modify.c for typing.
*/
OLC_MODE(d) = MEDIT_MPROG_COMLIST;
if (OLC_MPROG(d)->comlist) {
write_to_output(d, "%s", OLC_MPROG(d)->comlist);
oldtext = strdup(OLC_MPROG(d)->comlist);
}
string_write(d, &OLC_MPROG(d)->comlist, MAX_STRING_LENGTH, 0, oldtext);
OLC_VAL(d) = 1;
} else
medit_disp_mprog(d);
return;
#endif
/*-------------------------------------------------------------------*/
/*
* Numerical responses.
*/
#if CONFIG_OASIS_MPROG
case MEDIT_MPROG_TYPE:
/*
* This calculation may be off by one too many powers of 2?
* Someone who actually uses MobProgs will have to check.
*/
OLC_MPROG(d)->type = (1 << LIMIT(atoi(arg), 0, NUM_PROGS - 1));
OLC_VAL(d) = 1;
medit_change_mprog(d);
return;
case MEDIT_MPROG_ARGS:
OLC_MPROG(d)->arglist = strdup(arg);
OLC_VAL(d) = 1;
medit_change_mprog(d);
return;
#endif
case MEDIT_SEX:
GET_SEX(OLC_MOB(d)) = LIMIT(i, 0, NUM_GENDERS - 1);
break;
@ -1134,12 +887,6 @@ void medit_string_cleanup(struct descriptor_data *d, int terminator)
{
switch (OLC_MODE(d)) {
#if CONFIG_OASIS_MPROG
case MEDIT_MPROG_COMLIST:
medit_change_mprog(d);
break;
#endif
case MEDIT_D_DESC:
default:
medit_disp_menu(d);

View file

@ -394,7 +394,13 @@ int can_edit_zone(struct char_data *ch, zone_rnum rnum)
if (!ch->desc || IS_NPC(ch) || rnum == NOWHERE)
return FALSE;
if (rnum == HEDIT_PERMISSION)
if (GET_OLC_ZONE(ch) == ALL_PERMISSION)
return TRUE;
if (GET_OLC_ZONE(ch) == HEDIT_PERMISSION && rnum == HEDIT_PERMISSION)
return TRUE;
if (GET_OLC_ZONE(ch) == AEDIT_PERMISSION && rnum == AEDIT_PERMISSION)
return TRUE;
/* always access if ch is high enough level */

View file

@ -16,18 +16,7 @@
#define AEDIT_PERMISSION 999 /* arbitrary number higher than max zone vnum*/
#define HEDIT_PERMISSION 888 /* arbitrary number higher then max zone vnum*/
/*
* Set this to 1 to enable MobProg support. MobProgs are available on
* the CircleMUD FTP site in the "contrib/scripting/" directory.
*
* -- THIS WILL NOT WORK WITHOUT MobProgs INSTALLED. --
* -- OasisOLC DOES NOT COME WITH THEM. -- Loud enough for you?
*
* It might work with DG Scripts (successor to MobProgs) but I haven't
* tried, nor have I heard of anyone trying.
*/
#define CONFIG_OASIS_MPROG 0
#define ALL_PERMISSION 666 /* arbitrary number higher then max zone vnum*/
/*
* Macros, defines, structs and globals for the OLC suite. You will need
@ -52,13 +41,6 @@
#define NUM_SHOP_FLAGS 3
#define NUM_TRADERS 7
#if CONFIG_OASIS_MPROG
/*
* Define this to how many MobProg scripts you have.
*/
#define NUM_PROGS 12
#endif
/* -------------------------------------------------------------------------- */
/*
@ -136,11 +118,6 @@ struct oasis_olc_data {
struct shop_data *shop; /* used for 'sedit' */
struct config_data *config; /* used for 'cedit' */
struct extra_descr_data *desc; /* used in '[r|o|m]edit' */
#if CONFIG_OASIS_MPROG /* */
int total_mprogs; /* */
struct mob_prog_data *mprog; /* */
struct mob_prog_data *mprogl; /* */
#endif
struct social_messg *action; /* Aedit uses this one */
struct trig_data *trig;
int script_mode;
@ -174,12 +151,6 @@ extern const char *nrm, *grn, *cyn, *yel;
#define OLC_CONFIG(d) (OLC(d)->config) /* Config structure. */
#define OLC_TRIG(d) (OLC(d)->trig) /* Trigger structure. */
#if CONFIG_OASIS_MPROG
#define OLC_MPROG(d) (OLC(d)->mprog) /* Temporary MobProg. */
#define OLC_MPROGL(d) (OLC(d)->mprogl) /* MobProg list. */
#define OLC_MTOTAL(d) (OLC(d)->total_mprogs) /* Total mprog number. */
#endif
#define OLC_ACTION(d) (OLC(d)->action) /* Action structure */
#define OLC_HELP(d) (OLC(d)->help) /* Hedit structure */
@ -326,14 +297,6 @@ extern const char *nrm, *grn, *cyn, *yel;
#define MEDIT_LEVEL 25
#define MEDIT_ALIGNMENT 26
#define MEDIT_DELETE 27
#if CONFIG_OASIS_MPROG
#define MEDIT_MPROG 27
#define MEDIT_CHANGE_MPROG 28
#define MEDIT_MPROG_COMLIST 29
#define MEDIT_MPROG_ARGS 30
#define MEDIT_MPROG_TYPE 31
#define MEDIT_PURGE_MPROG 32
#endif
/*
* Submodes of SEDIT connectedness.

View file

@ -69,7 +69,12 @@ ACMD(do_oasis_list)
case SCMD_OASIS_RLIST: list_rooms(ch, rzone, vmin, vmax); break;
case SCMD_OASIS_TLIST: list_triggers(ch, rzone, vmin, vmax); break;
case SCMD_OASIS_SLIST: list_shops(ch, rzone, vmin, vmax); break;
case SCMD_OASIS_ZLIST: list_zones(ch, rzone, vmin, vmax); break;
case SCMD_OASIS_ZLIST:
if (!*smin)
list_zones(ch, NOWHERE, 0, zone_table[top_of_zone_table].number);
else
list_zones(ch, rzone, vmin, vmax);
break;
default:
send_to_char(ch, "You can't list that!\r\n");
mudlog(BRF, LVL_IMMORT, TRUE,

View file

@ -486,11 +486,12 @@ void save_char(struct char_data * ch)
/* Unaffect everything a character can be affected by */
for (i = 0; i < NUM_WEARS; i++) {
if (GET_EQ(ch, i))
if (GET_EQ(ch, i)) {
char_eq[i] = unequip_char(ch, i);
#ifndef NO_EXTRANEOUS_TRIGGERS
remove_otrigger(char_eq[i], ch);
#endif
}
else
char_eq[i] = NULL;
}

View file

@ -529,7 +529,7 @@
#define MAX_HELP_KEYWORDS 256
#define MAX_HELP_ENTRY MAX_STRING_LENGTH
/* define the largest set of commands for as trigger */
/* define the largest set of commands for a trigger */
#define MAX_CMD_LENGTH 16384 /* 16k should be plenty and then some */
/**********************************************************************