From 2ff0ea57511ca2080e8c399ebc46ac00eacb589e Mon Sep 17 00:00:00 2001 From: Binbag <124107163+Binbagg@users.noreply.github.com> Date: Sat, 6 Apr 2024 02:04:28 +0100 Subject: [PATCH 01/48] Update storage.json 15l 15kg --- data/json/items/armor/storage.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/json/items/armor/storage.json b/data/json/items/armor/storage.json index fad17b8a58a61..0caeac89eb682 100644 --- a/data/json/items/armor/storage.json +++ b/data/json/items/armor/storage.json @@ -2637,8 +2637,8 @@ "pocket_data": [ { "pocket_type": "CONTAINER", - "max_contains_volume": "25 L", - "max_contains_weight": "30 kg", + "max_contains_volume": "15 L", + "max_contains_weight": "15 kg", "max_item_length": "60 cm", "moves": 300 } From 5c4c164c7c2f6702347e63e3a32a42a5cf3f9e3c Mon Sep 17 00:00:00 2001 From: anothersimulacrum Date: Sat, 6 Apr 2024 05:22:41 +0000 Subject: [PATCH 02/48] By default, EOCs train proficiencies normally Instead of bypassing the normal training methods, by default train the difference between the old value and the new value. If an argument is added, revert to the old behavior (and allow silly things like negative training). This is scruffy and probably not very idiomatic for EOC stuff. --- data/json/npcs/TALK_TEST.json | 11 ++++++-- data/mods/TEST_DATA/EOC.json | 8 +++--- doc/NPCs.md | 2 +- src/character_proficiency.cpp | 2 +- src/math_parser_diag.cpp | 22 +++++++++++++-- src/talker.h | 1 + src/talker_character.cpp | 5 ++++ src/talker_character.h | 1 + tests/npc_talk_test.cpp | 52 ++++++++++++++++++++++++++++++++++- 9 files changed, 92 insertions(+), 12 deletions(-) diff --git a/data/json/npcs/TALK_TEST.json b/data/json/npcs/TALK_TEST.json index cab58a8d623a1..75779c4b9e256 100644 --- a/data/json/npcs/TALK_TEST.json +++ b/data/json/npcs/TALK_TEST.json @@ -1210,17 +1210,22 @@ { "text": "Sets Test Proficiency learning done to 12 hours total.", "topic": "TALK_DONE", - "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent')", "=", "time('12h')" ] } + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': 'true')", "=", "time('12h')" ] } }, { "text": "Sets Test Proficiency learning done to -1.", "topic": "TALK_DONE", - "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent')", "=", "-1" ] } + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': 'true')", "=", "-1" ] } }, { "text": "Sets Test Proficiency learning done to 24h.", "topic": "TALK_DONE", - "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent')", "=", "time('24h')" ] } + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': 'true')", "=", "time('24h')" ] } + }, + { + "text": "Learns Test Proficiency for 1h", + "topic": "TALK_DONE", + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent')", "+=", "time('1h')" ] } } ] }, diff --git a/data/mods/TEST_DATA/EOC.json b/data/mods/TEST_DATA/EOC.json index 024d6fb9c319f..1cb8566f9135f 100644 --- a/data/mods/TEST_DATA/EOC.json +++ b/data/mods/TEST_DATA/EOC.json @@ -338,15 +338,15 @@ "effect": [ { "set_string_var": "prof_test", "target_var": { "global_val": "prof_id" } }, { "math": [ "key_total_time_required", "=", "u_proficiency(prof_id, 'format': 'total_time_required')" ] }, - { "math": [ "u_proficiency(prof_id)", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'direct': 'true')", "=", "50" ] }, { "math": [ "key_time_spent_50", "=", "u_proficiency(prof_id)" ] }, - { "math": [ "u_proficiency(prof_id, 'format': 'percent')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'format': 'percent', 'direct': 'true')", "=", "50" ] }, { "math": [ "key_percent_50", "=", "u_proficiency(prof_id, 'format': 'percent')" ] }, { "math": [ "key_percent_50_turn", "=", "u_proficiency(prof_id)" ] }, - { "math": [ "u_proficiency(prof_id, 'format': 'permille')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'format': 'permille', 'direct': 'true')", "=", "50" ] }, { "math": [ "key_permille_50", "=", "u_proficiency(prof_id, 'format': 'permille')" ] }, { "math": [ "key_permille_50_turn", "=", "u_proficiency(prof_id)" ] }, - { "math": [ "u_proficiency(prof_id, 'format': 'time_left')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'format': 'time_left', 'direct': 'true')", "=", "50" ] }, { "math": [ "key_time_left_50", "=", "u_proficiency(prof_id, 'format': 'time_left')" ] }, { "math": [ "key_time_left_50_turn", "=", "u_proficiency(prof_id)" ] } ] diff --git a/doc/NPCs.md b/doc/NPCs.md index 78648d101b69f..9590151e45579 100644 --- a/doc/NPCs.md +++ b/doc/NPCs.md @@ -1352,7 +1352,7 @@ _some functions support array arguments or kwargs, denoted with square brackets | moon_phase() | ✅ | ❌ | N/A
(global) | Returns current phase of the Moon.
MOON_NEW = 0,
WAXING_CRESCENT = 1,
HALF_MOON_WAXING = 2,
WAXING_GIBBOUS = 3,
FULL = 4,
WANING_GIBBOUS = 5,
HALF_MOON_WANING = 6,
WANING_CRESCENT = 7 | | num_input(`s`/`v`,`d`/`v`) | ✅ | ❌ | N/A
(global) | Prompt the player for a number.
Arguments are Prompt text, Default Value:
`"math": [ "u_value_to_set", "=", "num_input('Playstyle Perks Cost?', 4)" ]`| | pain() | ✅ | ✅ | u, n | Return or set pain
Example:
`{ "math": [ "n_pain()", "=", "u_pain() + 9000" ] }`| -| proficiency(`s`/`v`) | ✅ | ✅ | u, n | Return or set proficiency
Argument is proficiency ID.

Optional kwargs:
`format`: `s` - `percent` return or set how many percent done the learning is. `permille` does likewise for permille. `time_spent` return or set total time spent. `time_left` return or set the remaining time. `total_time_required` return total time required to train a given proficiency (read only).

Example:
`{ "math": [ "u_proficiency('prof_intro_chemistry', 'format': 'percent')", "=", "50" ] }`| +| proficiency(`s`/`v`) | ✅ | ✅ | u, n | Return or set proficiency
Argument is proficiency ID.

Optional kwargs:
`format`: `s` - `percent` return or set how many percent done the learning is. `permille` does likewise for permille. `time_spent` return or set total time spent. `time_left` return or set the remaining time. `total_time_required` return total time required to train a given proficiency (read only).
`direct`: `s` - `false` (default) perform the adjustment by practicing the proficiency for the given amount of time. This will likely result in different values than specified. `true` perform the adjustment directly, bypassing other factors that may affect it.

Example:
`{ "math": [ "u_proficiency('prof_intro_chemistry', 'format': 'percent')", "=", "50" ] }`| | school_level(`s`/`v`) | ✅ | ❌ | u, n | Return the highest level of spells known of that school.
Argument is school ID.

Example:
`"condition": { "math": [ "u_school_level('MAGUS')", ">=", "3"] }`| | school_level_adjustment(`s`/`v`) | ✅ | ✅ | u, n | Return or set temporary caster level adjustment. Only useable by EoCs that trigger on the event `opens_spellbook`. Old values will be reset to 0 before the event triggers. To avoid overwriting values from other EoCs, it is recommended to adjust the values here with `+=` or `-=` instead of setting it to an absolute value.
Argument is school ID.

Example:
`{ "math": [ "u_school_level_adjustment('MAGUS')", "+=", "3"] }`| | skill(`s`/`v`) | ✅ | ✅ | u, n | Return or set skill level

Example:
`"condition": { "math": [ "u_skill('driving')", ">=", "5"] }`
`"condition": { "math": [ "u_skill(someskill)", ">=", "5"] }`| diff --git a/src/character_proficiency.cpp b/src/character_proficiency.cpp index 76121e0681702..152092e44e035 100644 --- a/src/character_proficiency.cpp +++ b/src/character_proficiency.cpp @@ -108,7 +108,7 @@ void Character::set_proficiency_practice( const proficiency_id &id, const time_d return; } - _proficiencies->practice( id, amount, 0.f, std::nullopt ); + _proficiencies->set_time_practiced( id, amount ); } std::vector Character::proficiencies_offered_to( const Character *guy ) const diff --git a/src/math_parser_diag.cpp b/src/math_parser_diag.cpp index ce2538a062838..0d57e8e4987de 100644 --- a/src/math_parser_diag.cpp +++ b/src/math_parser_diag.cpp @@ -1195,13 +1195,18 @@ std::function proficiency_ass( char scope, std::vector const ¶ms, diag_kwargs const &kwargs ) { diag_value fmt_val( std::string{"time_spent"} ); + diag_value direct_val( std::string{"false"} ); if( kwargs.count( "format" ) != 0 ) { fmt_val = *kwargs.at( "format" ); } - return [prof_value = params[0], fmt_val, beta = is_beta( scope )]( dialogue const & d, + if( kwargs.count( "direct" ) != 0 ) { + direct_val = *kwargs.at( "direct" ); + } + return [prof_value = params[0], fmt_val, direct_val, beta = is_beta( scope )]( dialogue const & d, double val ) { proficiency_id prof( prof_value.str( d ) ); std::string const format = fmt_val.str( d ); + std::string direct = direct_val.str( d ); int to_write = 0; if( format == "percent" ) { to_write = to_turns( prof->time_to_learn() * val ) / 100; @@ -1215,7 +1220,20 @@ std::function proficiency_ass( char scope, } to_write = val; } - d.actor( beta )->set_proficiency_practiced_time( prof, to_write ); + int before = to_turns( d.actor( beta )->proficiency_practiced_time( prof ) ); + int learned = to_write - before; + if( direct != "true" && direct != "false" ) { + debugmsg( R"(Unknown direct value "%s" for proficiency, assuming "false")", direct ); + direct = "false"; + } else if( direct == "false" && learned < 0 ) { + debugmsg( "For proficiency %s in dialogue, trying to learn negative without direct", prof.str() ); + return 0; + } + if( direct == "false" ) { + d.actor( beta )->train_proficiency_for( prof, learned ); + } else { + d.actor( beta )->set_proficiency_practiced_time( prof, to_write ); + } return 0; }; } diff --git a/src/talker.h b/src/talker.h index 93c15a074b2f2..c251552a4d7c1 100644 --- a/src/talker.h +++ b/src/talker.h @@ -269,6 +269,7 @@ class talker return 0_seconds; } virtual void set_proficiency_practiced_time( const proficiency_id &, int ) {} + virtual void train_proficiency_for( const proficiency_id &, int ) {} virtual std::vector skills_offered_to( const talker & ) const { return {}; } diff --git a/src/talker_character.cpp b/src/talker_character.cpp index c03d4eb9afe7c..d6422a29619bd 100644 --- a/src/talker_character.cpp +++ b/src/talker_character.cpp @@ -417,6 +417,11 @@ void talker_character::set_proficiency_practiced_time( const proficiency_id &pro me_chr->set_proficiency_practiced_time( prof, turns ); } +void talker_character::train_proficiency_for( const proficiency_id &prof, int turns ) +{ + me_chr->practice_proficiency( prof, time_duration::from_seconds( turns ) ); +} + bool talker_character_const::has_effect( const efftype_id &effect_id, const bodypart_id &bp ) const { return me_chr_const->has_effect( effect_id, bp ); diff --git a/src/talker_character.h b/src/talker_character.h index 7d8aade527950..d6a9b30973d87 100644 --- a/src/talker_character.h +++ b/src/talker_character.h @@ -238,6 +238,7 @@ class talker_character: public talker_cloner( player_character.get_proficiency_practiced_time( proficiency_prof_test ) ); + }; + + // For 100 focus + player_character.set_focus( 100 ); + // No starting XP + REQUIRE( prof_xp() == 0 ); + + // "Learns Test Proficiency for 1h" + effects = d.responses[31].success; + effects.apply( d ); + + int amt_100 = prof_xp(); + CAPTURE( amt_100 ); + + CHECK( player_character.has_proficiency( proficiency_prof_test ) == false ); + proficiencies_vector = player_character.learning_proficiencies(); + CHECK( std::count( proficiencies_vector.begin(), + proficiencies_vector.end(), + proficiency_prof_test ) == 1 ); + + // Reset progress + player_character.set_proficiency_practice( proficiency_prof_test, 0_seconds ); + REQUIRE( prof_xp() == 0 ); + + // For 5 focus + player_character.set_focus( 5 ); + + // "Learns Test Proficiency for 1h" + effects = d.responses[31].success; + effects.apply( d ); + + int amt_5 = prof_xp(); + CAPTURE( amt_5 ); + + CHECK( player_character.has_proficiency( proficiency_prof_test ) == false ); + proficiencies_vector = player_character.learning_proficiencies(); + CHECK( std::count( proficiencies_vector.begin(), + proficiencies_vector.end(), + proficiency_prof_test ) == 1 ); + + // Simply check that they're less, don't need to get any fancier + CHECK( amt_5 < amt_100 ); + + // Teardown player_character.remove_value( var_name ); } From 812a5e39c5fae16cd3f48b1ae52af1253f26a882 Mon Sep 17 00:00:00 2001 From: andrei <68240139+andrei8l@users.noreply.github.com> Date: Sat, 6 Apr 2024 15:57:44 +0000 Subject: [PATCH 03/48] More idiomatic true/false EOC argument Add true/false as mathematical constants, and use a double for the true/false keyword argument. --- data/json/npcs/TALK_TEST.json | 6 +++--- data/mods/TEST_DATA/EOC.json | 8 ++++---- doc/NPCs.md | 2 +- src/math_parser_diag.cpp | 16 +++++++++------- src/math_parser_func.h | 4 +++- tests/npc_talk_test.cpp | 2 +- 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/data/json/npcs/TALK_TEST.json b/data/json/npcs/TALK_TEST.json index 75779c4b9e256..c3ebc235753e6 100644 --- a/data/json/npcs/TALK_TEST.json +++ b/data/json/npcs/TALK_TEST.json @@ -1210,17 +1210,17 @@ { "text": "Sets Test Proficiency learning done to 12 hours total.", "topic": "TALK_DONE", - "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': 'true')", "=", "time('12h')" ] } + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': true)", "=", "time('12h')" ] } }, { "text": "Sets Test Proficiency learning done to -1.", "topic": "TALK_DONE", - "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': 'true')", "=", "-1" ] } + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': true)", "=", "-1" ] } }, { "text": "Sets Test Proficiency learning done to 24h.", "topic": "TALK_DONE", - "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': 'true')", "=", "time('24h')" ] } + "effect": { "math": [ "u_proficiency('prof_test', 'format': 'time_spent', 'direct': true)", "=", "time('24h')" ] } }, { "text": "Learns Test Proficiency for 1h", diff --git a/data/mods/TEST_DATA/EOC.json b/data/mods/TEST_DATA/EOC.json index 1cb8566f9135f..fdb4692462f8f 100644 --- a/data/mods/TEST_DATA/EOC.json +++ b/data/mods/TEST_DATA/EOC.json @@ -338,15 +338,15 @@ "effect": [ { "set_string_var": "prof_test", "target_var": { "global_val": "prof_id" } }, { "math": [ "key_total_time_required", "=", "u_proficiency(prof_id, 'format': 'total_time_required')" ] }, - { "math": [ "u_proficiency(prof_id, 'direct': 'true')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'direct': true)", "=", "50" ] }, { "math": [ "key_time_spent_50", "=", "u_proficiency(prof_id)" ] }, - { "math": [ "u_proficiency(prof_id, 'format': 'percent', 'direct': 'true')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'format': 'percent', 'direct': true)", "=", "50" ] }, { "math": [ "key_percent_50", "=", "u_proficiency(prof_id, 'format': 'percent')" ] }, { "math": [ "key_percent_50_turn", "=", "u_proficiency(prof_id)" ] }, - { "math": [ "u_proficiency(prof_id, 'format': 'permille', 'direct': 'true')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'format': 'permille', 'direct': true)", "=", "50" ] }, { "math": [ "key_permille_50", "=", "u_proficiency(prof_id, 'format': 'permille')" ] }, { "math": [ "key_permille_50_turn", "=", "u_proficiency(prof_id)" ] }, - { "math": [ "u_proficiency(prof_id, 'format': 'time_left', 'direct': 'true')", "=", "50" ] }, + { "math": [ "u_proficiency(prof_id, 'format': 'time_left', 'direct': true)", "=", "50" ] }, { "math": [ "key_time_left_50", "=", "u_proficiency(prof_id, 'format': 'time_left')" ] }, { "math": [ "key_time_left_50_turn", "=", "u_proficiency(prof_id)" ] } ] diff --git a/doc/NPCs.md b/doc/NPCs.md index 9590151e45579..b163f4f59dde5 100644 --- a/doc/NPCs.md +++ b/doc/NPCs.md @@ -1352,7 +1352,7 @@ _some functions support array arguments or kwargs, denoted with square brackets | moon_phase() | ✅ | ❌ | N/A
(global) | Returns current phase of the Moon.
MOON_NEW = 0,
WAXING_CRESCENT = 1,
HALF_MOON_WAXING = 2,
WAXING_GIBBOUS = 3,
FULL = 4,
WANING_GIBBOUS = 5,
HALF_MOON_WANING = 6,
WANING_CRESCENT = 7 | | num_input(`s`/`v`,`d`/`v`) | ✅ | ❌ | N/A
(global) | Prompt the player for a number.
Arguments are Prompt text, Default Value:
`"math": [ "u_value_to_set", "=", "num_input('Playstyle Perks Cost?', 4)" ]`| | pain() | ✅ | ✅ | u, n | Return or set pain
Example:
`{ "math": [ "n_pain()", "=", "u_pain() + 9000" ] }`| -| proficiency(`s`/`v`) | ✅ | ✅ | u, n | Return or set proficiency
Argument is proficiency ID.

Optional kwargs:
`format`: `s` - `percent` return or set how many percent done the learning is. `permille` does likewise for permille. `time_spent` return or set total time spent. `time_left` return or set the remaining time. `total_time_required` return total time required to train a given proficiency (read only).
`direct`: `s` - `false` (default) perform the adjustment by practicing the proficiency for the given amount of time. This will likely result in different values than specified. `true` perform the adjustment directly, bypassing other factors that may affect it.

Example:
`{ "math": [ "u_proficiency('prof_intro_chemistry', 'format': 'percent')", "=", "50" ] }`| +| proficiency(`s`/`v`) | ✅ | ✅ | u, n | Return or set proficiency
Argument is proficiency ID.

Optional kwargs:
`format`: `s` - `percent` return or set how many percent done the learning is. `permille` does likewise for permille. `time_spent` return or set total time spent. `time_left` return or set the remaining time. `total_time_required` return total time required to train a given proficiency (read only).
`direct`: `true`/`false`/`d` - false (default) perform the adjustment by practicing the proficiency for the given amount of time. This will likely result in different values than specified. `true` perform the adjustment directly, bypassing other factors that may affect it.

Example:
`{ "math": [ "u_proficiency('prof_intro_chemistry', 'format': 'percent')", "=", "50" ] }`| | school_level(`s`/`v`) | ✅ | ❌ | u, n | Return the highest level of spells known of that school.
Argument is school ID.

Example:
`"condition": { "math": [ "u_school_level('MAGUS')", ">=", "3"] }`| | school_level_adjustment(`s`/`v`) | ✅ | ✅ | u, n | Return or set temporary caster level adjustment. Only useable by EoCs that trigger on the event `opens_spellbook`. Old values will be reset to 0 before the event triggers. To avoid overwriting values from other EoCs, it is recommended to adjust the values here with `+=` or `-=` instead of setting it to an absolute value.
Argument is school ID.

Example:
`{ "math": [ "u_school_level_adjustment('MAGUS')", "+=", "3"] }`| | skill(`s`/`v`) | ✅ | ✅ | u, n | Return or set skill level

Example:
`"condition": { "math": [ "u_skill('driving')", ">=", "5"] }`
`"condition": { "math": [ "u_skill(someskill)", ">=", "5"] }`| diff --git a/src/math_parser_diag.cpp b/src/math_parser_diag.cpp index 0d57e8e4987de..146395375a472 100644 --- a/src/math_parser_diag.cpp +++ b/src/math_parser_diag.cpp @@ -66,6 +66,11 @@ bool is_beta( char scope ) } } +constexpr bool is_true( double dbl ) +{ + return dbl >= 1 || float_equals( dbl, 1 ); +} + template constexpr std::string_view _str_type_of() { @@ -1195,7 +1200,7 @@ std::function proficiency_ass( char scope, std::vector const ¶ms, diag_kwargs const &kwargs ) { diag_value fmt_val( std::string{"time_spent"} ); - diag_value direct_val( std::string{"false"} ); + diag_value direct_val( 0.0 ); if( kwargs.count( "format" ) != 0 ) { fmt_val = *kwargs.at( "format" ); } @@ -1206,7 +1211,7 @@ std::function proficiency_ass( char scope, double val ) { proficiency_id prof( prof_value.str( d ) ); std::string const format = fmt_val.str( d ); - std::string direct = direct_val.str( d ); + bool const direct = is_true( direct_val.dbl( d ) ); int to_write = 0; if( format == "percent" ) { to_write = to_turns( prof->time_to_learn() * val ) / 100; @@ -1222,14 +1227,11 @@ std::function proficiency_ass( char scope, } int before = to_turns( d.actor( beta )->proficiency_practiced_time( prof ) ); int learned = to_write - before; - if( direct != "true" && direct != "false" ) { - debugmsg( R"(Unknown direct value "%s" for proficiency, assuming "false")", direct ); - direct = "false"; - } else if( direct == "false" && learned < 0 ) { + if( !direct && learned < 0 ) { debugmsg( "For proficiency %s in dialogue, trying to learn negative without direct", prof.str() ); return 0; } - if( direct == "false" ) { + if( !direct ) { d.actor( beta )->train_proficiency_for( prof, learned ); } else { d.actor( beta )->set_proficiency_practiced_time( prof, to_write ); diff --git a/src/math_parser_func.h b/src/math_parser_func.h index a205790f76b9c..6c3a6febaed6e 100644 --- a/src/math_parser_func.h +++ b/src/math_parser_func.h @@ -171,10 +171,12 @@ constexpr double e_v = 2.7182818284590452354; #endif } // namespace math_constants -constexpr std::array constants{ +constexpr std::array constants{ math_const{ "π", math_constants::pi_v }, math_const{ "pi", math_constants::pi_v }, math_const{ "e", math_constants::e_v }, + math_const{ "true", 1 }, + math_const{ "false", 0 }, }; std::vector tokenize( std::string_view str, std::string_view separators, diff --git a/tests/npc_talk_test.cpp b/tests/npc_talk_test.cpp index f1b6e9ccc69b0..5c581c9e77bc7 100644 --- a/tests/npc_talk_test.cpp +++ b/tests/npc_talk_test.cpp @@ -1495,7 +1495,7 @@ TEST_CASE( "npc_arithmetic", "[npc_talk]" ) proficiency_prof_test ) == 0 ); - // Proficency learning without 'direct': 'true' is impacted by focus + // Proficency learning without 'direct': true is impacted by focus const auto prof_xp = [&player_character]() { return to_seconds( player_character.get_proficiency_practiced_time( proficiency_prof_test ) ); }; From 7b3e866e7ae42e50fa36fc44ea4a28c4754d9593 Mon Sep 17 00:00:00 2001 From: Katie M Date: Sat, 6 Apr 2024 15:28:42 -0400 Subject: [PATCH 04/48] Implemented filter keybindings for keybindings UI to switch the UI between "show" mode where the user can scroll the list, and filtering mode where the user can enter text into the filter text box. --- src/cata_imgui.cpp | 40 ++++++++++++++++++++++++++++++++++++ src/cata_imgui.h | 12 +++++++++++ src/input_context.cpp | 48 ++++++++++++++++++++++++++++--------------- 3 files changed, 83 insertions(+), 17 deletions(-) diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index efd34887a4ace..357bbd6700fc1 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -599,3 +599,43 @@ cataimgui::bounds cataimgui::window::get_bounds() { return { -1.f, -1.f, -1.f, -1.f }; } + +class cataimgui::filter_box_impl +{ + public: + ImGuiID id; +}; + +cataimgui::filter_box::filter_box() +{ + p_impl = new cataimgui::filter_box_impl(); + p_impl->id = 0; + filter_text_impl[0] = '\0'; +} + +cataimgui::filter_box::~filter_box() +{ + delete p_impl; +} + +void cataimgui::filter_box::draw() +{ + ImGui::InputText( "##FILTERBOX", filter_text_impl, std::extent_v< decltype( filter_text_impl )> ); + if( !p_impl->id ) { + p_impl->id = GImGui->LastItemData.ID; + } +} + +std::string cataimgui::filter_box::get_filter() +{ + return std::string( filter_text_impl ); +} + +void cataimgui::filter_box::set_filter( const std::string &filter ) +{ + // doesnt currently work, relies on API only available in newer ImGUi, because I can't have nice things + //ImGuiInputTextState* input_state = ImGui::GetInputTextState( id ); + //if( input_state ) { + // input_state->ReloadUserBufAndSelectAll(); + //} +} diff --git a/src/cata_imgui.h b/src/cata_imgui.h index 4f9707993d804..bbceac3349751 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -114,6 +114,18 @@ class window virtual void draw_controls() = 0; }; +class filter_box +{ + class filter_box_impl *p_impl; + char filter_text_impl[255]; // NOLINT(modernize-avoid-c-arrays) + public: + filter_box(); + ~filter_box(); + void draw(); + std::string get_filter(); + void set_filter( const std::string &filter ); +}; + #if !(defined(TILES) || defined(WIN32)) void init_pair( int p, int f, int b ); void load_colors(); diff --git a/src/input_context.cpp b/src/input_context.cpp index 7569703ba4758..cd1c35d458b12 100644 --- a/src/input_context.cpp +++ b/src/input_context.cpp @@ -35,7 +35,7 @@ #include "imgui/imgui.h" enum class kb_menu_status { - remove, reset, add, add_global, execute, show + remove, reset, add, add_global, execute, show, filter }; class keybindings_ui : public cataimgui::window @@ -48,8 +48,8 @@ class keybindings_ui : public cataimgui::window const nc_color unbound_key = c_light_red; const nc_color h_unbound_key = h_light_red; input_context *ctxt; - char filter_text_impl[255]; // NOLINT(modernize-avoid-c-arrays) public: + cataimgui::filter_box filter_box; // current status: adding/removing/reseting/executing/showing keybindings kb_menu_status status = kb_menu_status::show, last_status = kb_menu_status::execute; @@ -61,7 +61,7 @@ class keybindings_ui : public cataimgui::window std::string hotkeys; int highlight_row_index = -1; size_t scroll_offset = 0; - std::string filter_text; + //std::string filter_text; keybindings_ui( bool permit_execute_action, input_context *parent ); void init(); @@ -608,7 +608,6 @@ static const std::map fallback_keys = { keybindings_ui::keybindings_ui( bool permit_execute_action, input_context *parent ) : cataimgui::window( "KEYBINDINGS", ImGuiWindowFlags_NoNav ) { - filter_text_impl[0] = '\0'; this->ctxt = parent; legend.push_back( colorize( _( "Unbound keys" ), unbound_key ) ); @@ -655,23 +654,26 @@ void keybindings_ui::draw_controls() ImGui::SetCursorPosX( str_width_to_pixels( width ) - ( get_text_width( button_text_no_color ) + ( ImGui::GetStyle().FramePadding.x * 2 ) + ImGui::GetStyle().ItemSpacing.x ) ); + ImGui::BeginDisabled( status == kb_menu_status::filter ); action_button( buttons[legend_idx].first, button_text_no_color ); + ImGui::EndDisabled(); } for( ; legend_idx < legend.size(); legend_idx++ ) { draw_colored_text( legend[legend_idx], c_white ); } - if( last_status != status && status == kb_menu_status::show ) { + if( last_status != status && status == kb_menu_status::filter ) { ImGui::SetKeyboardFocusHere( 0 ); } - strncpy( filter_text_impl, filter_text.c_str(), filter_text.length() ); - ImGui::InputText( "##NOLABEL", filter_text_impl, std::extent_v< decltype( filter_text_impl )>, - status == kb_menu_status::show ? ImGuiInputTextFlags_None : ImGuiInputTextFlags_ReadOnly ); - filter_text.assign( filter_text_impl ); + ImGui::BeginDisabled( status != kb_menu_status::filter ); + filter_box.draw(); + ImGui::EndDisabled(); ImGui::Separator(); + + if( last_status != status && status == kb_menu_status::show ) { + ImGui::SetNextWindowFocus(); + } if( ImGui::BeginTable( "KB_KEYS", 2, ImGuiTableFlags_ScrollY ) ) { - if( last_status != status && status != kb_menu_status::show ) { - ImGui::SetKeyboardFocusHere( 0 ); - } + ImGui::TableSetupColumn( "Action Name", ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_NoSort ); float keys_col_width = str_width_to_pixels( width ) - str_width_to_pixels( TERMX >= 100 ? 62 : 52 ); @@ -1303,6 +1305,8 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) ctxt.register_action( "PAGE_DOWN" ); ctxt.register_action( "END" ); ctxt.register_action( "HOME" ); + ctxt.register_action( "FILTER" ); + ctxt.register_action( "RESET_FILTER" ); ctxt.register_action( "TEXT.INPUT_FROM_FILE" ); if( permit_execute_action ) { ctxt.register_action( "EXECUTE" ); @@ -1357,13 +1361,19 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) } kb_menu.filtered_registered_actions = filter_strings_by_phrase( org_registered_actions, - kb_menu.filter_text ); + kb_menu.filter_box.get_filter() ); // In addition to the modifiable hotkeys, we also check for hardcoded // keys, e.g. '+', '-', '=', '.' in order to prevent the user from // entering an unrecoverable state. - if( action == "ADD_LOCAL" - || raw_input_char == fallback_keys.at( fallback_action::add_local ) ) { + if( kb_menu.status == kb_menu_status::filter ) { + if( action == "QUIT" ) { + kb_menu.filter_box.set_filter( "" ); + kb_menu.status = kb_menu_status::show; + } else if( action == "TEXT.CONFIRM" ) { + kb_menu.status = kb_menu_status::show; + } + } else if( action == "ADD_LOCAL" ) { if( !kb_menu.filtered_registered_actions.empty() ) { kb_menu.status = kb_menu_status::add; } @@ -1391,11 +1401,15 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) } else if( action == "PAGE_UP" || action == "PAGE_DOWN" || action == "HOME" || action == "END" ) { continue; // do nothing - on tiles version for some reason this counts as pressing various alphabet keys } else if( action == "TEXT.CLEAR" ) { - kb_menu.filter_text.assign( "" ); + kb_menu.filter_box.set_filter( "" ); kb_menu.filtered_registered_actions = filter_strings_by_phrase( org_registered_actions, "" ); } else if( !kb_menu.get_is_open() ) { break; + } else if( action == "FILTER" ) { + kb_menu.status = kb_menu_status::filter; + } else if( action == "RESET_FILTER" ) { + kb_menu.filter_box.set_filter( "" ); } else if( action == "QUIT" ) { if( kb_menu.status != kb_menu_status::show ) { kb_menu.status = kb_menu_status::show; @@ -1403,7 +1417,7 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) break; } } else if( action == "TEXT.INPUT_FROM_FILE" ) { - kb_menu.filter_text += get_input_string_from_file(); + kb_menu.filter_box.set_filter( kb_menu.filter_box.get_filter() + get_input_string_from_file() ); } else if( action == "HELP_KEYBINDINGS" ) { // update available hotkeys in case they've changed kb_menu.hotkeys = ctxt.get_available_single_char_hotkeys( display_help_hotkeys ); From 3df76018955f3daa1d5c4dbc5e0e5b60eb910de2 Mon Sep 17 00:00:00 2001 From: Venera3 Date: Sun, 7 Apr 2024 07:41:18 +0200 Subject: [PATCH 05/48] Untest tests --- data/mods/TEST_DATA/mutations.json | 9 +++++++++ src/mutation_data.cpp | 7 +++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/data/mods/TEST_DATA/mutations.json b/data/mods/TEST_DATA/mutations.json index 8e69486e732e9..635159fe9c1e5 100644 --- a/data/mods/TEST_DATA/mutations.json +++ b/data/mods/TEST_DATA/mutations.json @@ -37,6 +37,15 @@ "enchantments": [ "TEST_ENCH" ], "category": [ "CEPHALOPOD" ] }, + { + "type": "mutation", + "id": "TEST_CONSISTENCY_CHECK", + "name": "Dummy Test Trait", + "points": 0, + "description": "Test trait to trip the consistency check: it shouldn't cause a load error since it overwrites a basegame trait.", + "prereqs": [ "WINGS_STUB" ], + "category": [ "INST_TEST" ] + }, { "type": "mutation", "id": "TEST_TRIGGER", diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index 6fd87d3eb2309..bd3750e81e631 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -701,13 +701,15 @@ void mutation_branch::check_consistency() } } + // Suppress this check for trait/prereq combos from different mod sources for( const mutation_category_id &cat_id : mdata.category ) { if( !mdata.prereqs.empty() ) { bool found = false; for( const trait_id &prereq_id : mdata.prereqs ) { const mutation_branch &prereq = prereq_id.obj(); found = found || - std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end(); + std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end() || + mdata.src.end()->second != prereq.src.end()->second; } if( !found ) { debugmsg( "mutation %s is in category %s but none of its slot 1 prereqs have this category", @@ -720,7 +722,8 @@ void mutation_branch::check_consistency() for( const trait_id &prereq_id : mdata.prereqs2 ) { const mutation_branch &prereq = prereq_id.obj(); found = found || - std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end(); + std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end() || + mdata.src.end()->second != prereq.src.end()->second; } if( !found ) { debugmsg( "mutation %s is in category %s but none of its slot 2 prereqs have this category", From fc83fae8b958efcf1cb2817e2f1c5efcc5a350ec Mon Sep 17 00:00:00 2001 From: Venera3 <72006894+Venera3@users.noreply.github.com> Date: Sun, 7 Apr 2024 12:55:07 +0200 Subject: [PATCH 06/48] Update mutations.json --- data/mods/TEST_DATA/mutations.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/mods/TEST_DATA/mutations.json b/data/mods/TEST_DATA/mutations.json index 635159fe9c1e5..9f567335e8871 100644 --- a/data/mods/TEST_DATA/mutations.json +++ b/data/mods/TEST_DATA/mutations.json @@ -8,6 +8,7 @@ "dummy": true, "category": [ "HUMAN" ], "cancels": [ + "TEST_CONSISTENCY_CHECK", "TEST_ENCH_MUTATION", "TEST_GOOD1", "TEST_GOOD2", From ef0aebcac8e2e5d69bbbe6bda05fbf089e985ed3 Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Sun, 7 Apr 2024 09:32:04 -0500 Subject: [PATCH 07/48] [MoM] Feral telekinetics can't throw you with telekinesis if you have Inertial Barrier up and vice versa (#72874) * Initial commit * Kick tests --- .../MindOverMatter/effects/effects_items.json | 8 ++++++++ .../mods/MindOverMatter/items/armor/belt.json | 20 +++++++++++++++++-- .../monsters/feral_lab_psychics.json | 4 ++-- .../monsters/feral_psychics.json | 12 +++++------ .../MindOverMatter/monsters/species_new.json | 6 ++++++ .../MindOverMatter/powers/telekinesis.json | 8 ++++---- 6 files changed, 44 insertions(+), 14 deletions(-) diff --git a/data/mods/MindOverMatter/effects/effects_items.json b/data/mods/MindOverMatter/effects/effects_items.json index d73acad128879..2c718384bd4b7 100644 --- a/data/mods/MindOverMatter/effects/effects_items.json +++ b/data/mods/MindOverMatter/effects/effects_items.json @@ -39,5 +39,13 @@ "desc": [ "" ], "removes_effects": [ "psi_blind", "psi_deaf", "effect_telepathic_primal_terror", "psi_dazed" ], "flags": [ "PSYSHIELD_PROTECT" ] + }, + { + "id": "effect_shield_belt_telekin_protection", + "type": "effect_type", + "//": "Blank to hide effect", + "name": [ "" ], + "desc": [ "" ], + "flags": [ "TELEKIN_SHIELD" ] } ] diff --git a/data/mods/MindOverMatter/items/armor/belt.json b/data/mods/MindOverMatter/items/armor/belt.json index 394e82d181022..bc1d7aa432a1c 100644 --- a/data/mods/MindOverMatter/items/armor/belt.json +++ b/data/mods/MindOverMatter/items/armor/belt.json @@ -36,7 +36,22 @@ "volume_encumber_modifier": 0.35 } ], - "relic_data": { "charge_info": { "recharge_type": "periodic", "time": "60 s", "regenerate_ammo": true } }, + "relic_data": { + "passive_effects": [ + { + "has": "WORN", + "condition": "ACTIVE", + "ench_effects": [ { "effect": "effect_shield_belt_telekin_protection", "intensity": 1 } ], + "values": [ + { "value": "ARMOR_CUT", "add": -15 }, + { "value": "ARMOR_BASH", "add": -8 }, + { "value": "ARMOR_STAB", "add": -20 }, + { "value": "ARMOR_BULLET", "add": -40 } + ] + } + ], + "charge_info": { "recharge_type": "periodic", "time": "60 s", "regenerate_ammo": true } + }, "//": "Recharge time is 60 seconds due to bug #48019, making it actually 30 seconds. Reduce to 30 seconds if that ever gets fixed." }, { @@ -60,7 +75,8 @@ "passive_effects": [ { "has": "WORN", - "condition": "ALWAYS", + "condition": "ACTIVE", + "ench_effects": [ { "effect": "effect_shield_belt_telekin_protection", "intensity": 1 } ], "values": [ { "value": "ARMOR_CUT", "add": -15 }, { "value": "ARMOR_BASH", "add": -8 }, diff --git a/data/mods/MindOverMatter/monsters/feral_lab_psychics.json b/data/mods/MindOverMatter/monsters/feral_lab_psychics.json index 417e12879a937..e44d6d1e9dc7b 100644 --- a/data/mods/MindOverMatter/monsters/feral_lab_psychics.json +++ b/data/mods/MindOverMatter/monsters/feral_lab_psychics.json @@ -8,7 +8,7 @@ "default_faction": "science", "looks_like": "chud", "bodytype": "human", - "species": [ "FERAL" ], + "species": [ "FERAL", "TELEKIN_PUSHPULL_NULL" ], "volume": "62500 ml", "weight": "81500 g", "hp": 85, @@ -83,7 +83,7 @@ "uncanny_dodgeable": true, "blockable": false, "effects_require_dmg": false, - "condition": { "not": { "u_has_effect": "effect_psi_null" } }, + "condition": { "and": [ { "not": { "u_has_effect": "effect_psi_null" } }, { "not": { "npc_has_flag": "TELEKIN_SHIELD" } } ] }, "hit_dmg_u": "%1$s stares at you and a powerful force hurls you through the air!", "hit_dmg_npc": "%1$s stares at and a powerful force hurls them through the air!", "miss_msg_u": "%s stares at you, and you feel a crushing pressure for a moment before the feeling vanishes!", diff --git a/data/mods/MindOverMatter/monsters/feral_psychics.json b/data/mods/MindOverMatter/monsters/feral_psychics.json index b3de6b0538c3a..acd8b8813e6f1 100644 --- a/data/mods/MindOverMatter/monsters/feral_psychics.json +++ b/data/mods/MindOverMatter/monsters/feral_psychics.json @@ -1129,7 +1129,7 @@ "default_faction": "zombie", "looks_like": "chud", "bodytype": "human", - "species": [ "FERAL" ], + "species": [ "FERAL", "TELEKIN_PUSHPULL_NULL" ], "volume": "62500 ml", "weight": "81500 g", "hp": 84, @@ -1166,7 +1166,7 @@ "type": "spell", "spell_data": { "id": "telekinetic_pull_monster", "min_level": 2 }, "cooldown": 15, - "condition": { "not": { "u_has_effect": "effect_psi_null" } }, + "condition": { "and": [ { "not": { "u_has_effect": "effect_psi_null" } }, { "not": { "npc_has_flag": "TELEKIN_SHIELD" } } ] }, "monster_message": "%1$s stares at %3$s and %3$s is lifted up and pulled towards them!" }, { @@ -1195,7 +1195,7 @@ "uncanny_dodgeable": true, "blockable": false, "effects_require_dmg": false, - "condition": { "not": { "u_has_effect": "effect_psi_null" } }, + "condition": { "and": [ { "not": { "u_has_effect": "effect_psi_null" } }, { "not": { "npc_has_flag": "TELEKIN_SHIELD" } } ] }, "hit_dmg_u": "%1$s stares at you and a powerful force hurls you through the air!", "hit_dmg_npc": "%1$s stares at and a powerful force hurls them through the air!", "miss_msg_u": "%s stares at you, and you feel a crushing pressure for a moment before the feeling vanishes!", @@ -1227,7 +1227,7 @@ "default_faction": "zombie", "looks_like": "chud", "bodytype": "human", - "species": [ "FERAL" ], + "species": [ "FERAL", "TELEKIN_PUSHPULL_NULL" ], "volume": "62500 ml", "weight": "81500 g", "hp": 84, @@ -1263,7 +1263,7 @@ "type": "spell", "spell_data": { "id": "telekinetic_pull_monster", "min_level": 3 }, "cooldown": 10, - "condition": { "not": { "u_has_effect": "effect_psi_null" } }, + "condition": { "and": [ { "not": { "u_has_effect": "effect_psi_null" } }, { "not": { "npc_has_flag": "TELEKIN_SHIELD" } } ] }, "monster_message": "%1$s stares at %3$s and %3$s is lifted up and pulled towards them!" }, { @@ -1296,7 +1296,7 @@ "dodgeable": false, "uncanny_dodgeable": true, "blockable": false, - "condition": { "not": { "u_has_effect": "effect_psi_null" } }, + "condition": { "and": [ { "not": { "u_has_effect": "effect_psi_null" } }, { "not": { "npc_has_flag": "TELEKIN_SHIELD" } } ] }, "hit_dmg_u": "%1$s stares at you and a powerful force hurls you through the air!", "hit_dmg_npc": "%1$s stares at and a powerful force hurls them through the air!", "miss_msg_u": "%s stares at you, and you feel a crushing pressure for a moment before the feeling vanishes!", diff --git a/data/mods/MindOverMatter/monsters/species_new.json b/data/mods/MindOverMatter/monsters/species_new.json index c4242fe355b53..753e7c2786934 100644 --- a/data/mods/MindOverMatter/monsters/species_new.json +++ b/data/mods/MindOverMatter/monsters/species_new.json @@ -5,6 +5,12 @@ "description": "a being immune to psionics", "//": "This is an extra species to attach to any monster that is supposed to be immune to psionics--it will prevent them from being targeted by psionic powers. If the monster is supposed to be fully immune, they will still need appropriate monster flags or armor against psionic damage types to prevent them from being caught in the AoE of powers targeted elsewhere." }, + { + "type": "SPECIES", + "id": "TELEKIN_PUSHPULL_NULL", + "description": "a being immune to being thrown telekinetically", + "//": "This is an extra species to attach to any monster that is supposed to be immune to telekinetic push or pull. Immunity to telekinetic damage is handled by flags." + }, { "type": "SPECIES", "id": "YRAX_CONSTRUCT", diff --git a/data/mods/MindOverMatter/powers/telekinesis.json b/data/mods/MindOverMatter/powers/telekinesis.json index 83b9f4a086ece..8cd93e676255b 100644 --- a/data/mods/MindOverMatter/powers/telekinesis.json +++ b/data/mods/MindOverMatter/powers/telekinesis.json @@ -38,7 +38,7 @@ "base_casting_time": 50, "final_casting_time": 10, "casting_time_increment": -4, - "ignored_monster_species": [ "PSI_NULL" ] + "ignored_monster_species": [ "PSI_NULL", "TELEKIN_PUSHPULL_NULL" ] }, { "id": "telekinetic_push", @@ -79,7 +79,7 @@ "base_casting_time": 50, "final_casting_time": 10, "casting_time_increment": -4, - "ignored_monster_species": [ "PSI_NULL" ] + "ignored_monster_species": [ "PSI_NULL", "TELEKIN_PUSHPULL_NULL" ] }, { "id": "telekinetic_noise", @@ -172,7 +172,7 @@ "base_casting_time": 75, "final_casting_time": 30, "casting_time_increment": -3, - "ignored_monster_species": [ "PSI_NULL" ] + "ignored_monster_species": [ "PSI_NULL", "TELEKIN_PUSHPULL_NULL" ] }, { "id": "telekinetic_momentum", @@ -313,7 +313,7 @@ }, "min_range": 1, "max_range": 1, - "ignored_monster_species": [ "PSI_NULL" ] + "ignored_monster_species": [ "PSI_NULL", "TELEKIN_PUSHPULL_NULL" ] }, { "id": "telekinetic_strength", From 9251bde57afdc3dedcfa3f43d2e4749877714343 Mon Sep 17 00:00:00 2001 From: Katie M Date: Sun, 7 Apr 2024 13:30:17 -0400 Subject: [PATCH 08/48] Added standard filtering UI functions to cataimgui::window, implemented in the keybindings UI --- src/cata_imgui.cpp | 56 +++++++++++++++++++++++++------------------ src/cata_imgui.h | 17 ++++--------- src/input_context.cpp | 25 +++++++++++++------ 3 files changed, 56 insertions(+), 42 deletions(-) diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index 357bbd6700fc1..b126b1451a20c 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -461,6 +461,13 @@ class cataimgui::window_impl } }; +class cataimgui::filter_box_impl +{ + public: + char text[255]; // NOLINT(modernize-avoid-c-arrays) + ImGuiID id; +}; + cataimgui::window::window( int window_flags ) { p_impl = nullptr; @@ -600,41 +607,44 @@ cataimgui::bounds cataimgui::window::get_bounds() return { -1.f, -1.f, -1.f, -1.f }; } -class cataimgui::filter_box_impl +void cataimgui::window::draw_filter_box() { - public: - ImGuiID id; -}; - -cataimgui::filter_box::filter_box() -{ - p_impl = new cataimgui::filter_box_impl(); - p_impl->id = 0; - filter_text_impl[0] = '\0'; -} - -cataimgui::filter_box::~filter_box() -{ - delete p_impl; + if( !filter_impl ) { + filter_impl = std::make_unique(); + filter_impl->id = 0; + filter_impl->text[0] = '\0'; + } + ImGui::InputText( "##FILTERBOX", filter_impl->text, + std::extent_v < decltype( filter_impl->text ) > ); + if( !filter_impl->id ) { + filter_impl->id = GImGui->LastItemData.ID; + } } -void cataimgui::filter_box::draw() +std::string cataimgui::window::get_filter() { - ImGui::InputText( "##FILTERBOX", filter_text_impl, std::extent_v< decltype( filter_text_impl )> ); - if( !p_impl->id ) { - p_impl->id = GImGui->LastItemData.ID; + if( filter_impl ) { + return std::string( filter_impl->text ); + } else { + return std::string(); } } -std::string cataimgui::filter_box::get_filter() +void cataimgui::window::clear_filter() { - return std::string( filter_text_impl ); + if( filter_impl && filter_impl->id != 0 ) { + ImGuiInputTextState *input_state = ImGui::GetInputTextState( filter_impl->id ); + if( input_state ) { + input_state->ClearText(); + filter_impl->text[0] = '\0'; + } + } } -void cataimgui::filter_box::set_filter( const std::string &filter ) +void cataimgui::window::set_filter( const std::string &filter ) { // doesnt currently work, relies on API only available in newer ImGUi, because I can't have nice things - //ImGuiInputTextState* input_state = ImGui::GetInputTextState( id ); + //ImGuiInputTextState* input_state = ImGui::GetInputTextState( p_impl->id ); //if( input_state ) { // input_state->ReloadUserBufAndSelectAll(); //} diff --git a/src/cata_imgui.h b/src/cata_imgui.h index bbceac3349751..975736ae3ef57 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -78,6 +78,7 @@ void imvec2_to_point( ImVec2 *src, point *dest ); class window { std::unique_ptr p_impl; + std::unique_ptr filter_impl; bounds cached_bounds; protected: explicit window( int window_flags = 0 ); @@ -102,6 +103,9 @@ class window size_t get_text_height( const char *text ); size_t str_width_to_pixels( size_t len ); size_t str_height_to_pixels( size_t len ); + std::string get_filter(); + void set_filter( const std::string &filter ); + void clear_filter(); void mark_resized(); protected: @@ -112,18 +116,7 @@ class window std::string button_action; virtual bounds get_bounds(); virtual void draw_controls() = 0; -}; - -class filter_box -{ - class filter_box_impl *p_impl; - char filter_text_impl[255]; // NOLINT(modernize-avoid-c-arrays) - public: - filter_box(); - ~filter_box(); - void draw(); - std::string get_filter(); - void set_filter( const std::string &filter ); + void draw_filter_box(); }; #if !(defined(TILES) || defined(WIN32)) diff --git a/src/input_context.cpp b/src/input_context.cpp index cd1c35d458b12..dbc5be997286d 100644 --- a/src/input_context.cpp +++ b/src/input_context.cpp @@ -49,7 +49,6 @@ class keybindings_ui : public cataimgui::window const nc_color h_unbound_key = h_light_red; input_context *ctxt; public: - cataimgui::filter_box filter_box; // current status: adding/removing/reseting/executing/showing keybindings kb_menu_status status = kb_menu_status::show, last_status = kb_menu_status::execute; @@ -664,8 +663,19 @@ void keybindings_ui::draw_controls() if( last_status != status && status == kb_menu_status::filter ) { ImGui::SetKeyboardFocusHere( 0 ); } + if( status != kb_menu_status::filter ) { + action_button( "FILTER", "[/] Set" ); + ImGui::SameLine(); + action_button( "RESET_FILTER", "[r] Clear" ); + ImGui::SameLine(); + } else { + action_button( "QUIT", "[ESC] Cancel" ); + ImGui::SameLine(); + action_button( "TEXT.CONFIRM", "[RET] OK" ); + ImGui::SameLine(); + } ImGui::BeginDisabled( status != kb_menu_status::filter ); - filter_box.draw(); + draw_filter_box(); ImGui::EndDisabled(); ImGui::Separator(); @@ -1301,6 +1311,7 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) ctxt.register_action( "ADD_LOCAL" ); ctxt.register_action( "ADD_GLOBAL" ); ctxt.register_action( "TEXT.CLEAR" ); + ctxt.register_action( "TEXT.CONFIRM" ); ctxt.register_action( "PAGE_UP" ); ctxt.register_action( "PAGE_DOWN" ); ctxt.register_action( "END" ); @@ -1361,14 +1372,14 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) } kb_menu.filtered_registered_actions = filter_strings_by_phrase( org_registered_actions, - kb_menu.filter_box.get_filter() ); + kb_menu.get_filter() ); // In addition to the modifiable hotkeys, we also check for hardcoded // keys, e.g. '+', '-', '=', '.' in order to prevent the user from // entering an unrecoverable state. if( kb_menu.status == kb_menu_status::filter ) { if( action == "QUIT" ) { - kb_menu.filter_box.set_filter( "" ); + kb_menu.clear_filter( ); kb_menu.status = kb_menu_status::show; } else if( action == "TEXT.CONFIRM" ) { kb_menu.status = kb_menu_status::show; @@ -1401,7 +1412,7 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) } else if( action == "PAGE_UP" || action == "PAGE_DOWN" || action == "HOME" || action == "END" ) { continue; // do nothing - on tiles version for some reason this counts as pressing various alphabet keys } else if( action == "TEXT.CLEAR" ) { - kb_menu.filter_box.set_filter( "" ); + kb_menu.clear_filter(); kb_menu.filtered_registered_actions = filter_strings_by_phrase( org_registered_actions, "" ); } else if( !kb_menu.get_is_open() ) { @@ -1409,7 +1420,7 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) } else if( action == "FILTER" ) { kb_menu.status = kb_menu_status::filter; } else if( action == "RESET_FILTER" ) { - kb_menu.filter_box.set_filter( "" ); + kb_menu.clear_filter(); } else if( action == "QUIT" ) { if( kb_menu.status != kb_menu_status::show ) { kb_menu.status = kb_menu_status::show; @@ -1417,7 +1428,7 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) break; } } else if( action == "TEXT.INPUT_FROM_FILE" ) { - kb_menu.filter_box.set_filter( kb_menu.filter_box.get_filter() + get_input_string_from_file() ); + kb_menu.set_filter( kb_menu.get_filter() + get_input_string_from_file() ); } else if( action == "HELP_KEYBINDINGS" ) { // update available hotkeys in case they've changed kb_menu.hotkeys = ctxt.get_available_single_char_hotkeys( display_help_hotkeys ); From 551ec696fbbbd82c59fed63d3d3b830c14b3d7f8 Mon Sep 17 00:00:00 2001 From: Katie M Date: Sun, 7 Apr 2024 13:38:07 -0400 Subject: [PATCH 09/48] Moved drawing of the filter buttons into draw_filter to have standard filter controls --- src/cata_imgui.cpp | 18 ++++++++++++++++-- src/cata_imgui.h | 2 +- src/input_context.cpp | 15 +-------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index b126b1451a20c..d30d604c3bfd4 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -607,15 +607,29 @@ cataimgui::bounds cataimgui::window::get_bounds() return { -1.f, -1.f, -1.f, -1.f }; } -void cataimgui::window::draw_filter_box() +void cataimgui::window::draw_filter(bool filtering_active) { if( !filter_impl ) { filter_impl = std::make_unique(); filter_impl->id = 0; filter_impl->text[0] = '\0'; } + + if( !filtering_active ) { + action_button( "FILTER", "[/] Set" ); + ImGui::SameLine(); + action_button( "RESET_FILTER", "[r] Clear" ); + ImGui::SameLine(); + } else { + action_button( "QUIT", "[ESC] Cancel" ); + ImGui::SameLine(); + action_button( "TEXT.CONFIRM", "[RET] OK" ); + ImGui::SameLine(); + } + ImGui::BeginDisabled( filtering_active ); ImGui::InputText( "##FILTERBOX", filter_impl->text, - std::extent_v < decltype( filter_impl->text ) > ); + std::extent_v < decltype(filter_impl->text) > ); + ImGui::EndDisabled(); if( !filter_impl->id ) { filter_impl->id = GImGui->LastItemData.ID; } diff --git a/src/cata_imgui.h b/src/cata_imgui.h index 975736ae3ef57..388cda4ac5ade 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -116,7 +116,7 @@ class window std::string button_action; virtual bounds get_bounds(); virtual void draw_controls() = 0; - void draw_filter_box(); + void draw_filter(bool filtering_active); }; #if !(defined(TILES) || defined(WIN32)) diff --git a/src/input_context.cpp b/src/input_context.cpp index dbc5be997286d..567b31096d9cc 100644 --- a/src/input_context.cpp +++ b/src/input_context.cpp @@ -663,20 +663,7 @@ void keybindings_ui::draw_controls() if( last_status != status && status == kb_menu_status::filter ) { ImGui::SetKeyboardFocusHere( 0 ); } - if( status != kb_menu_status::filter ) { - action_button( "FILTER", "[/] Set" ); - ImGui::SameLine(); - action_button( "RESET_FILTER", "[r] Clear" ); - ImGui::SameLine(); - } else { - action_button( "QUIT", "[ESC] Cancel" ); - ImGui::SameLine(); - action_button( "TEXT.CONFIRM", "[RET] OK" ); - ImGui::SameLine(); - } - ImGui::BeginDisabled( status != kb_menu_status::filter ); - draw_filter_box(); - ImGui::EndDisabled(); + draw_filter(status == kb_menu_status::filter); ImGui::Separator(); if( last_status != status && status == kb_menu_status::show ) { From e124ab4e6e0e0bd376129d5cac09c7911f3410c9 Mon Sep 17 00:00:00 2001 From: Katie M Date: Sun, 7 Apr 2024 14:54:03 -0400 Subject: [PATCH 10/48] Added functionality to read the keybindings of the filter keys dynamically --- src/cata_imgui.cpp | 13 +++++++------ src/cata_imgui.h | 3 ++- src/input_context.cpp | 40 +++++++++++++++++++++++++++++++++++++++- src/input_context.h | 21 +++++++++++++++++++++ 4 files changed, 69 insertions(+), 8 deletions(-) diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index d30d604c3bfd4..da048e1a3d6c1 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -10,6 +10,7 @@ #include "input.h" #include "output.h" #include "ui_manager.h" +#include "input_context.h" static ImGuiKey cata_key_to_imgui( int cata_key ); @@ -607,7 +608,7 @@ cataimgui::bounds cataimgui::window::get_bounds() return { -1.f, -1.f, -1.f, -1.f }; } -void cataimgui::window::draw_filter(bool filtering_active) +void cataimgui::window::draw_filter( const input_context &ctxt, bool filtering_active ) { if( !filter_impl ) { filter_impl = std::make_unique(); @@ -616,19 +617,19 @@ void cataimgui::window::draw_filter(bool filtering_active) } if( !filtering_active ) { - action_button( "FILTER", "[/] Set" ); + action_button( "FILTER", ctxt.get_button_text( "FILTER" ) ); ImGui::SameLine(); - action_button( "RESET_FILTER", "[r] Clear" ); + action_button( "RESET_FILTER", ctxt.get_button_text( "RESET_FILTER" ) ); ImGui::SameLine(); } else { - action_button( "QUIT", "[ESC] Cancel" ); + action_button( "QUIT", ctxt.get_button_text( "QUIT", _( "Cancel" ) ) ); ImGui::SameLine(); - action_button( "TEXT.CONFIRM", "[RET] OK" ); + action_button( "TEXT.CONFIRM", ctxt.get_button_text( "TEXT.CONFIRM", _( "OK" ) ) ); ImGui::SameLine(); } ImGui::BeginDisabled( filtering_active ); ImGui::InputText( "##FILTERBOX", filter_impl->text, - std::extent_v < decltype(filter_impl->text) > ); + std::extent_v < decltype( filter_impl->text ) > ); ImGui::EndDisabled(); if( !filter_impl->id ) { filter_impl->id = GImGui->LastItemData.ID; diff --git a/src/cata_imgui.h b/src/cata_imgui.h index 388cda4ac5ade..a74d490f7d980 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -18,6 +18,7 @@ struct item_info_data; struct point; class ImVec2; class Font; +class input_context; namespace cataimgui { @@ -116,7 +117,7 @@ class window std::string button_action; virtual bounds get_bounds(); virtual void draw_controls() = 0; - void draw_filter(bool filtering_active); + void draw_filter( const input_context &ctxt, bool filtering_active ); }; #if !(defined(TILES) || defined(WIN32)) diff --git a/src/input_context.cpp b/src/input_context.cpp index 567b31096d9cc..78a02ced16991 100644 --- a/src/input_context.cpp +++ b/src/input_context.cpp @@ -320,6 +320,44 @@ std::string input_context::get_desc( const std::string &action_descriptor, return rval; } + +std::string input_context::get_button_text( const std::string &action_descriptor ) const +{ + std::string action_name = get_action_name( action_descriptor ); + if( action_name.empty() ) { + action_name = action_descriptor; + } + return get_button_text( action_descriptor, action_name ); +} + +std::string input_context::get_button_text( const std::string &action_descriptor, + const std::string &action_text ) const +{ + if( action_descriptor == "ANY_INPUT" ) { + return ""; // what sort of crazy button would this be? + } + + bool is_local = false; + const std::vector &events = inp_mngr.get_input_for_action( action_descriptor, + category, &is_local ); + if( events.empty() ) { + return action_text; + } + + std::vector inputs_to_show; + for( const input_event &event : events ) { + if( is_event_type_enabled( event.type ) ) { + inputs_to_show.push_back( event ); + } + } + + if( inputs_to_show.empty() ) { + return action_text; + } else { + return string_format( "[%s] %s", inputs_to_show[0].long_description(), action_text ); + } +} + std::string input_context::get_desc( const std::string &action_descriptor, const std::string &text, @@ -663,7 +701,7 @@ void keybindings_ui::draw_controls() if( last_status != status && status == kb_menu_status::filter ) { ImGui::SetKeyboardFocusHere( 0 ); } - draw_filter(status == kb_menu_status::filter); + draw_filter( *ctxt, status == kb_menu_status::filter ); ImGui::Separator(); if( last_status != status && status == kb_menu_status::show ) { diff --git a/src/input_context.h b/src/input_context.h index b88624b4519c1..544104496bb95 100644 --- a/src/input_context.h +++ b/src/input_context.h @@ -222,6 +222,27 @@ class input_context unsigned int max_limit = 0, const input_event_filter &evt_filter = allow_all_keys ) const; + /** + * Get a description for the action parameter along with a printable hotkey + * for the description in the format [%s] %s + * + * @param action_descriptor The action descriptor for which to return + * a description of the bound keys. + */ + std::string get_button_text( const std::string &action_descriptor ) const; + + /** + * Get a description for the action parameter along with a printable hotkey + * for the description in the format [%s] %s + * + * @param action_descriptor The action descriptor for which to return + * a description of the bound keys. + * + * @param action_text The human readable description of the action. + */ + std::string get_button_text( const std::string &action_descriptor, + const std::string &action_text ) const; + /** * Get a description based on `text`. If a bound key for `action_descriptor` * satisfying `evt_filter` is contained in `text`, surround the key with From 076bf6d41119a3f1811e1d7a8ef5275155a13602 Mon Sep 17 00:00:00 2001 From: Anton Simakov <67688115+GuardianDll@users.noreply.github.com> Date: Sun, 7 Apr 2024 21:09:49 +0200 Subject: [PATCH 11/48] add enchantment that modifies your dodge chance (#72855) --- data/json/mutations/mutations.json | 26 +++++++++---------- data/mods/DinoMod/mutations/mutations.json | 2 +- .../Magiclysm/mutations/fantasy_species.json | 2 +- data/mods/Magiclysm/mutations/mutations.json | 2 +- doc/MAGIC.md | 3 ++- src/character.cpp | 2 ++ src/magic_enchantment.cpp | 1 + src/magic_enchantment.h | 1 + 8 files changed, 22 insertions(+), 17 deletions(-) diff --git a/data/json/mutations/mutations.json b/data/json/mutations/mutations.json index 71a24a85d6dcc..2a3eabbb17489 100644 --- a/data/json/mutations/mutations.json +++ b/data/json/mutations/mutations.json @@ -1130,7 +1130,7 @@ "sleepiness": true, "kcal": true, "thirst": true, - "enchantments": [ { "values": [ { "value": "MOVE_COST", "multiply": -0.1 }, { "value": "BONUS_DODGE", "add": 2 } ] } ] + "enchantments": [ { "values": [ { "value": "MOVE_COST", "multiply": -0.1 }, { "value": "DODGE_CHANCE", "add": 2 } ] } ] }, { "type": "mutation", @@ -4705,7 +4705,7 @@ "restricts_gear": [ "leg_hip_l", "leg_hip_r" ], "allowed_items": [ "ALLOWS_TAIL" ], "allow_soft_gear": true, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 2 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 2 } ] } ] }, { "type": "mutation", @@ -4721,7 +4721,7 @@ "restricts_gear": [ "leg_hip_l", "leg_hip_r" ], "allowed_items": [ "ALLOWS_TAIL" ], "allow_soft_gear": true, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 1 } ] } ] }, { "type": "mutation", @@ -4737,7 +4737,7 @@ "restricts_gear": [ "leg_hip_l", "leg_hip_r" ], "allowed_items": [ "ALLOWS_TAIL" ], "allow_soft_gear": true, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 2 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 2 } ] } ] }, { "type": "mutation", @@ -4760,7 +4760,7 @@ "chance": 20, "base_damage": { "damage_type": "bash", "amount": 8 } }, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 1 } ] } ] }, { "type": "mutation", @@ -4799,7 +4799,7 @@ "restricts_gear": [ "leg_hip_l", "leg_hip_r" ], "allowed_items": [ "ALLOWS_TAIL" ], "allow_soft_gear": true, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 3 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 3 } ] } ] }, { "type": "mutation", @@ -4815,7 +4815,7 @@ "allowed_items": [ "ALLOWS_TAIL" ], "allow_soft_gear": true, "social_modifiers": { "lie": -20, "persuade": 10 }, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 4 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 4 } ] } ] }, { "type": "mutation", @@ -6129,7 +6129,7 @@ "enchantments": [ { "values": [ - { "value": "BONUS_DODGE", "add": 1 }, + { "value": "DODGE_CHANCE", "add": 1 }, { "value": "MAX_HP", "multiply": -0.05 }, { "value": "STOMACH_SIZE_MULTIPLIER", "multiply": -0.5 }, { "value": "CARRY_WEIGHT", "multiply": -0.2 } @@ -6153,7 +6153,7 @@ "enchantments": [ { "values": [ - { "value": "BONUS_DODGE", "add": 2 }, + { "value": "DODGE_CHANCE", "add": 2 }, { "value": "MAX_HP", "multiply": -0.3 }, { "value": "FOOTSTEP_NOISE", "multiply": -1 }, { "value": "CARRY_WEIGHT", "multiply": -0.5 }, @@ -6179,7 +6179,7 @@ "enchantments": [ { "values": [ - { "value": "BONUS_DODGE", "add": 2 }, + { "value": "DODGE_CHANCE", "add": 2 }, { "value": "MAX_HP", "multiply": -0.25 }, { "value": "FOOTSTEP_NOISE", "multiply": -1 }, { "value": "STOMACH_SIZE_MULTIPLIER", "multiply": -0.5 }, @@ -6404,7 +6404,7 @@ "category": [ "INSECT" ], "restricts_gear": [ "torso" ], "social_modifiers": { "lie": 15, "persuade": 5, "intimidate": -20 }, - "enchantments": [ { "values": [ { "value": "MOVE_COST", "multiply": -0.1 }, { "value": "BONUS_DODGE", "add": -4 } ] } ], + "enchantments": [ { "values": [ { "value": "MOVE_COST", "multiply": -0.1 }, { "value": "DODGE_CHANCE", "add": -4 } ] } ], "flags": [ "WINGS_1" ] }, { @@ -6742,7 +6742,7 @@ { "value": "ATTACK_SPEED", "multiply": 0.05 }, { "value": "MAX_HP", "add": 4 }, { "value": "MOVECOST_SWIM_MOD", "multiply": 0.2 }, - { "value": "BONUS_DODGE", "add": -1 }, + { "value": "DODGE_CHANCE", "add": -1 }, { "value": "CARRY_WEIGHT", "multiply": 0.15 } ] } @@ -9186,7 +9186,7 @@ "points": 2, "description": "You have fast reflexes, allowing you to dodge attacks more easily.", "starting_trait": true, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 3 } ] } ], + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 3 } ] } ], "category": [ "FELINE" ] }, { diff --git a/data/mods/DinoMod/mutations/mutations.json b/data/mods/DinoMod/mutations/mutations.json index ff5b1658c04aa..cfb951aae1397 100644 --- a/data/mods/DinoMod/mutations/mutations.json +++ b/data/mods/DinoMod/mutations/mutations.json @@ -390,7 +390,7 @@ "base_damage": { "damage_type": "bash", "amount": 24 }, "strength_damage": { "damage_type": "stab", "amount": 2 } }, - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": 1 } ] } ] + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": 1 } ] } ] }, { "type": "mutation", diff --git a/data/mods/Magiclysm/mutations/fantasy_species.json b/data/mods/Magiclysm/mutations/fantasy_species.json index 213ffba792489..15b9ea9862be7 100644 --- a/data/mods/Magiclysm/mutations/fantasy_species.json +++ b/data/mods/Magiclysm/mutations/fantasy_species.json @@ -502,7 +502,7 @@ "enchantments": [ { "values": [ - { "value": "BONUS_DODGE", "add": 2 }, + { "value": "DODGE_CHANCE", "add": 2 }, { "value": "MAX_HP", "multiply": -0.25 }, { "value": "STRENGTH", "add": -3 }, { "value": "DEXTERITY", "add": 2 }, diff --git a/data/mods/Magiclysm/mutations/mutations.json b/data/mods/Magiclysm/mutations/mutations.json index d5f0c4f864aee..f1c1d4eedea71 100644 --- a/data/mods/Magiclysm/mutations/mutations.json +++ b/data/mods/Magiclysm/mutations/mutations.json @@ -497,7 +497,7 @@ "prereqs": [ "WINGS_STUB" ], "category": [ "DRAGON_BLACK" ], "threshreq": [ "THRESH_DRAGON_BLACK" ], - "enchantments": [ { "values": [ { "value": "BONUS_DODGE", "add": -3 } ] } ], + "enchantments": [ { "values": [ { "value": "DODGE_CHANCE", "add": -3 } ] } ], "attacks": { "attack_text_u": "You bash %s with your powerful wings!", "attack_text_npc": "%1$s bashes %2$s with their powerful wings!", diff --git a/doc/MAGIC.md b/doc/MAGIC.md index 138388d7f25d7..fb994f6d2b7e1 100644 --- a/doc/MAGIC.md +++ b/doc/MAGIC.md @@ -807,7 +807,7 @@ Character status value | Description `BLEED_STOP_BONUS` | Affects the `bleed` level when applying medicine. `BODYTEMP_SLEEP` | Amount of warmth (in celcius) added to you when you sleep. Default is 0, so better to use `add` `BONUS_BLOCK` | Affects the number of blocks you can perform. -`BONUS_DODGE` | Affects the number of dodges you can perform. +`BONUS_DODGE` | Affects the number of dodges you can perform. Do not confuse with `DODGE_CHANCE` `CARDIO_MULTIPLIER` | Affects total cardio fitness by this amount. Since it's a percent, using `multiply` is recommended. `CARRY_WEIGHT` | Affect the summary weight player can carry. `"add": 1000` adds 1 kg of weight to carry. `CASTING_TIME_MULTIPLIER` | Same as mutation `casting_time_multiplier` field, changes your casting speed. Since it's a percent, using `multiply` is recommended. `"multiply": 2"` triples the casting speed @@ -818,6 +818,7 @@ Character status value | Description `CRAFTING_SPEED_MULTIPLIER` | Changes your crafting speed. Since it's a percent, using `multiply` is recommended. Positive values decrease crafting time, negative values increase it. `DEXTERITY` | Affects the dexterity stat. `DISINFECTANT_BONUS` | Affects the `disinfectant_power` you have when applying medicine. +`DODGE_CHANCE` | Modifies the probability to dodge an attack. Default is 0, so better to use `add` `EFFECTIVE_HEALTH_MOD` | If this is anything other than zero (which it defaults to) you will use it instead of your actual health mod. `EXTRA_ACID` | EXTRA_TYPE increases received damage of the selected type. `EXTRA_BASH` | diff --git a/src/character.cpp b/src/character.cpp index 887c229660fbb..ff6e84bf2cc00 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -3770,6 +3770,8 @@ void Character::reset_stats() update_mental_focus(); } + mod_dodge_bonus( enchantment_cache->modify_value( enchant_vals::mod::DODGE_CHANCE, 0 ) ); + /** @EFFECT_STR_MAX above 15 decreases Dodge bonus by 1 (NEGATIVE) */ if( str_max >= 16 ) { mod_dodge_bonus( -1 ); // Penalty if we're huge diff --git a/src/magic_enchantment.cpp b/src/magic_enchantment.cpp index 24005ad1a702f..c73c98728a234 100644 --- a/src/magic_enchantment.cpp +++ b/src/magic_enchantment.cpp @@ -87,6 +87,7 @@ namespace io case enchant_vals::mod::PAIN_PENALTY_MOD_SPEED: return "PAIN_PENALTY_MOD_SPEED"; case enchant_vals::mod::MELEE_DAMAGE: return "MELEE_DAMAGE"; case enchant_vals::mod::RANGED_DAMAGE: return "RANGED_DAMAGE"; + case enchant_vals::mod::DODGE_CHANCE: return "DODGE_CHANCE"; case enchant_vals::mod::BONUS_BLOCK: return "BONUS_BLOCK"; case enchant_vals::mod::BONUS_DODGE: return "BONUS_DODGE"; case enchant_vals::mod::ATTACK_NOISE: return "ATTACK_NOISE"; diff --git a/src/magic_enchantment.h b/src/magic_enchantment.h index 8d2e46e52b2d6..71ce85a7b4b30 100644 --- a/src/magic_enchantment.h +++ b/src/magic_enchantment.h @@ -62,6 +62,7 @@ enum class mod : int { PAIN_PENALTY_MOD_INT, PAIN_PENALTY_MOD_PER, PAIN_PENALTY_MOD_SPEED, + DODGE_CHANCE, BONUS_DODGE, BONUS_BLOCK, MELEE_DAMAGE, From cfa27a825ae12e23c59c34d72a8da3ff234d9e14 Mon Sep 17 00:00:00 2001 From: Katie M Date: Sun, 7 Apr 2024 15:33:54 -0400 Subject: [PATCH 12/48] fixing some clang-related errors --- src/cata_imgui.cpp | 16 ++++++++-------- src/cata_imgui.h | 2 +- src/input_context.cpp | 3 ++- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index da048e1a3d6c1..d4dcbe3c95baf 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -656,11 +656,11 @@ void cataimgui::window::clear_filter() } } -void cataimgui::window::set_filter( const std::string &filter ) -{ - // doesnt currently work, relies on API only available in newer ImGUi, because I can't have nice things - //ImGuiInputTextState* input_state = ImGui::GetInputTextState( p_impl->id ); - //if( input_state ) { - // input_state->ReloadUserBufAndSelectAll(); - //} -} +//void cataimgui::window::set_filter( const std::string &filter ) +//{ +// // doesnt currently work, relies on API only available in newer ImGUi, because I can't have nice things +// //ImGuiInputTextState* input_state = ImGui::GetInputTextState( p_impl->id ); +// //if( input_state ) { +// // input_state->ReloadUserBufAndSelectAll(); +// //} +//} diff --git a/src/cata_imgui.h b/src/cata_imgui.h index a74d490f7d980..25da9eea3f43b 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -105,7 +105,7 @@ class window size_t str_width_to_pixels( size_t len ); size_t str_height_to_pixels( size_t len ); std::string get_filter(); - void set_filter( const std::string &filter ); + //void set_filter( const std::string &filter ); void clear_filter(); void mark_resized(); diff --git a/src/input_context.cpp b/src/input_context.cpp index 78a02ced16991..1271bb258504c 100644 --- a/src/input_context.cpp +++ b/src/input_context.cpp @@ -1453,7 +1453,8 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) break; } } else if( action == "TEXT.INPUT_FROM_FILE" ) { - kb_menu.set_filter( kb_menu.get_filter() + get_input_string_from_file() ); + //kb_menu.set_filter( kb_menu.get_filter() + get_input_string_from_file() ); + continue; } else if( action == "HELP_KEYBINDINGS" ) { // update available hotkeys in case they've changed kb_menu.hotkeys = ctxt.get_available_single_char_hotkeys( display_help_hotkeys ); From ab7c93718e08e63bbe19b3e0ef0dccb105ff015e Mon Sep 17 00:00:00 2001 From: RenechCDDA <84619419+RenechCDDA@users.noreply.github.com> Date: Sun, 7 Apr 2024 16:02:52 -0400 Subject: [PATCH 13/48] ACTUALLY fix negative rest --- doc/JSON_INFO.md | 6 +++--- src/character.cpp | 15 +++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/doc/JSON_INFO.md b/doc/JSON_INFO.md index b6d6e89c8d2df..e0801c2d682c6 100644 --- a/doc/JSON_INFO.md +++ b/doc/JSON_INFO.md @@ -2972,7 +2972,7 @@ See [MUTATIONS.md](MUTATIONS.md) "always_invisible": true, // Super well hidden traps the player can never detect "funnel_radius": 200, // millimeters. The higher the more rain it will capture. "comfort": 0, // Same property affecting furniture and terrain - "floor_bedding_warmth": -500, // Same property affecting furniture and terrain + "floor_bedding_warmth": -500, // Same property affecting furniture and terrain. Also affects how comfortable a resting place this is(affects healing). Vanilla values should not exceed 1000. "spell_data": { "id": "bear_trap" }, // data required for trapfunc::spell() "trigger_weight": "200 g", // If an item with this weight or more is thrown onto the trap, it triggers. Defaults to 500 grams. "drops": [ "beartrap" ], // ID of item spawned when disassembled @@ -3201,7 +3201,7 @@ These values apply to crafting tasks performed at the WORKBENCH. #### The following optional fields are specific to SEATs. ```c++ "comfort": 3, // (Optional, default=0). Sleeping comfort as for terrain/furniture. -"floor_bedding_warmth": 300, // (Optional, default=0). Bonus warmth as for terrain/furniture. +"floor_bedding_warmth": 300, // (Optional, default=0). Bonus warmth as for terrain/furniture. Also affects how comfortable a resting place this is(affects healing). Vanilla values should not exceed 1000. "bonus_fire_warmth_feet": 200,// (Optional, default=0). Bonus fire warmth as for terrain/furniture. ``` @@ -5438,7 +5438,7 @@ How comfortable this terrain/furniture is. Impact ability to fall asleep on it. #### `floor_bedding_warmth` -Bonus warmth offered by this terrain/furniture when used to sleep. +Bonus warmth offered by this terrain/furniture when used to sleep. Also affects how comfortable a resting place this is(affects healing). Vanilla values should not exceed 1000. #### `bonus_fire_warmth_feet` diff --git a/src/character.cpp b/src/character.cpp index 887c229660fbb..b65e7774fe087 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -6143,6 +6143,7 @@ float Character::rest_quality() const map &here = get_map(); const tripoint your_pos = pos(); float rest = 0.0f; + const float ur_act_level = instantaneous_activity_level(); // Negative morales are penalties int cold_penalty = -has_morale( morale_cold ); int heat_penalty = -has_morale( morale_hot ); @@ -6160,7 +6161,7 @@ float Character::rest_quality() const } const optional_vpart_position veh_part = here.veh_at( your_pos ); bool has_vehicle_seat = !!veh_part.part_with_feature( "SEAT", true ); - if( activity_level() <= LIGHT_EXERCISE ) { + if( ur_act_level <= LIGHT_EXERCISE ) { rest += 0.1f; if( here.has_flag_ter_or_furn( "CAN_SIT", your_pos.xy() ) || has_vehicle_seat ) { // If not performing any real exercise (not even moving around), chairs allow you to rest a little bit. @@ -6169,20 +6170,21 @@ float Character::rest_quality() const // Any comfortable bed can substitute for a chair, but only if you don't have one. rest += 0.2f * ( units::to_celsius_delta( floor_bedding_warmth( your_pos ) ) / 2.0f ); } - if( activity_level() <= NO_EXERCISE ) { + if( ur_act_level <= NO_EXERCISE ) { rest += 0.2f; } } // These stack! - if( activity_level() >= BRISK_EXERCISE ) { + if( ur_act_level >= BRISK_EXERCISE ) { rest -= 0.1f; } - if( activity_level() >= ACTIVE_EXERCISE ) { + if( ur_act_level >= ACTIVE_EXERCISE ) { rest -= 0.2f; } - if( activity_level() >= EXTRA_EXERCISE ) { + if( ur_act_level >= EXTRA_EXERCISE ) { rest -= 0.3f; } + add_msg_debug( debugmode::DF_CHAR_HEALTH, "%s resting quality: %.6f", get_name(), rest ); return rest; } @@ -6321,7 +6323,8 @@ float Character::healing_rate_medicine( float at_rest_quality, const bodypart_id rate_medicine = enchantment_cache->modify_value( enchant_vals::mod::REGEN_HP, rate_medicine ); - rate_medicine *= 1.0f + clamp( at_rest_quality, 0.0f, 1.0f ); + // Sufficiently negative rest quality can completely eliminate your healing, but never turn it negative. + rate_medicine *= 1.0f + std::max( at_rest_quality, -1.0f ); // increase healing if character has both effects if( has_effect( effect_bandaged ) && has_effect( effect_disinfected ) ) { From a36706c8ee13aa68537e15572f5b06e05d4d870e Mon Sep 17 00:00:00 2001 From: casswedson Date: Sun, 7 Apr 2024 17:50:36 -0500 Subject: [PATCH 14/48] comprehensive deprecation warning updates I found a script to list deprecation warningins, used it to hunt down and update where possible
Updates
https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/8591189271 fixes for this warning: https://github.com/robinraju/release-downloader: https://github.com/robinraju/release-downloader/releases/tag/v1.9 https://github.com/microsoft/setup-msbuild: https://github.com/microsoft/setup-msbuild/releases/tag/v2 --- https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/8591644385 fixes for this warning: https://github.com/dawidd6/action-download-artifact: https://github.com/dawidd6/action-download-artifact/releases/tag/v3.0.0 https://github.com/actions/github-script: https://github.com/actions/github-script/releases/tag/v3.2.0 --- https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/8591882733 fixes for this warning: https://github.com/dawidd6/action-download-artifact: https://github.com/dawidd6/action-download-artifact/releases/tag/v3.0.0 --- https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/8591875949 fixes for this warning: https://github.com/actions/upload-artifact/releases/tag/v3.1.1 --- https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/8591892692 fixes for this warning: make the action fetch the main branch, it did not fix the warning; guess I'll wait till it's fixed https://github.com/rytswd/comvent --- https://github.com/CleverRaven/Cataclysm-DDA/actions/runs/8589494562 fixes for this warning: *update msbuild* https://github.com/actions/setup-java: https://github.com/actions/setup-java/releases/tag/v4.0.0 https://github.com/docker/login-action: https://github.com/docker/login-action/releases/tag/v3.0.0
--- .github/workflows/CBA.yml | 2 +- .github/workflows/astyle.yml | 2 +- .github/workflows/check-branch-name.yml | 2 +- .github/workflows/clang-tidy.yml | 2 +- .github/workflows/comment-commands.yml | 4 ++-- .github/workflows/detect-translation-file-changes.yml | 2 +- .github/workflows/format_emscripten.yml | 4 ++-- .github/workflows/json.yml | 2 +- .github/workflows/matrix.yml | 6 +++--- .github/workflows/msvc-full-features.yml | 4 ++-- .github/workflows/post-spell-check-result.yml | 8 ++++---- .github/workflows/pull-translations.yml | 2 +- .github/workflows/release.yml | 6 +++--- .github/workflows/test_labeler.yml | 8 ++++---- .github/workflows/text-changes-analyzer.yml | 6 +++--- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/workflows/CBA.yml b/.github/workflows/CBA.yml index 152a66235cf2d..34684c3ca3fb7 100644 --- a/.github/workflows/CBA.yml +++ b/.github/workflows/CBA.yml @@ -34,7 +34,7 @@ jobs: ClangBuildAnalyzer --stop . buildAnalysis - name: Analyze run: ClangBuildAnalyzer --analyze buildAnalysis - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 with: name: ClangBuildAnalyzer-traces path: "**/obj/*.json" diff --git a/.github/workflows/astyle.yml b/.github/workflows/astyle.yml index 1d5fe95dada10..cb839f1bf3883 100644 --- a/.github/workflows/astyle.yml +++ b/.github/workflows/astyle.yml @@ -16,7 +16,7 @@ jobs: cancel_others: 'true' paths: '[".github/workflows/astyle.yml", "Makefile", ".astylerc", "**.cpp", "**.h", "**.c"]' - run: echo ${{ github.event.number }} > pull_request_id - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 with: name: pull_request_id path: pull_request_id diff --git a/.github/workflows/check-branch-name.yml b/.github/workflows/check-branch-name.yml index 57a6a908256f4..b860cb3cd5cc3 100644 --- a/.github/workflows/check-branch-name.yml +++ b/.github/workflows/check-branch-name.yml @@ -11,7 +11,7 @@ jobs: if: github.head_ref == 'master' && github.repository == 'CleverRaven/Cataclysm-DDA' steps: - name: Post warning - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/clang-tidy.yml b/.github/workflows/clang-tidy.yml index ed70cd3d7327c..1b8080303e3cb 100644 --- a/.github/workflows/clang-tidy.yml +++ b/.github/workflows/clang-tidy.yml @@ -84,7 +84,7 @@ jobs: run: bash ./build-scripts/requirements.sh - name: determine changed files if: ${{ github.event_name == 'pull_request' }} - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: script: | var fs = require('fs'); diff --git a/.github/workflows/comment-commands.yml b/.github/workflows/comment-commands.yml index 3a3df16611c12..075c4586cfd8d 100644 --- a/.github/workflows/comment-commands.yml +++ b/.github/workflows/comment-commands.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 - name: Set-up Comvent - uses: rytswd/comvent@v0.5.2 + uses: rytswd/comvent@main id: comvent with: token: ${{ secrets.GITHUB_TOKEN }} @@ -65,7 +65,7 @@ jobs: uses: actions/checkout@v4 - name: Set-up Comvent - uses: rytswd/comvent@v0.5.2 + uses: rytswd/comvent@main id: comvent with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/detect-translation-file-changes.yml b/.github/workflows/detect-translation-file-changes.yml index 4695763dd94fe..6f7aab063b730 100644 --- a/.github/workflows/detect-translation-file-changes.yml +++ b/.github/workflows/detect-translation-file-changes.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: "Detect translation file changes" - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/format_emscripten.yml b/.github/workflows/format_emscripten.yml index 82c1993cd2096..e98c2f5eb2312 100644 --- a/.github/workflows/format_emscripten.yml +++ b/.github/workflows/format_emscripten.yml @@ -31,7 +31,7 @@ jobs: run: ls -a - name: Upload zipped html as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: formatter path: formatter.html @@ -40,7 +40,7 @@ jobs: with: ref: gh-pages - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v3.1.4 with: name: formatter diff --git a/.github/workflows/json.yml b/.github/workflows/json.yml index 518e3b7805995..623d36a3f2168 100644 --- a/.github/workflows/json.yml +++ b/.github/workflows/json.yml @@ -16,7 +16,7 @@ jobs: cancel_others: 'true' paths: '["**.json", ".github/workflows/json.yml"]' - run: echo ${{ github.event.number }} > pull_request_id - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 with: name: pull_request_id path: pull_request_id diff --git a/.github/workflows/matrix.yml b/.github/workflows/matrix.yml index ae20d8883c855..bfa5623351033 100644 --- a/.github/workflows/matrix.yml +++ b/.github/workflows/matrix.yml @@ -333,18 +333,18 @@ jobs: echo ${{ github.event.number }} > pull_request_id echo "false" > ${{ env.ARCHIVE_SUCCESS }} if: ${{ env.ARCHIVE_SUCCESS && failure() }} - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 if: ${{ always() && env.ARCHIVE_SUCCESS }} with: name: pull_request_id path: pull_request_id - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 if: ${{ always() && env.ARCHIVE_SUCCESS }} with: name: ${{ env.ARCHIVE_SUCCESS }} path: ${{ env.ARCHIVE_SUCCESS }} - name: upload artifacts if failed - uses: actions/upload-artifact@v3.1.2 + uses: actions/upload-artifact@v4 if: failure() with: name: cata_test diff --git a/.github/workflows/msvc-full-features.yml b/.github/workflows/msvc-full-features.yml index 62290662666b8..1d5baeeccd105 100644 --- a/.github/workflows/msvc-full-features.yml +++ b/.github/workflows/msvc-full-features.yml @@ -68,7 +68,7 @@ jobs: make - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v1.3.1 + uses: microsoft/setup-msbuild@v2 - name: Use GNU tar to enable zstd for actions/cache run: | @@ -91,7 +91,7 @@ jobs: vcpkg integrate install --vcpkg-root '${{ runner.workspace }}\b\vcpkg' - name: Download ccache - uses: robinraju/release-downloader@v1.4 + uses: robinraju/release-downloader@v1.9 with: repository: 'ccache/ccache' tag: 'v4.6.1' diff --git a/.github/workflows/post-spell-check-result.yml b/.github/workflows/post-spell-check-result.yml index c093c5b28ca6b..f8b321db0ceed 100644 --- a/.github/workflows/post-spell-check-result.yml +++ b/.github/workflows/post-spell-check-result.yml @@ -16,13 +16,13 @@ jobs: github.event.workflow_run.conclusion == 'success' }} steps: - name: Download pr id artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3.1.4 with: workflow: ${{ github.event.workflow_run.name }} run_id: ${{ github.event.workflow_run.id }} name: pull_request_id - name: Download spell check retcode artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3.1.4 with: workflow: ${{ github.event.workflow_run.name }} run_id: ${{ github.event.workflow_run.id }} @@ -32,14 +32,14 @@ jobs: run: echo "spell-check-retcode=$( cat spell_check_retcode )" >> $GITHUB_OUTPUT - name: Download spell check output artifact if: steps.set-spell-check-retcode.outputs.spell-check-retcode >= 1 - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3.1.4 with: workflow: ${{ github.event.workflow_run.name }} run_id: ${{ github.event.workflow_run.id }} name: spell_check_output - name: 'Comment on PR' if: steps.set-spell-check-retcode.outputs.spell-check-retcode >= 1 - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/pull-translations.yml b/.github/workflows/pull-translations.yml index 7723463308728..bf0f129e69219 100644 --- a/.github/workflows/pull-translations.yml +++ b/.github/workflows/pull-translations.yml @@ -15,7 +15,7 @@ jobs: run: | curl -sL https://github.com/transifex/cli/releases/download/v1.6.4/tx-linux-amd64.tar.gz | sudo tar zxvf - -C /usr/bin tx - name: "Delete existing i18n branch" - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: github-token: ${{ secrets.TX_PR_CREATOR }} script: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3c5e9beba5759..d9910443c6470 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -195,7 +195,7 @@ jobs: uses: lukka/get-cmake@latest - name: Install dependencies (windows msvc) (1/4) if: runner.os == 'Windows' - uses: microsoft/setup-msbuild@v1.3.1 + uses: microsoft/setup-msbuild@v2 - name: Install dependencies (windows msvc) (2/4) if: runner.os == 'Windows' uses: lukka/run-vcpkg@v11 @@ -297,7 +297,7 @@ jobs: (cd build && zip ../cdda-${{ matrix.artifact }}-${{ needs.release.outputs.timestamp }}.${{ matrix.ext }} *) - name: Login to GitHub Container Registry if: matrix.artifact == 'windows-objectcreator-x64' || matrix.artifact == 'linux-objectcreator-x64' - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} @@ -357,7 +357,7 @@ jobs: mv Cataclysm.dmg cdda-${{ matrix.artifact }}-${{ needs.release.outputs.timestamp }}.dmg - name: Set up JDK 8 (android) if: runner.os == 'Linux' && matrix.android != 'none' && matrix.mxe == 'none' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: '11' distribution: 'adopt' diff --git a/.github/workflows/test_labeler.yml b/.github/workflows/test_labeler.yml index 5b57a99ebf1d2..b4d34ba6b3e0b 100644 --- a/.github/workflows/test_labeler.yml +++ b/.github/workflows/test_labeler.yml @@ -24,7 +24,7 @@ jobs: fi - name: Download success artifact from basic build if: ${{ github.event.workflow_run.name == 'General build matrix' }} - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3.1.4 with: workflow: ${{ github.event.workflow_run.name }} run_id: ${{ github.event.workflow_run.id }} @@ -33,7 +33,7 @@ jobs: id: set-basic-build-success run: echo "basic-build-success=$( cat basic-build )" >> $GITHUB_OUTPUT - name: Download pr id artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v3.1.4 with: workflow: ${{ github.event.workflow_run.name }} run_id: ${{ github.event.workflow_run.id }} @@ -43,7 +43,7 @@ jobs: run: echo "pr-id=$( cat pull_request_id )" >> $GITHUB_OUTPUT - name: set-label if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.conclusion != 'skipped' || steps.set-basic-build-success.outputs.basic-build-success == 'true' }} - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: script: | if ('${{ steps.set-pr-id.outputs.pr-id }}'.trim().length == 0) { @@ -58,7 +58,7 @@ jobs: } - name: remove-label if: ${{ github.event.workflow_run.conclusion == 'failure' && steps.set-basic-build-success.outputs.basic-build-success != 'true' }} - uses: actions/github-script@v6.3.3 + uses: actions/github-script@v7 with: script: | if ('${{ steps.set-pr-id.outputs.pr-id }}'.trim().length == 0) { diff --git a/.github/workflows/text-changes-analyzer.yml b/.github/workflows/text-changes-analyzer.yml index 39c26dbc839d5..07ad4b601ddef 100644 --- a/.github/workflows/text-changes-analyzer.yml +++ b/.github/workflows/text-changes-analyzer.yml @@ -68,15 +68,15 @@ jobs: wc -c spell_check_output | grep -o '[0-9]*' > spell_check_retcode echo "length=$(cat spell_check_retcode)" >> $GITHUB_OUTPUT - run: echo ${{ github.event.number }} > pull_request_id - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 with: name: pull_request_id path: pull_request_id - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 with: name: spell_check_retcode path: spell_check_retcode - - uses: actions/upload-artifact@v3.1.2 + - uses: actions/upload-artifact@v4 if: steps.get_length.outputs.length >= 1 with: name: spell_check_output From f9b0f34140bdbf4d9ccc9bb785140b53f1566446 Mon Sep 17 00:00:00 2001 From: Kate M Date: Sun, 7 Apr 2024 21:09:42 -0400 Subject: [PATCH 15/48] Dealt with suggestions, fixed a regression in keyboard focusing upon starting/stopping filtering --- src/cata_imgui.cpp | 19 +++++-------------- src/cata_imgui.h | 1 - src/input_context.cpp | 7 ++----- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/cata_imgui.cpp b/src/cata_imgui.cpp index d4dcbe3c95baf..42228fbf5f8cd 100644 --- a/src/cata_imgui.cpp +++ b/src/cata_imgui.cpp @@ -465,7 +465,7 @@ class cataimgui::window_impl class cataimgui::filter_box_impl { public: - char text[255]; // NOLINT(modernize-avoid-c-arrays) + std::array text; ImGuiID id; }; @@ -627,9 +627,9 @@ void cataimgui::window::draw_filter( const input_context &ctxt, bool filtering_a action_button( "TEXT.CONFIRM", ctxt.get_button_text( "TEXT.CONFIRM", _( "OK" ) ) ); ImGui::SameLine(); } - ImGui::BeginDisabled( filtering_active ); - ImGui::InputText( "##FILTERBOX", filter_impl->text, - std::extent_v < decltype( filter_impl->text ) > ); + ImGui::BeginDisabled( !filtering_active ); + ImGui::InputText( "##FILTERBOX", filter_impl->text.data(), + filter_impl->text.size() ); ImGui::EndDisabled(); if( !filter_impl->id ) { filter_impl->id = GImGui->LastItemData.ID; @@ -639,7 +639,7 @@ void cataimgui::window::draw_filter( const input_context &ctxt, bool filtering_a std::string cataimgui::window::get_filter() { if( filter_impl ) { - return std::string( filter_impl->text ); + return std::string( filter_impl->text.data() ); } else { return std::string(); } @@ -655,12 +655,3 @@ void cataimgui::window::clear_filter() } } } - -//void cataimgui::window::set_filter( const std::string &filter ) -//{ -// // doesnt currently work, relies on API only available in newer ImGUi, because I can't have nice things -// //ImGuiInputTextState* input_state = ImGui::GetInputTextState( p_impl->id ); -// //if( input_state ) { -// // input_state->ReloadUserBufAndSelectAll(); -// //} -//} diff --git a/src/cata_imgui.h b/src/cata_imgui.h index 25da9eea3f43b..50db9dbe4e519 100644 --- a/src/cata_imgui.h +++ b/src/cata_imgui.h @@ -105,7 +105,6 @@ class window size_t str_width_to_pixels( size_t len ); size_t str_height_to_pixels( size_t len ); std::string get_filter(); - //void set_filter( const std::string &filter ); void clear_filter(); void mark_resized(); diff --git a/src/input_context.cpp b/src/input_context.cpp index 1271bb258504c..ce36e2caf2220 100644 --- a/src/input_context.cpp +++ b/src/input_context.cpp @@ -698,10 +698,10 @@ void keybindings_ui::draw_controls() for( ; legend_idx < legend.size(); legend_idx++ ) { draw_colored_text( legend[legend_idx], c_white ); } + draw_filter( *ctxt, status == kb_menu_status::filter ); if( last_status != status && status == kb_menu_status::filter ) { - ImGui::SetKeyboardFocusHere( 0 ); + ImGui::SetKeyboardFocusHere( -1 ); } - draw_filter( *ctxt, status == kb_menu_status::filter ); ImGui::Separator(); if( last_status != status && status == kb_menu_status::show ) { @@ -1452,9 +1452,6 @@ action_id input_context::display_menu_imgui( const bool permit_execute_action ) } else { break; } - } else if( action == "TEXT.INPUT_FROM_FILE" ) { - //kb_menu.set_filter( kb_menu.get_filter() + get_input_string_from_file() ); - continue; } else if( action == "HELP_KEYBINDINGS" ) { // update available hotkeys in case they've changed kb_menu.hotkeys = ctxt.get_available_single_char_hotkeys( display_help_hotkeys ); From ea8f34c490cdeb6461f76f4e6790ca9ed6927af4 Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Sun, 7 Apr 2024 23:43:07 -0500 Subject: [PATCH 16/48] [MoM] Oubliette works on NPCs now (#72876) * Add NO_PROJECTILE * Initial commit * Messaging fixes * Update spoiler documentation * Further clarifications * Kick tests --- .../PowerDescriptionSpoilers.md | 2 +- .../MindOverMatter/powers/telekinesis.json | 2 +- .../MindOverMatter/powers/teleportation.json | 23 ++++++- .../powers/teleportation_eoc.json | 64 +++++++++++++++++++ 4 files changed, 87 insertions(+), 4 deletions(-) diff --git a/data/mods/MindOverMatter/PowerDescriptionSpoilers.md b/data/mods/MindOverMatter/PowerDescriptionSpoilers.md index 6b1d2645e8ede..f6861a414927c 100644 --- a/data/mods/MindOverMatter/PowerDescriptionSpoilers.md +++ b/data/mods/MindOverMatter/PowerDescriptionSpoilers.md @@ -1061,7 +1061,7 @@ Powers causing telepathic damage have a 5% chance to down the target, a 33% chan *Duration*: Instant
*Stamina Cost*: 7500, minus 170 per level to a minimum of 4600
*Channeling Time*: 150 moves, minus 5.5 moves per level to a minimum of 75
-*Effects*: Teleports a single monster somewhere *else*, removing them and anything they might drop. The monster must have HP lower than 15 to 350, plus 15 to 35 per power level, randomly determined when the power is used. Oubliette cannot currently affect NPCs.
+*Effects*: Teleports a single target somewhere *else*, removing them and anything they might drop. The target must have HP lower than 15 to 350, plus 15 to 35 per power level, randomly determined when the power is used. For this purpose, NPC health is calculated as the sum total of their limb health, divided by 3.
*Prerequisites*: Displacement 10, Farstep 6 *or* Transposition 8 *or * Spacial Vortex 8
## Gateway diff --git a/data/mods/MindOverMatter/powers/telekinesis.json b/data/mods/MindOverMatter/powers/telekinesis.json index 8cd93e676255b..68170fb5f3fe6 100644 --- a/data/mods/MindOverMatter/powers/telekinesis.json +++ b/data/mods/MindOverMatter/powers/telekinesis.json @@ -91,7 +91,7 @@ "valid_targets": [ "ground" ], "spell_class": "TELEKINETIC", "skill": "metaphysics", - "flags": [ "PSIONIC", "CONCENTRATE", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX" ], + "flags": [ "PSIONIC", "CONCENTRATE", "RANDOM_DAMAGE", "NO_PROJECTILE", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX" ], "difficulty": 2, "max_level": { "math": [ "int_to_level(1)" ] }, "effect": "noise", diff --git a/data/mods/MindOverMatter/powers/teleportation.json b/data/mods/MindOverMatter/powers/teleportation.json index 4d9c20c927d9a..92e43f10f5acb 100644 --- a/data/mods/MindOverMatter/powers/teleportation.json +++ b/data/mods/MindOverMatter/powers/teleportation.json @@ -535,7 +535,7 @@ "type": "SPELL", "name": "[Ψ]Oubliette", "description": "Teleport the target through the nether to some other dimension. They are technically not dead, but they are no longer your concern. Oubliette will occasionally fail when used against very powerful enemies, or succeed but cause damage to the teleporter.", - "message": "With a tremendous mental exertion, you hurl your target to another dimension!", + "message": "", "teachable": false, "valid_targets": [ "hostile" ], "spell_class": "TELEPORTER", @@ -543,7 +543,8 @@ "flags": [ "PSIONIC", "CONCENTRATE", "SILENT", "RANDOM_DAMAGE", "NO_HANDS", "NO_LEGS", "NO_EXPLOSION_SFX" ], "difficulty": 7, "max_level": { "math": [ "int_to_level(1)" ] }, - "effect": "banishment", + "effect": "effect_on_condition", + "effect_str": "EOC_TELEPORTER_OUBLIETTE_HANDLING", "shape": "blast", "min_damage": { "math": [ @@ -570,6 +571,24 @@ "casting_time_increment": -5.5, "ignored_monster_species": [ "PSI_NULL" ] }, + { + "id": "teleport_banish_self_target", + "type": "SPELL", + "name": "Oubliette Self", + "description": "This is the banishment that the target casts on themselves.", + "valid_targets": [ "self" ], + "skill": "metaphysics", + "flags": [ "PSIONC", "SILENT", "RANDOM_DAMAGE" ], + "effect": "banishment", + "shape": "blast", + "spell_class": "TELEPORTER", + "teachable": false, + "min_damage": { "math": [ "u_psi_teleporter_damage" ] }, + "max_damage": { "math": [ "u_psi_teleporter_damage" ] }, + "min_range": 0, + "max_range": 0, + "ignored_monster_species": [ "PSI_NULL" ] + }, { "id": "teleport_gateway", "type": "SPELL", diff --git a/data/mods/MindOverMatter/powers/teleportation_eoc.json b/data/mods/MindOverMatter/powers/teleportation_eoc.json index 86576288e7f42..847ecb97d6879 100644 --- a/data/mods/MindOverMatter/powers/teleportation_eoc.json +++ b/data/mods/MindOverMatter/powers/teleportation_eoc.json @@ -36,6 +36,70 @@ } ] }, + { + "type": "effect_on_condition", + "id": "EOC_TELEPORTER_OUBLIETTE_HANDLING", + "condition": { + "and": [ + { "not": { "u_has_flag": "TELESTOP" } }, + { "not": { "u_has_flag": "TELEPORT_IMMUNE" } }, + { "not": { "u_has_worn_with_flag": "DIMENSIONAL_ANCHOR" } } + ] + }, + "effect": [ { "run_eocs": "EOC_TELEPORTER_OUBLIETTE_HANDLING_2" } ], + "false_effect": [ { "npc_message": "Your target wavers for a moment, but nothing happens." } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_TELEPORTER_OUBLIETTE_HANDLING_2", + "condition": { "not": "u_is_npc" }, + "effect": [ + { + "math": [ + "u_psi_teleporter_damage", + "=", + "rng(((15 + (n_spell_level('teleport_banish') * 15)) * ( ( n_val('intelligence') + 10) / 20 ) * n_nether_attunement_power_scaling),((350 + (n_spell_level('teleport_banish') * 35)) * ( ( n_val('intelligence') + 10) / 20 ) * n_nether_attunement_power_scaling))" + ] + }, + { "math": [ "u_health_comparison", "=", "u_hp('ALL')" ] }, + { + "if": { "math": [ "u_psi_teleporter_damage", ">", "u_health_comparison" ] }, + "then": [ + { "u_cast_spell": { "id": "teleport_banish_self_target", "message": "" } }, + { "npc_message": "With a tremendous mental exertion, you hurl your target to another dimension!" } + ] + } + ], + "false_effect": [ + { + "math": [ + "u_psi_teleporter_damage", + "=", + "rng(((15 + (n_spell_level('teleport_banish') * 15)) * ( ( n_val('intelligence') + 10) / 20 ) * n_nether_attunement_power_scaling),((350 + (n_spell_level('teleport_banish') * 35)) * ( ( n_val('intelligence') + 10) / 20 ) * n_nether_attunement_power_scaling))" + ] + }, + { + "math": [ + "u_health_comparison", + "=", + "(u_hp('arm_l') + u_hp('arm_r') + u_hp('leg_l') + u_hp('leg_r') + u_hp('torso') + u_hp('head')) / 3" + ] + }, + { + "if": { "math": [ "u_psi_teleporter_damage", ">", "u_health_comparison" ] }, + "then": [ + "u_die", + { "npc_message": "With a tremendous mental exertion, you hurl your target to another dimension!" }, + { + "u_map_run_item_eocs": "all", + "min_radius": 0, + "max_radius": 0, + "true_eocs": [ { "id": "EOC_TELEPORTER_OUBLIETTE_HANDLING_DELETE_NPC_ITEMS", "effect": [ "npc_die" ] } ] + } + ] + } + ] + }, { "type": "effect_on_condition", "id": "EOC_TELEPORT_SUMMON", From 0095b3047e5fa7e9bb6274a730935312cac36bd1 Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Sun, 7 Apr 2024 23:46:26 -0500 Subject: [PATCH 17/48] [MoM] Utilise test_eoc functionality to reduce duplicate conditions (#72875) * Add NO_PROJECTILE * Initial commit --- .../conditions_for_eocs.json | 198 ++++++++++ .../effectoncondition/eoc_awakening.json | 42 +-- .../effectoncondition/eoc_misc.json | 24 -- .../eoc_nether_attunement_events.json | 212 +---------- .../eoc_on_power_use_events.json | 337 ++---------------- .../effectoncondition/eoc_power_effects.json | 38 -- 6 files changed, 248 insertions(+), 603 deletions(-) create mode 100644 data/mods/MindOverMatter/effectoncondition/conditions_for_eocs.json diff --git a/data/mods/MindOverMatter/effectoncondition/conditions_for_eocs.json b/data/mods/MindOverMatter/effectoncondition/conditions_for_eocs.json new file mode 100644 index 0000000000000..32ad3edbaaeae --- /dev/null +++ b/data/mods/MindOverMatter/effectoncondition/conditions_for_eocs.json @@ -0,0 +1,198 @@ +[ + { + "type": "effect_on_condition", + "id": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST", + "condition": { + "and": [ + { + "u_has_any_trait": [ + "BIOKINETIC", + "CLAIRSENTIENT", + "ELECTROKINETIC", + "PHOTOKINETIC", + "PYROKINETIC", + "TELEKINETIC", + "TELEPATH", + "TELEPORTER", + "VITAKINETIC" + ] + }, + { + "or": [ + { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, + { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, + { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, + { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, + { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, + { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, + { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, + { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, + { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } + ] + } + ] + }, + "effect": [ ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER", + "condition": { + "or": [ { "is_weather": "distant_portal_storm" }, { "is_weather": "portal_storm" }, { "is_weather": "close_portal_storm" } ] + }, + "effect": [ ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CONDITION_NEAR_NETHER_RELATED_LOCATION", + "condition": { + "or": [ + { "u_near_om_location": "unvitrified_farm_0", "range": 2 }, + { "u_near_om_location": "unvitrified_farm_1", "range": 2 }, + { "u_near_om_location": "unvitrified_farm_neg_1", "range": 2 }, + { "u_near_om_location": "unvitrified_farm_2", "range": 2 }, + { "u_near_om_location": "vitrified_farm_0", "range": 2 }, + { "u_near_om_location": "vitrified_farm_1", "range": 2 }, + { "u_near_om_location": "vitrified_farm_neg_1", "range": 2 }, + { "u_near_om_location": "vitrified_farm_2", "range": 2 }, + { "u_near_om_location": "microlab_portal_elevator_physics_glass", "range": 2 }, + { "u_near_om_location": "microlab_distorted_hallway", "range": 2 }, + { "u_near_om_location": "microlab_distorted", "range": 2 }, + { "u_near_om_location": "microlab_distorted_edge", "range": 2 }, + { "u_near_om_location": "microlab_portal_elevator_physics_glass", "range": 2 }, + { "u_near_om_location": "corpse_surface", "range": 0 }, + { "u_near_om_location": "corpse_bowels_neck_right", "range": 2 }, + { "u_near_om_location": "corpse_bowels_neck_left", "range": 2 }, + { "u_near_om_location": "corpse_bowels_neck_edge_center", "range": 2 }, + { "u_near_om_location": "corpse_bowels_rcorner", "range": 2 }, + { "u_near_om_location": "corpse_bowels_lcorner", "range": 2 }, + { "u_near_om_location": "corpse_bowels_empty_edge", "range": 2 }, + { "u_near_om_location": "corpse_bowels_mid", "range": 2 }, + { "u_near_om_location": "corpse_tentacle", "range": 2 }, + { "u_near_om_location": "corpse_tentacle_entry", "range": 2 }, + { "u_near_om_location": "corpse_tentacle_surface_entry", "range": 0 }, + { "u_near_om_location": "corpse_bowels_tentacle_edge", "range": 2 }, + { "u_near_om_location": "corpse_bowels_empty_edge", "range": 2 }, + { "u_near_om_location": "corpse_head", "range": 2 }, + { "u_near_om_location": "corpse_brain", "range": 2 }, + { "u_near_om_location": "corpse_under_brain", "range": 2 }, + { "u_near_om_location": "corpse_head_edge", "range": 2 }, + { "u_near_om_location": "corpse_head_fin", "range": 2 }, + { "u_near_om_location": "corpse_head_lcorner", "range": 2 }, + { "u_near_om_location": "corpse_head_rcorner", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_l", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_r", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_center", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_l_decap", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_r", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_r_decap", "range": 2 }, + { "u_near_om_location": "corpse_head_neck_center_decap", "range": 2 }, + { "u_near_om_location": "nether_crystal_field", "range": 1 }, + { "u_near_om_location": "psi_phavian_lab_blockB1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_blockD1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_blockB3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_blockD3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block2B1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block2D1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block2B3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block2D3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block3B1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block3D1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block3B3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block3D3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block4B1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block4D1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block4B3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block4D3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block5B1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block5D1", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block5B3", "range": 2 }, + { "u_near_om_location": "psi_phavian_lab_block5D3", "range": 2 }, + { "u_near_om_location": "void_spider_lair_entrance", "range": 2 }, + { "u_near_om_location": "void_spider_lair_a1", "range": 2 }, + { "u_near_om_location": "void_spider_lair_a2", "range": 2 }, + { "u_near_om_location": "LIXA_surface_1b_north", "range": 2 }, + { "u_near_om_location": "LIXA_roof_1a_north", "range": 2 }, + { "u_near_om_location": "LIXA_stairshaft_1a_north", "range": 2 }, + { "u_near_om_location": "LIXA_stairshaft_2a_north", "range": 2 }, + { "u_near_om_location": "LIXA_device_2_north", "range": 2 }, + { "u_near_om_location": "LIXA_device_unfolded_noaccess_north", "range": 2 }, + { "u_near_om_location": "LIXA_entry_2_north", "range": 2 }, + { "u_near_om_location": "LIXA_road_north", "range": 2 }, + { "u_near_om_location": "LIXA_road_guard_north", "range": 2 } + ] + }, + "effect": [ ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CONDITION_LIST_OF_POWERS_CANCELLED_BY_COMBAT", + "condition": { + "or": [ + { "u_has_trait": "CLAIR_SPEED_READ" }, + { "u_has_effect": "effect_clair_speed_reader" }, + { "u_has_effect": "effect_clair_see_auras" }, + { "u_has_effect": "effect_clair_craft_bonus" }, + { "u_has_effect": "effect_clair_perfect_shot" }, + { "u_has_effect": "effect_photokin_light_local" }, + { "u_has_item": "pyrokinetic_fire_tool" }, + { "u_has_item": "pyrokinetic_torch_weld" }, + { "u_has_effect": "effect_telekinetic_strength" }, + { "u_has_item": "telekin_lifting_jack_1" }, + { "u_has_item": "telekin_lifting_jack_2" }, + { "u_has_item": "telekin_lifting_jack_3" }, + { "u_has_item": "telekin_lifting_jack_4" }, + { "u_has_item": "telekin_lifting_jack_5" }, + { "u_has_item": "telekin_lifting_jack_6" }, + { "u_has_item": "telekin_lifting_jack_7" }, + { "u_has_item": "telekin_lifting_jack_8" }, + { "u_has_item": "telekin_lifting_jack_9" }, + { "u_has_item": "telekin_lifting_jack_10" }, + { "u_has_item": "telekin_lifting_jack_11" }, + { "u_has_item": "telekin_lifting_jack_12" }, + { "u_has_item": "telekin_lifting_jack_13" }, + { "u_has_item": "telekin_lifting_jack_14" }, + { "u_has_item": "telekin_lifting_jack_15" }, + { "u_has_item": "telekin_lifting_jack_16" }, + { "u_has_item": "telekin_lifting_jack_17" }, + { "u_has_item": "telekin_lifting_jack_18" }, + { "u_has_item": "telekin_lifting_jack_19" }, + { "u_has_item": "telekin_lifting_jack_20" }, + { "u_has_effect": "effect_telekinetic_levitation" }, + { "u_has_effect": "effect_telepathic_learning_bonus" }, + { "u_has_effect": "telepathic_ignorance_self" } + ] + }, + "effect": [ ] + }, + { + "type": "effect_on_condition", + "id": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE", + "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "effect": [ ] + }, + { + "type": "effect_on_condition", + "id": "EOC_PORTAL_STORM_CONDITION_FLAG_PORTAL_PROOF", + "condition": { + "and": [ + { "not": { "u_has_worn_with_flag": "PORTAL_PROOF" } }, + { + "not": { + "and": [ + { "u_has_effect": "effect_telepathic_psi_armor" }, + { + "math": [ + "u_spell_level('telepathic_shield')", + ">=", + "(u_vitamin('vitamin_psionic_drain') / 10) + (max(u_school_level('BIOKINETIC'), u_school_level('CLAIRSENTIENT'), u_school_level('ELECTROKINETIC'), u_school_level('PHOTOKINETIC'), u_school_level('PYROKINETIC'), u_school_level('TELEPATH'), u_school_level('TELEKINETIC'), u_school_level('TELEPORTER'), u_school_level('VITAKINETIC')) / 3) + (u_awakening_countup / 3)" + ] + } + ] + } + } + ] + }, + "effect": [ ] + } +] diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json b/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json index f2b7894cc98db..e225b3b3de568 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_awakening.json @@ -27,7 +27,7 @@ { "type": "effect_on_condition", "id": "EOC_BIOKIN_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_BIOKIN_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_BIOKIN_MATRIX_AWAKENING_FAILURE" } ] }, @@ -88,7 +88,7 @@ { "type": "effect_on_condition", "id": "EOC_CLAIR_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_CLAIR_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_CLAIR_MATRIX_AWAKENING_FAILURE" } ] }, @@ -149,7 +149,7 @@ { "type": "effect_on_condition", "id": "EOC_ELECTRO_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_ELECTRO_MATRIX_AWAKENING_FAILURE" } ] }, @@ -210,7 +210,7 @@ { "type": "effect_on_condition", "id": "EOC_PHOTOKIN_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_PHOTOKIN_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_PHOTOKIN_MATRIX_AWAKENING_FAILURE" } ] }, @@ -273,7 +273,7 @@ { "type": "effect_on_condition", "id": "EOC_PYROKIN_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_PYROKIN_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_PYROKIN_MATRIX_AWAKENING_FAILURE" } ] }, @@ -335,7 +335,7 @@ { "type": "effect_on_condition", "id": "EOC_TELEKIN_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_TELEKIN_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_TELEKIN_MATRIX_AWAKENING_FAILURE" } ] }, @@ -396,7 +396,7 @@ { "type": "effect_on_condition", "id": "EOC_TEEP_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_TEEP_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_TEEP_MATRIX_AWAKENING_FAILURE" } ] }, @@ -457,7 +457,7 @@ { "type": "effect_on_condition", "id": "EOC_TELEPORT_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_TELEPORT_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_TELEPORT_MATRIX_AWAKENING_FAILURE" } ] }, @@ -520,7 +520,7 @@ { "type": "effect_on_condition", "id": "EOC_VITAKIN_MATRIX_AWAKENING_2", - "condition": { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } }, + "condition": { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" }, "effect": [ { "run_eocs": "EOC_VITAKIN_MATRIX_AWAKENING_SUCCESS" } ], "false_effect": [ { "run_eocs": "EOC_VITAKIN_MATRIX_AWAKENING_FAILURE" } ] }, @@ -604,7 +604,7 @@ "and": [ "u_is_outside", { "is_weather": "distant_portal_storm" }, - { "not": { "u_has_worn_with_flag": "PORTAL_PROOF" } }, + { "test_eoc": "EOC_PORTAL_STORM_CONDITION_FLAG_PORTAL_PROOF" }, { "not": { "u_has_effect": "sleep" } } ] }, @@ -636,7 +636,7 @@ "and": [ "u_is_outside", { "is_weather": "portal_storm" }, - { "not": { "u_has_worn_with_flag": "PORTAL_PROOF" } }, + { "test_eoc": "EOC_PORTAL_STORM_CONDITION_FLAG_PORTAL_PROOF" }, { "not": { "u_has_effect": "sleep" } } ] }, @@ -668,7 +668,7 @@ "and": [ "u_is_outside", { "is_weather": "close_portal_storm" }, - { "not": { "u_has_worn_with_flag": "PORTAL_PROOF" } }, + { "test_eoc": "EOC_PORTAL_STORM_CONDITION_FLAG_PORTAL_PROOF" }, { "not": { "u_has_effect": "sleep" } } ] }, @@ -703,7 +703,7 @@ "and": [ { "not": { "u_has_trait": "BIOKINETIC" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -736,7 +736,7 @@ "and": [ { "not": { "u_has_trait": "CLAIRSENTIENT" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -769,7 +769,7 @@ "and": [ { "not": { "u_has_trait": "ELECTROKINETIC" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -801,7 +801,7 @@ "and": [ { "not": { "u_has_trait": "PHOTOKINETIC" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -836,7 +836,7 @@ "and": [ { "not": { "u_has_trait": "PYROKINETIC" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -869,7 +869,7 @@ "and": [ { "not": { "u_has_trait": "TELEKINETIC" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -901,7 +901,7 @@ "and": [ { "not": { "u_has_trait": "TELEPATH" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -934,7 +934,7 @@ "and": [ { "not": { "u_has_trait": "TELEPORTER" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ @@ -966,7 +966,7 @@ "and": [ { "not": { "u_has_trait": "VITAKINETIC" } }, { "not": { "u_has_effect": "psionic_awakened" } }, - { "x_in_y_chance": { "x": { "math": [ "100 - u_awakening_reducer" ] }, "y": 100 } } + { "test_eoc": "EOC_CONDITION_AWAKENING_X_IN_Y_CHANCE" } ] }, "effect": [ diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_misc.json b/data/mods/MindOverMatter/effectoncondition/eoc_misc.json index 46719a620c99a..48177d540379a 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_misc.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_misc.json @@ -1,28 +1,4 @@ [ - { - "type": "effect_on_condition", - "id": "EOC_PORTAL_STORM_CONDITION_FLAG_PORTAL_PROOF", - "condition": { - "and": [ - { "not": { "u_has_worn_with_flag": "PORTAL_PROOF" } }, - { - "not": { - "and": [ - { "u_has_effect": "effect_telepathic_psi_armor" }, - { - "math": [ - "u_spell_level('telepathic_shield')", - ">=", - "(u_vitamin('vitamin_psionic_drain') / 10) + (max(u_school_level('BIOKINETIC'), u_school_level('CLAIRSENTIENT'), u_school_level('ELECTROKINETIC'), u_school_level('PHOTOKINETIC'), u_school_level('PYROKINETIC'), u_school_level('TELEPATH'), u_school_level('TELEKINETIC'), u_school_level('TELEPORTER'), u_school_level('VITAKINETIC')) / 3) + (u_awakening_countup / 3)" - ] - } - ] - } - } - ] - }, - "effect": [ ] - }, { "type": "effect_on_condition", "id": "EOC_RESET_TELEPATHIC_STEALING_TIMER", diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json b/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json index 341bc743751a5..346c0113a6b26 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json @@ -4,36 +4,7 @@ "id": "EOC_NETHER_CONDUIT_VALUE_INCREASER", "eoc_type": "EVENT", "required_event": "spellcasting_finish", - "condition": { - "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, "effect": [ { "run_eocs": [ @@ -51,36 +22,7 @@ "id": "EOC_PSIONICS_GAIN_NETHER_ATTUNEMENT", "eoc_type": "EVENT", "required_event": "spellcasting_finish", - "condition": { - "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, "effect": [ { "math": [ "u_latest_channeled_power_difficulty", "=", "_difficulty" ] }, { @@ -217,32 +159,7 @@ "required_event": "spellcasting_finish", "condition": { "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - }, + { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "15" ] } ] }, @@ -1067,32 +984,7 @@ "required_event": "spellcasting_finish", "condition": { "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - }, + { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, { "u_has_effect": "effect_nether_attunement_feedback" }, { "x_in_y_chance": { "x": { "math": [ "u_vitamin('vitamin_psionic_drain')" ] }, "y": 250 } } ] @@ -1144,101 +1036,11 @@ "required_event": "spellcasting_finish", "condition": { "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - }, + { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, { "or": [ - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" }, - { "u_near_om_location": "unvitrified_farm_0", "range": 2 }, - { "u_near_om_location": "unvitrified_farm_1", "range": 2 }, - { "u_near_om_location": "unvitrified_farm_neg_1", "range": 2 }, - { "u_near_om_location": "unvitrified_farm_2", "range": 2 }, - { "u_near_om_location": "vitrified_farm_0", "range": 2 }, - { "u_near_om_location": "vitrified_farm_1", "range": 2 }, - { "u_near_om_location": "vitrified_farm_neg_1", "range": 2 }, - { "u_near_om_location": "vitrified_farm_2", "range": 2 }, - { "u_near_om_location": "microlab_portal_elevator_physics_glass", "range": 2 }, - { "u_near_om_location": "microlab_distorted_hallway", "range": 2 }, - { "u_near_om_location": "microlab_distorted", "range": 2 }, - { "u_near_om_location": "microlab_distorted_edge", "range": 2 }, - { "u_near_om_location": "microlab_portal_elevator_physics_glass", "range": 2 }, - { "u_near_om_location": "corpse_surface", "range": 0 }, - { "u_near_om_location": "corpse_bowels_neck_right", "range": 2 }, - { "u_near_om_location": "corpse_bowels_neck_left", "range": 2 }, - { "u_near_om_location": "corpse_bowels_neck_edge_center", "range": 2 }, - { "u_near_om_location": "corpse_bowels_rcorner", "range": 2 }, - { "u_near_om_location": "corpse_bowels_lcorner", "range": 2 }, - { "u_near_om_location": "corpse_bowels_empty_edge", "range": 2 }, - { "u_near_om_location": "corpse_bowels_mid", "range": 2 }, - { "u_near_om_location": "corpse_tentacle", "range": 2 }, - { "u_near_om_location": "corpse_tentacle_entry", "range": 2 }, - { "u_near_om_location": "corpse_tentacle_surface_entry", "range": 0 }, - { "u_near_om_location": "corpse_bowels_tentacle_edge", "range": 2 }, - { "u_near_om_location": "corpse_bowels_empty_edge", "range": 2 }, - { "u_near_om_location": "corpse_head", "range": 2 }, - { "u_near_om_location": "corpse_brain", "range": 2 }, - { "u_near_om_location": "corpse_under_brain", "range": 2 }, - { "u_near_om_location": "corpse_head_edge", "range": 2 }, - { "u_near_om_location": "corpse_head_fin", "range": 2 }, - { "u_near_om_location": "corpse_head_lcorner", "range": 2 }, - { "u_near_om_location": "corpse_head_rcorner", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_l", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_r", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_center", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_l_decap", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_r", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_r_decap", "range": 2 }, - { "u_near_om_location": "corpse_head_neck_center_decap", "range": 2 }, - { "u_near_om_location": "nether_crystal_field", "range": 1 }, - { "u_near_om_location": "psi_phavian_lab_blockB1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_blockD1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_blockB3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_blockD3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block2B1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block2D1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block2B3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block2D3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block3B1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block3D1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block3B3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block3D3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block4B1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block4D1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block4B3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block4D3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block5B1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block5D1", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block5B3", "range": 2 }, - { "u_near_om_location": "psi_phavian_lab_block5D3", "range": 2 }, - { "u_near_om_location": "void_spider_lair_entrance", "range": 2 }, - { "u_near_om_location": "void_spider_lair_a1", "range": 2 }, - { "u_near_om_location": "void_spider_lair_a2", "range": 2 } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" }, + { "test_eoc": "EOC_CONDITION_NEAR_NETHER_RELATED_LOCATION" } ] } ] diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_on_power_use_events.json b/data/mods/MindOverMatter/effectoncondition/eoc_on_power_use_events.json index 0d62a98a3df9a..a10765731ce87 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_on_power_use_events.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_on_power_use_events.json @@ -29,41 +29,7 @@ "id": "EOC_MELEE_MONSTER_CANCEL_TOGGLES", "eoc_type": "EVENT", "required_event": "character_melee_attacks_monster", - "condition": { - "or": [ - { "u_has_trait": "CLAIR_SPEED_READ" }, - { "u_has_effect": "effect_clair_speed_reader" }, - { "u_has_effect": "effect_clair_see_auras" }, - { "u_has_effect": "effect_clair_craft_bonus" }, - { "u_has_effect": "effect_photokin_light_local" }, - { "u_has_item": "pyrokinetic_fire_tool" }, - { "u_has_item": "pyrokinetic_torch_weld" }, - { "u_has_effect": "effect_telekinetic_strength" }, - { "u_has_item": "telekin_lifting_jack_1" }, - { "u_has_item": "telekin_lifting_jack_2" }, - { "u_has_item": "telekin_lifting_jack_3" }, - { "u_has_item": "telekin_lifting_jack_4" }, - { "u_has_item": "telekin_lifting_jack_5" }, - { "u_has_item": "telekin_lifting_jack_6" }, - { "u_has_item": "telekin_lifting_jack_7" }, - { "u_has_item": "telekin_lifting_jack_8" }, - { "u_has_item": "telekin_lifting_jack_9" }, - { "u_has_item": "telekin_lifting_jack_10" }, - { "u_has_item": "telekin_lifting_jack_11" }, - { "u_has_item": "telekin_lifting_jack_12" }, - { "u_has_item": "telekin_lifting_jack_13" }, - { "u_has_item": "telekin_lifting_jack_14" }, - { "u_has_item": "telekin_lifting_jack_15" }, - { "u_has_item": "telekin_lifting_jack_16" }, - { "u_has_item": "telekin_lifting_jack_17" }, - { "u_has_item": "telekin_lifting_jack_18" }, - { "u_has_item": "telekin_lifting_jack_19" }, - { "u_has_item": "telekin_lifting_jack_20" }, - { "u_has_effect": "effect_telekinetic_levitation" }, - { "u_has_effect": "effect_telepathic_learning_bonus" }, - { "u_has_effect": "telepathic_ignorance_self" } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_LIST_OF_POWERS_CANCELLED_BY_COMBAT" }, "effect": [ { "run_eocs": [ "EOC_POWER_TOGGLE_REMOVE_EFFECTS" ] }, { "npc_lose_effect": "telepathic_ignorance" } ] }, { @@ -71,41 +37,7 @@ "id": "EOC_MELEE_CHARACTER_CANCEL_TOGGLES", "eoc_type": "EVENT", "required_event": "character_melee_attacks_character", - "condition": { - "or": [ - { "u_has_trait": "CLAIR_SPEED_READ" }, - { "u_has_effect": "effect_clair_speed_reader" }, - { "u_has_effect": "effect_clair_see_auras" }, - { "u_has_effect": "effect_clair_craft_bonus" }, - { "u_has_effect": "effect_photokin_light_local" }, - { "u_has_item": "pyrokinetic_fire_tool" }, - { "u_has_item": "pyrokinetic_torch_weld" }, - { "u_has_effect": "effect_telekinetic_strength" }, - { "u_has_item": "telekin_lifting_jack_1" }, - { "u_has_item": "telekin_lifting_jack_2" }, - { "u_has_item": "telekin_lifting_jack_3" }, - { "u_has_item": "telekin_lifting_jack_4" }, - { "u_has_item": "telekin_lifting_jack_5" }, - { "u_has_item": "telekin_lifting_jack_6" }, - { "u_has_item": "telekin_lifting_jack_7" }, - { "u_has_item": "telekin_lifting_jack_8" }, - { "u_has_item": "telekin_lifting_jack_9" }, - { "u_has_item": "telekin_lifting_jack_10" }, - { "u_has_item": "telekin_lifting_jack_11" }, - { "u_has_item": "telekin_lifting_jack_12" }, - { "u_has_item": "telekin_lifting_jack_13" }, - { "u_has_item": "telekin_lifting_jack_14" }, - { "u_has_item": "telekin_lifting_jack_15" }, - { "u_has_item": "telekin_lifting_jack_16" }, - { "u_has_item": "telekin_lifting_jack_17" }, - { "u_has_item": "telekin_lifting_jack_18" }, - { "u_has_item": "telekin_lifting_jack_19" }, - { "u_has_item": "telekin_lifting_jack_20" }, - { "u_has_effect": "effect_telekinetic_levitation" }, - { "u_has_effect": "effect_telepathic_learning_bonus" }, - { "u_has_effect": "telepathic_ignorance_self" } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_LIST_OF_POWERS_CANCELLED_BY_COMBAT" }, "effect": [ { "run_eocs": [ "EOC_POWER_TOGGLE_REMOVE_EFFECTS" ] }, { "npc_lose_effect": "telepathic_ignorance" } ] }, { @@ -113,42 +45,7 @@ "id": "EOC_RANGED_MONSTER_CANCEL_TOGGLES", "eoc_type": "EVENT", "required_event": "character_ranged_attacks_monster", - "condition": { - "or": [ - { "u_has_trait": "CLAIR_SPEED_READ" }, - { "u_has_effect": "effect_clair_speed_reader" }, - { "u_has_effect": "effect_clair_see_auras" }, - { "u_has_effect": "effect_clair_craft_bonus" }, - { "u_has_effect": "effect_clair_perfect_shot" }, - { "u_has_effect": "effect_photokin_light_local" }, - { "u_has_item": "pyrokinetic_fire_tool" }, - { "u_has_item": "pyrokinetic_torch_weld" }, - { "u_has_effect": "effect_telekinetic_strength" }, - { "u_has_item": "telekin_lifting_jack_1" }, - { "u_has_item": "telekin_lifting_jack_2" }, - { "u_has_item": "telekin_lifting_jack_3" }, - { "u_has_item": "telekin_lifting_jack_4" }, - { "u_has_item": "telekin_lifting_jack_5" }, - { "u_has_item": "telekin_lifting_jack_6" }, - { "u_has_item": "telekin_lifting_jack_7" }, - { "u_has_item": "telekin_lifting_jack_8" }, - { "u_has_item": "telekin_lifting_jack_9" }, - { "u_has_item": "telekin_lifting_jack_10" }, - { "u_has_item": "telekin_lifting_jack_11" }, - { "u_has_item": "telekin_lifting_jack_12" }, - { "u_has_item": "telekin_lifting_jack_13" }, - { "u_has_item": "telekin_lifting_jack_14" }, - { "u_has_item": "telekin_lifting_jack_15" }, - { "u_has_item": "telekin_lifting_jack_16" }, - { "u_has_item": "telekin_lifting_jack_17" }, - { "u_has_item": "telekin_lifting_jack_18" }, - { "u_has_item": "telekin_lifting_jack_19" }, - { "u_has_item": "telekin_lifting_jack_20" }, - { "u_has_effect": "effect_telekinetic_levitation" }, - { "u_has_effect": "effect_telepathic_learning_bonus" }, - { "u_has_effect": "telepathic_ignorance_self" } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_LIST_OF_POWERS_CANCELLED_BY_COMBAT" }, "effect": [ { "run_eocs": [ "EOC_POWER_TOGGLE_REMOVE_EFFECTS" ] }, { "npc_lose_effect": "telepathic_ignorance" } ] }, { @@ -156,42 +53,7 @@ "id": "EOC_RANGED_CHARACTER_CANCEL_TOGGLES", "eoc_type": "EVENT", "required_event": "character_ranged_attacks_character", - "condition": { - "or": [ - { "u_has_trait": "CLAIR_SPEED_READ" }, - { "u_has_effect": "effect_clair_speed_reader" }, - { "u_has_effect": "effect_clair_see_auras" }, - { "u_has_effect": "effect_clair_craft_bonus" }, - { "u_has_effect": "effect_clair_perfect_shot" }, - { "u_has_effect": "effect_photokin_light_local" }, - { "u_has_item": "pyrokinetic_fire_tool" }, - { "u_has_item": "pyrokinetic_torch_weld" }, - { "u_has_effect": "effect_telekinetic_strength" }, - { "u_has_item": "telekin_lifting_jack_1" }, - { "u_has_item": "telekin_lifting_jack_2" }, - { "u_has_item": "telekin_lifting_jack_3" }, - { "u_has_item": "telekin_lifting_jack_4" }, - { "u_has_item": "telekin_lifting_jack_5" }, - { "u_has_item": "telekin_lifting_jack_6" }, - { "u_has_item": "telekin_lifting_jack_7" }, - { "u_has_item": "telekin_lifting_jack_8" }, - { "u_has_item": "telekin_lifting_jack_9" }, - { "u_has_item": "telekin_lifting_jack_10" }, - { "u_has_item": "telekin_lifting_jack_11" }, - { "u_has_item": "telekin_lifting_jack_12" }, - { "u_has_item": "telekin_lifting_jack_13" }, - { "u_has_item": "telekin_lifting_jack_14" }, - { "u_has_item": "telekin_lifting_jack_15" }, - { "u_has_item": "telekin_lifting_jack_16" }, - { "u_has_item": "telekin_lifting_jack_17" }, - { "u_has_item": "telekin_lifting_jack_18" }, - { "u_has_item": "telekin_lifting_jack_19" }, - { "u_has_item": "telekin_lifting_jack_20" }, - { "u_has_effect": "effect_telekinetic_levitation" }, - { "u_has_effect": "effect_telepathic_learning_bonus" }, - { "u_has_effect": "telepathic_ignorance_self" } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_LIST_OF_POWERS_CANCELLED_BY_COMBAT" }, "effect": [ { "run_eocs": [ "EOC_POWER_TOGGLE_REMOVE_EFFECTS" ] }, { "npc_lose_effect": "telepathic_ignorance" } ] }, { @@ -201,73 +63,9 @@ "required_event": "spellcasting_finish", "condition": { "and": [ - { - "or": [ - { "u_has_trait": "CLAIR_SPEED_READ" }, - { "u_has_effect": "effect_clair_speed_reader" }, - { "u_has_effect": "effect_clair_see_auras" }, - { "u_has_effect": "effect_clair_craft_bonus" }, - { "u_has_effect": "effect_clair_perfect_shot" }, - { "u_has_effect": "effect_photokin_light_local" }, - { "u_has_item": "pyrokinetic_fire_tool" }, - { "u_has_item": "pyrokinetic_torch_weld" }, - { "u_has_effect": "effect_telekinetic_strength" }, - { "u_has_item": "telekin_lifting_jack_1" }, - { "u_has_item": "telekin_lifting_jack_2" }, - { "u_has_item": "telekin_lifting_jack_3" }, - { "u_has_item": "telekin_lifting_jack_4" }, - { "u_has_item": "telekin_lifting_jack_5" }, - { "u_has_item": "telekin_lifting_jack_6" }, - { "u_has_item": "telekin_lifting_jack_7" }, - { "u_has_item": "telekin_lifting_jack_8" }, - { "u_has_item": "telekin_lifting_jack_9" }, - { "u_has_item": "telekin_lifting_jack_10" }, - { "u_has_item": "telekin_lifting_jack_11" }, - { "u_has_item": "telekin_lifting_jack_12" }, - { "u_has_item": "telekin_lifting_jack_13" }, - { "u_has_item": "telekin_lifting_jack_14" }, - { "u_has_item": "telekin_lifting_jack_15" }, - { "u_has_item": "telekin_lifting_jack_16" }, - { "u_has_item": "telekin_lifting_jack_17" }, - { "u_has_item": "telekin_lifting_jack_18" }, - { "u_has_item": "telekin_lifting_jack_19" }, - { "u_has_item": "telekin_lifting_jack_20" }, - { "u_has_effect": "effect_telekinetic_levitation" }, - { "u_has_effect": "effect_telepathic_learning_bonus" }, - { "u_has_effect": "telepathic_ignorance_self" } - ] - }, { "math": [ "_damage", ">=", "1" ] }, - { - "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - } - ] - } + { "test_eoc": "EOC_CONDITION_LIST_OF_POWERS_CANCELLED_BY_COMBAT" }, + { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" } ] }, "effect": [ { "run_eocs": [ "EOC_POWER_TOGGLE_REMOVE_EFFECTS" ] } ] @@ -348,9 +146,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -389,9 +185,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -434,9 +228,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -476,9 +268,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -521,9 +311,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -562,9 +350,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -603,9 +389,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -648,9 +432,7 @@ "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] }, - { "is_weather": "distant_portal_storm" }, - { "is_weather": "portal_storm" }, - { "is_weather": "close_portal_storm" } + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } ] }, { @@ -686,7 +468,11 @@ { "u_has_trait": "VITAKINETIC" }, { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] }, { - "or": [ { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, { "math": [ "_success", "==", "false" ] } ] + "or": [ + { "math": [ "u_vitamin('vitamin_psionic_drain')", ">=", "200" ] }, + { "math": [ "_success", "==", "false" ] }, + { "test_eoc": "EOC_CONDITION_CAUGHT_IN_NETHER_WEATHER" } + ] }, { "x_in_y_chance": { @@ -728,36 +514,7 @@ "id": "EOC_PSIONICS_KCAL_COST", "eoc_type": "EVENT", "required_event": "spellcasting_finish", - "condition": { - "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - } - ] - }, + "condition": { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, "effect": [ { "math": [ "u_val('stored_kcal')", "-=", "psionics_kcal_cost(_difficulty)" ] } ] }, { @@ -905,32 +662,7 @@ "required_event": "spellcasting_finish", "condition": { "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - }, + { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, { "math": [ "u_vitamin('vitamin_maintained_powers')", ">=", "( u_val('intelligence') / 4) + (u_bonus_concentration_powers)" ] } @@ -945,32 +677,7 @@ "required_event": "spellcasting_finish", "condition": { "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - }, + { "test_eoc": "EOC_CONDITION_SPELLCASTING_FINISH_TRAIT_AND_SCHOOL_LIST" }, { "math": [ "u_val('focus')", ">=", "15" ] } ] }, diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json b/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json index 8ba59b53f691e..a99c924f393b8 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_power_effects.json @@ -115,44 +115,6 @@ { "math": [ "u_spellcasting_adjustment('concentration', 'flag_whitelist': 'PSIONIC' )", "=", "-1" ] } ] }, - { - "type": "effect_on_condition", - "id": "EOC_PSI_EXTENDED_CHANNELING_ATTUNEMENT", - "eoc_type": "EVENT", - "required_event": "spellcasting_finish", - "condition": { - "and": [ - { - "u_has_any_trait": [ - "BIOKINETIC", - "CLAIRSENTIENT", - "ELECTROKINETIC", - "PHOTOKINETIC", - "PYROKINETIC", - "TELEKINETIC", - "TELEPATH", - "TELEPORTER", - "VITAKINETIC" - ] - }, - { - "or": [ - { "compare_string": [ "BIOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "CLAIRSENTIENT", { "context_val": "school" } ] }, - { "compare_string": [ "ELECTROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PHOTOKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "PYROKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEKINETIC", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPATH", { "context_val": "school" } ] }, - { "compare_string": [ "TELEPORTER", { "context_val": "school" } ] }, - { "compare_string": [ "VITAKINETIC", { "context_val": "school" } ] } - ] - }, - { "u_has_trait": "PSI_EXTENDED_CHANNELING_ON" } - ] - }, - "effect": [ { "u_cast_spell": { "id": "psionic_drained_difficulty_five", "hit_self": true } } ] - }, { "type": "effect_on_condition", "id": "EOC_NETHER_ATTUNEMENT_BOOST", From 2accf06fc63032caea62090b552859ae890c8bbb Mon Sep 17 00:00:00 2001 From: Anton Simakov <67688115+GuardianDll@users.noreply.github.com> Date: Mon, 8 Apr 2024 09:15:51 +0200 Subject: [PATCH 18/48] fix lamp_oil recipe --- data/json/recipes/chem/fuel.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/recipes/chem/fuel.json b/data/json/recipes/chem/fuel.json index dc19ccd7487e5..c2342170e68a1 100644 --- a/data/json/recipes/chem/fuel.json +++ b/data/json/recipes/chem/fuel.json @@ -84,7 +84,7 @@ "//3": "about 15% of the total reaction becomes kerosene-like hydrocarbons and about 50% becomes diesel-like hydrocarbons. So it is intentional that this produces 3x the diesel as kerosene.", "//4": "Thus the whole recipe produces about 5 kg of diesel (6000 ml) and 1.5 liters of kerosene (1800 ml)", "//5": "These reactors operate at 10-15 KW power levels for long periods of time and each batch is processing a pretty large amount of material. Specific heats give us about 40 MJ just to get to temp (550c)", - "tools": [ [ [ "catalytic_cracking_reactor", 50000 ] ], [ [ "water", 40 ], [ "water_clean", 40 ] ] ], + "tools": [ [ [ "catalytic_cracking_reactor_tool", 50000 ] ], [ [ "water", 40 ], [ "water_clean", 40 ] ] ], "components": [ [ [ "chem_washing_soda", 40 ] ], [ From 2cb893a2c3ed6a07b74a3ed82deed0a260015c67 Mon Sep 17 00:00:00 2001 From: Brambor Date: Mon, 8 Apr 2024 12:34:58 +0200 Subject: [PATCH 19/48] iwyu: core changes --- src/action.cpp | 5 ++++- src/action.h | 1 + src/avatar.cpp | 25 ++++++++++++----------- src/avatar.h | 20 ++++++++++--------- src/diary.cpp | 18 +++++++++++++++-- src/diary.h | 21 ++++++++++++-------- src/diary_ui.cpp | 2 ++ src/game.cpp | 29 ++++++++++++++++++++++----- src/game.h | 46 +++++++++++++++++++++---------------------- src/handle_action.cpp | 10 +++++++++- 10 files changed, 116 insertions(+), 61 deletions(-) diff --git a/src/action.cpp b/src/action.cpp index a1516d987dddf..55193407acfb4 100644 --- a/src/action.cpp +++ b/src/action.cpp @@ -10,7 +10,7 @@ #include #include "avatar.h" -#include "cached_options.h" +#include "cached_options.h" // IWYU pragma: keep #include "cata_utility.h" #include "character.h" #include "creature.h" @@ -18,9 +18,12 @@ #include "debug.h" #include "flag.h" #include "game.h" +#include "game_constants.h" #include "input_context.h" +#include "input_enums.h" #include "inventory.h" #include "item.h" +#include "item_location.h" #include "map.h" #include "map_iterator.h" #include "mapdata.h" diff --git a/src/action.h b/src/action.h index e81798c888c5c..19d62f8e19000 100644 --- a/src/action.h +++ b/src/action.h @@ -13,6 +13,7 @@ struct input_event; struct point; +struct tripoint; /** * Enumerates all discrete actions that can be performed by player diff --git a/src/avatar.cpp b/src/avatar.cpp index 393449ea5396c..337f136d50060 100644 --- a/src/avatar.cpp +++ b/src/avatar.cpp @@ -2,9 +2,9 @@ #include #include -#include #include -#include +#include +#include #include #include #include @@ -15,18 +15,17 @@ #include #include "action.h" -#include "activity_type.h" #include "activity_actor_definitions.h" -#include "bionics.h" #include "bodypart.h" #include "calendar.h" #include "cata_assert.h" +#include "cata_utility.h" #include "catacharset.h" #include "character.h" #include "character_id.h" #include "character_martial_arts.h" -#include "clzones.h" #include "color.h" +#include "creature.h" #include "cursesdef.h" #include "debug.h" #include "diary.h" @@ -36,19 +35,22 @@ #include "event_bus.h" #include "faction.h" #include "field_type.h" +#include "flexbuffer_json-inl.h" +#include "flexbuffer_json.h" #include "game.h" #include "game_constants.h" +#include "game_inventory.h" #include "help.h" #include "inventory.h" #include "item.h" #include "item_location.h" #include "itype.h" #include "iuse.h" -#include "kill_tracker.h" -#include "make_static.h" -#include "magic_enchantment.h" +#include "json.h" +#include "line.h" #include "map.h" #include "map_memory.h" +#include "mapdata.h" #include "martialarts.h" #include "messages.h" #include "mission.h" @@ -57,15 +59,14 @@ #include "move_mode.h" #include "mutation.h" #include "npc.h" -#include "options.h" #include "output.h" #include "overmap.h" #include "overmapbuffer.h" #include "pathfinding.h" #include "pimpl.h" -#include "player_activity.h" #include "profession.h" #include "ranged.h" +#include "recipe.h" #include "ret_val.h" #include "rng.h" #include "scenario.h" @@ -74,8 +75,8 @@ #include "string_formatter.h" #include "talker.h" #include "talker_avatar.h" -#include "translations.h" #include "timed_event.h" +#include "translations.h" #include "trap.h" #include "type_id.h" #include "ui.h" @@ -85,6 +86,8 @@ #include "vehicle.h" #include "vpart_position.h" +class monfaction; + static const bionic_id bio_cloak( "bio_cloak" ); static const bionic_id bio_soporific( "bio_soporific" ); diff --git a/src/avatar.h b/src/avatar.h index e110a6de2ed15..5d3f78b53018a 100644 --- a/src/avatar.h +++ b/src/avatar.h @@ -2,25 +2,30 @@ #ifndef CATA_SRC_AVATAR_H #define CATA_SRC_AVATAR_H -#include -#include +#include #include #include #include +#include #include +#include #include +#include #include +#include "bodypart.h" #include "calendar.h" #include "character.h" +#include "character_id.h" #include "coordinates.h" #include "enums.h" #include "game_constants.h" +#include "item.h" #include "magic_teleporter_list.h" #include "mdarray.h" -#include "memory_fast.h" #include "point.h" #include "type_id.h" +#include "units.h" class advanced_inv_area; class advanced_inv_listitem; @@ -28,30 +33,27 @@ class advanced_inventory_pane; class cata_path; class diary; class faction; -class item; class item_location; class JsonObject; class JsonOut; +class map_memory; +class memorized_tile; class mission; class monster; class nc_color; class npc; class talker; struct bionic; +struct mtype; namespace catacurses { class window; } // namespace catacurses -enum class character_type : int; -class map_memory; -class memorized_tile; - namespace debug_menu { class mission_debug; } // namespace debug_menu -struct mtype; enum class pool_type; // Monster visible in different directions (safe mode & compass) diff --git a/src/diary.cpp b/src/diary.cpp index ecaae3f8f6bbd..1b96298bc04af 100644 --- a/src/diary.cpp +++ b/src/diary.cpp @@ -1,26 +1,40 @@ #include "diary.h" #include +#include #include -#include -#include #include #include #include "avatar.h" #include "bionics.h" #include "calendar.h" +#include "cata_path.h" #include "cata_utility.h" +#include "catacharset.h" +#include "color.h" #include "filesystem.h" +#include "flexbuffer_json-inl.h" +#include "flexbuffer_json.h" #include "game.h" +#include "json.h" +#include "json_error.h" +#include "kill_tracker.h" +#include "magic.h" #include "mission.h" #include "mtype.h" #include "mutation.h" +#include "npc.h" #include "output.h" #include "path_info.h" +#include "pimpl.h" +#include "proficiency.h" #include "skill.h" #include "string_formatter.h" +#include "translation.h" +#include "translations.h" #include "type_id.h" +#include "weather.h" diary_page::diary_page() = default; diff --git a/src/diary.h b/src/diary.h index 78db08e40652e..d5fbc3932837a 100644 --- a/src/diary.h +++ b/src/diary.h @@ -2,21 +2,26 @@ #ifndef CATA_SRC_DIARY_H #define CATA_SRC_DIARY_H +#include +#include +#include +#include #include -#include #include -#include "achievement.h" -#include "character.h" -#include "kill_tracker.h" -#include "skill.h" -#include "stats_tracker.h" -#include "ui.h" +#include "calendar.h" +#include "mutation.h" +#include "type_id.h" #include "units.h" -enum class time_accuracy; +class JsonOut; class JsonValue; +namespace catacurses +{ +class window; +} // namespace catacurses + /// /// diary page, to save current character progression /// diff --git a/src/diary_ui.cpp b/src/diary_ui.cpp index 888b6c90bb02d..ec26a4cbdb883 100644 --- a/src/diary_ui.cpp +++ b/src/diary_ui.cpp @@ -1,11 +1,13 @@ #include "game.h" // IWYU pragma: associated #include +#include #include #include #include #include +#include "catacharset.h" #include "color.h" #include "cursesdef.h" #include "diary.h" diff --git a/src/game.cpp b/src/game.cpp index 27bb3aac8a642..42667b5e2696c 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1,6 +1,5 @@ #include "game.h" -#include #include #include #include @@ -12,10 +11,13 @@ #include #include #include +#include #include #include #include #include +#include +#include #include #include #include @@ -45,21 +47,25 @@ #include "avatar_action.h" #include "basecamp.h" #include "bionics.h" +#include "body_part_set.h" #include "bodygraph.h" #include "bodypart.h" #include "butchery_requirements.h" #include "cached_options.h" +#include "cata_path.h" #include "cata_scope_helpers.h" #include "cata_utility.h" #include "cata_variant.h" #include "catacharset.h" #include "character.h" +#include "character_attire.h" #include "character_martial_arts.h" #include "city.h" #include "climbing.h" #include "clzones.h" #include "colony.h" #include "color.h" +#include "computer.h" #include "computer_session.h" #include "construction.h" #include "construction_group.h" @@ -72,10 +78,12 @@ #include "damage.h" #include "debug.h" #include "dependency_tree.h" +#include "dialogue.h" #include "dialogue_chatbin.h" #include "diary.h" #include "distraction_manager.h" #include "editmap.h" +#include "effect.h" #include "effect_on_condition.h" #include "enums.h" #include "event.h" @@ -86,6 +94,8 @@ #include "field_type.h" #include "filesystem.h" #include "flag.h" +#include "flexbuffer_json-inl.h" +#include "flexbuffer_json.h" #include "game_constants.h" #include "game_inventory.h" #include "game_ui.h" @@ -93,11 +103,11 @@ #include "gates.h" #include "get_version.h" #include "harvest.h" -#include "help.h" #include "iexamine.h" #include "init.h" #include "input.h" #include "input_context.h" +#include "input_enums.h" #include "inventory.h" #include "item.h" #include "item_category.h" @@ -116,8 +126,9 @@ #include "line.h" #include "live_view.h" #include "loading_ui.h" -#include "main_menu.h" #include "magic.h" +#include "magic_enchantment.h" +#include "main_menu.h" #include "make_static.h" #include "map.h" #include "map_item_stack.h" @@ -126,17 +137,20 @@ #include "mapbuffer.h" #include "mapdata.h" #include "mapsharing.h" +#include "maptile_fwd.h" #include "memorial_logger.h" #include "messages.h" #include "mission.h" #include "mod_manager.h" #include "monexamine.h" +#include "mongroup.h" +#include "monster.h" #include "monstergenerator.h" #include "move_mode.h" #include "mtype.h" #include "npc.h" -#include "npctrade.h" #include "npc_class.h" +#include "npctrade.h" #include "omdata.h" #include "options.h" #include "output.h" @@ -144,7 +158,6 @@ #include "overmap_ui.h" #include "overmapbuffer.h" #include "panels.h" -#include "past_games_info.h" #include "past_achievements_info.h" #include "path_info.h" #include "pathfinding.h" @@ -152,6 +165,7 @@ #include "player_activity.h" #include "popup.h" #include "profession.h" +#include "proficiency.h" #include "recipe.h" #include "recipe_dictionary.h" #include "ret_val.h" @@ -170,6 +184,8 @@ #include "text_snippets.h" #include "tileray.h" #include "timed_event.h" +#include "translation.h" +#include "translation_cache.h" #include "translations.h" #include "trap.h" #include "ui.h" @@ -182,8 +198,11 @@ #include "veh_type.h" #include "vehicle.h" #include "viewer.h" +#include "visitable.h" #include "vpart_position.h" #include "vpart_range.h" +#include "wcwidth.h" +#include "weakpoint.h" #include "weather.h" #include "weather_type.h" #include "worldfactory.h" diff --git a/src/game.h b/src/game.h index 2b65c5aac5d72..dba3999e6476e 100644 --- a/src/game.h +++ b/src/game.h @@ -7,12 +7,12 @@ #include #include #include -#include +#include #include -#include -#include #include #include +#include +#include #include #include #include @@ -20,6 +20,7 @@ #include "calendar.h" #include "character.h" #include "character_id.h" +#include "color.h" #include "coordinates.h" #include "creature.h" #include "cursesdef.h" @@ -28,23 +29,12 @@ #include "global_vars.h" #include "item_location.h" #include "memory_fast.h" -#include "monster.h" #include "pimpl.h" #include "point.h" #include "type_id.h" -#include "uistate.h" #include "units_fwd.h" #include "weather.h" -class Character; -class creature_tracker; -class JsonValue; -class item; -class location; -class eoc_events; -class spell_events; -class viewer; - constexpr int DEFAULT_TILESET_ZOOM = 16; // The reference to the one and only game instance. @@ -76,32 +66,40 @@ enum safe_mode_type { enum action_id : int; +class JsonValue; class achievements_tracker; class avatar; +class cata_path; +class creature_tracker; +class eoc_events; class event_bus; class faction_manager; +class field_entry; +class item; class kill_tracker; +class live_view; +class loading_ui; class map; class map_item_stack; class memorial_logger; +class monster; class npc; +class npc_template; +class overmap; class save_t; class scenario; -class stats_tracker; -class vehicle; -struct WORLD; -struct special_game; -template -class tripoint_range; -class exosuit_interact; -class live_view; -class loading_ui; -class overmap; class scent_map; +class spell_events; class static_popup; +class stats_tracker; class timed_event_manager; class ui_adaptor; +class uilist; +class vehicle; +class viewer; +struct special_game; struct visibility_variables; +template class tripoint_range; using item_filter = std::function; using item_location_filter = std::function; diff --git a/src/handle_action.cpp b/src/handle_action.cpp index 3cc0cc11d2695..95fa7ed406152 100644 --- a/src/handle_action.cpp +++ b/src/handle_action.cpp @@ -1,9 +1,9 @@ #include "game.h" // IWYU pragma: associated -#include #include #include #include +#include #include #include #include @@ -24,6 +24,7 @@ #include "calendar.h" #include "catacharset.h" #include "character.h" +#include "character_attire.h" #include "character_martial_arts.h" #include "clzones.h" #include "color.h" @@ -49,6 +50,8 @@ #include "gun_mode.h" #include "help.h" #include "input_context.h" +#include "input_enums.h" +#include "inventory_ui.h" #include "item.h" #include "item_group.h" #include "itype.h" @@ -61,11 +64,13 @@ #include "map_iterator.h" #include "mapdata.h" #include "mapsharing.h" +#include "mdarray.h" #include "messages.h" #include "monster.h" #include "move_mode.h" #include "mtype.h" #include "mutation.h" +#include "npc.h" #include "options.h" #include "output.h" #include "overmap_ui.h" @@ -77,10 +82,13 @@ #include "safemode_ui.h" #include "sounds.h" #include "string_formatter.h" +#include "string_input_popup.h" #include "timed_event.h" +#include "translation.h" #include "translations.h" #include "ui.h" #include "ui_manager.h" +#include "uistate.h" #include "units.h" #include "value_ptr.h" #include "veh_type.h" From 118cc2984267f9edbafa18d88af11d3cc8aa6e67 Mon Sep 17 00:00:00 2001 From: Brambor Date: Mon, 8 Apr 2024 13:07:39 +0200 Subject: [PATCH 20/48] iwyu: snowball changes --- src/character.cpp | 1 + src/mutation.cpp | 1 + src/player_activity.cpp | 1 + src/sdltiles.cpp | 1 + src/suffer.cpp | 1 + src/weather.cpp | 1 + 6 files changed, 6 insertions(+) diff --git a/src/character.cpp b/src/character.cpp index 8dc5df0ab86e5..1b1cdb3d96a81 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -99,6 +99,7 @@ #include "trap.h" #include "ui.h" #include "ui_manager.h" +#include "uistate.h" #include "units.h" #include "value_ptr.h" #include "veh_type.h" diff --git a/src/mutation.cpp b/src/mutation.cpp index 377046d82dc8e..a53bf1a6589d1 100644 --- a/src/mutation.cpp +++ b/src/mutation.cpp @@ -41,6 +41,7 @@ #include "rng.h" #include "text_snippets.h" #include "translations.h" +#include "uistate.h" #include "units.h" static const activity_id ACT_PULL_CREATURE( "ACT_PULL_CREATURE" ); diff --git a/src/player_activity.cpp b/src/player_activity.cpp index 1926578532c68..4ae013b40d217 100644 --- a/src/player_activity.cpp +++ b/src/player_activity.cpp @@ -24,6 +24,7 @@ #include "string_formatter.h" #include "translations.h" #include "ui.h" +#include "uistate.h" #include "units.h" #include "value_ptr.h" diff --git a/src/sdltiles.cpp b/src/sdltiles.cpp index 25b358f11ab8e..aaaf5b921f5a4 100644 --- a/src/sdltiles.cpp +++ b/src/sdltiles.cpp @@ -70,6 +70,7 @@ #include "sdl_gamepad.h" #include "sdlsound.h" #include "string_formatter.h" +#include "uistate.h" #include "ui_manager.h" #include "wcwidth.h" #include "cata_imgui.h" diff --git a/src/suffer.cpp b/src/suffer.cpp index 4e15e345f65bf..ce6e3c60061da 100644 --- a/src/suffer.cpp +++ b/src/suffer.cpp @@ -59,6 +59,7 @@ #include "text_snippets.h" #include "translations.h" #include "type_id.h" +#include "uistate.h" #include "units.h" #include "weather.h" #include "weather_type.h" diff --git a/src/weather.cpp b/src/weather.cpp index 9ce867de352ca..6886c7d62ee63 100644 --- a/src/weather.cpp +++ b/src/weather.cpp @@ -43,6 +43,7 @@ #include "string_formatter.h" #include "translations.h" #include "trap.h" +#include "uistate.h" #include "units.h" #include "weather_gen.h" From ac2d4a7e77e4dfe9b04e0c7f6c9764e4305fc400 Mon Sep 17 00:00:00 2001 From: Venera3 <72006894+Venera3@users.noreply.github.com> Date: Tue, 9 Apr 2024 05:56:22 +0200 Subject: [PATCH 21/48] Fix ASan error, suppress more checks (#72900) * Hopefully no shadowy bytes * No u * Update src/mutation_data.cpp Co-authored-by: Brambor --------- Co-authored-by: Brambor --- src/mutation_data.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/mutation_data.cpp b/src/mutation_data.cpp index bd3750e81e631..a0c3d39a1a25e 100644 --- a/src/mutation_data.cpp +++ b/src/mutation_data.cpp @@ -650,6 +650,8 @@ void mutation_branch::check_consistency() { for( const mutation_branch &mdata : get_all() ) { const trait_id &mid = mdata.id; + const mod_id &trait_source = mdata.src.back().second; + const bool basegame_trait = trait_source.str() == "dda"; const std::optional &s_id = mdata.scent_typeid; const std::map &an_id = mdata.anger_relations; for( const auto &style : mdata.initial_ma_styles ) { @@ -676,10 +678,13 @@ void mutation_branch::check_consistency() if( s_id && !s_id.value().is_valid() ) { debugmsg( "mutation %s refers to undefined scent type %s", mid.c_str(), s_id.value().c_str() ); } + // Suppress these onload warnings for overlapping mods for( const trait_id &replacement : mdata.replacements ) { const mutation_branch &rdata = replacement.obj(); + bool suppressed = rdata.src.back().second != trait_source && !basegame_trait; for( const mutation_category_id &cat : rdata.category ) { - if( std::find( mdata.category.begin(), mdata.category.end(), cat ) == mdata.category.end() ) { + if( std::find( mdata.category.begin(), mdata.category.end(), cat ) == mdata.category.end() && + !suppressed ) { debugmsg( "mutation %s lacks category %s present in replacement mutation %s", mid.c_str(), cat.c_str(), replacement.c_str() ); } @@ -691,27 +696,28 @@ void mutation_branch::check_consistency() } const mutation_branch &adata = addition.obj(); bool found = false; + bool suppressed = adata.src.back().second != trait_source && !basegame_trait; for( const mutation_category_id &cat : adata.category ) { found = found || std::find( mdata.category.begin(), mdata.category.end(), cat ) != mdata.category.end(); } - if( !found ) { + if( !found && !suppressed ) { debugmsg( "categories in mutation %s don't match any category present in additive mutation %s", mid.c_str(), addition.c_str() ); } } - // Suppress this check for trait/prereq combos from different mod sources for( const mutation_category_id &cat_id : mdata.category ) { if( !mdata.prereqs.empty() ) { bool found = false; + bool suppressed = false; for( const trait_id &prereq_id : mdata.prereqs ) { const mutation_branch &prereq = prereq_id.obj(); + suppressed = suppressed || ( prereq.src.back().second != trait_source && !basegame_trait ); found = found || - std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end() || - mdata.src.end()->second != prereq.src.end()->second; + std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end(); } - if( !found ) { + if( !found && !suppressed ) { debugmsg( "mutation %s is in category %s but none of its slot 1 prereqs have this category", mid.c_str(), cat_id.c_str() ); } @@ -719,13 +725,14 @@ void mutation_branch::check_consistency() if( !mdata.prereqs2.empty() ) { bool found = false; + bool suppressed = false; for( const trait_id &prereq_id : mdata.prereqs2 ) { const mutation_branch &prereq = prereq_id.obj(); + suppressed = suppressed || ( prereq.src.back().second != trait_source && !basegame_trait ); found = found || - std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end() || - mdata.src.end()->second != prereq.src.end()->second; + std::find( prereq.category.begin(), prereq.category.end(), cat_id ) != prereq.category.end(); } - if( !found ) { + if( !found && !suppressed ) { debugmsg( "mutation %s is in category %s but none of its slot 2 prereqs have this category", mid.c_str(), cat_id.c_str() ); } From 8b99255392c653a8959d342b1b72a640fc553816 Mon Sep 17 00:00:00 2001 From: Binrui Dong Date: Tue, 9 Apr 2024 11:57:06 +0800 Subject: [PATCH 22/48] Fix GitHub Actions Node.js runtime deprecation warning in macOS release build workflow (#72909) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d9910443c6470..a2d6580ae8758 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -249,7 +249,7 @@ jobs: uses: mymindstorm/setup-emsdk@v13 - name: Install runtime dependencies (mac) if: runner.os == 'macOS' - uses: BrettDong/setup-sdl2-frameworks@v1 + uses: BrettDong/setup-sdl2-frameworks@v2 with: sdl2: latest sdl2-ttf: latest From 786791b789f71767de94cd15f7028ba219904db7 Mon Sep 17 00:00:00 2001 From: Brambor Date: Tue, 9 Apr 2024 06:04:04 +0200 Subject: [PATCH 23/48] Docs and in game typos (#72901) * docs fixes * zones: add missing "." --- data/json/zones.json | 2 +- src/clzones.h | 2 +- src/diary.h | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/data/json/zones.json b/data/json/zones.json index 45933f4aaa4da..35dd4e323da8b 100644 --- a/data/json/zones.json +++ b/data/json/zones.json @@ -46,7 +46,7 @@ "type": "LOOT_ZONE", "name": "Disassembly Work", "display_field": "fd_disassembly_work_zone", - "description": "Items in this zone are marked for disassembly" + "description": "Items in this zone are marked for disassembly." }, { "id": "FARM_PLOT", diff --git a/src/clzones.h b/src/clzones.h index 3c6c62ac5ba18..fb31b1d93a498 100644 --- a/src/clzones.h +++ b/src/clzones.h @@ -67,7 +67,7 @@ class zone_type static void reset(); void load( const JsonObject &jo, std::string_view ); /** - * All spells in the game. + * All zone types in the game. */ static const std::vector &get_all(); bool is_valid() const; diff --git a/src/diary.h b/src/diary.h index d5fbc3932837a..af82337b35cd7 100644 --- a/src/diary.h +++ b/src/diary.h @@ -68,8 +68,9 @@ struct diary_page { }; /// -/// diary is connected to the player avatar. -/// the player is able to add new pages every page saves the current character progression and shows the improvements compared to the previous pages +/// Diary is connected to the player avatar. +/// The player is able to add new pages. +/// Every page saves the current character progression and shows the improvements compared to the previous pages. /// The player is also able to add a Text in every page. /// class diary From 83f4fc100743f63b90a56b3ab6a5561381b3686f Mon Sep 17 00:00:00 2001 From: DeltaPavonis <111613869+DPavonis@users.noreply.github.com> Date: Mon, 8 Apr 2024 21:04:39 -0700 Subject: [PATCH 24/48] Bugfix for UPS not charging items with empty integrated batteries (#72837) * Copied code from process_vehicle_items/recharge_part_idx * Applied astyle --- src/character.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/character.cpp b/src/character.cpp index 1b1cdb3d96a81..8a8c39b848f7d 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -12844,7 +12844,8 @@ void Character::process_items() // Load all items that use the UPS and have their own battery to their minimal functional charge, // The tool is not really useful if its charges are below charges_to_use std::vector inv_use_ups = cache_get_items_with( flag_USE_UPS, []( item & it ) { - return !!it.ammo_data(); + return ( it.ammo_capacity( ammo_battery ) > it.ammo_remaining() || + ( it.type->battery && it.type->battery->max_capacity > it.energy_remaining( nullptr ) ) ); } ); if( !inv_use_ups.empty() ) { const units::energy available_charges = available_ups(); From 342418c581f2fa3ef5bb3047c82482d916eb7b2d Mon Sep 17 00:00:00 2001 From: Qrox Date: Sat, 17 Feb 2024 23:51:22 +0800 Subject: [PATCH 25/48] Clean up dictionary --- tools/spell_checker/dictionary.txt | 417 +---------------------------- 1 file changed, 1 insertion(+), 416 deletions(-) diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 380336de19707..5b6b1b7769bb5 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -1,7 +1,5 @@ -abcdefghijklmnopqrstuvwxyz aberrance aboveground -abso acausal acceleratron acceleratrons @@ -9,11 +7,9 @@ accessorized accessorizing acclimatization accommodations -accoustrement accuracies accurized achelousaurus -acho acidball acrocanthosaurus acrostic @@ -28,13 +24,11 @@ aerarium aerially aeroctinus aerofoil -aeterna aetheric aetherically affixes affordability affordably -afro afterbirth aftereffect aftereffects @@ -64,7 +58,6 @@ aketons alamosaurus alate alates -alay albertonykus albertosaurus alchemic @@ -74,10 +67,6 @@ aldosterone alembic alexandrite alexandrites -algum -alienis -alient -alinagerimi alkahest alkalis alkyl @@ -87,31 +76,25 @@ allosaurus allosaurusid allotrope alloying -allucination alnico alquerque -altamente alternators alumentum aluminized amargasaurus ambusher amigara -amixed amortization amphibole amt -analogues ananassa anchisaurus -andom androgynes androgyny anechoic angelfish anglerfish anglicized -anhaltende anhydride animalskin animata @@ -151,13 +134,11 @@ aprotic aquacultural aquaculture aquamarines -aqueles aquilops arachnophobia aramid arapaima arborescent -arebinya args armeniaca armet @@ -177,7 +158,6 @@ artificer artisanals arvore asexuality -askin aspirants assembler assemblers @@ -186,8 +166,6 @@ assimilator astrobiology astrolaspis asymmetrically -ategory -aterial athame athames atlatl @@ -205,7 +183,6 @@ atwixt augmentations auk auroral -ausgegangen autoclave autoclaving autohaul @@ -223,15 +200,12 @@ aventail aventails avgas avians -aving avium -avy axedwarves axeman axolotl azide b -babiues babylonica backblast backrest @@ -248,10 +222,8 @@ balefires balisong ballistae ballistoceras -balogna bandolier bandoliers -bangin barbute bardiche barding @@ -272,13 +244,10 @@ batching batlike batrachian batt -bday beaked bearish beartrap -beeeeeeeeep beefsim -beforenext beladen belcher bemoans @@ -298,7 +267,6 @@ bifocal biggun bigpack bileworm -bilonyali bimetal binocs bioactive @@ -337,7 +305,6 @@ birchbark birdhouses birdlike birdshot -bitchin bitts bituminous bivalve @@ -352,10 +319,8 @@ bloodhunting bloodstreams bloomery bloop -blowback blued bluegill -blup blutwurst boardable bobburger @@ -374,20 +339,14 @@ bonelike boneplate bookplate bookstrap -boomin boonie -booo -booorrrring -boop bootable bootup boozeberry borderless boreas -bos bovid bowfin -bowyery boxcutter boxlike bpm @@ -402,22 +361,18 @@ breachhead breadboard breakrooms breatharians -brennt brewable brigandine brigandines brimless brined -bringin broadhead broadswords -brobdignagian bronchodilator bronchospasm bubblicious bubo buboes -bucka buckhorn budgerigar bufo @@ -436,18 +391,13 @@ burbots burdocks burette burnback -burnin butadiene butternut butternuts buttstock buttstroke buzzcut -buzzz bzzt -bzzzzzt -bzzzzzz -bzzzzzzt c caecilian caesariense @@ -463,7 +413,6 @@ camarasaurus camelops camo camphine -campin camptosaurus camspies camspy @@ -473,7 +422,6 @@ canids canina cannelured caparison -caprison capsicum carabiner carabiners @@ -482,7 +430,6 @@ carapaces caret carroballista carroballistae -carryin cartilaginous casehead caseless @@ -491,7 +438,6 @@ castable casuals catalyzes cataphract -catel cattail cattails causer @@ -503,7 +449,6 @@ cbm cc cdc cdda -cegamente centric centrigrade centrigrades @@ -518,46 +463,34 @@ cere cerium cervine cestus -ch chachalaca chainmail chambering chamberings -champed -channnnce chaotically chaplet -chasin chasmosaurus chaturanga chausses cheapshot checkerboard checkmarks -cheescutter chelator chested chestpiece chestplate chestplates chestwrap -chhk chicharrones chickenbot chickenwire -chidlldren -chieftan -chik chirality chiropteran -chirurgery chirurgic chitin chitinous chitinworking chk -chkch -chkchh chlorination cholla chonker @@ -566,16 +499,13 @@ chown chromatographer chromed chromoelectric -chuk cichlid cichlids -cientista circlet circuiting citrine citrines civilizational -clairly clairsentience clairsentient clambers @@ -583,7 +513,6 @@ clanged clanker clanky clarifier -clashin cleansuit clearcrete clickity @@ -606,7 +535,6 @@ coeculus coelophysis coffeetable coffeetree -coho coifs coilgun coipo @@ -631,7 +559,6 @@ concentrically concerningly condensor conductively -conjur consecrator consistence const @@ -642,7 +569,6 @@ contorts contrails contraindicated controllability -conversando coolants cooldown coprocessors @@ -655,7 +581,6 @@ cordlike cored corkboard corolla -corporality corporeality corvid corythosaurus @@ -685,26 +610,20 @@ crossbuck crossfit crossguard crosshair -crossin crosstie croupiere crowdfunding -cryin cryomask cryopod cryopreservation cryosleep crystaltender cthonic -ctivate -ctulaly cudgels cuirasses cultivator culturing -cura curarines -curasse curassow currywurst cushiony @@ -722,7 +641,6 @@ cyberdog cybernetically cyberstalking cyberterror -cybug cycad cyclohexane cyclopean @@ -741,11 +659,8 @@ datura daubing daypack dazes -dd -deact deadland deadlands -deadun deadzone deathcam deathmobile @@ -756,24 +671,18 @@ debuffs debugged decap decelerates -deceptived dedicational defatted deforming -dehina dehydrator dehydrators -deines deinonychus -deles deliquescent deliriant -delsihous demagnetized demihuman demining demisexuality -demoed denarius denatonium dentata @@ -790,12 +699,9 @@ deselect desiccate designator desilo -dessen destabilizes destructed destructing -deth -deuyl devilling devourer devs @@ -803,7 +709,6 @@ dewlap dextrous dharmachakra diaspora -didn dieselpunk diffract diffracting @@ -838,7 +743,6 @@ dissector dissoluted dist distaff -distend distillate distillations distractingly @@ -847,10 +751,8 @@ disulphide divemask divemasks diverges -divil dizzied dodecahedron -doesnt doffing dogbane doggo @@ -859,7 +761,6 @@ dollkin domestica dongle doomseer -dooooom doorstopper dooting doots @@ -921,20 +822,17 @@ earthkin earthlike earthshaper earthside -eatbtb ebon ebook eboshi echinoderm echos -ecrease edibility editable edmontonia edmontosaurus edu edutainment -efault eidolon einiosaurus elderberries @@ -947,8 +845,6 @@ electrolyzer electromancy electrophoresis electroreceptors -eles -elete elongates elopements elsewheres @@ -956,18 +852,14 @@ elven elves elytra embrasure -emode -emove emplate emulates -enchauntment encumbering encumbers endochitin endolymph endoskeleton endpoint -ener enervated enervating enfranchisement @@ -979,7 +871,6 @@ envenomed eocs eolocanth eoraptor -eou epicuticle epistemology eppies @@ -987,16 +878,10 @@ equestrian equestrians ergometer ergonomics -erlischt erotomania -ersonal eructing -eructor erythrocytes -erzeugen escalier -eset -esous espatier espatiers esque @@ -1005,7 +890,6 @@ estoc estocs etches ethereally -etiam euoplocephalus eusocial evacs @@ -1029,7 +913,6 @@ exosuit exosuits expansionary expansions -explodin explosivity expounds extenders @@ -1054,14 +937,12 @@ faceplates faceted faders faewild -fakkin falcata falleng fallfish falx falxes familiaris -famoso fanbase farrier farsightedness @@ -1071,7 +952,6 @@ fastnesses faultline fauxben favorited -fc feaver fecundity feedstock @@ -1082,14 +962,11 @@ fermionic ferrocyanide ferrofluid ferromagnetic -fetick fetlock fetlocks fibercloth fiberoptic fiddleheads -figgered -fightin filenames fileset filmstrip @@ -1116,7 +993,6 @@ fireweed fishfolk fishily fishlike -fl flagration flairs flamberge @@ -1124,13 +1000,11 @@ flamesword flametouched flammenschwert flanged -flappin flaregun flarewhip flatjaw flavorings flays -fle flechette flechettes fleshier @@ -1140,7 +1014,6 @@ flexibility flightworthy flim flintknapping -flippin floppies flours floury @@ -1154,7 +1027,6 @@ flump fluoxetine flusteration flyable -flyin foamcrete foldable folktales @@ -1174,16 +1046,12 @@ forelegs forestalling forestock forgemaster -forgnottedn forklifts -forntget fortifiable foundress foxfire fp -fpoon fps -fram framebuffer frameworks frankenfurter @@ -1193,7 +1061,6 @@ freerunner freerunning freezerburned frontiersmen -frorever frostburn frostburnt frostnipped @@ -1201,7 +1068,6 @@ frostrimed froths frybread ft -fuckn fuckwits fulleroclathrate fullscreen @@ -1210,19 +1076,14 @@ fumarolic functionless fungaloid fungaloids -funggnaloid fungicidal -fungii funnelcap fursuit fusillies fusilly fuze -fweet fwoosh -fzzzzzt g -gachunk gadol gaits galea @@ -1231,7 +1092,6 @@ gallimimus gallore gambeson gambesons -gamp gangling gapes gardenling @@ -1240,7 +1100,6 @@ gargoyleosaurus garishly garlander garou -garried gars gasbomb gasgun @@ -1250,7 +1109,6 @@ gastonia gastrolith gastropod gastropods -geddoff genderfluid genderless genderqueer @@ -1271,7 +1129,6 @@ github gladius glaive glaives -glasknife glassblower glassblowing glassteel @@ -1286,19 +1143,14 @@ glumly glyceride glyptodont glyptotherium -goooood goops gores gorget gorgosaurus gouts -goverments -gowod gozu -gr gracken gradation -gramma granivorous grapevines graspers @@ -1317,7 +1169,6 @@ greenways gridded grindle grinny -grnd grodd grommets groundcover @@ -1325,7 +1176,6 @@ groundhogs groundnut groundsheet gryposaurus -gt guapote gubbins guls @@ -1342,15 +1192,11 @@ gutskin guvnah gymnocladus h -hability hacksaws -hadn hadrosaur hadrosaurus haematopoiesis haft -hahahaha -hahahahahaha hakama halazone halberd @@ -1378,10 +1224,8 @@ harries harvestable hauberk hauberks -hbhbh hdd headbutts -headin headwear headwrap healthiness @@ -1390,7 +1234,6 @@ heartlike heartrate heatsink heatsinks -heear heelys helipad helipads @@ -1410,17 +1253,12 @@ hexamine hexapod hexogen hg -hidder -hideos hider -hidous hippocastanum -hissssssssss hitpoints hivemind hmm hnefatafl -holdin hollowpoint holstered holstering @@ -1436,7 +1274,6 @@ homunculi homunculus honeygold honker -hoose hooved horchata hosomaki @@ -1449,17 +1286,11 @@ housecat hp hr hrm -hrmmm -hsh -hsss https hued hulled humaniform humaniforms -hummm -hummmmm -hund hunkers hunllef hydria @@ -1484,21 +1315,15 @@ hypervitaminosis hypno hypochlorite hypogaea -ibalalehu ichor ichthys -idkont ierde -ifoundramsesthecat ignitable -ignto illegibility illinoinensis illuminance illuminator -ilter immersions -immobiliser immobilization impaler impalers @@ -1520,11 +1345,9 @@ infamously infeme infinitree infinitrees -infirma influencers inhalant inhalative -inidatseda injest inlays innawood @@ -1557,21 +1380,15 @@ intoxicative inulin inverts invlets -ios irising ironshod irradiance irremovable irritants -isable -isassembled -isk isopod issi issuer itchiness -itemname -iwedalehu j jabberwock jabberwocks @@ -1581,7 +1398,6 @@ jawless jerrycan jerrypack jewelboxes -jians jirt jirts johnnycake @@ -1591,7 +1407,6 @@ jolter jort jorts jpg -jtest junglefowl junipers k @@ -1607,15 +1422,11 @@ karting kasaya kastane katan -katanas katar kcal keffiyeh keikogi -kennit -ker kerblam -kerchang ketene keybind keybinding @@ -1625,15 +1436,10 @@ keyring kg khopesh khopeshes -khru kickboard -kickin kickstand kilij kilijes -kilijs -killbasa -killin kilns kilroy kilted @@ -1641,7 +1447,6 @@ kinbot kinderling kippah kirpan -kisskiss kittel klompen km @@ -1650,38 +1455,27 @@ knapping knifehand knifemaker knockback -knockin knotweed knowium knuckleduster knuckledusters -knyf kokanee kompot -koom kops kord kosmoceratops krabgek krar kreck -krick kriegsmesser kriegsmessers krises -kshhhsk -kshhssk -kshssssssk -ksshhsk -kssht -ksssh kufi kuji kukri kukris kunoichi kunst -kzzz l labbit labrys @@ -1692,7 +1486,6 @@ lambeosaurus lamellae lamellar landshark -langourous lanthanum lategame latrunculi @@ -1701,10 +1494,8 @@ lattices laureth lawd lawnmowers -layin lb lbs -leache leaper leatherbacked leatherbound @@ -1713,31 +1504,23 @@ leatherworking leavening lectern leers -legges legume lemacto lemony lemure -lense leptoceratops lessers -letal -lettin -leuchtet leverages levergun leverpostej -lewede leylines libertarianism lich -lickin lidless lifeforce lifegiver lifelessly lifestraw -lightnin lightshow lightstrip liker @@ -1754,7 +1537,6 @@ livestream livingrooms lizardfolk lizardlike -ll ln loadings loadout @@ -1776,10 +1558,7 @@ lootables lopes lorekeeper lorica -losion lowtop -lp -lq ltd lucerne luddites @@ -1789,12 +1568,9 @@ lumberjills lumbermill lungfish lutefisk -lutely lvl lx lycra -lyflode -lyin m machiner macronutrient @@ -1807,7 +1583,6 @@ mages magick magickal magicks -magicks magwells maiasaura maintainers @@ -1826,7 +1601,6 @@ manfriendwich manhack manhacks manoomin -manuc manufactorize manufactory manwich @@ -1839,7 +1613,6 @@ massachusetite massproduced masterkey mastiffs -matar matchhead matryoshka mausketeer @@ -1850,13 +1623,11 @@ maxwellian mayaheros mayapple mayfieldi -mbie md mealgrub mealgrubs mealworm mealworms -meanin meathook medibot megachette @@ -1867,13 +1638,10 @@ megalith megastore melee membranous -mendacium menorah mesenterium meshwork messily -messin -metahi metallics metalloid metalsmithing @@ -1886,9 +1654,7 @@ methacola methodologies methothexazole metrology -mezuzah mezuzot -miasaura micellular microbian microbrewed @@ -1913,7 +1679,6 @@ midrange midsentence migo mildewy -militar milkfat millenia milspec @@ -1923,7 +1688,6 @@ minhocao minifreezer minifridge minimap -minin mininuke minireactor mino @@ -1935,8 +1699,6 @@ misperceive misprogram misreadings misshaped -misshapened -mitzvah mitzvot mixup ml @@ -1946,19 +1708,16 @@ moar moas mobbings modding -moder modernday modifier modifiers modularity modulations -mohawk mohawks moisturized mokorotlo moldspring molluscicide -monicked monocrystalline monomeric monomolecular @@ -1967,7 +1726,6 @@ moonflowers moorhen mordant morels -moriatur morningstar morningstars moroi @@ -1975,7 +1733,6 @@ mortems mosaicus mosasaurus mostlike -mostravam mote motes motorpool @@ -1987,7 +1744,6 @@ mouthgear mouthpart mouthparts movesets -movestr mph mr mrad @@ -2012,9 +1768,7 @@ muskellunge mutagenically mutagenicity mutagens -mutatur mutus -muzika muzzleloaders mycoid mycus @@ -2022,7 +1776,6 @@ myomer myrmidon mythologically n -nable nacreous nagamaki naginata @@ -2046,35 +1799,25 @@ nanuqsaurus naranjilla narry natively -ncrease -nd -ndo nearsightedness necco neckbeard -neckin neckwear necro necrowolf nectivore -needin needlelike -negeri neonate neotenic neotheropod netkit -nettik neurocognitive neurodegeneration neuroimaging neurosynaptic neutrite -newe newsbots newsweekly -ngs -nibblin nibelung nichrome nightcrawler @@ -2084,19 +1827,15 @@ nightlights nightstalker nightvision nigori -nigromancie nimbelemnite nimbleness nimbler nimue niter nitrox -nittlebam -nn nocking nocks nodachi -nodachis nodosaurus noisiness nomex @@ -2109,7 +1848,6 @@ nonsedated nonstandard nonuniform nonverbally -noone nopal nopales nopalito @@ -2119,7 +1857,6 @@ noseless nothronychus npc npcs -nrmmy nuckalavee nuckalavees nuda @@ -2139,15 +1876,10 @@ officinale offputting offroad ohms -oignon oleaginous oleoresin olieribos -olor omnivore -ompare -omplete -oout opacity openable openair @@ -2156,12 +1888,10 @@ openingly ophanim ophanims optimality -opy orc orcs orgs orichalcum -orld ornately ornithomimid ornithomimus @@ -2173,13 +1903,10 @@ osho osteoderm osteoderms osteokinesis -oter -otes otherland otherlander otherlands otherworlds -oud outgrowths outperforms outputting @@ -2189,7 +1916,6 @@ overbore overbuilt overclock overclocks -overcurrent overdosage overdrinking overengineered @@ -2198,7 +1924,6 @@ overgloves overgrowth overhood overhoods -overload overmap overmaps overpenetration @@ -2215,7 +1940,6 @@ ovipositor ovipositors ovoviviparous owlbear -owww oxidant oxidants p @@ -2224,7 +1948,6 @@ pachyrhinosaurus packable packmate pacu -paf painkilling paleozoic palpably @@ -2246,9 +1969,7 @@ parboiling paroxysms parries parrying -parst parthenogenetic -partyin passionfruit pastes pasteurize @@ -2259,17 +1980,13 @@ peacoat peanutbutter pearlescent pebbled -peccari peccary -pecial pedipalps -peice pelmeni pemmican penalizes penetrators pentaceratops -pentacerops pentagonal peptone percents @@ -2283,7 +2000,6 @@ permutator perplexion persica perturbing -pesquisando peto petpack petrification @@ -2311,13 +2027,9 @@ pickelhaube pickerel pickerels pickhead -pickin -pickins pictograms pictographic -pidgeon piezomechanical -pii pileus pinita pinnata @@ -2330,7 +2042,6 @@ piraiba piste pixelates pixelation -plaas placidly planar planer @@ -2345,7 +2056,6 @@ playthroughs pleco plectrum pleistocene -ples plesiosaurus plink plinker @@ -2395,9 +2105,7 @@ powerlifting powerplants powertool prancer -prateleiras prayerbook -prayeres preconditions precooked predatorially @@ -2423,20 +2131,18 @@ prigs primeside privet prizefights +proc procedurally procompsignathids proficiencies proficiently profusive -promptus propellants proprietary proprioception propyl prosaurolophus -prosaurulophus protectiveness -proten prototyping protuberances prybar @@ -2452,7 +2158,6 @@ psychochemical psychopharmacological psychrophile pteranodon -ptions pts puckish puffball @@ -2482,7 +2187,6 @@ pyrolysis pyrometer pyrophoric pyrotechnical -pyroteknik pyrrolidone q qiang @@ -2492,7 +2196,6 @@ quadcopter quadcopters quadrilateral quadrupedal -quams quantification quarterpanel quarterstaves @@ -2502,7 +2205,6 @@ quern quetzalcoatlus quickheal quicksave -quidem quiescent quillbag quipping @@ -2533,9 +2235,7 @@ ravenfolk rayed razorbar razorclaw -razorshap razorsharp -razzin rd reachability reactively @@ -2553,14 +2253,11 @@ rebars rebrands rebreathers rebreathing -recalt recaptures rechargable recharger recirculation -reckonin reclines -recolherem recrafted recuperator recursively @@ -2569,9 +2266,7 @@ recutita recycler redcaps redden -redear redesigns -redits reenabled reenactor reenactors @@ -2608,7 +2303,6 @@ resinous resizing resmelt resonances -resultados reticle retrodays revitalizes @@ -2624,17 +2318,13 @@ rhytidome rhytidomes ribbonlike ridged -riendly rightmost rigida rioter ripstop -riskin -rivalling riverstone roadheader roadstop -roarrr roastable robogun robotfindscatan @@ -2656,16 +2346,10 @@ rootlike ropers ropy rothe -roun -rrow -rrrip -rrrrip rubra -rugerlcp ruleset ruminant ruminants -rummagin s sabalo sabaton @@ -2674,7 +2358,6 @@ saboted sabots saccharification saccharum -sadisticly safemode safewords sagely @@ -2702,17 +2385,12 @@ sauropod saurornitholestes saurulophus sautee -sautered -savetest sawblade sawblades sawteeth -sayig scabbards scalable scatterer -schippe -scho scifi scimitars scions @@ -2721,10 +2399,8 @@ sclera sclerotin sclerotized scolosaurus -scrabblin screecher screwdriving -scrrrash scruffs scutcher scute @@ -2739,10 +2415,8 @@ secretively secubot segmentata segmentation -seguiram seldomly selectable -sendo senet serendipitously seriema @@ -2754,7 +2428,6 @@ servomotors seweranha sexten sexualities -sh shadowbox shadowboxing shadowcat @@ -2787,7 +2460,6 @@ shotgunner shotshell shotshells shoulderblades -shouldno shovelhead shrieker shriekling @@ -2803,10 +2475,8 @@ siloing sinensis sinously sintering -sithen sixdust skeletonized -skeltal skillset skirmisher skitterbot @@ -2821,7 +2491,6 @@ slaked slamfire slapjack slatted -sld sleeker sleeved slimes @@ -2833,19 +2502,16 @@ sluglike smallmouth smartcard smartgun -smartphone smg smithing smokable smokegun -smokin smoothbore snakelet snakelets snapback snappier snick -sniffin snikt snotgobbler snuggie @@ -2871,7 +2537,6 @@ spacebar spaceflight spacers spadelike -spak spall spalling sparker @@ -2934,16 +2599,11 @@ spurge squadmates squamish squeezable -squelchies squiggling src -ssss -sssssh -ssssssss stackable standalone starer -starrin staunchable staunching std @@ -2963,10 +2623,8 @@ stimulatory stirfry stirge stockrooms -stom stompers stompy -stompy-clanker stonelike stoneling stonelings @@ -2975,14 +2633,12 @@ stook stooking stopcock stoppered -stoppeth storable stormcaller stormshaper stormshaping straitjacketed stratoscomm -straunge streetfighters stressfully strobus @@ -2992,7 +2648,6 @@ stungun sturdily sturdiness sturgeons -stylette styracosaurus subcompact subcutis @@ -3007,7 +2662,6 @@ subplanar subplane subplots subsuming -subterraenean subtypes sudo suffixed @@ -3018,7 +2672,6 @@ sundew sundress sunesthesia sungel -sunstasin superalloy superchilled supercritical @@ -3041,10 +2694,8 @@ swages swappable swashbucklers sweetish -swipin switchgear swordmanship -syde sylph sylvatica sylvite @@ -3064,17 +2715,13 @@ talwar talwars tamable tambaqui -tamina tamped tanbark tangram tangrams tankbot tannin -tarket tartarate -tassed -tassin tastemakers tawa taxa @@ -3084,15 +2731,11 @@ tazer tazers tearjerker tech -techn technologist technomancer technomancy -techo tefillin tegmental -tegwazhi -teil telepad telepads temaki @@ -3111,11 +2754,9 @@ tetrahedron thaumaturge thaumaturgical thawb -themm therizinosaurus thermochemistry thermoplastics -thermoreceptors theropod thescelosaurus thicknesses @@ -3123,7 +2764,6 @@ thonged thonk thorned thornothurian -thosun threateningly threshed throated @@ -3135,7 +2775,6 @@ thumbholes thumbless thunderball thyreophoran -tifeligalehi tileset tillable tillage @@ -3150,7 +2789,6 @@ titanochelon toecaps toggled toggling -tollitur toluene tonfa toolbar @@ -3159,7 +2797,6 @@ toolmaking toolmod toolset toolshelf -topickup toroids torosaurus torvosaurus @@ -3174,16 +2811,13 @@ transhumans translocates translocation translocator -transp transpositions transuranic trapezium trapezoidal -travelogue travelpack traversal travois -treatin treefrog treefrogs treelines @@ -3208,10 +2842,8 @@ trilobite trioxide tripartite tripcore -trippin troglobite troodon -troublin truckstop trudges tryphillum @@ -3227,19 +2859,12 @@ tuno turipache turreted tusked -tusslin -twere twintailed twohand txt typologies tyrannosaurid tyrannosauroid -tz -uality -uan -uggo -uistate ultracapacitor ultralight ultras @@ -3260,7 +2885,6 @@ underbarrel underbody undercoat undercovering -underfongen undergrown underhill underlayer @@ -3268,7 +2892,6 @@ underlayers undersides underslung understandingly -underwelming undescribed undine undried @@ -3313,7 +2936,6 @@ unornamented unpadded unpopped unpowered -unpressurised unreinforced unrifled unrotten @@ -3324,7 +2946,6 @@ unselect unselectable unset unsettlingly -unsiatable unskillfully unsorted unspecialized @@ -3346,12 +2967,9 @@ upcycled upheaved uplifts upsized -upstest ureter ursine usages -usin -usselves utahraptor utilibot uttarasanga @@ -3366,9 +2984,7 @@ varanid vars vatgrown vaulters -ve veggy -vegital veined venandi ventrolateral @@ -3412,14 +3028,9 @@ vulgarities vz w wabbits -wacka wakizashi -wakizashis walleri walleye -wammles -wanderin -wantin warframe wargame warhammer @@ -3442,28 +3053,19 @@ weaponsmiths wearers weatherworn weiler -wek -welcher -weren wetsuits wetworks whap whaps -whatlike wheatberries whiled whiplike whirr -whirrr -whirrrr -whirrrrrclick whiskflower whitelist whitelisted whitelists -whoda whorling -whud whuff whump whunk @@ -3475,7 +3077,6 @@ widgets wieldable wielders wieldier -willin willowbark wimple wimples @@ -3485,7 +3086,6 @@ winglike wireframe wirey wirings -wist witchdoctor witchdoctors wizardy @@ -3497,7 +3097,6 @@ woodcut woodcutting woodlouse woodsmanship -woom woosh workarounds workbenches @@ -3505,19 +3104,15 @@ workcycle workshifts worldgen wraitheon -wrasslin wretchmother wrightii wristed -www -wycked wyld wyrd wyrm wyrmling wyrms x -xamine xedra xenobiology xiph @@ -3527,14 +3122,10 @@ yandere yari yark yarker -yarkin yateveo yd -yelemi yellowjacket yelman -yme -ynn yoroi yourselves youthful @@ -3549,14 +3140,11 @@ zandcrawler zapback zaptor zbrojovka -zchzzzzch zeds zeindeer zenshin zentai -zeriatric zincite -zischt zoad zoads zolpidem @@ -3579,7 +3167,6 @@ zorc zorcs zowlbear zowlbears -zpzzzzpzz zubon zucchinis zuniceratops @@ -3587,5 +3174,3 @@ zuul zweitimber zygomaticus zzz -zzzzchzzzzchurzzz -zzzzchzzzzchurzzzpileus From c7f07d81eae2d07485433a3f403ad5360160cd39 Mon Sep 17 00:00:00 2001 From: Qrox Date: Sun, 25 Feb 2024 14:17:59 +0800 Subject: [PATCH 26/48] Add new words to dictionary --- tools/spell_checker/dictionary.txt | 5113 ++++++++++++++++++++++++++++ 1 file changed, 5113 insertions(+) diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 5b6b1b7769bb5..d399bb84e0392 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -1,5 +1,25 @@ +aa +aaa +aac +aar +ab +abanaderly +abbie +abby +abc +abdu'l +abdul +abelard +abenaki aberrance +aberystwyth +abington aboveground +abra +abraham +abrahamic +abrams +acadia acausal acceleratron acceleratrons @@ -9,26 +29,63 @@ acclimatization accommodations accuracies accurized +acela +acer +acetylsalicylic achelousaurus acidball +acidproof +acm +acog +acp +acr acrocanthosaurus acrostic acrylamide actinic activatable +acto +acton actuated +acucar +acushnet +adam +adams adaptors +adderall +addison +adele +adhyâya adiabatic +adios +adirondacks +admin +adorkable +adrian +adventism +adventist adze +ae +aegises +aeglidae +aelita aerarium aerially +aeroctinae aeroctinus aerofoil +aerosolized +aesculus +aetherial aetheric aetherically +aetherspeaker +aetherspeakers affixes affordability affordably +afrinagân +afro afterbirth aftereffect aftereffects @@ -44,253 +101,688 @@ afterthought afterward afterwards agape +agawam agelessness agender +aggadic aggregates +agila +agni +agnus +agra +ahh ahimsa +ahistorical +ahold +aiden +aimee airgun airhorn airjack +airjacks airsoft airworthy +aitareya +ak aketon aketons +akhnai +akká +akm +akron +al alamosaurus +alan +alaskan alate alates +albanian +albert +alberta albertonykus albertosaurus +albuterol alchemic alchemically alchemies +alcott aldosterone +aldous +aleesha alembic +alex +alexander +alexandra +alexandria alexandrite alexandrites +alfheim +alford +alfred +algerian +alhazred +alice alkahest alkalis alkyl alleghaniensis +allen +allfather +allogenes allosaurid allosaurus +allosauruses allosaurusid allotrope alloying +almeida alnico +alnus +alonso alquerque +alt alternators alumentum aluminized +alžbeta +amad +amalekites +amanda +amar amargasaurus +amatriciana +ambedkar +ambien ambusher +american +americana +americans +americas +amesbury +amf +amherst +amidah amigara +amish +amitâyur +ammunitions +amor amortization amphibole amt +amur +amy ananassa +anatolia anchisaurus +ancien +andean +ander +andes +andorran +andover +andre +andrea +andrew androgynes androgyny +andy anechoic +anemoi +anfo +angas +angela angelfish +angelina +angkor anglerfish +anglic +anglican +anglicanism +anglicans anglicized +anglo +angolan anhydride +animalistic animalskin animata +animecon animes animist animists +anita anklebiter +anklebiters ankylosaurid ankylosaurus +ann +annaliese +anne annelids +annie anole +anolis anomurans +anson +antarctica antarvasa +antarvasas +anthony +anthophila +anthro anthropomorphized anthropomorphizing antiasthmatic anticonvulsant +antiguan antihemorrhagic antimateriel +antioch antiparasitic +antiparasitics antipodes antisemitism antiseptics +antivenom antlered antlion +anton +antwerp +anugitâ +anush anzu +anáhuac +ao +aoe +ap apace +apastamba apatosaurus +apc apeirohedra +apfsds +aphantasic api apiarist +apis +apocryphon aposematic +apostolorum +app +appalachian appalachiosaurus +appetit applet appreciably +apps +april aprotic +aqdas aquacultural aquaculture aquamarines +aquidneck aquilops +aquinnah +ar +arabella +arabian +arabic +arachis arachnophobia +aralia +aramaic aramid arapaima +arapaimas +arapaimidae +arbalist arborescent +archdruid +archeotech +archie +archmage +archmages +archons +archwizard +arcology +arduino +aretha +arg +argentinian +argh args +arianna +arisaka +aristotle +arizona +arjuna +arkady +arlington +armageddon armeniaca +armenian armet armguard armguards armhole armholes +armitage armorers +armormaking +armorsmithing armrests aromantic arowana +arowanas arrester +arrhythmically +arrowflight +arsenicum +artemis arthouse arthropod arthropodology +arthur artificer artisanals +arturo +arukh arvore +arx +aryas +asatro +asatru +ascii +asclepius asexuality +asgard +ashburnham +ashby +ashfield +ashford +ashland +ashmedai +ashton +ashvaghosha +asia +asian +asimov aspirants +asrg +asrgs +assclown assembler assemblers +assface +asshat assimilates assimilator +assistive +asswagon +asswipe astrobiology astrolaspis +astrolaspises asymmetrically +atchisson +atf +atgm +athach athame athames +atharvaveda +athol +atlanta +atlantic atlatl atlatls +atm atmmonoid +atmmonoids atomically atompot +atompots +atra +atrahasis atrophic attachable +attaches +attleboro +attleborough attune attunement attunements attuning atwixt +atwood +au +aubrey +audhumla +audrey +aug augmentations +augusta +augusti +augustmoon +augustus auk auroral +auschwitz +austen +australasia +australian +austrian +autoattack autoclave autoclaving +autodoc +autodocs +autogas autohaul autoinjector +autoinjectors autoloading autologous automagnum +automagnums automates +automotives autonomously +autosave autosaves autoselect autoshotgun +autoshotguns +aux +ava avellana +avellanita aventail aventails +avery +avesta +avg avgas avians avium +avodah +avoidant +avon +aw +aww +axedwarf axedwarves axeman +axemen +axmc axolotl +ayer +ayran +ayuh +azerbaijanian azide +aztec +aztecs +aztlan +aztlani +aśvaghosa b +b'av +baal +babadook +babar +babyface +babylon +babylonian babylonica +bacigalupi backblast +backfist +backflip backrest +backroads +backrub backstep backstepping backsteps backswing backswings +backtab +backtrace backtracing +badass bagh +baghdad +bagȣnizabȣnak +bahamanain +bahman +bahrainian +bahá +bahá'u'lláh +bahá'í +baikonur bakelite +baklavas +balakrishnan baldric balefires +balfour balisong +balisongs ballistae +ballistocerae ballistoceras +balrog +bandersnatch +bandersnatches bandolier bandoliers +bangladeshi +bangor +banksley +bannerman +bannermen +baphomet +baptiste +barbadian +barbara +barbaran barbute +barcelona +barchester +barcode +barcodes bardiche barding +bardings barebones barghest +barghests +barklike +barkskin +barkskinned barleycorn +barlow +barnhoff +barnstable barony +baronyx barosaurus barotraumatic +barrett +barrington +barry +barstool +bart +baryonix basecamp basecamps baselard +baselards baselines +baseplate +basidiocarp basiliscus +basiliscuses +basketweaving +basotho +basra bassline basswood +bastiat +batcave batching batlike batrachian batt +battaglia +battlehammer +batts +baudhâyana +baudrillard +bava +baxter +bb +bbq +bbs +bce +bdsm +bdu beaked +bearcub bearish +bearmantle +bearmantles beartrap +beastmaster +beatrice +beckett +becky +bedford +bedsheet beefsim +beethoven +beit +beitzah +bejesus beladen +belarusian belcher +belchers +belchertown +belgian +belgic +belizean +bella +bellend +bellevue +bellingham +belmont bemoans benchlike benchtop bendier +benelli +bengal +beninian +benji +bennett +bentley +benzete benzo benzoate +benzodiazepine +benzos +benzoylmethylecgonine +beowulf +berakhot +beretta +berettas bergamot +bergmann +bergson +bering +berkeley +berkley +bermuda +bernardston +berserkergang +berserking +besse +bessemer +bester betavoltaic betavoltaics +betsey +bette +betty +betula +beverly bevor +bfg +bfr +bfrs +bgm +bhagavad +bhagavadgitâ +bhagavatam +bhaktivinoda +bhatti +bhikkhu +bhikkhuni +bhutanese +bianchi bicephalous bicolor biddable +bienkowski bifocal biggun bigpack +bikkurim bileworm +billerica bimetal +bindles binocs +bio bioactive bioblaster +bioblasters biocompatibility +biodiesel bioelectricity bioforms biofuel biofuels biographic biohacker +biohazard +biohazardous +biohazards +biojutsu biokinesis biokinetic +biolab biollante +biollantes bioluminescent biomachine +biomachines biomancer biomancers biomancy +biomantic biomaterials biomatter biome +biomechanic +biomechanism biomes biomonitor +biomonitors bioparts bioprinted bioresponsive @@ -298,192 +790,504 @@ biosignature biosilicification biosilicified biospheres +bioterrorism biotracer +bioweapon +bioweapons bipod bipods birchbark +birchbarks birdhouses birdlike birdshot +bismol bitts bituminous bivalve +blackhawk blacklists blackpowder blackpowders blacksmithing +blacksmithy +blackstone +blackwood +bladesmithing +blam +blandford +blech +bleedingly +blk blocky +blodplättar +blodplättars bloodbank bloodborne bloodhunting +bloodlust bloodstreams +bloodthirst +bloomeries bloomery bloop +blowback +blr +blt +blts blued +bluefin bluegill +bluetooth +blumenthal +blust blutwurst +blutwursts +bmg +bo +boann boardable +boba bobburger +bobburgers bodkin +bodybag +bodycam bodyglove +bodygloves +bodygraph +bodygraphs +bodyguarding bodymesh +bodymeshes bodypart bodyweight +boeing +boer +bogart +boing bokken bolas +bolases bolded +bolivian bollards bolls +bolognese +bolton +bom +bon +bondi boneclub +boneclubs bonelike boneplate +bonespear +bonespears bookplate bookstrap +bookstraps +boomered +boomstick boonie +boop bootable +bootcut bootup boozeberry +borbonicus borderless +borealis boreas +borichenko +borichenkos +boris +bosch +bosnian +boston +bot +botswanian +botticelli +boudin +bourgogne +bourguignon bovid bowfin +bowhunter +boxborough boxcutter +boxford boxlike +boylston bpm bracer bracers brachiosaurus +brackenwight +brackenwights +bradbury +bradley +brady +brahman +brahmana +brainburner +brainburners brainer +brainiac +braintree +bram brandishes +brandon +brazilian brazing breacher breachhead breadboard +breadmaking +breadseed breakrooms +breathability breatharians +breathwork +breece +breedlove +bren +brenda +brett brewable +brewster +brhadaranyaka +bridgewater brigandine brigandines +brigit +brigitte +brihaspati +brimfield brimless +brin brined +bristol +britain +british +bro broadhead broadswords +broadway +brockton +brodie +brody +brogyaga +brogyeki bronchodilator bronchospasm +brookfield +brookline +brooklyn +broomhandle +bruce +bruneian +bruno +brushland +bruv +bryan +bryant +brâhmana +brügger +bt +bubbe bubblicious +buber bubo buboes buckhorn +buckland +buddha +buddhism +buddhist +buddhists budgerigar +budgetball bufo +bufos +bugfixes bugout buildups builtin +bukharin bulette +bulettes +bulgakov +bulgarian bulkiness +bullard bullhead bullheads bullpup +bullseye +buluotuo +bulwer bumbles +bundahis +bunkbed +bunkering +bunyan burbles burbot burbots burdocks burette +burges +buri +burlington burnback +burnett +burpees +burroughs +burundian butadiene +buttercream butternut butternuts +butthead +buttplate buttstock +buttstocks buttstroke buzzcut +bx bzzt +bzzz +bátoriová +bó +bō +bōjutsu c +c'mon +cabanillas +cadabra caecilian +caesar caesariense +cafe +cafes cafeterias caffex +caixo +cal calcifying +caldwell +cali +california californium +callie +callista callosum callsigns +calpay +calpulli +calrisean caltrop caltrops +calvin +calvinist camarasaurus +cambodian +cambridge +cambyses camelops +cameraperson camo camphine camptosaurus camspies camspy +camus +canaanites canadensis +canadian +canberra +candomble +candyman canid canids canina +canis +cannabinoids cannelured +cannith +canterbury +cao +caodaism caparison +capiche +capoeira capsicum carabiner carabiners carapace carapaces +caravaggio +caravaneer +caravaner +carb +carbonara +carbs +cardboards +cardio caret +carfentanil +caribbean +carica +carlhaven +carlisle +carlos +carlsberg +carlsen +carlson +carmex +carmichael +carne +carnegie +carnotaurus +carpathian carroballista carroballistae +carthage cartilaginous +cartoonishly +carvalho +carya casehead caseless +casey +cass +cassandra +cassidy +cassiopeia cassiterite castable +castanea +casterbridge casuals +casull catalyzes cataphract +catarina +catherwood +catholics cattail cattails +caucasian causer caustically cavewoman cavewomen cavitation +cb cbm +cbms +cbrn cc +ccp +cctv +ccw +cd cdc cdda +cdl +ce +cecaelia +cecaelian +celsius +celtic centric centrigrade centrigrades centrosaurus centrum +ceo +ceos cepa cephalopod cephalothorax ceratopsian ceratosaurus +cerberus cere cerium cervine +cessna +cesti cestus +cetera +cetme +ceylon +cf +cgi chachalaca +chachalacas +chagigah +chai +chainlink chainmail +chakras +chamaeleonidae chambering chamberings +chameleoflage +chan +channing chaotically +chapfax chaplet +chaplin +charlemont +charles +charlestown +charlton +chasidic chasmosaurus +chatham +chatterly chaturanga +chaucer chausses cheapshot checkerboard +checkmark checkmarks +checkov +cheerleading +cheesemaking chelator +chelmsford +chelsea +chemtrails +chen +cherokee +cheshire chested +chester chestpiece chestplate chestplates chestwrap +chestwraps +chevrolet +chewbacca +chiappa +chicago chicharrones chickenbot +chickenbots chickenwire +chicopee +chien +chilean +chilmark +chinese +ching chirality chiropteran chirurgic @@ -491,58 +1295,121 @@ chitin chitinous chitinworking chk +chloe chlorination +cho +chode +chokepoints +chol cholla chonker +chonkers chonkiness chown +chris +christ +christianism +christianity +christmas +christopher chromatographer chromed chromoelectric +chu +chuang +chucklefuck +chucky +chui +chulainn +chun +chupacabra +churchill +cia cichlid cichlids +cinchable +cioran circlet circuiting +circuitries +circumnavigator citrine citrines +citrusy civilizational +claire clairsentience clairsentient clambers clanged clanker clanky +clara clarifier +clark +clarke +clarksburg +claus +clayton cleansuit +cleansuits clearcrete +clearcutter +clearwater +clemens +cleo +cleopatra clickity +cliffside +climacus climbable +clinton clockspring clockworks clodhopper cloutie +cloverfield +clowness +clrs clutchmates +clymer cm +cmes +cmmg cnidarian +co coagulating coalescence coalesces coati coatings coatis +cobray cods +cody coeculus coelophysis coffeetable coffeetree +cohasset coifs coilgun +coilguns +coincidently coipo +coipos +col +colada colorant +colrain +columbia +columbian combatives comestible comestibles +comm commendably +comms communis compacting comparably @@ -551,6 +1418,8 @@ compensators complexly composted compsognathus +conan +conanicut concavities concealability concealable @@ -559,19 +1428,36 @@ concentrically concerningly condensor conductively +config +confit +confucian +confucianism +confucius +connecticut +connelly +connie +connolly +connor +conrad consecrator consistence const constabulario +constantine consumables contexts contorts contrails contraindicated +contrapoints controllability +conway coolants cooldown +cooley +copacabana coprocessors +coptic copyplate copyplates copywritten @@ -579,55 +1465,131 @@ cordage corded cordlike cored +corinthian corkboard +cornac +cornelius corolla +coronavirus +corp corporeality corvid +corvids +cory +corylus corythosaurus +corytophanes +cosmo +cosmodrome +cosplay cosplayers +could've +coulson counterchanged countermine countertime +countertop couters coverplate +covid +coza +cpa +cpu +cqb +cqbr +cqc crabapple +crabapples crablike +cracidae cracklins craftable crafter +crafters +craftsdwarfship craftsfolk craftswoman craftwork +craig +cranston crappie +crataegus +crc creasing +creeped creeply +creighton creped +crewmember criniere cripplingly crispier +crispr +criss +cristo +cristy +crit +croatan +croatian +croc +crocker +crocs crossbeams crossbuck crossfit crossguard crosshair +crosshairs crosstie croupiere +crowdfunded crowdfunding +crt +crtg +crtgs +crunchings +crusoe +cryo +cryoadaptation +cryokinesis +cryokinetic cryomask +cryomasks cryopod cryopreservation cryosleep +cryptid +cryptids +crypto crystaltender +crêpes +csa +ct cthonic +cthulhu +ctrl +cuban +cucina +cuck cudgels cuirasses +cul cultivator culturing +cumberton +cummer +cummington +cuppatech curarines curassow +curitiba currywurst +currywursts +curveballs cushiony +cuspated cusses +customizability customizable customization cutlasses @@ -636,113 +1598,254 @@ cutthroaters cuvette cuvettes cuy +cuz +cvd +cxiv +cyber cybercop cyberdog +cyberiad +cyberjunkie cybernetically +cyberninja +cyberolympics cyberstalking cyberterror cycad cyclohexane cyclopean +cylindropuntia cyphers +cyprian cyprinids +cypriot +cyrillic +cyrus +cz +czechoslovak +czechoslovakia +cú +cúailnge d +da +dabrowski +dacian +daewoo dagnabbit +dahila +dai +daime +daizoom +dakota +dallas +dalton dambreaker +dambreakers +damien +dan +dana danceable +dango +dania +daniel +danielle +danny +danvers +danya dao +dar +dara +darcy +darius +darla +darpa +darren +darryl +dartmouth +darwin +dashcam daspletosaurus datasheet datasheets datavault datura daubing +dave +davening +david +davids +davidson +davies +davis daypack +daypacks +daytona +dayum dazes +dda +ddt deadland deadlands deadzone +dealmaking deathcam deathmobile deathrattle debatably +debian +debone +debord debuff debuffs debugged +debutante decap +decatur decelerates +december +decker +decss +dedham dedicational +deerfield defatted deforming +deg dehydrator dehydrators +dei deinonychus +deja +dekker +delany deliquescent deliriant demagnetized +demai +dementias +demeter +demi demihuman demining +demir demisexuality +denarii denarius denatonium +denis +dennis dentata +denver +deon +dep deployable deployer depressant depressants +deprotonated +der +derandomization deregulations derivations dermatik +dermatiks +dernier +derrida derring +descartes descript deselect desiccate designator desilo +desmodontinae +dessicant destabilizes +destreza destructed destructing +det +detune +deuteronomy +dev devilling +devon devourer devs dewlap +dex dextrous +dhamma +dhammapada dharmachakra +dharmasastra +dhyâna +di +diamant +diane +dianne diaspora +dickinson +didascalia +diego +diemaco dieselpunk diffract diffracting diggable +dighton +digimart digitizes +diliman +dillan dilophosaurus dimensionalism +dimensionalist dimensionally dimestore +dimethyl diminute dimorphism dimorphodon +dinai +dinik +dino +dinolab +dinomod +dinos +dinozoo dioceses diodes dioicus dionaea +dionaeas +dionne diphenyl diplodocus +dipshit +disanimate disapprovingly disassembles disassembly disburse +discernable discoes discolorations disconcertingly discontinuity +discordia +discordianism disdainer dishware +diskobolus dislodges dispersor +dispersors dissector dissoluted dist distaff +distaves distillate distillations distractingly @@ -751,23 +1854,64 @@ disulphide divemask divemasks diverges +divi +dixon +diy +diyua dizzied +dj +djiboutian +dmitry +dmr +dmrs +dmso +dna +dobbs +dodecagram dodecahedron +dodgeball doffing dogbane doggo doglike +dogpark +dogpile +dojo +dokie +dolichovespula dollkin +dolm domestica +don'tcha +donatello +donburi dongle doomseer doorstopper +doot dooting doots +doppelganger +doppler +doreen +dort +dosia +douay +doubletech +douchebag +douglas +doukhobor +dover downspout +doyle doz +dr drabs +draco draconic +dracula +dracut +draggers dragonail dragonails dragonbreath @@ -775,19 +1919,37 @@ dragonfire dragonhide dragonlike dragonscale +dragunov +draisine +drapings +drasa +draught +draughts draugr +draugrs drawknife dreamdross dreamdrossed dreamforged dreamsmith +dreamsmithing +dreamsmiths dreamstuff +dreamt +dreamwalker +dresden dress dresses +dreyfus driers drivetrain +drm +droid +droids dromaeosaurid dromaeosaurus +dromeosaur +dropoff droppers drotik drowse @@ -797,14 +1959,35 @@ drylands dryosaurus dryptosaurus drywalled +ds +dsa dubiously +dubliner ductile +dudley +duhring dulcis +dumas +dumbass +dumbasses +dumbheads +dumbshit dumpsite +duncan dunderfuck +dunn +dunstable duplicator duplicators +dustbowl dustbunny +dustings +duxbury +dvd +dvm +dvorak +dvsa +dwarven dynamically dynamos dyoplosaurus @@ -813,171 +1996,406 @@ dysmorphia dysphoria dysrhythmia dystopia +dze +dzvonko +dâdistân +döner +dō +eaa +earbuds eared earmuff earsplitting earthbag earthbags +earthbones earthkin earthlike +earthmother earthshaper +earthshapers +earthshaping earthside +easter +eastham +easthampton +easton +ebby +eberhard +ebola ebon ebook eboshi +ebr +ecash echinoderm echos +eckankar +eco +ecoterrorist +ecuadorian +ed +edamame +edda +eddie +eden +edgartown edibility +edison editable +edmonton edmontonia edmontosaurus +edmund edu edutainment +edward +eggsac +egremont +egyptian +egyptians eidolon +eiffel einiosaurus +eisenhower +eko +elasmosaurus +elbereth elderberries +eldridge electrochemistry +electrocutioner electrohack +electrohacks electrokinesis electrokinetic electrolaser +electrolasers electrolyzer +electrolyzers +electromagnetics electromancy electrophoresis electroreceptors +elephantry +elish +elizabeth +elle +ellen +ellie +ellington +elmer +elmo elongates elopements +elsa elsewheres +elton elven +elvenkind elves +elvira +ely elytra +emanuel +embla embrasure +emerson +emf +emil +emirati +emma +emmanuel +emos +emp +empath emplate +emt +emts emulates +enactors encumbering encumbers +ender endochitin endolymph endoskeleton endpoint +endymion enervated enervating +enfield +enflamed enfranchisement +engd +england +eniac enjoyability +enki +enoch +enosh +enspelled +entree +entrees entropic +enuma envenom envenomations envenomed +envirocom +eoc eocs +eod eolocanth +eolocanths eoraptor +eoraptors +epa +ephesus epicuticle +epicuticles epistemology eppies equestrian equestrians +equus +ereshkigal ergometer +ergometers ergonomics +eric +erica +erickson +erikson +erin +erith +eritrean +ernst erotomania eructing +eructor +eructors +eruvin +erving +erymanthian erythrocytes +esapi +esbi +esbit +esc +esca escalier +esfandiary +eskrima espatier espatiers +esper +espers esque +esr +essex esters +esther estoc estocs +estonian +etc etches +ethan +ethel ethereally +ethiopian +ettercap +ettercaps +ettin +ettins +eu +eugh +eugnostos +eula euoplocephalus +eurasia +eurasian +europe +european +europeans eusocial +eva +evac evacs evacuee evangelized +evelyn everburning +everest +everests +everett everfrost +everglow +evian eviscerations +ew +eww exactingly +excalibur exchangeable exchanger excreta excretions +exfiltrate exhorts existentialists +exo exobay exodii exoplanet exoplanetary exosuit exosuits +exp expansionary expansions explosivity +exposé expounds +exsanguinated +exsanguination extenders extensible +exterminatron +exterminatrons extractors extradimensional +extraplanar extruder +extruders extrudes extruding +eyebags eyebot eyebots eyecatching +eyeholes eyelevel eyepatch +eyepatches eyespots eyestalks +eyewear f fabricators +fabritechnics +facebook facemask facemasks faceplates faceted +facto faders +fae faewild +fafnir +fagus +fahrenheit +failsafe +failsafes +fairbairn +fairhaven +fal +fala falcata falleng fallfish +falmouth falx falxes +famas +familia familiaris +famuli fanbase +fanfictions +fanorona +faq +faraday +faravahar +farland +farmwork +farrakhan farrier farsightedness +farstep fascial +fasciitis fasteners fastnesses +fateh +fatima +fatuus faultline fauxben +fauxfeathers favorited +fawkes +fbi +fda +fearmongering feaver +feavers +feb +february fecundity feedstock feelgood feints +felton +fema femboy +fenceman +feng +fentanyl +ferals +fereidoun +fergus fermionic +ferraiolo +ferraiolos ferrocyanide ferrofluid ferromagnetic fetlock fetlocks +feyn +feynman +fi +fiancee fibercloth fiberoptic fiddleheads +fijian filenames fileset +filesets +filipino +filk filmstrip fimbriated fimbriation +findlay +fingerhack +fingerpick finial +finn finned +finnish +fiona +fior +firebolt fireboots firebrick firebricks firecannon +firedragon firegloves firehood firehoods @@ -985,58 +2403,111 @@ firelighter firemask firemasks firepit +firesnake firestarter +firestarters firestarting +firestation firesuit firesuits fireweed +fisherwoman fishfolk fishily fishlike +fisk +fitchburg +fitzgerald flagration flairs flamberge +flamberges +flamebreath +flameshield flamesword flametouched flammenschwert +flammenschwerter flanged flaregun +flareguns flarewhip +flarewhips +flashbang +flashbangs +flashtube +flatbread +flatcoin +flatcoins flatjaw +flatlander +flatlanders +flavio flavorings flays flechette flechettes +flensing fleshier +fleshmender +fleshmonger +fleshwarp +fleshwarper +fleshwarpers fletched fletching flexibility flightworthy flim flintknapping +flockshot +floorplan floppies +florida +florunner flours floury flowchart flowcharts fluffies +fluidic fluidly flummox flummoxing flump +fluorescents fluoxetine flusteration flyable +fm +fmj +fn foamcrete +foie +foily foldable folktales followup +folsom +fonzie foodborne foodburger foodcart +foodios +foodkid +foodlair +foodless +foodpeople +foodperson +foodpersons +foodplace +foon +foons footgear footrest forager +forcefield +forcette foregrip foregrips forehoof @@ -1046,29 +2517,76 @@ forelegs forestalling forestock forgemaster +forgemasters forklifts +formosa +forn fortifiable +foucault foundress +fourtieth +fowler +foxborough foxfire fp fps +fracking +fragaria framebuffer frameworks +framingham +frances +franchi +francisco +franco frankenfurter +frankenfurters +frankenstein +frankensteinian +frankensteins +frankie +franz +fred +frederic +frederick freebore freeform freerunner freerunning +freetown +freezerburn freezerburned +freitas +freud +freya +friday +friederich +friendface +frigg +frigger +frisbee +frisbees +frisia +frolov +frolova frontiersmen frostburn frostburnt +frostnip frostnipped frostrimed froths frybread +fsp ft +ftl +ftx +fu +fuckwad fuckwits +fudd +fudgy +fudoki fulleroclathrate fullscreen fumarole @@ -1077,38 +2595,88 @@ functionless fungaloid fungaloids fungicidal +fungideer +fungivoral funnelcap +furnitures fursuit fusillies fusilly fuze fwoosh g +ga +gabonese gadol +gaelic +gah +gaia +gainesville gaits galea +galeae galena +galfrizowich +gallagher gallimimus gallore +galouye gambeson gambesons +gambian +gameover +gameplay +gangbangers gangling +gao gapes +garand +garde gardenling +gardenlings +garder +gardner +gargantua garghoul +garghouls gargoyleosaurus garishly garlander +garlanders garou +garous +garrity +garry gars +gary gasbomb gasgun +gaskell gasmask +gasmasks +gast gastank gastonia +gastro gastrolith +gastroliths gastropod gastropods +gatling +gatsby +gau +gaudiya +gautama +gauzes +gavin +ge +gearwork +gehinnom +geiger +gekkota +gelato +gemini +gen genderfluid genderless genderqueer @@ -1117,218 +2685,660 @@ genemod genemoded generalist generically +genghis +geoffrey geokinesis geometries +george +georgetown +georgian +geospatial +gerald +germaine +germans +gestae gesticulates +geta getups +gevuina +ghanaian ghast +ghasts ghillie +ghostface +ghoulodon +ghoulodons +ghâzkhud +ghâzkhudians +gi gibbous +gibson +gideon +gideons +gif +giftshop giganotosaurus +gigi +gila +ginza +gita github +gittin +gitxsan +giza +gladii gladius glaive glaives +glamopolitan +glareproof glassblower glassblowing glassteel glassworking glazes +glisteningly glitched glitchiness +glitching gliters +glm +glms +glock +glocks +gloopy +glooscap gloppy +gloria +gloucester glowstick +glowsticks +glowy +glug glumly glyceride glyptodont +glyptotherii glyptotherium +gmo +gobhila +goddamnit +godesses +godfrey +godot +godwin +goethe +goldberg +goldstein +golemancer +golemancy +golfball +goliath +goliaths +gonzales goops +goopy +gordee +gordon gores gorget gorgosaurus +goshen +gosnold +goto +gottingen +gough gouts +gov gozu +gozus +gpmg +gr +graboid +graboids +gracie gracken +grackens gradation +grafton +grainville +granatum +granby +grandkids granivorous +granth +granville +grapeade grapevines +graphene +gras graspers +grav gravelbag gravelbags +gravesite +gravyfield grayed +grayfield grazer greaseproof greatbow +greatbows greatclub greatclubs greatcoat greatsword +greatswords grebe +grecko +greco +greek +greeks +greene +greenland greenways +greer +greg +gregory +grenadian +greta gridded +grihya +grimm +grimoire +grimoires grindle grinny grodd +grodds +grokking grommets +groton groundcover groundhogs groundnut groundsheet +groveland +grylls gryposaurus +gu +guanabara guapote +guapotes +guatemalan +guayacan gubbins +guglielmo +guilts +guin +guinean +guinness guls +gumps gunblade +gunblades +guneet gunfighting +gungnir +gungnirs +gunmaking gunmod gunmods gunshop +gunsight gunsmithing gunsmoke +guodian gurkha +gus gushingly +gustaf +gustav +gustavo gutskin guvnah +guyanese +gy +gyges gymnocladus +gâhs +gümanik h +haba +haber +hackpro hacksaws +hacktivist +hadith +hadley +hadoken hadrosaur hadrosaurus haematopoiesis haft +hafted +haggadah +haha +hai +haitian hakama +halakhic halazone halberd halberds +haldeman +halfling halfpike +halfpikes +halicarnassus +halifax halite halligan +halloway +halloween hallula haltingly +haman +hamilton +hammadi +hammerfist +hammerhand +hammerspace +hamoed +hampden +hampshire +hancock handcraft +handedly +handers handguard +handguards +handgunner handiness +handjack +handloader handloading +handwavium +hanh hanmi +hannibal +hanover +hanson +hanukkah haori haplocanthosaurus haptic +haram +haramaki +hardass +hardboiled hardbound hardcover hardcovers hardhat hardpoint +hardpoints +hardwearing +hardwick +harley harmonically +harold +harran harries +harvard harvestable +harvey +harwich +hashanah +hashashiyyin +hashashiyyins +hasis +hastur +hatchetman +hatchlings +hatfield hauberk hauberks +haverhill +hawaii +hawaiian +hawkeye +hawkingcorps +hawley +hawthorne +hayneth +hazelton +hazmat +hb +hcfn +hcn hdd +hdpe headbutts +headgears +headscarfs +headshot +headshots +headstamp headwear headwrap healthiness +heartfires heartiness heartlike heartrate +heartseed +heartseeds +heathrow heatsink heatsinks +hebrew +hebrides +hedp heelys +hegel +heh +heian +heidelberg +heinlein +heinrich +heisenberg +heisenstein +hel +helen +helena helipad helipads +hellenism +hellenist +helliand hellmouth +hellraiser +hellscape +hellspawn helpdesk +helsing +hema hematite hemolymph hemostatic hemostatics +hendelson henge +herbert herbivorous +herbology +hermanos +hermes +hermeticum +herrera +herstal +heschel +hesiod hesperosaurus heterochromia +heteronormative +hev hevel +hevels hexagons hexamine hexapod hexogen +heya hg +hgc +hiccupped +hidebehind +hidebehinds hider +hideworking +hidey +hiep +higgins +highschool +himalayan +hindu +hinduism +hingham +hinkle +hinsdale hippocastanum +hiranyakesin +hispanic +historia +hitbutton +hitman hitpoints +hitwoman +hiv hivemind +hk +hmg +hmgs hmm +hmmm +hmtd hnefatafl +hobbes +hoc +hockomock +hodag +hodags +hoffman +hofstadter +hogtoad +hogtoads +holbrook +holland +holliday +hollis +holliston hollowpoint +hollowpoints +hollywood +holman +holmes +holmesian +holmwood +holo +holocrons +holosuite +holstein holstered holstering +holtzman holybook +holyoke homebase +homebound homebrew +homebrewed +homebrewer homebrewing homemaking +homeplate +homeworld homewrecker +homewreckers +homme homovorus homullus homunculi homunculus +honda +honduran honeygold honker +honorato +honshu +hoodie +hoodies hooved +hopedale +hopkins +hopkinton +horace +horayot horchata +hornblower +horrorpelta +horrorpeltas hosomaki +hoss hotcut +hotcuts hotkey hotkeys hotplates +hotties +hotwire hotwiring housecat +houston +hoverboarding +how'd +how're +how've +hoyle hp +hpbt +hps hr +hridaya hrm +hrs +hrungnir +hs +hsiâ +hsiâo https +huang +huarochirí +hubbardston +hud +hudson hued +huey +hugentskis +huggability +huggable +hugo +huitzilopochtli +huizache hulled humaniform humaniforms +humanlike +humvee +humvees +hungarian hunkers hunllef +huntington +huntz +hutchinson +huxley +hv +hvac +hwp +hwps +hyades +hyde hydria +hydrias hydrocracking hydrogel +hygieia hygrometer hygroscope hygroscopes hygroscopic hygroscopy +hylian hyolith hypacrosaurus hyperaggressive +hyperalgesia hyperboloid hyperboloids +hypercloud +hyperdense hyperdimensional +hyperefficiency +hyperenhanced hyperfocus hypergeometric +hyperion hypermedia hypervelocity hypervitaminosis +hyperweave hypno hypochlorite hypogaea +hypovolemic +hypsiphrone +hz +hávamál +i'd +i'll +i'm +i've +iain +iar +ic +icarus +icbm +icecream +icelandic +ichaival +ichaivals +ichi ichor +ichthyostega ichthys +ick +iconical +ics +idolators +idw +idws +ied +ieds +ieee +ierda ierde +ifak +iff ignitable +ignus +igor +ii +iii +iiia +ikea illegibility illinoinensis illuminance illuminator +ima +imager +imagers +imbuement +imes +immanuel immersions +immersive immobilization impaler impalers inactionable +inanna inbetween +inbox +inc +inca incapacitation inclusiveness incompetencies @@ -1336,22 +3346,35 @@ incongruously incorporeal incredulously indemnifying +indian +indiana indiscernible +indonesian inductance industrially ineffectively inertially infamously +infantrywoman +infectees infeme +infemes infinitree infinitrees +influencer influencers +infolink +infosec +inglis +ingram inhalant inhalative +injectable injest inlays innawood innawoods +innervision inquiringly inscribable insecticidal @@ -1359,17 +3382,28 @@ insectoid inserter insignias insta +instagram +installable instants instated +instillers insufflation insulative +int integrally +intel interchangeably interconnects +interdictor +interdimensional interjected +interjoined interlaid interlayer intermixed +intermodal +internets +interpol interwar intimidatingly intolerances @@ -1377,412 +3411,1361 @@ intone intones intoxications intoxicative +intradimensional +intro +introspectionist +inuit inulin inverts invlets +iotv +ip +ipade +ipadê +ipav +ipswich +iq +ir +iranian +iraqi +iraqis +irigaray +irineu +irish +irishman irising +ironfist ironshod irradiance +irradiants irremovable irritants +isaac +isekai +ish +isha +ishaan +isherwood +isherwoods +iskender +islam +islamic +islay +isohypsa +isohypsas isopod +israeli +israelites +iss issi issuer +italian +italiana +itas itchiness +ithaca +iv +iwi +ix +izchak +izhevsk +izzy j jabberwock jabberwocks +jacare +jackson +jacksonville jackstraws +jacob +jacques +jadir +jain +jaina +jainism +jainist +jaiva +jake +jakobson +jalapeno +jamaican +james +jameson +jamey +jamie +jamison +janeiro +janice +janine +january +japanese +jason jawed jawless +jax +jayden +jcp +jedi +jeff +jefferson +jehovah +jemisin +jen +jenkins +jennie +jennings +jeremiah +jerome jerrycan jerrypack +jerrypacks +jerusalem +jesse +jessie +jesus +jetpack +jetpacks +jew jewelboxes +jewish +jews +jhp +jhvh +ji +jian +jim +jimbob +jing jirt jirts +jittering +joab +joanne +joe +joes +johansen johnnycake +johnson +johnstone +joinee +joinees jointer jointing jolter +jon +jona +jonah +jonas +jonathan +jones +jordanian jort jorts +jose +joseph +josephus +joshua +josie +josé +jotunn +jotunns +jovian +joyce jpg +jr +json +jsp +judaica +judaism +judea +judean +judith +juglans +jules +julian +julie +july +jumpstart +june junglefowl junipers +juniperus +junkfood +jupiter +jurassic +jurgen +jurgensen +justina +justo +justus +jötunn +jünger k +k'iche +kabura kabuto +kaczynski +kadambawa +kafka +kaharingan +kaiju +kaja +kaje +kakka +kalashnikov kaleidoscoping kalimotxo +kalimát +kaluptic +kama +kamma kampuch +kampuches +kanabō +kandas +kandel +kangyur +kannushi +kansas +kant +kantele +kanteles +kaplan karambit +karambits kariginu +karita +karo karsk kart karting kasaya +kasayas +kasey kastane +kata katan +katana katar +katars +katha +katherine +katty +katyusha +kaushîtaki +kazakhstani kcal +kcalories +keach +kebra keffiyeh +keffiyehs keikogi +kel +kells +kelvinist +kelvinists +kemetist +kemp +kena +kendall +kennedy +kenny +kentucky +kenyan kerblam +kertzer ketene +ketokhila +ketubah +ketubot +kev +kevin +kevlar keybind keybinding keybindings keypress keyring +keyrings kg +khadia +khanda +khirad khopesh khopeshes +khândogya +kia kickboard +kickboards +kickboxer kickstand +kiddushin +kieran +kierkegaard +kiernan +kiki +kilayim kilij kilijes +killophant +killophants kilns kilroy kilted kinbot kinderling +kinderlings +kingston +kinney +kipling kippah +kippahs +kippur kirpan +kirpans kittel +kittels +kitáb +kiymali +kj +klapaucius klompen km knacks +knapp knapping +kneepads +knick knifehand knifemaker +knifeshot +knifey +kniga knockback knotweed +knotwork knowium +knuckleball knuckleduster knuckledusters +knuth +koans +kobe +koch +koda +kodokan +kohanim +kohler +koi +koji +kojiki kokanee +komodo kompot +kool kops kord +korean +koreana +korne kosmoceratops +kostas +kote +kovar +kpa krabgek +krabgeks +krag krar +krars +krav kreck +krecks kriegsmesser kriegsmessers +krills krises +krishna +kriss +kristi +kronosaurus +kropotkin +ksg +kssht kufi +kufic kuji kukri kukris +kullavagga +kung kunoichi kunst +kuo +kurt +kuru +kurukshetra +kuwaiti +kyrgyz +kâu l labbit +labbits +labcoat +labeouf +labrador labrys +lacan +laceless +lacey +lachesis lackadaisically +lacroix lactobacillus +lactofermentation +laemanctus +laevateinn +laevateinns +lagomorpha +lagrange +lahmacun +lahmacuns +laika lajatang +lajatangs +lakeshore +lakeville lambeosaurus lamellae lamellar +lamé +lamés +lan +lancaster +lancea +landborn +landline +landough +landrover landshark +landstreicher +lanesborough +lankan lanthanum +lao +laotian +laozi +lapua +laredo +largeish +largemouth +larp +larping +larry +larson +las lategame +latin +latina latrunculi latticed lattices +latvian +laura laureth +lautrec +lavey +lavochkin lawd lawnmowers +lawrence lb lbs +lcd +lcp +lcr +le +leadworks +leah +leanne leaper leatherbacked leatherbound +leathercraft leathercrafters +leathered +leatherface +leatherwork leatherworking leavening +lebanese +lecter lectern +leds +leen leers +lego legume +legwear +leibowitz +leicester +leinster +lela +lem lemacto +lemactos +lemat +lemmon lemony lemure +lenin +leninism +lenny +lenox +leo +leominster +leon +leonard +leonardo +leonean +leonid +lepisosteidae leptoceratops +leroy lessers +lester +lestrade leverages +leverett levergun +leverguns leverpostej +leverton +levi +leviticus +lewistown +lexi +lexington +leyden leylines +lfn +lgbt +lgr +liam +liang +liberian libertarianism +libyan lich +liches lidless +liechtensteiner +lifecycle lifeforce +lifeform lifegiver +lifegivers lifelessly +lifes lifestraw +lifestraws +lightbringer +lightbringers +lightbulb +lightplane +lightsaber +lightsabers lightshow lightstrip +lightstrips liker +likvidator +likvidators +lil +lila lilypad lilypads +lima +limbed liminal limply +lincoln +linda +lindbergh linux +lisa listlessly lithely litheness +lithuanian +littleton liturgies +liu livestream livingrooms +liz lizardfolk lizardlike +lizardman +ljósálfar +llc +llywelyn +lmb +lmes +lmg +lmgs +lmoe ln loadings loadout loadouts loamy lobotomizer +lobotomizers +lobsterman +loch +lockdown +lockheed lockpick lockpickers lockpicking lockpicks +locs +loew +loki +lolita +london longarm +longbowmen longear longhair longhouse +longmeadow longnose longsword longswords +looseleaf lootables +lopers lopes lorekeeper +lorence +lorentz lorica +los +lottie +lou +louie +louisa +louisiana +louiston +louisville +louverture +lovecraft +lovecraftian +lowell lowtop +lr +lsd ltd +lu +luca +lucas lucerne +lucian +lucy +ludd luddites +ludlow +ludos +ludwig +luger +luigi +luke +luliya lulo +lulos lumberjill lumberjills lumbermill +luna +lunchbag +lunenburg +lunes lungfish +luo +lupercalian lutefisk +luther +lutheran +luty +luxembourger +lv lvl lx lycra +lydia +lyndon +lynn +lynnfield +lyon +lyotard +lythraceae +lytton +lz +lâ m +maasai +maaser +maasrot +maastricht +mabel +mabinogion +maccabees +macduff +macedonian +macgyver +mach +mache +machen +machiavelli +machina +machinegun +machineguns machiner +machu macronutrient macrophenotypic macuahuitl macuahuitls maculata +madagascan +madaniyyih +maddy +madeira +madeline +madison +madisonville +mag +maga mage +magellan mages +mageshield +maggie magick magickal magicks +magiclysm +magister +magwell magwells +mahabharata +mahal +mahapuranas +mahavagga +mahayana +mahâ +mahâvagga +mahā +maiar maiasaura +maimon +maimonides +maine +mainog maintainers +mair +maitrayani +makarov +makayla +makeda +makepeace makerspace makizushi +makkot +maknúnih +malachites +malackey +malawian +malaysian +malden +maldivian +maldonado +malian malignalitaloptereosis +malignance malleability +mallick +malsumis +maltese malting +malus +man'o'war manafusion manageably +manatouched +manatricity manball +manballs manca mancae mancala +manchester +manchurian +mandaean +mandaeans +mandeep +mandy manfriendwich +manfriendwiches +mang +mangalpreet +mangifera manhack manhacks +mannbrat +mannbrats +mannwurst +mannwursts manoomin +mansfield +manti +manu manufactorize manufactory +manurhin manwich +manwiches +maori mapgen mapper maracuya marasmus +marblehead +marconi +marcuse +marduk +margaret +marie marilandica +marion +markia +marlborough +marley +marloss +marryat +marsala +marsanes +marsec +marshallese +marshfield +marssec +martell +martha +martians +marty +maruts +marxism +mary +maryland +marzanna +mascarpone +mashpee +masri massachusetite +massachusetts +massager +masse massproduced +mastercut masterkey +masterkeys mastiffs +matcha matchhead +materiel +mathemax +matheson +matricaria +matrioshka matryoshka +matsumoto +mattapoisett +mattheau +matthew +mau +mauritanian +mauser mausketeer +mausketeers mausoleums mavka +mavkas +max maximally maxwellian +mayaheri mayaheros mayapple +mayfield mayfieldi +maynard +mccaffordy +mcdowell +mcfarland +mchugh +mckenzie +mclaughlin +mcmahon +mcmillan +mcs +mcx md +mdf +mdrx mealgrub mealgrubs mealworm mealworms meathook +meatshield +mech +mechs +med +medfield +medford medibot +medibots +medigel +medigels +medisoft +mediterranean +meds +medusae +medway +megablast megachette megachettes +megacity +megacorporation megacorporations megafauna +megafaunal megalith +megamart megastore +meghan +megillat +megingjörð +meh +meizhen +melchior +melchizedek melee +melian +melissus +melitzanosalata +melony +melrose membranous +memes +memoriam +memphis +mendez +mendon +menelik +menemen +meng menorah +menpo +mentos +merc +merch +merck +mercs +merriam +merrimac +mertensia mesenterium meshwork +meskwaki +mesoamerica +mesoamerican +mesoamericas +mesopotamian messily +meta +metalcutting metallics metalloid metalsmithing metalworker metalworkers metalworking +metamagic metamaterial +metaprolol metatopography +meth methacola +methamphetamines +methodist methodologies methothexazole +methuen +methusalah metrology +metzia +meusoc +mexican +meztia mezuzot +mgl +mia +miami micellular +michael +michel +michigan +michoacán microbian +microbians microbrewed +microcar +microcellular microcentrifuge +microcentrifuges microchipped microcontrollers +microfusion microgenerator +microgenerators microgram microjet microlab micromonies +micronesian microplane +microportal microportals microreactor microskirt +mictlān midden +middleborough +middlefield +middlesex +middleton mideast mideastern midgame midground midrange midsentence +midwest +midwestern +might've migo +mikagura +mikhail +miki +milan mildewy +miley +milford +milinda milkfat +milkor +millbury millenia +millie +millis +millville +millyficent milspec +milton +mimekor +mimi +min +mindblasting +mindhammer +mindhand +mindhands +mindrender +mindrenders +mindstone mineable minesweeper minhocao +minhocaos minifreezer +minifreezers minifridge +minifridges +minigun +miniguns minimap +minimi mininuke +mininukes minireactor +minireactors +minneapolis +minnesota +minnie mino +minotaur +mins +mintonette minuteman +miriam +mirkwood mirrorshades +mis misc +mises +mishnah +misinter misjudgements misperceive misprogram misreadings misshaped +mississippi +mit +mithraic +mithraism +mithril +mitre mitzvot mixup +miyagi +miyamoto +mj +mjölnir +mjölnirs +mk +mkii ml mm +mma mmm +mo moar moas mobbings +mobius +modded modding modernday modifier modifiers modularity modulations +moed +mohawk mohawks +mohegan +moism moisturized +mojave +mojocycle mokorotlo +moldovan moldspring +moldsprings +molle molluscicide +molotov +molotovs +monday +monegasque +mongolian +monica +monoco monocrystalline +monogyna monomeric +monometal monomolecular +monopod +monroe +monroeville +monson +montague +montante +montenegrin +monterey +montgomery +montpelier +montreal +moodswing +mooks moonflower moonflowers moorhen +moosek +moraceae +morales +moravian +mord mordant +moreau +moreauburger +moreauburgers morels +morgan +mori +mormon morningstar morningstars +moroccan moroi +morph +morphic +mortem mortems +morthylla +mortis +morto +morton +morus mosaicus +mosaicuses mosasaurus +moscow +moses +moshiach +mosin +mossberg +mossling +mosslings mostlike +motd mote motes +motorhead motorpool motorsports +motzah moulinet mountable mountings +mourchida mouthgear mouthpart mouthparts movesets +movimiento +moxies +moxphore +moyer +mozart +mozilla +moʻolelo +mp mph mr mrad mre +mres +mri +mrs ms +msv +mtar +muay +mudcrack +mudge +mudora mudskippers +mufasa muffs +mugwort +muhammad mulching +mulder +muldoon +mulroy +multi +multiclean multicolor multidrop multilayered multimeter +multimeters +multiplayer multiplier +multipool multipronged multitool +multitools multiversal +multiverse +mumbo +munchings +mundaka mundanity +muppet murderball +murderballs murdersaw +murdersaws +muriatic +musashi musculoskeletal muskellunge +muslim +muslims +muspelhiem +must've +mustela mutagenically mutagenicity mutagens mutus muzzleloaders +mw +mx +myanma +mycal +mycenacean +mycogenesis mycoid +mycorrhizal mycus +myers myomer myrmidon mythologically +mâdhyandina +mânûskihar +māori n nacreous nagamaki +nagant naginata +nagoya +nahant +nahuatl naiad nailboard +nailboards +najah +nakayama nakha +nala +nam +namag namele +namibian +nana +nani +nano +nanobots nanocompound nanocrystals nanofab @@ -1792,95 +4775,310 @@ nanomaterials nanomesh nanoprinted nanoribbon +nanoribbons nanosaurus nanoskirt +nanoskirts +nanotech +nanotubes nanowire +nantucket nanuqsaurus +naproxen +naptime +nara naranjilla +narayana +narco +narnian +narragansett narry +nasa +nasks +nasties +natalie +natick natively +nato +nauruan +navajo +navayana +nayak +nazgûl +nazi +nazir +nazirite +nazirites +nazis +nbc +nda +neal nearsightedness +nebraska +necc necco +neccos neckbeard neckwear necro +necronomicon +necrotizing necrowolf nectivore +ned +nedarim +needham needlelike +needletip +neg +negast +neha +nellie +nema +nemo +neo neonate +neondorthall neotenic neotheropod +nepali +nepower +nepoweros +neptune +nerf +nerfs +nero +netherium +nethermancer +nethermancers +netherum netkit +neuro +neurobionic +neurobionics neurocognitive +neurocranium neurodegeneration neuroimaging +neuromancer +neuroprosthetic +neuropsychology +neurosoft +neurostimulators neurosynaptic +neurotoxin neutrite +neutrites +nevada +nevaeh +neverending +nevermind +newbury +newburyport +newfoundland +newport newsbots newsweekly +newtonian +nfa +ngon +nguni +nhat nibelung +nicaraguan +nicholas nichrome +nicodemus +nicola +niddah +nietzsche +niflheim +nigel +nigerian +nigerien nightcrawler +nighter nighters nightgaunt +nightgaunts nightlights +nightshifter +nightsight nightstalker +nightstalkers nightvision nigori +nigra +nihon +nij +niklaus +nikolai +niles nimbelemnite +nimbelemnites nimbleness nimbler nimue +nina +ninhursag +ninjutsu +nipâta +nishan +niten niter +nitron nitrox +niven +nixon +niño +nmr +nobel nocking nocks nodachi nodosaurus +noetically +nogueira +noir noisiness +nom nomex nonaggressive nonbinary nonpareils +nonprolific nonrevealing nonromantic nonsedated nonstandard nonuniform +nonvalid nonverbally +noob +noosphere nopal nopales nopalito +nopalitos nord +nordic +nords +norea +norfolk +normie +norovirus +norse +northampton +northborough +northbridge +northfield +northrop +norton norvegicus +norwegian +norwell +norwood noseless +nosferatu nothronychus +novak +november +nozick npc npcs +nr +nra +nre +nsa +nsaid nuckalavee nuckalavees nuda nudicaulis +nuevo +nuh +num numbingly numbnut numpad +nunez +nv +nw +nyâyis +o'brian +o'connor +o'lantern +o'lanterns +o'reilly +oa +oakham +oakland +oakley +oates obovate +obrez +obscura obsoleted occultism occultists +oceania ocher +oct +octavia octo +october ocularium +oculariums +odie +odin officiants officinale offputting offroad +offroading +offworld +offworlders +ofudekasi +ogam +ogã +ohio ohms +ojibwe +ok +okie +okinawan +olaf +olam +olcott oleaginous oleoresin olieribos +oliver +olivia +olwen +olympia +olympian +olympic +olympics +omani +omni +omnicellular omnivore +omts +onboard +ondua +onduine +onesie +onesies +onigiri +ons +onsite +ooarai +op opacity +opalbinia +opalescently +opel openable openair opengl @@ -1890,31 +5088,67 @@ ophanims optimality orc orcs +ordinator +oreo orgs orichalcum +orinoco +orion +orishas +ork +orlah +orlando +orleans ornately ornithomimid ornithomimus +orpheus +orphic orrery +orson orthogonally +orwell oryctodromeus +os +osashizu +osb +oscar +oscars oscillated +oscillococcinum +osha osho +osiris osteoderm osteoderms +osteoglossidade osteokinesis +oswald +oswego +otaku otherland otherlander otherlands otherworlds +othniel +otis +otm +otmss +otomo +otten +ouija +outdoorsman outgrowths outperforms outputting ovata +ovcharka +overaccelerate overboots overbore overbuilt overclock +overclocker overclocks overdosage overdrinking @@ -1929,131 +5163,299 @@ overmaps overpenetration overpressure overqueen +overqueens +oversaturates +oversharing +overshirt overshoes +overstimulator oversuit oversuits overswing overswinging overtaxing overtop +overwatch ovipositor ovipositors ovoviviparous +owchie owlbear +owlbears +oxbridge oxidant oxidants +oxycodone +oxygenator +oyasama +oz p +pablo +pachira pachycephalosaurus pachyrhinosaurus packable packmate +packmule +packstone pacu +pacus +pahlavi painkilling +paintballs +pakistani +palaeoanthropology +palauan paleozoic +palestinian +palmero palpably palpitate +pam +panaceii +panaceus +panamanian +panaturan pancora +pand +pandavas +pankratiast +pankration panoplosaurus +panopticonic +pansexual pantries +pao +paolo +papalomeh papalotl +papaver +paperclipped +papier +papuan papyrifera parabellum parabolan parachuter +paraclesian +paraguayan +parajubea parasaurolophus parasitoid parasitoids +paraskara paratronic +paratronics paratrooping parboiling +paribhashasutras +paricutín +parinibbāna +paris +parisishta +parkour +parotoid paroxysms parries parrying parthenogenetic +partygoer +partygoers +parvas +passcode passionfruit +pastafarian pastes pasteurize +patagonia pathfinding patios +patrick +paul pauldrons +paulus +pawpads +paxton +payne +pba +pbj +pc +pcs +pdcurses +pdw +pdws +pe'ah +peabody peacoat peanutbutter pearlescent +pearlman pebbled peccary +pecorino pedipalps +pedro +pekmez pelmeni +pembroke pemmican penalizes +pencak +penetrator penetrators +pennsylvania +pennywise +penobscot pentaceratops pentagonal +pentecost +pentecostal +pepeha +pepperell +pepto peptone percents +percy perforator +perforators periapta periaptas peridot peridots peripheric +permadeath permutator +permutators perplexion +perseus +persian persica perturbing +peruvian +pesachim +pete +peterson +petn peto +petos petpack +petpacks +petrichor petrification petrochemicals peytral +pf +pfft +pfw +ph phalange +phaser +phavian +phd +pheidippides phelloderm +phelloderms +phelps phenotypes phenotypic phenotypical phenotypically +philaret +philip +philips +phillip +phillips +phillipston phonological phonologies photochemistry photochromic photodiode +photokinetic photonics photophore +photoshopped +photoshopping photosynthesize phrygian phthalocyanine phyle +phyllostachys physicochemical +piby +picarelli +picatinny +picchu pickelhaube +pickelhauben pickerel pickerels pickhead pictograms pictographic +pide +pierre +pietta piezomechanical +pilate pileus +pina +pinecone +pinecones pinita +pinkman +pinnae pinnata +pinot pinout +pinus pinyin pipebomb +pipebombs pipettes pipework +pipeworks +pippa piraiba +piraibas +pisces +pissbrain +pistacia piste +pitbull +pitchwoman +pittsfield pixelates pixelation +pixeled +pizzaiolo +pizzaland +pk +pker +pkers placidly +plainfield +plainville planar planer planetside plano plantkin plantlike +plasticky plastron platemail +plateosaurus +platings +plato +platt playable +playstation +playstyle playthroughs +plc pleco +plecos plectrum pleistocene plesiosaurus @@ -2062,10 +5464,19 @@ plinker plinking plushie plushies +pluto +plymouth +plympton pm +pmc podling podlings pokeball +pokémon +polaris +polaroid +polaroids +polcom polearm polearms poleaxe @@ -2086,26 +5497,60 @@ polytheistic pomelos pomes ponderously +pontius pooka +popol populifolia +populus popup popups porkbelly porkpie porrifolius portability +portland +portmaster +portuguese +pos postcolonial posteriori posthuman +potamotrygonidae potboiler potentiates +potsy +potus +pouff poultices pouncer +pouncers +powell powerlifting +powerline +powerplant powerplants +powerpoint +powerthirst powertool +ppa +ppavattana +ppe +ppk +ppq +ppsh +pr +prado +pragnâ prancer +prasna +pratchett prayerbook +prc +pre +preapproved +precisionist +precolumbian +precombined preconditions precooked predatorially @@ -2118,61 +5563,107 @@ premeasured preminiscent premix preoptic +prepended +prepnet prepper +preppers prequel prequels presaging +presbyterians prescriptures +pressin prev preventer pricier prickling prigs primeside +princeton +principia +priori +pritchel +pritchett privet +priya prizefights proc procedurally +prochilodontidae procompsignathids +produkt proficiencies proficiently profusive +prog propellants proprietary proprioception propyl prosaurolophus protectiveness +protege +protennoia prototyping protuberances +proudhon +provence +provincetown +prozac +prs +prunus +prussian prybar +pryce pseudocode +pseudolimbs pseudomagical pseudopod pseudopods +pseudothelphusidae pshht +psiom +psion psionic psionics +psl +psu psychiatrically psychochemical +psychokinetics psychopharmacological +psychoreactive psychrophile +pt pteranodon +ptr pts +ptsd puckish +puebla +puerto puffball +puffercoat pufts puker +pukers puller pullers pulping pulsate pulsates pummels +pumpkinhead pumpkinseed +pundarika +punica +punicoideae +punjabi pupating +puranas pureeing purifiers +purim purrson purslane purviews @@ -2180,93 +5671,184 @@ pushmower pussywillows putrescent pwn +pyrenean +pyrenees pyrokinesis pyrokinetic pyrolusite pyrolysis pyrometer pyrophoric +pyroportation pyrotechnical pyrrolidone +pyrus +pâda +pâramitâ +pātimokkha q +qatari +qdss qiang qianzhousaurus +qol +qolastā +qr qt quadcopter quadcopters quadrilateral quadrupedal +quaker +quakers +quan quantification quarterpanel quarterstaves +quebec +quechua queenright +queensland quells +quercus +querecho quern +quesadillas quetzalcoatlus +quickdraw quickheal +quickheals +quickload quicksave quiescent quillbag +quillbags +quincy +quinn quipping +quixote +quran qwerty r +rabba rabbinic rabidly +racecar +rachel racketus +rad radially +radiants +radiobeacon +radiogenic radioisotopes +radiophile rafflesia +rafflesias raggiana +ragnarok +railgun railguns +raimundo raincatcher +raincatchers rainsuit +rainsuits raketa raketas +raleigh +rallidae +ralph +rama +ramadan +ramayana +rambo +ramin +ranade +randall +randolph randomize randomizes rangehands +raoul raptorial rashguard rashy +rastafarian ratatosk ratlike rattigan +rattigans +rattus +raufoss +rav +ravana ravenfolk rayed +raynham razorbar razorclaw +razorclaws razorsharp +razzle +rc +rci rd +rda +rdb +rds +rdx reachability reactively reactivity readme reagents +reaim realtime reamer reamers rearwards reassembly reasserts +reavers rebalanced +rebalancing +rebar rebars +rebirthing +rebooter +rebooters rebrands +rebreather rebreathers rebreathing recaptures +receeds +rechamber rechargable recharger +rechargers recirculation reclines +recognizeable +recontoured +recraft recrafted recuperator +recuperators recursively recurve recutita recycler +redaxe redcaps redden +redekopp redesigns +redhawk +redsmith +redsmithing +reena reenabled reenactor reenactors @@ -2276,108 +5858,355 @@ refillable reflexively reforging refuelable +regenerators +reggie regia +regin +rego regrows regurgitates +rehobeth +rehoboth +rehydrated +rehydrating +rehydration +reimagining reimpose reinstalling +reisendre +rekhter +reliables +reloadable +reluctancy +remediated +remington +remingtons remodulator +remy rended renderer renfaire renfaires renfield renfields +rennaisance rennet +reno repacked repairable +repairwork replow +represa reprime reprises reptiloid +reptoid +reptoids +repurpose +repurposed +repurposing requisites +rerebraces rerio +reroll +rerolling +res resealable resinosa resinous +resize resizing resmelt resonances +resublimed reticle retrodays +reuben +reversi revitalizes revivification revivified revivifying revulses +rex +rexes +rfa +rfb +rfid +rgb +rh rhabdomyolysis +rheims rhizomes +rhode +rhodes +rhodians rhodonite rhombus +rhy rhytidome rhytidomes +rhyzaea +ri +ribboner ribbonlike +rican +ricardo +ricasso +richard +richards +richardson +richmond +ricky +rico +rideable +rideshare +ridgeback ridged +riesling +riftwalker +riftwalkers +riggings rightmost rigida +rigveda +riley +rinded +ringworld +rio rioter +ripley ripstop +risali +rituais riverstone +rivos +rivtech +rizzo +rmb +rmes roadheader +roading roadstop roastable +robbie +robbins +robert +robinson +robo robogun +roboguns robotfindscatan robotfindskitten robustly +rocco +rochester +rockbolt +rockclimbing rockfeeder +rockford +rockland +rockport rockwheel +rockwheels rocuronium rodding +rodger +rodgers +rodriguez roguelike roguelikes +roids roleplay roleplaying +rollerball +rollerblades rollerskates rollmat +rollmats +roma +romanian +romano +romans +rome +romero roncone roofless +roosevelt rootlike +ropemaking ropers ropy +rosa +rosaceae +roscoe +roscosmos +rosh +rosie +rosner +ross +roswell rothe +rougarou +rourke +rowe +rowland +rowley +roxanne +roxy +roy +royale +royalston +royce +rpg +rpgs +rpk +rtg +rtgs +ru +rubaiyat +rubbles +rubik rubra +ruckers +rudolph +rudra +rudy +rudyard +rufus +ruger +ruggedized ruleset ruminant ruminants +runtime +rupp +rushmore +ruslan +russel +russell +russian +rutland +ruttenberg +rv +rvs +rwandan +ryan +rycon +ryder +ryu +ryūsei +râmânuja +régime +rōnin s +s'mores +sa sabalo +sabalos sabaton sabatons +sabbâsava saboted sabots saccharification saccharum +saddharma +sadie +sadm +safehouse +safeline safemode +safepoint safewords +safinatun sagely +sagrada +saintess +saipan +sako +salca +salem salicylate +salisbury +salix sallet salsify saltire saltpan saltworks +salus +salvadoran salvager salved +salvor +salvors +sam +sambal +sambucus samghati +samghatis +sammarinese +sammy +samoan +samopal +samoyed +samoyeds samsara +samuel +samuels +sanatsugâtîya +sanchez +sanctacaris +sandcasting +sandhu +sandisfield sandleather +sandleathers +sandra +sangha +sanhedrin +sanitron +sankaracharya +sankhyayana +sanskrit +santa +santo +santos sapience +sapiens +sapiovore +sapra saproling saprolings +saprophage +saprovore +sarah +sarahs sarahsaurus +sarajevo +saraph +sarcosuchus +saritania +sarlacc +sarma +sarna sarracenia +sarracenias +sartre +sas +sasanian +sasha +sashimi +sasquatch +satan +satapatha satirizes +sattler +saturday +saturn +sauer +saugus saunters saurolophus sauropelta @@ -2385,185 +6214,491 @@ sauropod saurornitholestes saurulophus sautee +sauteed +sauvignon +savoiardi sawblade sawblades sawteeth +sawzall +saxon +saxons +sbl +sbr +sca scabbards scalable +scalefolk +scammer +scandinavia +scandinavian scatterer +scav +scavs +scba +schmeisser +schoen +schoolbus +schoolclothing +schooler +schopenhauer +schroeder +schubert +schulz +schwarz +sci +scientology scifi scimitars +scincidae scions scissorlimbs +scituate sclera sclerotin sclerotized +scofield scolosaurus +scotland +scots +scotsman +scotsmen +scott +scottish +scp screecher +screenshot screwdriving scruffs +scrying +sct scutcher +scutchers scute scutellosaurus scutes scuttles +scx +scylla +sd +sdart +sdl +sdp +se sealab sealable sealabs +sean +seances +seatbelts seater +sec secretively secubot +secubots +seder +seedshaper +seedshapers +seekonk +seelie segmentata segmentation +segway +seinerweisen seldomly selectable +selfie +semirural +semitangible +semper +senegalese senet +sensei +sentients +september +serbian +serbu +serdyukov serendipitously +serendipnol +serendipnols seriema +serra +serrano serrate serration serrulata servitor servomotors +seth +seward seweranha +seweranhas sexten +sextus sexualities +seychellois +seyfert +sf +sfc +shabbat +shabriri +shacharit +shaddam shadowbox shadowboxing +shadowcaser shadowcat +shadowcats +shafi'i shahada +shaiva +shakespeare +shakha +shakta shambler +shamblers +shamir shamshir shamshirs +shan +shane +shang +shania +shanking shantak shantytowns +shaolin shapechangers +shapeshift +shapeshifter +shardspray +shardstorm sharksuit sharksuits +sharma +sharon +sharptooth +shaun +shawn +shayla +shazgra +sheba shedded +shedim +sheeple +sheesh +sheffield +shekalim +shelburne +shelby +shelley +shelvings +shem +shema +shemitah +shen shenandoah +sheni +shenk +shep +sheperd +sherborn +sheri +sherlock +sherman +shert +shevi'it +shevuot +sheyd +shia +shih +shii +shikishma +shiloh +shimon +shinderling +shinobi +shinto shipside +shipwrecker +shirley +shitass +shitbag +shite +shitface +shithole +shitshow +shitstorm shitstorms +shitweasel shivs shlip shlop +shockwaves shoddily shoddiness shoggoth +shoggoths shogi +shoki shootable +shopkeep shortfalls shorthair shortnose +shoryuken shotcestus +shotcestuses shotgunner +shotpistol +shotpistols shotshell shotshells +should've shoulderblades shovelhead +shrewsbury shrieker shriekling +shrieklings +shroom +shrooms shrubby +shrubland +shuchan +shui +shulchan +shunryū +shutesbury shutterbug +shuttlecraft +shuttlepod +shâyast +shû +shōtōkan +siamese siats +siberia sibilant +sicc +sicp +siddhartha +siddurim +sidhe +sidhu +sidr +sierpinski sieves +sig sightedness +sigils +sigurd +sikand +sikh +sikhism +sikorsky silage +silat siloed siloing +silvergram +silvergrams +silverhawk +silverhawks +silverstein +silvestra +silvestris +simmons +simon +simons +simulacron +sinai +sinapis +sinbad +sindar +sindarian sinensis +singaporean +singh +singhs sinously sintering +siobhan +sioux +sippy +sirach +sirhan +sisyphus +sita +sivi sixdust +sixgun +skeena skeletonized skillset +skinfolds skirmisher skitterbot +skitterbots skittishly +sklyarov +sks skulduggery skulker skullgun +skullguns skybridge +skye skyglass +skynet slackness slaked slamfire slapjack slatted +slavic sleeker sleeved +slenderman +slimed slimes +slimewave slitted +slovakian +slovenian +slowfall +slr +sludged sludgy sluggishly sluggishness sluglike +slurriless smallmouth +smaragdina smartcard smartgun +smartphone +smartphones +smashable smg +smgs smithing +smle smokable smokegun smoothbore +smoothbores +smoots +smr +smythe snakelet snakelets snapback snappier +sni snick snikt snotgobbler +snotgobblers snuggie +snuggies +snuggly socketed socketing +socom +soergelia +sof softcover softcovers sojourner +sokoban +solaris solarpunk +solarpunks solderers solderless soled +solera +soloveitchik +somali somersault +somerville sommat somniferum +sonia soother +sophia +sophie +sopmod +soren sorrowfully +sotah soteriological +souffles +soulbinder +soulfire +soulrend soundpack +soundscape sourness +southampton +southborough +southbridge +southwick +soyang +soylent +soyombo +soypelusa sp spacebar +spaceborn spaceflight spacers +spacetime spadelike spall spalling +spanish +sparam sparker sparkers +spartans spasmically spasming +spazzing spearcat spearfisher spearfishers +speargun spearguns spearhand spearman spearmen speciesism +spectre spectrographs spectrophotometer speedloader speedloaders +speedo +speedos +speedydex spellbook spellcaster spellcasters spellcasting spellcraft spellcrafters +spetsnaz spezi +sphenocorona +sphenocoronae spheroid +sphynx spideer +spideers spiderden spiderlike spiderling @@ -2572,10 +6707,15 @@ spikey spikier spile spindles +spined spinnerets spinosaurus spinwheel +spinwheels spitter +spitzer +spiw +spiws splashproof splicer splinting @@ -2584,30 +6724,65 @@ splorch splosh spoilage spoked +spokeswyrm spongey sporeling +sporelings +sporeos spork +sporks sporter +sporulating +spr spraining sprayable spraypainted spraypainting +springfield +springfields springstaff +springwater spriteling +spritelings sproglodyte +sproglodytes +sprouter +sps spurge +spx squadmates squamish squeezable squiggling +sr src +srcf +srcfs +sridhar +srila +srimad +st +stablization stackable +stan +stanag standalone +stanisław +stanley +stapeldon starer +starhawk +starship +starships +stat +staticskin +statisticality staunchable staunching +staunchings std steadfastness +steampunk steelshod steeltoed steeping @@ -2615,19 +6790,48 @@ steerable stego stegoceras stegosaurusfindsrobot +steinbeck +stella +sten +stenio stenonychosaurus +stens +stephen +stephenson sterilizes +steve +steven +stevens +steyr +sti +stig +stillwater +stimpack stimulative stimulators stimulatory +stinktoad +stinktoads +stinkyface stirfry stirge +stirges +stirling +stirner +stockbridge stockrooms +stokey stompers stompy +stonefist +stonefoot +stoneham +stonehenge +stonehenges stonelike stoneling stonelings +stoners stoneskin stook stooking @@ -2635,175 +6839,505 @@ stopcock stoppered storable stormcaller +stormcallers +stormclouds +stormfist +stormfists +stormglove +stormguard +stormhammer +stormhammers stormshaper +stormshapers stormshaping +stormtrooper +stormwind +stoughton +stovetop +stovetops +str straitjacketed +stranglethorns +strategize stratoscomm +streetfighter streetfighters +streetsweeper +streetsweepers +streetwear stressfully +striders +strigoi +strobing strobus +stromer +stross +strugatsky struthiomimus +stryker stubbier stungun +stuntongue +stuntongues +stupidass +sturbridge sturdily sturdiness sturgeons +stutterstep +stutterstepping +stylette styracosaurus +styx subcompact subcutis +subdermal +subgenius subgun +subguns +subj sublethal +sublimb submachine +submachinegun submap +submaps submenu submersed suborder subplanar subplane subplots +subprime +subspell +subspells subsuming subtypes +subwoofer +suchomimus +sudanese +sudassana +sudbury sudo suffixed suffuse +sugarkin +sugarrush +sukhâvati +suki +sukkot sulfoxide +sullivan +sumerian +summerfield summoners +sunday +sundays +sunderland sundew sundress sunesthesia sungel +sunil +sunni +sunnyvale +sunvault superalloy +superbike +supercar superchilled +supercompact supercritical +superfan supergluing supergravity superheroic +superhot supermaterials superoxide superpositional supersoldier supersoldiers superteam +supertruck +supervillains +superweapon +suppressively suppurated surcoat +surefoot +surinamese +surry survivalcraft survivalists +susan susurrate +sutrakritânga +sutras +sutro +sutta +sutta'a +sutta'anta +suttanta +suttas +sutton +suv +suvs +suzanne +suzuki +svd +svetasvatara +svp +sw swage swages +swampers +swampscott +swansea swappable swashbucklers +swazi +swd +swedish sweetish +sweety +swiss switchgear +swordfighting +swording swordmanship +swordsmith +swordswoman +sykes sylph +sylvanus sylvatica +sylver sylvite sym +symbiote +symbiotes symmetries synchronistic synchronizes +synth +synthblood synthesization +syracuse +syrian +sysadmin +sâmhita +sîrôzahs +søren +sōjutsu t +taanit +tabi +tabula +tac +tachycardiac +tacoma tacticool tadfish taegeuk +taekwondo +tagline +tai taitsu +taittiriya +taiwan +taiwanese +taj +tajikistani +takatoshi +takayama +takedown takedowns +takеn +talavakâra tallit +tallman +talmud +talmudic talwar talwars tamable tambaqui +tambaquis tamped +tamsyn +tanakh tanbark +tanfoglio +tangler +tanglers +tanglevine +tanglevines tangram tangrams tankbot +tankette +tankettes +tankylosaurus tannin +tanzanian +tao +taoism +taoist +taonga +tarango +tardis +tarkov +tarleton tartarate +taser +tasers +tasha tastemakers +taunton +taurist +taurists +taurus +tavor +tavrel tawa taxa taxying +taylor +taze tazed tazer tazers +tazmania +te tearjerker +tec tech technologist technomancer +technomancers technomancy +technomantic +techworld tefillin +teflon +tegh tegmental +tekeli +telecom +telefragged +teleglow +telekinetics telepad telepads +telepath +teleport +teleportation +teleported +teleporter +teleporters +teleporting +teleportitis +teleports +telushkin temaki +templeton tenderloins +tengriism +tengyur +tenmile tenontosaurus +tenrikyo tepoztopili tepoztopilis +tepper tequini teravolt +teravolts +tergitol terpenes +terraforming terranean +terranian +terrifier +terumot teshuvah +tessa testbed tetradrachm tetrahedron +tevigga +tevis +tewahedo +tewksbury +texas +texting +texturized +teya +thackeray +thai +thakura +thang +thanh +that'd +that'll thaumaturge +thaumaturges thaumaturgical thawb +thawbs +thc +themself +theo +theodore +theologist +there'd +there'll +there've +theresa therizinosaurus +thermite +thermobaric thermochemistry thermoplastics theropod thescelosaurus +thessalonian +thich thicknesses +this'll +thomas +thomet +thompson thonged thonk +thor +thorazine +thoreau +thoreaux thorned thornothurian +thornothurians +thornskin +thornskins +thornweaver +thornweavers +thosun +thracks threateningly +threose threshed throated throating throwable thru thrums +thuluth thumbholes thumbless +thumper thunderball +thunderdome +thunk +thursday thyreophoran +tibetan +tiffynie +tig +tikanga +tikkun +tiktaalik +tilapia +tilapias tileset tillable tillage +tilly +tilmàtli +tim timelapse +timmy +timorese +tinamidae tinamou +tindalos +tink tinning +tipperary +tiramisù tiredly tireplate +tireplates +tisbury +tisha titani titanis titanochelon +titanochelons +tlatoani +tnt +toby +tock +todo toecaps +toffer +toggleable toggled toggling +togolese +tokarev +tokyo +tolkien +tolland +tolstoy toluene +tomas +tomean +tommy +tonalpohualli tonfa +tonfas +tongan toolbar +toolbars toolbelt +toolbelts +toolkits toolmaking toolmod +toolmods toolset toolshelf +topographagnosia +topsfield +tornskin toroids torosaurus +torrance torvosaurus totipotent +toto tourmaline +tourmalines +tov +tovarishch +townsend +toxicum +toxtricity +tpa +traceur +traceuse +trackpants +tractates +tragopogon +trailhead trailheads tramadol +tran +trans +transception +transdimensional +transdimensionally transhuman transhumanist transhumanity @@ -2811,95 +7345,223 @@ transhumans translocates translocation translocator +translocators +transplanar transpositions +transubstantiated transuranic +transylvania trapezium trapezoidal travelpack +travelpacks +travers traversal travois +treecutting treefrog treefrogs +treehouse treelines +treesing treesinging treesung +tremens +tremorsense trenchcoat trenchcoats trenchgun +trenchguns trenching +tri triband tribesperson tribot +tribots +triceratruck +triceratrucks trichloride trichocarpa +trichodactylidae triclopean tricorne trifacet +trifacets triglav trigrams trilaser +trilasers trilobite +trimorphic trioxide tripartite tripcore +tripitaka +trismegistus +trixie +trofica troglobite +troglobites +trollope troodon +tropicataclysm +trotsky +troutmans truckstop trudges +truefoodperson +truesight +trurl +truro tryphillum +tsang +tse +tshk +tskbem +tsniitochmash +tsu +tsuba tsumi tsundere tsurugi +tt +ttf tuber +tubings tucunare +tucunaré +tucunarés +tuesday +tuesdays tumescences +tummultous +tumnis tundras +tunguska +tunisian tunneler tuno +tupperware +tupperwares +turing turipache +turipaches +turkish +turkmen turreted +tuscany tusked +tuvaluan +tuyen +tv +twinkies twintailed +twitfeed twohand +tx txt +tyler +tylindel +tylosaurus +tyngsborough typologies +tyr tyrannosaurid tyrannosauroid +tyringham +tyruckusaurus +tyson +tze +táin +töttchen +tūtahi +uac +uasta +uav +uber +uberti +ubuntu +ucia +ucla +udarnik +udarniks +ufo +ufos +ugandan +ugaritic +ugv +ugvs +uhh +uhm +uhmw +uhmwpe +ui +uica +uicas +uicasta +uid +uisav +uk +ukon +ukrainian +ulmus +ultrabright ultracapacitor +ultracapacitors ultralight ultras ultratech +ulysses +umbanda +umble +umm +ummm +un +unaged unarmored unawareness +unbothered unbreachable unbuckling unburnt +uncategorized uncleaned uncluttered uncoiling uncoils uncontacted +uncontrol +uncorded uncured +undeath undecipherable underbarrel underbody +underbrushes undercoat undercovering undergrown underhill underlayer underlayers +underlift +underprepared undersides underslung understandingly +undersuit undescribed undine undried undulates uneasing +unencrypted +unencumbering +unequip unfathomably unfavorite unfermented +unfixable unflavored unfletched unfoldable @@ -2911,10 +7573,13 @@ unhealthily unhidden unhindering unhomogenized +unicode uninstall uninstalled uninstalling unipolar +unitard +unitards universalism unjacketed unkept @@ -2922,6 +7587,7 @@ unlife unlivable unlively unlives +unlockable unlooted unlubricated unmalted @@ -2931,22 +7597,34 @@ unmount unmounted unmutated unnervingly +uno unobtainium unornamented unpadded +unparalelled +unphased +unpleasantries unpopped unpowered +unpredictables +unracking +unreferenced unreinforced unrifled unrotten unrushed +unsalvageable unsaved unseasoned +unseelie unselect unselectable unset +unsetting unsettlingly unskillfully +unsleeping +unsmoked unsorted unspecialized unspooled @@ -2954,223 +7632,658 @@ unsteadily unstocked unstrained unstylish +untamable untampered untargeted untilled untrodden +untrusting untyped unwield unwieldiness unwielding unworried +upangas +upanishad +upanishads +upapuranas upcycled upheaved uplifts +uplink +upses upsized +upsizing +upstair +upton +uranus ureter +urgh ursine +ursula +uruguayan +usa usages +usb +usc +usd +usmc +usp +uss +ussr +uta +utah utahraptor +utahraptors +uthra utilibot +utilibots +uttaradhyayana uttarasanga +uttarasangas +uv +uxbridge +uyen +uzbek +uzi v +vaccinium +vachellia vacuoles +vader +vafthrúdnismál +vagrakkhedika +vaishnava vajra +vajrayana +valencia valencian +valentina +valentinian +valhalla +valhallist +valhallists +valknut +valkyries +valzain vambraces +vanburen vancian +vaneigem +vanessa +vanishment vantablack +vanuatuan +vanwyk +var varanid +varanus +vargas vars +vatforged vatgrown +vaughn vaulters +ve +vedanta +vedas +veeblefetzers +vegas veggy veined +vektor +velcro +velociraptor +velociraptors +velocitas venandi +venatores +vendîdâd +venezuelan +venoms ventrolateral +venus +venuste verbosity +veresk +veridian veripixel +vermont vermontsteel +verne +versa +versailles vesicle vesper vestigal vestment vewwy +vi +viagra +vibing vibrantly vibro vicinities +victorian +vidar +videogame +videogames +viet +vietnamese viewfinders viewport viewports +vigar +vigneto +vihara +vii +viii vikeys +vili +villeneuve +vin +vinaya +vincentian vinegared vineling vinelings +vineweaver +vineweavers viny viperine +vips +virginia virginica viridian virions +vis vises +vishnu +visparad vitakinesis vitakinetic vivarium +vivian viviparous vivisect vivisected +vladimir +vocalizers vocaloid +vogt +voila +vol +volkswagen +vollmer voltaic +voltaire voltmeter +voluntolds +von +vonnegut +vonwalt vorbis +vorm +vorpal +vp vr +vroom vs +vtuber +vu +vudor +vuh +vulcanist vulgarities +vurt +vyuha vz +vâjasaneyi +vâsishtha +vâta +vâyu w +wabanaki wabbits +wacked +waffenfabrik +waiata +wakefield +wakeup wakizashi +walden +walder +walders +wallace walleri walleye +wallguns +walpole +walsman +walter +waltham +walther +walthers +wampanoag +wanda +wang +warcry +wareham warframe +warg wargame +wargs warhammer warhammers +warmbloods warmouth +warmouths +warpcloak +warpcloaked warpglass +warpsickness warpstream +warsaw warted +warwick +washington wastebread +wastelanders watchband +watchfire waterfowl waterkin waterproofed +waterproofings waterskin waterskins waterskis +waterstrider +watertown +waterville +waugh waycircle +wayfinder +wayland +waystone +waystones +wdt +wdym weakpoint +weaponized +weaponizing +weaponsmith weaponsmiths wearers +weatherby weatherworn +webber +webbstar +webster +wednesday +wednesdays weiler +weilers +weiner +weiss +wellbeing +wellesley +wellfleet +wendell +wenham +werner +wessex +wesson +westborough +westfield +westford +westhampton +westminster +weston +westport +westwood +wetcode +wetcodes wetsuits wetworks +weymouth +whakapapa whap whaps +what'd +what'll +what're +what've +whatcha +whateley +whately +whattya wheatberries +wheater +where'd +which'll whiled whiplike whirr whiskflower +whiskflowers whitelist whitelisted whitelists +whitman +whoah +whoo whorling whuff whump whunk +wi wibble +wibbled wibbles wibbling +wibbly +wicca +wiccas wicking widgets wieldable wielders wieldier +wienermobile +wilbraham +wildborne +wildcard +wilde +wildshape +wilhelm +wilhemina +willa +william +williams +williamsburg +williamson +williamstown willowbark +wilma +wilmington +wilson wimple wimples +winchendon +winchester windowframe windproof +windrunning +windsor +windstrike +winemaking winglike +wingmaster +wingshooter +winifred +winkler +winnie +winston +winthrop +wip wireframe wirey wirings witchdoctor witchdoctors +witchlight +witten +wizarding wizardy wk +wks +wm +woah +woburn +wolfi wolfish +wolfmen wolfshead +woodbow +woodbows +woodchip woodchips woodcut woodcutting woodlouse +woodquiver +woodquivers +woodsaw woodsmanship +woohoo woosh +worcester workarounds workbenches workcycle workshifts +worksite worldgen +worthington wraitheon +wreckages +wrentham wretchmother wrightii wristed +wuthering +wwi +wwii +wyatt wyld +wyndham +wynn wyrd wyrm wyrmling +wyrmlings wyrms x +xanax +xd xedra +xenobiologist xenobiology +xenology +xenomorphs +xii +xiii xiph +xiphe xiphos +xiuhpohualli +xiv +xix +xl +xlr +xm xp +xray +xs +xtp +xtreme +xvi +xvii +xx +xxii +xxx +xxxiii +xxxl +xxxx +y'know +y'see +yacare +yahya +yajna +yakov yandere +yankee yari yark yarker +yarmouth +yasna +yast +yasts yateveo +yateveos +yay yd +yeats +yeet +yeeted +yeller +yellers yellowjacket yelman +yemenis +yevamot +yevgeny +yi +yibbum +yiddish +ying +yisrael +ymir +yochai +yoda +yom +yoma yoroi +yoruba +yosef +yoshimi +younce +youngs +yourselfer yourselves youthful +youtube +youtubers yowl +yoyo yoyos +yr +yrax +yrs +yu yugg +yuggoth +yuggs +yugo +yugoslavia yukata +yuni +yusuke z +zachary +zack zahir zaibatsu +zambian +zamyatin zandcrawler +zandcrawlers zapback +zappa +zapplesauce +zapplesauces zaptor +zaptors +zara +zardust +zastava zbrojovka zeds zeindeer +zeindeers +zelda +zen +zend +zener zenshin zentai +zentais +zeus +zhang +zhivotnaya +zhuang +zia +ziggy +zigzaging +zimbabwean zincite +zionism +zionist +ziploc +zircaloy zoad zoads +zoe +zoey +zohar zolpidem zombaby zombear +zombears zombeaver zombeavers zombfrog zombfrogs +zombicide zombiespawn zombiethustra zombification zombified +zombify zomborg +zomborgs zombull zombullfrog +zombullfrogs +zombulls zoomorphic zoonotic zorc zorcs +zoroaster +zoroastrian +zoroastrianism +zostrianos zowlbear zowlbears +zpap +zs zubon +zubons +zucchettos zucchinis +zui +zulu +zuni zuniceratops zuul +zweihänder +zweihänders zweitimber +zweitimbers zygomaticus zzz +zâd +zé +âkankheyya +âkârânga +âpastamba +âranyaka +épée +épées +íqán +ötzi +āsvalāyana +česká From b7ff74e7f861101bc5e61cb9cb5fd4f448472f18 Mon Sep 17 00:00:00 2001 From: Qrox Date: Fri, 15 Mar 2024 20:57:01 +0800 Subject: [PATCH 27/48] Remove some incorrect words and words already in the default dictionary --- tools/spell_checker/dictionary.txt | 1479 ---------------------------- 1 file changed, 1479 deletions(-) diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index d399bb84e0392..71c38d4dcede9 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -11,10 +11,8 @@ abdu'l abdul abelard abenaki -aberrance aberystwyth abington -aboveground abra abraham abrahamic @@ -23,11 +21,6 @@ acadia acausal acceleratron acceleratrons -accessorized -accessorizing -acclimatization -accommodations -accuracies accurized acela acer @@ -40,23 +33,18 @@ acog acp acr acrocanthosaurus -acrostic acrylamide -actinic activatable acto acton -actuated acucar acushnet adam adams -adaptors adderall addison adele adhyâya -adiabatic adios adirondacks admin @@ -64,13 +52,11 @@ adorkable adrian adventism adventist -adze ae aegises aeglidae aelita aerarium -aerially aeroctinae aeroctinus aerofoil @@ -81,47 +67,24 @@ aetheric aetherically aetherspeaker aetherspeakers -affixes -affordability -affordably afrinagân afro -afterbirth -aftereffect -aftereffects -afterglow -afterimage -afterlife -aftermarket -aftermath -afternoon -afternoons -aftertaste -afterthought -afterward -afterwards -agape agawam -agelessness agender aggadic -aggregates agila agni agnus agra ahh -ahimsa ahistorical ahold aiden aimee -airgun airhorn airjack airjacks airsoft -airworthy aitareya ak aketon @@ -134,7 +97,6 @@ al alamosaurus alan alaskan -alate alates albanian albert @@ -142,29 +104,20 @@ alberta albertonykus albertosaurus albuterol -alchemic -alchemically alchemies alcott -aldosterone aldous aleesha -alembic alex alexander alexandra alexandria -alexandrite -alexandrites alfheim alford alfred algerian alhazred alice -alkahest -alkalis -alkyl alleghaniensis allen allfather @@ -172,18 +125,13 @@ allogenes allosaurid allosaurus allosauruses -allosaurusid -allotrope -alloying almeida alnico alnus alonso alquerque alt -alternators alumentum -aluminized alžbeta amad amalekites @@ -193,7 +141,6 @@ amargasaurus amatriciana ambedkar ambien -ambusher american americana americans @@ -207,8 +154,6 @@ amish amitâyur ammunitions amor -amortization -amphibole amt amur amy @@ -224,15 +169,11 @@ andover andre andrea andrew -androgynes -androgyny andy -anechoic anemoi anfo angas angela -angelfish angelina angkor anglerfish @@ -240,17 +181,12 @@ anglic anglican anglicanism anglicans -anglicized anglo angolan -anhydride animalistic animalskin animata animecon -animes -animist -animists anita anklebiter anklebiters @@ -259,9 +195,7 @@ ankylosaurus ann annaliese anne -annelids annie -anole anolis anomurans anson @@ -271,22 +205,14 @@ antarvasas anthony anthophila anthro -anthropomorphized -anthropomorphizing antiasthmatic anticonvulsant antiguan antihemorrhagic antimateriel antioch -antiparasitic antiparasitics -antipodes -antisemitism -antiseptics antivenom -antlered -antlion anton antwerp anugitâ @@ -296,32 +222,24 @@ anáhuac ao aoe ap -apace apastamba -apatosaurus apc apeirohedra apfsds aphantasic api -apiarist apis apocryphon -aposematic apostolorum app appalachian appalachiosaurus appetit -applet -appreciably apps april aprotic aqdas aquacultural -aquaculture -aquamarines aquidneck aquilops aquinnah @@ -330,15 +248,11 @@ arabella arabian arabic arachis -arachnophobia aralia aramaic -aramid -arapaima arapaimas arapaimidae arbalist -arborescent archdruid archeotech archie @@ -363,29 +277,21 @@ arlington armageddon armeniaca armenian -armet armguard armguards -armhole -armholes armitage -armorers armormaking armorsmithing -armrests aromantic arowana arowanas -arrester arrhythmically arrowflight arsenicum artemis arthouse -arthropod arthropodology arthur -artificer artisanals arturo arukh @@ -396,7 +302,6 @@ asatro asatru ascii asclepius -asexuality asgard ashburnham ashby @@ -409,23 +314,16 @@ ashvaghosha asia asian asimov -aspirants asrg asrgs assclown -assembler -assemblers assface asshat -assimilates -assimilator assistive asswagon asswipe -astrobiology astrolaspis astrolaspises -asymmetrically atchisson atf atgm @@ -436,25 +334,18 @@ atharvaveda athol atlanta atlantic -atlatl atlatls atm atmmonoid atmmonoids -atomically atompot atompots atra atrahasis -atrophic -attachable attaches attleboro attleborough -attune -attunement attunements -attuning atwixt atwood au @@ -462,21 +353,16 @@ aubrey audhumla audrey aug -augmentations augusta augusti augustmoon augustus -auk -auroral auschwitz austen australasia australian austrian autoattack -autoclave -autoclaving autodoc autodocs autogas @@ -487,9 +373,7 @@ autoloading autologous automagnum automagnums -automates automotives -autonomously autosave autosaves autoselect @@ -514,21 +398,17 @@ aw aww axedwarf axedwarves -axeman axemen axmc -axolotl ayer ayran ayuh azerbaijanian -azide aztec aztecs aztlan aztlani aśvaghosa -b b'av baal babadook @@ -541,13 +421,9 @@ bacigalupi backblast backfist backflip -backrest backroads backrub -backstep -backstepping backsteps -backswing backswings backtab backtrace @@ -566,8 +442,6 @@ baikonur bakelite baklavas balakrishnan -baldric -balefires balfour balisong balisongs @@ -577,8 +451,6 @@ ballistoceras balrog bandersnatch bandersnatches -bandolier -bandoliers bangladeshi bangor banksley @@ -598,16 +470,13 @@ bardiche barding bardings barebones -barghest barghests barklike barkskin barkskinned -barleycorn barlow barnhoff barnstable -barony baronyx barosaurus barotraumatic @@ -621,7 +490,6 @@ basecamp basecamps baselard baselards -baselines baseplate basidiocarp basiliscus @@ -630,13 +498,9 @@ basketweaving basotho basra bassline -basswood bastiat batcave -batching batlike -batrachian -batt battaglia battlehammer batts @@ -650,9 +514,7 @@ bbs bce bdsm bdu -beaked bearcub -bearish bearmantle bearmantles beartrap @@ -680,10 +542,8 @@ bellend bellevue bellingham belmont -bemoans benchlike benchtop -bendier benelli bengal beninian @@ -692,7 +552,6 @@ bennett bentley benzete benzo -benzoate benzodiazepine benzos benzoylmethylecgonine @@ -700,7 +559,6 @@ beowulf berakhot beretta berettas -bergamot bergmann bergson bering @@ -734,17 +592,11 @@ bhikkhu bhikkhuni bhutanese bianchi -bicephalous -bicolor -biddable bienkowski -bifocal biggun bigpack bikkurim -bileworm billerica -bimetal bindles binocs bio @@ -757,7 +609,6 @@ bioelectricity bioforms biofuel biofuels -biographic biohacker biohazard biohazardous @@ -777,7 +628,6 @@ biomancy biomantic biomaterials biomatter -biome biomechanic biomechanism biomes @@ -789,27 +639,17 @@ bioresponsive biosignature biosilicification biosilicified -biospheres bioterrorism biotracer bioweapon bioweapons -bipod bipods birchbark birchbarks -birdhouses -birdlike -birdshot bismol -bitts -bituminous -bivalve blackhawk -blacklists blackpowder blackpowders -blacksmithing blacksmithy blackstone blackwood @@ -819,25 +659,19 @@ blandford blech bleedingly blk -blocky blodplättar blodplättars bloodbank bloodborne bloodhunting bloodlust -bloodstreams bloodthirst bloomeries -bloomery -bloop blowback blr blt blts -blued bluefin -bluegill bluetooth blumenthal blust @@ -850,7 +684,6 @@ boardable boba bobburger bobburgers -bodkin bodybag bodycam bodyglove @@ -867,12 +700,9 @@ boer bogart boing bokken -bolas bolases bolded bolivian -bollards -bolls bolognese bolton bom @@ -884,7 +714,6 @@ bonelike boneplate bonespear bonespears -bookplate bookstrap bookstraps boomered @@ -893,7 +722,6 @@ boonie boop bootable bootcut -bootup boozeberry borbonicus borderless @@ -911,18 +739,12 @@ botticelli boudin bourgogne bourguignon -bovid -bowfin bowhunter boxborough boxcutter boxford -boxlike boylston bpm -bracer -bracers -brachiosaurus brackenwight brackenwights bradbury @@ -936,18 +758,14 @@ brainer brainiac braintree bram -brandishes brandon brazilian -brazing breacher breachhead -breadboard breadmaking breadseed breakrooms breathability -breatharians breathwork breece breedlove @@ -958,13 +776,10 @@ brewable brewster brhadaranyaka bridgewater -brigandine -brigandines brigit brigitte brihaspati brimfield -brimless brin brined bristol @@ -972,7 +787,6 @@ britain british bro broadhead -broadswords broadway brockton brodie @@ -998,45 +812,32 @@ bt bubbe bubblicious buber -bubo -buboes buckhorn buckland buddha buddhism buddhist buddhists -budgerigar budgetball bufo bufos bugfixes bugout -buildups -builtin bukharin bulette bulettes bulgakov bulgarian -bulkiness bullard -bullhead -bullheads bullpup bullseye buluotuo bulwer -bumbles bundahis bunkbed bunkering bunyan -burbles -burbot -burbots burdocks -burette burges buri burlington @@ -1045,10 +846,7 @@ burnett burpees burroughs burundian -butadiene buttercream -butternut -butternuts butthead buttplate buttstock @@ -1062,24 +860,19 @@ bátoriová bó bō bōjutsu -c c'mon cabanillas cadabra -caecilian caesar caesariense cafe cafes -cafeterias caffex caixo cal -calcifying caldwell cali california -californium callie callista callosum @@ -1087,8 +880,6 @@ callsigns calpay calpulli calrisean -caltrop -caltrops calvin calvinist camarasaurus @@ -1119,14 +910,8 @@ cannith canterbury cao caodaism -caparison capiche capoeira -capsicum -carabiner -carabiners -carapace -carapaces caravaggio caravaneer caravaner @@ -1135,7 +920,6 @@ carbonara carbs cardboards cardio -caret carfentanil caribbean carica @@ -1154,7 +938,6 @@ carpathian carroballista carroballistae carthage -cartilaginous cartoonishly carvalho carya @@ -1165,25 +948,15 @@ cass cassandra cassidy cassiopeia -cassiterite castable castanea casterbridge -casuals casull -catalyzes cataphract catarina catherwood catholics -cattail -cattails caucasian -causer -caustically -cavewoman -cavewomen -cavitation cb cbm cbms @@ -1201,25 +974,16 @@ cecaelia cecaelian celsius celtic -centric -centrigrade centrigrades centrosaurus -centrum ceo ceos cepa -cephalopod -cephalothorax ceratopsian ceratosaurus cerberus -cere -cerium -cervine cessna cesti -cestus cetera cetme ceylon @@ -1238,9 +1002,7 @@ chamberings chameleoflage chan channing -chaotically chapfax -chaplet chaplin charlemont charles @@ -1252,9 +1014,6 @@ chatham chatterly chaturanga chaucer -chausses -cheapshot -checkerboard checkmark checkmarks checkov @@ -1267,7 +1026,6 @@ chemtrails chen cherokee cheshire -chested chester chestpiece chestplate @@ -1289,19 +1047,14 @@ chilmark chinese ching chirality -chiropteran chirurgic -chitin -chitinous chitinworking chk chloe -chlorination cho chode chokepoints chol -cholla chonker chonkers chonkiness @@ -1313,7 +1066,6 @@ christianity christmas christopher chromatographer -chromed chromoelectric chu chuang @@ -1325,23 +1077,15 @@ chun chupacabra churchill cia -cichlid -cichlids cinchable cioran -circlet -circuiting circuitries circumnavigator -citrine -citrines citrusy civilizational claire clairsentience clairsentient -clambers -clanged clanker clanky clara @@ -1362,11 +1106,8 @@ cleopatra clickity cliffside climacus -climbable clinton clockspring -clockworks -clodhopper cloutie cloverfield clowness @@ -1376,23 +1117,13 @@ clymer cm cmes cmmg -cnidarian co -coagulating -coalescence -coalesces -coati -coatings -coatis cobray -cods cody -coeculus coelophysis coffeetable coffeetree cohasset -coifs coilgun coilguns coincidently @@ -1400,34 +1131,20 @@ coipo coipos col colada -colorant colrain columbia columbian combatives -comestible -comestibles comm -commendably comms communis -compacting -comparably -compensator compensators -complexly -composted compsognathus conan conanicut -concavities concealability -concealable -concentrator -concentrically concerningly condensor -conductively config confit confucian @@ -1439,40 +1156,24 @@ connie connolly connor conrad -consecrator -consistence const constabulario constantine -consumables -contexts -contorts -contrails -contraindicated contrapoints -controllability conway -coolants cooldown cooley copacabana -coprocessors coptic copyplate copyplates copywritten -cordage -corded cordlike -cored corinthian -corkboard cornac cornelius -corolla coronavirus corp -corporeality corvid corvids cory @@ -1485,8 +1186,6 @@ cosplay cosplayers could've coulson -counterchanged -countermine countertime countertop couters @@ -1500,7 +1199,6 @@ cqbr cqc crabapple crabapples -crablike cracidae cracklins craftable @@ -1508,22 +1206,15 @@ crafter crafters craftsdwarfship craftsfolk -craftswoman -craftwork craig cranston -crappie crataegus crc -creasing creeped -creeply creighton creped crewmember criniere -cripplingly -crispier crispr criss cristo @@ -1534,13 +1225,10 @@ croatian croc crocker crocs -crossbeams crossbuck crossfit crossguard -crosshair crosshairs -crosstie croupiere crowdfunded crowdfunding @@ -1561,7 +1249,6 @@ cryosleep cryptid cryptids crypto -crystaltender crêpes csa ct @@ -1571,31 +1258,21 @@ ctrl cuban cucina cuck -cudgels -cuirasses cul -cultivator -culturing cumberton cummer cummington cuppatech curarines -curassow curitiba currywurst currywursts curveballs -cushiony cuspated -cusses customizability customizable -customization -cutlasses cutthroater cutthroaters -cuvette cuvettes cuy cuz @@ -1611,13 +1288,9 @@ cyberninja cyberolympics cyberstalking cyberterror -cycad -cyclohexane -cyclopean cylindropuntia cyphers cyprian -cyprinids cypriot cyrillic cyrus @@ -1626,7 +1299,6 @@ czechoslovak czechoslovakia cú cúailnge -d da dabrowski dacian @@ -1644,7 +1316,6 @@ dambreakers damien dan dana -danceable dango dania daniel @@ -1668,8 +1339,6 @@ daspletosaurus datasheet datasheets datavault -datura -daubing dave davening david @@ -1681,7 +1350,6 @@ daypack daypacks daytona dayum -dazes dda ddt deadland @@ -1697,11 +1365,9 @@ debone debord debuff debuffs -debugged debutante decap decatur -decelerates december decker decss @@ -1709,18 +1375,13 @@ dedham dedicational deerfield defatted -deforming deg -dehydrator -dehydrators dei deinonychus deja dekker delany -deliquescent deliriant -demagnetized demai dementias demeter @@ -1730,7 +1391,6 @@ demining demir demisexuality denarii -denarius denatonium denis dennis @@ -1738,15 +1398,11 @@ dentata denver deon dep -deployable deployer -depressant -depressants deprotonated der derandomization deregulations -derivations dermatik dermatiks dernier @@ -1754,27 +1410,17 @@ derrida derring descartes descript -deselect -desiccate -designator desilo desmodontinae dessicant -destabilizes destreza -destructed -destructing det detune deuteronomy dev -devilling devon -devourer devs -dewlap dex -dextrous dhamma dhammapada dharmachakra @@ -1784,28 +1430,22 @@ di diamant diane dianne -diaspora dickinson didascalia diego diemaco dieselpunk -diffract -diffracting diggable dighton digimart -digitizes diliman dillan dilophosaurus dimensionalism dimensionalist -dimensionally dimestore dimethyl diminute -dimorphism dimorphodon dinai dinik @@ -1814,51 +1454,29 @@ dinolab dinomod dinos dinozoo -dioceses -diodes dioicus dionaea dionaeas dionne -diphenyl -diplodocus dipshit disanimate -disapprovingly -disassembles -disassembly -disburse discernable discoes -discolorations -disconcertingly -discontinuity discordia discordianism disdainer -dishware diskobolus -dislodges dispersor dispersors -dissector dissoluted dist -distaff distaves -distillate -distillations -distractingly -distributable -disulphide divemask divemasks -diverges divi dixon diy diyua -dizzied dj djiboutian dmitry @@ -1868,12 +1486,7 @@ dmso dna dobbs dodecagram -dodecahedron dodgeball -doffing -dogbane -doggo -doglike dogpark dogpile dojo @@ -1885,7 +1498,6 @@ domestica don'tcha donatello donburi -dongle doomseer doorstopper doot @@ -1902,13 +1514,10 @@ douchebag douglas doukhobor dover -downspout doyle doz dr -drabs draco -draconic dracula dracut draggers @@ -1927,7 +1536,6 @@ draught draughts draugr draugrs -drawknife dreamdross dreamdrossed dreamforged @@ -1938,11 +1546,7 @@ dreamstuff dreamt dreamwalker dresden -dress -dresses dreyfus -driers -drivetrain drm droid droids @@ -1950,10 +1554,7 @@ dromaeosaurid dromaeosaurus dromeosaur dropoff -droppers drotik -drowse -druidic druidry drylands dryosaurus @@ -1961,9 +1562,7 @@ dryptosaurus drywalled ds dsa -dubiously dubliner -ductile dudley duhring dulcis @@ -1977,8 +1576,6 @@ duncan dunderfuck dunn dunstable -duplicator -duplicators dustbowl dustbunny dustings @@ -1988,14 +1585,9 @@ dvm dvorak dvsa dwarven -dynamically -dynamos dyoplosaurus -dysfunctions dysmorphia -dysphoria dysrhythmia -dystopia dze dzvonko dâdistân @@ -2003,9 +1595,6 @@ döner dō eaa earbuds -eared -earmuff -earsplitting earthbag earthbags earthbones @@ -2023,13 +1612,10 @@ easton ebby eberhard ebola -ebon ebook eboshi ebr ecash -echinoderm -echos eckankar eco ecoterrorist @@ -2040,42 +1626,33 @@ edda eddie eden edgartown -edibility edison -editable edmonton edmontonia edmontosaurus edmund -edu -edutainment edward eggsac egremont egyptian egyptians -eidolon eiffel einiosaurus eisenhower eko elasmosaurus elbereth -elderberries eldridge -electrochemistry electrocutioner electrohack electrohacks electrokinesis -electrokinetic electrolaser electrolasers electrolyzer electrolyzers electromagnetics electromancy -electrophoresis electroreceptors elephantry elish @@ -2086,20 +1663,16 @@ ellie ellington elmer elmo -elongates -elopements elsa elsewheres elton elven elvenkind -elves elvira ely elytra emanuel embla -embrasure emerson emf emil @@ -2112,21 +1685,12 @@ empath emplate emt emts -emulates enactors -encumbering -encumbers ender endochitin -endolymph -endoskeleton -endpoint endymion -enervated -enervating enfield enflamed -enfranchisement engd england eniac @@ -2137,11 +1701,8 @@ enosh enspelled entree entrees -entropic enuma -envenom envenomations -envenomed envirocom eoc eocs @@ -2154,31 +1715,23 @@ epa ephesus epicuticle epicuticles -epistemology eppies -equestrian -equestrians equus ereshkigal ergometer ergometers -ergonomics eric erica erickson -erikson erin erith eritrean ernst -erotomania -eructing eructor eructors eruvin erving erymanthian -erythrocytes esapi esbi esbit @@ -2194,16 +1747,13 @@ espers esque esr essex -esters esther estoc estocs estonian etc -etches ethan ethel -ethereally ethiopian ettercap ettercaps @@ -2223,8 +1773,6 @@ eusocial eva evac evacs -evacuee -evangelized evelyn everburning everest @@ -2236,15 +1784,8 @@ evian eviscerations ew eww -exactingly excalibur -exchangeable -exchanger -excreta -excretions exfiltrate -exhorts -existentialists exo exobay exodii @@ -2253,24 +1794,15 @@ exoplanetary exosuit exosuits exp -expansionary -expansions explosivity exposé -expounds exsanguinated exsanguination -extenders -extensible exterminatron exterminatrons -extractors extradimensional extraplanar -extruder extruders -extrudes -extruding eyebags eyebot eyebots @@ -2279,17 +1811,11 @@ eyeholes eyelevel eyepatch eyepatches -eyespots eyestalks eyewear -f -fabricators fabritechnics facebook -facemask facemasks -faceplates -faceted facto faders fae @@ -2304,8 +1830,6 @@ fairhaven fal fala falcata -falleng -fallfish falmouth falx falxes @@ -2313,7 +1837,6 @@ famas familia familiaris famuli -fanbase fanfictions fanorona faq @@ -2322,13 +1845,9 @@ faravahar farland farmwork farrakhan -farrier -farsightedness farstep fascial fasciitis -fasteners -fastnesses fateh fatima fatuus @@ -2344,10 +1863,6 @@ feaver feavers feb february -fecundity -feedstock -feelgood -feints felton fema femboy @@ -2360,49 +1875,35 @@ fergus fermionic ferraiolo ferraiolos -ferrocyanide ferrofluid -ferromagnetic -fetlock -fetlocks feyn feynman fi fiancee fibercloth fiberoptic -fiddleheads fijian filenames fileset filesets filipino filk -filmstrip fimbriated -fimbriation findlay fingerhack fingerpick -finial finn -finned finnish fiona fior firebolt fireboots -firebrick -firebricks -firecannon firedragon firegloves firehood firehoods -firelighter firemask firemasks -firepit firesnake firestarter firestarters @@ -2410,16 +1911,13 @@ firestarting firestation firesuit firesuits -fireweed fisherwoman fishfolk -fishily fishlike fisk fitchburg fitzgerald flagration -flairs flamberge flamberges flamebreath @@ -2428,7 +1926,6 @@ flamesword flametouched flammenschwert flammenschwerter -flanged flaregun flareguns flarewhip @@ -2443,12 +1940,9 @@ flatjaw flatlander flatlanders flavio -flavorings -flays flechette flechettes flensing -fleshier fleshmender fleshmonger fleshwarp @@ -2456,38 +1950,24 @@ fleshwarper fleshwarpers fletched fletching -flexibility flightworthy flim flintknapping flockshot floorplan -floppies florida florunner -flours -floury -flowchart -flowcharts fluffies fluidic -fluidly -flummox -flummoxing -flump fluorescents fluoxetine flusteration -flyable fm fmj fn foamcrete foie foily -foldable -folktales -followup folsom fonzie foodborne @@ -2503,37 +1983,26 @@ foodpersons foodplace foon foons -footgear -footrest -forager forcefield forcette foregrip foregrips -forehoof forehooves -foreleg -forelegs -forestalling forestock forgemaster forgemasters -forklifts formosa forn -fortifiable foucault foundress fourtieth fowler foxborough -foxfire fp fps fracking fragaria framebuffer -frameworks framingham frances franchi @@ -2543,14 +2012,12 @@ frankenfurter frankenfurters frankenstein frankensteinian -frankensteins frankie franz fred frederic frederick freebore -freeform freerunner freerunning freetown @@ -2561,7 +2028,6 @@ freud freya friday friederich -friendface frigg frigger frisbee @@ -2569,13 +2035,11 @@ frisbees frisia frolov frolova -frontiersmen frostburn frostburnt frostnip frostnipped frostrimed -froths frybread fsp ft @@ -2589,12 +2053,9 @@ fudgy fudoki fulleroclathrate fullscreen -fumarole fumarolic -functionless fungaloid fungaloids -fungicidal fungideer fungivoral funnelcap @@ -2602,9 +2063,7 @@ furnitures fursuit fusillies fusilly -fuze fwoosh -g ga gabonese gadol @@ -2612,24 +2071,18 @@ gaelic gah gaia gainesville -gaits -galea galeae -galena galfrizowich gallagher gallimimus gallore galouye -gambeson gambesons gambian gameover gameplay gangbangers -gangling gao -gapes garand garde gardenling @@ -2640,17 +2093,13 @@ gargantua garghoul garghouls gargoyleosaurus -garishly garlander garlanders garou garous garrity garry -gars gary -gasbomb -gasgun gaskell gasmask gasmasks @@ -2658,10 +2107,7 @@ gast gastank gastonia gastro -gastrolith gastroliths -gastropod -gastropods gatling gatsby gau @@ -2678,17 +2124,13 @@ gelato gemini gen genderfluid -genderless genderqueer genecraft genemod genemoded -generalist -generically genghis geoffrey geokinesis -geometries george georgetown georgian @@ -2697,9 +2139,7 @@ gerald germaine germans gestae -gesticulates geta -getups gevuina ghanaian ghast @@ -2711,7 +2151,6 @@ ghoulodons ghâzkhud ghâzkhudians gi -gibbous gibson gideon gideons @@ -2728,36 +2167,27 @@ gitxsan giza gladii gladius -glaive glaives glamopolitan glareproof -glassblower -glassblowing glassteel glassworking -glazes glisteningly glitched glitchiness glitching -gliters glm glms glock glocks gloopy glooscap -gloppy gloria gloucester glowstick glowsticks glowy glug -glumly -glyceride -glyptodont glyptotherii glyptotherium gmo @@ -2780,8 +2210,6 @@ goops goopy gordee gordon -gores -gorget gorgosaurus goshen gosnold @@ -2799,17 +2227,14 @@ graboids gracie gracken grackens -gradation grafton grainville granatum granby grandkids -granivorous granth granville grapeade -grapevines graphene gras graspers @@ -2818,18 +2243,13 @@ gravelbag gravelbags gravesite gravyfield -grayed grayfield -grazer -greaseproof greatbow greatbows greatclub greatclubs -greatcoat greatsword greatswords -grebe grecko greco greek @@ -2842,7 +2262,6 @@ greg gregory grenadian greta -gridded grihya grimm grimoire @@ -2852,12 +2271,8 @@ grinny grodd grodds grokking -grommets groton groundcover -groundhogs -groundnut -groundsheet groveland grylls gryposaurus @@ -2891,7 +2306,6 @@ gunsmoke guodian gurkha gus -gushingly gustaf gustav gustavo @@ -2903,19 +2317,15 @@ gyges gymnocladus gâhs gümanik -h haba haber hackpro -hacksaws hacktivist hadith hadley hadoken -hadrosaur hadrosaurus haematopoiesis -haft hafted haggadah haha @@ -2924,20 +2334,16 @@ haitian hakama halakhic halazone -halberd -halberds haldeman halfling halfpike halfpikes halicarnassus halifax -halite halligan halloway halloween hallula -haltingly haman hamilton hammadi @@ -2948,13 +2354,11 @@ hamoed hampden hampshire hancock -handcraft handedly handers handguard handguards handgunner -handiness handjack handloader handloading @@ -2972,19 +2376,13 @@ haram haramaki hardass hardboiled -hardbound -hardcover -hardcovers -hardhat hardpoint hardpoints hardwearing hardwick harley -harmonically harold harran -harries harvard harvestable harvey @@ -2997,8 +2395,6 @@ hastur hatchetman hatchlings hatfield -hauberk -hauberks haverhill hawaii hawaiian @@ -3014,7 +2410,6 @@ hcfn hcn hdd hdpe -headbutts headgears headscarfs headshot @@ -3022,11 +2417,8 @@ headshots headstamp headwear headwrap -healthiness heartfires -heartiness heartlike -heartrate heartseed heartseeds heathrow @@ -3047,8 +2439,6 @@ heisenstein hel helen helena -helipad -helipads hellenism hellenist helliand @@ -3059,14 +2449,10 @@ hellspawn helpdesk helsing hema -hematite hemolymph -hemostatic hemostatics hendelson -henge herbert -herbivorous herbology hermanos hermes @@ -3081,17 +2467,13 @@ heteronormative hev hevel hevels -hexagons hexamine -hexapod hexogen heya -hg hgc hiccupped hidebehind hidebehinds -hider hideworking hidey hiep @@ -3116,7 +2498,6 @@ hivemind hk hmg hmgs -hmm hmmm hmtd hnefatafl @@ -3145,8 +2526,6 @@ holo holocrons holosuite holstein -holstered -holstering holtzman holybook holyoke @@ -3156,7 +2535,6 @@ homebrew homebrewed homebrewer homebrewing -homemaking homeplate homeworld homewrecker @@ -3165,11 +2543,9 @@ homme homovorus homullus homunculi -homunculus honda honduran honeygold -honker honorato honshu hoodie @@ -3190,7 +2566,6 @@ hotcut hotcuts hotkey hotkeys -hotplates hotties hotwire hotwiring @@ -3218,7 +2593,6 @@ huarochirí hubbardston hud hudson -hued huey hugentskis huggability @@ -3226,14 +2600,12 @@ huggable hugo huitzilopochtli huizache -hulled humaniform humaniforms humanlike humvee humvees hungarian -hunkers hunllef huntington huntz @@ -3245,23 +2617,15 @@ hwp hwps hyades hyde -hydria hydrias hydrocracking -hydrogel hygieia -hygrometer -hygroscope -hygroscopes -hygroscopic hygroscopy hylian hyolith hypacrosaurus hyperaggressive hyperalgesia -hyperboloid -hyperboloids hypercloud hyperdense hyperdimensional @@ -3270,12 +2634,9 @@ hyperenhanced hyperfocus hypergeometric hyperion -hypermedia hypervelocity -hypervitaminosis hyperweave hypno -hypochlorite hypogaea hypovolemic hypsiphrone @@ -3295,7 +2656,6 @@ icelandic ichaival ichaivals ichi -ichor ichthyostega ichthys ick @@ -3311,112 +2671,68 @@ ierda ierde ifak iff -ignitable ignus igor ii iii iiia ikea -illegibility illinoinensis -illuminance -illuminator ima imager imagers imbuement imes immanuel -immersions immersive -immobilization -impaler impalers inactionable inanna -inbetween inbox inc inca -incapacitation -inclusiveness incompetencies -incongruously -incorporeal -incredulously -indemnifying indian indiana -indiscernible indonesian -inductance -industrially -ineffectively -inertially -infamously infantrywoman infectees infeme infemes -infinitree -infinitrees influencer influencers infolink infosec inglis ingram -inhalant inhalative injectable -injest -inlays innawood -innawoods innervision -inquiringly inscribable -insecticidal insectoid inserter -insignias insta instagram installable -instants -instated instillers -insufflation insulative int -integrally intel -interchangeably -interconnects interdictor interdimensional -interjected interjoined interlaid interlayer -intermixed intermodal internets interpol -interwar -intimidatingly intolerances -intone -intones intoxications -intoxicative intradimensional intro introspectionist inuit -inulin -inverts invlets iotv ip @@ -3436,10 +2752,7 @@ irishman irising ironfist ironshod -irradiance irradiants -irremovable -irritants isaac isekai ish @@ -3453,16 +2766,13 @@ islamic islay isohypsa isohypsas -isopod israeli israelites iss issi -issuer italian italiana itas -itchiness ithaca iv iwi @@ -3470,13 +2780,11 @@ ix izchak izhevsk izzy -j jabberwock jabberwocks jacare jackson jacksonville -jackstraws jacob jacques jadir @@ -3500,8 +2808,6 @@ janine january japanese jason -jawed -jawless jax jayden jcp @@ -3516,7 +2822,6 @@ jennie jennings jeremiah jerome -jerrycan jerrypack jerrypacks jerusalem @@ -3536,7 +2841,6 @@ jian jim jimbob jing -jirt jirts jittering joab @@ -3544,14 +2848,10 @@ joanne joe joes johansen -johnnycake johnson johnstone joinee joinees -jointer -jointing -jolter jon jona jonah @@ -3559,7 +2859,6 @@ jonas jonathan jones jordanian -jort jorts jose joseph @@ -3571,7 +2870,6 @@ jotunn jotunns jovian joyce -jpg jr json jsp @@ -3588,7 +2886,6 @@ july jumpstart june junglefowl -junipers juniperus junkfood jupiter @@ -3600,7 +2897,6 @@ justo justus jötunn jünger -k k'iche kabura kabuto @@ -3637,7 +2933,6 @@ kariginu karita karo karsk -kart karting kasaya kasayas @@ -3654,11 +2949,9 @@ katty katyusha kaushîtaki kazakhstani -kcal kcalories keach kebra -keffiyeh keffiyehs keikogi kel @@ -3675,7 +2968,6 @@ kentucky kenyan kerblam kertzer -ketene ketokhila ketubah ketubot @@ -3686,7 +2978,6 @@ keybind keybinding keybindings keypress -keyring keyrings kg khadia @@ -3699,7 +2990,6 @@ kia kickboard kickboards kickboxer -kickstand kiddushin kieran kierkegaard @@ -3710,9 +3000,7 @@ kilij kilijes killophant killophants -kilns kilroy -kilted kinbot kinderling kinderlings @@ -3732,9 +3020,7 @@ kj klapaucius klompen km -knacks knapp -knapping kneepads knick knifehand @@ -3743,12 +3029,9 @@ knifeshot knifey kniga knockback -knotweed knotwork knowium knuckleball -knuckleduster -knuckledusters knuth koans kobe @@ -3760,7 +3043,6 @@ kohler koi koji kojiki -kokanee komodo kompot kool @@ -3796,7 +3078,6 @@ kssht kufi kufic kuji -kukri kukris kullavagga kung @@ -3809,7 +3090,6 @@ kurukshetra kuwaiti kyrgyz kâu -l labbit labbits labcoat @@ -3820,9 +3100,7 @@ lacan laceless lacey lachesis -lackadaisically lacroix -lactobacillus lactofermentation laemanctus laevateinn @@ -3837,8 +3115,6 @@ lajatangs lakeshore lakeville lambeosaurus -lamellae -lamellar lamé lamés lan @@ -3852,7 +3128,6 @@ landshark landstreicher lanesborough lankan -lanthanum lao laotian laozi @@ -3869,8 +3144,6 @@ lategame latin latina latrunculi -latticed -lattices latvian laura laureth @@ -3878,9 +3151,7 @@ lautrec lavey lavochkin lawd -lawnmowers lawrence -lb lbs lcd lcp @@ -3889,24 +3160,18 @@ le leadworks leah leanne -leaper leatherbacked leatherbound leathercraft -leathercrafters leathered leatherface leatherwork leatherworking -leavening lebanese lecter -lectern leds leen -leers lego -legume legwear leibowitz leicester @@ -3917,7 +3182,6 @@ lemacto lemactos lemat lemmon -lemony lemure lenin leninism @@ -3936,7 +3200,6 @@ leroy lessers lester lestrade -leverages leverett levergun leverguns @@ -3955,19 +3218,15 @@ lgr liam liang liberian -libertarianism libyan lich liches -lidless liechtensteiner lifecycle lifeforce lifeform lifegiver lifegivers -lifelessly -lifes lifestraw lifestraws lightbringer @@ -3979,31 +3238,22 @@ lightsabers lightshow lightstrip lightstrips -liker likvidator likvidators lil lila lilypad -lilypads lima limbed -liminal -limply lincoln linda lindbergh linux lisa -listlessly -lithely -litheness lithuanian littleton -liturgies liu livestream -livingrooms liz lizardfolk lizardlike @@ -4016,11 +3266,8 @@ lmes lmg lmgs lmoe -ln -loadings loadout loadouts -loamy lobotomizer lobotomizers lobsterman @@ -4038,9 +3285,6 @@ lolita london longarm longbowmen -longear -longhair -longhouse longmeadow longnose longsword @@ -4048,11 +3292,9 @@ longswords looseleaf lootables lopers -lopes lorekeeper lorence lorentz -lorica los lottie lou @@ -4072,7 +3314,6 @@ ltd lu luca lucas -lucerne lucian lucy ludd @@ -4087,13 +3328,11 @@ luliya lulo lulos lumberjill -lumberjills lumbermill luna lunchbag lunenburg lunes -lungfish luo lupercalian lutefisk @@ -4103,7 +3342,6 @@ luty luxembourger lv lvl -lx lycra lydia lyndon @@ -4115,7 +3353,6 @@ lythraceae lytton lz lâ -m maasai maaser maasrot @@ -4149,7 +3386,6 @@ madison madisonville mag maga -mage magellan mages mageshield @@ -4175,7 +3411,6 @@ maimon maimonides maine mainog -maintainers mair maitrayani makarov @@ -4196,15 +3431,11 @@ maldonado malian malignalitaloptereosis malignance -malleability mallick malsumis maltese -malting malus -man'o'war manafusion -manageably manatouched manatricity manball @@ -4233,16 +3464,12 @@ manoomin mansfield manti manu -manufactorize -manufactory manurhin manwich manwiches maori mapgen -mapper maracuya -marasmus marblehead marconi marcuse @@ -4261,7 +3488,6 @@ marsanes marsec marshallese marshfield -marssec martell martha martians @@ -4282,7 +3508,6 @@ massproduced mastercut masterkey masterkeys -mastiffs matcha matchhead materiel @@ -4300,15 +3525,11 @@ mauritanian mauser mausketeer mausketeers -mausoleums mavka mavkas max -maximally -maxwellian mayaheri mayaheros -mayapple mayfield mayfieldi maynard @@ -4327,8 +3548,6 @@ mdf mdrx mealgrub mealgrubs -mealworm -mealworms meathook meatshield mech @@ -4351,9 +3570,7 @@ megachettes megacity megacorporation megacorporations -megafauna megafaunal -megalith megamart megastore meghan @@ -4369,7 +3586,6 @@ melissus melitzanosalata melony melrose -membranous memes memoriam memphis @@ -4378,7 +3594,6 @@ mendon menelik menemen meng -menorah menpo mentos merc @@ -4389,21 +3604,15 @@ merriam merrimac mertensia mesenterium -meshwork meskwaki mesoamerica mesoamerican mesoamericas mesopotamian -messily meta metalcutting metallics -metalloid metalsmithing -metalworker -metalworkers -metalworking metamagic metamaterial metaprolol @@ -4412,16 +3621,12 @@ meth methacola methamphetamines methodist -methodologies methothexazole methuen methusalah -metrology metzia meusoc mexican -meztia -mezuzot mgl mia miami @@ -4442,7 +3647,6 @@ microcontrollers microfusion microgenerator microgenerators -microgram microjet microlab micromonies @@ -4453,7 +3657,6 @@ microportals microreactor microskirt mictlān -midden middleborough middlefield middlesex @@ -4472,7 +3675,6 @@ mikagura mikhail miki milan -mildewy miley milford milinda @@ -4496,8 +3698,6 @@ mindhands mindrender mindrenders mindstone -mineable -minesweeper minhocao minhocaos minifreezer @@ -4519,7 +3719,6 @@ mino minotaur mins mintonette -minuteman miriam mirkwood mirrorshades @@ -4528,11 +3727,7 @@ misc mises mishnah misinter -misjudgements -misperceive misprogram -misreadings -misshaped mississippi mit mithraic @@ -4540,7 +3735,6 @@ mithraism mithril mitre mitzvot -mixup miyagi miyamoto mj @@ -4554,22 +3748,15 @@ mma mmm mo moar -moas mobbings mobius modded modding -modernday -modifier -modifiers -modularity -modulations moed mohawk mohawks mohegan moism -moisturized mojave mojocycle mokorotlo @@ -4587,9 +3774,7 @@ monica monoco monocrystalline monogyna -monomeric monometal -monomolecular monopod monroe monroeville @@ -4605,17 +3790,14 @@ moodswing mooks moonflower moonflowers -moorhen moosek moraceae morales moravian mord -mordant moreau moreauburger moreauburgers -morels morgan mori mormon @@ -4644,19 +3826,12 @@ mossling mosslings mostlike motd -mote -motes motorhead motorpool motorsports -motzah moulinet -mountable -mountings mourchida mouthgear -mouthpart -mouthparts movesets movimiento moxies @@ -4664,7 +3839,6 @@ moxphore moyer mozart mozilla -moʻolelo mp mph mr @@ -4673,31 +3847,23 @@ mre mres mri mrs -ms msv mtar muay mudcrack mudge mudora -mudskippers mufasa -muffs mugwort muhammad -mulching mulder muldoon mulroy multi multiclean -multicolor multidrop -multilayered -multimeter multimeters multiplayer -multiplier multipool multipronged multitool @@ -4707,7 +3873,6 @@ multiverse mumbo munchings mundaka -mundanity muppet murderball murderballs @@ -4716,7 +3881,6 @@ murdersaws muriatic musashi musculoskeletal -muskellunge muslim muslims muspelhiem @@ -4724,7 +3888,6 @@ must've mustela mutagenically mutagenicity -mutagens mutus muzzleloaders mw @@ -4737,21 +3900,15 @@ mycoid mycorrhizal mycus myers -myomer -myrmidon -mythologically mâdhyandina mânûskihar māori -n -nacreous nagamaki nagant naginata nagoya nahant nahuatl -naiad nailboard nailboards najah @@ -4792,7 +3949,6 @@ narayana narco narnian narragansett -narry nasa nasks nasties @@ -4813,13 +3969,11 @@ nazis nbc nda neal -nearsightedness nebraska necc necco neccos neckbeard -neckwear necro necronomicon necrotizing @@ -4837,7 +3991,6 @@ nellie nema nemo neo -neonate neondorthall neotenic neotheropod @@ -4878,7 +4031,6 @@ newburyport newfoundland newport newsbots -newsweekly newtonian nfa ngon @@ -4901,7 +4053,6 @@ nighter nighters nightgaunt nightgaunts -nightlights nightshifter nightsight nightstalker @@ -4916,8 +4067,6 @@ nikolai niles nimbelemnite nimbelemnites -nimbleness -nimbler nimue nina ninhursag @@ -4925,7 +4074,6 @@ ninjutsu nipâta nishan niten -niter nitron nitrox niven @@ -4933,25 +4081,18 @@ nixon niño nmr nobel -nocking -nocks nodachi nodosaurus noetically nogueira noir -noisiness nom nomex -nonaggressive nonbinary -nonpareils nonprolific nonrevealing nonromantic nonsedated -nonstandard -nonuniform nonvalid nonverbally noob @@ -4998,7 +4139,6 @@ nudicaulis nuevo nuh num -numbingly numbnut numpad nunez @@ -5015,14 +4155,9 @@ oakham oakland oakley oates -obovate obrez obscura -obsoleted -occultism -occultists oceania -ocher oct octavia octo @@ -5031,7 +4166,6 @@ ocularium oculariums odie odin -officiants officinale offputting offroad @@ -5042,7 +4176,6 @@ ofudekasi ogam ogã ohio -ohms ojibwe ok okie @@ -5050,8 +4183,6 @@ okinawan olaf olam olcott -oleaginous -oleoresin olieribos oliver olivia @@ -5063,7 +4194,6 @@ olympics omani omni omnicellular -omnivore omts onboard ondua @@ -5075,17 +4205,14 @@ ons onsite ooarai op -opacity opalbinia opalescently opel openable -openair opengl openingly ophanim ophanims -optimality orc orcs ordinator @@ -5099,14 +4226,11 @@ ork orlah orlando orleans -ornately ornithomimid ornithomimus orpheus orphic -orrery orson -orthogonally orwell oryctodromeus os @@ -5114,12 +4238,10 @@ osashizu osb oscar oscars -oscillated oscillococcinum osha osho osiris -osteoderm osteoderms osteoglossidade osteokinesis @@ -5138,70 +4260,50 @@ otomo otten ouija outdoorsman -outgrowths -outperforms -outputting ovata ovcharka overaccelerate overboots -overbore -overbuilt overclock overclocker overclocks overdosage overdrinking overengineered -overexertion overgloves -overgrowth overhood overhoods overmap overmaps overpenetration -overpressure overqueen overqueens oversaturates oversharing overshirt -overshoes overstimulator oversuit oversuits -overswing overswinging -overtaxing -overtop overwatch -ovipositor -ovipositors -ovoviviparous owchie owlbear owlbears oxbridge -oxidant -oxidants oxycodone oxygenator oyasama oz -p pablo pachira pachycephalosaurus pachyrhinosaurus -packable packmate packmule packstone pacu pacus pahlavi -painkilling paintballs pakistani palaeoanthropology @@ -5209,8 +4311,6 @@ palauan paleozoic palestinian palmero -palpably -palpitate pam panaceii panaceus @@ -5224,7 +4324,6 @@ pankration panoplosaurus panopticonic pansexual -pantries pao paolo papalomeh @@ -5246,8 +4345,6 @@ parasitoids paraskara paratronic paratronics -paratrooping -parboiling paribhashasutras paricutín parinibbāna @@ -5255,21 +4352,14 @@ paris parisishta parkour parotoid -paroxysms -parries -parrying -parthenogenetic partygoer partygoers parvas passcode passionfruit pastafarian -pastes -pasteurize patagonia pathfinding -patios patrick paul pauldrons @@ -5286,20 +4376,15 @@ pdw pdws pe'ah peabody -peacoat peanutbutter pearlescent pearlman -pebbled -peccary pecorino pedipalps pedro pekmez pelmeni pembroke -pemmican -penalizes pencak penetrator penetrators @@ -5307,21 +4392,15 @@ pennsylvania pennywise penobscot pentaceratops -pentagonal pentecost pentecostal pepeha pepperell pepto -peptone -percents percy -perforator perforators periapta periaptas -peridot -peridots peripheric permadeath permutator @@ -5330,7 +4409,6 @@ perplexion perseus persian persica -perturbing peruvian pesachim pete @@ -5341,64 +4419,45 @@ petos petpack petpacks petrichor -petrification -petrochemicals peytral pf pfft pfw ph -phalange phaser phavian phd pheidippides -phelloderm phelloderms phelps -phenotypes -phenotypic -phenotypical -phenotypically philaret philip philips phillip phillips phillipston -phonological phonologies -photochemistry photochromic photodiode photokinetic photonics -photophore photoshopped photoshopping -photosynthesize phrygian -phthalocyanine -phyle phyllostachys -physicochemical piby picarelli picatinny picchu pickelhaube pickelhauben -pickerel -pickerels pickhead pictograms -pictographic pide pierre pietta piezomechanical pilate -pileus pina pinecone pinecones @@ -5409,11 +4468,8 @@ pinnata pinot pinout pinus -pinyin pipebomb pipebombs -pipettes -pipework pipeworks pippa piraiba @@ -5421,27 +4477,21 @@ piraibas pisces pissbrain pistacia -piste pitbull pitchwoman pittsfield pixelates -pixelation pixeled pizzaiolo pizzaland pk pker pkers -placidly plainfield plainville -planar -planer planetside plano plantkin -plantlike plasticky plastron platemail @@ -5449,16 +4499,13 @@ plateosaurus platings plato platt -playable playstation playstyle playthroughs plc pleco plecos -plectrum pleistocene -plesiosaurus plink plinker plinking @@ -5479,50 +4526,30 @@ polaroids polcom polearm polearms -poleaxe -poleaxes poleyns -pollinator polyaramid -polycarbonates -polycrystalline -polyhedrons -polymerization -polymerized polymorph polymorphed polypous polysexual -polytheistic -pomelos -pomes -ponderously pontius -pooka popol populifolia populus popup popups porkbelly -porkpie porrifolius -portability portland portmaster -portuguese pos -postcolonial posteriori posthuman potamotrygonidae -potboiler potentiates potsy potus pouff -poultices -pouncer pouncers powell powerlifting @@ -5531,7 +4558,6 @@ powerplant powerplants powerpoint powerthirst -powertool ppa ppavattana ppe @@ -5541,73 +4567,39 @@ ppsh pr prado pragnâ -prancer prasna pratchett -prayerbook prc pre preapproved precisionist precolumbian precombined -preconditions -precooked predatorially -predatorily -predefined -preferentially -prefixes premade premeasured -preminiscent -premix preoptic prepended prepnet prepper preppers -prequel -prequels -presaging presbyterians -prescriptures pressin prev -preventer -pricier -prickling -prigs -primeside princeton principia priori pritchel pritchett -privet priya -prizefights -proc -procedurally prochilodontidae -procompsignathids produkt -proficiencies -proficiently -profusive prog -propellants -proprietary -proprioception propyl prosaurolophus -protectiveness protege protennoia -prototyping -protuberances proudhon -provence provincetown prozac prs @@ -5618,7 +4610,6 @@ pryce pseudocode pseudolimbs pseudomagical -pseudopod pseudopods pseudothelphusidae pshht @@ -5629,64 +4620,39 @@ psionics psl psu psychiatrically -psychochemical psychokinetics psychopharmacological psychoreactive psychrophile pt -pteranodon ptr -pts ptsd -puckish puebla puerto -puffball -puffercoat pufts puker pukers -puller -pullers -pulping -pulsate -pulsates -pummels pumpkinhead -pumpkinseed pundarika punica punicoideae punjabi -pupating puranas -pureeing -purifiers purim -purrson -purslane purviews pushmower -pussywillows -putrescent pwn pyrenean pyrenees pyrokinesis pyrokinetic pyrolusite -pyrolysis -pyrometer -pyrophoric pyroportation -pyrotechnical pyrrolidone pyrus pâda pâramitâ pātimokkha -q qatari qdss qiang @@ -5696,23 +4662,16 @@ qolastā qr qt quadcopter -quadcopters -quadrilateral -quadrupedal quaker quakers quan -quantification quarterpanel -quarterstaves quebec quechua queenright queensland -quells quercus querecho -quern quesadillas quetzalcoatlus quickdraw @@ -5720,30 +4679,21 @@ quickheal quickheals quickload quicksave -quiescent quillbag quillbags quincy quinn -quipping quixote quran -qwerty -r rabba -rabbinic -rabidly racecar rachel racketus rad -radially radiants radiobeacon radiogenic -radioisotopes radiophile -rafflesia rafflesias raggiana ragnarok @@ -5767,16 +4717,11 @@ ramin ranade randall randolph -randomize -randomizes -rangehands raoul -raptorial rashguard rashy rastafarian ratatosk -ratlike rattigan rattigans rattus @@ -5798,20 +4743,11 @@ rda rdb rds rdx -reachability reactively -reactivity readme -reagents reaim realtime -reamer -reamers -rearwards -reassembly -reasserts reavers -rebalanced rebalancing rebar rebars @@ -5822,29 +4758,16 @@ rebrands rebreather rebreathers rebreathing -recaptures receeds rechamber -rechargable -recharger rechargers -recirculation -reclines -recognizeable recontoured recraft recrafted -recuperator recuperators -recursively -recurve recutita -recycler redaxe -redcaps -redden redekopp -redesigns redhawk redsmith redsmithing @@ -5852,81 +4775,52 @@ reena reenabled reenactor reenactors -refeeding -referential -refillable -reflexively -reforging refuelable regenerators reggie regia regin rego -regrows -regurgitates rehobeth rehoboth rehydrated rehydrating rehydration reimagining -reimpose -reinstalling -reisendre rekhter reliables reloadable -reluctancy remediated remington -remingtons remodulator remy rended -renderer renfaire renfaires renfield renfields -rennaisance -rennet reno -repacked -repairable repairwork replow represa reprime -reprises -reptiloid reptoid reptoids repurpose repurposed repurposing -requisites rerebraces rerio reroll rerolling res -resealable resinosa -resinous resize -resizing resmelt -resonances resublimed -reticle retrodays reuben reversi -revitalizes -revivification -revivified -revivifying revulses rex rexes @@ -5937,12 +4831,9 @@ rgb rh rhabdomyolysis rheims -rhizomes rhode rhodes rhodians -rhodonite -rhombus rhy rhytidome rhytidomes @@ -5962,23 +4853,18 @@ rico rideable rideshare ridgeback -ridged riesling riftwalker riftwalkers riggings -rightmost rigida rigveda riley rinded ringworld rio -rioter ripley -ripstop risali -rituais riverstone rivos rivtech @@ -5998,12 +4884,10 @@ robogun roboguns robotfindscatan robotfindskitten -robustly rocco rochester rockbolt rockclimbing -rockfeeder rockford rockland rockport @@ -6011,7 +4895,6 @@ rockwheel rockwheels rocuronium rodding -rodger rodgers rodriguez roguelike @@ -6031,12 +4914,8 @@ romans rome romero roncone -roofless roosevelt -rootlike ropemaking -ropers -ropy rosa rosaceae roscoe @@ -6073,12 +4952,9 @@ rudolph rudra rudy rudyard -rufus ruger ruggedized ruleset -ruminant -ruminants runtime rupp rushmore @@ -6099,7 +4975,6 @@ ryūsei râmânuja régime rōnin -s s'mores sa sabalo @@ -6107,8 +4982,6 @@ sabalos sabaton sabatons sabbâsava -saboted -sabots saccharification saccharum saddharma @@ -6120,25 +4993,17 @@ safemode safepoint safewords safinatun -sagely sagrada saintess saipan sako salca salem -salicylate salisbury salix -sallet -salsify -saltire saltpan -saltworks salus salvadoran -salvager -salved salvor salvors sam @@ -6152,7 +5017,6 @@ samoan samopal samoyed samoyeds -samsara samuel samuels sanatsugâtîya @@ -6173,7 +5037,6 @@ sanskrit santa santo santos -sapience sapiens sapiovore sapra @@ -6191,7 +5054,6 @@ saritania sarlacc sarma sarna -sarracenia sarracenias sartre sas @@ -6201,16 +5063,13 @@ sashimi sasquatch satan satapatha -satirizes sattler saturday saturn sauer saugus -saunters saurolophus sauropelta -sauropod saurornitholestes saurulophus sautee @@ -6226,13 +5085,10 @@ saxons sbl sbr sca -scabbards -scalable scalefolk scammer scandinavia scandinavian -scatterer scav scavs scba @@ -6249,12 +5105,9 @@ schwarz sci scientology scifi -scimitars scincidae -scions scissorlimbs scituate -sclera sclerotin sclerotized scofield @@ -6269,15 +5122,11 @@ scp screecher screenshot screwdriving -scruffs scrying sct scutcher scutchers -scute scutellosaurus -scutes -scuttles scx scylla sd @@ -6286,14 +5135,12 @@ sdl sdp se sealab -sealable sealabs sean seances seatbelts seater sec -secretively secubot secubots seder @@ -6302,11 +5149,9 @@ seedshapers seekonk seelie segmentata -segmentation segway seinerweisen seldomly -selectable selfie semirural semitangible @@ -6319,24 +5164,16 @@ september serbian serbu serdyukov -serendipitously serendipnol serendipnols -seriema serra serrano -serrate -serration serrulata -servitor -servomotors seth seward seweranha seweranhas -sexten sextus -sexualities seychellois seyfert sf @@ -6345,8 +5182,6 @@ shabbat shabriri shacharit shaddam -shadowbox -shadowboxing shadowcaser shadowcat shadowcats @@ -6367,7 +5202,6 @@ shang shania shanking shantak -shantytowns shaolin shapechangers shapeshift @@ -6402,7 +5236,6 @@ shenandoah sheni shenk shep -sheperd sherborn sheri sherlock @@ -6430,21 +5263,16 @@ shitface shithole shitshow shitstorm -shitstorms shitweasel -shivs shlip shlop shockwaves -shoddily -shoddiness shoggoth shoggoths shogi shoki shootable shopkeep -shortfalls shorthair shortnose shoryuken @@ -6457,21 +5285,17 @@ shotshell shotshells should've shoulderblades -shovelhead shrewsbury -shrieker shriekling shrieklings shroom shrooms -shrubby shrubland shuchan shui shulchan shunryū shutesbury -shutterbug shuttlecraft shuttlepod shâyast @@ -6480,7 +5304,6 @@ shōtōkan siamese siats siberia -sibilant sicc sicp siddhartha @@ -6489,16 +5312,13 @@ sidhe sidhu sidr sierpinski -sieves sig -sightedness sigils sigurd sikand sikh sikhism sikorsky -silage silat siloed siloing @@ -6523,7 +5343,6 @@ singaporean singh singhs sinously -sintering siobhan sioux sippy @@ -6538,31 +5357,19 @@ skeena skeletonized skillset skinfolds -skirmisher skitterbot skitterbots -skittishly sklyarov sks -skulduggery -skulker skullgun skullguns skybridge skye skyglass skynet -slackness -slaked -slamfire -slapjack -slatted slavic -sleeker -sleeved slenderman slimed -slimes slimewave slitted slovakian @@ -6570,9 +5377,6 @@ slovenian slowfall slr sludged -sludgy -sluggishly -sluggishness sluglike slurriless smallmouth @@ -6587,18 +5391,13 @@ smgs smithing smle smokable -smokegun -smoothbore smoothbores smoots smr smythe snakelet snakelets -snapback -snappier sni -snick snikt snotgobbler snotgobblers @@ -6610,39 +5409,30 @@ socketing socom soergelia sof -softcover softcovers -sojourner sokoban solaris solarpunk solarpunks -solderers solderless -soled solera soloveitchik somali -somersault somerville sommat somniferum sonia -soother sophia sophie sopmod soren -sorrowfully sotah -soteriological souffles soulbinder soulfire soulrend soundpack soundscape -sourness southampton southborough southbridge @@ -6654,32 +5444,21 @@ soypelusa sp spacebar spaceborn -spaceflight -spacers spacetime spadelike -spall spalling spanish sparam -sparker sparkers spartans -spasmically spasming spazzing spearcat -spearfisher spearfishers speargun spearguns spearhand -spearman spearmen -speciesism -spectre -spectrographs -spectrophotometer speedloader speedloaders speedo @@ -6695,7 +5474,6 @@ spetsnaz spezi sphenocorona sphenocoronae -spheroid sphynx spideer spideers @@ -6704,25 +5482,15 @@ spiderlike spiderling spiderlings spikey -spikier -spile -spindles spined -spinnerets spinosaurus spinwheel spinwheels -spitter spitzer spiw spiws splashproof -splicer -splinting -splintmail splorch -splosh -spoilage spoked spokeswyrm spongey @@ -6734,7 +5502,6 @@ sporks sporter sporulating spr -spraining sprayable spraypainted spraypainting @@ -6748,12 +5515,8 @@ sproglodyte sproglodytes sprouter sps -spurge spx -squadmates squamish -squeezable -squiggling sr src srcf @@ -6766,11 +5529,9 @@ stablization stackable stan stanag -standalone stanisław stanley stapeldon -starer starhawk starship starships @@ -6778,15 +5539,10 @@ stat staticskin statisticality staunchable -staunching -staunchings std -steadfastness steampunk steelshod steeltoed -steeping -steerable stego stegoceras stegosaurusfindsrobot @@ -6798,7 +5554,6 @@ stenonychosaurus stens stephen stephenson -sterilizes steve steven stevens @@ -6807,9 +5562,7 @@ sti stig stillwater stimpack -stimulative stimulators -stimulatory stinktoad stinktoads stinkyface @@ -6819,7 +5572,6 @@ stirges stirling stirner stockbridge -stockrooms stokey stompers stompy @@ -6833,10 +5585,7 @@ stoneling stonelings stoners stoneskin -stook stooking -stopcock -stoppered storable stormcaller stormcallers @@ -6856,7 +5605,6 @@ stoughton stovetop stovetops str -straitjacketed stranglethorns strategize stratoscomm @@ -6875,52 +5623,39 @@ stross strugatsky struthiomimus stryker -stubbier stungun stuntongue stuntongues stupidass sturbridge -sturdily -sturdiness -sturgeons stutterstep stutterstepping stylette styracosaurus styx -subcompact subcutis subdermal subgenius subgun subguns subj -sublethal sublimb submachine submachinegun submap submaps submenu -submersed -suborder subplanar subplane -subplots subprime subspell subspells -subsuming -subtypes subwoofer suchomimus sudanese sudassana sudbury sudo -suffixed -suffuse sugarkin sugarrush sukhâvati @@ -6930,17 +5665,13 @@ sulfoxide sullivan sumerian summerfield -summoners sunday sundays sunderland -sundew -sundress sunesthesia sungel sunil sunni -sunnyvale sunvault superalloy superbike @@ -6957,21 +5688,17 @@ supermaterials superoxide superpositional supersoldier -supersoldiers superteam supertruck supervillains superweapon suppressively -suppurated surcoat surefoot surinamese surry survivalcraft -survivalists susan -susurrate sutrakritânga sutras sutro @@ -6989,37 +5716,27 @@ svd svetasvatara svp sw -swage -swages swampers swampscott swansea swappable -swashbucklers swazi swd swedish -sweetish sweety swiss -switchgear swordfighting swording -swordmanship swordsmith swordswoman sykes -sylph sylvanus sylvatica sylver -sylvite sym symbiote symbiotes -symmetries synchronistic -synchronizes synth synthblood synthesization @@ -7030,7 +5747,6 @@ sâmhita sîrôzahs søren sōjutsu -t taanit tabi tabula @@ -7053,7 +5769,6 @@ takatoshi takayama takedown takedowns -takеn talavakâra tallit tallman @@ -7061,25 +5776,19 @@ talmud talmudic talwar talwars -tamable tambaqui tambaquis -tamped tamsyn tanakh -tanbark tanfoglio tangler tanglers tanglevine tanglevines -tangram -tangrams tankbot tankette tankettes tankylosaurus -tannin tanzanian tao taoism @@ -7102,24 +5811,16 @@ tavor tavrel tawa taxa -taxying taylor -taze -tazed -tazer -tazers tazmania te -tearjerker tec tech -technologist technomancer technomancers technomancy technomantic techworld -tefillin teflon tegh tegmental @@ -7142,7 +5843,6 @@ teleports telushkin temaki templeton -tenderloins tengriism tengyur tenmile @@ -7155,7 +5855,6 @@ tequini teravolt teravolts tergitol -terpenes terraforming terranean terranian @@ -7163,9 +5862,7 @@ terrifier terumot teshuvah tessa -testbed tetradrachm -tetrahedron tevigga tevis tewahedo @@ -7181,9 +5878,7 @@ thang thanh that'd that'll -thaumaturge thaumaturges -thaumaturgical thawb thawbs thc @@ -7198,13 +5893,9 @@ theresa therizinosaurus thermite thermobaric -thermochemistry -thermoplastics -theropod thescelosaurus thessalonian thich -thicknesses this'll thomas thomet @@ -7222,16 +5913,10 @@ thornskin thornskins thornweaver thornweavers -thosun thracks -threateningly threose -threshed -throated throating throwable -thru -thrums thuluth thumbholes thumbless @@ -7250,8 +5935,6 @@ tiktaalik tilapia tilapias tileset -tillable -tillage tilly tilmàtli tim @@ -7259,13 +5942,10 @@ timelapse timmy timorese tinamidae -tinamou tindalos tink -tinning tipperary tiramisù -tiredly tireplate tireplates tisbury @@ -7279,18 +5959,14 @@ tnt toby tock todo -toecaps toffer toggleable -toggled -toggling togolese tokarev tokyo tolkien tolland tolstoy -toluene tomas tomean tommy @@ -7298,12 +5974,10 @@ tonalpohualli tonfa tonfas tongan -toolbar toolbars toolbelt toolbelts toolkits -toolmaking toolmod toolmods toolset @@ -7317,7 +5991,6 @@ torrance torvosaurus totipotent toto -tourmaline tourmalines tov tovarishch @@ -7341,28 +6014,20 @@ transdimensionally transhuman transhumanist transhumanity -transhumans translocates -translocation translocator translocators transplanar -transpositions transubstantiated -transuranic transylvania -trapezium -trapezoidal travelpack travelpacks travers -traversal travois treecutting treefrog treefrogs treehouse -treelines treesing treesinging treesung @@ -7372,7 +6037,6 @@ trenchcoat trenchcoats trenchgun trenchguns -trenching tri triband tribesperson @@ -7380,21 +6044,15 @@ tribot tribots triceratruck triceratrucks -trichloride trichocarpa trichodactylidae triclopean -tricorne trifacet trifacets triglav -trigrams trilaser trilasers -trilobite trimorphic -trioxide -tripartite tripcore tripitaka trismegistus @@ -7406,9 +6064,7 @@ trollope troodon tropicataclysm trotsky -troutmans truckstop -trudges truefoodperson truesight trurl @@ -7426,20 +6082,14 @@ tsundere tsurugi tt ttf -tuber tubings -tucunare tucunaré tucunarés tuesday tuesdays tumescences -tummultous -tumnis -tundras tunguska tunisian -tunneler tuno tupperware tupperwares @@ -7448,23 +6098,17 @@ turipache turipaches turkish turkmen -turreted tuscany -tusked tuvaluan tuyen tv twinkies twintailed -twitfeed -twohand tx -txt tyler tylindel tylosaurus tyngsborough -typologies tyr tyrannosaurid tyrannosauroid @@ -7508,8 +6152,6 @@ ulmus ultrabright ultracapacitor ultracapacitors -ultralight -ultras ultratech ulysses umbanda @@ -7518,88 +6160,49 @@ umm ummm un unaged -unarmored -unawareness unbothered unbreachable -unbuckling -unburnt uncategorized -uncleaned -uncluttered -uncoiling -uncoils uncontacted uncontrol uncorded -uncured undeath -undecipherable underbarrel -underbody underbrushes -undercoat undercovering -undergrown underhill -underlayer underlayers underlift underprepared -undersides -underslung -understandingly undersuit undescribed -undine undried -undulates uneasing unencrypted unencumbering unequip -unfathomably unfavorite -unfermented unfixable -unflavored unfletched unfoldable -unfriendliness ungraspable -ungulate -unharvested -unhealthily -unhidden unhindering unhomogenized unicode -uninstall -uninstalled -uninstalling -unipolar unitard unitards -universalism unjacketed -unkept unlife -unlivable unlively -unlives unlockable unlooted unlubricated unmalted unmark -unmarred unmount -unmounted unmutated -unnervingly uno unobtainium -unornamented unpadded unparalelled unphased @@ -7614,56 +6217,36 @@ unrifled unrotten unrushed unsalvageable -unsaved -unseasoned unseelie unselect unselectable -unset unsetting -unsettlingly -unskillfully unsleeping unsmoked -unsorted -unspecialized -unspooled -unsteadily unstocked -unstrained -unstylish untamable untampered untargeted -untilled -untrodden untrusting untyped unwield -unwieldiness unwielding -unworried upangas upanishad upanishads upapuranas upcycled upheaved -uplifts uplink upses upsized upsizing -upstair upton uranus -ureter urgh -ursine ursula uruguayan usa -usages usb usc usd @@ -7686,10 +6269,8 @@ uxbridge uyen uzbek uzi -v vaccinium vachellia -vacuoles vader vafthrúdnismál vagrakkhedika @@ -7706,7 +6287,6 @@ valhallists valknut valkyries valzain -vambraces vanburen vancian vaneigem @@ -7719,18 +6299,15 @@ var varanid varanus vargas -vars vatforged vatgrown vaughn -vaulters ve vedanta vedas veeblefetzers vegas veggy -veined vektor velcro velociraptor @@ -7744,7 +6321,6 @@ venoms ventrolateral venus venuste -verbosity veresk veridian veripixel @@ -7753,24 +6329,18 @@ vermontsteel verne versa versailles -vesicle -vesper vestigal -vestment vewwy vi viagra vibing -vibrantly vibro -vicinities victorian vidar videogame videogames viet vietnamese -viewfinders viewport viewports vigar @@ -7790,23 +6360,15 @@ vinelings vineweaver vineweavers viny -viperine vips virginia virginica -viridian -virions vis -vises vishnu visparad vitakinesis vitakinetic -vivarium vivian -viviparous -vivisect -vivisected vladimir vocalizers vocaloid @@ -7815,9 +6377,7 @@ voila vol volkswagen vollmer -voltaic voltaire -voltmeter voluntolds von vonnegut @@ -7828,13 +6388,11 @@ vorpal vp vr vroom -vs vtuber vu vudor vuh vulcanist -vulgarities vurt vyuha vz @@ -7842,7 +6400,6 @@ vâjasaneyi vâsishtha vâta vâyu -w wabanaki wabbits wacked @@ -7856,7 +6413,6 @@ walder walders wallace walleri -walleye wallguns walpole walsman @@ -7889,11 +6445,8 @@ warwick washington wastebread wastelanders -watchband watchfire -waterfowl waterkin -waterproofed waterproofings waterskin waterskins @@ -7914,9 +6467,7 @@ weaponized weaponizing weaponsmith weaponsmiths -wearers weatherby -weatherworn webber webbstar webster @@ -7944,12 +6495,9 @@ westport westwood wetcode wetcodes -wetsuits wetworks weymouth whakapapa -whap -whaps what'd what'll what're @@ -7962,9 +6510,7 @@ wheatberries wheater where'd which'll -whiled whiplike -whirr whiskflower whiskflowers whitelist @@ -7986,10 +6532,7 @@ wibbly wicca wiccas wicking -widgets wieldable -wielders -wieldier wienermobile wilbraham wildborne @@ -8008,17 +6551,13 @@ willowbark wilma wilmington wilson -wimple -wimples winchendon winchester windowframe -windproof windrunning windsor windstrike winemaking -winglike wingmaster wingshooter winifred @@ -8030,8 +6569,6 @@ wip wireframe wirey wirings -witchdoctor -witchdoctors witchlight witten wizarding @@ -8042,16 +6579,12 @@ wm woah woburn wolfi -wolfish wolfmen wolfshead woodbow woodbows woodchip woodchips -woodcut -woodcutting -woodlouse woodquiver woodquivers woodsaw @@ -8060,7 +6593,6 @@ woohoo woosh worcester workarounds -workbenches workcycle workshifts worksite @@ -8069,7 +6601,6 @@ worthington wraitheon wreckages wrentham -wretchmother wrightii wristed wuthering @@ -8084,7 +6615,6 @@ wyrm wyrmling wyrmlings wyrms -x xanax xd xedra @@ -8094,7 +6624,6 @@ xenology xenomorphs xii xiii -xiph xiphe xiphos xiuhpohualli @@ -8162,11 +6691,8 @@ yoshimi younce youngs yourselfer -yourselves -youthful youtube youtubers -yowl yoyo yoyos yr @@ -8181,11 +6707,9 @@ yugoslavia yukata yuni yusuke -z zachary zack zahir -zaibatsu zambian zamyatin zandcrawler @@ -8200,7 +6724,6 @@ zara zardust zastava zbrojovka -zeds zeindeer zeindeers zelda @@ -8248,7 +6771,6 @@ zombull zombullfrog zombullfrogs zombulls -zoomorphic zoonotic zorc zorcs @@ -8263,7 +6785,6 @@ zs zubon zubons zucchettos -zucchinis zui zulu zuni From eb645fcc3529274b3d2a8ca5adbaac1c4cccaba1 Mon Sep 17 00:00:00 2001 From: Qrox Date: Fri, 15 Mar 2024 21:15:58 +0800 Subject: [PATCH 28/48] Convert dictionary entries to case-sensitive forms --- tools/spell_checker/dictionary.txt | 7058 ++++++++++++++-------------- 1 file changed, 3549 insertions(+), 3509 deletions(-) diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index 71c38d4dcede9..c93a0375a78c2 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -1,321 +1,322 @@ -aa -aaa -aac -aar -ab -abanaderly -abbie -abby -abc -abdu'l -abdul -abelard -abenaki -aberystwyth -abington +AA +AAA +AAC +AAR +AB +Abanaderly +Abbie +Abby +ABC +Abdu'l +Abdul +Abelard +Abenaki +Aberystwyth +Abington abra -abraham -abrahamic -abrams -acadia +Abraham +Abrahamic +Abrams +Acadia acausal acceleratron acceleratrons accurized -acela -acer +Acela +Acer acetylsalicylic achelousaurus acidball acidproof -acm -acog -acp -acr +ACM +ACOG +ACP +ACR acrocanthosaurus acrylamide activatable -acto -acton -acucar -acushnet -adam -adams -adderall -addison -adele -adhyâya +Acto +Acton +Acucar +Acushnet +Adam +Adams +Adderall +Addison +Adele +Adhyâya adios -adirondacks +Adirondacks admin adorkable -adrian -adventism -adventist -ae +Adrian +Adventism +Adventist +AE aegises -aeglidae -aelita +Aeglidae +Aelita aerarium aeroctinae aeroctinus aerofoil aerosolized -aesculus +Aesculus aetherial aetheric aetherically aetherspeaker aetherspeakers -afrinagân -afro -agawam +Afrinagân +Afro +Agawam agender aggadic -agila -agni -agnus -agra +Agila +Agni +Agnus +Agra ahh ahistorical ahold -aiden -aimee +Aiden +Aimee airhorn airjack airjacks airsoft -aitareya -ak +Aitareya +AK aketon aketons -akhnai -akká -akm -akron +Akhnai +Akká +AKM +Akron +Al al alamosaurus -alan -alaskan +Alan +Alaskan alates -albanian -albert -alberta +Albanian +Albert +Alberta albertonykus albertosaurus albuterol alchemies -alcott -aldous -aleesha -alex -alexander -alexandra -alexandria -alfheim -alford -alfred -algerian -alhazred -alice +Alcott +Aldous +Aleesha +Alex +Alexander +Alexandra +Alexandria +Alfheim +Alford +Alfred +Algerian +Alhazred +Alice alleghaniensis -allen -allfather -allogenes +Allen +Allfather +Allogenes allosaurid allosaurus allosauruses -almeida +Almeida alnico -alnus -alonso +Alnus +Alonso alquerque alt alumentum -alžbeta -amad -amalekites -amanda -amar +Alžbeta +Amad +Amalekites +Amanda +Amar amargasaurus amatriciana -ambedkar -ambien -american +Ambedkar +Ambien +American americana -americans -americas -amesbury -amf -amherst -amidah +Americans +Americas +Amesbury +AMF +Amherst +Amidah amigara -amish -amitâyur +Amish +Amitâyur ammunitions -amor +Amor amt -amur -amy +Amur +Amy ananassa -anatolia +Anatolia anchisaurus -ancien -andean -ander -andes -andorran -andover -andre -andrea -andrew -andy +Ancien +Andean +Ander +Andes +Andorran +Andover +Andre +Andrea +Andrew +Andy anemoi -anfo -angas -angela -angelina -angkor +ANFO +Angas +Angela +Angelina +Angkor anglerfish -anglic -anglican -anglicanism -anglicans -anglo -angolan +Anglic +Anglican +Anglicanism +Anglicans +Anglo +Angolan animalistic animalskin animata -animecon -anita +AnimeCon +Anita anklebiter anklebiters ankylosaurid ankylosaurus -ann -annaliese -anne -annie -anolis +Ann +Annaliese +Anne +Annie +Anolis anomurans -anson -antarctica +Anson +Antarctica antarvasa antarvasas -anthony -anthophila +Anthony +Anthophila anthro antiasthmatic anticonvulsant -antiguan +Antiguan antihemorrhagic antimateriel -antioch +Antioch antiparasitics antivenom -anton -antwerp -anugitâ -anush +Anton +Antwerp +Anugitâ +Anush anzu -anáhuac -ao -aoe -ap -apastamba -apc +Anáhuac +Ao +AoE +AP +Apastamba +APC apeirohedra -apfsds +APFSDS aphantasic -api -apis -apocryphon -apostolorum +API +Apis +Apocryphon +Apostolorum app -appalachian +Appalachian appalachiosaurus -appetit +Appetit apps -april +April aprotic -aqdas +Aqdas aquacultural -aquidneck +Aquidneck aquilops -aquinnah -ar -arabella -arabian -arabic -arachis -aralia -aramaic +Aquinnah +AR +Arabella +Arabian +Arabic +Arachis +Aralia +Aramaic arapaimas -arapaimidae +Arapaimidae arbalist archdruid -archeotech -archie +Archeotech +Archie archmage archmages archons archwizard arcology -arduino -aretha +Arduino +Aretha arg -argentinian +Argentinian argh args -arianna -arisaka -aristotle -arizona -arjuna -arkady -arlington -armageddon +Arianna +Arisaka +Aristotle +Arizona +Arjuna +Arkady +Arlington +Armageddon armeniaca -armenian +Armenian armguard armguards -armitage +Armitage armormaking armorsmithing aromantic arowana arowanas arrhythmically -arrowflight -arsenicum -artemis +Arrowflight +Arsenicum +Artemis arthouse arthropodology -arthur +Arthur artisanals -arturo -arukh +Arturo +Arukh arvore -arx -aryas -asatro -asatru -ascii -asclepius -asgard -ashburnham -ashby -ashfield -ashford -ashland -ashmedai -ashton -ashvaghosha -asia -asian -asimov -asrg -asrgs +ARX +Aryas +Asatro +Asatru +ASCII +Asclepius +Asgard +Ashburnham +Ashby +Ashfield +Ashford +Ashland +Ashmedai +Ashton +Ashvaghosha +Asia +Asian +Asimov +ASRG +ASRGs assclown assface asshat @@ -324,48 +325,48 @@ asswagon asswipe astrolaspis astrolaspises -atchisson -atf -atgm +Atchisson +ATF +ATGM athach athame athames -atharvaveda -athol -atlanta -atlantic +Atharvaveda +Athol +Atlanta +Atlantic atlatls -atm +ATM atmmonoid atmmonoids atompot atompots -atra -atrahasis +Atra +Atrahasis attaches -attleboro -attleborough +Attleboro +Attleborough attunements atwixt -atwood +Atwood au -aubrey -audhumla -audrey -aug -augusta -augusti -augustmoon -augustus -auschwitz -austen -australasia -australian -austrian +Aubrey +Audhumla +Audrey +AUG +Augusta +Augusti +Augustmoon +Augustus +Auschwitz +Austen +Australasia +Australian +Austrian autoattack autodoc autodocs -autogas +AutoGas autohaul autoinjector autoinjectors @@ -380,44 +381,44 @@ autoselect autoshotgun autoshotguns aux -ava +Ava avellana avellanita aventail aventails -avery -avesta +Avery +Avesta avg avgas avians avium -avodah +Avodah avoidant -avon +Avon aw aww axedwarf axedwarves axemen -axmc -ayer +AXMC +Ayer ayran ayuh -azerbaijanian -aztec -aztecs -aztlan -aztlani -aśvaghosa -b'av -baal -babadook -babar -babyface -babylon -babylonian +Azerbaijanian +Aztec +Aztecs +Aztlan +Aztlani +Aśvaghosa +b'Av +Baal +Babadook +Babar +Babyface +Babylon +Babylonian babylonica -bacigalupi +Bacigalupi backblast backfist backflip @@ -430,19 +431,19 @@ backtrace backtracing badass bagh -baghdad -bagȣnizabȣnak -bahamanain -bahman -bahrainian -bahá -bahá'u'lláh -bahá'í -baikonur -bakelite +Baghdad +Bagȣnizabȣnak +Bahamanain +Bahman +Bahrainian +Bahá +Bahá'u'lláh +Bahá'í +Baikonur +Bakelite baklavas -balakrishnan -balfour +Balakrishnan +Balfour balisong balisongs ballistae @@ -451,19 +452,19 @@ ballistoceras balrog bandersnatch bandersnatches -bangladeshi -bangor -banksley +Bangladeshi +Bangor +Banksley bannerman bannermen -baphomet -baptiste -barbadian -barbara -barbaran +Baphomet +Baptiste +Barbadian +Barbara +Barbaran barbute -barcelona -barchester +Barcelona +Barchester barcode barcodes bardiche @@ -474,17 +475,17 @@ barghests barklike barkskin barkskinned -barlow -barnhoff -barnstable -baronyx +Barlow +Barnhoff +Barnstable +Baronyx barosaurus barotraumatic -barrett -barrington -barry +Barrett +Barrington +Barry barstool -bart +Bart baryonix basecamp basecamps @@ -495,108 +496,108 @@ basidiocarp basiliscus basiliscuses basketweaving -basotho -basra +Basotho +Basra bassline -bastiat +Bastiat batcave batlike -battaglia -battlehammer +Battaglia +Battlehammer batts -baudhâyana -baudrillard -bava -baxter -bb -bbq -bbs -bce -bdsm -bdu +Baudhâyana +Baudrillard +Bava +Baxter +BB +BBQ +BBs +BCE +BDSM +BDU bearcub bearmantle bearmantles beartrap beastmaster -beatrice -beckett -becky -bedford +Beatrice +Beckett +Becky +Bedford bedsheet beefsim -beethoven -beit -beitzah +Beethoven +Beit +Beitzah bejesus beladen -belarusian +Belarusian belcher belchers -belchertown -belgian -belgic -belizean -bella +Belchertown +Belgian +Belgic +Belizean +Bella bellend -bellevue -bellingham -belmont +Bellevue +Bellingham +Belmont benchlike benchtop -benelli -bengal -beninian -benji -bennett -bentley -benzete +Benelli +Bengal +Beninian +Benji +Bennett +Bentley +Benzete benzo benzodiazepine benzos benzoylmethylecgonine -beowulf -berakhot -beretta -berettas -bergmann -bergson -bering -berkeley -berkley -bermuda -bernardston +Beowulf +Berakhot +Beretta +Berettas +Bergmann +Bergson +Bering +Berkeley +Berkley +Bermuda +Bernardston berserkergang berserking -besse -bessemer -bester +Besse +Bessemer +Bester betavoltaic betavoltaics -betsey -bette -betty -betula -beverly +Betsey +Bette +Betty +Betula +Beverly bevor -bfg -bfr -bfrs -bgm -bhagavad -bhagavadgitâ -bhagavatam -bhaktivinoda -bhatti -bhikkhu -bhikkhuni -bhutanese -bianchi -bienkowski +BFG +BFR +BFRs +BGM +Bhagavad +Bhagavadgitâ +Bhagavatam +Bhaktivinoda +Bhatti +Bhikkhu +Bhikkhuni +Bhutanese +Bianchi +Bienkowski biggun bigpack -bikkurim -billerica +Bikkurim +Billerica bindles binocs bio @@ -613,7 +614,7 @@ biohacker biohazard biohazardous biohazards -biojutsu +Biojutsu biokinesis biokinetic biolab @@ -647,18 +648,18 @@ bipods birchbark birchbarks bismol -blackhawk +Blackhawk blackpowder blackpowders blacksmithy -blackstone +Blackstone blackwood bladesmithing blam -blandford +Blandford blech bleedingly -blk +BLK blodplättar blodplättars bloodbank @@ -668,20 +669,20 @@ bloodlust bloodthirst bloomeries blowback -blr -blt -blts +BLR +BLT +BLTs bluefin bluetooth -blumenthal -blust +Blumenthal +Blust blutwurst blutwursts -bmg -bo -boann +BMG +Bo +Boann boardable -boba +Boba bobburger bobburgers bodybag @@ -695,25 +696,25 @@ bodymesh bodymeshes bodypart bodyweight -boeing -boer +Boeing +Boer bogart boing bokken bolases bolded -bolivian +Bolivian bolognese -bolton -bom -bon -bondi +Bolton +BOM +Bon +Bondi boneclub boneclubs bonelike boneplate -bonespear -bonespears +Bonespear +Bonespears bookstrap bookstraps boomered @@ -723,43 +724,43 @@ boop bootable bootcut boozeberry -borbonicus +Borbonicus borderless borealis boreas -borichenko -borichenkos -boris -bosch -bosnian -boston +Borichenko +Borichenkos +Boris +Bosch +Bosnian +Boston bot -botswanian -botticelli +Botswanian +Botticelli boudin -bourgogne -bourguignon +Bourgogne +Bourguignon bowhunter -boxborough +Boxborough boxcutter -boxford -boylston +Boxford +Boylston bpm brackenwight brackenwights -bradbury -bradley -brady -brahman -brahmana +Bradbury +Bradley +Brady +Brahman +Brahmana brainburner brainburners brainer brainiac -braintree -bram -brandon -brazilian +Braintree +Bram +Brandon +Brazilian breacher breachhead breadmaking @@ -767,85 +768,85 @@ breadseed breakrooms breathability breathwork -breece -breedlove -bren -brenda -brett +Breece +Breedlove +Bren +Brenda +Brett brewable -brewster -brhadaranyaka -bridgewater -brigit -brigitte -brihaspati -brimfield -brin +Brewster +Brhadaranyaka +Bridgewater +Brigit +Brigitte +Brihaspati +Brimfield +Brin brined -bristol -britain -british +Bristol +Britain +British bro broadhead -broadway -brockton -brodie -brody -brogyaga -brogyeki +Broadway +Brockton +Brodie +Brody +Brogyaga +Brogyeki bronchodilator bronchospasm -brookfield -brookline -brooklyn -broomhandle -bruce -bruneian -bruno +Brookfield +Brookline +Brooklyn +Broomhandle +Bruce +Bruneian +Bruno brushland bruv -bryan -bryant -brâhmana -brügger -bt +Bryan +Bryant +Brâhmana +Brügger +BT bubbe bubblicious -buber +Buber buckhorn -buckland -buddha -buddhism -buddhist -buddhists -budgetball +Buckland +Buddha +Buddhism +Buddhist +Buddhists +Budgetball bufo bufos bugfixes bugout -bukharin +Bukharin bulette bulettes -bulgakov -bulgarian -bullard +Bulgakov +Bulgarian +Bullard bullpup bullseye -buluotuo -bulwer -bundahis +Buluotuo +Bulwer +Bundahis bunkbed bunkering -bunyan +Bunyan burdocks -burges -buri -burlington +Burges +Buri +Burlington burnback -burnett +Burnett burpees -burroughs -burundian +Burroughs +Burundian buttercream butthead buttplate @@ -853,66 +854,66 @@ buttstock buttstocks buttstroke buzzcut -bx +BX bzzt bzzz -bátoriová -bó +Bátoriová +Bó bō -bōjutsu +Bōjutsu c'mon -cabanillas +Cabanillas cadabra -caesar +Caesar caesariense cafe cafes caffex -caixo +Caixo cal -caldwell -cali -california -callie -callista +Caldwell +Cali +California +Callie +Callista callosum callsigns -calpay -calpulli -calrisean -calvin -calvinist +Calpay +Calpulli +Calrisean +Calvin +Calvinist camarasaurus -cambodian -cambridge -cambyses -camelops +Cambodian +Cambridge +Cambyses +Camelops cameraperson camo camphine camptosaurus camspies camspy -camus -canaanites +Camus +Canaanites canadensis -canadian -canberra -candomble -candyman +Canadian +Canberra +Candomble +Candyman canid canids canina -canis +Canis cannabinoids cannelured -cannith -canterbury -cao -caodaism +Cannith +Canterbury +Cao +Caodaism capiche -capoeira -caravaggio +Capoeira +Caravaggio caravaneer caravaner carb @@ -921,309 +922,312 @@ carbs cardboards cardio carfentanil -caribbean +Caribbean carica -carlhaven -carlisle -carlos -carlsberg -carlsen -carlson -carmex -carmichael +Carlhaven +Carlisle +Carlos +Carlsberg +Carlsen +Carlson +Carmex +Carmichael carne -carnegie +Carnegie carnotaurus -carpathian +Carpathian carroballista carroballistae -carthage +Carthage cartoonishly -carvalho -carya +Carvalho +Carya casehead caseless -casey -cass -cassandra -cassidy -cassiopeia +Casey +Cass +Cassandra +Cassidy +Cassiopeia castable -castanea -casterbridge -casull +Castanea +Casterbridge +Casull cataphract -catarina -catherwood -catholics -caucasian -cb -cbm -cbms -cbrn +Catarina +Catherwood +Catholics +Caucasian +CB +CBM +CBMs +CBRN +CC cc -ccp -cctv -ccw -cd -cdc -cdda -cdl -ce +CCP +CCTV +CCW +CD +CDC +CDDA +CDL +CE cecaelia cecaelian -celsius -celtic +Celsius +Celtic centrigrades centrosaurus -ceo -ceos +CEO +CEOs cepa ceratopsian ceratosaurus -cerberus -cessna +Cerberus +Cessna cesti cetera -cetme -ceylon -cf -cgi +CETME +Ceylon +CF +CGI chachalaca chachalacas -chagigah +Chagigah chai chainlink chainmail chakras -chamaeleonidae +Chamaeleonidae chambering chamberings chameleoflage -chan -channing -chapfax -chaplin -charlemont -charles -charlestown -charlton -chasidic +Chan +Channing +Chapfax +Chaplin +Charlemont +Charles +Charlestown +Charlton +Chasidic chasmosaurus -chatham -chatterly +Chatham +Chatterly chaturanga -chaucer +Chaucer checkmark checkmarks -checkov +Checkov cheerleading cheesemaking chelator -chelmsford -chelsea +Chelmsford +Chelsea chemtrails -chen -cherokee -cheshire -chester +Chen +Cherokee +Cheshire +Chester chestpiece chestplate chestplates chestwrap chestwraps -chevrolet -chewbacca -chiappa -chicago +Chevrolet +Chewbacca +Chiappa +Chicago chicharrones chickenbot chickenbots chickenwire -chicopee -chien -chilean -chilmark -chinese -ching +Chicopee +Chien +Chilean +Chilmark +Chinese +Ching chirality chirurgic chitinworking chk -chloe -cho +Chloe +Cho chode chokepoints -chol +Chol chonker chonkers chonkiness chown -chris -christ -christianism -christianity -christmas -christopher +Chris +Christ +Christianism +Christianity +Christmas +Christopher chromatographer chromoelectric -chu -chuang +Chu +Chuang chucklefuck -chucky -chui -chulainn -chun +Chucky +Chui +Chulainn +Chun chupacabra -churchill -cia +Churchill +CIA cinchable -cioran +Cioran circuitries circumnavigator citrusy civilizational -claire +Claire clairsentience clairsentient clanker clanky -clara +Clara clarifier -clark -clarke -clarksburg -claus -clayton +Clark +Clarke +Clarksburg +Claus +Clayton cleansuit cleansuits clearcrete clearcutter -clearwater -clemens -cleo -cleopatra +Clearwater +Clemens +Cleo +Cleopatra clickity cliffside -climacus -clinton +Climacus +Clinton clockspring cloutie -cloverfield +Cloverfield clowness -clrs +CLRS clutchmates -clymer +Clymer cm -cmes -cmmg +CMES +CMMG +CO +Co co -cobray -cody +Cobray +Cody coelophysis coffeetable coffeetree -cohasset +Cohasset coilgun coilguns coincidently coipo coipos -col +Col colada -colrain -columbia -columbian +Colrain +Columbia +Columbian combatives comm comms communis compensators compsognathus -conan -conanicut +Conan +Conanicut concealability concerningly condensor config confit -confucian -confucianism -confucius -connecticut -connelly -connie -connolly -connor -conrad +Confucian +Confucianism +Confucius +Connecticut +Connelly +Connie +Connolly +Connor +Conrad const constabulario -constantine -contrapoints -conway +Constantine +ContraPoints +Conway cooldown -cooley -copacabana -coptic +Cooley +Copacabana +Coptic copyplate copyplates copywritten cordlike -corinthian -cornac -cornelius +Corinthian +Cornac +Cornelius coronavirus corp corvid corvids -cory -corylus +Cory +Corylus corythosaurus -corytophanes +Corytophanes cosmo -cosmodrome +Cosmodrome cosplay cosplayers could've -coulson +Coulson countertime countertop couters coverplate -covid -coza -cpa -cpu -cqb -cqbr -cqc +COVID +Coza +CPA +CPU +CQB +CQBR +CQC crabapple crabapples -cracidae +Cracidae cracklins craftable crafter crafters craftsdwarfship craftsfolk -craig -cranston -crataegus -crc +Craig +Cranston +Crataegus +CRC creeped -creighton +Creighton creped crewmember criniere -crispr +CRISPR criss -cristo -cristy +Cristo +Cristy crit -croatan -croatian +Croatan +Croatian croc -crocker +Crocker crocs crossbuck crossfit @@ -1232,11 +1236,11 @@ crosshairs croupiere crowdfunded crowdfunding -crt +CRT crtg crtgs crunchings -crusoe +Crusoe cryo cryoadaptation cryokinesis @@ -1250,21 +1254,21 @@ cryptid cryptids crypto crêpes -csa -ct +CSA +CT cthonic -cthulhu +Cthulhu ctrl -cuban -cucina +Cuban +Cucina cuck cul -cumberton +Cumberton cummer -cummington -cuppatech +Cummington +CuppaTech curarines -curitiba +Curitiba currywurst currywursts curveballs @@ -1276,82 +1280,84 @@ cutthroaters cuvettes cuy cuz -cvd -cxiv +CVD +CXIV cyber cybercop cyberdog -cyberiad +Cyberiad cyberjunkie cybernetically -cyberninja -cyberolympics +Cyberninja +Cyberolympics cyberstalking cyberterror -cylindropuntia +Cylindropuntia cyphers -cyprian -cypriot -cyrillic -cyrus -cz -czechoslovak -czechoslovakia -cú -cúailnge +Cyprian +Cypriot +Cyrillic +Cyrus +CZ +Czechoslovak +Czechoslovakia +Cú +Cúailnge +DA da -dabrowski -dacian -daewoo +Dabrowski +Dacian +Daewoo dagnabbit -dahila -dai -daime -daizoom -dakota -dallas -dalton +Dahila +Dai +Daime +DaiZoom +Dakota +Dallas +Dalton dambreaker dambreakers -damien -dan -dana -dango -dania -daniel -danielle -danny -danvers -danya +Damien +Dan +Dana +Dango +Dania +Daniel +Danielle +Danny +Danvers +Danya +Dao dao -dar -dara -darcy -darius -darla -darpa -darren -darryl -dartmouth -darwin +Dar +Dara +Darcy +Darius +Darla +DARPA +Darren +Darryl +Dartmouth +Darwin dashcam daspletosaurus datasheet datasheets datavault -dave +Dave davening -david -davids -davidson -davies -davis +David +Davids +Davidson +Davies +Davis daypack daypacks -daytona +Daytona dayum -dda -ddt +DDA +DDT deadland deadlands deadzone @@ -1360,44 +1366,44 @@ deathcam deathmobile deathrattle debatably -debian +Debian debone -debord +Debord debuff debuffs debutante decap -decatur -december +Decatur +December decker -decss -dedham +DeCSS +Dedham dedicational -deerfield +Deerfield defatted -deg -dei +Deg +Dei deinonychus deja -dekker -delany +Dekker +Delany deliriant -demai +Demai dementias -demeter +Demeter demi demihuman demining -demir +Demir demisexuality denarii denatonium -denis -dennis +Denis +Dennis dentata -denver -deon -dep +Denver +Deon +DEP deployer deprotonated der @@ -1405,41 +1411,41 @@ derandomization deregulations dermatik dermatiks -dernier -derrida +Dernier +Derrida derring -descartes +Descartes descript desilo -desmodontinae +Desmodontinae dessicant destreza -det +Det detune -deuteronomy +Deuteronomy dev -devon +Devon devs dex -dhamma -dhammapada +Dhamma +Dhammapada dharmachakra -dharmasastra +Dharmasastra dhyâna di -diamant -diane -dianne -dickinson -didascalia -diego -diemaco +Diamant +Diane +Dianne +Dickinson +Didascalia +Diego +Diemaco dieselpunk diggable -dighton -digimart -diliman -dillan +Dighton +DigiMart +Diliman +Dillan dilophosaurus dimensionalism dimensionalist @@ -1447,25 +1453,25 @@ dimestore dimethyl diminute dimorphodon -dinai -dinik +Dinai +Dinik dino -dinolab -dinomod +DinoLab +DinoMod dinos -dinozoo +DinoZoo dioicus dionaea dionaeas -dionne +Dionne dipshit disanimate discernable discoes -discordia -discordianism +Discordia +Discordianism disdainer -diskobolus +Diskobolus dispersor dispersors dissoluted @@ -1473,30 +1479,30 @@ dist distaves divemask divemasks -divi -dixon -diy -diyua -dj -djiboutian -dmitry -dmr -dmrs -dmso -dna -dobbs -dodecagram +Divi +Dixon +DIY +Diyua +DJ +Djiboutian +Dmitry +DMR +DMRs +DMSO +DNA +Dobbs +Dodecagram dodgeball dogpark dogpile dojo dokie -dolichovespula +Dolichovespula dollkin dolm domestica don'tcha -donatello +Donatello donburi doomseer doorstopper @@ -1504,22 +1510,22 @@ doot dooting doots doppelganger -doppler -doreen -dort -dosia -douay -doubletech +Doppler +Doreen +Dort +Dosia +Douay +DoubleTech douchebag -douglas -doukhobor -dover -doyle +Douglas +Doukhobor +Dover +Doyle doz -dr -draco -dracula -dracut +Dr +Draco +Dracula +Dracut draggers dragonail dragonails @@ -1528,10 +1534,10 @@ dragonfire dragonhide dragonlike dragonscale -dragunov +Dragunov draisine drapings -drasa +Drasa draught draughts draugr @@ -1544,105 +1550,107 @@ dreamsmithing dreamsmiths dreamstuff dreamt -dreamwalker -dresden -dreyfus -drm +Dreamwalker +Dresden +Dreyfus +DRM droid droids dromaeosaurid dromaeosaurus -dromeosaur +Dromeosaur dropoff -drotik +Drotik druidry drylands dryosaurus dryptosaurus drywalled -ds -dsa -dubliner -dudley -duhring +DS +DSA +Dubliner +Dudley +Duhring dulcis -dumas +Dumas dumbass dumbasses dumbheads dumbshit dumpsite -duncan +Duncan dunderfuck -dunn -dunstable -dustbowl +Dunn +Dunstable +Dustbowl dustbunny dustings -duxbury -dvd -dvm -dvorak -dvsa +Duxbury +DVD +DVM +Dvorak +DVSA dwarven dyoplosaurus dysmorphia dysrhythmia -dze -dzvonko -dâdistân +Dze +Dzvonko +Dâdistân döner dō -eaa +EAA earbuds earthbag earthbags -earthbones +Earthbones earthkin earthlike -earthmother +Earthmother earthshaper earthshapers earthshaping earthside -easter -eastham -easthampton -easton -ebby -eberhard -ebola +Easter +Eastham +Easthampton +Easton +Ebby +Eberhard +Ebola ebook eboshi -ebr -ecash -eckankar +EBR +eCash +Eckankar +Eco eco ecoterrorist -ecuadorian -ed +Ecuadorian +ED +Ed edamame -edda -eddie -eden -edgartown -edison -edmonton +Edda +Eddie +Eden +Edgartown +Edison +Edmonton edmontonia edmontosaurus -edmund -edward +Edmund +Edward eggsac -egremont -egyptian -egyptians -eiffel +Egremont +Egyptian +Egyptians +Eiffel einiosaurus -eisenhower -eko +Eisenhower +EKO elasmosaurus -elbereth -eldridge +Elbereth +Eldridge electrocutioner electrohack electrohacks @@ -1655,140 +1663,141 @@ electromagnetics electromancy electroreceptors elephantry -elish -elizabeth -elle -ellen -ellie -ellington -elmer -elmo -elsa +Elish +Elizabeth +Elle +Ellen +Ellie +Ellington +Elmer +Elmo +Elsa elsewheres -elton +Elton elven elvenkind -elvira -ely +Elvira +Ely elytra -emanuel -embla -emerson -emf -emil -emirati -emma -emmanuel +Emanuel +Embla +Emerson +EMF +Emil +Emirati +Emma +Emmanuel emos -emp +EMP empath emplate -emt -emts +EMT +EMTs enactors -ender +Ender endochitin -endymion -enfield +Endymion +Enfield enflamed -engd -england -eniac +EngD +England +ENIAC enjoyability -enki -enoch -enosh +Enki +Enoch +Enosh enspelled entree entrees -enuma +Enuma envenomations -envirocom -eoc -eocs -eod +EnviroCom +EOC +EOCs +EOD eolocanth eolocanths eoraptor eoraptors -epa -ephesus +EPA +Ephesus epicuticle epicuticles eppies -equus -ereshkigal +Equus +Ereshkigal ergometer ergometers -eric -erica -erickson -erin -erith -eritrean -ernst +Eric +Erica +Erickson +Erin +Erith +Eritrean +Ernst eructor eructors -eruvin -erving -erymanthian -esapi -esbi -esbit -esc -esca +Eruvin +Erving +Erymanthian +ESAPI +ESBI +Esbit +ESC +Esc +ESCA escalier -esfandiary -eskrima +Esfandiary +Eskrima espatier espatiers esper espers esque -esr -essex -esther +ESR +Essex +Esther estoc estocs -estonian +Estonian etc -ethan -ethel -ethiopian +Ethan +Ethel +Ethiopian ettercap ettercaps ettin ettins -eu +EU eugh -eugnostos -eula +Eugnostos +EULA euoplocephalus -eurasia -eurasian -europe -european -europeans +Eurasia +Eurasian +Europe +European +Europeans eusocial -eva +EVA evac evacs -evelyn +Evelyn everburning -everest -everests -everett +Everest +Everests +Everett everfrost everglow -evian +Evian eviscerations ew eww -excalibur +Excalibur exfiltrate -exo +EXO exobay -exodii +Exodii exoplanet exoplanetary exosuit @@ -1813,89 +1822,89 @@ eyepatch eyepatches eyestalks eyewear -fabritechnics -facebook +Fabritechnics +Facebook facemasks facto faders fae faewild -fafnir -fagus -fahrenheit +Fafnir +Fagus +Fahrenheit failsafe failsafes -fairbairn -fairhaven -fal -fala +Fairbairn +Fairhaven +FAL +Fala falcata -falmouth +Falmouth falx falxes -famas -familia +FAMAS +Familia familiaris famuli fanfictions -fanorona -faq +Fanorona +FAQ faraday -faravahar -farland +Faravahar +Farland farmwork -farrakhan +Farrakhan farstep fascial fasciitis -fateh -fatima -fatuus +Fateh +Fatima +Fatuus faultline fauxben fauxfeathers favorited -fawkes -fbi -fda +Fawkes +FBI +FDA fearmongering feaver feavers -feb -february -felton -fema +Feb +February +Felton +FEMA femboy -fenceman -feng +Fenceman +Feng fentanyl ferals -fereidoun -fergus +Fereidoun +Fergus fermionic ferraiolo ferraiolos ferrofluid -feyn -feynman +Feyn +Feynman fi fiancee fibercloth fiberoptic -fijian +Fijian filenames fileset filesets -filipino +Filipino filk fimbriated -findlay -fingerhack -fingerpick -finn -finnish -fiona -fior +Findlay +Fingerhack +Fingerpick +Finn +Finnish +Fiona +Fior firebolt fireboots firedragon @@ -1904,7 +1913,7 @@ firehood firehoods firemask firemasks -firesnake +Firesnake firestarter firestarters firestarting @@ -1914,15 +1923,15 @@ firesuits fisherwoman fishfolk fishlike -fisk -fitchburg -fitzgerald +Fisk +Fitchburg +Fitzgerald flagration flamberge flamberges -flamebreath +Flamebreath flameshield -flamesword +Flamesword flametouched flammenschwert flammenschwerter @@ -1934,16 +1943,16 @@ flashbang flashbangs flashtube flatbread -flatcoin -flatcoins +FlatCoin +FlatCoins flatjaw flatlander flatlanders -flavio +Flavio flechette flechettes flensing -fleshmender +Fleshmender fleshmonger fleshwarp fleshwarper @@ -1955,102 +1964,103 @@ flim flintknapping flockshot floorplan -florida -florunner +Florida +Florunner fluffies fluidic fluorescents fluoxetine flusteration -fm -fmj -fn +FM +FMJ +FN foamcrete foie -foily -folsom -fonzie +Foily +Folsom +Fonzie foodborne foodburger foodcart -foodios -foodkid -foodlair +Foodios +Foodkid +FoodLair foodless -foodpeople -foodperson -foodpersons -foodplace +Foodpeople +Foodperson +Foodpersons +Foodplace foon foons forcefield -forcette +Forcette foregrip foregrips forehooves forestock forgemaster forgemasters -formosa -forn -foucault +Formosa +Forn +Foucault foundress fourtieth -fowler -foxborough -fp +Fowler +Foxborough +Fp fps fracking -fragaria +Fragaria framebuffer -framingham -frances -franchi -francisco -franco +Framingham +Frances +Franchi +Francisco +Franco frankenfurter frankenfurters -frankenstein -frankensteinian -frankie -franz -fred -frederic -frederick +Frankenstein +Frankensteinian +Frankie +Franz +Fred +Frederic +Frederick freebore freerunner freerunning -freetown +Freetown freezerburn freezerburned -freitas -freud -freya -friday -friederich +Freitas +Freud +Freya +Friday +Friederich frigg frigger frisbee frisbees -frisia -frolov -frolova +Frisia +Frolov +Frolova frostburn frostburnt frostnip frostnipped frostrimed frybread -fsp +FSP +Ft ft -ftl -ftx +FTL +FTX fu fuckwad fuckwits -fudd +Fudd fudgy -fudoki +Fudoki fulleroclathrate fullscreen fumarolic @@ -2064,32 +2074,33 @@ fursuit fusillies fusilly fwoosh +GA ga -gabonese +Gabonese gadol -gaelic +Gaelic gah -gaia -gainesville +Gaia +Gainesville galeae -galfrizowich -gallagher +Galfrizowich +Gallagher gallimimus gallore -galouye +Galouye gambesons -gambian -gameover +Gambian +Gameover gameplay gangbangers -gao -garand +Gao +Garand garde gardenling gardenlings -garder -gardner -gargantua +Garder +Gardner +Gargantua garghoul garghouls gargoyleosaurus @@ -2097,78 +2108,81 @@ garlander garlanders garou garous -garrity -garry -gary -gaskell +Garrity +Garry +Gary +Gaskell gasmask gasmasks -gast +Gast gastank gastonia gastro gastroliths gatling -gatsby -gau -gaudiya -gautama +Gatsby +Gau +Gaudiya +Gautama gauzes -gavin +Gavin ge gearwork -gehinnom +Gehinnom geiger -gekkota +Gekkota gelato -gemini +Gemini +Gen gen genderfluid genderqueer genecraft genemod genemoded -genghis -geoffrey +Genghis +Geoffrey geokinesis -george -georgetown -georgian +George +Georgetown +Georgian geospatial -gerald -germaine -germans -gestae +Gerald +Germaine +Germans +Gestae geta -gevuina -ghanaian +Gevuina +Ghanaian ghast ghasts ghillie -ghostface -ghoulodon -ghoulodons -ghâzkhud +Ghostface +Ghoulodon +Ghoulodons +Ghâzkhud ghâzkhudians gi -gibson -gideon -gideons +Gibson +Gideon +Gideons gif giftshop giganotosaurus -gigi -gila -ginza +Gigi +Gila +Ginza +Gita gita +GitHub github -gittin -gitxsan -giza +Gittin +Gitxsan +Giza gladii gladius glaives -glamopolitan +Glamopolitan glareproof glassteel glassworking @@ -2176,64 +2190,65 @@ glisteningly glitched glitchiness glitching -glm -glms -glock -glocks +GLM +GLMs +Glock +Glocks gloopy -glooscap -gloria -gloucester +Glooscap +Gloria +Gloucester glowstick glowsticks glowy glug glyptotherii glyptotherium -gmo -gobhila +GMO +Gobhila goddamnit godesses -godfrey -godot -godwin -goethe -goldberg -goldstein -golemancer -golemancy +Godfrey +Godot +Godwin +Goethe +Goldberg +Goldstein +Golemancer +Golemancy golfball goliath goliaths -gonzales +Gonzales goops goopy -gordee -gordon +Gordee +Gordon gorgosaurus -goshen -gosnold +Goshen +Gosnold goto -gottingen -gough +Gottingen +Gough gouts gov gozu gozus -gpmg +GPMG +GR gr graboid graboids -gracie +Gracie gracken grackens -grafton -grainville +Grafton +Grainville granatum -granby +Granby grandkids -granth -granville +Granth +Granville grapeade graphene gras @@ -2242,8 +2257,8 @@ grav gravelbag gravelbags gravesite -gravyfield -grayfield +GravyField +Grayfield greatbow greatbows greatclub @@ -2251,51 +2266,51 @@ greatclubs greatsword greatswords grecko -greco -greek -greeks -greene -greenland +Greco +Greek +Greeks +Greene +Greenland greenways -greer -greg -gregory -grenadian -greta -grihya -grimm +Greer +Greg +Gregory +Grenadian +Greta +Grihya +Grimm grimoire grimoires grindle grinny grodd grodds -grokking -groton +Grokking +Groton groundcover -groveland -grylls +Groveland +Grylls gryposaurus -gu -guanabara +Gu +Guanabara guapote guapotes -guatemalan +Guatemalan guayacan gubbins -guglielmo +Guglielmo guilts -guin -guinean -guinness +Guin +Guinean +Guinness guls -gumps +Gumps gunblade gunblades -guneet +Guneet gunfighting -gungnir -gungnirs +Gungnir +Gungnirs gunmaking gunmod gunmods @@ -2303,57 +2318,58 @@ gunshop gunsight gunsmithing gunsmoke -guodian +Guodian gurkha -gus -gustaf -gustav -gustavo +Gus +Gustaf +Gustav +Gustavo gutskin guvnah -guyanese -gy -gyges -gymnocladus -gâhs -gümanik -haba -haber -hackpro +Guyanese +Gy +Gyges +Gymnocladus +Gâhs +Gümanik +Haba +Haber +hackPRO hacktivist -hadith -hadley +Hadith +Hadley hadoken hadrosaurus haematopoiesis hafted -haggadah +Haggadah haha +Hai hai -haitian +Haitian hakama halakhic halazone -haldeman +Haldeman halfling halfpike halfpikes -halicarnassus -halifax -halligan -halloway -halloween +Halicarnassus +Halifax +Halligan +Halloway +Halloween hallula -haman -hamilton -hammadi +Haman +Hamilton +Hammadi hammerfist hammerhand hammerspace -hamoed -hampden -hampshire -hancock +HaMoed +Hampden +Hampshire +Hancock handedly handers handguard @@ -2363,53 +2379,53 @@ handjack handloader handloading handwavium -hanh +Hanh hanmi -hannibal -hanover -hanson -hanukkah +Hannibal +Hanover +Hanson +Hanukkah haori haplocanthosaurus haptic -haram +Haram haramaki hardass hardboiled hardpoint hardpoints hardwearing -hardwick -harley -harold -harran -harvard +Hardwick +Harley +Harold +Harran +Harvard harvestable -harvey -harwich -hashanah -hashashiyyin -hashashiyyins -hasis -hastur +Harvey +Harwich +Hashanah +Hashashiyyin +Hashashiyyins +Hasis +Hastur hatchetman hatchlings -hatfield -haverhill -hawaii -hawaiian -hawkeye -hawkingcorps -hawley -hawthorne -hayneth -hazelton +Hatfield +Haverhill +Hawaii +Hawaiian +Hawkeye +HawkingCorps +Hawley +Hawthorne +Hayneth +Hazelton hazmat -hb -hcfn -hcn -hdd -hdpe +HB +HCFN +HCN +HDD +HDPE headgears headscarfs headshot @@ -2417,151 +2433,151 @@ headshots headstamp headwear headwrap -heartfires +Heartfires heartlike -heartseed -heartseeds -heathrow +Heartseed +Heartseeds +Heathrow heatsink heatsinks -hebrew -hebrides -hedp +Hebrew +Hebrides +HEDP heelys -hegel +Hegel heh -heian -heidelberg -heinlein -heinrich -heisenberg -heisenstein -hel -helen -helena -hellenism -hellenist -helliand +Heian +Heidelberg +Heinlein +Heinrich +Heisenberg +Heisenstein +Hel +Helen +Helena +Hellenism +Hellenist +Helliand hellmouth -hellraiser +Hellraiser hellscape hellspawn helpdesk -helsing -hema +Helsing +HEMA hemolymph hemostatics -hendelson -herbert +Hendelson +Herbert herbology -hermanos -hermes -hermeticum -herrera -herstal -heschel -hesiod +Hermanos +Hermes +Hermeticum +Herrera +Herstal +Heschel +Hesiod hesperosaurus heterochromia heteronormative -hev +HEV hevel hevels hexamine hexogen heya -hgc +HGC hiccupped hidebehind hidebehinds hideworking hidey -hiep -higgins +Hiep +Higgins highschool -himalayan -hindu -hinduism -hingham -hinkle -hinsdale +Himalayan +Hindu +Hinduism +Hingham +Hinkle +Hinsdale hippocastanum -hiranyakesin -hispanic -historia -hitbutton +Hiranyakesin +Hispanic +Historia +HitButton hitman hitpoints hitwoman -hiv +HIV hivemind -hk -hmg -hmgs +HK +HMG +HMGs hmmm -hmtd +HMTD hnefatafl -hobbes +Hobbes hoc -hockomock +Hockomock hodag hodags -hoffman -hofstadter +Hoffman +Hofstadter hogtoad hogtoads -holbrook -holland -holliday -hollis -holliston +Holbrook +Holland +Holliday +Hollis +Holliston hollowpoint hollowpoints -hollywood -holman -holmes -holmesian -holmwood +Hollywood +Holman +Holmes +Holmesian +Holmwood holo -holocrons +Holocrons holosuite -holstein -holtzman +Holstein +Holtzman holybook -holyoke +Holyoke homebase homebound homebrew homebrewed homebrewer homebrewing -homeplate +Homeplate homeworld homewrecker homewreckers -homme +Homme homovorus homullus homunculi -honda -honduran +Honda +Honduran honeygold -honorato -honshu +Honorato +Honshu hoodie hoodies hooved -hopedale -hopkins -hopkinton -horace -horayot +Hopedale +Hopkins +Hopkinton +Horace +Horayot horchata -hornblower -horrorpelta -horrorpeltas +Hornblower +Horrorpelta +Horrorpeltas hosomaki -hoss +Hoss hotcut hotcuts hotkey @@ -2570,150 +2586,151 @@ hotties hotwire hotwiring housecat -houston +Houston hoverboarding how'd how're how've -hoyle -hp -hpbt -hps +Hoyle +HP +HPBT +HPs +HR hr hridaya hrm hrs -hrungnir -hs -hsiâ -hsiâo +Hrungnir +HS +Hsiâ +Hsiâo https -huang -huarochirí -hubbardston -hud -hudson -huey -hugentskis +Huang +Huarochirí +Hubbardston +HUD +Hudson +Huey +Hugentskis huggability huggable -hugo -huitzilopochtli +Hugo +Huitzilopochtli huizache humaniform humaniforms humanlike -humvee -humvees -hungarian +Humvee +Humvees +Hungarian hunllef -huntington -huntz -hutchinson -huxley -hv -hvac -hwp -hwps +Huntington +Huntz +Hutchinson +Huxley +HV +HVAC +HWP +HWPs hyades -hyde +Hyde hydrias hydrocracking -hygieia +Hygieia hygroscopy -hylian +Hylian hyolith hypacrosaurus hyperaggressive hyperalgesia hypercloud -hyperdense +Hyperdense hyperdimensional hyperefficiency hyperenhanced hyperfocus hypergeometric -hyperion +Hyperion hypervelocity -hyperweave +Hyperweave hypno hypogaea hypovolemic -hypsiphrone -hz -hávamál -i'd -i'll -i'm -i've -iain -iar -ic -icarus -icbm +Hypsiphrone +Hz +Hávamál +I'd +I'll +I'm +I've +Iain +IAR +IC +Icarus +ICBM icecream -icelandic -ichaival -ichaivals -ichi +Icelandic +Ichaival +Ichaivals +Ichi ichthyostega ichthys ick iconical -ics +ICs idolators -idw -idws -ied -ieds -ieee -ierda -ierde -ifak -iff -ignus -igor -ii -iii -iiia -ikea +IDW +IDWs +IED +IEDs +IEEE +Ierda +Ierde +IFAK +IFF +Ignus +Igor +II +III +IIIA +Ikea illinoinensis -ima +Ima imager imagers imbuement -imes -immanuel +IMEs +Immanuel immersive impalers inactionable -inanna +Inanna inbox -inc -inca +Inc +Inca incompetencies -indian -indiana -indonesian +Indian +Indiana +Indonesian infantrywoman infectees infeme infemes influencer influencers -infolink +Infolink infosec -inglis -ingram +Inglis +Ingram inhalative injectable innawood -innervision +InnerVision inscribable insectoid inserter insta -instagram +Instagram installable instillers insulative @@ -2726,502 +2743,505 @@ interlaid interlayer intermodal internets -interpol +Interpol intolerances intoxications intradimensional intro introspectionist -inuit +Inuit invlets -iotv -ip -ipade -ipadê -ipav -ipswich -iq -ir -iranian -iraqi -iraqis -irigaray -irineu -irish -irishman +IOTV +IP +Ipade +Ipadê +IPAV +Ipswich +IQ +IR +Iranian +Iraqi +Iraqis +Irigaray +Irineu +Irish +Irishman irising -ironfist +Ironfist ironshod -irradiants -isaac +Irradiants +Isaac isekai ish -isha -ishaan -isherwood -isherwoods +Isha +Ishaan +Isherwood +Isherwoods iskender -islam -islamic -islay -isohypsa -isohypsas -israeli -israelites -iss +Islam +Islamic +Islay +Isohypsa +Isohypsas +Israeli +Israelites +ISS issi -italian -italiana -itas -ithaca -iv -iwi -ix -izchak -izhevsk -izzy +Italian +Italiana +ITAS +Ithaca +IV +IWI +IX +Izchak +Izhevsk +Izzy jabberwock jabberwocks jacare -jackson -jacksonville -jacob -jacques -jadir -jain -jaina -jainism -jainist -jaiva -jake -jakobson +Jackson +Jacksonville +Jacob +Jacques +Jadir +Jain +Jaina +Jainism +Jainist +Jaiva +Jake +Jakobson jalapeno -jamaican -james -jameson -jamey -jamie -jamison -janeiro -janice -janine -january -japanese -jason -jax -jayden -jcp -jedi -jeff -jefferson -jehovah -jemisin -jen -jenkins -jennie -jennings -jeremiah -jerome +Jamaican +James +Jameson +Jamey +Jamie +Jamison +Janeiro +Janice +Janine +January +Japanese +Jason +Jax +Jayden +JCP +Jedi +Jeff +Jefferson +Jehovah +Jemisin +Jen +Jenkins +Jennie +Jennings +Jeremiah +Jerome jerrypack jerrypacks -jerusalem -jesse -jessie -jesus +Jerusalem +Jesse +Jessie +Jesus jetpack jetpacks -jew +Jew jewelboxes -jewish -jews -jhp -jhvh +Jewish +Jews +JHP +JHVH +Ji ji jian -jim -jimbob -jing +Jim +Jimbob +Jing jirts jittering -joab -joanne +Joab +Joanne +Joe joe joes -johansen -johnson -johnstone +Johansen +Johnson +Johnstone joinee joinees -jon -jona -jonah -jonas -jonathan -jones -jordanian +Jon +Jona +Jonah +Jonas +Jonathan +Jones +Jordanian jorts -jose -joseph -josephus -joshua -josie -josé -jotunn -jotunns -jovian -joyce -jr -json -jsp -judaica -judaism -judea -judean -judith -juglans -jules -julian -julie -july +Jose +Joseph +Josephus +Joshua +Josie +José +Jotunn +Jotunns +Jovian +Joyce +Jr +JSON +JSP +Judaica +Judaism +Judea +Judean +Judith +Juglans +Jules +Julian +Julie +July jumpstart -june +June junglefowl -juniperus +Juniperus junkfood -jupiter -jurassic -jurgen -jurgensen -justina -justo -justus +Jupiter +Jurassic +Jurgen +Jurgensen +Justina +Justo +Justus jötunn -jünger -k'iche -kabura +Jünger +K'iche +Kabura kabuto -kaczynski -kadambawa -kafka -kaharingan +Kaczynski +Kadambawa +Kafka +Kaharingan kaiju -kaja -kaje +Kaja +Kaje kakka -kalashnikov +Kalashnikov kaleidoscoping kalimotxo -kalimát +Kalimát kaluptic -kama -kamma +Kama +Kamma kampuch kampuches kanabō -kandas -kandel -kangyur +Kandas +Kandel +Kangyur kannushi -kansas -kant +Kansas +Kant kantele kanteles -kaplan +Kaplan karambit karambits kariginu karita -karo +Karo karsk karting kasaya kasayas -kasey +Kasey kastane -kata +Kata +Katan katan katana katar katars -katha -katherine -katty -katyusha -kaushîtaki -kazakhstani +Katha +Katherine +Katty +Katyusha +Kaushîtaki +Kazakhstani kcalories -keach -kebra +Keach +Kebra keffiyehs keikogi -kel -kells +Kel +Kells kelvinist kelvinists -kemetist -kemp -kena -kendall -kennedy -kenny -kentucky -kenyan +Kemetist +Kemp +Kena +Kendall +Kennedy +Kenny +Kentucky +Kenyan kerblam -kertzer -ketokhila -ketubah -ketubot -kev -kevin -kevlar +Kertzer +Ketokhila +Ketubah +Ketubot +Kev +Kevin +Kevlar keybind keybinding keybindings keypress keyrings kg -khadia -khanda +Khadia +Khanda khirad khopesh khopeshes -khândogya -kia +Khândogya +KIA kickboard kickboards kickboxer -kiddushin -kieran -kierkegaard -kiernan -kiki -kilayim +Kiddushin +Kieran +Kierkegaard +Kiernan +Kiki +Kilayim kilij kilijes -killophant -killophants +Killophant +Killophants kilroy kinbot kinderling kinderlings -kingston -kinney -kipling +Kingston +Kinney +Kipling kippah kippahs -kippur +Kippur kirpan kirpans kittel kittels -kitáb +Kitáb kiymali -kj -klapaucius +kJ +Klapaucius klompen km -knapp +Knapp kneepads knick knifehand knifemaker -knifeshot -knifey -kniga +Knifeshot +Knifey +Kniga knockback knotwork knowium knuckleball -knuth +Knuth koans -kobe -koch -koda -kodokan -kohanim -kohler +Kobe +Koch +Koda +Kodokan +Kohanim +Kohler koi koji -kojiki +Kojiki komodo kompot -kool -kops -kord -korean -koreana -korne +Kool +Kops +Kord +Korean +Koreana +Korne kosmoceratops -kostas +Kostas kote -kovar -kpa +Kovar +kPa krabgek krabgeks -krag +Krag krar krars -krav +Krav kreck krecks kriegsmesser kriegsmessers krills krises -krishna -kriss -kristi +Krishna +KRISS +Kristi kronosaurus -kropotkin -ksg +Kropotkin +KSG kssht kufi -kufic +Kufic kuji kukris -kullavagga +Kullavagga kung kunoichi kunst -kuo -kurt +Kuo +Kurt kuru -kurukshetra -kuwaiti -kyrgyz -kâu +Kurukshetra +Kuwaiti +Kyrgyz +Kâu labbit labbits labcoat -labeouf -labrador +LaBeouf +Labrador labrys -lacan +Lacan laceless -lacey -lachesis -lacroix +Lacey +Lachesis +LaCroix lactofermentation -laemanctus -laevateinn -laevateinns -lagomorpha -lagrange +Laemanctus +Laevateinn +Laevateinns +Lagomorpha +Lagrange lahmacun lahmacuns -laika +Laika lajatang lajatangs lakeshore -lakeville +Lakeville lambeosaurus lamé lamés -lan -lancaster -lancea -landborn +LAN +Lancaster +Lancea +Landborn landline -landough +Landough landrover landshark -landstreicher -lanesborough -lankan -lao -laotian -laozi -lapua -laredo +Landstreicher +Lanesborough +Lankan +Lao +Laotian +Laozi +Lapua +Laredo largeish largemouth -larp -larping -larry -larson -las +LARP +LARPing +Larry +Larson +Las lategame -latin -latina +Latin +Latina latrunculi -latvian -laura +Latvian +Laura laureth -lautrec -lavey -lavochkin +Lautrec +LaVey +Lavochkin lawd -lawrence +Lawrence lbs -lcd -lcp -lcr -le -leadworks -leah -leanne +LCD +LCP +LCR +Le +Leadworks +Leah +Leanne leatherbacked leatherbound leathercraft leathered -leatherface +Leatherface leatherwork leatherworking -lebanese -lecter -leds -leen -lego +Lebanese +Lecter +LEDs +Leen +Lego legwear -leibowitz -leicester -leinster -lela -lem +Leibowitz +Leicester +Leinster +Lela +Lem lemacto lemactos -lemat -lemmon +LeMat +Lemmon lemure -lenin -leninism -lenny -lenox -leo -leominster -leon -leonard -leonardo -leonean -leonid -lepisosteidae +Lenin +Leninism +Lenny +Lenox +Leo +Leominster +Leon +Leonard +Leonardo +Leonean +Leonid +Lepisosteidae leptoceratops -leroy +Leroy lessers -lester -lestrade -leverett +Lester +Lestrade +Leverett levergun leverguns leverpostej -leverton -levi -leviticus -lewistown -lexi -lexington -leyden +Leverton +Levi +Leviticus +Lewistown +Lexi +Lexington +Leyden leylines -lfn -lgbt -lgr -liam -liang -liberian -libyan +LFN +LGBT +LGR +Liam +Liang +Liberian +Libyan lich liches -liechtensteiner +Liechtensteiner lifecycle lifeforce lifeform @@ -3238,34 +3258,34 @@ lightsabers lightshow lightstrip lightstrips -likvidator -likvidators +Likvidator +Likvidators lil -lila +Lila lilypad -lima +Lima limbed -lincoln -linda -lindbergh +Lincoln +Linda +Lindbergh linux -lisa -lithuanian -littleton -liu +Lisa +Lithuanian +Littleton +Liu livestream -liz +Liz lizardfolk lizardlike lizardman -ljósálfar -llc -llywelyn -lmb -lmes -lmg -lmgs -lmoe +Ljósálfar +LLC +Llywelyn +LMB +LMES +LMG +LMGs +LMOE loadout loadouts lobotomizer @@ -3273,256 +3293,258 @@ lobotomizers lobsterman loch lockdown -lockheed +Lockheed lockpick lockpickers lockpicking lockpicks locs -loew -loki +Loew +Loki lolita -london +London longarm longbowmen -longmeadow +Longmeadow longnose longsword longswords looseleaf lootables -lopers +Lopers lorekeeper -lorence -lorentz -los -lottie -lou -louie -louisa -louisiana -louiston -louisville -louverture -lovecraft -lovecraftian -lowell +Lorence +Lorentz +Los +Lottie +Lou +Louie +Louisa +Louisiana +Louiston +Louisville +Louverture +Lovecraft +Lovecraftian +Lowell lowtop -lr -lsd +LR +LSD ltd -lu -luca -lucas -lucian -lucy -ludd +Lu +Luca +Lucas +Lucian +Lucy +Ludd luddites -ludlow -ludos -ludwig -luger -luigi -luke -luliya +Ludlow +Ludos +Ludwig +Luger +Luigi +Luke +Luliya lulo lulos lumberjill lumbermill -luna +Luna lunchbag -lunenburg +Lunenburg lunes -luo -lupercalian +Luo +Lupercalian lutefisk -luther -lutheran -luty -luxembourger -lv +Luther +Lutheran +Luty +Luxembourger +LV lvl -lycra -lydia -lyndon -lynn -lynnfield -lyon -lyotard -lythraceae -lytton -lz +Lycra +Lydia +Lyndon +Lynn +Lynnfield +Lyon +Lyotard +Lythraceae +Lytton +LZ lâ -maasai -maaser -maasrot -maastricht -mabel -mabinogion -maccabees -macduff -macedonian -macgyver -mach +Maasai +Maaser +Maasrot +Maastricht +Mabel +Mabinogion +Maccabees +MacDuff +Macedonian +MacGyver +Mach mache -machen -machiavelli -machina +Machen +Machiavelli +Machina machinegun machineguns machiner -machu +Machu macronutrient macrophenotypic macuahuitl macuahuitls maculata -madagascan +Madagascan madaniyyih -maddy -madeira -madeline -madison -madisonville +Maddy +Madeira +Madeline +Madison +Madisonville +MAG +Mag mag -maga -magellan +Maga +Magellan mages -mageshield -maggie +Mageshield +Maggie magick magickal magicks -magiclysm -magister +Magiclysm +Magister magwell magwells -mahabharata -mahal -mahapuranas -mahavagga -mahayana -mahâ -mahâvagga -mahā -maiar +Mahabharata +Mahal +Mahapuranas +Mahavagga +Mahayana +Mahâ +Mahâvagga +Mahā +Maiar maiasaura -maimon -maimonides -maine -mainog -mair -maitrayani -makarov -makayla -makeda -makepeace +Maimon +Maimonides +Maine +Mainog +Mair +Maitrayani +Makarov +Makayla +Makeda +Makepeace makerspace makizushi -makkot -maknúnih +Makkot +Maknúnih malachites -malackey -malawian -malaysian -malden -maldivian -maldonado -malian +Malackey +Malawian +Malaysian +Malden +Maldivian +Maldonado +Malian malignalitaloptereosis -malignance -mallick -malsumis -maltese -malus -manafusion -manatouched -manatricity +Malignance +Mallick +Malsumis +Maltese +Malus +Manafusion +Manatouched +Manatricity manball manballs manca mancae mancala -manchester -manchurian -mandaean -mandaeans -mandeep -mandy +Manchester +Manchurian +Mandaean +Mandaeans +Mandeep +Mandy manfriendwich manfriendwiches -mang -mangalpreet -mangifera +Mang +Mangalpreet +Mangifera manhack manhacks -mannbrat -mannbrats -mannwurst -mannwursts +Mannbrat +Mannbrats +Mannwurst +Mannwursts manoomin -mansfield +Mansfield manti -manu -manurhin +Manu +Manurhin manwich manwiches -maori +Maori mapgen maracuya -marblehead -marconi -marcuse -marduk -margaret -marie +Marblehead +Marconi +Marcuse +Marduk +Margaret +Marie marilandica -marion -markia -marlborough -marley -marloss -marryat +Marion +Markia +Marlborough +Marley +Marloss +Marryat marsala -marsanes -marsec -marshallese -marshfield -martell -martha -martians -marty -maruts -marxism -mary -maryland -marzanna +Marsanes +MarSec +Marshallese +Marshfield +Martell +Martha +Martians +Marty +Maruts +Marxism +Mary +Maryland +Marzanna mascarpone -mashpee -masri +Mashpee +Masri massachusetite -massachusetts +Massachusetts massager masse massproduced -mastercut +Mastercut masterkey masterkeys matcha matchhead materiel -mathemax -matheson -matricaria -matrioshka +MatheMAX +Matheson +Matricaria +Matrioshka matryoshka -matsumoto -mattapoisett -mattheau -matthew -mau -mauritanian -mauser +Matsumoto +Mattapoisett +Mattheau +Matthew +Mau +Mauritanian +Mauser mausketeer mausketeers mavka @@ -3530,22 +3552,23 @@ mavkas max mayaheri mayaheros -mayfield +Mayfield mayfieldi -maynard -mccaffordy -mcdowell -mcfarland -mchugh -mckenzie -mclaughlin -mcmahon -mcmillan -mcs -mcx +Maynard +McCaffordy +McDowell +McFarland +McHugh +McKenzie +McLaughlin +McMahon +McMillan +MCS +MCX +MD md -mdf -mdrx +MDF +MDRX mealgrub mealgrubs meathook @@ -3553,62 +3576,62 @@ meatshield mech mechs med -medfield -medford +Medfield +Medford medibot medibots -medigel -medigels -medisoft -mediterranean +MediGel +MediGels +MediSoft +Mediterranean meds -medusae -medway -megablast +Medusae +Medway +Megablast megachette megachettes megacity megacorporation megacorporations megafaunal -megamart +Megamart megastore -meghan -megillat -megingjörð +Meghan +Megillat +Megingjörð meh -meizhen -melchior -melchizedek +Meizhen +Melchior +Melchizedek melee -melian -melissus -melitzanosalata -melony -melrose +Melian +Melissus +Melitzanosalata +Melony +Melrose memes memoriam -memphis -mendez -mendon -menelik +Memphis +Mendez +Mendon +Menelik menemen -meng +Meng menpo -mentos +Mentos merc merch -merck +Merck mercs -merriam -merrimac -mertensia +Merriam +Merrimac +Mertensia mesenterium -meskwaki -mesoamerica -mesoamerican -mesoamericas -mesopotamian +Meskwaki +Mesoamerica +Mesoamerican +Mesoamericas +Mesopotamian meta metalcutting metallics @@ -3620,21 +3643,22 @@ metatopography meth methacola methamphetamines -methodist +Methodist methothexazole -methuen -methusalah -metzia -meusoc -mexican -mgl -mia -miami +Methuen +Methusalah +Metzia +MEUSOC +Mexican +MGL +MIA +Mia +Miami micellular -michael -michel -michigan -michoacán +Michael +Michel +Michigan +Michoacán microbian microbians microbrewed @@ -3650,17 +3674,17 @@ microgenerators microjet microlab micromonies -micronesian +Micronesian microplane microportal microportals microreactor microskirt -mictlān -middleborough -middlefield -middlesex -middleton +Mictlān +Middleborough +Middlefield +Middlesex +Middleton mideast mideastern midgame @@ -3671,25 +3695,25 @@ midwest midwestern might've migo -mikagura -mikhail -miki -milan -miley -milford -milinda +Mikagura +Mikhail +Miki +Milan +Miley +Milford +Milinda milkfat -milkor -millbury +Milkor +Millbury millenia -millie -millis -millville -millyficent +Millie +Millis +Millville +Millyficent milspec -milton -mimekor -mimi +Milton +Mimekor +Mimi min mindblasting mindhammer @@ -3697,7 +3721,7 @@ mindhand mindhands mindrender mindrenders -mindstone +MindStone minhocao minhocaos minifreezer @@ -3707,158 +3731,161 @@ minifridges minigun miniguns minimap -minimi +Minimi mininuke mininukes minireactor minireactors -minneapolis -minnesota -minnie +Minneapolis +Minnesota +Minnie mino minotaur mins -mintonette -miriam -mirkwood +Mintonette +Miriam +Mirkwood mirrorshades mis misc -mises -mishnah -misinter +Mises +Mishnah +Misinter misprogram -mississippi -mit -mithraic -mithraism +Mississippi +MIT +Mithraic +Mithraism mithril mitre mitzvot -miyagi -miyamoto -mj -mjölnir -mjölnirs -mk -mkii -ml +Miyagi +Miyamoto +mJ +Mjölnir +Mjölnirs +Mk +MKII +mL mm -mma +MMA mmm +Mo mo moar mobbings -mobius +Mobius modded modding -moed +Moed mohawk mohawks -mohegan -moism -mojave -mojocycle +Mohegan +Moism +Mojave +Mojocycle mokorotlo -moldovan +Moldovan moldspring moldsprings -molle +MOLLE molluscicide -molotov -molotovs -monday -monegasque -mongolian -monica -monoco +Molotov +Molotovs +Monday +Monegasque +Mongolian +Monica +Monoco monocrystalline monogyna monometal monopod -monroe -monroeville -monson -montague -montante -montenegrin -monterey -montgomery -montpelier +Monroe +Monroeville +Monson +Montague +Montante +Montenegrin +Monterey +Montgomery +Montpelier montreal moodswing mooks moonflower moonflowers -moosek -moraceae -morales -moravian -mord -moreau -moreauburger -moreauburgers -morgan -mori -mormon +Moosek +Moraceae +Morales +Moravian +Mord +Moreau +Moreauburger +Moreauburgers +Morgan +Mori +Mormon morningstar morningstars -moroccan +Moroccan moroi morph morphic mortem mortems -morthylla +Morthylla mortis -morto -morton -morus +Morto +Morton +Morus mosaicus mosaicuses mosasaurus -moscow -moses -moshiach -mosin -mossberg +Moscow +Moses +Moshiach +Mosin +Mossberg mossling mosslings mostlike -motd +MOTD motorhead motorpool motorsports moulinet -mourchida +Mourchida mouthgear movesets -movimiento +Movimiento moxies -moxphore -moyer -mozart -mozilla -mp +MoxPhore +Moyer +Mozart +Mozilla +MP mph -mr +MR +Mr +MRAD mrad -mre -mres -mri -mrs -msv -mtar -muay +MRE +MREs +MRI +Mrs +mSv +MTAR +Muay mudcrack -mudge -mudora -mufasa +Mudge +Mudora +Mufasa mugwort -muhammad -mulder -muldoon -mulroy +Muhammad +Mulder +Muldoon +Mulroy multi multiclean multidrop @@ -3872,55 +3899,55 @@ multiversal multiverse mumbo munchings -mundaka -muppet +Mundaka +Muppet murderball murderballs murdersaw murdersaws muriatic -musashi +Musashi musculoskeletal -muslim -muslims -muspelhiem +Muslim +Muslims +Muspelhiem must've -mustela +Mustela mutagenically mutagenicity mutus muzzleloaders -mw -mx -myanma -mycal -mycenacean -mycogenesis +mW +Mx +Myanma +Mycal +Mycenacean +Mycogenesis mycoid mycorrhizal -mycus -myers -mâdhyandina -mânûskihar -māori +Mycus +Myers +Mâdhyandina +Mânûskihar +Māori nagamaki -nagant +Nagant naginata -nagoya -nahant -nahuatl +Nagoya +Nahant +Nahuatl nailboard nailboards -najah -nakayama +Najah +Nakayama nakha -nala -nam +Nala +Nam namag namele -namibian -nana -nani +Namibian +Nana +Nani nano nanobots nanocompound @@ -3939,155 +3966,156 @@ nanoskirts nanotech nanotubes nanowire -nantucket +Nantucket nanuqsaurus naproxen naptime -nara +Nara naranjilla -narayana +Narayana narco -narnian -narragansett -nasa -nasks +Narnian +Narragansett +NASA +Nasks nasties -natalie -natick +Natalie +Natick natively -nato -nauruan -navajo -navayana -nayak -nazgûl -nazi -nazir -nazirite -nazirites -nazis -nbc -nda -neal -nebraska -necc +NATO +Nauruan +Navajo +Navayana +Nayak +Nazgûl +Nazi +Nazir +Nazirite +Nazirites +Nazis +NBC +NDA +Neal +Nebraska +NECC necco neccos neckbeard necro -necronomicon +Necronomicon necrotizing necrowolf nectivore -ned -nedarim -needham +Ned +Nedarim +Needham needlelike -needletip +Needletip neg -negast -neha -nellie -nema -nemo +Negast +Neha +Nellie +NEMA +Nemo +Neo neo -neondorthall +Neondorthall neotenic neotheropod -nepali -nepower -nepoweros -neptune +Nepali +NEPower +NEPowerOS +Neptune nerf nerfs -nero +Nero netherium nethermancer nethermancers netherum netkit neuro -neurobionic -neurobionics +Neurobionic +Neurobionics neurocognitive neurocranium neurodegeneration neuroimaging -neuromancer +Neuromancer neuroprosthetic neuropsychology -neurosoft +Neurosoft neurostimulators neurosynaptic neurotoxin neutrite neutrites -nevada -nevaeh +Nevada +Nevaeh neverending nevermind -newbury -newburyport -newfoundland -newport +Newbury +Newburyport +Newfoundland +Newport newsbots -newtonian -nfa -ngon -nguni -nhat +Newtonian +NFA +Ngon +Nguni +Nhat nibelung -nicaraguan -nicholas +Nicaraguan +Nicholas nichrome -nicodemus -nicola -niddah -nietzsche -niflheim -nigel -nigerian -nigerien +Nicodemus +Nicola +Niddah +Nietzsche +Niflheim +Nigel +Nigerian +Nigerien nightcrawler nighter nighters nightgaunt nightgaunts -nightshifter -nightsight +Nightshifter +Nightsight nightstalker nightstalkers nightvision nigori -nigra -nihon -nij -niklaus -nikolai -niles +Nigra +Nihon +NIJ +Niklaus +Nikolai +Niles nimbelemnite nimbelemnites -nimue -nina -ninhursag +Nimue +Nina +Ninhursag ninjutsu -nipâta -nishan -niten -nitron +Nipâta +Nishan +Niten +Nitron nitrox -niven -nixon +Niven +Nixon niño -nmr -nobel +NMR +Nobel nodachi nodosaurus noetically -nogueira +Nogueira noir nom -nomex +Nomex nonbinary nonprolific nonrevealing @@ -4102,112 +4130,112 @@ nopales nopalito nopalitos nord -nordic +Nordic nords -norea -norfolk +Norea +Norfolk normie norovirus -norse -northampton -northborough -northbridge -northfield -northrop -norton +Norse +Northampton +Northborough +Northbridge +Northfield +Northrop +Norton norvegicus -norwegian -norwell -norwood +Norwegian +Norwell +Norwood noseless -nosferatu +Nosferatu nothronychus -novak -november -nozick -npc -npcs -nr -nra -nre -nsa -nsaid +Novak +November +Nozick +NPC +NPCs +NR +NRA +NRE +NSA +NSAID nuckalavee nuckalavees nuda nudicaulis -nuevo +Nuevo nuh num numbnut numpad -nunez -nv -nw -nyâyis -o'brian -o'connor +Nunez +NV +NW +Nyâyis +O'Brian +O'Connor o'lantern o'lanterns -o'reilly -oa -oakham -oakland -oakley -oates -obrez +O'Reilly +OA +Oakham +Oakland +Oakley +Oates +Obrez obscura -oceania -oct -octavia +Oceania +Oct +Octavia octo -october +October ocularium oculariums -odie -odin +Odie +Odin officinale offputting offroad offroading offworld offworlders -ofudekasi -ogam -ogã -ohio -ojibwe +Ofudekasi +Ogam +Ogã +Ohio +Ojibwe ok okie -okinawan -olaf -olam -olcott +Okinawan +Olaf +Olam +Olcott olieribos -oliver -olivia -olwen -olympia -olympian -olympic -olympics -omani +Oliver +Olivia +Olwen +Olympia +Olympian +Olympic +Olympics +Omani omni -omnicellular -omts +Omnicellular +OMTs onboard -ondua -onduine +Ondua +Onduine onesie onesies onigiri ons onsite -ooarai +Ooarai op opalbinia opalescently -opel +Opel openable opengl openingly @@ -4216,52 +4244,53 @@ ophanims orc orcs ordinator -oreo +Oreo orgs orichalcum -orinoco -orion +Orinoco +Orion orishas ork -orlah -orlando -orleans +Orlah +Orlando +Orleans ornithomimid ornithomimus -orpheus -orphic -orson -orwell +Orpheus +Orphic +Orson +Orwell oryctodromeus -os -osashizu -osb +OS +Osashizu +OSB +Oscar oscar oscars -oscillococcinum -osha +Oscillococcinum +OSHA osho -osiris +Osiris osteoderms -osteoglossidade +Osteoglossidade osteokinesis -oswald -oswego -otaku +Oswald +Oswego +Otaku otherland otherlander otherlands otherworlds -othniel -otis -otm -otmss -otomo -otten -ouija +Othniel +Otis +OTM +OTMSS +Otomo +Otten +Ouija outdoorsman ovata -ovcharka +Ovcharka overaccelerate overboots overclock @@ -4289,67 +4318,68 @@ overwatch owchie owlbear owlbears -oxbridge +Oxbridge oxycodone oxygenator -oyasama +Oyasama +Oz oz -pablo +Pablo pachira pachycephalosaurus pachyrhinosaurus packmate packmule -packstone +Packstone pacu pacus -pahlavi +Pahlavi paintballs -pakistani +Pakistani palaeoanthropology -palauan +Palauan paleozoic -palestinian -palmero -pam -panaceii -panaceus -panamanian -panaturan +Palestinian +Palmero +PAM +Panaceii +Panaceus +Panamanian +Panaturan pancora -pand -pandavas -pankratiast -pankration +Pand +Pandavas +Pankratiast +Pankration panoplosaurus -panopticonic +Panopticonic pansexual -pao -paolo +Pao +Paolo papalomeh papalotl -papaver +Papaver paperclipped papier -papuan +Papuan papyrifera parabellum parabolan parachuter -paraclesian -paraguayan +Paraclesian +Paraguayan parajubea parasaurolophus parasitoid parasitoids -paraskara +Paraskara paratronic paratronics -paribhashasutras -paricutín +Paribhashasutras +Paricutín parinibbāna -paris -parisishta +Paris +Parisishta parkour parotoid partygoer @@ -4357,47 +4387,47 @@ partygoers parvas passcode passionfruit -pastafarian -patagonia +Pastafarian +Patagonia pathfinding -patrick -paul +Patrick +Paul pauldrons -paulus +Paulus pawpads -paxton -payne -pba -pbj -pc -pcs -pdcurses -pdw -pdws -pe'ah -peabody +Paxton +Payne +PBA +PBJ +PC +PCs +PDCurses +PDW +PDWs +Pe'ah +Peabody peanutbutter pearlescent -pearlman +Pearlman pecorino pedipalps -pedro +Pedro pekmez pelmeni -pembroke -pencak +Pembroke +Pencak penetrator penetrators -pennsylvania -pennywise -penobscot +Pennsylvania +Pennywise +Penobscot pentaceratops -pentecost -pentecostal -pepeha -pepperell +Pentecost +Pentecostal +Pepeha +Pepperell pepto -percy +Percy perforators periapta periaptas @@ -4406,36 +4436,36 @@ permadeath permutator permutators perplexion -perseus -persian +Perseus +Persian persica -peruvian -pesachim -pete -peterson -petn +Peruvian +Pesachim +Pete +Peterson +PETN peto petos petpack petpacks petrichor peytral -pf +PF pfft -pfw -ph +PFW +pH phaser -phavian -phd -pheidippides +Phavian +PhD +Pheidippides phelloderms -phelps -philaret -philip -philips -phillip -phillips -phillipston +Phelps +Philaret +Philip +Philips +Phillip +Phillips +Phillipston phonologies photochromic photodiode @@ -4444,51 +4474,51 @@ photonics photoshopped photoshopping phrygian -phyllostachys -piby -picarelli -picatinny -picchu +Phyllostachys +Piby +Picarelli +Picatinny +Picchu pickelhaube pickelhauben pickhead pictograms pide -pierre -pietta +Pierre +Pietta piezomechanical -pilate +Pilate pina pinecone pinecones pinita -pinkman +Pinkman pinnae pinnata -pinot +Pinot pinout -pinus +Pinus pipebomb pipebombs pipeworks -pippa +Pippa piraiba piraibas -pisces +Pisces pissbrain -pistacia +Pistacia pitbull pitchwoman -pittsfield +Pittsfield pixelates pixeled pizzaiolo -pizzaland -pk -pker -pkers -plainfield -plainville +PizzaLand +PK +PKer +PKers +Plainfield +Plainville planetside plano plantkin @@ -4497,12 +4527,12 @@ plastron platemail plateosaurus platings -plato -platt -playstation +Plato +Platt +PlayStation playstyle playthroughs -plc +PLC pleco plecos pleistocene @@ -4511,19 +4541,20 @@ plinker plinking plushie plushies -pluto -plymouth -plympton +Pluto +Plymouth +Plympton +PM pm -pmc +PMC podling podlings pokeball -pokémon -polaris +Pokémon +Polaris polaroid polaroids -polcom +PolCom polearm polearms poleyns @@ -4532,146 +4563,146 @@ polymorph polymorphed polypous polysexual -pontius -popol +Pontius +Popol populifolia -populus +Populus popup popups porkbelly porrifolius -portland +Portland portmaster pos posteriori posthuman -potamotrygonidae +Potamotrygonidae potentiates -potsy -potus +Potsy +POTUS pouff pouncers -powell +Powell powerlifting powerline powerplant powerplants powerpoint -powerthirst -ppa +Powerthirst +PPA ppavattana -ppe -ppk -ppq -ppsh -pr -prado -pragnâ -prasna -pratchett -prc +PPE +PPK +PPQ +PPSh +PR +Prado +Pragnâ +Prasna +Pratchett +PRC pre preapproved precisionist -precolumbian +Precolumbian precombined predatorially premade premeasured preoptic prepended -prepnet +PrepNet prepper preppers -presbyterians -pressin +Presbyterians +Pressin prev -princeton -principia +Princeton +Principia priori pritchel -pritchett -priya -prochilodontidae -produkt +Pritchett +Priya +Prochilodontidae +Produkt prog propyl prosaurolophus protege -protennoia -proudhon -provincetown -prozac -prs -prunus -prussian +Protennoia +Proudhon +Provincetown +Prozac +PRs +Prunus +Prussian prybar -pryce +Pryce pseudocode pseudolimbs pseudomagical pseudopods -pseudothelphusidae +Pseudothelphusidae pshht -psiom +Psiom psion psionic psionics -psl -psu +PSL +PSU psychiatrically psychokinetics psychopharmacological psychoreactive psychrophile -pt -ptr -ptsd -puebla -puerto +Pt +PTR +PTSD +Puebla +Puerto pufts puker pukers -pumpkinhead -pundarika -punica -punicoideae -punjabi -puranas -purim +Pumpkinhead +Pundarika +Punica +Punicoideae +Punjabi +Puranas +Purim purviews pushmower pwn -pyrenean -pyrenees +Pyrenean +Pyrenees pyrokinesis pyrokinetic pyrolusite -pyroportation +Pyroportation pyrrolidone -pyrus -pâda +Pyrus +Pâda pâramitâ -pātimokkha -qatari -qdss +Pātimokkha +Qatari +QDSS qiang qianzhousaurus -qol -qolastā -qr +QOL +Qolastā +QR qt quadcopter -quaker -quakers -quan +Quaker +Quakers +Quan quarterpanel -quebec -quechua +Quebec +Quechua queenright -queensland -quercus -querecho +Queensland +Quercus +Querecho quesadillas quetzalcoatlus quickdraw @@ -4681,13 +4712,13 @@ quickload quicksave quillbag quillbags -quincy -quinn -quixote -quran -rabba +Quincy +Quinn +Quixote +Quran +Rabba racecar -rachel +Rachel racketus rad radiants @@ -4696,53 +4727,53 @@ radiogenic radiophile rafflesias raggiana -ragnarok +Ragnarok railgun railguns -raimundo +Raimundo raincatcher raincatchers rainsuit rainsuits -raketa -raketas -raleigh -rallidae -ralph -rama -ramadan -ramayana -rambo -ramin -ranade -randall -randolph -raoul +Raketa +Raketas +Raleigh +Rallidae +Ralph +Rama +Ramadan +Ramayana +Rambo +Ramin +Ranade +Randall +Randolph +Raoul rashguard rashy -rastafarian -ratatosk +Rastafarian +Ratatosk rattigan rattigans -rattus -raufoss -rav -ravana +Rattus +Raufoss +Rav +Ravana ravenfolk rayed -raynham +Raynham razorbar razorclaw razorclaws razorsharp razzle -rc -rci +RC +RCI rd -rda -rdb -rds -rdx +RDA +RDB +RDS +RDX reactively readme reaim @@ -4766,43 +4797,43 @@ recraft recrafted recuperators recutita -redaxe -redekopp -redhawk +Redaxe +Redekopp +Redhawk redsmith redsmithing -reena +Reena reenabled reenactor reenactors refuelable regenerators -reggie +Reggie regia -regin -rego -rehobeth -rehoboth +Regin +Rego +Rehobeth +Rehoboth rehydrated rehydrating rehydration reimagining -rekhter +Rekhter reliables reloadable remediated -remington +Remington remodulator -remy +Remy rended renfaire renfaires renfield renfields -reno +Reno repairwork replow -represa +Represa reprime reptoid reptoids @@ -4813,90 +4844,90 @@ rerebraces rerio reroll rerolling -res +Res resinosa resize resmelt resublimed retrodays reuben -reversi +Reversi revulses rex rexes -rfa -rfb -rfid -rgb -rh +RFA +RFB +RFID +RGB +Rh rhabdomyolysis -rheims -rhode -rhodes -rhodians -rhy +Rheims +Rhode +Rhodes +Rhodians +Rhy rhytidome rhytidomes -rhyzaea -ri +Rhyzaea +RI ribboner ribbonlike -rican -ricardo +Rican +Ricardo ricasso -richard -richards -richardson -richmond -ricky -rico +Richard +Richards +Richardson +Richmond +Ricky +Rico rideable rideshare ridgeback -riesling +Riesling riftwalker riftwalkers riggings rigida -rigveda -riley +Rigveda +Riley rinded -ringworld -rio -ripley -risali +Ringworld +Rio +Ripley +Risali riverstone -rivos -rivtech -rizzo -rmb -rmes +RivOS +Rivtech +Rizzo +RMB +RMES roadheader roading roadstop roastable -robbie -robbins -robert -robinson +Robbie +Robbins +Robert +Robinson robo robogun roboguns robotfindscatan robotfindskitten -rocco -rochester -rockbolt +Rocco +Rochester +Rockbolt rockclimbing -rockford -rockland -rockport +Rockford +Rockland +Rockport rockwheel rockwheels rocuronium rodding -rodgers -rodriguez +Rodgers +Rodriguez roguelike roguelikes roids @@ -4907,355 +4938,356 @@ rollerblades rollerskates rollmat rollmats -roma -romanian -romano -romans -rome -romero +Roma +Romanian +Romano +Romans +Rome +Romero roncone -roosevelt +Roosevelt ropemaking -rosa -rosaceae -roscoe -roscosmos -rosh -rosie -rosner -ross -roswell +Rosa +Rosaceae +Roscoe +Roscosmos +Rosh +Rosie +Rosner +Ross +Roswell rothe rougarou -rourke -rowe -rowland -rowley -roxanne -roxy -roy +Rourke +Rowe +Rowland +Rowley +Roxanne +Roxy +Roy royale -royalston -royce -rpg -rpgs -rpk -rtg -rtgs -ru -rubaiyat +Royalston +Royce +RPG +RPGs +RPK +RTG +RTGs +Ru +Rubaiyat rubbles -rubik +Rubik rubra -ruckers -rudolph -rudra -rudy -rudyard -ruger +Ruckers +Rudolph +Rudra +Rudy +Rudyard +Ruger ruggedized ruleset runtime -rupp -rushmore -ruslan -russel -russell -russian -rutland -ruttenberg -rv -rvs -rwandan -ryan -rycon -ryder -ryu +Rupp +Rushmore +Ruslan +Russel +Russell +Russian +Rutland +Ruttenberg +RV +RVs +Rwandan +Ryan +Rycon +Ryder +Ryu ryūsei -râmânuja -régime +Râmânuja +Régime rōnin s'mores -sa +SA sabalo sabalos sabaton sabatons -sabbâsava +Sabbâsava saccharification saccharum -saddharma -sadie -sadm +Saddharma +Sadie +SADM safehouse safeline safemode safepoint safewords -safinatun -sagrada +Safinatun +Sagrada saintess -saipan -sako +Saipan +SAKO salca -salem -salisbury -salix +Salem +Salisbury +Salix saltpan -salus -salvadoran +Salus +Salvadoran salvor salvors -sam -sambal -sambucus +Sam +Sambal +Sambucus samghati samghatis -sammarinese -sammy -samoan -samopal -samoyed -samoyeds -samuel -samuels -sanatsugâtîya -sanchez +Sammarinese +Sammy +Samoan +Samopal +Samoyed +Samoyeds +Samuel +Samuels +Sanatsugâtîya +Sanchez sanctacaris sandcasting -sandhu -sandisfield +Sandhu +Sandisfield sandleather sandleathers -sandra -sangha -sanhedrin -sanitron -sankaracharya -sankhyayana -sanskrit -santa -santo -santos +Sandra +Sangha +Sanhedrin +Sanitron +Sankaracharya +Sankhyayana +Sanskrit +Santa +Santo +Santos sapiens -sapiovore -sapra +Sapiovore +Sapra saproling saprolings saprophage saprovore -sarah -sarahs +Sarah +Sarahs sarahsaurus -sarajevo +Sarajevo saraph sarcosuchus -saritania -sarlacc +Saritania +Sarlacc sarma -sarna +Sarna sarracenias -sartre -sas -sasanian -sasha +Sartre +SAS +Sasanian +Sasha sashimi -sasquatch -satan -satapatha -sattler -saturday -saturn -sauer -saugus +Sasquatch +Satan +Satapatha +Sattler +Saturday +Saturn +Sauer +Saugus saurolophus sauropelta saurornitholestes saurulophus sautee sauteed -sauvignon +Sauvignon savoiardi sawblade sawblades sawteeth -sawzall -saxon -saxons -sbl -sbr -sca -scalefolk +Sawzall +Saxon +Saxons +SBL +SBR +SCA +Scalefolk scammer -scandinavia -scandinavian +Scandinavia +Scandinavian scav scavs -scba -schmeisser -schoen +SCBA +Schmeisser +Schoen schoolbus -schoolclothing +SchoolClothing schooler -schopenhauer -schroeder -schubert -schulz -schwarz +Schopenhauer +Schroeder +Schubert +Schulz +Schwarz sci -scientology +Scientology scifi -scincidae +Scincidae scissorlimbs -scituate +Scituate sclerotin sclerotized -scofield +Scofield scolosaurus -scotland -scots -scotsman -scotsmen -scott -scottish -scp +Scotland +Scots +Scotsman +Scotsmen +Scott +Scottish +SCP screecher screenshot screwdriving scrying -sct +SCT scutcher scutchers scutellosaurus -scx +SCX scylla -sd -sdart -sdl -sdp -se +SD +SDART +SDL +SDP +SE sealab sealabs -sean +Sean seances seatbelts seater sec secubot secubots -seder +Seder seedshaper seedshapers -seekonk -seelie +Seekonk +Seelie segmentata -segway -seinerweisen +Segway +Seinerweisen seldomly selfie semirural semitangible -semper -senegalese +Semper +Senegalese senet sensei sentients -september -serbian -serbu -serdyukov +September +Serbian +Serbu +Serdyukov serendipnol serendipnols -serra -serrano +Serra +Serrano serrulata -seth -seward +Seth +Seward seweranha seweranhas -sextus -seychellois -seyfert -sf -sfc -shabbat +Sextus +Seychellois +Seyfert +SF +SFC +Shabbat shabriri -shacharit -shaddam -shadowcaser +Shacharit +Shaddam +Shadowcaser shadowcat shadowcats -shafi'i +Shafi'i shahada -shaiva -shakespeare -shakha -shakta +Shaiva +Shakespeare +Shakha +Shakta shambler shamblers shamir shamshir shamshirs -shan -shane +Shan +Shane +Shang shang -shania +Shania shanking shantak -shaolin +Shaolin shapechangers shapeshift shapeshifter -shardspray -shardstorm +Shardspray +Shardstorm sharksuit sharksuits -sharma -sharon -sharptooth -shaun -shawn -shayla -shazgra -sheba +Sharma +Sharon +Sharptooth +Shaun +Shawn +Shayla +Shazgra +Sheba shedded shedim sheeple sheesh -sheffield -shekalim -shelburne -shelby -shelley +Sheffield +Shekalim +Shelburne +Shelby +Shelley shelvings -shem -shema -shemitah -shen +Shem +Shema +Shemitah +Shen shenandoah -sheni -shenk -shep -sherborn -sheri -sherlock -sherman -shert -shevi'it -shevuot +Sheni +Shenk +Shep +Sherborn +Sheri +Sherlock +Sherman +Shert +Shevi'it +Shevuot sheyd -shia -shih -shii -shikishma -shiloh -shimon -shinderling +Shia +Shih +Shii +Shikishma +Shiloh +Shimon +Shinderling shinobi -shinto +Shinto shipside -shipwrecker -shirley +Shipwrecker +Shirley shitass shitbag shite @@ -5270,7 +5302,7 @@ shockwaves shoggoth shoggoths shogi -shoki +Shoki shootable shopkeep shorthair @@ -5279,125 +5311,125 @@ shoryuken shotcestus shotcestuses shotgunner -shotpistol -shotpistols +Shotpistol +Shotpistols shotshell shotshells should've shoulderblades -shrewsbury +Shrewsbury shriekling shrieklings shroom shrooms shrubland -shuchan -shui -shulchan -shunryū -shutesbury +Shuchan +Shui +Shulchan +Shunryū +Shutesbury shuttlecraft shuttlepod -shâyast -shû -shōtōkan -siamese +Shâyast +Shû +Shōtōkan +Siamese siats -siberia -sicc -sicp -siddhartha -siddurim +Siberia +SICC +SICP +Siddhartha +Siddurim sidhe -sidhu -sidr -sierpinski -sig +Sidhu +Sidr +Sierpinski +SIG sigils -sigurd -sikand -sikh -sikhism -sikorsky -silat +Sigurd +Sikand +Sikh +Sikhism +Sikorsky +Silat siloed siloing -silvergram -silvergrams -silverhawk -silverhawks -silverstein -silvestra -silvestris -simmons -simon -simons -simulacron -sinai -sinapis -sinbad -sindar -sindarian +Silvergram +Silvergrams +Silverhawk +Silverhawks +Silverstein +Silvestra +Silvestris +Simmons +Simon +Simons +Simulacron +Sinai +Sinapis +Sinbad +Sindar +Sindarian sinensis -singaporean -singh -singhs +Singaporean +Singh +Singhs sinously -siobhan -sioux +Siobhan +Sioux sippy -sirach -sirhan -sisyphus -sita -sivi +Sirach +Sirhan +Sisyphus +Sita +Sivi sixdust sixgun -skeena +Skeena skeletonized skillset -skinfolds +Skinfolds skitterbot skitterbots -sklyarov -sks +Sklyarov +SKS skullgun skullguns skybridge -skye +Skye skyglass -skynet -slavic -slenderman +Skynet +Slavic +Slenderman slimed -slimewave +Slimewave slitted -slovakian -slovenian +Slovakian +Slovenian slowfall -slr +SLR sludged sluglike slurriless smallmouth -smaragdina +Smaragdina smartcard smartgun smartphone smartphones smashable -smg -smgs +SMG +SMGs smithing -smle +SMLE smokable smoothbores smoots -smr -smythe +SMR +Smythe snakelet snakelets -sni +SNI snikt snotgobbler snotgobblers @@ -5406,51 +5438,51 @@ snuggies snuggly socketed socketing -socom -soergelia -sof +SOCOM +Soergelia +SOF softcovers -sokoban -solaris +Sokoban +Solaris solarpunk solarpunks solderless solera -soloveitchik -somali -somerville +Soloveitchik +Somali +Somerville sommat somniferum -sonia -sophia -sophie -sopmod -soren +Sonia +Sophia +Sophie +SOPMOD +Soren sotah souffles -soulbinder -soulfire -soulrend +Soulbinder +Soulfire +Soulrend soundpack soundscape -southampton -southborough -southbridge -southwick -soyang +Southampton +Southborough +Southbridge +Southwick +Soyang soylent -soyombo -soypelusa -sp +Soyombo +SoyPelusa +SP spacebar -spaceborn +Spaceborn spacetime spadelike spalling -spanish +Spanish sparam sparkers -spartans +Spartans spasming spazzing spearcat @@ -5463,18 +5495,18 @@ speedloader speedloaders speedo speedos -speedydex +SpeedyDex spellbook spellcaster spellcasters spellcasting spellcraft spellcrafters -spetsnaz +Spetsnaz spezi sphenocorona sphenocoronae -sphynx +Sphynx spideer spideers spiderden @@ -5487,8 +5519,8 @@ spinosaurus spinwheel spinwheels spitzer -spiw -spiws +SPIW +SPIWs splashproof splorch spoked @@ -5496,71 +5528,73 @@ spokeswyrm spongey sporeling sporelings -sporeos +SpOreos spork sporks sporter sporulating -spr +SPR sprayable spraypainted spraypainting -springfield -springfields +Springfield +Springfields springstaff -springwater +Springwater spriteling spritelings sproglodyte sproglodytes sprouter -sps -spx +SPS +SPX squamish -sr +SR src -srcf -srcfs -sridhar -srila -srimad -st +SRCF +SRCFs +Sridhar +Srila +Srimad +ST +St stablization stackable -stan -stanag -stanisław -stanley -stapeldon -starhawk +Stan +STANAG +Stanisław +Stanley +Stapeldon +Starhawk starship starships stat staticskin statisticality staunchable -std +STD steampunk steelshod steeltoed stego stegoceras stegosaurusfindsrobot -steinbeck -stella -sten -stenio +Steinbeck +Stella +STEN +Sten +Stenio stenonychosaurus -stens -stephen -stephenson -steve -steven -stevens -steyr -sti -stig -stillwater +STENs +Stephen +Stephenson +Steve +Steven +Stevens +Steyr +STI +Stig +Stillwater stimpack stimulators stinktoad @@ -5569,17 +5603,17 @@ stinkyface stirfry stirge stirges -stirling -stirner -stockbridge -stokey +Stirling +Stirner +Stockbridge +Stokey stompers stompy -stonefist -stonefoot -stoneham -stonehenge -stonehenges +Stonefist +Stonefoot +Stoneham +Stonehenge +Stonehenges stonelike stoneling stonelings @@ -5590,55 +5624,56 @@ storable stormcaller stormcallers stormclouds -stormfist -stormfists -stormglove -stormguard -stormhammer -stormhammers +Stormfist +Stormfists +Stormglove +Stormguard +Stormhammer +Stormhammers stormshaper stormshapers stormshaping stormtrooper stormwind -stoughton +Stoughton stovetop stovetops -str -stranglethorns +STR +Str +Stranglethorns strategize stratoscomm streetfighter streetfighters -streetsweeper -streetsweepers +Streetsweeper +Streetsweepers streetwear stressfully striders strigoi strobing strobus -stromer -stross -strugatsky +Stromer +Stross +Strugatsky struthiomimus -stryker +Stryker stungun stuntongue stuntongues stupidass -sturbridge +Sturbridge stutterstep stutterstepping stylette styracosaurus -styx +Styx subcutis subdermal -subgenius +SubGenius subgun subguns -subj +Subj sublimb submachine submachinegun @@ -5652,27 +5687,27 @@ subspell subspells subwoofer suchomimus -sudanese -sudassana -sudbury +Sudanese +Sudassana +Sudbury sudo -sugarkin -sugarrush -sukhâvati -suki -sukkot +SugarKin +SugarRush +Sukhâvati +Suki +Sukkot sulfoxide -sullivan -sumerian -summerfield -sunday -sundays -sunderland +Sullivan +Sumerian +Summerfield +Sunday +Sundays +Sunderland sunesthesia sungel -sunil -sunni -sunvault +Sunil +Sunni +Sunvault superalloy superbike supercar @@ -5694,45 +5729,46 @@ supervillains superweapon suppressively surcoat -surefoot -surinamese -surry +Surefoot +Surinamese +Surry survivalcraft -susan -sutrakritânga +Susan +Sutrakritânga +Sutras sutras -sutro -sutta -sutta'a -sutta'anta -suttanta -suttas -sutton -suv -suvs -suzanne -suzuki -svd -svetasvatara -svp -sw -swampers -swampscott -swansea +Sutro +Sutta +Sutta'a +Sutta'anta +Suttanta +Suttas +Sutton +SUV +SUVs +Suzanne +Suzuki +SVD +Svetasvatara +SVP +SW +Swampers +Swampscott +Swansea swappable -swazi -swd -swedish +Swazi +SWD +Swedish sweety -swiss +Swiss swordfighting swording swordsmith swordswoman -sykes -sylvanus +Sykes +Sylvanus sylvatica -sylver +Sylver sym symbiote symbiotes @@ -5740,47 +5776,48 @@ synchronistic synth synthblood synthesization -syracuse -syrian +Syracuse +Syrian sysadmin -sâmhita -sîrôzahs -søren +Sâmhita +Sîrôzahs +Søren sōjutsu -taanit +Taanit tabi tabula +TAC tac tachycardiac -tacoma +Tacoma tacticool tadfish taegeuk taekwondo tagline -tai +Tai taitsu -taittiriya -taiwan -taiwanese -taj -tajikistani -takatoshi -takayama +Taittiriya +Taiwan +Taiwanese +Taj +Tajikistani +Takatoshi +Takayama takedown takedowns -talavakâra +Talavakâra tallit -tallman -talmud -talmudic +Tallman +Talmud +Talmudic talwar talwars tambaqui tambaquis -tamsyn -tanakh -tanfoglio +Tamsyn +Tanakh +Tanfoglio tangler tanglers tanglevine @@ -5788,43 +5825,44 @@ tanglevines tankbot tankette tankettes -tankylosaurus -tanzanian -tao -taoism -taoist -taonga -tarango -tardis -tarkov -tarleton +Tankylosaurus +Tanzanian +Tao +Taoism +Taoist +Taonga +Tarango +TARDIS +Tarkov +Tarleton tartarate taser tasers -tasha +Tasha tastemakers -taunton -taurist -taurists -taurus -tavor -tavrel +Taunton +Taurist +Taurists +Taurus +Tavor +Tavrel tawa taxa -taylor -tazmania -te -tec +Taylor +Tazmania +Te +TEC +Tec tech technomancer technomancers technomancy technomantic -techworld +Techworld teflon -tegh +Tegh tegmental -tekeli +Tekeli telecom telefragged teleglow @@ -5840,140 +5878,140 @@ teleporters teleporting teleportitis teleports -telushkin +Telushkin temaki -templeton -tengriism -tengyur -tenmile +Templeton +Tengriism +Tengyur +Tenmile tenontosaurus -tenrikyo +Tenrikyo tepoztopili tepoztopilis -tepper +Tepper tequini teravolt teravolts tergitol terraforming terranean -terranian -terrifier +Terranian +Terrifier terumot teshuvah -tessa +Tessa tetradrachm -tevigga -tevis -tewahedo -tewksbury -texas +Tevigga +Tevis +Tewahedo +Tewksbury +Texas texting texturized -teya -thackeray -thai -thakura -thang -thanh +Teya +Thackeray +Thai +Thakura +Thang +Thanh that'd that'll thaumaturges thawb thawbs -thc +THC themself -theo -theodore +Theo +Theodore theologist there'd there'll there've -theresa +Theresa therizinosaurus thermite thermobaric thescelosaurus -thessalonian -thich +Thessalonian +Thich this'll -thomas -thomet -thompson +Thomas +Thomet +Thompson thonged thonk -thor +Thor thorazine -thoreau -thoreaux +Thoreau +Thoreaux thorned thornothurian thornothurians -thornskin -thornskins +Thornskin +Thornskins thornweaver thornweavers -thracks +Thracks threose throating throwable -thuluth +Thuluth thumbholes thumbless -thumper +Thumper thunderball -thunderdome +Thunderdome thunk -thursday +Thursday thyreophoran -tibetan -tiffynie -tig -tikanga -tikkun +Tibetan +Tiffynie +TIG +Tikanga +Tikkun tiktaalik tilapia tilapias tileset -tilly +Tilly tilmàtli -tim +Tim timelapse -timmy -timorese -tinamidae -tindalos +Timmy +Timorese +Tinamidae +Tindalos tink -tipperary +Tipperary tiramisù tireplate tireplates -tisbury -tisha +Tisbury +Tisha titani titanis titanochelon titanochelons tlatoani -tnt -toby +TNT +Toby tock -todo -toffer +TODO +Toffer toggleable -togolese -tokarev -tokyo -tolkien -tolland -tolstoy -tomas -tomean -tommy +Togolese +Tokarev +Tokyo +Tolkien +Tolland +Tolstoy +Tomas +Tomean +Tommy tonalpohualli tonfa tonfas -tongan +Tongan toolbars toolbelt toolbelts @@ -5983,30 +6021,30 @@ toolmods toolset toolshelf topographagnosia -topsfield -tornskin +Topsfield +Tornskin toroids torosaurus -torrance +Torrance torvosaurus totipotent -toto +Toto tourmalines -tov -tovarishch -townsend -toxicum -toxtricity -tpa +Tov +Tovarishch +Townsend +Toxicum +Toxtricity +TPA traceur traceuse trackpants tractates -tragopogon +Tragopogon trailhead trailheads tramadol -tran +Tran trans transception transdimensional @@ -6019,10 +6057,10 @@ translocator translocators transplanar transubstantiated -transylvania +Transylvania travelpack travelpacks -travers +Travers travois treecutting treefrog @@ -6032,7 +6070,7 @@ treesing treesinging treesung tremens -tremorsense +Tremorsense trenchcoat trenchcoats trenchgun @@ -6042,122 +6080,123 @@ triband tribesperson tribot tribots -triceratruck -triceratrucks +Triceratruck +Triceratrucks trichocarpa -trichodactylidae +Trichodactylidae triclopean trifacet trifacets triglav trilaser trilasers -trimorphic +Trimorphic tripcore -tripitaka -trismegistus -trixie -trofica +Tripitaka +Trismegistus +Trixie +Trofica troglobite troglobites -trollope -troodon -tropicataclysm -trotsky +Trollope +Troodon +TropiCataclysm +Trotsky truckstop -truefoodperson -truesight -trurl -truro +TrueFoodperson +Truesight +Trurl +Truro tryphillum -tsang +Tsang tse tshk -tskbem -tsniitochmash -tsu +TsKBEM +TsNIITochMash +Tsu tsuba tsumi tsundere tsurugi -tt -ttf +TT +TTF tubings tucunaré tucunarés -tuesday -tuesdays +Tuesday +Tuesdays tumescences -tunguska -tunisian +Tunguska +Tunisian tuno tupperware tupperwares -turing +Turing turipache turipaches -turkish -turkmen -tuscany -tuvaluan -tuyen -tv -twinkies +Turkish +Turkmen +Tuscany +Tuvaluan +Tuyen +TV +Twinkies twintailed -tx -tyler -tylindel +TX +Tyler +Tylindel tylosaurus -tyngsborough -tyr +Tyngsborough +Tyr tyrannosaurid tyrannosauroid -tyringham -tyruckusaurus -tyson +Tyringham +Tyruckusaurus +Tyson tze -táin +Táin töttchen -tūtahi -uac -uasta -uav +Tūtahi +UAC +UASTA +UAV uber -uberti -ubuntu -ucia -ucla -udarnik -udarniks -ufo -ufos -ugandan -ugaritic -ugv -ugvs +Uberti +Ubuntu +UCIA +UCLA +Udarnik +Udarniks +UFO +UFOs +Ugandan +Ugaritic +UGV +UGVs uhh uhm -uhmw -uhmwpe -ui -uica -uicas -uicasta -uid -uisav -uk -ukon -ukrainian -ulmus +UHMW +UHMWPE +UI +UICA +UICAS +UICASTA +UID +UISAV +UK +Ukon +Ukrainian +Ulmus ultrabright ultracapacitor ultracapacitors ultratech -ulysses -umbanda +Ulysses +Umbanda umble umm ummm +UN un unaged unbothered @@ -6188,7 +6227,7 @@ unfoldable ungraspable unhindering unhomogenized -unicode +Unicode unitard unitards unjacketed @@ -6201,7 +6240,7 @@ unmalted unmark unmount unmutated -uno +Uno unobtainium unpadded unparalelled @@ -6217,7 +6256,7 @@ unrifled unrotten unrushed unsalvageable -unseelie +Unseelie unselect unselectable unsetting @@ -6231,200 +6270,200 @@ untrusting untyped unwield unwielding -upangas -upanishad -upanishads -upapuranas +Upangas +Upanishad +Upanishads +Upapuranas upcycled upheaved uplink -upses +UPSes upsized upsizing -upton -uranus +Upton +Uranus urgh -ursula -uruguayan -usa -usb -usc -usd -usmc -usp -uss -ussr +Ursula +Uruguayan +USA +USB +USC +USD +USMC +USP +USS +USSR uta -utah +Utah utahraptor utahraptors -uthra +Uthra utilibot utilibots -uttaradhyayana +Uttaradhyayana uttarasanga uttarasangas -uv -uxbridge -uyen -uzbek -uzi -vaccinium -vachellia -vader -vafthrúdnismál -vagrakkhedika -vaishnava +UV +Uxbridge +Uyen +Uzbek +Uzi +Vaccinium +Vachellia +Vader +Vafthrúdnismál +Vagrakkhedika +Vaishnava vajra -vajrayana -valencia -valencian -valentina -valentinian -valhalla +Vajrayana +Valencia +Valencian +Valentina +Valentinian +Valhalla valhallist valhallists valknut valkyries -valzain -vanburen -vancian -vaneigem -vanessa +Valzain +VanBuren +Vancian +Vaneigem +Vanessa vanishment vantablack -vanuatuan -vanwyk +Vanuatuan +Vanwyk var varanid -varanus -vargas +Varanus +Vargas vatforged vatgrown -vaughn -ve -vedanta -vedas -veeblefetzers -vegas +Vaughn +Ve +Vedanta +Vedas +Veeblefetzers +Vegas veggy -vektor +Vektor velcro velociraptor velociraptors -velocitas +Velocitas venandi venatores -vendîdâd -venezuelan +Vendîdâd +Venezuelan venoms ventrolateral -venus -venuste -veresk -veridian +Venus +Venuste +Veresk +Veridian veripixel -vermont +Vermont vermontsteel -verne +Verne versa -versailles +Versailles vestigal vewwy -vi +VI viagra vibing vibro -victorian -vidar +Victorian +Vidar videogame videogames -viet -vietnamese +Viet +Vietnamese viewport viewports -vigar -vigneto -vihara -vii -viii +Vigar +Vigneto +Vihara +VII +VIII vikeys -vili -villeneuve -vin -vinaya -vincentian +Vili +Villeneuve +Vin +Vinaya +Vincentian vinegared vineling vinelings vineweaver vineweavers viny -vips -virginia +VIPs +Virginia virginica vis -vishnu -visparad +Vishnu +Visparad vitakinesis vitakinetic -vivian -vladimir +Vivian +Vladimir vocalizers vocaloid -vogt +Vogt voila vol volkswagen -vollmer -voltaire +Vollmer +Voltaire voluntolds von -vonnegut -vonwalt +Vonnegut +VonWalt vorbis -vorm +Vorm vorpal -vp -vr +VP +VR vroom -vtuber +VTuber vu -vudor -vuh -vulcanist -vurt +Vudor +Vuh +Vulcanist +Vurt vyuha vz -vâjasaneyi -vâsishtha -vâta -vâyu -wabanaki +Vâjasaneyi +Vâsishtha +Vâta +Vâyu +Wabanaki wabbits wacked -waffenfabrik -waiata -wakefield +Waffenfabrik +Waiata +Wakefield wakeup wakizashi -walden -walder -walders -wallace +Walden +Walder +Walders +Wallace walleri wallguns -walpole -walsman -walter -waltham -walther -walthers -wampanoag -wanda -wang +Walpole +Walsman +Walter +Waltham +Walther +Walthers +Wampanoag +Wanda +Wang warcry -wareham +Wareham warframe warg wargame @@ -6439,10 +6478,10 @@ warpcloaked warpglass warpsickness warpstream -warsaw +Warsaw warted -warwick -washington +Warwick +Washington wastebread wastelanders watchfire @@ -6452,14 +6491,14 @@ waterskin waterskins waterskis waterstrider -watertown -waterville -waugh +Watertown +Waterville +Waugh waycircle -wayfinder -wayland -waystone -waystones +Wayfinder +Wayland +Waystone +Waystones wdt wdym weakpoint @@ -6467,47 +6506,47 @@ weaponized weaponizing weaponsmith weaponsmiths -weatherby -webber -webbstar -webster +Weatherby +Webber +WebbStar +Webster wednesday wednesdays weiler weilers weiner -weiss +Weiss wellbeing -wellesley -wellfleet -wendell -wenham -werner -wessex -wesson -westborough -westfield -westford -westhampton -westminster -weston -westport -westwood -wetcode -wetcodes +Wellesley +Wellfleet +Wendell +Wenham +Werner +Wessex +Wesson +Westborough +Westfield +Westford +Westhampton +Westminster +Weston +Westport +Westwood +WETCODE +WETCODEs wetworks -weymouth +Weymouth whakapapa what'd what'll what're what've whatcha -whateley -whately +Whateley +Whately whattya wheatberries -wheater +Wheater where'd which'll whiplike @@ -6516,7 +6555,7 @@ whiskflowers whitelist whitelisted whitelists -whitman +Whitman whoah whoo whorling @@ -6529,56 +6568,56 @@ wibbled wibbles wibbling wibbly -wicca -wiccas +Wicca +Wiccas wicking wieldable -wienermobile -wilbraham -wildborne +Wienermobile +Wilbraham +Wildborne wildcard -wilde +Wilde wildshape -wilhelm -wilhemina -willa -william -williams -williamsburg -williamson -williamstown +Wilhelm +Wilhemina +Willa +William +Williams +Williamsburg +Williamson +Williamstown willowbark -wilma -wilmington -wilson -winchendon -winchester +Wilma +Wilmington +Wilson +Winchendon +Winchester windowframe windrunning -windsor +Windsor windstrike winemaking -wingmaster +Wingmaster wingshooter -winifred -winkler -winnie -winston -winthrop -wip +Winifred +Winkler +Winnie +Winston +Winthrop +WIP wireframe wirey wirings witchlight -witten +Witten wizarding wizardy wk wks -wm +WM woah -woburn -wolfi +Woburn +Wolfi wolfmen wolfshead woodbow @@ -6591,166 +6630,167 @@ woodsaw woodsmanship woohoo woosh -worcester +Worcester workarounds workcycle workshifts worksite worldgen -worthington -wraitheon +Worthington +Wraitheon wreckages -wrentham +Wrentham wrightii wristed -wuthering -wwi -wwii -wyatt -wyld -wyndham -wynn +Wuthering +WWI +WWII +Wyatt +Wyld +Wyndham +Wynn wyrd wyrm wyrmling wyrmlings wyrms xanax -xd -xedra +XD +XEDRA xenobiologist xenobiology xenology -xenomorphs -xii -xiii +Xenomorphs +XII +XIII xiphe xiphos xiuhpohualli -xiv -xix -xl -xlr -xm -xp +XIV +XIX +XL +XLR +XM +XP xray -xs -xtp -xtreme -xvi -xvii +XS +XTP +Xtreme +XVI +XVII xx -xxii +XXII xxx -xxxiii -xxxl +XXXIII +XXXL xxxx y'know y'see yacare -yahya -yajna -yakov +Yahya +Yajna +Yakov yandere yankee yari yark yarker -yarmouth -yasna -yast -yasts +Yarmouth +Yasna +Yast +Yasts yateveo yateveos yay yd -yeats +Yeats yeet yeeted yeller yellers yellowjacket yelman -yemenis -yevamot -yevgeny +Yemenis +Yevamot +Yevgeny +Yi yi -yibbum -yiddish -ying -yisrael -ymir -yochai -yoda -yom -yoma +Yibbum +Yiddish +Ying +Yisrael +Ymir +Yochai +Yoda +Yom +Yoma yoroi -yoruba -yosef -yoshimi -younce +Yoruba +Yosef +Yoshimi +Younce youngs yourselfer -youtube -youtubers +YouTube +YouTubers yoyo yoyos yr -yrax +Yrax yrs -yu +Yu yugg -yuggoth +Yuggoth yuggs -yugo -yugoslavia +Yugo +Yugoslavia yukata -yuni -yusuke -zachary -zack +Yuni +Yusuke +Zachary +Zack zahir -zambian -zamyatin +Zambian +Zamyatin zandcrawler zandcrawlers zapback -zappa +Zappa zapplesauce zapplesauces zaptor zaptors -zara -zardust -zastava +Zara +Zardust +Zastava zbrojovka zeindeer zeindeers -zelda +Zelda zen -zend -zener +Zend +Zener zenshin zentai zentais -zeus -zhang -zhivotnaya -zhuang -zia -ziggy +Zeus +Zhang +Zhivotnaya +Zhuang +Zia +Ziggy zigzaging -zimbabwean +Zimbabwean zincite -zionism -zionist -ziploc -zircaloy +Zionism +Zionist +Ziploc +Zircaloy zoad zoads -zoe -zoey -zohar +Zoe +Zoey +Zohar zolpidem zombaby zombear @@ -6774,20 +6814,20 @@ zombulls zoonotic zorc zorcs -zoroaster -zoroastrian -zoroastrianism -zostrianos +Zoroaster +Zoroastrian +Zoroastrianism +Zostrianos zowlbear zowlbears -zpap -zs +ZPAP +Zs zubon zubons zucchettos -zui -zulu -zuni +Zui +Zulu +Zuni zuniceratops zuul zweihänder @@ -6796,15 +6836,15 @@ zweitimber zweitimbers zygomaticus zzz -zâd -zé -âkankheyya -âkârânga -âpastamba -âranyaka +Zâd +Zé +Âkankheyya +Âkârânga +Âpastamba +Âranyaka épée épées -íqán -ötzi -āsvalāyana -česká +Íqán +Ötzi +Āsvalāyana +Česká From 2d2f6c6d5817fdc5d249ec71b10c34f5060ff2f2 Mon Sep 17 00:00:00 2001 From: Qrox Date: Tue, 9 Apr 2024 15:24:13 +0800 Subject: [PATCH 29/48] Update dictionary with more words --- tools/spell_checker/dictionary.txt | 199 +++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index c93a0375a78c2..944accb566618 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -28,6 +28,7 @@ acetylsalicylic achelousaurus acidball acidproof +ACLU ACM ACOG ACP @@ -69,6 +70,7 @@ aetherspeaker aetherspeakers Afrinagân Afro +afro Agawam agender aggadic @@ -85,6 +87,7 @@ airhorn airjack airjacks airsoft +AIs Aitareya AK aketon @@ -93,6 +96,7 @@ Akhnai Akká AKM Akron +AKS Al al alamosaurus @@ -165,6 +169,7 @@ Ancien Andean Ander Andes +Andi Andorran Andover Andre @@ -199,6 +204,7 @@ Anne Annie Anolis anomurans +anonymizing Anson Antarctica antarvasa @@ -208,6 +214,7 @@ Anthophila anthro antiasthmatic anticonvulsant +Antigone Antiguan antihemorrhagic antimateriel @@ -226,6 +233,7 @@ AP Apastamba APC apeirohedra +apeirohedron APFSDS aphantasic API @@ -274,6 +282,7 @@ Aristotle Arizona Arjuna Arkady +Arle Arlington Armageddon armeniaca @@ -339,6 +348,7 @@ atlatls ATM atmmonoid atmmonoids +AtmoWeb atompot atompots Atra @@ -354,6 +364,7 @@ Aubrey Audhumla Audrey AUG +AUGs Augusta Augusti Augustmoon @@ -380,8 +391,10 @@ autosaves autoselect autoshotgun autoshotguns +Autoweek aux Ava +ave avellana avellanita aventail @@ -404,6 +417,7 @@ AXMC Ayer ayran ayuh +AZ Azerbaijanian Aztec Aztecs @@ -433,6 +447,9 @@ badass bagh Baghdad Bagȣnizabȣnak +Baha'i +Baha'is +Baha'u'llah Bahamanain Bahman Bahrainian @@ -519,6 +536,7 @@ bearcub bearmantle bearmantles beartrap +beastie beastmaster Beatrice Beckett @@ -542,6 +560,7 @@ Bella bellend Bellevue Bellingham +Bellsystem Belmont benchlike benchtop @@ -654,6 +673,7 @@ blackpowders blacksmithy Blackstone blackwood +Blacky bladesmithing blam Blandford @@ -664,7 +684,9 @@ blodplättar blodplättars bloodbank bloodborne +bloodfeeder bloodhunting +bloodletter bloodlust bloodthirst bloomeries @@ -731,6 +753,7 @@ boreas Borichenko Borichenkos Boris +bork Bosch Bosnian Boston @@ -760,11 +783,14 @@ brainiac Braintree Bram Brandon +Brandspojt +Brandspojts Brazilian breacher breachhead breadmaking breadseed +breakroom breakrooms breathability breathwork @@ -789,6 +815,7 @@ British bro broadhead Broadway +brobdingnagian Brockton Brodie Brody @@ -863,6 +890,7 @@ bō Bōjutsu c'mon Cabanillas +Cabron cadabra Caesar caesariense @@ -913,6 +941,7 @@ Cao Caodaism capiche Capoeira +Capp Caravaggio caravaneer caravaner @@ -1006,6 +1035,7 @@ Chan Channing Chapfax Chaplin +Chappaquiddick Charlemont Charles Charlestown @@ -1037,6 +1067,7 @@ chestwraps Chevrolet Chewbacca Chiappa +chica Chicago chicharrones chickenbot @@ -1144,6 +1175,7 @@ comms communis compensators compsognathus +coms Conan Conanicut concealability @@ -1211,6 +1243,7 @@ crafters craftsdwarfship craftsfolk Craig +Cran Cranston Crataegus CRC @@ -1228,6 +1261,7 @@ Croatan Croatian croc Crocker +Crockett crocs crossbuck crossfit @@ -1263,6 +1297,7 @@ Cuban Cucina cuck cul +Cullen Cumberton cummer Cummington @@ -1358,11 +1393,13 @@ Daytona dayum DDA DDT +DEA deadland deadlands deadzone dealmaking deathcam +DeathCam deathmobile deathrattle debatably @@ -1406,6 +1443,7 @@ Deon DEP deployer deprotonated +dept der derandomization deregulations @@ -1436,6 +1474,7 @@ di Diamant Diane Dianne +dickass Dickinson Didascalia Diego @@ -1483,6 +1522,7 @@ Divi Dixon DIY Diyua +dizzyingly DJ Djiboutian Dmitry @@ -1493,6 +1533,7 @@ DNA Dobbs Dodecagram dodgeball +DOE dogpark dogpile dojo @@ -1514,6 +1555,7 @@ Doppler Doreen Dort Dosia +DoT Douay DoubleTech douchebag @@ -1632,6 +1674,7 @@ Ed edamame Edda Eddie +Eddit Eden Edgartown Edison @@ -1640,12 +1683,16 @@ edmontonia edmontosaurus Edmund Edward +EEGs eggsac Egremont Egyptian Egyptians Eiffel +eigenspectre +eigenspectres einiosaurus +Einstein Eisenhower EKO elasmosaurus @@ -1696,6 +1743,7 @@ EMTs enactors Ender endochitin +Endsville Endymion Enfield enflamed @@ -1731,6 +1779,7 @@ ergometers Eric Erica Erickson +Ericsson Erin Erith Eritrean @@ -1747,6 +1796,7 @@ ESC Esc ESCA escalier +Escher Esfandiary Eskrima espatier @@ -1761,6 +1811,7 @@ estoc estocs Estonian etc +Eternia Ethan Ethel Ethiopian @@ -1772,6 +1823,7 @@ EU eugh Eugnostos EULA +Euler euoplocephalus Eurasia Eurasian @@ -1798,8 +1850,12 @@ exfiltrate EXO exobay Exodii +exodimensional +exodimensions exoplanet exoplanetary +exospace +exospatial exosuit exosuits exp @@ -1822,6 +1878,7 @@ eyepatch eyepatches eyestalks eyewear +Fabrique Fabritechnics Facebook facemasks @@ -1857,8 +1914,10 @@ Farrakhan farstep fascial fasciitis +fashionista Fateh Fatima +Fatman Fatuus faultline fauxben @@ -1949,6 +2008,7 @@ flatjaw flatlander flatlanders Flavio +FLDSMDFR flechette flechettes flensing @@ -1997,11 +2057,13 @@ Forcette foregrip foregrips forehooves +forend forestock forgemaster forgemasters Formosa Forn +Fortunato Foucault foundress fourtieth @@ -2021,7 +2083,9 @@ frankenfurter frankenfurters Frankenstein Frankensteinian +Frankensteins Frankie +Franky Franz Fred Frederic @@ -2037,6 +2101,7 @@ Freud Freya Friday Friederich +FriendFace frigg frigger frisbee @@ -2061,6 +2126,7 @@ fuckwits Fudd fudgy Fudoki +Fuji fulleroclathrate fullscreen fumarolic @@ -2094,6 +2160,7 @@ Gameover gameplay gangbangers Gao +gaptoothed Garand garde gardenling @@ -2229,6 +2296,7 @@ Goshen Gosnold goto Gottingen +gouache Gough gouts gov @@ -2244,6 +2312,7 @@ gracken grackens Grafton Grainville +grampa granatum Granby grandkids @@ -2257,6 +2326,7 @@ grav gravelbag gravelbags gravesite +Gravol GravyField Grayfield greatbow @@ -2299,6 +2369,7 @@ Guatemalan guayacan gubbins Guglielmo +Guiana guilts Guin Guinean @@ -2330,8 +2401,10 @@ Guyanese Gy Gyges Gymnocladus +Gyurza Gâhs Gümanik +HAADF Haba Haber hackPRO @@ -2452,9 +2525,12 @@ Heinlein Heinrich Heisenberg Heisenstein +heister Hel Helen Helena +heli +Heliand Hellenism Hellenist Helliand @@ -2467,6 +2543,7 @@ Helsing HEMA hemolymph hemostatics +hemovore Hendelson Herbert herbology @@ -2490,11 +2567,13 @@ HGC hiccupped hidebehind hidebehinds +hideman hideworking hidey Hiep Higgins highschool +hijab Himalayan Hindu Hinduism @@ -2515,6 +2594,7 @@ HK HMG HMGs hmmm +HMS HMTD hnefatafl Hobbes @@ -2573,6 +2653,7 @@ Hopkinton Horace Horayot horchata +horks Hornblower Horrorpelta Horrorpeltas @@ -2626,6 +2707,7 @@ Hungarian hunllef Huntington Huntz +hurly Hutchinson Huxley HV @@ -2698,10 +2780,14 @@ illinoinensis Ima imager imagers +Imaginifer +Imaginifers imbuement IMEs +ImGui Immanuel immersive +immobiliser impalers inactionable Inanna @@ -2863,6 +2949,7 @@ jirts jittering Joab Joanne +Joddit Joe joe joes @@ -2923,6 +3010,7 @@ Kaczynski Kadambawa Kafka Kaharingan +Kai kaiju Kaja Kaje @@ -2969,8 +3057,10 @@ Katty Katyusha Kaushîtaki Kazakhstani +kcal kcalories Keach +Keaton Kebra keffiyehs keikogi @@ -2978,6 +3068,7 @@ Kel Kells kelvinist kelvinists +Kemeticism Kemetist Kemp Kena @@ -3005,6 +3096,7 @@ Khanda khirad khopesh khopeshes +Khorat Khândogya KIA kickboard @@ -3021,6 +3113,7 @@ kilijes Killophant Killophants kilroy +Kim kinbot kinderling kinderlings @@ -3032,6 +3125,7 @@ kippahs Kippur kirpan kirpans +KITT kittel kittels Kitáb @@ -3050,6 +3144,7 @@ Knifey Kniga knockback knotwork +knowers knowium knuckleball Knuth @@ -3108,6 +3203,7 @@ Kurt kuru Kurukshetra Kuwaiti +kW Kyrgyz Kâu labbit @@ -3135,6 +3231,7 @@ lajatangs lakeshore Lakeville lambeosaurus +Lampetia lamé lamés LAN @@ -3155,6 +3252,7 @@ Lapua Laredo largeish largemouth +Larn LARP LARPing Larry @@ -3172,6 +3270,7 @@ LaVey Lavochkin lawd Lawrence +LAWs lbs LCD LCP @@ -3193,6 +3292,7 @@ LEDs Leen Lego legwear +Leibnitz Leibowitz Leicester Leinster @@ -3207,6 +3307,7 @@ Lenin Leninism Lenny Lenox +lensless Leo Leominster Leon @@ -3258,6 +3359,7 @@ lightsabers lightshow lightstrip lightstrips +LIGO Likvidator Likvidators lil @@ -3268,13 +3370,17 @@ limbed Lincoln Linda Lindbergh +linework linux Lisa Lithuanian Littleton Liu livestream +LIXA +LIXAs Liz +Liza lizardfolk lizardlike lizardman @@ -3358,6 +3464,7 @@ Lupercalian lutefisk Luther Lutheran +luthier Luty Luxembourger LV @@ -3417,6 +3524,8 @@ magickal magicks Magiclysm Magister +Magnadrive +Magnastorm magwell magwells Mahabharata @@ -3435,6 +3544,7 @@ Maine Mainog Mair Maitrayani +Maj Makarov Makayla Makeda @@ -3515,6 +3625,7 @@ Martha Martians Marty Maruts +Marvin Marxism Mary Maryland @@ -3526,6 +3637,7 @@ massachusetite Massachusetts massager masse +MASSes massproduced Mastercut masterkey @@ -3549,7 +3661,9 @@ mausketeer mausketeers mavka mavkas +Mavrik max +Maxwellian mayaheri mayaheros Mayfield @@ -3571,6 +3685,7 @@ MDF MDRX mealgrub mealgrubs +meatgrinder meathook meatshield mech @@ -3600,6 +3715,7 @@ Meghan Megillat Megingjörð meh +Mei Meizhen Melchior Melchizedek @@ -3619,6 +3735,7 @@ menemen Meng menpo Mentos +Menzoberranzan merc merch Merck @@ -3631,6 +3748,7 @@ Meskwaki Mesoamerica Mesoamerican Mesoamericas +mesopic Mesopotamian meta metalcutting @@ -3754,6 +3872,7 @@ Misinter misprogram Mississippi MIT +Mitchell Mithraic Mithraism mithril @@ -3801,6 +3920,7 @@ monocrystalline monogyna monometal monopod +monopods Monroe Monroeville Monson @@ -3861,6 +3981,7 @@ movesets Movimiento moxies MoxPhore +Moxphoria Moyer Mozart Mozilla @@ -3875,6 +3996,7 @@ MREs MRI Mrs mSv +Mt MTAR Muay mudcrack @@ -3939,6 +4061,7 @@ Nahuatl nailboard nailboards Najah +Najma Nakayama nakha Nala @@ -3981,6 +4104,7 @@ Nasks nasties Natalie Natick +Nationale natively NATO Nauruan @@ -4048,6 +4172,7 @@ Neurosoft neurostimulators neurosynaptic neurotoxin +NEURT neutrite neutrites Nevada @@ -4150,6 +4275,8 @@ Norwood noseless Nosferatu nothronychus +NourishMart +NourishMartic Novak November Nozick @@ -4169,9 +4296,11 @@ nuh num numbnut numpad +nums Nunez NV NW +NY Nyâyis O'Brian O'Connor @@ -4186,6 +4315,7 @@ Oates Obrez obscura Oceania +oceanside Oct Octavia octo @@ -4198,10 +4328,12 @@ officinale offputting offroad offroading +offsite offworld offworlders Ofudekasi Ogam +ogg Ogã Ohio Ojibwe @@ -4254,6 +4386,7 @@ ork Orlah Orlando Orleans +Orley ornithomimid ornithomimus Orpheus @@ -4262,8 +4395,10 @@ Orson Orwell oryctodromeus OS +os Osashizu OSB +Osborne Oscar oscar oscars @@ -4281,12 +4416,14 @@ otherland otherlander otherlands otherworlds +otherworldy Othniel Otis OTM OTMSS Otomo Otten +OU Ouija outdoorsman ovata @@ -4299,6 +4436,7 @@ overclocks overdosage overdrinking overengineered +overgarment overgloves overhood overhoods @@ -4314,11 +4452,14 @@ overstimulator oversuit oversuits overswinging +overvoltage overwatch owchie owlbear owlbears Oxbridge +oxies +oxy oxycodone oxygenator Oyasama @@ -4400,7 +4541,9 @@ Payne PBA PBJ PC +PCMag PCs +PD PDCurses PDW PDWs @@ -4508,10 +4651,12 @@ Pisces pissbrain Pistacia pitbull +pitchest pitchwoman Pittsfield pixelates pixeled +pixelized pizzaiolo PizzaLand PK @@ -4558,6 +4703,7 @@ PolCom polearm polearms poleyns +polkadotted polyaramid polymorph polymorphed @@ -4573,6 +4719,7 @@ porkbelly porrifolius Portland portmaster +Portuguese pos posteriori posthuman @@ -4593,6 +4740,7 @@ PPA ppavattana PPE PPK +PPKs PPQ PPSh PR @@ -4626,6 +4774,7 @@ Priya Prochilodontidae Produkt prog +Prometheus propyl prosaurolophus protege @@ -4715,7 +4864,9 @@ quillbags Quincy Quinn Quixote +Qur'an Quran +R'lyeh Rabba racecar Rachel @@ -4730,6 +4881,7 @@ raggiana Ragnarok railgun railguns +Raimes Raimundo raincatcher raincatchers @@ -4745,6 +4897,8 @@ Ramadan Ramayana Rambo Ramin +RAMs +Ramses Ranade Randall Randolph @@ -5018,6 +5172,7 @@ saccharum Saddharma Sadie SADM +Saed safehouse safeline safemode @@ -5113,8 +5268,10 @@ sawteeth Sawzall Saxon Saxons +SBE SBL SBR +SBRs SCA Scalefolk scammer @@ -5133,6 +5290,7 @@ Schroeder Schubert Schulz Schwarz +Schweitzer sci Scientology scifi @@ -5167,6 +5325,7 @@ SDP SE sealab sealabs +SEALs Sean seances seatbelts @@ -5184,6 +5343,7 @@ Segway Seinerweisen seldomly selfie +Semin semirural semitangible Semper @@ -5197,10 +5357,12 @@ Serbu Serdyukov serendipnol serendipnols +serialed Serra Serrano serrulata Seth +Seuss Seward seweranha seweranhas @@ -5407,6 +5569,7 @@ slitted Slovakian Slovenian slowfall +SLP SLR sludged sluglike @@ -5429,6 +5592,7 @@ SMR Smythe snakelet snakelets +snakeskins SNI snikt snotgobbler @@ -5454,6 +5618,7 @@ Somerville sommat somniferum Sonia +Sonoran Sophia Sophie SOPMOD @@ -5476,6 +5641,7 @@ SoyPelusa SP spacebar Spaceborn +spacefaring spacetime spadelike spalling @@ -5497,6 +5663,7 @@ speedo speedos SpeedyDex spellbook +spellbooks spellcaster spellcasters spellcasting @@ -5556,6 +5723,7 @@ SRCFs Sridhar Srila Srimad +SSh ST St stablization @@ -5572,8 +5740,10 @@ stat staticskin statisticality staunchable +staunchings STD steampunk +STEEDs steelshod steeltoed stego @@ -5595,7 +5765,9 @@ Steyr STI Stig Stillwater +stim stimpack +stims stimulators stinktoad stinktoads @@ -5605,6 +5777,7 @@ stirge stirges Stirling Stirner +StO Stockbridge Stokey stompers @@ -5708,6 +5881,7 @@ sungel Sunil Sunni Sunvault +Suomi superalloy superbike supercar @@ -5715,6 +5889,7 @@ superchilled supercompact supercritical superfan +superglued supergluing supergravity superheroic @@ -5732,6 +5907,7 @@ surcoat Surefoot Surinamese Surry +surveiling survivalcraft Susan Sutrakritânga @@ -5811,6 +5987,7 @@ tallit Tallman Talmud Talmudic +TALONs talwar talwars tambaqui @@ -5849,6 +6026,8 @@ Tavrel tawa taxa Taylor +taze +tazed Tazmania Te TEC @@ -5866,6 +6045,7 @@ Tekeli telecom telefragged teleglow +telekinetically telekinetics telepad telepads @@ -5931,6 +6111,7 @@ Theresa therizinosaurus thermite thermobaric +thermoreceptors thescelosaurus Thessalonian Thich @@ -5964,6 +6145,7 @@ Thunderdome thunk Thursday thyreophoran +Tiamat Tibetan Tiffynie TIG @@ -5977,6 +6159,7 @@ Tilly tilmàtli Tim timelapse +timey Timmy Timorese Tinamidae @@ -6009,6 +6192,7 @@ Tomas Tomean Tommy tonalpohualli +tonewood tonfa tonfas Tongan @@ -6019,6 +6203,7 @@ toolkits toolmod toolmods toolset +toolsets toolshelf topographagnosia Topsfield @@ -6043,6 +6228,7 @@ tractates Tragopogon trailhead trailheads +trainwreck tramadol Tran trans @@ -6102,6 +6288,7 @@ Trollope Troodon TropiCataclysm Trotsky +TRS truckstop TrueFoodperson Truesight @@ -6142,6 +6329,7 @@ Tuyen TV Twinkies twintailed +Twitfeed TX Tyler Tylindel @@ -6190,6 +6378,7 @@ Ulmus ultrabright ultracapacitor ultracapacitors +ultramassive ultratech Ulysses Umbanda @@ -6281,6 +6470,7 @@ UPSes upsized upsizing Upton +ur Uranus urgh Ursula @@ -6450,6 +6640,7 @@ wakizashi Walden Walder Walders +walkey Wallace walleri wallguns @@ -6556,6 +6747,7 @@ whitelist whitelisted whitelists Whitman +Whitmer whoah whoo whorling @@ -6606,9 +6798,11 @@ Winston Winthrop WIP wireframe +wirelessly wirey wirings witchlight +witchlights Witten wizarding wizardy @@ -6637,11 +6831,13 @@ workshifts worksite worldgen Worthington +Wozniuk Wraitheon wreckages Wrentham wrightii wristed +WS Wuthering WWI WWII @@ -6657,6 +6853,7 @@ wyrms xanax XD XEDRA +Xedra xenobiologist xenobiology xenology @@ -6744,6 +6941,7 @@ Yuggoth yuggs Yugo Yugoslavia +Yujin yukata Yuni Yusuke @@ -6770,6 +6968,7 @@ Zelda zen Zend Zener +ZenFS zenshin zentai zentais From ed767a14c98327a25f74c7b68ecf81399d07825d Mon Sep 17 00:00:00 2001 From: Qrox Date: Fri, 16 Feb 2024 00:06:01 +0800 Subject: [PATCH 30/48] Improve spell checker tokenizer --- .github/workflows/text-changes-analyzer.yml | 2 +- tools/spell_checker/__init__.py | 32 +++++++++++++++++++-- tools/spell_checker/gen_dictionary.py | 6 ++-- tools/spell_checker/spell_checker.py | 15 +--------- 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/.github/workflows/text-changes-analyzer.yml b/.github/workflows/text-changes-analyzer.yml index 07ad4b601ddef..5279810b8dc18 100644 --- a/.github/workflows/text-changes-analyzer.yml +++ b/.github/workflows/text-changes-analyzer.yml @@ -26,7 +26,7 @@ jobs: run: | sudo apt-get update sudo apt-get install python3-pip gettext - sudo pip3 install polib pyspellchecker + sudo pip3 install polib pyspellchecker regex - name: "Checkout test merge commit" uses: actions/checkout@v4 - name: "Compute base commit and test merge commit" diff --git a/tools/spell_checker/__init__.py b/tools/spell_checker/__init__.py index 9e14307a58b74..733449a45592f 100644 --- a/tools/spell_checker/__init__.py +++ b/tools/spell_checker/__init__.py @@ -1,17 +1,43 @@ #!/usr/bin/env python3 import os -import re +import regex from spellchecker import SpellChecker Speller = SpellChecker() -Tokenizer = re.compile(r'\w+') +Tokenizer = regex.compile( + r"(?<=" + r"(?:" # a word can be after... + r"^" # ...the start of text... + r"|" # ...or... + r"""[\s\-'‘"“«\*&\(\[\{/>]""" # ...a valid starting delimiter + r")" + r"[…]*" # ignore possible punctuations before a word + r")" + # a single letter is always considered a valid word and therefore not + # tokenized + r"\pL" # a word always starts with an letter... + r"(?:\pL|['‘’])*" # ...can contain letters and apostrophes... + r"\pL" # ...and always ends with an letter + # exclude suffix `'s` and match the apostrophe as a delimiter later + r"(?', '', message) - unformatted = re.sub(r'%[0-9lz\.\s$]*[scfd]', '', untagged) - return unformatted - - def spell_check(message): - words = filter(is_english, Tokenizer.findall(sanitize_message(message))) + words = Tokenizer.findall(message) unknowns = filter(not_in_known_words, Speller.unknown(words)) return list(unknowns) From 3b5619a720c7884692f18ff8c3c8b53e5d9081ab Mon Sep 17 00:00:00 2001 From: Qrox Date: Sat, 17 Feb 2024 17:28:29 +0800 Subject: [PATCH 31/48] Test spell checker tokenizer before the actual check --- .github/workflows/text-changes-analyzer.yml | 3 ++ tools/spell_check_unit_test.py | 6 +++ tools/spell_checker/__init__.py | 46 +++++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 tools/spell_check_unit_test.py diff --git a/.github/workflows/text-changes-analyzer.yml b/.github/workflows/text-changes-analyzer.yml index 5279810b8dc18..daa7091a2bbd7 100644 --- a/.github/workflows/text-changes-analyzer.yml +++ b/.github/workflows/text-changes-analyzer.yml @@ -59,6 +59,9 @@ jobs: - name: "Write text changes" run: | python3 ./tools/pot_diff.py ~/base.pot ~/merge.pot -j ~/pot_diff.json + - name: "Run spell checker unit tests" + run: | + python3 ./tools/spell_check_unit_test.py - name: "Spell check on text changes" run: | python3 ./tools/spell_check_pr.py -i ~/pot_diff.json > spell_check_output diff --git a/tools/spell_check_unit_test.py b/tools/spell_check_unit_test.py new file mode 100644 index 0000000000000..864a99f0e1bca --- /dev/null +++ b/tools/spell_check_unit_test.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python3 +from spell_checker import unit_test__tokenizer + + +unit_test__tokenizer() +print("unit test completed") diff --git a/tools/spell_checker/__init__.py b/tools/spell_checker/__init__.py index 733449a45592f..1abf4b3359c76 100644 --- a/tools/spell_checker/__init__.py +++ b/tools/spell_checker/__init__.py @@ -45,3 +45,49 @@ def init_known_words(): if not KnownWords: init_known_words() + + +def unit_test__tokenizer(): + text_and_results = [ + ("I'm a test", ["I'm", "test"]), + ("\"This'll do!\"", ["This'll", "do"]), + ("Someone's test case", ["Someone", "test", "case"]), + ("SOMEONE'S VERY IMPORTANT TEST", ["SOMEONE", "VERY", "IMPORTANT", "TEST"]), + ("tic-tac-toe", ["tic", "tac", "toe"]), + ("Ünicodé", ["Ünicodé"]), + ("This apostrophe’s weird", ["This", "apostrophe’s", "weird"]), + ("Foo i18n l10n bar", ["Foo", "bar"]), + ("Lorem 123 ipsum -- dolor ||| sit", ["Lorem", "ipsum", "dolor", "sit"]), + ("Lorem", ["Lorem"]), + ("Lorem ipsum dolor sit amet", + ["Lorem", "ipsum", "dolor", "sit", "amet"]), + ("'Lorem ipsum dolor sit amet, consectetur adipiscing elit'", + ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", + "adipiscing","elit"]), + ("Lorem, ipsum. dolor? sit! amet.", ["Lorem", "ipsum", "dolor", "sit", "amet"]), + ("Lorem ipsum, 'dolor?' sit!?", ["Lorem", "ipsum", "dolor", "sit"]), + ("Lorem: ipsum; dolor…", ["Lorem", "ipsum", "dolor"]), + ('"Lorem"', ["Lorem"]), + ("Lorem-ipsum", ["Lorem", "ipsum"]), + ("«Lorem ipsum»", ["Lorem", "ipsum"]), # used in some NPC dialogue + ("*Lorem ipsum*", ["Lorem", "ipsum"]), + ("&Lorem ipsum", ["Lorem", "ipsum"]), # used in some NPC dialogue + ("…Lorem", ["Lorem"]), + ("'…Lorem ipsum…'", ["Lorem", "ipsum"]), + ("Lorem dolor", ["Lorem", "dolor"]), + (">", []), + ("Lorem (ipsum) [dolor sit] {amet}", ["Lorem", "ipsum", "dolor", "sit", "amet"]), + ("Lorem ipsum/dolor/sit amet", ["Lorem", "ipsum", "dolor", "sit", "amet"]), + ("Lorem.ipsum.dolor", []), + ("Lorem %1$s ipsum %2$d dolor!", ["Lorem", "ipsum", "dolor"]) + ] + + fail = False + for text, expected in text_and_results: + result = list(Tokenizer.findall(text)) + if result != expected: + print(f"test case: {text}\nexpected: {expected}\nresult: {result}\n") + fail = True + + if fail: + raise RuntimeError("tokenizer test failed") From 6c5aed2200eb7c7d9f5058f19f1fe94fb3f4dc47 Mon Sep 17 00:00:00 2001 From: Qrox Date: Sat, 17 Feb 2024 17:31:20 +0800 Subject: [PATCH 32/48] Include words from plural messages in generated dictionary --- tools/spell_check.py | 4 ++++ tools/spell_checker/gen_dictionary.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/tools/spell_check.py b/tools/spell_check.py index 8e61af3e23fa8..dc60d6eae3fcb 100644 --- a/tools/spell_check.py +++ b/tools/spell_check.py @@ -14,3 +14,7 @@ # occurrences[word] = 1 if typos: print(typos, "<=", entry.msgid.replace('\n', '\\n')) + if entry.msgid_plural: + typos = spell_check(entry.msgid_plural) + if typos: + print(typos, "<=", entry.msgid_plural.replace('\n', '\\n')) diff --git a/tools/spell_checker/gen_dictionary.py b/tools/spell_checker/gen_dictionary.py index c7e7943c1d7e9..0dec700060013 100644 --- a/tools/spell_checker/gen_dictionary.py +++ b/tools/spell_checker/gen_dictionary.py @@ -13,6 +13,10 @@ def gen_dictionary(): words = Tokenizer.findall(entry.msgid) for word in Speller.unknown(words): dictionary.add(word) + if entry.msgid_plural: + words = Tokenizer.findall(entry.msgid_plural) + for word in Speller.unknown(words): + dictionary.add(word) dict_path = os.path.join(os.path.dirname(__file__), "dictionary.txt") with open(dict_path, "w", encoding="utf-8") as fp: for word in sorted(dictionary): From db58df5ec88da2c6df4c810ca214ffda91cdce32 Mon Sep 17 00:00:00 2001 From: Qrox Date: Sun, 25 Feb 2024 17:01:49 +0800 Subject: [PATCH 33/48] Make spell checker case-sensitive --- tools/spell_check_pr.py | 3 +-- tools/spell_checker/__init__.py | 28 +++++++++++++++++++++------ tools/spell_checker/gen_dictionary.py | 12 +++++++----- tools/spell_checker/spell_checker.py | 4 ++-- 4 files changed, 32 insertions(+), 15 deletions(-) diff --git a/tools/spell_check_pr.py b/tools/spell_check_pr.py index 0d135267dab32..849e71593fe7e 100644 --- a/tools/spell_check_pr.py +++ b/tools/spell_check_pr.py @@ -23,8 +23,7 @@ message = message.replace('\n', "\\n") for typo in typos: bold = "**" + typo + "**" - message = re.sub(re.escape(typo), lambda _: bold, message, - flags=re.IGNORECASE) + message = re.sub(re.escape(typo), lambda _: bold, message) errors.append(message) if errors: print("Spell checker encountered unrecognized words in the in-game text" diff --git a/tools/spell_checker/__init__.py b/tools/spell_checker/__init__.py index 1abf4b3359c76..4033cc15528da 100644 --- a/tools/spell_checker/__init__.py +++ b/tools/spell_checker/__init__.py @@ -4,7 +4,6 @@ from spellchecker import SpellChecker -Speller = SpellChecker() Tokenizer = regex.compile( r"(?<=" r"(?:" # a word can be after... @@ -32,19 +31,36 @@ r")" r")" ) +DefaultKnownWords = set() KnownWords = set() -def init_known_words(): - dictionary = os.path.join(os.path.dirname(__file__), 'dictionary.txt') - with open(dictionary, 'r', encoding='utf-8') as fp: +def init_known_words(DefaultKnownWords, KnownWords): + default_dict = SpellChecker(case_sensitive=True).word_frequency + + custom_dict = set() + dict_path = os.path.join(os.path.dirname(__file__), 'dictionary.txt') + with open(dict_path, 'r', encoding='utf-8') as fp: for line in fp: line = line.rstrip('\n').rstrip('\r') - KnownWords.add(line.split(' ')[0]) + custom_dict.add(line) + + for dictionary, knownwords in [ + (default_dict, DefaultKnownWords), (custom_dict, KnownWords)]: + for word in dictionary: + # For words in full lower case, allow capitalization and all caps + # (e.g. word, Word, & WORD); for other words, allow the word itself and + # all caps (e.g. George & GEORGE or pH & PH) + knownwords.add(word) + if word == word.lower(): + knownwords.add(word.capitalize()) + knownwords.add(word.upper()) + + KnownWords |= DefaultKnownWords if not KnownWords: - init_known_words() + init_known_words(DefaultKnownWords, KnownWords) def unit_test__tokenizer(): diff --git a/tools/spell_checker/gen_dictionary.py b/tools/spell_checker/gen_dictionary.py index 0dec700060013..da467023971d9 100644 --- a/tools/spell_checker/gen_dictionary.py +++ b/tools/spell_checker/gen_dictionary.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -from . import Speller, Tokenizer +from . import DefaultKnownWords, Tokenizer import os import polib @@ -11,12 +11,14 @@ def gen_dictionary(): dictionary = set() for entry in pofile: words = Tokenizer.findall(entry.msgid) - for word in Speller.unknown(words): - dictionary.add(word) + for word in words: + if word not in DefaultKnownWords: + dictionary.add(word) if entry.msgid_plural: words = Tokenizer.findall(entry.msgid_plural) - for word in Speller.unknown(words): - dictionary.add(word) + for word in words: + if word not in DefaultKnownWords: + dictionary.add(word) dict_path = os.path.join(os.path.dirname(__file__), "dictionary.txt") with open(dict_path, "w", encoding="utf-8") as fp: for word in sorted(dictionary): diff --git a/tools/spell_checker/spell_checker.py b/tools/spell_checker/spell_checker.py index 6cfa4e8cadc9f..8907642e83b83 100644 --- a/tools/spell_checker/spell_checker.py +++ b/tools/spell_checker/spell_checker.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 import re -from . import Speller, Tokenizer, KnownWords +from . import Tokenizer, KnownWords def not_in_known_words(word): @@ -9,5 +9,5 @@ def not_in_known_words(word): def spell_check(message): words = Tokenizer.findall(message) - unknowns = filter(not_in_known_words, Speller.unknown(words)) + unknowns = filter(not_in_known_words, words) return list(unknowns) From 2199c2fdd8bf1094df1447ecc205a385f143ed7b Mon Sep 17 00:00:00 2001 From: Qrox Date: Sun, 25 Feb 2024 18:56:14 +0800 Subject: [PATCH 34/48] Only consider Latin letters and diacritics in spell checker tokenization --- tools/spell_checker/__init__.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/spell_checker/__init__.py b/tools/spell_checker/__init__.py index 4033cc15528da..40e90c80b6b0a 100644 --- a/tools/spell_checker/__init__.py +++ b/tools/spell_checker/__init__.py @@ -4,6 +4,7 @@ from spellchecker import SpellChecker +_latin_and_diacritic = r"\p{Script=Latin}|[\u0300-\u036F\u1AB0-\u1AC0\u1DC0-\u1DFF\u20D0-\u20F0\uFE20-\uFE2D]" Tokenizer = regex.compile( r"(?<=" r"(?:" # a word can be after... @@ -15,9 +16,15 @@ r")" # a single letter is always considered a valid word and therefore not # tokenized - r"\pL" # a word always starts with an letter... - r"(?:\pL|['‘’])*" # ...can contain letters and apostrophes... - r"\pL" # ...and always ends with an letter + r"(?:" + + _latin_and_diacritic + + r")" # a word always starts with an letter... + r"(?:" + + _latin_and_diacritic + + r"|['‘’´])*" # ...can contain letters and apostrophes... + r"(?:" + + _latin_and_diacritic + + r")" # ...and always ends with an letter # exclude suffix `'s` and match the apostrophe as a delimiter later r"(? Date: Sun, 25 Feb 2024 19:04:31 +0800 Subject: [PATCH 35/48] Normalize dictionary entries --- tools/spell_checker/__init__.py | 8 ++++++-- tools/spell_checker/gen_dictionary.py | 11 +++++++---- tools/spell_checker/spell_checker.py | 3 ++- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tools/spell_checker/__init__.py b/tools/spell_checker/__init__.py index 40e90c80b6b0a..9c0c21b11bf45 100644 --- a/tools/spell_checker/__init__.py +++ b/tools/spell_checker/__init__.py @@ -2,6 +2,7 @@ import os import regex from spellchecker import SpellChecker +import unicodedata _latin_and_diacritic = r"\p{Script=Latin}|[\u0300-\u036F\u1AB0-\u1AC0\u1DC0-\u1DFF\u20D0-\u20F0\uFE20-\uFE2D]" @@ -43,14 +44,17 @@ def init_known_words(DefaultKnownWords, KnownWords): - default_dict = SpellChecker(case_sensitive=True).word_frequency + default_dict = { + unicodedata.normalize('NFC', word) for word in + SpellChecker(case_sensitive=True).word_frequency + } custom_dict = set() dict_path = os.path.join(os.path.dirname(__file__), 'dictionary.txt') with open(dict_path, 'r', encoding='utf-8') as fp: for line in fp: line = line.rstrip('\n').rstrip('\r') - custom_dict.add(line) + custom_dict.add(unicodedata.normalize('NFC', line)) for dictionary, knownwords in [ (default_dict, DefaultKnownWords), (custom_dict, KnownWords)]: diff --git a/tools/spell_checker/gen_dictionary.py b/tools/spell_checker/gen_dictionary.py index da467023971d9..c302d8782b538 100644 --- a/tools/spell_checker/gen_dictionary.py +++ b/tools/spell_checker/gen_dictionary.py @@ -2,6 +2,7 @@ from . import DefaultKnownWords, Tokenizer import os import polib +import unicodedata def gen_dictionary(): @@ -12,13 +13,15 @@ def gen_dictionary(): for entry in pofile: words = Tokenizer.findall(entry.msgid) for word in words: - if word not in DefaultKnownWords: - dictionary.add(word) + norm = unicodedata.normalize('NFC', word) + if norm not in DefaultKnownWords: + dictionary.add(norm) if entry.msgid_plural: words = Tokenizer.findall(entry.msgid_plural) for word in words: - if word not in DefaultKnownWords: - dictionary.add(word) + norm = unicodedata.normalize('NFC', word) + if norm not in DefaultKnownWords: + dictionary.add(norm) dict_path = os.path.join(os.path.dirname(__file__), "dictionary.txt") with open(dict_path, "w", encoding="utf-8") as fp: for word in sorted(dictionary): diff --git a/tools/spell_checker/spell_checker.py b/tools/spell_checker/spell_checker.py index 8907642e83b83..39c2d4e86ddc2 100644 --- a/tools/spell_checker/spell_checker.py +++ b/tools/spell_checker/spell_checker.py @@ -1,10 +1,11 @@ #!/usr/bin/env python3 import re from . import Tokenizer, KnownWords +import unicodedata def not_in_known_words(word): - return word not in KnownWords + return unicodedata.normalize('NFC', word) not in KnownWords def spell_check(message): From 932cc0538b00390c66a883798b596f35fdd02b81 Mon Sep 17 00:00:00 2001 From: Qrox Date: Mon, 8 Apr 2024 16:29:11 +0800 Subject: [PATCH 36/48] Add hints for adding new words to the dictionary --- tools/spell_check_pr.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tools/spell_check_pr.py b/tools/spell_check_pr.py index 849e71593fe7e..2215891881966 100644 --- a/tools/spell_check_pr.py +++ b/tools/spell_check_pr.py @@ -39,3 +39,26 @@ " this is inaccurate, or (optionally) you can also add the new words" " to `tools/spell_checker/dictionary.txt` so they will not trigger " "an alert next time.") + print() + print("
") + print("Hints for adding a new word to the dictionary") + print() + print("* If the word is normally in all lowercase, such as the noun " + "`word` or the verb `does`, add it in its lower-case form; if the " + "word is a proper noun, such as the surname `George`, add it in its " + "initial-caps form; if the word is an acronym or has special letter " + "case, such as the acronym `CDDA` or the unit `mW`, add it by " + "preserving the case of all the letters. A word in the dictionary " + "will also match its initial-caps form (if the word is in all " + "lowercase) and all-uppercase form, so a word should be added to " + "the dictionary in its normal letter case even if used in a " + "different letter case in a sentence.") + print("* For a word to be added to the dictionary, it should either be a " + "real, properly-spelled modern American English word, a foreign " + "loan word (including romanized foreign names), or a foreign or " + "made-up word that is used consistently and commonly enough in the " + "game. Intentional misspelling (including eye dialect) of a word " + "should not be added unless it has become a common terminology in " + "the game, because while someone may have a legitimate use for it, " + "another person may spell it that way accidentally.") + print("
") From 02578793df9cd493dc0de905d74c826fe1ac1a77 Mon Sep 17 00:00:00 2001 From: Qrox Date: Mon, 8 Apr 2024 21:06:58 +0800 Subject: [PATCH 37/48] Do not replace the same word multiple times in spell checker comment message --- tools/spell_check_pr.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/spell_check_pr.py b/tools/spell_check_pr.py index 2215891881966..d8d1008421163 100644 --- a/tools/spell_check_pr.py +++ b/tools/spell_check_pr.py @@ -17,7 +17,7 @@ diff = json.load(open(options.pot_diff, "r")) errors = [] for message in diff["added"]: - typos = spell_check(message) + typos = set(spell_check(message)) if len(typos) == 0: continue message = message.replace('\n', "\\n") From 79d1f98638fae161095edf4033620cc8cb6049aa Mon Sep 17 00:00:00 2001 From: Qrox Date: Tue, 9 Apr 2024 16:03:19 +0800 Subject: [PATCH 38/48] Ignore case when sorting generated dictionary --- tools/spell_checker/gen_dictionary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/spell_checker/gen_dictionary.py b/tools/spell_checker/gen_dictionary.py index c302d8782b538..d24798b710474 100644 --- a/tools/spell_checker/gen_dictionary.py +++ b/tools/spell_checker/gen_dictionary.py @@ -24,5 +24,5 @@ def gen_dictionary(): dictionary.add(norm) dict_path = os.path.join(os.path.dirname(__file__), "dictionary.txt") with open(dict_path, "w", encoding="utf-8") as fp: - for word in sorted(dictionary): + for word in sorted(dictionary, key=lambda v: (v.lower(), v)): print(word, file=fp) From 4c3500c1ad3545a08858d7384a04caf4a0fc2b10 Mon Sep 17 00:00:00 2001 From: Qrox Date: Tue, 9 Apr 2024 17:36:23 +0800 Subject: [PATCH 39/48] Flake8 --- tools/spell_checker/__init__.py | 64 ++++++++++++++++------------ tools/spell_checker/spell_checker.py | 1 - 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/tools/spell_checker/__init__.py b/tools/spell_checker/__init__.py index 9c0c21b11bf45..e2b9d9bdb7429 100644 --- a/tools/spell_checker/__init__.py +++ b/tools/spell_checker/__init__.py @@ -5,37 +5,41 @@ import unicodedata -_latin_and_diacritic = r"\p{Script=Latin}|[\u0300-\u036F\u1AB0-\u1AC0\u1DC0-\u1DFF\u20D0-\u20F0\uFE20-\uFE2D]" +_latin_and_diacritic = ( + r"\p{Script=Latin}" + r"|" + r"[\u0300-\u036F\u1AB0-\u1AC0\u1DC0-\u1DFF\u20D0-\u20F0\uFE20-\uFE2D]" +) Tokenizer = regex.compile( r"(?<=" - r"(?:" # a word can be after... - r"^" # ...the start of text... - r"|" # ...or... - r"""[\s\-'‘"“«\*&\(\[\{/>]""" # ...a valid starting delimiter + r"(?:" # a word can be after... # noqa: E131 + r"^" # ...the start of text... # noqa: E131 + r"|" # ...or... + r"""[\s\-'‘"“«\*&\(\[\{/>]""" # ...a valid starting delimiter r")" - r"[…]*" # ignore possible punctuations before a word + r"[…]*" # ignore possible punctuations before a word r")" # a single letter is always considered a valid word and therefore not # tokenized r"(?:" + _latin_and_diacritic + - r")" # a word always starts with an letter... + r")" # a word always starts with an letter... r"(?:" + _latin_and_diacritic + - r"|['‘’´])*" # ...can contain letters and apostrophes... + r"|['‘’´])*" # ...can contain letters and apostrophes... r"(?:" + _latin_and_diacritic + - r")" # ...and always ends with an letter + r")" # ...and always ends with an letter # exclude suffix `'s` and match the apostrophe as a delimiter later r"(? dolor", ["Lorem", "dolor"]), (">", []), - ("Lorem (ipsum) [dolor sit] {amet}", ["Lorem", "ipsum", "dolor", "sit", "amet"]), - ("Lorem ipsum/dolor/sit amet", ["Lorem", "ipsum", "dolor", "sit", "amet"]), + ("Lorem (ipsum) [dolor sit] {amet}", + ["Lorem", "ipsum", "dolor", "sit", "amet"]), + ("Lorem ipsum/dolor/sit amet", + ["Lorem", "ipsum", "dolor", "sit", "amet"]), ("Lorem.ipsum.dolor", []), ("Lorem %1$s ipsum %2$d dolor!", ["Lorem", "ipsum", "dolor"]) ] @@ -118,7 +127,8 @@ def unit_test__tokenizer(): for text, expected in text_and_results: result = list(Tokenizer.findall(text)) if result != expected: - print(f"test case: {text}\nexpected: {expected}\nresult: {result}\n") + print(f"test case: {text}\n" + f"expected: {expected}\nresult: {result}\n") fail = True if fail: diff --git a/tools/spell_checker/spell_checker.py b/tools/spell_checker/spell_checker.py index 39c2d4e86ddc2..e0da028199bc4 100644 --- a/tools/spell_checker/spell_checker.py +++ b/tools/spell_checker/spell_checker.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -import re from . import Tokenizer, KnownWords import unicodedata From e602eb3148794e14915355a238d4bf2ec1f9d117 Mon Sep 17 00:00:00 2001 From: Kevin Granade Date: Tue, 9 Apr 2024 04:14:57 -0700 Subject: [PATCH 40/48] Kill off ammo vending machines (#72597) --- data/json/itemgroups/vending_machines.json | 13 ------------- data/json/mapgen/s_gun.json | 4 ++-- data/mods/Backrooms/itemgroups.json | 13 +++++++++++++ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/data/json/itemgroups/vending_machines.json b/data/json/itemgroups/vending_machines.json index 381fba3cd6ec1..155b6a020b5e4 100644 --- a/data/json/itemgroups/vending_machines.json +++ b/data/json/itemgroups/vending_machines.json @@ -25,19 +25,6 @@ { "group": "vending_drink_items", "prob": 20, "count-min": 5, "count-max": 25 } ] }, - { - "type": "item_group", - "subtype": "collection", - "id": "vending_ammo", - "entries": [ - { "group": "ammo_pistol_common", "count-min": 3, "count-max": 8 }, - { "group": "ammo_rifle_common", "prob": 50, "count-min": 2, "count-max": 6 }, - { "group": "ammo_shotgun_common", "prob": 50, "count-min": 2, "count-max": 6 }, - { "group": "ammo_pistol_rare", "prob": 20, "count-min": 1, "count-max": 2 }, - { "group": "ammo_rifle_rare", "prob": 20, "count-min": 1, "count-max": 2 }, - { "group": "ammo_shotgun_rare", "prob": 20, "count-min": 1, "count-max": 2 } - ] - }, { "id": "vending_drink_home_impr", "type": "item_group", diff --git a/data/json/mapgen/s_gun.json b/data/json/mapgen/s_gun.json index ad797d8497365..f61fbbd872f0d 100644 --- a/data/json/mapgen/s_gun.json +++ b/data/json/mapgen/s_gun.json @@ -200,7 +200,7 @@ ",,,,,,,,,,,,,,,,,,,,,,,," ], "palettes": [ "gun_store_palette" ], - "vendingmachines": { "V": { "item_group": "vending_ammo", "lootable": false } }, + "vendingmachines": { "V": { "item_group": "vending_drink", "lootable": false } }, "terrain": { ";": "t_sidewalk" }, "place_loot": [ { "group": "cash_register_random", "x": [ 4, 6 ], "y": 5 }, @@ -306,7 +306,7 @@ ], "palettes": [ "gun_store_palette" ], "terrain": { ";": "t_sidewalk" }, - "vendingmachines": { "V": { "item_group": "vending_ammo", "lootable": true } }, + "vendingmachines": { "V": { "item_group": "vending_drink", "lootable": true } }, "nested": { "#": { "chunks": [ [ "general_graffiti", 15 ], [ "null", 75 ] ] }, "m": { "chunks": [ [ "destroyed_furniture", 40 ], [ "null", 80 ] ] }, diff --git a/data/mods/Backrooms/itemgroups.json b/data/mods/Backrooms/itemgroups.json index 054cf08900411..815c6e4917a72 100644 --- a/data/mods/Backrooms/itemgroups.json +++ b/data/mods/Backrooms/itemgroups.json @@ -698,6 +698,19 @@ { "group": "wreckage", "count": [ 1, 3 ], "prob": 25 } ] }, + { + "type": "item_group", + "subtype": "collection", + "id": "vending_ammo", + "entries": [ + { "group": "ammo_pistol_common", "count-min": 3, "count-max": 8 }, + { "group": "ammo_rifle_common", "prob": 50, "count-min": 2, "count-max": 6 }, + { "group": "ammo_shotgun_common", "prob": 50, "count-min": 2, "count-max": 6 }, + { "group": "ammo_pistol_rare", "prob": 20, "count-min": 1, "count-max": 2 }, + { "group": "ammo_rifle_rare", "prob": 20, "count-min": 1, "count-max": 2 }, + { "group": "ammo_shotgun_rare", "prob": 20, "count-min": 1, "count-max": 2 } + ] + }, { "type": "item_group", "id": "backrooms_master_vending", From 03e82ef44b343c96d26443756668f0d74f3aa196 Mon Sep 17 00:00:00 2001 From: Tonkatsu <7764202+tenmillimaster@users.noreply.github.com> Date: Tue, 9 Apr 2024 06:25:43 -0500 Subject: [PATCH 41/48] Disallow some guns from turrets based on action (#72789) * first pass * Update 36paper.json --- data/json/items/gun/22.json | 2 +- data/json/items/gun/270win.json | 2 +- data/json/items/gun/300.json | 8 ++++---- data/json/items/gun/3006.json | 7 ++++--- data/json/items/gun/303.json | 4 ++-- data/json/items/gun/308.json | 6 +++--- data/json/items/gun/338lapua.json | 8 ++++---- data/json/items/gun/36paper.json | 1 + data/json/items/gun/38.json | 2 +- data/json/items/gun/44.json | 1 + data/json/items/gun/44paper.json | 1 + data/json/items/gun/4570.json | 2 +- data/json/items/gun/458wm.json | 1 + data/json/items/gun/45colt.json | 3 ++- data/json/items/gun/50.json | 4 ++-- data/json/items/gun/762R.json | 4 ++-- data/json/items/gun/77mm_jap.json | 2 +- data/json/items/gun/artisan_guns.json | 2 +- data/json/items/gun/shot.json | 5 +++-- 19 files changed, 36 insertions(+), 29 deletions(-) diff --git a/data/json/items/gun/22.json b/data/json/items/gun/22.json index 2f584d1467290..ac9e0ab8b33cb 100644 --- a/data/json/items/gun/22.json +++ b/data/json/items/gun/22.json @@ -100,7 +100,7 @@ [ "underbarrel mount", 1 ] ], "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ], - "flags": [ "RELOAD_ONE" ], + "flags": [ "RELOAD_ONE", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", diff --git a/data/json/items/gun/270win.json b/data/json/items/gun/270win.json index 4dc21e9650567..1e2dfb1fdc797 100644 --- a/data/json/items/gun/270win.json +++ b/data/json/items/gun/270win.json @@ -30,7 +30,7 @@ "clip_size": 4, "barrel_volume": "750 ml", "barrel_length": "610 mm", - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "valid_mod_locations": [ [ "barrel", 1 ], [ "brass catcher", 1 ], diff --git a/data/json/items/gun/300.json b/data/json/items/gun/300.json index 171a89f238bc6..f920623434202 100644 --- a/data/json/items/gun/300.json +++ b/data/json/items/gun/300.json @@ -19,7 +19,7 @@ "dispersion": 90, "durability": 8, "barrel_volume": "500 ml", - "flags": [ "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "m2010mag" ] } ], "melee_damage": { "bash": 12 } }, @@ -46,7 +46,7 @@ "blackpowder_tolerance": 24, "clip_size": 3, "barrel_volume": "750 ml", - "flags": [ "RELOAD_ONE", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "EASY_CLEAN", "NO_TURRET" ], "valid_mod_locations": [ [ "barrel", 1 ], [ "brass catcher", 1 ], @@ -84,7 +84,7 @@ "blackpowder_tolerance": 24, "clip_size": 3, "barrel_volume": "750 ml", - "flags": [ "RELOAD_ONE", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "EASY_CLEAN", "NO_TURRET" ], "valid_mod_locations": [ [ "barrel", 1 ], [ "brass catcher", 1 ], @@ -136,7 +136,7 @@ [ "stock accessory", 2 ], [ "stock", 1 ] ], - "flags": [ "EASY_CLEAN" ], + "flags": [ "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "magazine_well": "300 ml", diff --git a/data/json/items/gun/3006.json b/data/json/items/gun/3006.json index 2ee698b6e43cf..d5f450c8d305b 100644 --- a/data/json/items/gun/3006.json +++ b/data/json/items/gun/3006.json @@ -36,6 +36,7 @@ [ "underbarrel mount", 1 ] ], "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ], + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "blrmag" ] } ], "melee_damage": { "bash": 12 } }, @@ -116,7 +117,7 @@ [ "stock mount", 1 ], [ "underbarrel mount", 1 ] ], - "flags": [ "RELOAD_ONE", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "3006": 5 }, "allowed_speedloaders": [ "3006_clip" ] } ], @@ -188,7 +189,7 @@ "blackpowder_tolerance": 24, "clip_size": 4, "barrel_volume": "750 ml", - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "3006": 4 } } ], "melee_damage": { "bash": 12 } }, @@ -232,7 +233,7 @@ [ "stock accessory", 2 ], [ "stock", 1 ] ], - "flags": "RELOAD_ONE", + "flags": [ "RELOAD_ONE", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "3006": 4 } } ], "melee_damage": { "bash": 12 } } diff --git a/data/json/items/gun/303.json b/data/json/items/gun/303.json index 7821f91de5851..7cb1a336a6821 100644 --- a/data/json/items/gun/303.json +++ b/data/json/items/gun/303.json @@ -28,7 +28,7 @@ "dispersion": 170, "durability": 8, "blackpowder_tolerance": 40, - "flags": [ "EASY_CLEAN" ], + "flags": [ "EASY_CLEAN", "NO_TURRET" ], "valid_mod_locations": [ [ "barrel", 1 ], [ "bayonet lug", 1 ], @@ -74,7 +74,7 @@ "dispersion": 150, "durability": 8, "blackpowder_tolerance": 40, - "flags": [ "EASY_CLEAN" ], + "flags": [ "EASY_CLEAN", "NO_TURRET" ], "valid_mod_locations": [ [ "barrel", 1 ], [ "bayonet lug", 1 ], diff --git a/data/json/items/gun/308.json b/data/json/items/gun/308.json index 392a6ca30a5a2..61e356f541364 100644 --- a/data/json/items/gun/308.json +++ b/data/json/items/gun/308.json @@ -289,7 +289,7 @@ "blackpowder_tolerance": 24, "clip_size": 3, "barrel_volume": "750 ml", - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "308": 3 } } ], "melee_damage": { "bash": 12 } }, @@ -351,7 +351,7 @@ [ "rail mount", 1 ], [ "underbarrel", 1 ] ], - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "308": 5 } } ], "melee_damage": { "bash": 12 } }, @@ -566,7 +566,7 @@ [ "underbarrel", 1 ], [ "underbarrel mount", 1 ] ], - "flags": [ "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "steyr_scout_mag", "steyr_scout_mag_makeshift" ] } ], "melee_damage": { "bash": 10 } } diff --git a/data/json/items/gun/338lapua.json b/data/json/items/gun/338lapua.json index b7ffb048b0869..8fc0b9a344f06 100644 --- a/data/json/items/gun/338lapua.json +++ b/data/json/items/gun/338lapua.json @@ -28,7 +28,7 @@ "durability": 10, "blackpowder_tolerance": 24, "default_mods": [ "cheek_pad", "butt_hook", "bipod", "rifle_scope", "muzzle_brake" ], - "flags": [ "EASY_CLEAN" ], + "flags": [ "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "ai_338mag", "ai_338mag_10" ] } ], "melee_damage": { "bash": 12 } }, @@ -75,7 +75,7 @@ [ "rail mount", 1 ], [ "stock mount", 1 ] ], - "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "338lapua": 1 } } ], "melee_damage": { "bash": 12 } }, @@ -108,7 +108,7 @@ "durability": 10, "blackpowder_tolerance": 24, "built_in_mods": [ "cheek_pad" ], - "flags": [ "EASY_CLEAN" ], + "flags": [ "EASY_CLEAN", "NO_TURRET" ], "//": "Cheek pad required for holding the buttstock in place and keep it from folding.", "default_mods": [ "match_trigger", "muzzle_brake" ], "valid_mod_locations": [ @@ -166,7 +166,7 @@ [ "underbarrel", 1 ], [ "stock", 1 ] ], - "flags": [ "NO_TURRET", "EASY_CLEAN" ], + "flags": [ "NO_TURRET", "EASY_CLEAN", "NO_TURRET" ], "//3": "This should be removed once vehicle turrets are capable of mounting guns with mods attached. As it stands, trying to mount this style of weapon would require the player to remove the conversion kit, thus rendering it unusable anyhow.", "melee_damage": { "bash": 12 } } diff --git a/data/json/items/gun/36paper.json b/data/json/items/gun/36paper.json index 0dce2e56ed9ec..dbe3b878b243a 100644 --- a/data/json/items/gun/36paper.json +++ b/data/json/items/gun/36paper.json @@ -19,6 +19,7 @@ "blackpowder_tolerance": 96, "clip_size": 6, "proportional": { "reload": 2.0 }, + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "36paper": 6 } } ], "melee_damage": { "bash": 8 } } diff --git a/data/json/items/gun/38.json b/data/json/items/gun/38.json index c47f7842c98ed..f31068de85e54 100644 --- a/data/json/items/gun/38.json +++ b/data/json/items/gun/38.json @@ -28,7 +28,7 @@ "reload": 200, "valid_mod_locations": [ [ "grip", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ], [ "rail mount", 1 ], [ "stock mount", 1 ] ], "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ], - "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "38": 2 } } ], "melee_damage": { "bash": 3 } }, diff --git a/data/json/items/gun/44.json b/data/json/items/gun/44.json index 34255e82e904a..a025f9c83cfc2 100644 --- a/data/json/items/gun/44.json +++ b/data/json/items/gun/44.json @@ -77,6 +77,7 @@ [ "rail mount", 1 ], [ "underbarrel mount", 1 ] ], + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "44": 10 } } ], "melee_damage": { "bash": 12 } }, diff --git a/data/json/items/gun/44paper.json b/data/json/items/gun/44paper.json index 0fbc54510781d..4e162f8653c87 100644 --- a/data/json/items/gun/44paper.json +++ b/data/json/items/gun/44paper.json @@ -18,6 +18,7 @@ "durability": 7, "blackpowder_tolerance": 96, "clip_size": 6, + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "44paper": 6 } } ], "melee_damage": { "bash": 8 } } diff --git a/data/json/items/gun/4570.json b/data/json/items/gun/4570.json index 018acfd6e1d9b..8c4cf48206f69 100644 --- a/data/json/items/gun/4570.json +++ b/data/json/items/gun/4570.json @@ -32,7 +32,7 @@ [ "stock mount", 1 ], [ "underbarrel mount", 1 ] ], - "flags": [ "RELOAD_ONE" ], + "flags": [ "RELOAD_ONE", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "4570": 6 } } ], "melee_damage": { "bash": 12 } }, diff --git a/data/json/items/gun/458wm.json b/data/json/items/gun/458wm.json index 580742a65cbf7..fc8c179e1ff88 100644 --- a/data/json/items/gun/458wm.json +++ b/data/json/items/gun/458wm.json @@ -19,6 +19,7 @@ "price": 176000, "price_postapoc": 5000, "ammo": [ "458wm" ], + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "458wm": 3 } } ] } ] diff --git a/data/json/items/gun/45colt.json b/data/json/items/gun/45colt.json index f143c29a7a42f..8699232c9aab9 100644 --- a/data/json/items/gun/45colt.json +++ b/data/json/items/gun/45colt.json @@ -31,7 +31,7 @@ [ "stock mount", 1 ], [ "underbarrel mount", 1 ] ], - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "45colt": 2, "410shot": 2 } } ], "melee_damage": { "bash": 2 } }, @@ -96,6 +96,7 @@ "clip_size": 6, "blackpowder_tolerance": 56, "//proportional": { "reload": 1.5 }, + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "45colt": 6 } } ], "melee_damage": { "bash": 8 } } diff --git a/data/json/items/gun/50.json b/data/json/items/gun/50.json index f76e55fe30382..5ca0a76bcfc5d 100644 --- a/data/json/items/gun/50.json +++ b/data/json/items/gun/50.json @@ -114,7 +114,7 @@ "reload": 450, "barrel_volume": "1250 ml", "default_mods": [ "recoil_stock", "bipod", "rifle_scope", "muzzle_brake" ], - "flags": [ "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "tac50mag" ] } ], "melee_damage": { "bash": 12 } }, @@ -154,7 +154,7 @@ ], "default_mods": [ "bipod", "rifle_scope", "muzzle_brake" ], "clip_size": 1, - "flags": [ "NEVER_JAMS", "RELOAD_EJECT", "EASY_CLEAN" ], + "flags": [ "NEVER_JAMS", "RELOAD_EJECT", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "50": 1 } } ], "melee_damage": { "bash": 12 } } diff --git a/data/json/items/gun/762R.json b/data/json/items/gun/762R.json index 0d7e0c3a93fca..a9964a8c55c51 100644 --- a/data/json/items/gun/762R.json +++ b/data/json/items/gun/762R.json @@ -51,7 +51,7 @@ [ "stock accessory", 2 ], [ "underbarrel", 1 ] ], - "flags": [ "RELOAD_ONE" ], + "flags": [ "RELOAD_ONE", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "762R": 5 }, "allowed_speedloaders": [ "762R_clip" ] } ], @@ -107,7 +107,7 @@ [ "stock accessory", 2 ], [ "underbarrel mount", 1 ] ], - "flags": [ "RELOAD_ONE" ], + "flags": [ "RELOAD_ONE", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "762R": 5 }, "allowed_speedloaders": [ "762R_clip" ] } ], diff --git a/data/json/items/gun/77mm_jap.json b/data/json/items/gun/77mm_jap.json index 92e9cc4fd6b97..871af8bcc30de 100644 --- a/data/json/items/gun/77mm_jap.json +++ b/data/json/items/gun/77mm_jap.json @@ -34,7 +34,7 @@ "durability": 10, "blackpowder_tolerance": 24, "clip_size": 5, - "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN" ], + "flags": [ "RELOAD_ONE", "NEVER_JAMS", "EASY_CLEAN", "NO_TURRET" ], "valid_mod_locations": [ [ "barrel", 1 ], [ "bayonet lug", 1 ], diff --git a/data/json/items/gun/artisan_guns.json b/data/json/items/gun/artisan_guns.json index a82e5b134b69a..088191eccfd6a 100644 --- a/data/json/items/gun/artisan_guns.json +++ b/data/json/items/gun/artisan_guns.json @@ -100,7 +100,7 @@ "to_hit": { "grip": "weapon", "length": "hand", "surface": "point", "balance": "neutral" }, "qualities": [ [ "CUT", 2 ], [ "CUT_FINE", 1 ], [ "BUTCHER", 14 ] ], "techniques": [ "RAPID" ], - "flags": [ "DURABLE_MELEE", "ALLOWS_BODY_BLOCK" ], + "flags": [ "DURABLE_MELEE", "ALLOWS_BODY_BLOCK", "NO_TURRET" ], "weapon_category": [ "AUTOMATIC_PISTOLS", "SHIVS" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "ammo_restriction": { "32": 2 } } ], "melee_damage": { "stab": 16 } diff --git a/data/json/items/gun/shot.json b/data/json/items/gun/shot.json index 318892a66bc7a..66c88f4c3509c 100644 --- a/data/json/items/gun/shot.json +++ b/data/json/items/gun/shot.json @@ -723,7 +723,7 @@ [ "sights mount", 1 ], [ "underbarrel mount", 1 ] ], - "flags": [ "RELOAD_ONE" ], + "flags": [ "RELOAD_ONE", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 6 } } ], "melee_damage": { "bash": 8 } }, @@ -819,6 +819,7 @@ [ "stock accessory", 2 ], [ "underbarrel mount", 1 ] ], + "flags": [ "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 4 } } ] }, { @@ -877,7 +878,7 @@ "reload": 600, "modes": [ [ "DEFAULT", "single", 1 ] ], "valid_mod_locations": [ [ "sling", 1 ], [ "sights mount", 1 ], [ "underbarrel mount", 1 ] ], - "flags": [ "RELOAD_EJECT", "EASY_CLEAN" ], + "flags": [ "RELOAD_EJECT", "EASY_CLEAN", "NO_TURRET" ], "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "shot": 1 } } ], "melee_damage": { "bash": 8 } }, From a9987aa8d1f82ce086c94371d935afeef6e9c076 Mon Sep 17 00:00:00 2001 From: Standing-Storm <120433252+Standing-Storm@users.noreply.github.com> Date: Tue, 9 Apr 2024 06:26:19 -0500 Subject: [PATCH 42/48] Initial commit (#72753) --- .../eoc_nether_attunement_events.json | 90 ++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json b/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json index 346c0113a6b26..be278e0647ae9 100644 --- a/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json +++ b/data/mods/MindOverMatter/effectoncondition/eoc_nether_attunement_events.json @@ -28,7 +28,7 @@ { "run_eocs": [ { - "id": "EOC_PSIONICS_GAIN_NETHER_ATTUNEMENT_2", + "id": "EOC_PSIONICS_GAIN_NETHER_ATTUNEMENT_SCALING_CHECK", "condition": { "math": [ "u_vitamin('vitamin_psionic_drain')", "<", "15" ] }, "effect": [ { @@ -117,6 +117,94 @@ } ] }, + { + "type": "effect_on_condition", + "id": "EOC_PSIONICS_GAIN_NETHER_ATTUNEMENT_2", + "//": "This is the EoC called by concentration checks. Name is to avoid JSON churn", + "condition": { "math": [ "u_vitamin('vitamin_psionic_drain')", "<", "15" ] }, + "effect": [ + { + "run_eocs": [ + { + "id": "EOC_RAISE_ATTUNEMENT_BELOW_THRESHOLD_CHECKER_MAINTENANCE", + "condition": { + "x_in_y_chance": { + "x": { + "math": [ + "(u_latest_channeled_power_difficulty * u_latest_channeled_power_difficulty) + (u_nether_conduit_repeated_channeling_value / 3) + (u_vitamin('vitamin_maintained_powers') * 3)" + ] + }, + "y": 100 + } + }, + "effect": [ { "run_eocs": "EOC_RAISE_ATTUNEMENT_BELOW_THRESHOLD_MAINTENANCE" } ] + } + ] + } + ], + "false_effect": [ + { + "run_eocs": [ + { + "id": "EOC_RAISE_ATTUNEMENT_ABOVE_THRESHOLD_CHECKER_MAINTENANCE", + "condition": { + "x_in_y_chance": { + "x": { + "math": [ + "(u_latest_channeled_power_difficulty * u_latest_channeled_power_difficulty) + u_nether_conduit_repeated_channeling_value + (u_vitamin('vitamin_maintained_powers') * 3)" + ] + }, + "y": 100 + } + }, + "effect": [ { "run_eocs": "EOC_RAISE_ATTUNEMENT_ABOVE_THRESHOLD_MAINTENANCE" } ] + } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_RAISE_ATTUNEMENT_BELOW_THRESHOLD_MAINTENANCE", + "condition": { "u_has_effect": "effect_noetic_resilience" }, + "effect": [ + { "u_message": "As you concentrate on your powers, you feel a strange tingling sensation.", "type": "mixed" }, + { + "math": [ "u_vitamin('vitamin_psionic_drain')", "+=", "rand(1) + (rand(u_vitamin('vitamin_maintained_powers')) / 2)" ] + } + ], + "false_effect": [ + { "u_message": "As you concentrate on your powers, you feel a strange tingling sensation.", "type": "mixed" }, + { + "math": [ "u_vitamin('vitamin_psionic_drain')", "+=", "rand(3) + (rand(u_vitamin('vitamin_maintained_powers')) / 2)" ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_RAISE_ATTUNEMENT_ABOVE_THRESHOLD_MAINTENANCE", + "condition": { "u_has_effect": "effect_noetic_resilience" }, + "effect": [ + { "u_message": "As you concentrate on your powers, you feel a strange tingling sensation.", "type": "mixed" }, + { + "math": [ + "u_vitamin('vitamin_psionic_drain')", + "+=", + "rand((u_latest_channeled_power_difficulty) / 2) + rand(u_vitamin('vitamin_maintained_powers'))" + ] + } + ], + "false_effect": [ + { "u_message": "As you concentrate on your powers, you feel a strange tingling sensation.", "type": "mixed" }, + { + "math": [ + "u_vitamin('vitamin_psionic_drain')", + "+=", + "(rand(u_latest_channeled_power_difficulty) * u_nether_attunement_power_scaling) + rand(u_vitamin('vitamin_maintained_powers'))" + ] + } + ] + }, { "type": "effect_on_condition", "id": "EOC_NETHER_CONDUIT_VALUE_DECREASER", From 73d90a827aa99ca5930ef6f14b7919da63dd6c50 Mon Sep 17 00:00:00 2001 From: Andrew Rosa Date: Tue, 9 Apr 2024 08:35:49 -0300 Subject: [PATCH 43/48] Use 'soldering_standard' for electronic fixes (#72895) Current implementation has indeed a bug, as it requires BOTH soldering_iron and soldering_iron_portable to work. Fixes by using the soldering_standard requirements, which allows ANY, plus few other tools. As side-effect, it also requires solder as extra component, which makes sense. The "5" amount choosen here is completely arbitrary, based on a quick search across recipes and what looks like to be the minimal amount. --- data/json/faults/faults_electronic.json | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/data/json/faults/faults_electronic.json b/data/json/faults/faults_electronic.json index 94c67650e1d9b..49921a98d1194 100644 --- a/data/json/faults/faults_electronic.json +++ b/data/json/faults/faults_electronic.json @@ -36,11 +36,8 @@ "faults_removed": [ "fault_electronic_blown_capacitor" ], "skills": { "electronics": 4 }, "requirements": [ - { - "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ "soldering_iron" ], [ "soldering_iron_portable" ] ], - "components": [ [ [ "e_scrap", 1 ] ] ] - } + [ "soldering_standard", 5 ], + { "qualities": [ { "id": "SCREW", "level": 1 } ], "components": [ [ [ "e_scrap", 1 ] ] ] } ] }, { @@ -61,11 +58,8 @@ "faults_removed": [ "fault_electronic_shorted_circuit" ], "skills": { "electronics": 5 }, "requirements": [ - { - "qualities": [ { "id": "SCREW", "level": 1 } ], - "tools": [ [ "soldering_iron" ], [ "soldering_iron_portable" ] ], - "components": [ [ [ "circuit", 1 ] ] ] - } + [ "soldering_standard", 5 ], + { "qualities": [ { "id": "SCREW", "level": 1 } ], "components": [ [ [ "circuit", 1 ] ] ] } ] } ] From 2c47a81f086c30aeeb0e86c3a936f9c49e09c3fa Mon Sep 17 00:00:00 2001 From: Anton Simakov <67688115+GuardianDll@users.noreply.github.com> Date: Tue, 9 Apr 2024 13:37:50 +0200 Subject: [PATCH 44/48] fix health dreams when you are ill (#72881) --- data/json/effects_on_condition/dream_eocs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/effects_on_condition/dream_eocs.json b/data/json/effects_on_condition/dream_eocs.json index 271a39fb61e85..3a292c8e4f704 100644 --- a/data/json/effects_on_condition/dream_eocs.json +++ b/data/json/effects_on_condition/dream_eocs.json @@ -26,7 +26,7 @@ "condition": { "and": [ { - "or": [ + "and": [ { "not": { "u_has_effect": "pre_common_cold" } }, { "not": { "u_has_effect": "common_cold" } }, { "not": { "u_has_effect": "pre_flu" } }, From cb98e7585ccf2b3429724c117c68975207dd15d7 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 9 Apr 2024 17:38:16 -0400 Subject: [PATCH 45/48] Modified SDL ImGui backend, and ImGui itself, to render IME preview text for CJK text entry (#72645) --- src/third-party/imgui/imgui.cpp | 15 +++++++-- src/third-party/imgui/imgui.h | 3 ++ src/third-party/imgui/imgui_impl_sdl2.cpp | 37 +++++++++++++++++++++-- src/third-party/imgui/imgui_widgets.cpp | 28 ++++++++++++++++- 4 files changed, 77 insertions(+), 6 deletions(-) diff --git a/src/third-party/imgui/imgui.cpp b/src/third-party/imgui/imgui.cpp index ee7781fde022b..7ab6c34c1a96b 100644 --- a/src/third-party/imgui/imgui.cpp +++ b/src/third-party/imgui/imgui.cpp @@ -1261,6 +1261,17 @@ ImGuiIO::ImGuiIO() AppAcceptingEvents = true; BackendUsingLegacyKeyArrays = (ImS8)-1; BackendUsingLegacyNavInputArray = true; // assume using legacy array until proven wrong + PreEditText[0] = NULL; +} + +void ImGuiIO::SetPreEditText(const char *str) +{ + strcpy(PreEditText, str); +} + +void ImGuiIO::ClearPreEditText() +{ + PreEditText[0] = NULL; } // Pass in translated ASCII characters for text input. @@ -2467,7 +2478,7 @@ ImGuiTextFilter::ImGuiTextFilter(const char* default_filter) //-V1077 bool ImGuiTextFilter::Draw(const char* label, float width) { - if (width != 0.0f) + if (width != 0.0f) ImGui::SetNextItemWidth(width); bool value_changed = ImGui::InputText(label, InputBuf, IM_ARRAYSIZE(InputBuf)); if (value_changed) @@ -4148,7 +4159,7 @@ ImGuiIO& ImGui::GetIO() return GImGui->IO; } -// Pass this to your backend rendering function! Valid after Render() and until the next call to NewFrame() +// Pass this to your backend rendering function! Valid after Render() and until the next call to NewFrame() ImDrawData* ImGui::GetDrawData() { ImGuiContext& g = *GImGui; diff --git a/src/third-party/imgui/imgui.h b/src/third-party/imgui/imgui.h index 89902850bfd59..bb05856a1c1b7 100644 --- a/src/third-party/imgui/imgui.h +++ b/src/third-party/imgui/imgui.h @@ -2008,6 +2008,8 @@ struct ImGuiIO IMGUI_API void AddInputCharacter(unsigned int c); // Queue a new character input IMGUI_API void AddInputCharacterUTF16(ImWchar16 c); // Queue a new character input from a UTF-16 character, it can be a surrogate IMGUI_API void AddInputCharactersUTF8(const char* str); // Queue a new characters input from a UTF-8 string + IMGUI_API void SetPreEditText(const char *str); + IMGUI_API void ClearPreEditText(); IMGUI_API void SetKeyEventNativeData(ImGuiKey key, int native_keycode, int native_scancode, int native_legacy_index = -1); // [Optional] Specify index for legacy <1.87 IsKeyXXX() functions with native indices + specify native keycode, scancode. IMGUI_API void SetAppAcceptingEvents(bool accepting_events); // Set master flag for accepting key/mouse/text events (default to true). Useful if you have native dialog boxes that are interrupting your application loop/refresh, and you want to disable events being queued while your app is frozen. @@ -2088,6 +2090,7 @@ struct ImGuiIO bool BackendUsingLegacyNavInputArray; // 0: using AddKeyAnalogEvent(), 1: writing to legacy io.NavInputs[] directly ImWchar16 InputQueueSurrogate; // For AddInputCharacterUTF16() ImVector InputQueueCharacters; // Queue of _characters_ input (obtained by platform backend). Fill using AddInputCharacter() helper. + char PreEditText[255]; IMGUI_API ImGuiIO(); }; diff --git a/src/third-party/imgui/imgui_impl_sdl2.cpp b/src/third-party/imgui/imgui_impl_sdl2.cpp index 0ab73ec3e82e7..57c773518ffe0 100644 --- a/src/third-party/imgui/imgui_impl_sdl2.cpp +++ b/src/third-party/imgui/imgui_impl_sdl2.cpp @@ -333,6 +333,7 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event) } case SDL_TEXTINPUT: { + io.ClearPreEditText(); io.AddInputCharactersUTF8(event->text.text); return true; } @@ -345,6 +346,9 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event) io.SetKeyEventNativeData(key, event->key.keysym.sym, event->key.keysym.scancode, event->key.keysym.scancode); // To support legacy indexing (<1.87 user code). Legacy backend uses SDLK_*** as indices to IsKeyXXX() functions. return true; } + case SDL_WINDOWEVENT_FOCUS_LOST: + ImGui::GetIO().ClearPreEditText(); + return true; case SDL_WINDOWEVENT: { // - When capturing mouse, SDL will send a bunch of conflicting LEAVE/ENTER event on every mouse move, but the final ENTER tends to be right. @@ -358,14 +362,41 @@ bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event) bd->MouseWindowID = event->window.windowID; bd->PendingMouseLeaveFrame = 0; } - if (window_event == SDL_WINDOWEVENT_LEAVE) + if( window_event == SDL_WINDOWEVENT_LEAVE ) { bd->PendingMouseLeaveFrame = ImGui::GetFrameCount() + 1; + ImGui::GetIO().ClearPreEditText(); + } if (window_event == SDL_WINDOWEVENT_FOCUS_GAINED) io.AddFocusEvent(true); - else if (event->window.event == SDL_WINDOWEVENT_FOCUS_LOST) - io.AddFocusEvent(false); + else if( event->window.event == SDL_WINDOWEVENT_FOCUS_LOST ) { + io.AddFocusEvent( false ); + ImGui::GetIO().ClearPreEditText(); + } return true; } + case SDL_TEXTEDITING: { + if(strlen(event->edit.text) > 0) + { + ImGui::GetIO().SetPreEditText(event->edit.text); + } + else + { + io.ClearPreEditText(); + } + break; + } +#if defined(SDL_HINT_IME_SUPPORT_EXTENDED_TEXT) + case SDL_TEXTEDITING_EXT: { + if( event->editExt.text != nullptr && strlen(event->editExt.text) > 0) + { + ImGui::GetIO().SetPreEditText( event->editExt.text ); + } + else { + ImGui::GetIO().ClearPreEditText(); + } + break; + } +#endif } return false; } diff --git a/src/third-party/imgui/imgui_widgets.cpp b/src/third-party/imgui/imgui_widgets.cpp index 6001204ae0fcb..2a1e88cac3579 100644 --- a/src/third-party/imgui/imgui_widgets.cpp +++ b/src/third-party/imgui/imgui_widgets.cpp @@ -5012,7 +5012,33 @@ bool ImGui::InputTextEx(const char* label, const char* hint, char* buf, int buf_ if (is_multiline || (buf_display_end - buf_display) < buf_display_max_length) { ImU32 col = GetColorU32(is_displaying_hint ? ImGuiCol_TextDisabled : ImGuiCol_Text); - draw_window->DrawList->AddText(g.Font, g.FontSize, draw_pos - draw_scroll, col, buf_display, buf_display_end, 0.0f, is_multiline ? NULL : &clip_rect); + + if(GImGui->IO.PreEditText && !is_multiline) + { + const char *preEditTextEnd = GImGui->IO.PreEditText + strlen(GImGui->IO.PreEditText); + ImWchar wcharBuf[255] = { 0 }; + int wlen = ImTextStrFromUtf8(wcharBuf, 255, GImGui->IO.PreEditText, preEditTextEnd); + char tmpBuf[255] = "\0"; + + ImVec2 drawPosStart = draw_pos - draw_scroll; + size_t tmpBufLen = ImTextStrToUtf8( tmpBuf, 255, text_begin, text_begin + state->Stb.cursor ); + draw_window->DrawList->AddText(g.Font, g.FontSize, drawPosStart, col, tmpBuf, tmpBuf + tmpBufLen, 0.0f, &clip_rect); + drawPosStart.x += InputTextCalcTextSizeW(GImGui, text_begin, text_begin + state->Stb.cursor).x; + ImU32 bg_color = GetColorU32( ImGuiCol_TextSelectedBg, 1.f ); + ImVec2 highlightRectMax = drawPosStart; + highlightRectMax += InputTextCalcTextSizeW(GImGui, wcharBuf, wcharBuf + wlen); + draw_window->DrawList->AddRectFilled( drawPosStart, highlightRectMax, bg_color ); + draw_window->DrawList->AddText(g.Font, g.FontSize, drawPosStart, col, GImGui->IO.PreEditText, preEditTextEnd, 0.0f, &clip_rect); + if( buf_display_end != NULL && buf_display + tmpBufLen < buf_display_end ) + { + drawPosStart.x = highlightRectMax.x; + draw_window->DrawList->AddText(g.Font, g.FontSize, drawPosStart, col, buf_display + tmpBufLen, buf_display_end, 0.0f, &clip_rect); + } + } + else + { + draw_window->DrawList->AddText(g.Font, g.FontSize, draw_pos - draw_scroll, col, buf_display, buf_display_end, 0.0f, is_multiline ? NULL : &clip_rect); + } } // Draw blinking cursor From ee2d71370a9f52a004a874dc497b981476065349 Mon Sep 17 00:00:00 2001 From: Karol1223 <68503002+Karol1223@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:39:10 +0200 Subject: [PATCH 46/48] nuh huh (#72929) --- data/json/materials.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/json/materials.json b/data/json/materials.json index c5e9b013b70a5..9e4eea6d9676d 100644 --- a/data/json/materials.json +++ b/data/json/materials.json @@ -1178,11 +1178,11 @@ "latent_heat": 247, "conductive": true, "chip_resist": 15, - "repaired_with": "scrap", + "repaired_with": "scrap_cast_iron", "dmg_adj": [ "marked", "dented", "smashed", "shattered" ], "bash_dmg_verb": "dented", "cut_dmg_verb": "scratched", - "burn_products": [ [ "scrap", 0.5 ] ], + "burn_products": [ [ "scrap_cast_iron", 0.5 ] ], "resist": { "bash": 4, "cut": 4, "acid": 5, "heat": 3, "bullet": 2 }, "repair_difficulty": 2 }, From dc205a2506eb384717fc16f345a805404ab80483 Mon Sep 17 00:00:00 2001 From: Karol1223 <68503002+Karol1223@users.noreply.github.com> Date: Tue, 9 Apr 2024 23:41:31 +0200 Subject: [PATCH 47/48] Allow EOCs to search items by caloric content (#72886) * I am merely a conduit Renech did literally all of this Co-Authored-By: RenechCDDA <84619419+RenechCDDA@users.noreply.github.com> * documentation --------- Co-authored-by: RenechCDDA <84619419+RenechCDDA@users.noreply.github.com> --- doc/EFFECT_ON_CONDITION.md | 2 +- src/npctalk.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/EFFECT_ON_CONDITION.md b/doc/EFFECT_ON_CONDITION.md index 5a1634d242b6b..7b3d446299004 100644 --- a/doc/EFFECT_ON_CONDITION.md +++ b/doc/EFFECT_ON_CONDITION.md @@ -2044,7 +2044,7 @@ Run EOCs on items in your or NPC's inventory | Syntax | Optionality | Value | Info | | --- | --- | --- | --- | | "u_run_inv_eocs" / "npc_run_inv_eocs" | **mandatory** | string or [variable object](#variable-object) | way the item would be picked;
values can be:
`all` - all items that match the conditions are picked;
`random` - from all items that match the conditions, one picked;
`manual` - menu is open with all items that can be picked, and you can choose one;
`manual_mult` - same as `manual`, but multiple items can be picked | -| "search_data" | optional | `search_data` | sets the condition for the target item; lack of search_data means any item can be picked; conditions can be:
`id` - id of a specific item;
`category` - category of an item (case sensitive, should always be in lower case);
`flags`- flag or flags the item has
`excluded_flags`- flag or flags the item doesn't have
`material` - material of an item;
`worn_only` - if true, return only items, that are worn;
`wielded_only` - if true, return only wielded items | +| "search_data" | optional | `search_data` | sets the condition for the target item; lack of search_data means any item can be picked; conditions can be:
`id` - id of a specific item;
`category` - category of an item (case sensitive, should always be in lower case);
`flags`- flag or flags the item has
`excluded_flags`- flag or flags the item doesn't have
`material` - material of an item;
`worn_only` - if true, return only items, that are worn;
`wielded_only` - if true, return only wielded items;
`calories` - minimum amount of kcal of an item | | "title" | optional | string or [variable object](#variable-object) | name of the menu, that would be shown, if `manual` or `manual_mult` is used | | "true_eocs" / "false_eocs" | optional | string, [variable object](##variable-object), inline EoC, or range of all of them | if item was picked successfully, all EoCs from `true_eocs` are run, otherwise all EoCs from `false_eocs` are run; picked item is returned as npc; for example, `n_hp()` return hp of an item | diff --git a/src/npctalk.cpp b/src/npctalk.cpp index 91aa41e118184..d7ca41245c45b 100644 --- a/src/npctalk.cpp +++ b/src/npctalk.cpp @@ -173,6 +173,7 @@ struct item_search_data { itype_id id; item_category_id category; material_id material; + int calories = 0; std::vector flags; std::vector excluded_flags; bool worn_only; @@ -182,6 +183,9 @@ struct item_search_data { id = itype_id( jo.get_string( "id", "" ) ); category = item_category_id( jo.get_string( "category", "" ) ); material = material_id( jo.get_string( "material", "" ) ); + if( jo.has_int( "calories" ) ) { + calories = jo.get_int( "calories" ); + } for( std::string flag : jo.get_string_array( "flags" ) ) { flags.emplace_back( flag ); } @@ -202,6 +206,13 @@ struct item_search_data { if( !material.is_empty() && loc->made_of( material ) == 0 ) { return false; } + if( calories > 0 ) { + // This is very stupid but we need a dummy to calculate nutrients + npc dummy; + if( dummy.compute_effective_nutrients( *loc.get_item() ).kcal() < calories ) { + return false; + } + } for( flag_id flag : flags ) { if( !loc->has_flag( flag ) ) { return false; From 826e03df48c18d7f8b37c8bb77d5cc5f6b9186b7 Mon Sep 17 00:00:00 2001 From: DeltaPavonis <111613869+DPavonis@users.noreply.github.com> Date: Tue, 9 Apr 2024 14:46:48 -0700 Subject: [PATCH 48/48] Added function to clear inventory search cache, added an instance of cache clearing to the item transform function, praise Clang (#72916) --- src/character.cpp | 5 +++++ src/character.h | 3 +++ src/iuse_actor.cpp | 2 ++ 3 files changed, 10 insertions(+) diff --git a/src/character.cpp b/src/character.cpp index 8a8c39b848f7d..0bceeaf9ff5fb 100644 --- a/src/character.cpp +++ b/src/character.cpp @@ -9558,6 +9558,11 @@ void Character::add_to_inv_search_caches( item &it ) const } } +void Character::clear_inventory_search_cache() +{ + inv_search_caches.clear(); +} + bool Character::has_charges( const itype_id &it, int quantity, const std::function &filter ) const { diff --git a/src/character.h b/src/character.h index 47abb93e8b835..f97405d6d99d6 100644 --- a/src/character.h +++ b/src/character.h @@ -2342,6 +2342,9 @@ class Character : public Creature, public visitable */ ret_val can_drop( const item &it ) const; + // Standalone function to clear the inventory search cache + void clear_inventory_search_cache(); + void drop_invalid_inventory(); // this cache is for checking if items in the character's inventory can't actually fit into other items they are inside of void invalidate_inventory_validity_cache(); diff --git a/src/iuse_actor.cpp b/src/iuse_actor.cpp index 33b8d026596c4..7e388fedb25e5 100644 --- a/src/iuse_actor.cpp +++ b/src/iuse_actor.cpp @@ -345,6 +345,8 @@ void iuse_transform::do_transform( Character *p, item &it, const std::string &va p->on_worn_item_transform( obj_copy, *obj ); } } + + p->clear_inventory_search_cache(); } ret_val iuse_transform::can_use( const Character &p, const item &it,