示例#1
0
static void
attack_good() 
{
    object ply;
    if (!objectp(ply = this_player()) || 
        ply->query_invis() || 
        is_evil(ply)) 
    {
        return;
    }
    do_attack(ply);
}
示例#2
0
void Character::spell_enchant_weapon (int sn, int lvl, void *vo)
{
  Object *obj = (Object *) vo;
  Affect *paf;

  if (obj->item_type != ITEM_WEAPON || obj->is_obj_stat(ITEM_MAGIC)
    || !obj->affected.empty())
    return;

  paf = new Affect();

  paf->type = sn;
  paf->duration = -1;
  paf->location = APPLY_HITROLL;
  paf->modifier = lvl / 5;
  paf->bitvector = 0;
  obj->affected.push_back(paf);

  paf = new Affect();

  paf->type = -1;
  paf->duration = -1;
  paf->location = APPLY_DAMROLL;
  paf->modifier = lvl / 10;
  paf->bitvector = 0;
  obj->affected.push_back(paf);
  obj->level = number_fuzzy (level - 5);

  if (is_good ()) {
    SET_BIT (obj->extra_flags, ITEM_ANTI_EVIL);
    act ("$p glows blue.", obj, NULL, TO_CHAR);
  } else if (is_evil ()) {
    SET_BIT (obj->extra_flags, ITEM_ANTI_GOOD);
    act ("$p glows red.", obj, NULL, TO_CHAR);
  } else {
    SET_BIT (obj->extra_flags, ITEM_ANTI_EVIL);
    SET_BIT (obj->extra_flags, ITEM_ANTI_GOOD);
    act ("$p glows yellow.", obj, NULL, TO_CHAR);
  }

  send_to_char ("Ok.\r\n");
  return;
}
示例#3
0
bool is_aggressive( char_data* ch, char_data* victim )
{
  char_data* opponent;

  if( ch == victim || ch->position <= POS_SLEEPING )
    return FALSE;

  if( ( opponent = victim->fighting ) != NULL )
    if( join_fight( opponent, victim, ch ) )
      return TRUE;

  if(  ch->pcdata != NULL
    || is_set( &victim->in_room->room_flags, RFLAG_SAFE )
    || !victim->Seen( ch ) )
    return FALSE;

  if( ch->shdata->race == RACE_PLANT
    && is_set( victim->affected_by, AFF_PROT_PLANTS ) )
    return FALSE;

  if( is_evil( victim ) )
    if( is_set( &ch->status, STAT_AGGR_EVIL )
      && is_set( ch->affected_by, AFF_DETECT_EVIL ) ) 
      return TRUE;
  else if( is_good( victim ) )
    if( is_set( &ch->status, STAT_AGGR_GOOD )
      && is_set( ch->affected_by, AFF_DETECT_GOOD ) ) 
      return TRUE;

  if( is_set( &ch->status, STAT_PET ) )
    return FALSE;

  if( victim->species == NULL ) {
    if( victim->shdata->level >= LEVEL_BUILDER )
      return FALSE;
    if( is_set( &ch->status, STAT_AGGR_ALL )
      || is_enemy( ch, victim ) )
      return TRUE;
    }

  return FALSE;
}
示例#4
0
static int
modify_damage(int dmg, string type, object foe, string loc, 
              int prot, int resist, int vuln, int ac, object wpn) 
{
    object env;
    if (!objectp(env = environment())) {
        return 0;
    }
    if (lower_case(type) == "fire") {
        tell_room(env, "The demon does not seem to be affected by the fire.\n");
        heal_self(dmg / 2);
        return -dmg;
    }
    if (is_evil(wpn)) {
        return -dmg / 2;
    }
    if (dmg > 30) {
        command("scream ago");
    }
    if (resist < -10) {
        command("cackle");
    }
    if (prot < -20) {
        command("hydr ehv");
    }
    if (dmg < 10 && random(100) > 25) {
        return 0;
    }
    if (is_good(wpn)) {
        tell_object(foe, "Your " + wpn->query_name() + " rips straight " +
                    "through the demon's skin!\n");
        return 2 * dmg;
    } 
    if (is_good(foe)) {
        tell_object(foe, "You rip straight through the demon's skin.\n");
        return dmg;
    }
    return 0;
}
示例#5
0
void Character::spell_dispel_evil (int sn, int lvl, void *vo)
{
  Character *victim = (Character *) vo;

  if (!is_npc () && is_evil ())
    victim = this;

  if (victim->is_good ()) {
    act ("God protects $N.", NULL, victim, TO_ROOM);
    return;
  }

  if (victim->is_neutral ()) {
    act ("$N does not seem to be affected.", NULL, victim, TO_CHAR);
    return;
  }

  int dam = dice (lvl, 4);
  if (victim->saves_spell (lvl))
    dam /= 2;
  damage (this, victim, dam, sn);
  return;
}
示例#6
0
int print_properties_num(longnum num)
{
	printf("%llu:\nprime factors: ", num);
	print_prime_factors(num);
	printf("\n");

	if ( is_abundant(num) ) printf(" abundant");
	if ( is_amicable(num) ) printf(" amicable");
	if ( is_apocalyptic_power(num) ) printf(" apocalyptic_power");
	if ( is_aspiring(num) ) printf(" aspiring");
	if ( is_automorphic(num) ) printf(" automorphic");
	if ( is_cake(num) ) printf(" cake");
	if ( is_carmichael(num) ) printf(" carmichael");
	if ( is_catalan(num) ) printf(" catalan");
	if ( is_composite(num) ) printf(" composite");
	if ( is_compositorial(num) ) printf(" compositorial");
	if ( is_cube(num) ) printf(" cube");
	if ( is_deficient(num) ) printf(" deficient");
	if ( is_easy_to_remember(num) ) printf(" easy_to_remember");
	if ( is_ecci1(num) ) printf(" ecci1");
	if ( is_ecci2(num) ) printf(" ecci2");
	if ( is_even(num) ) printf(" even");
	if ( is_evil(num) ) printf(" evil");
	if ( is_factorial(num) ) printf(" factorial");
	if ( is_fermat(num) ) printf(" fermat");
	if ( is_fibonacci(num) ) printf(" fibonacci");
	if ( is_google(num) ) printf(" google");
	if ( is_happy(num) ) printf(" happy");
	if ( is_hungry(num) ) printf(" hungry");
	if ( is_hypotenuse(num) ) printf(" hypotenuse");
	if ( is_lazy_caterer(num) ) printf(" lazy_caterer");
	if ( is_lucky(num) ) printf(" lucky");
	if ( is_mersenne_prime(num) ) printf(" mersenne_prime");
	if ( is_mersenne(num) ) printf(" mersenne");
	if ( is_narcissistic(num) ) printf(" narcissistic");
	if ( is_odd(num) ) printf(" odd");
	if ( is_odious(num) ) printf(" odious");
	if ( is_palindrome(num) ) printf(" palindrome");
	if ( is_palindromic_prime(num) ) printf(" palindromic_prime");
	if ( is_parasite(num) ) printf(" parasite");
	if ( is_pentagonal(num) ) printf(" pentagonal");
	if ( is_perfect(num) ) printf(" perfect");
	if ( is_persistent(num) ) printf(" persistent");
	if ( is_power_of_2(num) ) printf(" power_of_2");
	if ( is_powerful(num) ) printf(" powerful");
	if ( is_practical(num) ) printf(" practical");
	if ( is_prime(num) ) printf(" prime");
	if ( is_primorial(num) ) printf(" primorial");
	if ( is_product_perfect(num) ) printf(" product_perfect");
	if ( is_pronic(num) ) printf(" pronic");
	if ( is_repdigit(num) ) printf(" repdigit");
	if ( is_repunit(num) ) printf(" repunit");
	if ( is_smith(num) ) printf(" smith");
	if ( is_sociable(num) ) printf(" sociable");
	if ( is_square_free(num) ) printf(" square_free");
	if ( is_square(num) ) printf(" square");
	if ( is_tetrahedral(num) ) printf(" tetrahedral");
	if ( is_triangular(num) ) printf(" triangular");
	if ( is_twin(num) ) printf(" twin");
	if ( is_ulam(num) ) printf(" ulam");
	if ( is_undulating(num) ) printf(" undulating");
	if ( is_untouchable(num) ) printf(" untouchable");
	if ( is_vampire(num) ) printf(" vampire");
	if ( is_weird(num) ) printf(" weird");

	printf("\n\n");
	return 0;
}