Spring Creation Spell [by Chuck Carson]
Snippet Posted Wednesday, August 12th @ 11:37:33 PM, by George Greer in the Skills dept.
Added Dec 4, 1996. Click the link below to read it or download it.

From: Chuck Carson (chuck@digmo.org)
Subject: create_spring spell for ranger types classes

Here is another skill, I have it imped as a spell for rangers
but could quite easily be a skill. It creates a spring from
which players can drink from.

You will need to create the object that will be the spring,
(this will be an object of type fountain) I used obj 10051
in the code here.

Add the appropriate segments to spells.h and spell_parser.c.
The spells is manual so you will need to add it to the two
places where MAG_MANUAL's are defined. I believe spells.h
and spell_parser.c.

You will need to add the following check into limits.c (so the
spring will be removed from the game based on the value you
set the timer to  in the spell itself)
I put this at the very end of point_update

----- Limts.c -----

 if (GET_OBJ_RNUM(j) == real_object(10051))
 {
      if (GET_OBJ_TIMER(j) > 0)
        GET_OBJ_TIMER(j)--;
      if (GET_OBJ_TIMER(j) == 1)
      {
 if ((j->in_room != NOWHERE) &&(world[j->in_room].people)) {
 act("$p starts to slow down.", FALSE, world[j->in_room].people, j, 0, TO_ROOM)
;
 act("$p starts to slow down.", FALSE, world[j->in_room].people, j, 0, TO_CHAR)
;
        }
      }
      if (GET_OBJ_TIMER(j) == 0)
      {
        if ((j->in_room != NOWHERE) &&(world[j->in_room].people)) {

  act("$p has stopped flowing!", FALSE, world[j->in_room].people, j, 0, TO_ROOM
);

  act("$p has stopped flowing!", FALSE, world[j->in_room].people, j, 0, TO_CHAR
);
        }
        extract_obj(j);
      }
    }
}

Here is the spell itself..
--------- spells.c ----------

ASPELL(spell_create_spring)
{
  struct obj_data *spring = '\0';
  int spring_num = 10051;
  *buf = '\0';

  if (GET_SKILL(ch, SPELL_CREATE_SPRING) == 0)
    {
    send_to_char("That spell is unfamiliar to you.\r\n", ch);
    return ;
    }

  if((SECT(ch->in_room) == SECT_INSIDE) || (SECT(ch->in_room) == SECT_CITY))
    {
    send_to_char("You cannot create a spring here!\r\n", ch);
    return ;
    }

  if((SECT(ch->in_room) == SECT_WATER_SWIM) || (SECT(ch->in_room) == SECT_WATER
_NOSWIM))
    {
    send_to_char("How can you create a spring in water?\r\n", ch);
    return;
    }

  if(SECT(ch->in_room) == SECT_UNDERWATER)
    {
    send_to_char("You cannot create a spring underwater!\r\n", ch);
    return;
    }

  if (ROOM_FLAGGED(ch->in_room, ROOM_NOMAGIC)) {
   send_to_char("An unforseen force prevents you from casting spells.\r\n", ch)
;
   return;
   }

  spring = read_object(spring_num, VIRTUAL);
  GET_OBJ_TIMER(spring) = 2; /* you may want to reflect exp or level on */
                            /* this value here, maybe 2 + GET_LEVEL(ch) */
  obj_to_room(spring, ch->in_room);
  sprintf(buf, "You have created a small spring!\r\n");
 /* You may want a message sent to the room as well */
  send_to_char(buf, ch);
  return;
}


Enjoy..

Chuck



<< Spell/Skill List [by Raven Jade Kenago] | Reply | View as text | Threaded | Stun Skill [by Ryan Stapleton] >>

 


Related Links
  download
Related Articles
More by greerga
 
 

CircleMUD Snippets
 
Note: Not all of these snippets will work perfectly with your version of code, so be prepared to fix one or two bugs that may arise, and please let me know what you needed to do to fix it. Sending a corrected version is always welcome.
Finally, if you wish to use any of the snippets from this page, you are more than welcome, just mention the authors in your credits. If you wish to release any of these snippets to the public on another site, contact me FIRST.