Beispiel #1
0
void cast_poison( byte level, struct char_data *ch, char *arg, int type,
  struct char_data *tar_ch, struct obj_data *tar_obj )
{
  switch (type) {
    case SPELL_TYPE_SPELL:
			spell_poison(level, ch, tar_ch, tar_obj);
			break;
    case SPELL_TYPE_POTION:
			spell_poison(level, ch, ch, 0);
			break;
    case SPELL_TYPE_STAFF:
         for (tar_ch = world[ch->in_room].people ; 
              tar_ch ; tar_ch = tar_ch->next_in_room)
            if (tar_ch != ch) 
                  spell_poison(level,ch,tar_ch,0);
         break;
    default : 
         log("Serious screw-up in poison!");
         break;
	}
}
Beispiel #2
0
bool spec_poison( CHAR_DATA * ch )
{
   CHAR_DATA *victim;

   if( ch->position != POS_FIGHTING || ( victim = who_fighting( ch ) ) == NULL || number_percent(  ) > 2 * ch->top_level )
      return FALSE;

   act( AT_HIT, "You bite $N!", ch, NULL, victim, TO_CHAR );
   act( AT_ACTION, "$n bites $N!", ch, NULL, victim, TO_NOTVICT );
   act( AT_POISON, "$n bites you!", ch, NULL, victim, TO_VICT );
   spell_poison( gsn_poison, ch->top_level, ch, victim );
   return TRUE;
}
Beispiel #3
0
bool spec_poison( CHAR_DATA *ch )
{
	CHAR_DATA *victim;

	if ( ch->position != POS_FIGHTING
	|| ( victim = ch->fighting ) == NULL
	||   number_percent( ) > 2 * ch->level )
	return FALSE;

	act( "You bite $N!",  ch, NULL, victim, TO_CHAR    );
	act( "$n bites $N!",  ch, NULL, victim, TO_NOTVICT );
	act( "$n bites you!", ch, NULL, victim, TO_VICT    );
	spell_poison( gsn_poison, ch->level, ch, victim,TARGET_CHAR);
	return TRUE;
}
Beispiel #4
0
int spell_ethereal_snake_bite(int sn, int level, CHAR_DATA *ch, void *vo )
{
    CHAR_DATA *victim = (CHAR_DATA *) vo;
    int        dam;

    if ( !saves_spell( level, victim ) )
    {
	dam = number_range( ch->level * 5, ch->level * 6 );
    }
    else
    {
	dam = number_range( ch->level * 7, ch->level * 9 );

	spell_poison( skill_lookup("poison"), ch->level, ch, victim );
    }

    damage( ch, victim, dam, sn );

    return SKPELL_NO_DAMAGE;
}
Beispiel #5
0
SPEC_RET spec_poison( CHAR_DATA *ch )
{
	CHAR_DATA *victim;

	if ( ch->position != POSITION_FIGHT
	  && ch->position != POSITION_EVASIVE
	  && ch->position != POSITION_DEFENSIVE
	  && ch->position != POSITION_AGGRESSIVE
	  && ch->position != POSITION_BERSERK )
	{
		return FALSE;
	}

	victim = who_fighting( ch );
	if ( !victim )								return FALSE;
	if ( number_percent() > get_level(ch)/2 )	return FALSE;

	act( AT_HIT,	"Mordi $N!",	ch, NULL, victim, TO_CHAR );
	act( AT_ACTION, "$n morde $N!", ch, NULL, victim, TO_NOVICT );
	act( AT_POISON, "$n ti morde!", ch, NULL, victim, TO_VICT );

	spell_poison( gsn_poison, get_level(ch)/2, ch, victim );
	return TRUE;
}