[May 17 2007] - Rumble

Added AFF_FLYING/SCUBA and appropriate checks in act.movement.c. Room sector ty
  pes IN FLIGHT and UNDERWATER are finally being used!
  Removed all of the Dragon_Breathes.
  Removed context help system.
  Added invis level on reconnect.
[May 15 2007] - Rumble
  Fixed object stacking to match s-desc and item_number.
  Added wizupdate command.
  Added valid_dg_target check to object remove trigs.
This commit is contained in:
Rumble 2007-05-17 20:51:06 +00:00
parent 2f24e37bb8
commit 8315bc5da8
29 changed files with 191 additions and 1330 deletions

View file

@ -26,7 +26,7 @@ LIBS = @LIBS@ @CRYPTLIB@ @NETLIB@
OBJFILES = act.comm.o act.informative.o act.item.o act.movement.o \
act.offensive.o act.other.o act.social.o act.wizard.o aedit.o alias.o \
ban.o boards.o bsd-snprintf.o castle.o cedit.o class.o comm.o config.o \
constants.o context_help.o db.o dg_comm.o dg_db_scripts.o dg_event.o \
constants.o db.o dg_comm.o dg_db_scripts.o dg_event.o \
dg_handler.o dg_misc.o dg_mobcmd.o dg_objcmd.o dg_olc.o dg_scripts.o \
dg_triggers.o dg_variables.o dg_wldcmd.o fight.o genmob.o \
genobj.o genolc.o genshp.o genwld.o genzon.o graph.o handler.o hedit.o \
@ -39,7 +39,7 @@ OBJFILES = act.comm.o act.informative.o act.item.o act.movement.o \
CXREF_FILES = act.comm.c act.informative.c act.item.c act.movement.c \
act.offensive.c act.other.c act.social.c act.wizard.c aedit.c alias.c \
ban.c boards.c bsd-snprintf.c castle.c cedit.c class.c comm.c config.c \
constants.c context_help.c db.c dg_comm.c dg_db_scripts.c dg_event.c \
constants.c db.c dg_comm.c dg_db_scripts.c dg_event.c \
dg_handler.c dg_misc.c dg_mobcmd.c dg_objcmd.c dg_olc.c dg_scripts.c \
dg_triggers.c dg_variables.c dg_wldcmd.c fight.c genmob.c \
genobj.c genolc.c genshp.c genwld.c genzon.c graph.c handler.c hedit.c \

View file

@ -211,12 +211,12 @@ void list_obj_to_char(struct obj_data *list, struct char_data *ch, int mode, int
for (i = list; i; i = i->next_content) {
num = 0;
for (j = list; j != i; j = j->next_content)
if (!strcmp(j->short_description, i->short_description))
if (!strcmp(j->short_description, i->short_description) && (!strcmp(j->name, i->name)))
break;
if (j != i)
continue;
for (j = i; j; j = j->next_content)
if (!strcmp(j->short_description, i->short_description))
if (!strcmp(j->short_description, i->short_description) && (!strcmp(j->name, i->name)))
num++;
if (CAN_SEE_OBJ(ch, i) && (*i->description != '.' || (IS_NPC(ch) || PRF_FLAGGED(ch, PRF_HOLYLIGHT)))) {
if (mode == SHOW_OBJ_LONG)

View file

@ -52,7 +52,7 @@ int has_boat(struct char_data *ch)
if (GET_LEVEL(ch) > LVL_IMMORT)
return (1);
if (AFF_FLAGGED(ch, AFF_WATERWALK))
if (AFF_FLAGGED(ch, AFF_WATERWALK) || AFF_FLAGGED(ch, AFF_FLYING))
return (1);
/* non-wearable boats in inventory will do it */
@ -68,6 +68,56 @@ int has_boat(struct char_data *ch)
return (0);
}
/* Simple function to determine if char can fly. */
int has_flight(struct char_data *ch)
{
struct obj_data *obj;
int i;
if (GET_LEVEL(ch) > LVL_IMMORT)
return (1);
if (AFF_FLAGGED(ch, AFF_FLYING))
return (1);
/* Non-wearable flying items in inventory will do it. */
for (obj = ch->carrying; obj; obj = obj->next_content)
if (OBJAFF_FLAGGED(obj, AFF_FLYING) && OBJAFF_FLAGGED(obj, AFF_FLYING))
return (1);
/* Any equipped objects with AFF_FLYING will do it too. */
for (i = 0; i < NUM_WEARS; i++)
if (GET_EQ(ch, i) && OBJAFF_FLAGGED(obj, AFF_FLYING))
return (1);
return (0);
}
/* Simple function to determine if char can scuba. */
int has_scuba(struct char_data *ch)
{
struct obj_data *obj;
int i;
if (GET_LEVEL(ch) > LVL_IMMORT)
return (1);
if (AFF_FLAGGED(ch, AFF_SCUBA))
return (1);
/* Non-wearable scuba items in inventory will do it. */
for (obj = ch->carrying; obj; obj = obj->next_content)
if (OBJAFF_FLAGGED(obj, AFF_SCUBA) && (find_eq_pos(ch, obj, NULL) < 0))
return (1);
/* Any equipped objects with AFF_SCUBA will do it too. */
for (i = 0; i < NUM_WEARS; i++)
if (GET_EQ(ch, i) && OBJAFF_FLAGGED(obj, AFF_SCUBA))
return (1);
return (0);
}
/* do_simple_move assumes that there is no master, no followers and that the
* direction exists. It returns 1 for success, 0 if failure. */
int do_simple_move(struct char_data *ch, int dir, int need_specials_check)
@ -104,6 +154,22 @@ int do_simple_move(struct char_data *ch, int dir, int need_specials_check)
}
}
/* If this room or the one we're going to needs flight, check for it. */
if ((SECT(IN_ROOM(ch)) == SECT_FLYING) || (SECT(EXIT(ch, dir)->to_room) == SECT_FLYING)) {
if (!has_flight(ch)) {
send_to_char(ch, "You need to be flying to go there!\r\n");
return (0);
}
}
/* If this room or the one we're going to needs scuba, check for it. */
if ((SECT(IN_ROOM(ch)) == SECT_UNDERWATER) || (SECT(EXIT(ch, dir)->to_room) == SECT_UNDERWATER)) {
if (!has_scuba(ch)) {
send_to_char(ch, "You need to be able to breathe water to go there!\r\n");
return (0);
}
}
/* move points needed is avg. move loss for src and destination sect type */
need_movement = (movement_loss[SECT(IN_ROOM(ch))] +
movement_loss[SECT(EXIT(ch, dir)->to_room)]) / 2;

View file

@ -117,6 +117,7 @@ ACMD(do_copyover);
ACMD(do_peace);
void mod_llog_entry(struct last_entry *llast,int type);
ACMD(do_plist);
ACMD(do_wizupdate);
int purge_room(room_rnum room)
{
@ -646,7 +647,7 @@ void do_stat_object(struct char_data *ch, struct obj_data *j)
char buf[MAX_STRING_LENGTH];
struct char_data *tempch;
send_to_char(ch, "Name: '%s%s%s', Aliases: %s\r\n", CCYEL(ch, C_NRM),
send_to_char(ch, "Name: '%s%s%s', Keywords: %s\r\n", CCYEL(ch, C_NRM),
j->short_description ? j->short_description : "<None>",
CCNRM(ch, C_NRM), j->name);
@ -802,7 +803,7 @@ void do_stat_character(struct char_data *ch, struct char_data *k)
GET_NAME(k), IS_NPC(k) ? GET_ID(k) : GET_IDNUM(k), GET_ROOM_VNUM(IN_ROOM(k)), IS_NPC(k) ? NOWHERE : GET_LOADROOM(k));
if (IS_MOB(k))
send_to_char(ch, "Alias: %s, VNum: [%5d], RNum: [%5d]\r\n", k->player.name, GET_MOB_VNUM(k), GET_MOB_RNUM(k));
send_to_char(ch, "Keyword: %s, VNum: [%5d], RNum: [%5d]\r\n", k->player.name, GET_MOB_VNUM(k), GET_MOB_RNUM(k));
send_to_char(ch, "Title: %s\r\n", k->player.title ? k->player.title : "<None>");
@ -1280,6 +1281,7 @@ void do_cheat(struct char_data *ch)
return;
}
send_to_char(ch, "Your level has been restored, for now!\r\n");
save_char(ch);
}
ACMD(do_return)
@ -4100,6 +4102,7 @@ ACMD(do_file)
{ "syslog", LVL_GOD, "../syslog" },
{ "crash", LVL_GOD, "../syslog.CRASH" },
{ "help", LVL_GOD, "../log/help" },
{ "changelog", LVL_GOD, "../changelog" },
{ "\n", 0, "\n" }
};
@ -4128,9 +4131,9 @@ ACMD(do_file)
send_to_char(ch, "You are not godly enough to view that file!\r\n");
return;
}
if(!*value)
req_lines = 15; /* default is the last 15 lines */
req_lines = 15; /* Default is the last 30 lines. */
else
req_lines = atoi(value);
@ -4148,7 +4151,8 @@ ACMD(do_file)
}
rewind(req_file);
req_lines = MIN(MIN(req_lines, num_lines),150);
/* Limit the maximum number of lines to 300. */
req_lines = MIN(MIN(req_lines, num_lines), 300);
len = snprintf(buf, sizeof(buf), "Last %d lines of %s:\r\n", req_lines, fields[l].file);
@ -4326,3 +4330,9 @@ ACMD(do_plist)
"%d players listed.\r\n", CCCYN(ch, C_NRM), CCNRM(ch, C_NRM), count);
page_string(ch->desc, buf, TRUE);
}
ACMD(do_wizupdate)
{
run_autowiz();
send_to_char(ch, "Wizlists updated.\n\r");
}

View file

@ -2568,7 +2568,7 @@ char *act(const char *str, int hide_invisible, struct char_data *ch,
}
#include "screen.h"
if (type == TO_GMOTE) {
if (type == TO_GMOTE && !IS_NPC(ch)) {
struct descriptor_data *i;
char buf[MAX_STRING_LENGTH];

View file

@ -193,17 +193,13 @@ 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.
*/
/* If false stock world files will be converted to 128bit. If true the MUD will
* exit with a warning when encountering stock world files. */
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.
*/
/* If you want to look at normal world files but DO NOT want to save to 128bit
* format, turn this to false. However, do not save through olc, or your
* world files will be 128bit anyway. */
int bitsavetodisk = TRUE;
/* This is the default port on which the game should run if no port is given on

View file

@ -207,8 +207,8 @@ const char *affected_bits[] =
"PROT-GOOD",
"SLEEP",
"NO_TRACK",
"UNUSED",
"UNUSED",
"FLY",
"SCUBA",
"SNEAK",
"HIDE",
"UNUSED",

View file

@ -1,272 +0,0 @@
/**************************************************************************
* File: context_help.c Part of tbaMUD *
* Usage: Handles the context sensitive help system. *
* By Welcor. *
**************************************************************************/
#include "conf.h"
#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "db.h"
#include "interpreter.h"
#include "oasis.h"
#include "dg_olc.h"
/* Extern functions */
ACMD(do_help);
/* local global */
char *context_help_list[NUM_CONTEXTS];
/* If you add more olc options, be sure to add a case for it here. - Welcor */
int find_context(struct descriptor_data *d)
{
switch STATE(d) {
case CON_TRIGEDIT: return find_context_trigedit(d);
case CON_REDIT: return find_context_redit(d);
case CON_MEDIT: return find_context_medit(d);
case CON_OEDIT: return find_context_oedit(d);
case CON_ZEDIT: return find_context_zedit(d);
case CON_SEDIT: return find_context_sedit(d);
default: return NOTHING;
}
}
int find_context_oedit(struct descriptor_data *d)
{
switch (OLC_MODE(d)) {
case OEDIT_MAIN_MENU: return CONTEXT_OEDIT_MAIN_MENU;
case OEDIT_KEYWORD: return CONTEXT_OEDIT_KEYWORD;
case OEDIT_SHORTDESC: return CONTEXT_OEDIT_SHORTDESC;
case OEDIT_LONGDESC: return CONTEXT_OEDIT_LONGDESC;
case OEDIT_ACTDESC: return CONTEXT_OEDIT_ACTDESC;
case OEDIT_TYPE: return CONTEXT_OEDIT_TYPE;
case OEDIT_EXTRAS: return CONTEXT_OEDIT_EXTRAS;
case OEDIT_WEAR: return CONTEXT_OEDIT_WEAR;
case OEDIT_WEIGHT: return CONTEXT_OEDIT_WEIGHT;
case OEDIT_COST: return CONTEXT_OEDIT_COST;
case OEDIT_COSTPERDAY: return CONTEXT_OEDIT_COSTPERDAY;
case OEDIT_TIMER: return CONTEXT_OEDIT_TIMER;
case OEDIT_VALUE_1: return CONTEXT_OEDIT_VALUE_1;
case OEDIT_VALUE_2: return CONTEXT_OEDIT_VALUE_2;
case OEDIT_VALUE_3: return CONTEXT_OEDIT_VALUE_3;
case OEDIT_VALUE_4: return CONTEXT_OEDIT_VALUE_4;
case OEDIT_APPLY: return CONTEXT_OEDIT_APPLY;
case OEDIT_APPLYMOD: return CONTEXT_OEDIT_APPLYMOD;
case OEDIT_EXTRADESC_KEY: return CONTEXT_OEDIT_EXTRADESC_KEY;
case OEDIT_CONFIRM_SAVEDB: return CONTEXT_OEDIT_CONFIRM_SAVEDB;
case OEDIT_CONFIRM_SAVESTRING: return CONTEXT_OEDIT_CONFIRM_SAVESTRING;
case OEDIT_PROMPT_APPLY: return CONTEXT_OEDIT_PROMPT_APPLY;
case OEDIT_EXTRADESC_DESCRIPTION: return CONTEXT_OEDIT_EXTRADESC_DESCRIPTION;
case OEDIT_EXTRADESC_MENU: return CONTEXT_OEDIT_EXTRADESC_MENU;
case OEDIT_LEVEL: return CONTEXT_OEDIT_LEVEL;
case OEDIT_PERM: return CONTEXT_OEDIT_PERM;
case OLC_SCRIPT_EDIT: return find_context_script_edit(d);
default: return NOTHING;
}
}
int find_context_redit(struct descriptor_data *d)
{
switch (OLC_MODE(d)) {
case REDIT_MAIN_MENU: return CONTEXT_REDIT_MAIN_MENU;
case REDIT_NAME: return CONTEXT_REDIT_NAME;
case REDIT_DESC: return CONTEXT_REDIT_DESC;
case REDIT_FLAGS: return CONTEXT_REDIT_FLAGS;
case REDIT_SECTOR: return CONTEXT_REDIT_SECTOR;
case REDIT_EXIT_MENU: return CONTEXT_REDIT_EXIT_MENU;
case REDIT_CONFIRM_SAVEDB: return CONTEXT_REDIT_CONFIRM_SAVEDB;
case REDIT_CONFIRM_SAVESTRING: return CONTEXT_REDIT_CONFIRM_SAVESTRING;
case REDIT_EXIT_NUMBER: return CONTEXT_REDIT_EXIT_NUMBER;
case REDIT_EXIT_DESCRIPTION: return CONTEXT_REDIT_EXIT_DESCRIPTION;
case REDIT_EXIT_KEYWORD: return CONTEXT_REDIT_EXIT_KEYWORD;
case REDIT_EXIT_KEY: return CONTEXT_REDIT_EXIT_KEY;
case REDIT_EXIT_DOORFLAGS: return CONTEXT_REDIT_EXIT_DOORFLAGS;
case REDIT_EXTRADESC_MENU: return CONTEXT_REDIT_EXTRADESC_MENU;
case REDIT_EXTRADESC_KEY: return CONTEXT_REDIT_EXTRADESC_KEY;
case REDIT_EXTRADESC_DESCRIPTION:return CONTEXT_REDIT_EXTRADESC_DESCRIPTION;
case OLC_SCRIPT_EDIT: return find_context_script_edit(d);
default: return NOTHING;
}
}
int find_context_zedit(struct descriptor_data *d)
{
switch (OLC_MODE(d)) {
case ZEDIT_MAIN_MENU: return CONTEXT_ZEDIT_MAIN_MENU;
case ZEDIT_DELETE_ENTRY: return CONTEXT_ZEDIT_DELETE_ENTRY;
case ZEDIT_NEW_ENTRY: return CONTEXT_ZEDIT_NEW_ENTRY;
case ZEDIT_CHANGE_ENTRY: return CONTEXT_ZEDIT_CHANGE_ENTRY;
case ZEDIT_COMMAND_TYPE: return CONTEXT_ZEDIT_COMMAND_TYPE;
case ZEDIT_IF_FLAG: return CONTEXT_ZEDIT_IF_FLAG;
case ZEDIT_ARG1: return CONTEXT_ZEDIT_ARG1;
case ZEDIT_ARG2: return CONTEXT_ZEDIT_ARG2;
case ZEDIT_ARG3: return CONTEXT_ZEDIT_ARG3;
case ZEDIT_ZONE_NAME: return CONTEXT_ZEDIT_ZONE_NAME;
case ZEDIT_ZONE_LIFE: return CONTEXT_ZEDIT_ZONE_LIFE;
case ZEDIT_ZONE_BOT: return CONTEXT_ZEDIT_ZONE_BOT;
case ZEDIT_ZONE_TOP: return CONTEXT_ZEDIT_ZONE_TOP;
case ZEDIT_ZONE_RESET: return CONTEXT_ZEDIT_ZONE_RESET;
case ZEDIT_CONFIRM_SAVESTRING:return CONTEXT_ZEDIT_CONFIRM_SAVESTRING;
case ZEDIT_SARG1: return CONTEXT_ZEDIT_SARG1;
case ZEDIT_SARG2: return CONTEXT_ZEDIT_SARG2;
default: return NOTHING;
}
}
int find_context_medit(struct descriptor_data *d)
{
switch (OLC_MODE(d)) {
case MEDIT_MAIN_MENU: return CONTEXT_MEDIT_MAIN_MENU;
case MEDIT_KEYWORD: return CONTEXT_MEDIT_KEYWORD;
case MEDIT_S_DESC: return CONTEXT_MEDIT_S_DESC;
case MEDIT_L_DESC: return CONTEXT_MEDIT_L_DESC;
case MEDIT_D_DESC: return CONTEXT_MEDIT_D_DESC;
case MEDIT_NPC_FLAGS: return CONTEXT_MEDIT_NPC_FLAGS;
case MEDIT_AFF_FLAGS: return CONTEXT_MEDIT_AFF_FLAGS;
case MEDIT_CONFIRM_SAVESTRING:return CONTEXT_MEDIT_CONFIRM_SAVESTRING;
case MEDIT_SEX: return CONTEXT_MEDIT_SEX;
case MEDIT_HITROLL: return CONTEXT_MEDIT_HITROLL;
case MEDIT_DAMROLL: return CONTEXT_MEDIT_DAMROLL;
case MEDIT_NDD: return CONTEXT_MEDIT_NDD;
case MEDIT_SDD: return CONTEXT_MEDIT_SDD;
case MEDIT_NUM_HP_DICE: return CONTEXT_MEDIT_NUM_HP_DICE;
case MEDIT_SIZE_HP_DICE: return CONTEXT_MEDIT_SIZE_HP_DICE;
case MEDIT_ADD_HP: return CONTEXT_MEDIT_ADD_HP;
case MEDIT_AC: return CONTEXT_MEDIT_AC;
case MEDIT_EXP: return CONTEXT_MEDIT_EXP;
case MEDIT_GOLD: return CONTEXT_MEDIT_GOLD;
case MEDIT_POS: return CONTEXT_MEDIT_POS;
case MEDIT_DEFAULT_POS: return CONTEXT_MEDIT_DEFAULT_POS;
case MEDIT_ATTACK: return CONTEXT_MEDIT_ATTACK;
case MEDIT_LEVEL: return CONTEXT_MEDIT_LEVEL;
case MEDIT_ALIGNMENT: return CONTEXT_MEDIT_ALIGNMENT;
case OLC_SCRIPT_EDIT: return find_context_script_edit(d);
default: return NOTHING;
}
}
int find_context_sedit(struct descriptor_data *d)
{
switch (OLC_MODE(d)) {
case SEDIT_MAIN_MENU: return CONTEXT_SEDIT_MAIN_MENU;
case SEDIT_CONFIRM_SAVESTRING:return CONTEXT_SEDIT_CONFIRM_SAVESTRING;
case SEDIT_NOITEM1: return CONTEXT_SEDIT_NOITEM1;
case SEDIT_NOITEM2: return CONTEXT_SEDIT_NOITEM2;
case SEDIT_NOCASH1: return CONTEXT_SEDIT_NOCASH1;
case SEDIT_NOCASH2: return CONTEXT_SEDIT_NOCASH2;
case SEDIT_NOBUY: return CONTEXT_SEDIT_NOBUY;
case SEDIT_BUY: return CONTEXT_SEDIT_BUY;
case SEDIT_SELL: return CONTEXT_SEDIT_SELL;
case SEDIT_PRODUCTS_MENU: return CONTEXT_SEDIT_PRODUCTS_MENU;
case SEDIT_ROOMS_MENU: return CONTEXT_SEDIT_ROOMS_MENU;
case SEDIT_NAMELIST_MENU: return CONTEXT_SEDIT_NAMELIST_MENU;
case SEDIT_NAMELIST: return CONTEXT_SEDIT_NAMELIST;
case SEDIT_OPEN1: return CONTEXT_SEDIT_OPEN1;
case SEDIT_OPEN2: return CONTEXT_SEDIT_OPEN2;
case SEDIT_CLOSE1: return CONTEXT_SEDIT_CLOSE1;
case SEDIT_CLOSE2: return CONTEXT_SEDIT_CLOSE2;
case SEDIT_KEEPER: return CONTEXT_SEDIT_KEEPER;
case SEDIT_BUY_PROFIT: return CONTEXT_SEDIT_BUY_PROFIT;
case SEDIT_SELL_PROFIT: return CONTEXT_SEDIT_SELL_PROFIT;
case SEDIT_TYPE_MENU: return CONTEXT_SEDIT_TYPE_MENU;
case SEDIT_DELETE_TYPE: return CONTEXT_SEDIT_DELETE_TYPE;
case SEDIT_DELETE_PRODUCT: return CONTEXT_SEDIT_DELETE_PRODUCT;
case SEDIT_NEW_PRODUCT: return CONTEXT_SEDIT_NEW_PRODUCT;
case SEDIT_DELETE_ROOM: return CONTEXT_SEDIT_DELETE_ROOM;
case SEDIT_NEW_ROOM: return CONTEXT_SEDIT_NEW_ROOM;
case SEDIT_SHOP_FLAGS: return CONTEXT_SEDIT_SHOP_FLAGS;
case SEDIT_NOTRADE: return CONTEXT_SEDIT_NOTRADE;
default: return NOTHING;
}
}
int find_context_trigedit(struct descriptor_data *d)
{
switch (OLC_MODE(d)) {
case TRIGEDIT_MAIN_MENU: return CONTEXT_TRIGEDIT_MAIN_MENU;
case TRIGEDIT_TRIGTYPE: return CONTEXT_TRIGEDIT_TRIGTYPE;
case TRIGEDIT_CONFIRM_SAVESTRING:return CONTEXT_TRIGEDIT_CONFIRM_SAVESTRING;
case TRIGEDIT_NAME: return CONTEXT_TRIGEDIT_NAME;
case TRIGEDIT_INTENDED: return CONTEXT_TRIGEDIT_INTENDED;
case TRIGEDIT_TYPES: return CONTEXT_TRIGEDIT_TYPES;
case TRIGEDIT_COMMANDS: return CONTEXT_TRIGEDIT_COMMANDS;
case TRIGEDIT_NARG: return CONTEXT_TRIGEDIT_NARG;
case TRIGEDIT_ARGUMENT: return CONTEXT_TRIGEDIT_ARGUMENT;
default: return NOTHING;
}
}
int find_context_script_edit(struct descriptor_data *d)
{
switch (OLC_SCRIPT_EDIT_MODE(d)) {
case SCRIPT_MAIN_MENU: return CONTEXT_SCRIPT_MAIN_MENU;
case SCRIPT_NEW_TRIGGER:return CONTEXT_SCRIPT_NEW_TRIGGER;
case SCRIPT_DEL_TRIGGER:return CONTEXT_SCRIPT_DEL_TRIGGER;
default: return NOTHING;
}
}
char *NO_HELP = "No help available (yet)!\r\n";
#define FIND_HELP_CHAR '*'
int context_help(struct descriptor_data *d, char *arg)
{
int context = NOTHING;
char actbuf[MAX_INPUT_LENGTH], *tmp;
/* skip if context help isn't wanted */
if (strncmp(arg, CONTEXT_HELP_STRING, strlen(CONTEXT_HELP_STRING)))
return FALSE;
tmp = one_argument(arg, actbuf); /* the totally useless 'help' string.. */
skip_spaces(&tmp);
if (!*tmp)
context = find_context(d);
if (context != NOTHING && context < NUM_CONTEXTS && *context_help_list[context]) {
if (*context_help_list[context] == FIND_HELP_CHAR) {
strncpy(actbuf, context_help_list[context]+1, sizeof(actbuf)-1);
do_help(d->character, actbuf, 0, 0);
} else {
write_to_output(d, "\r\n%s\r\n> ", context_help_list[context]);
}
return TRUE;
}
strncpy(actbuf, tmp, sizeof(actbuf)-1);
do_help(d->character, actbuf, 0, 0);
return TRUE;
}
void boot_context_help(void) {
int i, num;
FILE *fl;
char line[READ_SIZE];
fl = fopen(CONTEXT_HELP_FILE, "r");
/* init to 'no help' string */
for (i=0;i < NUM_CONTEXTS;i++)
context_help_list[i] = NO_HELP;
if (!fl) {
log("No context help found : %s", strerror(errno));
return;
}
while (get_line(fl, line)) {
if (sscanf(line, "#%d *", &num) == 1 && num >= 0 && num < NUM_CONTEXTS) /* got a number, now get the text */
context_help_list[num] = fread_string(fl, "Context sensitive help");
}
fclose(fl);
}
void free_context_help(void) {
int i;
for (i = 0; i < NUM_CONTEXTS; i++)
if (context_help_list[i] && context_help_list[i] != NO_HELP)
free(context_help_list[i]);
}

View file

@ -465,7 +465,7 @@ void boot_world(void)
renum_zone_table();
if(converting) {
log("Saving 128bit worldfiles to disk.");
log("Saving 128bit world files to disk.");
save_all();
}
@ -642,8 +642,6 @@ void destroy_db(void)
/* Events */
event_free_all();
/* context sensitive help system */
free_context_help();
}
/* body of the booting system */
@ -680,9 +678,6 @@ void boot_db(void)
log("Loading help entries.");
index_boot(DB_BOOT_HLP);
log("Setting up context sensitive help system for OLC");
boot_context_help();
log("Generating player index.");
build_player_index();
@ -1185,10 +1180,10 @@ void parse_room(FILE *fl, int 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.");
log("WARNING: Conventional world files detected. See config.c.");
exit(1);
} else if ((retval == 3) && (bitwarning == FALSE)) {
/* Looks like the implementor is ready, so let's load the worldfiles. We
/* Looks like the implementor is ready, so let's load the world files. 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. */
@ -1638,8 +1633,8 @@ void parse_mobile(FILE *mob_f, int 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.");
/* Let's make the implementor read some, before converting his world files. */
log("WARNING: Conventional mobile files detected. See config.c.");
exit(1);
} else if ((retval == 4) && (bitwarning == FALSE)) {
log("Converting mobile #%d to 128bits..", nr);
@ -1670,7 +1665,7 @@ void parse_mobile(FILE *mob_f, int nr)
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
/* This is necessary, since if we have conventional world files, &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. */
@ -1790,8 +1785,8 @@ char *parse_object(FILE *obj_f, int nr)
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.");
/* Let's make the implementor read some, before converting his world files. */
log("WARNING: Conventional object files detected. Please see config.c.");
exit(1);
} else if (((retval == 4) || (retval == 3)) && (bitwarning == FALSE)) {

View file

@ -87,7 +87,6 @@
#define GREETINGS_FILE LIB_TEXT"greetings" /* The opening screen. */
#define HELP_PAGE_FILE LIB_TEXT_HELP"screen" /* for HELP <CR> */
#define IHELP_PAGE_FILE LIB_TEXT_HELP"iscreen" /* for HELP <CR> imms */
#define CONTEXT_HELP_FILE LIB_TEXT"contexthelp" /* context help for olc */
#define INFO_FILE LIB_TEXT"info" /* for INFO */
#define WIZLIST_FILE LIB_TEXT"wizlist" /* for WIZLIST */
#define IMMLIST_FILE LIB_TEXT"immlist" /* for IMMLIST */

View file

@ -2093,7 +2093,7 @@ ACMD(do_vdelete)
if (!*buf || !*buf2) {
send_to_char(ch, "Usage: vdelete { <variablename> | * } <id>\r\n");
send_to_char(ch, "Usage: vdelete { <variablename> | * | all } <id>\r\n");
return;
}
@ -2126,7 +2126,7 @@ ACMD(do_vdelete)
return;
}
if (*var == '*') {
if (*var == '*' || is_abbrev(var, "all")) {
struct trig_var_data *vd_next;
for (vd = sc_remote->global_vars; vd; vd = vd_next) {
vd_next = vd->next;

View file

@ -785,6 +785,9 @@ int remove_otrigger(obj_data *obj, char_data *actor)
if (!SCRIPT_CHECK(obj, OTRIG_REMOVE))
return 1;
if (!valid_dg_target(actor, 0))
return 1;
for (t = TRIGGERS(SCRIPT(obj)); t; t = t->next) {
if (TRIGGER_CHECK(t, OTRIG_REMOVE)) {
ADD_UID_VAR(buf, t, actor, "actor", 0);

View file

@ -221,6 +221,7 @@ ACMD(do_who);
ACMD(do_wield);
ACMD(do_wizlock);
ACMD(do_wiznet);
ACMD(do_wizupdate);
ACMD(do_wizutil);
ACMD(do_write);
ACMD(do_zcheck);
@ -494,6 +495,7 @@ cpp_extern const struct command_info cmd_info[] = {
{ ";" , ";" , POS_DEAD , do_wiznet , LVL_IMMORT, 0 },
{ "wizhelp" , "wizhelp" , POS_SLEEPING, do_commands , LVL_IMMORT, SCMD_WIZHELP },
{ "wizlist" , "wizlist" , POS_DEAD , do_gen_ps , 0, SCMD_WIZLIST },
{ "wizupdate", "wizupde" , POS_DEAD , do_wizupdate, LVL_GRGOD, 0 },
{ "wizlock" , "wizlock" , POS_DEAD , do_wizlock , LVL_IMPL, 0 },
{ "write" , "write" , POS_STANDING, do_write , 1, 0 },
@ -1327,9 +1329,6 @@ void nanny(struct descriptor_data *d, char *arg)
/* Quick check for the OLC states. */
for (player_i = 0; olc_functions[player_i].state >= 0; player_i++)
if (STATE(d) == olc_functions[player_i].state) {
/* send context-sensitive help if need be */
if (context_help(d, arg)) return;
(*olc_functions[player_i].func)(d, arg);
return;
}

View file

@ -420,146 +420,4 @@ int free_strings(void *data, int type);
ACMD(do_oasis_list);
ACMD(do_oasis_links);
void print_zone(struct char_data *ch, zone_rnum rnum);
#define CONTEXT_HELP_STRING "help"
#define CONTEXT_OEDIT_MAIN_MENU 1
#define CONTEXT_OEDIT_KEYWORD 2
#define CONTEXT_OEDIT_SHORTDESC 3
#define CONTEXT_OEDIT_LONGDESC 4
#define CONTEXT_OEDIT_ACTDESC 5
#define CONTEXT_OEDIT_TYPE 6
#define CONTEXT_OEDIT_EXTRAS 7
#define CONTEXT_OEDIT_WEAR 8
#define CONTEXT_OEDIT_WEIGHT 9
#define CONTEXT_OEDIT_COST 10
#define CONTEXT_OEDIT_COSTPERDAY 11
#define CONTEXT_OEDIT_TIMER 12
#define CONTEXT_OEDIT_VALUE_1 13
#define CONTEXT_OEDIT_VALUE_2 14
#define CONTEXT_OEDIT_VALUE_3 15
#define CONTEXT_OEDIT_VALUE_4 16
#define CONTEXT_OEDIT_APPLY 17
#define CONTEXT_OEDIT_APPLYMOD 18
#define CONTEXT_OEDIT_EXTRADESC_KEY 19
#define CONTEXT_OEDIT_CONFIRM_SAVEDB 20
#define CONTEXT_OEDIT_CONFIRM_SAVESTRING 21
#define CONTEXT_OEDIT_PROMPT_APPLY 22
#define CONTEXT_OEDIT_EXTRADESC_DESCRIPTION 23
#define CONTEXT_OEDIT_EXTRADESC_MENU 24
#define CONTEXT_OEDIT_LEVEL 25
#define CONTEXT_OEDIT_PERM 26
#define CONTEXT_REDIT_MAIN_MENU 27
#define CONTEXT_REDIT_NAME 28
#define CONTEXT_REDIT_DESC 29
#define CONTEXT_REDIT_FLAGS 30
#define CONTEXT_REDIT_SECTOR 31
#define CONTEXT_REDIT_EXIT_MENU 32
#define CONTEXT_REDIT_CONFIRM_SAVEDB 33
#define CONTEXT_REDIT_CONFIRM_SAVESTRING 34
#define CONTEXT_REDIT_EXIT_NUMBER 35
#define CONTEXT_REDIT_EXIT_DESCRIPTION 36
#define CONTEXT_REDIT_EXIT_KEYWORD 37
#define CONTEXT_REDIT_EXIT_KEY 38
#define CONTEXT_REDIT_EXIT_DOORFLAGS 39
#define CONTEXT_REDIT_EXTRADESC_MENU 40
#define CONTEXT_REDIT_EXTRADESC_KEY 41
#define CONTEXT_REDIT_EXTRADESC_DESCRIPTION 42
#define CONTEXT_ZEDIT_MAIN_MENU 43
#define CONTEXT_ZEDIT_DELETE_ENTRY 44
#define CONTEXT_ZEDIT_NEW_ENTRY 45
#define CONTEXT_ZEDIT_CHANGE_ENTRY 46
#define CONTEXT_ZEDIT_COMMAND_TYPE 47
#define CONTEXT_ZEDIT_IF_FLAG 48
#define CONTEXT_ZEDIT_ARG1 49
#define CONTEXT_ZEDIT_ARG2 50
#define CONTEXT_ZEDIT_ARG3 51
#define CONTEXT_ZEDIT_ZONE_NAME 52
#define CONTEXT_ZEDIT_ZONE_LIFE 53
#define CONTEXT_ZEDIT_ZONE_BOT 54
#define CONTEXT_ZEDIT_ZONE_TOP 55
#define CONTEXT_ZEDIT_ZONE_RESET 56
#define CONTEXT_ZEDIT_CONFIRM_SAVESTRING 57
#define CONTEXT_ZEDIT_SARG1 58
#define CONTEXT_ZEDIT_SARG2 59
#define CONTEXT_MEDIT_MAIN_MENU 60
#define CONTEXT_MEDIT_KEYWORD 61
#define CONTEXT_MEDIT_S_DESC 62
#define CONTEXT_MEDIT_L_DESC 63
#define CONTEXT_MEDIT_D_DESC 64
#define CONTEXT_MEDIT_NPC_FLAGS 65
#define CONTEXT_MEDIT_AFF_FLAGS 66
#define CONTEXT_MEDIT_CONFIRM_SAVESTRING 67
#define CONTEXT_MEDIT_SEX 68
#define CONTEXT_MEDIT_HITROLL 69
#define CONTEXT_MEDIT_DAMROLL 70
#define CONTEXT_MEDIT_NDD 71
#define CONTEXT_MEDIT_SDD 72
#define CONTEXT_MEDIT_NUM_HP_DICE 73
#define CONTEXT_MEDIT_SIZE_HP_DICE 74
#define CONTEXT_MEDIT_ADD_HP 75
#define CONTEXT_MEDIT_AC 76
#define CONTEXT_MEDIT_EXP 77
#define CONTEXT_MEDIT_GOLD 78
#define CONTEXT_MEDIT_POS 79
#define CONTEXT_MEDIT_DEFAULT_POS 80
#define CONTEXT_MEDIT_ATTACK 81
#define CONTEXT_MEDIT_LEVEL 82
#define CONTEXT_MEDIT_ALIGNMENT 83
#define CONTEXT_SEDIT_MAIN_MENU 84
#define CONTEXT_SEDIT_CONFIRM_SAVESTRING 85
#define CONTEXT_SEDIT_NOITEM1 86
#define CONTEXT_SEDIT_NOITEM2 87
#define CONTEXT_SEDIT_NOCASH1 88
#define CONTEXT_SEDIT_NOCASH2 89
#define CONTEXT_SEDIT_NOBUY 90
#define CONTEXT_SEDIT_BUY 91
#define CONTEXT_SEDIT_SELL 92
#define CONTEXT_SEDIT_PRODUCTS_MENU 93
#define CONTEXT_SEDIT_ROOMS_MENU 94
#define CONTEXT_SEDIT_NAMELIST_MENU 95
#define CONTEXT_SEDIT_NAMELIST 96
#define CONTEXT_SEDIT_OPEN1 97
#define CONTEXT_SEDIT_OPEN2 98
#define CONTEXT_SEDIT_CLOSE1 99
#define CONTEXT_SEDIT_CLOSE2 100
#define CONTEXT_SEDIT_KEEPER 101
#define CONTEXT_SEDIT_BUY_PROFIT 102
#define CONTEXT_SEDIT_SELL_PROFIT 103
#define CONTEXT_SEDIT_TYPE_MENU 104
#define CONTEXT_SEDIT_DELETE_TYPE 105
#define CONTEXT_SEDIT_DELETE_PRODUCT 106
#define CONTEXT_SEDIT_NEW_PRODUCT 107
#define CONTEXT_SEDIT_DELETE_ROOM 108
#define CONTEXT_SEDIT_NEW_ROOM 109
#define CONTEXT_SEDIT_SHOP_FLAGS 110
#define CONTEXT_SEDIT_NOTRADE 111
#define CONTEXT_TRIGEDIT_MAIN_MENU 112
#define CONTEXT_TRIGEDIT_TRIGTYPE 113
#define CONTEXT_TRIGEDIT_CONFIRM_SAVESTRING 114
#define CONTEXT_TRIGEDIT_NAME 115
#define CONTEXT_TRIGEDIT_INTENDED 116
#define CONTEXT_TRIGEDIT_TYPES 117
#define CONTEXT_TRIGEDIT_COMMANDS 118
#define CONTEXT_TRIGEDIT_NARG 119
#define CONTEXT_TRIGEDIT_ARGUMENT 120
#define CONTEXT_SCRIPT_MAIN_MENU 121
#define CONTEXT_SCRIPT_NEW_TRIGGER 122
#define CONTEXT_SCRIPT_DEL_TRIGGER 123
/* includes number 0 */
#define NUM_CONTEXTS 124
/* Prototypes for the context sensitive help system */
int find_context(struct descriptor_data *d);
int find_context_oedit(struct descriptor_data *d);
int find_context_redit(struct descriptor_data *d);
int find_context_zedit(struct descriptor_data *d);
int find_context_medit(struct descriptor_data *d);
int find_context_sedit(struct descriptor_data *d);
int find_context_trigedit(struct descriptor_data *d);
int find_context_script_edit(struct descriptor_data *d);
int context_help(struct descriptor_data *d, char *arg);
void boot_context_help(void);
void free_context_help(void);
#endif

View file

@ -593,8 +593,8 @@ void oedit_disp_perm_menu(struct descriptor_data *d)
get_char_colors(d->character);
clear_screen(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" : "");
for (counter = 1; counter < NUM_AFF_FLAGS; counter++) {
write_to_output(d, "%s%2d%s) %-20.20s %s", grn, counter, nrm, affected_bits[counter], !(++columns % 2) ? "\r\n" : "");
}
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"

View file

@ -924,28 +924,6 @@ void mag_assign_spells(void)
TAR_CHAR_ROOM | TAR_OBJ_INV | TAR_OBJ_ROOM, FALSE, MAG_MANUAL,
NULL);
/* These spells are currently not used, not implemented, and not castable.
* Values for the 'breath' spells are filled in assuming a dragon's breath. */
spello(SPELL_FIRE_BREATH, "fire breath", 0, 0, 0, POS_SITTING,
TAR_IGNORE, TRUE, 0,
NULL);
spello(SPELL_GAS_BREATH, "gas breath", 0, 0, 0, POS_SITTING,
TAR_IGNORE, TRUE, 0,
NULL);
spello(SPELL_FROST_BREATH, "frost breath", 0, 0, 0, POS_SITTING,
TAR_IGNORE, TRUE, 0,
NULL);
spello(SPELL_ACID_BREATH, "acid breath", 0, 0, 0, POS_SITTING,
TAR_IGNORE, TRUE, 0,
NULL);
spello(SPELL_LIGHTNING_BREATH, "lightning breath", 0, 0, 0, POS_SITTING,
TAR_IGNORE, TRUE, 0,
NULL);
/* you might want to name this one something more fitting to your theme -Welcor*/
spello(SPELL_DG_AFFECT, "Script-inflicted", 0, 0, 0, POS_SITTING,
TAR_IGNORE, TRUE, 0,

View file

@ -107,11 +107,6 @@
* SPELL_IDENTIFY used with scrolls of identify) or non-players (such as NPC
* only spells). */
#define SPELL_IDENTIFY 201
#define SPELL_FIRE_BREATH 202
#define SPELL_GAS_BREATH 203
#define SPELL_FROST_BREATH 204
#define SPELL_ACID_BREATH 205
#define SPELL_LIGHTNING_BREATH 206
/* To make an affect induced by dg_affect look correct on 'stat' we need to
* define it with a 'spellname'. */

View file

@ -228,11 +228,11 @@
#define AFF_PROTECT_GOOD 14 /* Char protected from good */
#define AFF_SLEEP 15 /* (R) Char magically asleep */
#define AFF_NOTRACK 16 /* Char can't be tracked */
#define AFF_UNUSED16 17 /* Room for future expansion */
#define AFF_UNUSED17 18 /* Room for future expansion */
#define AFF_FLYING 17 /* Char is flying */
#define AFF_SCUBA 18 /* Room for future expansion */
#define AFF_SNEAK 19 /* Char can move quietly */
#define AFF_HIDE 20 /* Char is hidden */
#define AFF_UNUSED20 21 /* Room for future expansion */
#define AFF_FREE 21 /* Room for future expansion */
#define AFF_CHARM 22 /* Char is charmed */
/* Modes of connectedness: used by descriptor_data.state */

View file

@ -215,7 +215,7 @@ void char_from_furniture(struct char_data *ch);
#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 OBJAFF_FLAGGED(obj, flag) (IS_SET_AR(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_AR(GET_OBJ_WEAR(obj), (flag)))
#define OBJ_FLAGGED(obj, flag) (IS_SET_AR(GET_OBJ_EXTRA(obj), (flag)))