Re: demon_summon spec_proc

From: Daniel Koepke (dkoepke@california.com)
Date: 01/15/97


On Wed, 15 Jan 1997 BuckFloyd@aol.com wrote:

>   if (cmd || GET_POS(ch) != POS_FIGHTING)
>     return FALSE;

The above makes it so that the code will only work when the mobile is
fighting...

>   if (number(0,100) > number(0, 100))
>   {
>     if ((number(0, 100) < 50) && (number(0, 100) > 85))
>     {

This is kind of weird, IMHO.  You're doing three checks to see if it
will work.  The first time we see if our first number 0-100 is above
another random number 0-100.  Then we see if another random number
0-100 is below 50, and again we check if yet another random number is
85.  The chances of all three of these conditions being met is very
slim.

>         mob_num = real_mobile(14040);
>         mob = read_mobile(mob_num, REAL);
>         cast_spell(ch, mob, NULL, SPELL_SUMMON);

Just put the mob in the room.  That's your intention, right?  Replace
with:

  char_to_room(mob, ch->in_room);
  act("$n summons $N to $m!", FALSE, ch, 0, mob, TO_NOTVICT);

Something like that.  BTW, in your case statements you don't need to
repeat the:

  mob = read_mobile(mob_num, REAL);
  char_to_room(mob, ch->in_room);
  act("$n summons $N to $m!", FALSE, ch, 0, mob, TO_NOTVICT);

You can just set mob_num in the case statements and have that code,
because it's general, just before the 'return TRUE;'.

Also, make sure you've given your mobile the spec proc and the spec_proc
flag.


--
Daniel Koepke
dkoepke@california.com
Forgive me father, for I am sin.


+-----------------------------------------------------------+
| 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