Skip to content

Commit

Permalink
Merge pull request #32337 from ZhilkinSerg/jsonize-mutation-modifiers
Browse files Browse the repository at this point in the history
Jsonize memory-related mutation modifiers
  • Loading branch information
kevingranade authored Jul 12, 2019
2 parents d0a24c3 + f176c89 commit 39d6972
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 19 deletions.
4 changes: 4 additions & 0 deletions data/json/mutations/mutations.json
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,8 @@
"name": "Good Memory",
"points": 3,
"description": "You have an exceptional memory, and find it easy to remember things. Your skills will erode slightly slower than usual, and you can remember more terrain.",
"map_memory_capacity_multiplier": 2,
"skill_rust_multiplier": 0.66,
"starting_trait": true,
"valid": false,
"cancels": [ "FORGETFUL" ]
Expand Down Expand Up @@ -1018,6 +1020,8 @@
"points": -3,
"description": "You have a hard time remembering things. Your skills will erode slightly faster than usual, and you can remember less terrain.",
"social_modifiers": { "lie": -5 },
"map_memory_capacity_multiplier": 0.5,
"skill_rust_multiplier": 1.33,
"starting_trait": true,
"category": [ "BEAST", "MEDICAL", "CHIMERA", "MOUSE", "INSECT" ],
"cancels": [ "GOODMEMORY" ]
Expand Down
13 changes: 4 additions & 9 deletions src/avatar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,6 @@ static const trait_id trait_CHITIN2( "CHITIN2" );
static const trait_id trait_CHITIN3( "CHITIN3" );
static const trait_id trait_CHITIN_FUR3( "CHITIN_FUR3" );
static const trait_id trait_COMPOUND_EYES( "COMPOUND_EYES" );
static const trait_id trait_FORGETFUL( "FORGETFUL" );
static const trait_id trait_GOODMEMORY( "GOODMEMORY" );
static const trait_id trait_HYPEROPIC( "HYPEROPIC" );
static const trait_id trait_INSECT_ARMS( "INSECT_ARMS" );
static const trait_id trait_INSECT_ARMS_OK( "INSECT_ARMS_OK" );
Expand Down Expand Up @@ -378,15 +376,12 @@ size_t avatar::max_memorized_tiles() const
// Only check traits once a turn since this is called a huge number of times.
if( current_map_memory_turn != calendar::turn ) {
current_map_memory_turn = calendar::turn;
float map_memory_capacity_multiplier =
mutation_value( "map_memory_capacity_multiplier" );
if( has_active_bionic( bio_memory ) ) {
current_map_memory_capacity = SEEX * SEEY * 20000; // 5000 overmap tiles
} else if( has_trait( trait_FORGETFUL ) ) {
current_map_memory_capacity = SEEX * SEEY * 200; // 50 overmap tiles
} else if( has_trait( trait_GOODMEMORY ) ) {
current_map_memory_capacity = SEEX * SEEY * 800; // 200 overmap tiles
} else {
current_map_memory_capacity = SEEX * SEEY * 400; // 100 overmap tiles
map_memory_capacity_multiplier = 50;
}
current_map_memory_capacity = 2 * SEEX * 2 * SEEY * 100 * map_memory_capacity_multiplier;
}
return current_map_memory_capacity;
}
Expand Down
4 changes: 3 additions & 1 deletion src/character.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3136,7 +3136,9 @@ mutation_value_map = {
{ "hearing_modifier", calc_mutation_value_multiplicative<&mutation_branch::hearing_modifier> },
{ "noise_modifier", calc_mutation_value_multiplicative<&mutation_branch::noise_modifier> },
{ "overmap_sight", calc_mutation_value_multiplicative<&mutation_branch::overmap_sight> },
{ "overmap_multiplier", calc_mutation_value_multiplicative<&mutation_branch::overmap_multiplier> }
{ "overmap_multiplier", calc_mutation_value_multiplicative<&mutation_branch::overmap_multiplier> },
{ "map_memory_capacity_multiplier", calc_mutation_value_multiplicative<&mutation_branch::map_memory_capacity_multiplier> },
{ "skill_rust_multiplier", calc_mutation_value_multiplicative<&mutation_branch::skill_rust_multiplier> }
};

float Character::mutation_value( const std::string &val ) const
Expand Down
6 changes: 6 additions & 0 deletions src/mutation.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,12 @@ struct mutation_branch {
// Multiplier for sight range, defaulting to 1.
float overmap_multiplier = 1.0f;

// Multiplier for map memory capacity, defaulting to 1.
float map_memory_capacity_multiplier = 1.0f;

// Multiplier for skill rust, defaulting to 1.
float skill_rust_multiplier = 1.0f;

// Bonus or penalty to social checks (additive). 50 adds 50% to success, -25 subtracts 25%
social_modifiers social_mods;

Expand Down
2 changes: 2 additions & 0 deletions src/mutation_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,8 @@ void mutation_branch::load( JsonObject &jo, const std::string & )
optional( jo, was_loaded, "stamina_regen_modifier", stamina_regen_modifier, 0.0f );
optional( jo, was_loaded, "overmap_sight", overmap_sight, 0.0f );
optional( jo, was_loaded, "overmap_multiplier", overmap_multiplier, 1.0f );
optional( jo, was_loaded, "map_memory_capacity_multiplier", map_memory_capacity_multiplier, 1.0f );
optional( jo, was_loaded, "skill_rust_multiplier", skill_rust_multiplier, 1.0f );

optional( jo, was_loaded, "mana_modifier", mana_modifier, 0 );
optional( jo, was_loaded, "mana_multiplier", mana_multiplier, 1.0f );
Expand Down
10 changes: 1 addition & 9 deletions src/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,12 +295,10 @@ static const trait_id trait_FASTREADER( "FASTREADER" );
static const trait_id trait_FAT( "FAT" );
static const trait_id trait_FELINE_FUR( "FELINE_FUR" );
static const trait_id trait_FLOWERS( "FLOWERS" );
static const trait_id trait_FORGETFUL( "FORGETFUL" );
static const trait_id trait_FRESHWATEROSMOSIS( "FRESHWATEROSMOSIS" );
static const trait_id trait_FUR( "FUR" );
static const trait_id trait_GILLS( "GILLS" );
static const trait_id trait_GILLS_CEPH( "GILLS_CEPH" );
static const trait_id trait_GOODMEMORY( "GOODMEMORY" );
static const trait_id trait_HATES_BOOKS( "HATES_BOOKS" );
static const trait_id trait_HEAVYSLEEPER( "HEAVYSLEEPER" );
static const trait_id trait_HEAVYSLEEPER2( "HEAVYSLEEPER2" );
Expand Down Expand Up @@ -2726,13 +2724,7 @@ int player::rust_rate( bool return_stat_effect ) const
int ret = ( ( get_option<std::string>( "SKILL_RUST" ) == "vanilla" ||
get_option<std::string>( "SKILL_RUST" ) == "capped" ) ? 500 : 500 - 35 * ( intel - 8 ) );

if( has_trait( trait_FORGETFUL ) ) {
ret *= 1.33;
}

if( has_trait( trait_GOODMEMORY ) ) {
ret *= .66;
}
ret *= mutation_value( "skill_rust_multiplier" );

if( ret < 0 ) {
ret = 0;
Expand Down

0 comments on commit 39d6972

Please sign in to comment.