Re: for trade

From: Skylar (skylar@ifconfig.intserv.com)
Date: 10/25/96


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