Scout perk, Binocs, Telescopic Eyes CBM, etc?

Do these three things stack in any way, or would you get the exact same overmap view distance with all three as just one? Does Perception effect view distance as well for revealing the overmap? thx :slight_smile:

I don’t think that they stack. AS for the second question I have no idea. :frowning:

What Walegrin said, exactly, both parts.

Did some moderately quick and dirty testing, interesting results. Normal overmap range on fields seems to be 5 overmap tiles. Not really much further than the player can see really but eh. Equipping binoculars, having the scout mutation or having the telescopic eyes bionic increases that range to 10 overmap tiles, which is a pretty impressive bonus for how little it costs. The scout mutation and telescopic eyes or binoculars increases the range to 12 tiles, but binoculars and telescopic eyes seems to have no effect, which makes sense.

Perception doesn’t seem to have any effect, since the default range is 5 tiles with 5 perception or 50.

1 Like
int player::overmap_sight_range( int light_level ) const
{
    int sight = sight_range( light_level );
    if( sight < SEEX ) {
        return 0;
    }
    if( sight <= SEEX * 4 ) {
        return ( sight / ( SEEX / 2 ) );
    }
    sight = has_trait( trait_BIRD_EYE ) ? 15 : 10;
    bool has_optic = ( has_item_with_flag( "ZOOM" ) || has_bionic( bio_eye_optic ) );
    if( has_optic && has_trait( trait_EAGLEEYED ) ) {
        sight += 15;
    } else if( has_optic != has_trait( trait_EAGLEEYED ) ) {
        sight += 10;
    }
    return sight;
}

as of 2021-06-25 in Cataclysm-DDA/src/character.cpp

For those who don’t read code they do stack now:

  • Absolute minimum sight range is 3
  • Perception has a strong effect (base is 6 tiles + 1/2 perception before any other modifiers)
  • Height adds 2 tiles per level
  • Mutations (additive) get added in

This then gets multiplied by Mutations (multiplicative) and an additional +100% if you have Zoom (binoculars or equivalent)

Scout is a +5 mutation (equivalent to +10 perception for this purpose), while Topographagnosia is a -10 mutation
There doesn’t appear to be any Mutation (multiplicative) currently, it seems to just be a placeholder

— So at ground level with a vanilla character (8 perception, no mutations) you’d expect to see 10 overmap tiles

— And on top of a 4 story radio tower with scout, binocs, and 12 perception you’d expect to see 46 overmap tiles distance

int Character::overmap_sight_range( int light_level ) const
{
    int sight = sight_range( light_level );
    if( sight < SEEX ) {
        return 0;
    }
    if( sight <= SEEX * 4 ) {
        return ( sight / ( SEEX / 2 ) );
    }

    sight = 6;
    // The higher your perception, the farther you can see.
    sight += static_cast<int>( get_per() / 2 );
    // The higher up you are, the farther you can see.
    sight += std::max( 0, posz() ) * 2;
    // Mutations like Scout and Topographagnosia affect how far you can see.
    sight += mutation_value( "overmap_sight" );

    float multiplier = mutation_value( "overmap_multiplier" );
    // Binoculars double your sight range.
    const bool has_optic = ( has_item_with_flag( flag_ZOOM ) || has_flag( json_flag_ENHANCED_VISION ) ||
                             ( is_mounted() &&
                               mounted_creature->has_flag( MF_MECH_RECON_VISION ) ) );
    if( has_optic ) {
        multiplier += 1;
    }

    sight = std::round( sight * multiplier );
    return std::max( sight, 3 );
}
3 Likes