/* 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; }