SPECIAL(sea_serpent)
{
struct char_data *vict;
if (cmd)
return FALSE;
if (GET_POS(ch) != POSITION_FIGHTING)
return FALSE;
if (!ch->specials.fighting)
return FALSE;
vict=ch->specials.fighting;
if (!vict)
return FALSE;
if ((GET_LEVEL(ch)<10) && (number(0,100)==10))
{
act("$n utters the words, 'hisssssss'.",1, ch, 0, 0, TO_ROOM);
cast_fireball(15, ch, "", SPELL_TYPE_SPELL, vict, 0);
}
else if (number(0,100)<=15)
{
act("$n utters the words, 'hissssss'.",1, ch, 0,0, TO_ROOM);
cast_fireball(GET_LEVEL(ch), ch, "", SPELL_TYPE_SPELL, vict, 0);
}
return(TRUE);
}
SPECIAL(Leviathan)
{
struct char_data *vict;
if (cmd)
return FALSE;
if (GET_POS(ch) != POSITION_FIGHTING)
return FALSE;
if (!ch->specials.fighting)
return FALSE;
vict=ch->specials.fighting;
if (!vict)
return FALSE;
switch(number(0,20))
{
case 1:
act("$n utters the words, 'transvecta aqua'.",1,ch,0,0,TO_ROOM);
cast_tidal_wave(30, ch, "", SPELL_TYPE_SPELL, vict, 0);
break;
case 6:
act("$n looks at you with the deepest sorrow.",1,ch,0,0,TO_ROOM);
break;
case 12:
act("$n utters the words, 'transvecta talon'.", 1,ch,0,0,TO_ROOM);
cast_cure_critic(30, ch, "", SPELL_TYPE_SPELL, ch, 0);
break;
default:
break;
}
return(TRUE);
}
SPECIAL(master)
{
char buf[MAX_STRING_LENGTH];
ACMD(do_order);
if (cmd || !AWAKE(ch)) return(FALSE);
switch(number(0,8))
{
case 0:
case 1:
case 2:
if (GET_POS(ch)!=POSITION_FIGHTING)
{
act("The master looks at his minions and growls, 'get to work, bitches!'", FALSE,ch, 0, 0, TO_ROOM);
sprintf(buf, "followers bow master");
do_order(ch, buf,0,0);
return(TRUE);
break;}
case 3:
case 4:
case 5:
case 6:
if (GET_POS(ch)==POSITION_FIGHTING)
{
act("The master screams loudly, 'HELP ME, MY SLAVES!'", FALSE, ch, 0, 0, TO_ROOM);
sprintf(buf, "followers kill %s",GET_NAME(ch->specials.fighting));
do_order(ch, buf, 0, 0);
return(TRUE);
}
break;
default: return(FALSE);
break;
}
return(TRUE);
}
SPECIAL(slave)
{
struct char_data *master;
char buf[MAX_STRING_LENGTH];
if (!AWAKE(ch)) return FALSE;
sprintf(buf, "a fat harem master");
if ((!cmd) && ((master = find_npc_by_name(ch, buf, 18))))
{
if (ch->master!=master)
{
if(ch->master)
stop_follower(ch);
add_follower(ch, master);
SET_BIT(ch->specials.affected_by, AFF_CHARM);
IS_CARRYING_W(ch) = 1000;
IS_CARRYING_N(ch) = 100;
return TRUE;
}
}
return(FALSE);
}
SPECIAL(Priest_of_Fear)
{
struct char_data *vict;
if (cmd)
return(FALSE);
if (GET_POS(ch) != POSITION_FIGHTING)
return(FALSE);
if (!ch->specials.fighting)
return(FALSE);
vict=ch->specials.fighting;
if (!vict)
return(FALSE);
if (number(0,100)<35)
{
act("$n utters the words, 'pabrow'.",1, ch, 0, 0, TO_ROOM);
cast_fear(GET_LEVEL(ch), ch, "", SPELL_TYPE_SPELL, vict, 0);
}
return(TRUE);
}
SPECIAL(Butcher)
{
if (cmd) return(FALSE);
if (GET_POS(ch)==POSITION_FIGHTING) return(FALSE);
if (ch->specials.fighting) return(FALSE);
if (number(0,100)<20)
act("$n begins sharpening $s knife.",1,ch,0,0,TO_ROOM);
return(TRUE);
}
SPECIAL(tarbaby)
{
struct char_data *vict, *temp;
if (cmd!=224) return(FALSE);
for (vict=character_list;vict;vict=temp)
{
temp = vict->next;
if (ch->in_room == vict->in_room)
{
if (!IS_NPC(vict) && (vict!=ch))
{
if (ch->master!=vict)
{
if(ch->master)
stop_follower(ch);
add_follower(ch, vict);
IS_CARRYING_W(ch) = 100;
IS_CARRYING_N(ch) = 10;
return(TRUE);
}
}
}
}
if (!vict) return(FALSE);
if (cmd==224)
{
send_to_char("Ho ho, hee hee, you are sooo funneeee!\n\r",ch);
return(TRUE);
}
else if (number(0,100)<20)
{
act("$n looks at you with the cutest expression.",FALSE,ch,0,vict,TO_CHAR);
act("$n looks at $N with the cutest expression.",FALSE,ch,0,vict, TO_ROOM);
return(TRUE);
}
return(FALSE);
}
SPECIAL(Grand_Inquisitor)
{
struct char_data *vict;
if (cmd)
return(FALSE);
if (GET_POS(ch) != POSITION_FIGHTING)
return(FALSE);
if (!ch->specials.fighting)
return(FALSE);
vict=ch->specials.fighting;
if (!vict)
return(FALSE);
if (number(0,100)<15)
{
act("$n utters the words, 'ordalaba'.",1, ch, 0, 0, TO_ROOM);
cast_energy_drain(GET_LEVEL(ch), ch, "", SPELL_TYPE_SPELL, vict, 0);
return(TRUE);
}
else if(number(0,100)<30)
{ act("$n evilly grins and snaps his hands.",1,ch,0,0,TO_ROOM);
cast_animate_dead(GET_LEVEL(ch),ch,"",SPELL_TYPE_SPELL,vict,0);
return(TRUE);
}
return(TRUE);
}
SPECIAL(High_Priest_of_Terror)
{
struct char_data *vict;
struct char_data *newvict,*temp;
if (cmd)
return(FALSE);
if (GET_POS(ch) != POSITION_FIGHTING)
return(FALSE);
if (!ch->specials.fighting)
return(FALSE);
vict=ch->specials.fighting;
if (!vict)
return(FALSE);
if (number(0,100)<10)
{
act("$n utters the words, 'ordalaba'.",1, ch, 0, 0, TO_ROOM);
cast_charm_person(GET_LEVEL(ch), ch, "", SPELL_TYPE_SPELL, vict, 0);
return(TRUE);
for (newvict=character_list;newvict;newvict=temp)
{
temp = newvict->next;
if (ch->in_room == newvict->in_room)
{
if (!IS_NPC(newvict))
{
if (!IS_SET(newvict->specials.affected_by, AFF_CHARM))
{
ch->specials.fighting=newvict;
newvict->specials.fighting=ch;
}
}
}
}
}
else if(number(0,100)<30)
{
act("$n waves $s hands in a swirling motion.",1,ch,0,0,TO_ROOM);
cast_earthquake(GET_LEVEL(ch),ch,"",SPELL_TYPE_SPELL,vict,0);
return(TRUE);
}
return(TRUE);
}