material_type::material_type() : id( material_id::NULL_ID() ), _bash_dmg_verb( translate_marker( "damages" ) ), _cut_dmg_verb( translate_marker( "damages" ) ) { _dmg_adj = { translate_marker( "lightly damaged" ), translate_marker( "damaged" ), translate_marker( "very damaged" ), translate_marker( "thoroughly damaged" ) }; }
const std::vector<std::pair<std::string, std::string> > &get_mod_list_tabs() { static const std::vector<std::pair<std::string, std::string> > mod_list_tabs = { {"tab_default", translate_marker("Default")}, {"tab_blacklist", translate_marker("Blacklist")}, {"tab_balance", translate_marker("Balance")} }; return mod_list_tabs; }
const std::string calendar::name_season( season_type s ) { static const std::array<std::string, 5> season_names_untranslated = {{ std::string( translate_marker( "Spring" ) ), std::string( translate_marker( "Summer" ) ), std::string( translate_marker( "Autumn" ) ), std::string( translate_marker( "Winter" ) ), std::string( translate_marker( "End times" ) ) }}; if( s >= SPRING && s <= WINTER ) { return _( season_names_untranslated[ s ].c_str() ); } return _( season_names_untranslated[ 4 ].c_str() ); }
std::string calendar::day_of_week() const { /* Design rationale: * <kevingranade> here's a question * <kevingranade> what day of the week is day 0? * <wito> Sunday * <GlyphGryph> Why does it matter? * <GlyphGryph> For like where people are and stuff? * <wito> 7 is also Sunday * <kevingranade> NOAA weather forecasts include day of week * <GlyphGryph> Also by day0 do you mean the day people start day 0 * <GlyphGryph> Or actual day 0 * <kevingranade> good point, turn 0 * <GlyphGryph> So day 5 * <wito> Oh, I thought we were talking about week day numbering in general. * <wito> Day 5 is a thursday, I think. * <wito> Nah, Day 5 feels like a thursday. :P * <wito> Which would put the apocalpyse on a saturday? * <Starfyre> must be a thursday. I was never able to get the hang of those. * <ZChris13> wito: seems about right to me * <wito> kevingranade: add four for thursday. ;) * <kevingranade> sounds like consensus to me * <kevingranade> Thursday it is */ static const std::array<std::string, 7> weekday_names = {{ translate_marker( "Sunday" ), translate_marker( "Monday" ) translate_marker( "Tuesday" ), translate_marker( "Wednesday" ) translate_marker( "Thursday" ), translate_marker( "Friday" ) translate_marker( "Saturday" ) }}; // calendar::day gets mangled by season transitions, so recalculate days since start. static const int start_day = 4; // Thursday is the start day const int current_day = ( turn_number / DAYS(1) + start_day ) % 7; return _( weekday_names[ current_day ].c_str() ); }
void mutation_category_trait::load( JsonObject &jsobj ) { mutation_category_trait new_category; new_category.id = jsobj.get_string( "id" ); new_category.raw_name = jsobj.get_string( "name" ); new_category.threshold_mut = trait_id( jsobj.get_string( "threshold_mut" ) ); new_category.raw_mutagen_message = jsobj.get_string( "mutagen_message" ); new_category.mutagen_hunger = jsobj.get_int( "mutagen_hunger", 10 ); new_category.mutagen_thirst = jsobj.get_int( "mutagen_thirst", 10 ); new_category.mutagen_pain = jsobj.get_int( "mutagen_pain", 2 ); new_category.mutagen_fatigue = jsobj.get_int( "mutagen_fatigue", 5 ); new_category.mutagen_morale = jsobj.get_int( "mutagen_morale", 0 ); new_category.raw_iv_message = jsobj.get_string( "iv_message" ); new_category.iv_min_mutations = jsobj.get_int( "iv_min_mutations", 1 ); new_category.iv_additional_mutations = jsobj.get_int( "iv_additional_mutations", 2 ); new_category.iv_additional_mutations_chance = jsobj.get_int( "iv_additional_mutations_chance", 3 ); new_category.iv_hunger = jsobj.get_int( "iv_hunger", 10 ); new_category.iv_thirst = jsobj.get_int( "iv_thirst", 10 ); new_category.iv_pain = jsobj.get_int( "iv_pain", 2 ); new_category.iv_fatigue = jsobj.get_int( "iv_fatigue", 5 ); new_category.iv_morale = jsobj.get_int( "iv_morale", 0 ); new_category.iv_morale_max = jsobj.get_int( "iv_morale_max", 0 ); new_category.iv_sound = jsobj.get_bool( "iv_sound", false ); new_category.raw_iv_sound_message = jsobj.get_string( "iv_sound_message", translate_marker( "You inject yoursel-arRGH!" ) ); new_category.raw_iv_sound_id = jsobj.get_string( "iv_sound_id", "shout" ); new_category.raw_iv_sound_variant = jsobj.get_string( "iv_sound_variant", "default" ); new_category.iv_noise = jsobj.get_int( "iv_noise", 0 ); new_category.iv_sleep = jsobj.get_bool( "iv_sleep", false ); new_category.raw_iv_sleep_message = jsobj.get_string( "iv_sleep_message", translate_marker( "You fall asleep." ) ); new_category.iv_sleep_dur = jsobj.get_int( "iv_sleep_dur", 0 ); static_cast<void>( translate_marker_context( "memorial_male", "Crossed a threshold" ) ); static_cast<void>( translate_marker_context( "memorial_female", "Crossed a threshold" ) ); new_category.raw_memorial_message = jsobj.get_string( "memorial_message", "Crossed a threshold" ); new_category.raw_junkie_message = jsobj.get_string( "junkie_message", translate_marker( "Oh, yeah! That's the stuff!" ) ); mutation_category_traits[new_category.id] = new_category; }
const std::string calendar::name_season( season_type s ) { static const std::array<std::string, 5> season_names_untranslated = {{ //~First letter is supposed to be uppercase std::string( translate_marker( "Spring" ) ), //~First letter is supposed to be uppercase std::string( translate_marker( "Summer" ) ), //~First letter is supposed to be uppercase std::string( translate_marker( "Autumn" ) ), //~First letter is supposed to be uppercase std::string( translate_marker( "Winter" ) ), std::string( translate_marker( "End times" ) ) } }; if( s >= SPRING && s <= WINTER ) { return _( season_names_untranslated[ s ] ); } return _( season_names_untranslated[ 4 ] ); }
furn_t null_furniture_t() { furn_t new_furniture; new_furniture.id = furn_str_id::NULL_ID(); new_furniture.name_ = translate_marker( "nothing" ); new_furniture.symbol_.fill( ' ' ); new_furniture.color_.fill( c_white ); new_furniture.movecost = 0; new_furniture.move_str_req = -1; new_furniture.transparent = true; new_furniture.set_flag("TRANSPARENT"); new_furniture.examine = iexamine_function_from_string("none"); new_furniture.max_volume = DEFAULT_MAX_VOLUME_IN_SQUARE; return new_furniture; }
static std::string to_string( const weekdays &d ) { static const std::array<std::string, 7> weekday_names = {{ translate_marker( "Sunday" ), translate_marker( "Monday" ) translate_marker( "Tuesday" ), translate_marker( "Wednesday" ) translate_marker( "Thursday" ), translate_marker( "Friday" ) translate_marker( "Saturday" ) } }; static_assert( static_cast<int>( weekdays::SUNDAY ) == 0, "weekday_names array is out of sync with weekdays enumeration values" ); return _( weekday_names[ static_cast<int>( d ) ] ); }
ter_t null_terrain_t() { ter_t new_terrain; new_terrain.id = ter_str_id::NULL_ID(); new_terrain.name_ = translate_marker( "nothing" ); new_terrain.symbol_.fill( ' ' ); new_terrain.color_.fill( c_white ); new_terrain.movecost = 0; new_terrain.transparent = true; new_terrain.set_flag("TRANSPARENT"); new_terrain.set_flag("DIGGABLE"); new_terrain.examine = iexamine_function_from_string("none"); new_terrain.max_volume = DEFAULT_MAX_VOLUME_IN_SQUARE; return new_terrain; }
zone_manager::zone_manager() { types.emplace( zone_type_id( "NO_AUTO_PICKUP" ), zone_type( translate_marker( "No Auto Pickup" ), translate_marker( "You won't auto-pickup items inside the zone." ) ) ); types.emplace( zone_type_id( "NO_NPC_PICKUP" ), zone_type( translate_marker( "No NPC Pickup" ), translate_marker( "Friendly NPCs don't pickup items inside the zone." ) ) ); types.emplace( zone_type_id( "NPC_RETREAT" ), zone_type( translate_marker( "NPC Retreat" ), translate_marker( "When fleeing, friendly NPCs will attempt to retreat toward this zone if it is within 60 tiles." ) ) ); types.emplace( zone_type_id( "NPC_NO_INVESTIGATE" ), zone_type( translate_marker( "NPC Ignore Sounds" ), translate_marker( "Friendly NPCs won't investigate unseen sounds coming from this zone." ) ) ); types.emplace( zone_type_id( "NPC_INVESTIGATE_ONLY" ), zone_type( translate_marker( "NPC Investigation Area" ), translate_marker( "Friendly NPCs will investigate unseen sounds only if they come from inside this area." ) ) ); types.emplace( zone_type_id( "LOOT_UNSORTED" ), zone_type( translate_marker( "Loot: Unsorted" ), translate_marker( "Place to drop unsorted loot. You can use \"sort out loot\" zone-action to sort items inside. It can overlap with Loot zones of different types." ) ) ); types.emplace( zone_type_id( "LOOT_FOOD" ), zone_type( translate_marker( "Loot: Food" ), translate_marker( "Destination for comestibles. If more specific food zone is not defined, all food is moved here." ) ) ); types.emplace( zone_type_id( "LOOT_PFOOD" ), zone_type( translate_marker( "Loot: P.Food" ), translate_marker( "Destination for perishable comestibles. Does include perishable drinks if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_DRINK" ), zone_type( translate_marker( "Loot: Drink" ), translate_marker( "Destination for drinks. Does include perishable drinks if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_PDRINK" ), zone_type( translate_marker( "Loot: P.Drink" ), translate_marker( "Destination for perishable drinks." ) ) ); types.emplace( zone_type_id( "LOOT_GUNS" ), zone_type( translate_marker( "Loot: Guns" ), translate_marker( "Destination for guns, bows and similar weapons." ) ) ); types.emplace( zone_type_id( "LOOT_MAGAZINES" ), zone_type( translate_marker( "Loot: Magazines" ), translate_marker( "Destination for gun magazines." ) ) ); types.emplace( zone_type_id( "LOOT_AMMO" ), zone_type( translate_marker( "Loot: Ammo" ), translate_marker( "Destination for ammo." ) ) ); types.emplace( zone_type_id( "LOOT_WEAPONS" ), zone_type( translate_marker( "Loot: Weapons" ), translate_marker( "Destination for melee weapons." ) ) ); types.emplace( zone_type_id( "LOOT_TOOLS" ), zone_type( translate_marker( "Loot: Tools" ), translate_marker( "Destination for tools." ) ) ); types.emplace( zone_type_id( "LOOT_CLOTHING" ), zone_type( translate_marker( "Loot: Clothing" ), translate_marker( "Destination for clothing. Does include filthy clothing if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_FCLOTHING" ), zone_type( translate_marker( "Loot: F.Clothing" ), translate_marker( "Destination for filthy clothing." ) ) ); types.emplace( zone_type_id( "LOOT_DRUGS" ), zone_type( translate_marker( "Loot: Drugs" ), translate_marker( "Destination for drugs and other medical items." ) ) ); types.emplace( zone_type_id( "LOOT_BOOKS" ), zone_type( translate_marker( "Loot: Books" ), translate_marker( "Destination for books and magazines." ) ) ); types.emplace( zone_type_id( "LOOT_MODS" ), zone_type( translate_marker( "Loot: Mods" ), translate_marker( "Destination for firearm modifications and similar items." ) ) ); types.emplace( zone_type_id( "LOOT_MUTAGENS" ), zone_type( translate_marker( "Loot: Mutagens" ), translate_marker( "Destination for mutagens, serums, and purifiers." ) ) ); types.emplace( zone_type_id( "LOOT_BIONICS" ), zone_type( translate_marker( "Loot: Bionics" ), translate_marker( "Destination for Compact Bionics Modules aka CBMs." ) ) ); types.emplace( zone_type_id( "LOOT_VEHICLE_PARTS" ), zone_type( translate_marker( "Loot: V.Parts" ), translate_marker( "Destination for vehicle parts." ) ) ); types.emplace( zone_type_id( "LOOT_OTHER" ), zone_type( translate_marker( "Loot: Other" ), translate_marker( "Destination for other miscellaneous items." ) ) ); types.emplace( zone_type_id( "LOOT_FUEL" ), zone_type( translate_marker( "Loot: Fuel" ), translate_marker( "Destination for gasoline, diesel, lamp oil and other substances used as a fuel." ) ) ); types.emplace( zone_type_id( "LOOT_SEEDS" ), zone_type( translate_marker( "Loot: Seeds" ), translate_marker( "Destination for seeds, stems and similar items." ) ) ); types.emplace( zone_type_id( "LOOT_CHEMICAL" ), zone_type( translate_marker( "Loot: Chemical" ), translate_marker( "Destination for chemicals." ) ) ); types.emplace( zone_type_id( "LOOT_SPARE_PARTS" ), zone_type( translate_marker( "Loot: S.Parts" ), translate_marker( "Destination for spare parts." ) ) ); types.emplace( zone_type_id( "LOOT_ARTIFACTS" ), zone_type( translate_marker( "Loot: Artifacts" ), translate_marker( "Destination for artifacts" ) ) ); types.emplace( zone_type_id( "LOOT_ARMOR" ), zone_type( translate_marker( "Loot: Armor" ), translate_marker( "Destination for armor. Does include filthy armor if such zone is not specified." ) ) ); types.emplace( zone_type_id( "LOOT_FARMOR" ), zone_type( translate_marker( "Loot: F.Armor" ), translate_marker( "Destination for filthy armor." ) ) ); types.emplace( zone_type_id( "LOOT_WOOD" ), zone_type( translate_marker( "Loot: Wood" ), translate_marker( "Destination for firewood and items that can be used as such." ) ) ); types.emplace( zone_type_id( "LOOT_IGNORE" ), zone_type( translate_marker( "Loot: Ignore" ), translate_marker( "Items inside of this zone are ignored by \"sort out loot\" zone-action." ) ) ); types.emplace( zone_type_id( "FARM_PLOT" ), zone_type( translate_marker( "Farm: Plot" ), translate_marker( "Designate a farm plot for tilling and planting." ) ) ); types.emplace( zone_type_id( "CAMP_FOOD" ), zone_type( translate_marker( "Basecamp: Food" ), translate_marker( "Items in this zone will be added to a basecamp's food supply in the Distribute Food mission." ) ) ); }
weather_datum const weather_data( weather_type const type ) { /** * Weather types data definition. * Name, color in UI, ranged penalty, sight penalty, * light modifier, sound attenuation, warn player? * Note light modifier assumes baseline of DAYLIGHT_LEVEL at 60 */ static const std::array<weather_datum, NUM_WEATHER_TYPES> data {{ weather_datum { "NULL Weather - BUG (weather_data.cpp:weather_data)", c_magenta, 0, 0.0f, 0, 0, false, &weather_effect::none }, weather_datum { translate_marker( "Clear" ), c_cyan, 0, 1.0f, 0, 0, false, &weather_effect::none }, weather_datum { translate_marker( "Sunny" ), c_light_cyan, 0, 1.0f, 2, 0, false, &weather_effect::glare }, weather_datum { translate_marker( "Cloudy" ), c_light_gray, 0, 1.0f, -20, 0, false, &weather_effect::none }, weather_datum { translate_marker( "Drizzle" ), c_light_blue, 1, 1.03f, -20, 1, false, &weather_effect::wet }, weather_datum { translate_marker( "Rain" ), c_blue, 3, 1.1f, -30, 4, false, &weather_effect::very_wet }, weather_datum { translate_marker( "Thunder Storm" ), c_dark_gray, 4, 1.2f, -40, 8, false, &weather_effect::thunder }, weather_datum { translate_marker( "Lightning Storm" ), c_yellow, 4, 1.25f, -45, 8, false, &weather_effect::lightning }, weather_datum { translate_marker( "Acidic Drizzle" ), c_light_green, 2, 1.03f, -20, 1, true, &weather_effect::light_acid }, weather_datum { translate_marker( "Acid Rain" ), c_green, 4, 1.1f, -30, 4, true, &weather_effect::acid }, weather_datum { translate_marker( "Flurries" ), c_white, 2, 1.12f, -15, 2, false, &weather_effect::flurry }, weather_datum { translate_marker( "Snowing" ), c_white, 4, 1.13f, -20, 4, false, &weather_effect::snow }, weather_datum { translate_marker( "Snowstorm" ), c_white, 6, 1.2f, -30, 6, false, &weather_effect::snowstorm } }}; const auto i = static_cast<size_t>( type ); if( i < NUM_WEATHER_TYPES ) { weather_datum localized = data[i]; localized.name = _( localized.name.c_str() ); return localized; } return data[0]; }
// These accessors are to delay the initialization of the strings in the respective containers until after gettext is initialized. const std::vector<std::pair<std::string, std::string> > &get_mod_list_categories() { static const std::vector<std::pair<std::string, std::string> > mod_list_categories = { {"content", translate_marker("CORE CONTENT PACKS")}, {"items", translate_marker("ITEM ADDITION MODS")}, {"creatures", translate_marker("CREATURE MODS")}, {"misc_additions", translate_marker("MISC ADDITIONS")}, {"buildings", translate_marker("BUILDINGS MODS")}, {"vehicles", translate_marker("VEHICLE MODS")}, {"rebalance", translate_marker("REBALANCING MODS")}, {"magical", translate_marker("MAGICAL MODS")}, {"item_exclude", translate_marker("ITEM EXCLUSION MODS")}, {"monster_exclude", translate_marker("MONSTER EXCLUSION MODS")}, {"", translate_marker("NO CATEGORY")} }; return mod_list_categories; }