Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals

olc_act.c File Reference

#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "tables.h"
#include "olc.h"
#include "recycle.h"
#include "lookup.h"

Include dependency graph for olc_act.c:

Go to the source code of this file.

Defines

#define AEDIT(fun)   bool fun( CHAR_DATA *ch, char *argument )
#define ALT_FLAGVALUE_SET(_blargh, _table, _arg)
#define ALT_FLAGVALUE_TOGGLE(_blargh, _table, _arg)
#define HEDIT(fun)   bool fun( CHAR_DATA *ch, char *argument )
#define MEDIT(fun)   bool fun( CHAR_DATA *ch, char *argument )
#define OEDIT(fun)   bool fun( CHAR_DATA *ch, char *argument )
#define REDIT(fun)   bool fun( CHAR_DATA *ch, char *argument )
#define SEDIT(fun)   bool fun( CHAR_DATA *ch, char *argument )

Functions

 AEDIT (aedit_uvnum)
 AEDIT (aedit_lvnum)
 AEDIT (aedit_vnum)
 AEDIT (aedit_delete)
 AEDIT (aedit_builder)
 AEDIT (aedit_security)
 AEDIT (aedit_age)
 AEDIT (aedit_file)
 AEDIT (aedit_credits)
 AEDIT (aedit_cont)
 AEDIT (aedit_name)
 AEDIT (aedit_create)
 AEDIT (aedit_reset)
 AEDIT (aedit_show)
bool change_exit (CHAR_DATA *ch, char *argument, int door)
bool check_range (int lower, int upper)
AREA_DATAget_vnum_area (int vnum)
 HEDIT (hedit_delete)
 HEDIT (hedit_level)
 HEDIT (hedit_keywords)
 HEDIT (hedit_desc)
 HEDIT (hedit_show)
 HEDIT (hedit_make)
 MEDIT (medit_delmprog)
 MEDIT (medit_addmprog)
 MEDIT (medit_group)
 MEDIT (medit_hitroll)
 MEDIT (medit_gold)
 MEDIT (medit_position)
 MEDIT (medit_race)
 MEDIT (medit_damdice)
 MEDIT (medit_manadice)
 MEDIT (medit_hitdice)
 MEDIT (medit_size)
 MEDIT (medit_off)
 MEDIT (medit_material)
 MEDIT (medit_vuln)
 MEDIT (medit_res)
 MEDIT (medit_imm)
 MEDIT (medit_part)
 MEDIT (medit_form)
 MEDIT (medit_affect)
 MEDIT (medit_act)
 MEDIT (medit_sex)
 MEDIT (medit_shop)
 MEDIT (medit_name)
 MEDIT (medit_short)
 MEDIT (medit_long)
 MEDIT (medit_desc)
 MEDIT (medit_level)
 MEDIT (medit_align)
 MEDIT (medit_damtype)
 MEDIT (medit_spec)
 MEDIT (medit_create)
 MEDIT (medit_show)
char * mprog_type_to_name (int type)
 OEDIT (oedit_condition)
 OEDIT (oedit_level)
 OEDIT (oedit_material)
 OEDIT (oedit_type)
 OEDIT (oedit_wear)
 OEDIT (oedit_extra)
 OEDIT (oedit_ed)
 OEDIT (oedit_create)
 OEDIT (oedit_cost)
 OEDIT (oedit_weight)
 OEDIT (oedit_value4)
 OEDIT (oedit_value3)
 OEDIT (oedit_value2)
 OEDIT (oedit_value1)
 OEDIT (oedit_value0)
 OEDIT (oedit_long)
 OEDIT (oedit_short)
 OEDIT (oedit_name)
 OEDIT (oedit_delaffect)
 OEDIT (oedit_addapply)
 OEDIT (oedit_addaffect)
 OEDIT (oedit_show)
bool oedit_values (CHAR_DATA *ch, char *argument, int value)
 REDIT (redit_sector)
 REDIT (redit_extra)
 REDIT (redit_delete)
 REDIT (redit_copy)
 REDIT (redit_room)
 REDIT (redit_owner)
 REDIT (redit_oreset)
 REDIT (redit_mreset)
 REDIT (redit_format)
 REDIT (redit_clan)
 REDIT (redit_mana)
 REDIT (redit_heal)
 REDIT (redit_night_desc)
 REDIT (redit_dfix)
 REDIT (redit_desc)
 REDIT (redit_name)
 REDIT (redit_create)
 REDIT (redit_ed)
 REDIT (redit_down)
 REDIT (redit_up)
 REDIT (redit_west)
 REDIT (redit_east)
 REDIT (redit_south)
 REDIT (redit_north)
 REDIT (redit_show)
 REDIT (redit_ttype)
 REDIT (redit_tstate)
 REDIT (redit_troute)
 REDIT (redit_oshow)
 REDIT (redit_mshow)
 REDIT (redit_olist)
 REDIT (redit_mlist)
 REDIT (redit_rlist)
 SEDIT (sedit_delete)
 SEDIT (sedit_char_not_found)
 SEDIT (sedit_others_auto)
 SEDIT (sedit_char_auto)
 SEDIT (sedit_others_found)
 SEDIT (sedit_vict_found)
 SEDIT (sedit_char_found)
 SEDIT (sedit_others_no_arg)
 SEDIT (sedit_char_no_arg)
 SEDIT (sedit_show)
 SEDIT (sedit_create)
bool set_obj_values (CHAR_DATA *ch, OBJ_INDEX_DATA *pObj, int value_num, char *argument)
bool set_value (CHAR_DATA *ch, OBJ_INDEX_DATA *pObj, char *argument, int value)
void show_damlist (CHAR_DATA *ch)
void show_flag_cmds (CHAR_DATA *ch, const struct flag_type *flag_table)
bool show_help (CHAR_DATA *ch, char *argument)
void show_liqlist (CHAR_DATA *ch)
void show_obj_values (CHAR_DATA *ch, OBJ_INDEX_DATA *obj)
void show_skill_cmds (CHAR_DATA *ch, int tar)
void show_spec_cmds (CHAR_DATA *ch)
bool show_version (CHAR_DATA *ch, char *argument)
int wear_bit (int loc)
int wear_loc (int bits, int count)

Variables

const struct olc_help_type help_table []
const struct wear_type wear_table []


Define Documentation

#define AEDIT fun   )     bool fun( CHAR_DATA *ch, char *argument )
 

Definition at line 50 of file olc_act.c.

#define ALT_FLAGVALUE_SET _blargh,
_table,
_arg   ) 
 

Value:

{                            \
        int blah = flag_value( _table, _arg );        \
        _blargh = (blah == NO_FLAG) ? 0 : blah;        \
    }

Definition at line 34 of file olc_act.c.

Referenced by set_obj_values().

#define ALT_FLAGVALUE_TOGGLE _blargh,
_table,
_arg   ) 
 

Value:

{                            \
        int blah = flag_value( _table, _arg );        \
        _blargh ^= (blah == NO_FLAG) ? 0 : blah;    \
    }

Definition at line 40 of file olc_act.c.

Referenced by set_obj_values().

#define HEDIT fun   )     bool fun( CHAR_DATA *ch, char *argument )
 

Definition at line 52 of file olc_act.c.

#define MEDIT fun   )     bool fun( CHAR_DATA *ch, char *argument )
 

Definition at line 49 of file olc_act.c.

#define OEDIT fun   )     bool fun( CHAR_DATA *ch, char *argument )
 

Definition at line 48 of file olc_act.c.

#define REDIT fun   )     bool fun( CHAR_DATA *ch, char *argument )
 

Definition at line 47 of file olc_act.c.

#define SEDIT fun   )     bool fun( CHAR_DATA *ch, char *argument )
 

Definition at line 51 of file olc_act.c.


Function Documentation

AEDIT aedit_uvnum   ) 
 

Definition at line 1321 of file olc_act.c.

References check_range(), EDIT_AREA, FALSE, get_vnum_area(), is_number(), MAX_STRING_LENGTH, area_data::max_vnum, area_data::min_vnum, one_argument(), send_to_char(), and TRUE.

01322 {
01323     AREA_DATA *pArea;
01324     char upper[MAX_STRING_LENGTH];
01325     int ilower;
01326     int iupper;
01327 
01328     EDIT_AREA (ch, pArea);
01329 
01330     one_argument (argument, upper);
01331 
01332     if (!is_number (upper) || upper[0] == '\0')
01333     {
01334         send_to_char ("Syntax:  max_vnum [#xupper]\n\r", ch);
01335         return FALSE;
01336     }
01337 
01338     if ((ilower = pArea->min_vnum) > (iupper = atoi (upper)))
01339     {
01340         send_to_char ("AEdit:  Upper must be larger then lower.\n\r", ch);
01341         return FALSE;
01342     }
01343 
01344     if (!check_range (ilower, iupper))
01345     {
01346         send_to_char ("AEdit:  Range must include only this area.\n\r", ch);
01347         return FALSE;
01348     }
01349 
01350     if (get_vnum_area (iupper) && get_vnum_area (iupper) != pArea)
01351     {
01352         send_to_char ("AEdit:  Upper vnum already assigned.\n\r", ch);
01353         return FALSE;
01354     }
01355 
01356     pArea->max_vnum = iupper;
01357     send_to_char ("Upper vnum set.\n\r", ch);
01358 
01359     return TRUE;
01360 }

Here is the call graph for this function:

AEDIT aedit_lvnum   ) 
 

Definition at line 1278 of file olc_act.c.

References check_range(), EDIT_AREA, FALSE, get_vnum_area(), is_number(), MAX_STRING_LENGTH, area_data::max_vnum, area_data::min_vnum, one_argument(), send_to_char(), and TRUE.

01279 {
01280     AREA_DATA *pArea;
01281     char lower[MAX_STRING_LENGTH];
01282     int ilower;
01283     int iupper;
01284 
01285     EDIT_AREA (ch, pArea);
01286 
01287     one_argument (argument, lower);
01288 
01289     if (!is_number (lower) || lower[0] == '\0')
01290     {
01291         send_to_char ("Syntax:  min_vnum [#xlower]\n\r", ch);
01292         return FALSE;
01293     }
01294 
01295     if ((ilower = atoi (lower)) > (iupper = pArea->max_vnum))
01296     {
01297         send_to_char ("AEdit:  Value must be less than the max_vnum.\n\r",
01298                       ch);
01299         return FALSE;
01300     }
01301 
01302     if (!check_range (ilower, iupper))
01303     {
01304         send_to_char ("AEdit:  Range must include only this area.\n\r", ch);
01305         return FALSE;
01306     }
01307 
01308     if (get_vnum_area (ilower) && get_vnum_area (ilower) != pArea)
01309     {
01310         send_to_char ("AEdit:  Lower vnum already assigned.\n\r", ch);
01311         return FALSE;
01312     }
01313 
01314     pArea->min_vnum = ilower;
01315     send_to_char ("Lower vnum set.\n\r", ch);
01316     return TRUE;
01317 }

Here is the call graph for this function:

AEDIT aedit_vnum   ) 
 

Definition at line 1223 of file olc_act.c.

References check_range(), EDIT_AREA, FALSE, get_vnum_area(), is_number(), MAX_STRING_LENGTH, area_data::max_vnum, area_data::min_vnum, one_argument(), send_to_char(), and TRUE.

01224 {
01225     AREA_DATA *pArea;
01226     char lower[MAX_STRING_LENGTH];
01227     char upper[MAX_STRING_LENGTH];
01228     int ilower;
01229     int iupper;
01230 
01231     EDIT_AREA (ch, pArea);
01232 
01233     argument = one_argument (argument, lower);
01234     one_argument (argument, upper);
01235 
01236     if (!is_number (lower) || lower[0] == '\0'
01237         || !is_number (upper) || upper[0] == '\0')
01238     {
01239         send_to_char ("Syntax:  vnum [#xlower] [#xupper]\n\r", ch);
01240         return FALSE;
01241     }
01242 
01243     if ((ilower = atoi (lower)) > (iupper = atoi (upper)))
01244     {
01245         send_to_char ("AEdit:  Upper must be larger then lower.\n\r", ch);
01246         return FALSE;
01247     }
01248 
01249     if (!check_range (atoi (lower), atoi (upper)))
01250     {
01251         send_to_char ("AEdit:  Range must include only this area.\n\r", ch);
01252         return FALSE;
01253     }
01254 
01255     if (get_vnum_area (ilower) && get_vnum_area (ilower) != pArea)
01256     {
01257         send_to_char ("AEdit:  Lower vnum already assigned.\n\r", ch);
01258         return FALSE;
01259     }
01260 
01261     pArea->min_vnum = ilower;
01262     send_to_char ("Lower vnum set.\n\r", ch);
01263 
01264     if (get_vnum_area (iupper) && get_vnum_area (iupper) != pArea)
01265     {
01266         send_to_char ("AEdit:  Upper vnum already assigned.\n\r", ch);
01267         return TRUE;            /* The lower value has been set. */
01268     }
01269 
01270     pArea->max_vnum = iupper;
01271     send_to_char ("Upper vnum set.\n\r", ch);
01272 
01273     return TRUE;
01274 }

Here is the call graph for this function:

AEDIT aedit_delete   ) 
 

Definition at line 1200 of file olc_act.c.

References area_data::adelete, EDIT_AREA, FALSE, send_to_char(), and TRUE.

01201 {
01202     AREA_DATA *pArea;
01203 
01204     EDIT_AREA(ch, pArea);
01205 
01206     if (ch->level < 60)
01207     {
01208         send_to_char("You do not have access in deleteing areas.\n\r",ch);
01209         return FALSE;
01210     }
01211 
01212     if (pArea->adelete)
01213     {
01214         send_to_char("Area's delete status removed.\n\r",ch);
01215         pArea->adelete = FALSE;
01216         return TRUE;
01217     }
01218     send_to_char("Area's delete status set.\n\r",ch);
01219     pArea->adelete = TRUE;
01220     return TRUE;
01221 }

Here is the call graph for this function:

AEDIT aedit_builder   ) 
 

Definition at line 1140 of file olc_act.c.

References area_data::builders, EDIT_AREA, FALSE, free_string(), MAX_STRING_LENGTH, one_argument(), send_to_char(), str_dup(), string_proper(), string_replace(), string_unpad(), TRUE, and UPPER.

01141 {
01142     AREA_DATA *pArea;
01143     char name[MAX_STRING_LENGTH];
01144     char buf[MAX_STRING_LENGTH];
01145 
01146     EDIT_AREA (ch, pArea);
01147 
01148     one_argument (argument, name);
01149 
01150     if (name[0] == '\0')
01151     {
01152         send_to_char ("Syntax:  builder [$name]  -toggles builder\n\r", ch);
01153         send_to_char ("Syntax:  builder All      -allows everyone\n\r", ch);
01154         return FALSE;
01155     }
01156 
01157     name[0] = UPPER (name[0]);
01158 
01159     if (strstr (pArea->builders, name) != '\0')
01160     {
01161         pArea->builders = string_replace (pArea->builders, name, "\0");
01162         pArea->builders = string_unpad (pArea->builders);
01163 
01164         if (pArea->builders[0] == '\0')
01165         {
01166             free_string (pArea->builders);
01167             pArea->builders = str_dup ("None");
01168         }
01169         send_to_char ("Builder removed.\n\r", ch);
01170         return TRUE;
01171     }
01172     else
01173     {
01174         buf[0] = '\0';
01175         if (strstr (pArea->builders, "None") != '\0')
01176         {
01177             pArea->builders = string_replace (pArea->builders, "None", "\0");
01178             pArea->builders = string_unpad (pArea->builders);
01179         }
01180 
01181         if (pArea->builders[0] != '\0')
01182         {
01183             strcat (buf, pArea->builders);
01184             strcat (buf, " ");
01185         }
01186         strcat (buf, name);
01187         free_string (pArea->builders);
01188         pArea->builders = string_proper (str_dup (buf));
01189 
01190         send_to_char ("Builder added.\n\r", ch);
01191         send_to_char (pArea->builders, ch);
01192         return TRUE;
01193     }
01194 
01195     return FALSE;
01196 }

Here is the call graph for this function:

AEDIT aedit_security   ) 
 

Definition at line 1101 of file olc_act.c.

References EDIT_AREA, FALSE, is_number(), MAX_STRING_LENGTH, one_argument(), area_data::security, send_to_char(), and TRUE.

01102 {
01103     AREA_DATA *pArea;
01104     char sec[MAX_STRING_LENGTH];
01105     char buf[MAX_STRING_LENGTH];
01106     int value;
01107 
01108     EDIT_AREA (ch, pArea);
01109 
01110     one_argument (argument, sec);
01111 
01112     if (!is_number (sec) || sec[0] == '\0')
01113     {
01114         send_to_char ("Syntax:  security [#xlevel]\n\r", ch);
01115         return FALSE;
01116     }
01117 
01118     value = atoi (sec);
01119 
01120     if (value > ch->pcdata->security || value < 0)
01121     {
01122         if (ch->pcdata->security != 0)
01123         {
01124             sprintf (buf, "Security is 0-%d.\n\r", ch->pcdata->security);
01125             send_to_char (buf, ch);
01126         }
01127         else
01128             send_to_char ("Security is 0 only.\n\r", ch);
01129         return FALSE;
01130     }
01131 
01132     pArea->security = value;
01133 
01134     send_to_char ("Security set.\n\r", ch);
01135     return TRUE;
01136 }

Here is the call graph for this function:

AEDIT aedit_age   ) 
 

Definition at line 1046 of file olc_act.c.

References area_data::age, EDIT_AREA, FALSE, is_number(), MAX_STRING_LENGTH, one_argument(), send_to_char(), and TRUE.

01047 {
01048     AREA_DATA *pArea;
01049     char age[MAX_STRING_LENGTH];
01050 
01051     EDIT_AREA (ch, pArea);
01052 
01053     one_argument (argument, age);
01054 
01055     if (!is_number (age) || age[0] == '\0')
01056     {
01057         send_to_char ("Syntax:  age [#xage]\n\r", ch);
01058         return FALSE;
01059     }
01060 
01061     pArea->age = atoi (age);
01062 
01063     send_to_char ("Age set.\n\r", ch);
01064     return TRUE;
01065 }

Here is the call graph for this function:

AEDIT aedit_file   ) 
 

Definition at line 998 of file olc_act.c.

References EDIT_AREA, FALSE, area_data::file_name, free_string(), MAX_STRING_LENGTH, one_argument(), send_to_char(), str_dup(), and TRUE.

00999 {
01000     AREA_DATA *pArea;
01001     char file[MAX_STRING_LENGTH];
01002     int i, length;
01003 
01004     EDIT_AREA (ch, pArea);
01005 
01006     one_argument (argument, file);    /* Forces Lowercase */
01007 
01008     if (argument[0] == '\0')
01009     {
01010         send_to_char ("Syntax:  filename [$file]\n\r", ch);
01011         return FALSE;
01012     }
01013 
01014     /*
01015      * Simple Syntax Check.
01016      */
01017     length = strlen (argument);
01018     if (length > 8)
01019     {
01020         send_to_char ("No more than eight characters allowed.\n\r", ch);
01021         return FALSE;
01022     }
01023 
01024     /*
01025      * Allow only letters and numbers.
01026      */
01027     for (i = 0; i < length; i++)
01028     {
01029         if (!isalnum (file[i]))
01030         {
01031             send_to_char ("Only letters and numbers are valid.\n\r", ch);
01032             return FALSE;
01033         }
01034     }
01035 
01036     free_string (pArea->file_name);
01037     strcat (file, ".are");
01038     pArea->file_name = str_dup (file);
01039 
01040     send_to_char ("Filename set.\n\r", ch);
01041     return TRUE;
01042 }

Here is the call graph for this function:

AEDIT aedit_credits   ) 
 

Definition at line 978 of file olc_act.c.

References area_data::credits, EDIT_AREA, FALSE, free_string(), send_to_char(), str_dup(), and TRUE.

00979 {
00980     AREA_DATA *pArea;
00981 
00982     EDIT_AREA (ch, pArea);
00983 
00984     if (argument[0] == '\0')
00985     {
00986         send_to_char ("Syntax:   credits [$credits]\n\r", ch);
00987         return FALSE;
00988     }
00989 
00990     free_string (pArea->credits);
00991     pArea->credits = str_dup (argument);
00992 
00993     send_to_char ("Credits set.\n\r", ch);
00994     return TRUE;
00995 }

Here is the call graph for this function:

AEDIT aedit_cont   ) 
 

Definition at line 952 of file olc_act.c.

References area_data::cont, cont_lookup(), conts_table, EDIT_AREA, FALSE, free_string(), send_to_char(), str_dup(), and TRUE.

00953 {
00954     AREA_DATA *pArea;
00955     EDIT_AREA(ch,pArea);
00956 
00957     if (argument[0] == '\0')
00958     {
00959         send_to_char("Syntax: cont <contname> -- do 'cshow' for a list of continents.\n\r",ch);
00960         return FALSE;
00961     }
00962 
00963     free_string (pArea->cont);
00964     if (cont_lookup(argument) != 0)
00965     {
00966         pArea->cont = str_dup(conts_table[cont_lookup(argument)].name);
00967         send_to_char("Continent set.\n\r",ch);
00968         return TRUE;
00969     }
00970     else
00971     {
00972         send_to_char ("Invalid Continent. Use 'cshow' to view current continents.\n\r",ch);
00973         return FALSE;
00974     }
00975     return TRUE;
00976 }

Here is the call graph for this function:

AEDIT aedit_name   ) 
 

Definition at line 934 of file olc_act.c.

References EDIT_AREA, FALSE, free_string(), area_data::name, send_to_char(), str_dup(), and TRUE.

00935 {
00936     AREA_DATA *pArea;
00937 
00938     EDIT_AREA (ch, pArea);
00939 
00940     if (argument[0] == '\0')
00941     {
00942         send_to_char ("Syntax:   name [$name]\n\r", ch);
00943         return FALSE;
00944     }
00945 
00946     free_string (pArea->name);
00947     pArea->name = str_dup (argument);
00948 
00949     send_to_char ("Name set.\n\r", ch);
00950     return TRUE;
00951 }

Here is the call graph for this function:

AEDIT aedit_create   ) 
 

Definition at line 918 of file olc_act.c.

References AREA_ADDED, area_data::area_flags, area_last, FALSE, new_area(), area_data::next, send_to_char(), and SET_BIT.

00919 {
00920     AREA_DATA *pArea;
00921 
00922     pArea = new_area ();
00923     area_last->next = pArea;
00924     area_last = pArea;            /* Thanks, Walker. */
00925     ch->desc->pEdit = (void *) pArea;
00926 
00927     SET_BIT (pArea->area_flags, AREA_ADDED);
00928     send_to_char ("Area Created.\n\r", ch);
00929     return FALSE;
00930 }

Here is the call graph for this function:

AEDIT aedit_reset   ) 
 

Definition at line 906 of file olc_act.c.

References EDIT_AREA, FALSE, reset_area(), and send_to_char().

00907 {
00908     AREA_DATA *pArea;
00909 
00910     EDIT_AREA (ch, pArea);
00911 
00912     reset_area (pArea);
00913     send_to_char ("Area reset.\n\r", ch);
00914 
00915     return FALSE;
00916 }

Here is the call graph for this function:

AEDIT aedit_show   ) 
 

Definition at line 858 of file olc_act.c.

References area_data::age, area_data::area_flags, area_flags, area_data::builders, area_data::cont, area_data::credits, EDIT_AREA, FALSE, area_data::file_name, flag_string(), get_room_index(), MAX_STRING_LENGTH, area_data::max_vnum, area_data::min_vnum, room_index_data::name, area_data::name, area_data::nplayer, area_data::security, send_to_char(), and area_data::vnum.

00859 {
00860     AREA_DATA *pArea;
00861     char buf[MAX_STRING_LENGTH];
00862 
00863     EDIT_AREA (ch, pArea);
00864 
00865     sprintf (buf, "Name:     [{c%5d{x] {c%s{x\n\r", pArea->vnum, pArea->name);
00866     send_to_char (buf, ch);
00867 
00868 #if 0                            /* ROM OLC */
00869     sprintf (buf, "Recall:   [%5d] %s\n\r", pArea->recall,
00870              get_room_index (pArea->recall)
00871              ? get_room_index (pArea->recall)->name : "none");
00872     send_to_char (buf, ch);
00873 #endif /* ROM */
00874 
00875     sprintf (buf, "File:     {c%s{x\n\r", pArea->file_name);
00876     send_to_char (buf, ch);
00877 
00878     sprintf (buf, "Vnums:    [{c%d{w-{c%d{x]\n\r", pArea->min_vnum, pArea->max_vnum);
00879     send_to_char (buf, ch);
00880 
00881     sprintf (buf, "Age:      [{c%d{x]\n\r", pArea->age);
00882     send_to_char (buf, ch);
00883 
00884     sprintf (buf, "Players:  [{c%d{x]\n\r", pArea->nplayer);
00885     send_to_char (buf, ch);
00886 
00887     sprintf (buf, "Security: [{c%d{x]\n\r", pArea->security);
00888     send_to_char (buf, ch);
00889 
00890     sprintf (buf, "Builders: [{c%s{x]\n\r", pArea->builders);
00891     send_to_char (buf, ch);
00892 
00893     sprintf (buf, "Credits : [{c%s{x]\n\r", pArea->credits);
00894     send_to_char (buf, ch);
00895 
00896     sprintf (buf, "Flags:    [{c%s{x]\n\r",
00897              flag_string (area_flags, pArea->area_flags));
00898     send_to_char (buf, ch);
00899 
00900     sprintf(buf, "Cont:     [{c%s{x]\n\r", pArea->cont);
00901     send_to_char(buf,ch);
00902 
00903     return FALSE;
00904 }

Here is the call graph for this function:

bool change_exit CHAR_DATA ch,
char *  argument,
int  door
 

Definition at line 1616 of file olc_act.c.

References room_index_data::area, exit_data::description, do_help(), EDIT_ROOM, room_index_data::exit, exit_flags, exit_data::exit_info, FALSE, flag_value(), free_exit(), free_string(), get_obj_index(), get_room_index(), IS_BUILDER, is_number(), ITEM_KEY, obj_index_data::item_type, exit_data::key, exit_data::keyword, MAX_INPUT_LENGTH, MAX_STRING_LENGTH, move_char(), new_exit(), NO_FLAG, one_argument(), exit_data::orig_door, rev_dir, exit_data::rs_flags, send_to_char(), str_cmp(), str_dup(), str_prefix(), string_append(), exit_data::to_room, TOGGLE_BIT, TRUE, and exit_data::u1.

Referenced by REDIT().

01617 {
01618     ROOM_INDEX_DATA *pRoom;
01619     char command[MAX_INPUT_LENGTH];
01620     char arg[MAX_INPUT_LENGTH];
01621     int value;
01622 
01623     EDIT_ROOM (ch, pRoom);
01624 
01625     /*
01626      * Set the exit flags, needs full argument.
01627      * ----------------------------------------
01628      */
01629     if ((value = flag_value (exit_flags, argument)) != NO_FLAG)
01630     {
01631         ROOM_INDEX_DATA *pToRoom;
01632         sh_int rev;                /* ROM OLC */
01633 
01634         if (!pRoom->exit[door])
01635         {
01636             send_to_char ("Exit doesn't exist.\n\r", ch);
01637             return FALSE;
01638         }
01639 
01640         /*
01641          * This room.
01642          */
01643         TOGGLE_BIT (pRoom->exit[door]->rs_flags, value);
01644         /* Don't toggle exit_info because it can be changed by players. */
01645         pRoom->exit[door]->exit_info = pRoom->exit[door]->rs_flags;
01646 
01647         /*
01648          * Connected room.
01649          */
01650         pToRoom = pRoom->exit[door]->u1.to_room;    /* ROM OLC */
01651         rev = rev_dir[door];
01652 
01653         if (pToRoom->exit[rev] != NULL)
01654         {
01655             pToRoom->exit[rev]->rs_flags = pRoom->exit[door]->rs_flags;
01656             pToRoom->exit[rev]->exit_info = pRoom->exit[door]->exit_info;
01657         }
01658 
01659         send_to_char ("Exit flag toggled.\n\r", ch);
01660         return TRUE;
01661     }
01662 
01663     /*
01664      * Now parse the arguments.
01665      */
01666     argument = one_argument (argument, command);
01667     one_argument (argument, arg);
01668 
01669     if (command[0] == '\0' && argument[0] == '\0')
01670     {                            /* Move command. */
01671         move_char (ch, door, TRUE);    /* ROM OLC */
01672         return FALSE;
01673     }
01674 
01675     if (command[0] == '?')
01676     {
01677         do_help (ch, "EXIT");
01678         return FALSE;
01679     }
01680 
01681     if (!str_cmp (command, "delete"))
01682     {
01683         ROOM_INDEX_DATA *pToRoom;
01684         sh_int rev;                /* ROM OLC */
01685 
01686         if (!pRoom->exit[door])
01687         {
01688             send_to_char ("REdit:  Cannot delete a null exit.\n\r", ch);
01689             return FALSE;
01690         }
01691 
01692         /*
01693          * Remove ToRoom Exit.
01694          */
01695         rev = rev_dir[door];
01696         pToRoom = pRoom->exit[door]->u1.to_room;    /* ROM OLC */
01697 
01698         if (pToRoom->exit[rev])
01699         {
01700             free_exit (pToRoom->exit[rev]);
01701             pToRoom->exit[rev] = NULL;
01702         }
01703 
01704         /*
01705          * Remove this exit.
01706          */
01707         free_exit (pRoom->exit[door]);
01708         pRoom->exit[door] = NULL;
01709 
01710         send_to_char ("Exit unlinked.\n\r", ch);
01711         return TRUE;
01712     }
01713 
01714     if (!str_cmp (command, "link"))
01715     {
01716         EXIT_DATA *pExit;
01717         ROOM_INDEX_DATA *toRoom;
01718 
01719         if (arg[0] == '\0' || !is_number (arg))
01720         {
01721             send_to_char ("Syntax:  [direction] link [vnum]\n\r", ch);
01722             return FALSE;
01723         }
01724 
01725         value = atoi (arg);
01726 
01727         if (!(toRoom = get_room_index (value)))
01728         {
01729             send_to_char ("REdit:  Cannot link to non-existant room.\n\r",
01730                           ch);
01731             return FALSE;
01732         }
01733 
01734         if (!IS_BUILDER (ch, toRoom->area))
01735         {
01736             send_to_char ("REdit:  Cannot link to that area.\n\r", ch);
01737             return FALSE;
01738         }
01739 
01740         if (toRoom->exit[rev_dir[door]])
01741         {
01742             send_to_char ("REdit:  Remote side's exit already exists.\n\r",
01743                           ch);
01744             return FALSE;
01745         }
01746 
01747         if (!pRoom->exit[door])
01748             pRoom->exit[door] = new_exit ();
01749 
01750         pRoom->exit[door]->u1.to_room = toRoom;
01751         pRoom->exit[door]->orig_door = door;
01752 
01753         door = rev_dir[door];
01754         pExit = new_exit ();
01755         pExit->u1.to_room = pRoom;
01756         pExit->orig_door = door;
01757         toRoom->exit[door] = pExit;
01758 
01759         send_to_char ("Two-way link established.\n\r", ch);
01760         return TRUE;
01761     }
01762 
01763     if (!str_cmp (command, "dig"))
01764     {
01765         char buf[MAX_STRING_LENGTH];
01766 
01767         if (arg[0] == '\0' || !is_number (arg))
01768         {
01769             send_to_char ("Syntax: [direction] dig <vnum>\n\r", ch);
01770             return FALSE;
01771         }
01772 
01773         redit_create (ch, arg);
01774         sprintf (buf, "link %s", arg);
01775         change_exit (ch, buf, door);
01776         return TRUE;
01777     }
01778 
01779     if (!str_cmp (command, "room"))
01780     {
01781         ROOM_INDEX_DATA *toRoom;
01782 
01783         if (arg[0] == '\0' || !is_number (arg))
01784         {
01785             send_to_char ("Syntax:  [direction] room [vnum]\n\r", ch);
01786             return FALSE;
01787         }
01788 
01789         value = atoi (arg);
01790 
01791         if (!(toRoom = get_room_index (value)))
01792         {
01793             send_to_char ("REdit:  Cannot link to non-existant room.\n\r",
01794                           ch);
01795             return FALSE;
01796         }
01797 
01798         if (!pRoom->exit[door])
01799             pRoom->exit[door] = new_exit ();
01800 
01801         pRoom->exit[door]->u1.to_room = toRoom;    /* ROM OLC */
01802         pRoom->exit[door]->orig_door = door;
01803 
01804         send_to_char ("One-way link established.\n\r", ch);
01805         return TRUE;
01806     }
01807 
01808     if (!str_cmp (command, "key"))
01809     {
01810         OBJ_INDEX_DATA *key;
01811 
01812         if (arg[0] == '\0' || !is_number (arg))
01813         {
01814             send_to_char ("Syntax:  [direction] key [vnum]\n\r", ch);
01815             return FALSE;
01816         }
01817 
01818         if (!pRoom->exit[door])
01819         {
01820             send_to_char ("Exit doesn't exist.\n\r", ch);
01821             return FALSE;
01822         }
01823 
01824         value = atoi (arg);
01825 
01826         if (!(key = get_obj_index (value)))
01827         {
01828             send_to_char ("REdit:  Key doesn't exist.\n\r", ch);
01829             return FALSE;
01830         }
01831 
01832         if (key->item_type != ITEM_KEY)
01833         {
01834             send_to_char ("REdit:  Object is not a key.\n\r", ch);
01835             return FALSE;
01836         }
01837 
01838         pRoom->exit[door]->key = value;
01839 
01840         send_to_char ("Exit key set.\n\r", ch);
01841         return TRUE;
01842     }
01843 
01844     if (!str_cmp (command, "name"))
01845     {
01846         if (arg[0] == '\0')
01847         {
01848             send_to_char ("Syntax:  [direction] name [string]\n\r", ch);
01849             send_to_char ("         [direction] name none\n\r", ch);
01850             return FALSE;
01851         }
01852 
01853         if (!pRoom->exit[door])
01854         {
01855             send_to_char ("Exit doesn't exist.\n\r", ch);
01856             return FALSE;
01857         }
01858 
01859         free_string (pRoom->exit[door]->keyword);
01860 
01861         if (str_cmp (arg, "none"))
01862             pRoom->exit[door]->keyword = str_dup (arg);
01863         else
01864             pRoom->exit[door]->keyword = str_dup ("");
01865 
01866         send_to_char ("Exit name set.\n\r", ch);
01867         return TRUE;
01868     }
01869 
01870     if (!str_prefix (command, "description"))
01871     {
01872         if (arg[0] == '\0')
01873         {
01874             if (!pRoom->exit[door])
01875             {
01876                 send_to_char ("Exit doesn't exi