From b3ef2a49124b8d7233111ed3202eb88060681676 Mon Sep 17 00:00:00 2001 From: ZhilkinSerg Date: Fri, 12 Jul 2019 18:12:05 +0300 Subject: [PATCH 1/2] Jsonized map memory capacity multiplier --- data/json/mutations/mutations.json | 2 ++ src/avatar.cpp | 13 ++++--------- src/character.cpp | 3 ++- src/mutation.h | 3 +++ src/mutation_data.cpp | 1 + 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/data/json/mutations/mutations.json b/data/json/mutations/mutations.json index 275a34dac7bfd..dfec80a1be506 100644 --- a/data/json/mutations/mutations.json +++ b/data/json/mutations/mutations.json @@ -328,6 +328,7 @@ "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, "starting_trait": true, "valid": false, "cancels": [ "FORGETFUL" ] @@ -1018,6 +1019,7 @@ "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, "starting_trait": true, "category": [ "BEAST", "MEDICAL", "CHIMERA", "MOUSE", "INSECT" ], "cancels": [ "GOODMEMORY" ] diff --git a/src/avatar.cpp b/src/avatar.cpp index f2c870d7e9c31..cde4bc302dfab 100644 --- a/src/avatar.cpp +++ b/src/avatar.cpp @@ -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" ); @@ -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; } diff --git a/src/character.cpp b/src/character.cpp index fdd3d79702695..0f28a59b1ecdd 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -3136,7 +3136,8 @@ 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> }, }; float Character::mutation_value( const std::string &val ) const diff --git a/src/mutation.h b/src/mutation.h index 831b5d19fc8cf..352e866a9a40f 100644 --- a/src/mutation.h +++ b/src/mutation.h @@ -158,6 +158,9 @@ 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; + // Bonus or penalty to social checks (additive). 50 adds 50% to success, -25 subtracts 25% social_modifiers social_mods; diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index 6f9c98b64db39..2a24ec84d947c 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -350,6 +350,7 @@ 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, "mana_modifier", mana_modifier, 0 ); optional( jo, was_loaded, "mana_multiplier", mana_multiplier, 1.0f ); From f176c89de7f79cb2ab5ccf7064ce03d9c43fd51e Mon Sep 17 00:00:00 2001 From: ZhilkinSerg Date: Fri, 12 Jul 2019 18:12:34 +0300 Subject: [PATCH 2/2] Jsonized skill rust multiplier --- data/json/mutations/mutations.json | 2 ++ src/character.cpp | 1 + src/mutation.h | 3 +++ src/mutation_data.cpp | 1 + src/player.cpp | 10 +--------- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/data/json/mutations/mutations.json b/data/json/mutations/mutations.json index dfec80a1be506..84e6b3c3365a9 100644 --- a/data/json/mutations/mutations.json +++ b/data/json/mutations/mutations.json @@ -329,6 +329,7 @@ "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" ] @@ -1020,6 +1021,7 @@ "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" ] diff --git a/src/character.cpp b/src/character.cpp index 0f28a59b1ecdd..33ebdfc3cd897 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -3138,6 +3138,7 @@ mutation_value_map = { { "overmap_sight", calc_mutation_value_multiplicative<&mutation_branch::overmap_sight> }, { "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 diff --git a/src/mutation.h b/src/mutation.h index 352e866a9a40f..2bdb829acaa4c 100644 --- a/src/mutation.h +++ b/src/mutation.h @@ -161,6 +161,9 @@ struct mutation_branch { // 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; diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index 2a24ec84d947c..c87b320fda3db 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -351,6 +351,7 @@ void mutation_branch::load( JsonObject &jo, const std::string & ) 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 ); diff --git a/src/player.cpp b/src/player.cpp index e5779cee5bc93..d92ed5d07bb60 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -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" ); @@ -2726,13 +2724,7 @@ int player::rust_rate( bool return_stat_effect ) const int ret = ( ( get_option( "SKILL_RUST" ) == "vanilla" || get_option( "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;