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); }