On Fri, 25 Oct 1996, Cyber Reaper wrote:
> looking for:
>
> SKILLS:
>
> HASTE
Standard MAG_AFFECTS to add an AFF_HASTE to the character (see something like
armor or bless for details). Addition to fight.c, perform_violence() to add
a secondary hit() for every time hit() is called (if you've added more for
dual wielding or multiple attacks, etc) - just add another call if the
char has AFF_HASTE on to every call you make to a hitting routine - could
also add doubles to the violent skills like kick, bash, backstab...
For detractions... could use age, for caster and reciever (classic) or (I
use) making them get hungry/thirsty 4* as fast (limits.c, point_update()).
I would post code, but as you might gather from the above, its spinkled all
around the mud in little tid-bits...
> SLOW
Once you've got haste conquered, you've got this as well...
> CIRCLE
Erm, backstab without the FIGHTING() check?
> PUSH (I have seenthis on... push the person into another room. good
> for pushing partners into posable death traps =:} )
ACMD(do_push)
{
struct char_data *vict;
static char arg2[MAX_INPUT_LENGTH];
int mydir;
half_chop(argument, arg, arg2);
if (!(vict = get_char_room_vis(ch, arg))) {
send_to_char("Push who?\r\n", ch);
return;
}
if (vict == ch) {
send_to_char("Just walk there, idiot.\r\n", ch);
return;
}
if ((mydir = search_block(arg2, dirs, FALSE)) >= 0) {
if (CAN_GO(vict, mydir))
if (number(1, 100) + GET_DEX(ch) > number(1, 100) + GET_DEX(vict)) {
act("You throw your weight against $N and push $M out of the room.", FALSE, ch, 0, vict, TO_CHAR);
act("$n throws $s weight against $N and pushes $M out of the room.", FALSE, ch, 0, vict, TO_NOTVICT);
act("$n throws $s weight against you and pushes you out of the room.", FALSE, ch, 0, vict, TO_VICT);
perform_move(vict, mydir, 1);
return;
} else {
act("$N skillfully sidesteps and you go flying to the ground!", FALSE, ch, 0, vict, TO_CHAR);
act("$n tries to push $N, but goes flying to the ground instead.", FALSE, ch, 0, vict, TO_ROOM);
act("You skillfully sidestep $n's push, and $e goes tumbling to the ground!", FALSE, ch, 0, vict, TO_VICT);
hit(vict, ch, TYPE_UNDEFINED);
}
}
send_to_char("Push them which way?\r\n", ch);
return;
}
/* End push */
Should be easilly modifiable to suit your needs...
>
> ALSO looking for:
>
> How to make it so when a PLAYER hands a MOB a item with the right
> VNUM the mob will respond accordingle...
#define MY_TARGET_OBJ 666 /* whatever... */
if (CMD_IS("give")) {
if (obj = get_obj_in_list_vis(ch, arg, ch->carrying))
if (GET_OBJ_VNUM(obj) == MY_TARGET_OBJ)
/* Check a second arg to make sure it was meant to be given to the mob
and not someone else, and add whatever you want 'im to do... */
> someone to come and get the stupid mobprog to work in my mud and add
> a mobprog editor to medit (oassis). (I am in no way able to do this
> myself.)
Hate mobprogs.. use specials... cleaner and quicker...
> someone explaining how to get the OBJ TIMERS working (yes alix I have
> the snippit =:} ) but I mean geting them working using the TIMER in
> oasis.
Erm, #define PULSE_OBJECT to something, and call a object_activity() just
like mobile_activity() is called... can be used for a lot more than timers.
Heres a stripped down version of my object_activity() ...
void object_activity(void)
{
struct obj_data *obj, *tobj, *next_thing;
int room;
for (obj = object_list; obj; obj = obj->next) {
/* Timers... */
if (GET_OBJ_TIMER(obj) > 0)
GET_OBJ_TIMER(obj) --;
/* Bio-Degradables */
if (IS_OBJ_STAT(obj, ITEM_BIO) && (!GET_OBJ_TIMER(obj))) {
act("$p decays into gritty debris and blows away.", 0, 0, obj, 0, TO_ROOM);
extract_obj(obj);
}
/* A little ambiance? heh... */
if (GET_OBJ_TYPE(obj) == ITEM_LIGHT && obj->worn_by && number(0, 1000) > 995 ) {
sprintf(buf, "%s's %s flickers briefly.\r\n", GET_SHORT(obj->worn_by), obj->short_description);
send_to_room(buf, obj->worn_by->in_room);
}
/* Sound affects ... */
if (IS_OBJ_STAT(obj, ITEM_SOUND) && obj->worn_by && number(0, 1000) > 975) {
sprintf(buf, "%s", obj->action_description);
send_to_room(buf, obj->worn_by->in_room);
}
/* Objects falling from air rooms etc... */
if (obj->in_room != NOWHERE && (
world[obj->in_room].sector_type == SECT_AIR ||
world[obj->in_room].sector_type == SECT_CLIMB ||
world[obj->in_room].sector_type == SECT_SHEER) &&
OBJ_EXIT(obj, DOWN) && OBJ_CAN_GO(obj, DOWN)) {
sprintf(buf, "%s plummets down.\r\n", obj->short_description);
send_to_room(buf, obj->in_room);
room = world[obj->in_room].dir_option[DOWN]->to_room;
obj_from_room(obj);
obj_to_room(obj, room);
sprintf(buf, "%s falls in from above.\r\n", obj->short_description);
send_to_room(buf, obj->in_room);
}
}
}
-Sky
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST