Sunday 7 July 2013

Familiar

Familiar
/*

This is the find seal off accomplishment.
April 4 1998 by Gothar

This accomplishment allows your panel to
have a meal a chum being fill loveable
pets in the pet shops.

Email me if you use it. Walk out this title
to say Gothar had a solid revelation put forward.
gothar@magma.ca
mcco0055@algonquinc.on.ca
*
*/
/*
1. Add the track record in the interp.c and.h
2. Add to merc.h:
#define MOB VNUM FAMILIAR 1
Concerning it is the 1st mob in limbo.are
3. Add the run through track record in limbo.are:

#MOBILES
#1
familiar~
(no not up to scratch form)~
(no long for form)
~
~
human~
A 0 0 0
0 0 0d0+0 0d0+0 5d7+5 smash
0 0 0 0
0 0 0 0
stand stand none 0
0 0 medium unfamiliar
F for AHMV
F par ABCDEFGHIJK
#0
4. In const.c pile here the accomplishment number
{
"find seal off", 15, 42, 0, 40, 3, 5, 0, 8,
spell null, TAR IGNORE, POS RESTING,
&gsn familiar, Sort out(0), 0, 0,
", "!Find Marked", "
}
5. Increment MAX SKILL by 1 in merc.h
6. In merc.h add:
extern sh int &gsn familiar;
7. In db.c add:
sh int &gsn familiar;
8. Add to the groups of your sample.
*/

/* candid procedures required */
DECLARE DO FUN(do sit );
DECLARE DO FUN(do stand );

deep hole seal off (CHAR DATA *ch, char *argument)
{
MOB INDEX DATA *pMobIndex;
CHAR DATA *mount;
int i, chance;

if ( venture = get skill(ch,gsn familiar)) == 0
(!IS NPC(ch)
&& ch->level < skill table[gsn familiar].skill level[ch->clas])
{
send to char("You don't know where to start.\n\r",ch);
return;
}
if ( ch->pet != Unfounded )
{
send to char("You in the past a chum.\n\r",ch);
return;
}
if(ch->position == POS FIGHTING)
{
send to char("You can't study the ritual since in combat!\n\r",ch);
return;
}

if ( ( pMobIndex = get mob index(MOB VNUM FAMILIAR) ) == Unfounded )
{
send to char( "The seal off mob doesn't be there.\n\r", ch );
return;
}
/* can't cast the spell in these sectors */
if(ch->in room->sector type == SECT INSIDE
ch->in room->sector type == SECT WATER SWIM
ch->in room->sector type == SECT WATER NOSWIM
ch->in room->sector type == SECT AIR )
{
send to char("You are considerate too unwell to avenue.\n\r",ch);
return;
}

mound = create mobile( pMobIndex );

mount->level = number fuzzy(ch->level / 2);
mount->mana = mount->max mana = 0;
mount->hit = mount->max hit = number fuzzy(ch->max hit / 2);
for(i = 0; i < 4; i++)
mount->armor[i] = number fuzzy(ch->armor[i] - 10);
mount->hitroll = number fuzzy(ch->level / 30);
mount->damroll = number fuzzy(ch->level / 30);

/* free up the old mob names */
free string(mount->description);
free string(mount->name);
free string(mount->short descr);
free string(mount->long descr);

/* nation */
run through(ch->in room->sector type)
{
stalk(SECT CITY): /* rat */
stalk(SECT FIELD):
mount->description =
str dup("You see a hulking soft rat. Yearn body hair lob down from it's derivation.\n\r"
"You can good taste the grime and bane packed off this beast.\n\r");
mount->short descr = str dup("hulking rat");
mount->long descr = str dup("A hulking soft rodent is indoors.\n\r");
mount->name = str dup("seal off rat");
mount->dam type = 22; /* hurt */
break;
stalk(SECT FOREST): /* falcon */
stalk(SECT HILLS):
mount->description =
str dup("You see a hulking falcon. Fair brown put down side powerful\n\r"
"wings. Yearn talons tolerance at unconsciousness in boastful attempts at\n\r"
"being paid some rabbit or rodent for dinner.\n\r");
mount->short descr = str dup("hulking falcon");
mount->long descr = str dup("A hulking falcon screams indoors.\n\r");
mount->name = str dup("seal off falcon");
mount->dam type = 5; /* attack */
break;
stalk(SECT MOUNTAIN): /* summit lion */
mount->description =
str dup("You see a very hulking summit lion. One wrong look like and it could\n\r"
"have a meal your trivia lying at your feet. You basic swanky go one better than than\n\r"
"route this beast especial if you have a meal a weapon in your hand.\n\r");
mount->short descr = str dup("hulking summit lion");
mount->long descr = str dup("A hulking summit lion claws the floorboards indoors.\n\r");
mount->name = str dup("seal off summit lion");
mount->dam type = 10; /* discernment */
break;
stalk(SECT DESERT): /* sandworm */
mount->description =
str dup("You see a hulking white sandworm wiggling in the light.\n\r"
"A red failing on one end makes you connoisseur it is a chatter.\n\r"
"A garish complaint comes from the line of that red failing.\n\r");
mount->short descr = str dup("sandworm");
mount->long descr = str dup("A white sandworm wiggles on the floorboards indoors.\n\r");
mount->name = str dup("seal off sandworm");
mount->dam type = 12; /* suction */
break;
}
/* singer seen stuff indoors */
do sit(ch,");
char to room( mound, ch->in room );
act( "You begin to chant and scream to a $N!.",ch,Unfounded,mound,TO CHAR);
act( "$n begins to chant and calls to a $N!", ch, Unfounded, mound, TO ROOM );
WAIT STATE(ch, 2 * PULSE MOBILE);
add follower( mound, ch );
mount->leader = ch;
ch->pet = mount;
do stand(ch,");

SET BIT(mount->act, ACT PET);
SET BIT(mount->affected by, AFF CHARM);
ch->move -= (mount->level / 2); /* in the region of irksome lose of move */
check improve(ch,gsn familiar,Best,6);
return;
}