|
Spring Creation Spell [by Chuck Carson] |
|
|
|
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 |
|
|
|
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.
|
|
|
|
|
|
|