/* Original Code by Jason Huang (god@sure.net). */
/* Permission to use this code is granted provided this header is */
/* retained and unaltered. */
void spell_betray( int sn, int level, CHAR_DATA *ch, void *vo )
{
CHAR_DATA *victim = (CHAR_DATA *) vo;
AFFECT_DATA af;
if ( !ch->fighting )
{
send_to_char( "You may only cast betray during combat.", ch );
if ( victim == ch )
{
send_to_char( "Betray yourself? You're weird.\n\r", ch );
return;
}
if ( IS_AFFECTED( victim, AFF_CHARM )
|| IS_AFFECTED( ch, AFF_CHARM )
|| level < victim->level
|| saves_spell( level, victim ) )
return;
if ( victim->fighting == ch )
stop_fighting( victim, TRUE );
if ( victim->master )
stop_follower( victim );
add_follower( victim, ch );
af.type = sn;
af.duration = number_fuzzy( level / 4 );
af.location = APPLY_NONE;
af.modifier = 0;
af.bitvector = AFF_CHARM;
affect_to_char( victim, &af );
act( "$N has betrayed!", ch, NULL, victim, TO_CHAR );
act( "You now follow $n!", ch, NULL, victim, TO_VICT );
return;
}