/************************************************************************************
Hello. This will allow you to set double exp on and off. To use this you must
keep all the comments in the code and mail me at the.green.machine@gmail.com. Alright on with
code! BTW this was done on a Rom2.4 but shouldn't be hard to port to others. I
have also tested this on a Rot2.0b3 heh. Happy MUDding...
Kjwah....................Daurven?
mail: the.green.machine@gmail.com
MUD : Don't have a MUD.. lol
*************************************************************************************/
-> act_wiz.c <-
at the top of it I have it above wiznet stuff stick this.
bool doublexp;
then wherever you wanna stick this(I have it at the bottom) put this somewhere.
/* Double exp by Kjwah....... Daurven? :) */
void do_doublexp(CHAR_DATA *ch, char *argument) {
char buf[MSL]; /* MSL = MAX_STRING_LENGTH */
/* Show if its on or off if the argument is NULL */
if (argument[0] == '\0') {
if (doublexp) {
send_to_char("Double exp is on.\n\r",ch);
return;
} else {
send_to_char("Double exp is not on.\n\r",ch);
return;
}
}
/* Activates double exp and sends a message :) */
if (!strcmp (argument, "on")) {
send_to_char("Double exp set.\n\r",ch);
sprintf(buf,"%s has set double exp on!",ch->name);
do_announce(ch,buf); /* Comment out if you dont have announce */
doublexp = TRUE;
return;
}
/* Turns off double exp and sends a message :( */
if (!strcmp (argument, "off")) {
send_to_char("Double exp is now off.\n\r",ch);
sprintf(buf,"%s has disabled double exp.",ch->name);
do_announce(ch,buf); /* Comment out if you dont have announce */
doublexp = FALSE;
return;
}
}
-> fight.c <-
I have this at the top under the rest of the local functions
bool doublexp;
Next look for this in void group_gain
xp = xp_compute (gch, victim, group_levels);
sprintf (buf, "You receive %d experience points.\n\r", xp);
send_to_char (buf, gch);
gain_exp (gch, xp);
change that to look like this...
xp = xp_compute (gch, victim, group_levels);
if (doublexp) {
xp = xp * 2;
send_to_char("Double exp\n\r", gch);
sprintf (buf, "You receive {G%d{x (double)experience points.\n\r", xp);
send_to_char (buf, gch);
gain_exp (gch, xp);
} else {
sprintf (buf, "You receive %d experience points.\n\r", xp);
send_to_char (buf, gch);
gain_exp (gch, xp);
}
or you can have it like this
xp = xp_compute (gch, victim, group_levels);
if (doublexp) {
xp = xp * 2;
send_to_char("Double exp\n\r", gch);
}
sprintf (buf, "You receive %d experience points.\n\r", xp);
send_to_char (buf, gch);
gain_exp (gch, xp);
-> interp.c <-
stick this with the rest of the immortal commands order doesn't matter.
I have it set at MAX_LEVEL so it doesn't get abused. change the level if you want.
{"doublexp", do_doublexp,POS_DEAD, ML, LOG_ALWAYS, 1},
-> interp.h <-
Stick this somewhere also order is nice but as above doesn't matter :)
DECLARE_DO_FUN( do_doublexp );
---------------------------------------------------------------------------------
That should be all to it. If you have any problems please try and fix them
yourself before you mail me asking for help.