diff -BbuprN -x '*.o' suntzu/src/genzon.c suntzu-dev/src/genzon.c --- suntzu/src/genzon.c 2003-10-31 20:11:51.000000000 -0600 +++ suntzu-dev/src/genzon.c 2003-11-21 07:40:45.000000000 -0600 @@ -356,7 +356,7 @@ void remove_room_zone_commands(zone_rnum */ int save_zone(zone_rnum zone_num) { - int subcmd, arg1 = -1, arg2 = -1, arg3 = -1; + int subcmd, arg1 = -1, arg2 = -1, arg3 = -1, arg4 = -1; char fname[128], oldname[128]; const char *comment = NULL; FILE *zfile; @@ -417,30 +417,35 @@ int save_zone(zone_rnum zone_num) arg1 = mob_index[ZCMD(zone_num, subcmd).arg1].vnum; arg2 = ZCMD(zone_num, subcmd).arg2; arg3 = world[ZCMD(zone_num, subcmd).arg3].number; + arg4 = ZCMD(zone_num, subcmd).arg4; comment = mob_proto[ZCMD(zone_num, subcmd).arg1].player.short_descr; break; case 'O': arg1 = obj_index[ZCMD(zone_num, subcmd).arg1].vnum; arg2 = ZCMD(zone_num, subcmd).arg2; arg3 = world[ZCMD(zone_num, subcmd).arg3].number; + arg4 = ZCMD(zone_num, subcmd).arg4; comment = obj_proto[ZCMD(zone_num, subcmd).arg1].short_description; break; case 'G': arg1 = obj_index[ZCMD(zone_num, subcmd).arg1].vnum; arg2 = ZCMD(zone_num, subcmd).arg2; arg3 = -1; + arg4 = ZCMD(zone_num, subcmd).arg4; comment = obj_proto[ZCMD(zone_num, subcmd).arg1].short_description; break; case 'E': arg1 = obj_index[ZCMD(zone_num, subcmd).arg1].vnum; arg2 = ZCMD(zone_num, subcmd).arg2; arg3 = ZCMD(zone_num, subcmd).arg3; + arg4 = ZCMD(zone_num, subcmd).arg4; comment = obj_proto[ZCMD(zone_num, subcmd).arg1].short_description; break; case 'P': arg1 = obj_index[ZCMD(zone_num, subcmd).arg1].vnum; arg2 = ZCMD(zone_num, subcmd).arg2; arg3 = obj_index[ZCMD(zone_num, subcmd).arg3].vnum; + arg4 = ZCMD(zone_num, subcmd).arg4; comment = obj_proto[ZCMD(zone_num, subcmd).arg1].short_description; break; case 'D': @@ -459,12 +464,14 @@ int save_zone(zone_rnum zone_num) arg1 = ZCMD(zone_num, subcmd).arg1; /* trigger type */ arg2 = trig_index[ZCMD(zone_num, subcmd).arg2]->vnum; /* trigger vnum */ arg3 = world[ZCMD(zone_num, subcmd).arg3].number; /* room num */ + arg4 = ZCMD(zone_num, subcmd).arg4; comment = GET_TRIG_NAME(trig_index[real_trigger(arg2)]->proto); break; case 'V': arg1 = ZCMD(zone_num, subcmd).arg1; /* trigger type */ arg2 = ZCMD(zone_num, subcmd).arg2; /* context */ arg3 = world[ZCMD(zone_num, subcmd).arg3].number; + arg4 = ZCMD(zone_num, subcmd).arg4; break; case '*': /* @@ -476,11 +483,11 @@ int save_zone(zone_rnum zone_num) continue; } if (ZCMD(zone_num, subcmd).command != 'V') - fprintf(zfile, "%c %d %d %d %d \t(%s)\n", - ZCMD(zone_num, subcmd).command, ZCMD(zone_num, subcmd).if_flag, arg1, arg2, arg3, comment); + fprintf(zfile, "%c %d %d %d %d %d \t(%s)\n", + ZCMD(zone_num, subcmd).command, ZCMD(zone_num, subcmd).if_flag, arg1, arg2, arg3, arg4, comment); else - fprintf(zfile, "%c %d %d %d %d %s %s\n", - ZCMD(zone_num, subcmd).command, ZCMD(zone_num, subcmd).if_flag, arg1, arg2, arg3, + fprintf(zfile, "%c %d %d %d %d %d %s %s\n", + ZCMD(zone_num, subcmd).command, ZCMD(zone_num, subcmd).if_flag, arg1, arg2, arg3, arg4, ZCMD(zone_num, subcmd).sarg1, ZCMD(zone_num, subcmd).sarg2); } fputs("S\n$\n", zfile); diff -BbuprN -x '*.o' suntzu/src/oasis.h suntzu-dev/src/oasis.h --- suntzu/src/oasis.h 2003-10-31 20:11:51.000000000 -0600 +++ suntzu-dev/src/oasis.h 2003-11-21 07:40:45.000000000 -0600 @@ -288,13 +288,14 @@ extern const char *nrm, *grn, *cyn, *yel #define ZEDIT_ARG1 6 #define ZEDIT_ARG2 7 #define ZEDIT_ARG3 8 -#define ZEDIT_ZONE_NAME 9 -#define ZEDIT_ZONE_LIFE 10 -#define ZEDIT_ZONE_BOT 11 -#define ZEDIT_ZONE_TOP 12 -#define ZEDIT_ZONE_RESET 13 -#define ZEDIT_CONFIRM_SAVESTRING 14 -#define ZEDIT_ZONE_BUILDERS 15 +#define ZEDIT_ARG4 9 +#define ZEDIT_ZONE_NAME 10 +#define ZEDIT_ZONE_LIFE 11 +#define ZEDIT_ZONE_BOT 12 +#define ZEDIT_ZONE_TOP 13 +#define ZEDIT_ZONE_RESET 14 +#define ZEDIT_CONFIRM_SAVESTRING 15 +#define ZEDIT_ZONE_BUILDERS 16 #define ZEDIT_SARG1 20 #define ZEDIT_SARG2 21 @@ -706,9 +707,9 @@ int can_edit_zone(struct char_data *ch, #define CONTEXT_SCRIPT_MAIN_MENU 121 #define CONTEXT_SCRIPT_NEW_TRIGGER 122 #define CONTEXT_SCRIPT_DEL_TRIGGER 123 - +#define CONTEXT_ZEDIT_ARG4 124 /* includes number 0 */ -#define NUM_CONTEXTS 124 +#define NUM_CONTEXTS 125 /* Prototypes for the context sensitive help system */ int find_context(struct descriptor_data *d); diff -BbuprN -x '*.o' suntzu/src/zedit.c suntzu-dev/src/zedit.c --- suntzu/src/zedit.c 2003-10-31 20:11:51.000000000 -0600 +++ suntzu-dev/src/zedit.c 2003-11-21 08:31:37.000000000 -0600 @@ -495,45 +495,45 @@ void zedit_disp_menu(struct descriptor_d write_to_output(d, "%s%d - %s", nrm, counter++, yel); switch (MYCMD.command) { case 'M': - write_to_output(d, "%sLoad %s [%s%d%s], Max : %d", + write_to_output(d, "%sLoad %s [%s%d%s], Max : %d, %% Chance %d", MYCMD.if_flag ? " then " : "", mob_proto[MYCMD.arg1].player.short_descr, cyn, - mob_index[MYCMD.arg1].vnum, yel, MYCMD.arg2 + mob_index[MYCMD.arg1].vnum, yel, MYCMD.arg2, MYCMD.arg4 ); break; case 'G': - write_to_output(d, "%sGive it %s [%s%d%s], Max : %d", + write_to_output(d, "%sGive it %s [%s%d%s], Max : %d, %% Chance %d", MYCMD.if_flag ? " then " : "", obj_proto[MYCMD.arg1].short_description, cyn, obj_index[MYCMD.arg1].vnum, yel, - MYCMD.arg2 + MYCMD.arg2, MYCMD.arg4 ); break; case 'O': - write_to_output(d, "%sLoad %s [%s%d%s], Max : %d", + write_to_output(d, "%sLoad %s [%s%d%s], Max : %d, %% Chance %d", MYCMD.if_flag ? " then " : "", obj_proto[MYCMD.arg1].short_description, cyn, obj_index[MYCMD.arg1].vnum, yel, - MYCMD.arg2 + MYCMD.arg2, MYCMD.arg4 ); break; case 'E': - write_to_output(d, "%sEquip with %s [%s%d%s], %s, Max : %d", + write_to_output(d, "%sEquip with %s [%s%d%s], %s, Max : %d, %% Chance %d", MYCMD.if_flag ? " then " : "", obj_proto[MYCMD.arg1].short_description, cyn, obj_index[MYCMD.arg1].vnum, yel, equipment_types[MYCMD.arg3], - MYCMD.arg2 + MYCMD.arg2, MYCMD.arg4 ); break; case 'P': - write_to_output(d, "%sPut %s [%s%d%s] in %s [%s%d%s], Max : %d", + write_to_output(d, "%sPut %s [%s%d%s] in %s [%s%d%s], Max : %d, %% Chance %d", MYCMD.if_flag ? " then " : "", obj_proto[MYCMD.arg1].short_description, cyn, obj_index[MYCMD.arg1].vnum, yel, obj_proto[MYCMD.arg3].short_description, cyn, obj_index[MYCMD.arg3].vnum, yel, - MYCMD.arg2 + MYCMD.arg2, MYCMD.arg4 ); break; case 'R': @@ -551,22 +551,22 @@ void zedit_disp_menu(struct descriptor_d ); break; case 'T': - write_to_output(d, "%sAttach trigger %s%s%s [%s%d%s] to %s", + write_to_output(d, "%sAttach trigger %s%s%s [%s%d%s] to %s, %% Chance %d", MYCMD.if_flag ? " then " : "", cyn, trig_index[MYCMD.arg2]->proto->name, yel, cyn, trig_index[MYCMD.arg2]->vnum, yel, ((MYCMD.arg1 == MOB_TRIGGER) ? "mobile" : ((MYCMD.arg1 == OBJ_TRIGGER) ? "object" : - ((MYCMD.arg1 == WLD_TRIGGER)? "room" : "????")))); + ((MYCMD.arg1 == WLD_TRIGGER)? "room" : "????"))), MYCMD.arg4); break; case 'V': - write_to_output(d, "%sAssign global %s:%d to %s = %s", + write_to_output(d, "%sAssign global %s:%d to %s = %s, %% Chance %d", MYCMD.if_flag ? " then " : "", MYCMD.sarg1, MYCMD.arg2, ((MYCMD.arg1 == MOB_TRIGGER) ? "mobile" : ((MYCMD.arg1 == OBJ_TRIGGER) ? "object" : ((MYCMD.arg1 == WLD_TRIGGER)? "room" : "????"))), - MYCMD.sarg2); + MYCMD.sarg2, MYCMD.arg4); break; default: write_to_output(d, ""); @@ -760,6 +760,38 @@ void zedit_disp_arg3(struct descriptor_d } OLC_MODE(d) = ZEDIT_ARG3; } +/*-------------------------------------------------------------------*/ + +/* + * Print the appropriate message for the command type for arg2 and set + * up the input catch clause. + */ +void zedit_disp_arg4(struct descriptor_data *d) +{ + write_to_output(d, "\r\n"); + + switch (OLC_CMD(d).command) { + case 'M': + case 'O': + case 'E': + case 'P': + case 'G': + case 'T': + case 'V': + write_to_output(d, "Input the percentage chance of the load NOT occurring : "); + break; + default: + /* + * We should never get here, but just in case... + */ + cleanup_olc(d, CLEANUP_ALL); + mudlog(BRF, LVL_BUILDER, TRUE, "SYSERR: OLC: zedit_disp_arg2(): Help!"); + write_to_output(d, "Oops...\r\n"); + return; + } + OLC_MODE(d) = ZEDIT_ARG4; +} + /************************************************************************** The GARGANTAUN event handler @@ -1075,11 +1107,11 @@ void zedit_parse(struct descriptor_data case 'O': OLC_CMD(d).arg2 = MIN(MAX_DUPLICATES, atoi(arg)); OLC_CMD(d).arg3 = real_room(OLC_NUM(d)); - zedit_disp_menu(d); + zedit_disp_arg4(d); break; case 'G': OLC_CMD(d).arg2 = MIN(MAX_DUPLICATES, atoi(arg)); - zedit_disp_menu(d); + zedit_disp_arg4(d); break; case 'P': case 'E': @@ -1096,7 +1128,7 @@ void zedit_parse(struct descriptor_data if (real_trigger(atoi(arg)) != NOTHING) { OLC_CMD(d).arg2 = real_trigger(atoi(arg)); /* trigger */ OLC_CMD(d).arg3 = real_room(OLC_NUM(d)); - zedit_disp_menu(d); + zedit_disp_arg4(d); } else write_to_output(d, "That trigger does not exist, try again : "); break; @@ -1152,13 +1184,13 @@ void zedit_parse(struct descriptor_data write_to_output(d, "Try again : "); else { OLC_CMD(d).arg3 = pos; - zedit_disp_menu(d); + zedit_disp_arg4(d); } break; case 'P': if ((pos = real_object(atoi(arg))) != NOTHING) { OLC_CMD(d).arg3 = pos; - zedit_disp_menu(d); + zedit_disp_arg4(d); } else write_to_output(d, "That object does not exist, try again : "); break; @@ -1187,6 +1219,37 @@ void zedit_parse(struct descriptor_data break; } break; +/*-------------------------------------------------------------------*/ + case ZEDIT_ARG4: + /* + * Parse the input for arg2, and goto next quiz. + */ + if (!isdigit(*arg)) { + write_to_output(d, "Must be a numeric value, try again : "); + return; + } + switch (OLC_CMD(d).command) { + case 'M': + case 'O': + case 'G': + case 'P': + case 'E': + case 'V': + case 'T': + OLC_CMD(d).arg4 = atoi(arg); + zedit_disp_menu(d); + break; + default: + /* + * We should never get here, but just in case... + */ + cleanup_olc(d, CLEANUP_ALL); + mudlog(BRF, LVL_BUILDER, TRUE, "SYSERR: OLC: zedit_parse(): case ARG4: Ack!"); + write_to_output(d, "Oops...\r\n"); + break; + } + break; + /*-------------------------------------------------------------------*/ case ZEDIT_SARG1: @@ -1202,7 +1265,7 @@ void zedit_parse(struct descriptor_data case ZEDIT_SARG2: if (strlen(arg)) { OLC_CMD(d).sarg2 = strdup(arg); - zedit_disp_menu(d); + zedit_disp_arg4(d); } else write_to_output(d, "Must have some value to set it to :"); break;