From 6a9ca8e6566876652b14a38714cec63d9499e659 Mon Sep 17 00:00:00 2001 From: louis1706 Date: Sat, 13 Jan 2024 02:00:01 +0100 Subject: [PATCH 1/5] Update for PostXMAS --- .editorconfig | 567 +----------------------- Exiled.API/Extensions/ItemExtensions.cs | 9 +- Exiled.API/Features/Effect.cs | 2 +- Exiled.API/Features/Generator.cs | 2 +- Exiled.API/Features/Items/Scp244.cs | 5 + Exiled.API/Features/Player.cs | 13 +- Exiled.API/Features/Ragdoll.cs | 7 +- Exiled.API/Features/Scp3114Ragdoll.cs | 78 ++++ Exiled.Installer/CommandSettings.cs | 2 +- Exiled.Installer/Program.cs | 42 +- 10 files changed, 136 insertions(+), 591 deletions(-) create mode 100644 Exiled.API/Features/Scp3114Ragdoll.cs diff --git a/.editorconfig b/.editorconfig index 73a9fdec44..3124f1d41f 100644 --- a/.editorconfig +++ b/.editorconfig @@ -15,103 +15,20 @@ ij_smart_tabs = false ij_visual_guides = none ij_wrap_on_typing = false +[*.cs] +csharp_style_var_for_built_in_types = false:error +csharp_style_var_when_type_is_apparent = false:error +csharp_style_var_elsewhere = false:error + # ReSharper properties resharper_csharp_max_line_length = 400 -[*.css] -ij_css_align_closing_brace_with_properties = false -ij_css_blank_lines_around_nested_selector = 1 -ij_css_blank_lines_between_blocks = 1 -ij_css_block_comment_add_space = false -ij_css_brace_placement = end_of_line -ij_css_enforce_quotes_on_format = false -ij_css_hex_color_long_format = false -ij_css_hex_color_lower_case = false -ij_css_hex_color_short_format = false -ij_css_hex_color_upper_case = false -ij_css_keep_blank_lines_in_code = 2 -ij_css_keep_indents_on_empty_lines = false -ij_css_keep_single_line_blocks = false -ij_css_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow -ij_css_space_after_colon = true -ij_css_space_before_opening_brace = true -ij_css_use_double_quotes = true -ij_css_value_alignment = do_not_align - -[*.less] -indent_size = 2 -ij_less_align_closing_brace_with_properties = false -ij_less_blank_lines_around_nested_selector = 1 -ij_less_blank_lines_between_blocks = 1 -ij_less_block_comment_add_space = false -ij_less_brace_placement = 0 -ij_less_enforce_quotes_on_format = false -ij_less_hex_color_long_format = false -ij_less_hex_color_lower_case = false -ij_less_hex_color_short_format = false -ij_less_hex_color_upper_case = false -ij_less_keep_blank_lines_in_code = 2 -ij_less_keep_indents_on_empty_lines = false -ij_less_keep_single_line_blocks = false -ij_less_line_comment_add_space = false -ij_less_line_comment_at_first_column = false -ij_less_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow -ij_less_space_after_colon = true -ij_less_space_before_opening_brace = true -ij_less_use_double_quotes = true -ij_less_value_alignment = 0 - [*.properties] ij_properties_align_group_field_declarations = false ij_properties_keep_blank_lines = false ij_properties_key_value_delimiter = equals ij_properties_spaces_around_key_value_delimiter = false -[*.sass] -indent_size = 2 -ij_sass_align_closing_brace_with_properties = false -ij_sass_blank_lines_around_nested_selector = 1 -ij_sass_blank_lines_between_blocks = 1 -ij_sass_brace_placement = 0 -ij_sass_enforce_quotes_on_format = false -ij_sass_hex_color_long_format = false -ij_sass_hex_color_lower_case = false -ij_sass_hex_color_short_format = false -ij_sass_hex_color_upper_case = false -ij_sass_keep_blank_lines_in_code = 2 -ij_sass_keep_indents_on_empty_lines = false -ij_sass_keep_single_line_blocks = false -ij_sass_line_comment_add_space = false -ij_sass_line_comment_at_first_column = false -ij_sass_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow -ij_sass_space_after_colon = true -ij_sass_space_before_opening_brace = true -ij_sass_use_double_quotes = true -ij_sass_value_alignment = 0 - -[*.scss] -indent_size = 2 -ij_scss_align_closing_brace_with_properties = false -ij_scss_blank_lines_around_nested_selector = 1 -ij_scss_blank_lines_between_blocks = 1 -ij_scss_block_comment_add_space = false -ij_scss_brace_placement = 0 -ij_scss_enforce_quotes_on_format = false -ij_scss_hex_color_long_format = false -ij_scss_hex_color_lower_case = false -ij_scss_hex_color_short_format = false -ij_scss_hex_color_upper_case = false -ij_scss_keep_blank_lines_in_code = 2 -ij_scss_keep_indents_on_empty_lines = false -ij_scss_keep_single_line_blocks = false -ij_scss_line_comment_add_space = false -ij_scss_line_comment_at_first_column = false -ij_scss_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow -ij_scss_space_after_colon = true -ij_scss_space_before_opening_brace = true -ij_scss_use_double_quotes = true -ij_scss_value_alignment = 0 - [*.styl] indent_size = 2 ij_stylus_align_closing_brace_with_properties = false @@ -132,17 +49,6 @@ ij_stylus_space_before_opening_brace = true ij_stylus_use_double_quotes = true ij_stylus_value_alignment = 0 -[*.vue] -indent_size = 2 -tab_width = 2 -ij_continuation_indent_size = 4 -ij_vue_indent_children_of_top_level = template -ij_vue_interpolation_new_line_after_start_delimiter = true -ij_vue_interpolation_new_line_before_end_delimiter = true -ij_vue_interpolation_wrap = off -ij_vue_keep_indents_on_empty_lines = false -ij_vue_spaces_within_interpolation_expressions = true - [.editorconfig] ij_editorconfig_align_group_field_declarations = false ij_editorconfig_space_after_colon = false @@ -170,177 +76,6 @@ ij_xml_space_around_equals_in_attribute = false ij_xml_space_inside_empty_tag = false ij_xml_text_wrap = normal -[{*.ats,*.cts,*.mts,*.ts}] -ij_continuation_indent_size = 4 -ij_typescript_align_imports = false -ij_typescript_align_multiline_array_initializer_expression = false -ij_typescript_align_multiline_binary_operation = false -ij_typescript_align_multiline_chained_methods = false -ij_typescript_align_multiline_extends_list = false -ij_typescript_align_multiline_for = true -ij_typescript_align_multiline_parameters = true -ij_typescript_align_multiline_parameters_in_calls = false -ij_typescript_align_multiline_ternary_operation = false -ij_typescript_align_object_properties = 0 -ij_typescript_align_union_types = false -ij_typescript_align_var_statements = 0 -ij_typescript_array_initializer_new_line_after_left_brace = false -ij_typescript_array_initializer_right_brace_on_new_line = false -ij_typescript_array_initializer_wrap = off -ij_typescript_assignment_wrap = off -ij_typescript_binary_operation_sign_on_next_line = false -ij_typescript_binary_operation_wrap = off -ij_typescript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** -ij_typescript_blank_lines_after_imports = 1 -ij_typescript_blank_lines_around_class = 1 -ij_typescript_blank_lines_around_field = 0 -ij_typescript_blank_lines_around_field_in_interface = 0 -ij_typescript_blank_lines_around_function = 1 -ij_typescript_blank_lines_around_method = 1 -ij_typescript_blank_lines_around_method_in_interface = 1 -ij_typescript_block_brace_style = end_of_line -ij_typescript_block_comment_add_space = false -ij_typescript_block_comment_at_first_column = true -ij_typescript_call_parameters_new_line_after_left_paren = false -ij_typescript_call_parameters_right_paren_on_new_line = false -ij_typescript_call_parameters_wrap = off -ij_typescript_catch_on_new_line = false -ij_typescript_chained_call_dot_on_new_line = true -ij_typescript_class_brace_style = end_of_line -ij_typescript_comma_on_new_line = false -ij_typescript_do_while_brace_force = never -ij_typescript_else_on_new_line = false -ij_typescript_enforce_trailing_comma = keep -ij_typescript_enum_constants_wrap = on_every_item -ij_typescript_extends_keyword_wrap = off -ij_typescript_extends_list_wrap = off -ij_typescript_field_prefix = _ -ij_typescript_file_name_style = relaxed -ij_typescript_finally_on_new_line = false -ij_typescript_for_brace_force = never -ij_typescript_for_statement_new_line_after_left_paren = false -ij_typescript_for_statement_right_paren_on_new_line = false -ij_typescript_for_statement_wrap = off -ij_typescript_force_quote_style = false -ij_typescript_force_semicolon_style = false -ij_typescript_function_expression_brace_style = end_of_line -ij_typescript_if_brace_force = never -ij_typescript_import_merge_members = global -ij_typescript_import_prefer_absolute_path = global -ij_typescript_import_sort_members = true -ij_typescript_import_sort_module_name = false -ij_typescript_import_use_node_resolution = true -ij_typescript_imports_wrap = on_every_item -ij_typescript_indent_case_from_switch = true -ij_typescript_indent_chained_calls = true -ij_typescript_indent_package_children = 0 -ij_typescript_jsdoc_include_types = false -ij_typescript_jsx_attribute_value = braces -ij_typescript_keep_blank_lines_in_code = 2 -ij_typescript_keep_first_column_comment = true -ij_typescript_keep_indents_on_empty_lines = false -ij_typescript_keep_line_breaks = true -ij_typescript_keep_simple_blocks_in_one_line = false -ij_typescript_keep_simple_methods_in_one_line = false -ij_typescript_line_comment_add_space = true -ij_typescript_line_comment_at_first_column = false -ij_typescript_method_brace_style = end_of_line -ij_typescript_method_call_chain_wrap = off -ij_typescript_method_parameters_new_line_after_left_paren = false -ij_typescript_method_parameters_right_paren_on_new_line = false -ij_typescript_method_parameters_wrap = off -ij_typescript_object_literal_wrap = on_every_item -ij_typescript_parentheses_expression_new_line_after_left_paren = false -ij_typescript_parentheses_expression_right_paren_on_new_line = false -ij_typescript_place_assignment_sign_on_next_line = false -ij_typescript_prefer_as_type_cast = false -ij_typescript_prefer_explicit_types_function_expression_returns = false -ij_typescript_prefer_explicit_types_function_returns = false -ij_typescript_prefer_explicit_types_vars_fields = false -ij_typescript_prefer_parameters_wrap = false -ij_typescript_reformat_c_style_comments = false -ij_typescript_space_after_colon = true -ij_typescript_space_after_comma = true -ij_typescript_space_after_dots_in_rest_parameter = false -ij_typescript_space_after_generator_mult = true -ij_typescript_space_after_property_colon = true -ij_typescript_space_after_quest = true -ij_typescript_space_after_type_colon = true -ij_typescript_space_after_unary_not = false -ij_typescript_space_before_async_arrow_lparen = true -ij_typescript_space_before_catch_keyword = true -ij_typescript_space_before_catch_left_brace = true -ij_typescript_space_before_catch_parentheses = true -ij_typescript_space_before_class_lbrace = true -ij_typescript_space_before_class_left_brace = true -ij_typescript_space_before_colon = true -ij_typescript_space_before_comma = false -ij_typescript_space_before_do_left_brace = true -ij_typescript_space_before_else_keyword = true -ij_typescript_space_before_else_left_brace = true -ij_typescript_space_before_finally_keyword = true -ij_typescript_space_before_finally_left_brace = true -ij_typescript_space_before_for_left_brace = true -ij_typescript_space_before_for_parentheses = true -ij_typescript_space_before_for_semicolon = false -ij_typescript_space_before_function_left_parenth = true -ij_typescript_space_before_generator_mult = false -ij_typescript_space_before_if_left_brace = true -ij_typescript_space_before_if_parentheses = true -ij_typescript_space_before_method_call_parentheses = false -ij_typescript_space_before_method_left_brace = true -ij_typescript_space_before_method_parentheses = false -ij_typescript_space_before_property_colon = false -ij_typescript_space_before_quest = true -ij_typescript_space_before_switch_left_brace = true -ij_typescript_space_before_switch_parentheses = true -ij_typescript_space_before_try_left_brace = true -ij_typescript_space_before_type_colon = false -ij_typescript_space_before_unary_not = false -ij_typescript_space_before_while_keyword = true -ij_typescript_space_before_while_left_brace = true -ij_typescript_space_before_while_parentheses = true -ij_typescript_spaces_around_additive_operators = true -ij_typescript_spaces_around_arrow_function_operator = true -ij_typescript_spaces_around_assignment_operators = true -ij_typescript_spaces_around_bitwise_operators = true -ij_typescript_spaces_around_equality_operators = true -ij_typescript_spaces_around_logical_operators = true -ij_typescript_spaces_around_multiplicative_operators = true -ij_typescript_spaces_around_relational_operators = true -ij_typescript_spaces_around_shift_operators = true -ij_typescript_spaces_around_unary_operator = false -ij_typescript_spaces_within_array_initializer_brackets = false -ij_typescript_spaces_within_brackets = false -ij_typescript_spaces_within_catch_parentheses = false -ij_typescript_spaces_within_for_parentheses = false -ij_typescript_spaces_within_if_parentheses = false -ij_typescript_spaces_within_imports = false -ij_typescript_spaces_within_interpolation_expressions = false -ij_typescript_spaces_within_method_call_parentheses = false -ij_typescript_spaces_within_method_parentheses = false -ij_typescript_spaces_within_object_literal_braces = false -ij_typescript_spaces_within_object_type_braces = true -ij_typescript_spaces_within_parentheses = false -ij_typescript_spaces_within_switch_parentheses = false -ij_typescript_spaces_within_type_assertion = false -ij_typescript_spaces_within_union_types = true -ij_typescript_spaces_within_while_parentheses = false -ij_typescript_special_else_if_treatment = true -ij_typescript_ternary_operation_signs_on_next_line = false -ij_typescript_ternary_operation_wrap = off -ij_typescript_union_types_wrap = on_every_item -ij_typescript_use_chained_calls_group_indents = false -ij_typescript_use_double_quotes = true -ij_typescript_use_explicit_js_extension = auto -ij_typescript_use_path_mapping = always -ij_typescript_use_public_modifier = false -ij_typescript_use_semicolon_after_statement = true -ij_typescript_var_declaration_wrap = normal -ij_typescript_while_brace_force = never -ij_typescript_while_on_new_line = false -ij_typescript_wrap_comments = false - [{*.bash,*.sh,*.zsh}] indent_size = 2 tab_width = 2 @@ -351,270 +86,6 @@ ij_shell_redirect_followed_by_space = false ij_shell_switch_cases_indented = false ij_shell_use_unix_line_separator = true -[{*.cjs,*.js}] -ij_continuation_indent_size = 4 -ij_javascript_align_imports = false -ij_javascript_align_multiline_array_initializer_expression = false -ij_javascript_align_multiline_binary_operation = false -ij_javascript_align_multiline_chained_methods = false -ij_javascript_align_multiline_extends_list = false -ij_javascript_align_multiline_for = true -ij_javascript_align_multiline_parameters = true -ij_javascript_align_multiline_parameters_in_calls = false -ij_javascript_align_multiline_ternary_operation = false -ij_javascript_align_object_properties = 0 -ij_javascript_align_union_types = false -ij_javascript_align_var_statements = 0 -ij_javascript_array_initializer_new_line_after_left_brace = false -ij_javascript_array_initializer_right_brace_on_new_line = false -ij_javascript_array_initializer_wrap = off -ij_javascript_assignment_wrap = off -ij_javascript_binary_operation_sign_on_next_line = false -ij_javascript_binary_operation_wrap = off -ij_javascript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** -ij_javascript_blank_lines_after_imports = 1 -ij_javascript_blank_lines_around_class = 1 -ij_javascript_blank_lines_around_field = 0 -ij_javascript_blank_lines_around_function = 1 -ij_javascript_blank_lines_around_method = 1 -ij_javascript_block_brace_style = end_of_line -ij_javascript_block_comment_add_space = false -ij_javascript_block_comment_at_first_column = true -ij_javascript_call_parameters_new_line_after_left_paren = false -ij_javascript_call_parameters_right_paren_on_new_line = false -ij_javascript_call_parameters_wrap = off -ij_javascript_catch_on_new_line = false -ij_javascript_chained_call_dot_on_new_line = true -ij_javascript_class_brace_style = end_of_line -ij_javascript_comma_on_new_line = false -ij_javascript_do_while_brace_force = never -ij_javascript_else_on_new_line = false -ij_javascript_enforce_trailing_comma = keep -ij_javascript_extends_keyword_wrap = off -ij_javascript_extends_list_wrap = off -ij_javascript_field_prefix = _ -ij_javascript_file_name_style = relaxed -ij_javascript_finally_on_new_line = false -ij_javascript_for_brace_force = never -ij_javascript_for_statement_new_line_after_left_paren = false -ij_javascript_for_statement_right_paren_on_new_line = false -ij_javascript_for_statement_wrap = off -ij_javascript_force_quote_style = false -ij_javascript_force_semicolon_style = false -ij_javascript_function_expression_brace_style = end_of_line -ij_javascript_if_brace_force = never -ij_javascript_import_merge_members = global -ij_javascript_import_prefer_absolute_path = global -ij_javascript_import_sort_members = true -ij_javascript_import_sort_module_name = false -ij_javascript_import_use_node_resolution = true -ij_javascript_imports_wrap = on_every_item -ij_javascript_indent_case_from_switch = true -ij_javascript_indent_chained_calls = true -ij_javascript_indent_package_children = 0 -ij_javascript_jsx_attribute_value = braces -ij_javascript_keep_blank_lines_in_code = 2 -ij_javascript_keep_first_column_comment = true -ij_javascript_keep_indents_on_empty_lines = false -ij_javascript_keep_line_breaks = true -ij_javascript_keep_simple_blocks_in_one_line = false -ij_javascript_keep_simple_methods_in_one_line = false -ij_javascript_line_comment_add_space = true -ij_javascript_line_comment_at_first_column = false -ij_javascript_method_brace_style = end_of_line -ij_javascript_method_call_chain_wrap = off -ij_javascript_method_parameters_new_line_after_left_paren = false -ij_javascript_method_parameters_right_paren_on_new_line = false -ij_javascript_method_parameters_wrap = off -ij_javascript_object_literal_wrap = on_every_item -ij_javascript_parentheses_expression_new_line_after_left_paren = false -ij_javascript_parentheses_expression_right_paren_on_new_line = false -ij_javascript_place_assignment_sign_on_next_line = false -ij_javascript_prefer_as_type_cast = false -ij_javascript_prefer_explicit_types_function_expression_returns = false -ij_javascript_prefer_explicit_types_function_returns = false -ij_javascript_prefer_explicit_types_vars_fields = false -ij_javascript_prefer_parameters_wrap = false -ij_javascript_reformat_c_style_comments = false -ij_javascript_space_after_colon = true -ij_javascript_space_after_comma = true -ij_javascript_space_after_dots_in_rest_parameter = false -ij_javascript_space_after_generator_mult = true -ij_javascript_space_after_property_colon = true -ij_javascript_space_after_quest = true -ij_javascript_space_after_type_colon = true -ij_javascript_space_after_unary_not = false -ij_javascript_space_before_async_arrow_lparen = true -ij_javascript_space_before_catch_keyword = true -ij_javascript_space_before_catch_left_brace = true -ij_javascript_space_before_catch_parentheses = true -ij_javascript_space_before_class_lbrace = true -ij_javascript_space_before_class_left_brace = true -ij_javascript_space_before_colon = true -ij_javascript_space_before_comma = false -ij_javascript_space_before_do_left_brace = true -ij_javascript_space_before_else_keyword = true -ij_javascript_space_before_else_left_brace = true -ij_javascript_space_before_finally_keyword = true -ij_javascript_space_before_finally_left_brace = true -ij_javascript_space_before_for_left_brace = true -ij_javascript_space_before_for_parentheses = true -ij_javascript_space_before_for_semicolon = false -ij_javascript_space_before_function_left_parenth = true -ij_javascript_space_before_generator_mult = false -ij_javascript_space_before_if_left_brace = true -ij_javascript_space_before_if_parentheses = true -ij_javascript_space_before_method_call_parentheses = false -ij_javascript_space_before_method_left_brace = true -ij_javascript_space_before_method_parentheses = false -ij_javascript_space_before_property_colon = false -ij_javascript_space_before_quest = true -ij_javascript_space_before_switch_left_brace = true -ij_javascript_space_before_switch_parentheses = true -ij_javascript_space_before_try_left_brace = true -ij_javascript_space_before_type_colon = false -ij_javascript_space_before_unary_not = false -ij_javascript_space_before_while_keyword = true -ij_javascript_space_before_while_left_brace = true -ij_javascript_space_before_while_parentheses = true -ij_javascript_spaces_around_additive_operators = true -ij_javascript_spaces_around_arrow_function_operator = true -ij_javascript_spaces_around_assignment_operators = true -ij_javascript_spaces_around_bitwise_operators = true -ij_javascript_spaces_around_equality_operators = true -ij_javascript_spaces_around_logical_operators = true -ij_javascript_spaces_around_multiplicative_operators = true -ij_javascript_spaces_around_relational_operators = true -ij_javascript_spaces_around_shift_operators = true -ij_javascript_spaces_around_unary_operator = false -ij_javascript_spaces_within_array_initializer_brackets = false -ij_javascript_spaces_within_brackets = false -ij_javascript_spaces_within_catch_parentheses = false -ij_javascript_spaces_within_for_parentheses = false -ij_javascript_spaces_within_if_parentheses = false -ij_javascript_spaces_within_imports = false -ij_javascript_spaces_within_interpolation_expressions = false -ij_javascript_spaces_within_method_call_parentheses = false -ij_javascript_spaces_within_method_parentheses = false -ij_javascript_spaces_within_object_literal_braces = false -ij_javascript_spaces_within_object_type_braces = true -ij_javascript_spaces_within_parentheses = false -ij_javascript_spaces_within_switch_parentheses = false -ij_javascript_spaces_within_type_assertion = false -ij_javascript_spaces_within_union_types = true -ij_javascript_spaces_within_while_parentheses = false -ij_javascript_special_else_if_treatment = true -ij_javascript_ternary_operation_signs_on_next_line = false -ij_javascript_ternary_operation_wrap = off -ij_javascript_union_types_wrap = on_every_item -ij_javascript_use_chained_calls_group_indents = false -ij_javascript_use_double_quotes = true -ij_javascript_use_explicit_js_extension = auto -ij_javascript_use_path_mapping = always -ij_javascript_use_public_modifier = false -ij_javascript_use_semicolon_after_statement = true -ij_javascript_var_declaration_wrap = normal -ij_javascript_while_brace_force = never -ij_javascript_while_on_new_line = false -ij_javascript_wrap_comments = false - -[{*.cjsx,*.coffee}] -indent_size = 2 -tab_width = 2 -ij_continuation_indent_size = 2 -ij_coffeescript_align_function_body = false -ij_coffeescript_align_imports = false -ij_coffeescript_align_multiline_array_initializer_expression = true -ij_coffeescript_align_multiline_parameters = true -ij_coffeescript_align_multiline_parameters_in_calls = false -ij_coffeescript_align_object_properties = 0 -ij_coffeescript_align_union_types = false -ij_coffeescript_align_var_statements = 0 -ij_coffeescript_array_initializer_new_line_after_left_brace = false -ij_coffeescript_array_initializer_right_brace_on_new_line = false -ij_coffeescript_array_initializer_wrap = normal -ij_coffeescript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** -ij_coffeescript_blank_lines_around_function = 1 -ij_coffeescript_call_parameters_new_line_after_left_paren = false -ij_coffeescript_call_parameters_right_paren_on_new_line = false -ij_coffeescript_call_parameters_wrap = normal -ij_coffeescript_chained_call_dot_on_new_line = true -ij_coffeescript_comma_on_new_line = false -ij_coffeescript_enforce_trailing_comma = keep -ij_coffeescript_field_prefix = _ -ij_coffeescript_file_name_style = relaxed -ij_coffeescript_force_quote_style = false -ij_coffeescript_force_semicolon_style = false -ij_coffeescript_function_expression_brace_style = end_of_line -ij_coffeescript_import_merge_members = global -ij_coffeescript_import_prefer_absolute_path = global -ij_coffeescript_import_sort_members = true -ij_coffeescript_import_sort_module_name = false -ij_coffeescript_import_use_node_resolution = true -ij_coffeescript_imports_wrap = on_every_item -ij_coffeescript_indent_chained_calls = true -ij_coffeescript_indent_package_children = 0 -ij_coffeescript_jsx_attribute_value = braces -ij_coffeescript_keep_blank_lines_in_code = 2 -ij_coffeescript_keep_first_column_comment = true -ij_coffeescript_keep_indents_on_empty_lines = false -ij_coffeescript_keep_line_breaks = true -ij_coffeescript_keep_simple_methods_in_one_line = false -ij_coffeescript_method_parameters_new_line_after_left_paren = false -ij_coffeescript_method_parameters_right_paren_on_new_line = false -ij_coffeescript_method_parameters_wrap = off -ij_coffeescript_object_literal_wrap = on_every_item -ij_coffeescript_prefer_as_type_cast = false -ij_coffeescript_prefer_explicit_types_function_expression_returns = false -ij_coffeescript_prefer_explicit_types_function_returns = false -ij_coffeescript_prefer_explicit_types_vars_fields = false -ij_coffeescript_reformat_c_style_comments = false -ij_coffeescript_space_after_comma = true -ij_coffeescript_space_after_dots_in_rest_parameter = false -ij_coffeescript_space_after_generator_mult = true -ij_coffeescript_space_after_property_colon = true -ij_coffeescript_space_after_type_colon = true -ij_coffeescript_space_after_unary_not = false -ij_coffeescript_space_before_async_arrow_lparen = true -ij_coffeescript_space_before_class_lbrace = true -ij_coffeescript_space_before_comma = false -ij_coffeescript_space_before_function_left_parenth = true -ij_coffeescript_space_before_generator_mult = false -ij_coffeescript_space_before_property_colon = false -ij_coffeescript_space_before_type_colon = false -ij_coffeescript_space_before_unary_not = false -ij_coffeescript_spaces_around_additive_operators = true -ij_coffeescript_spaces_around_arrow_function_operator = true -ij_coffeescript_spaces_around_assignment_operators = true -ij_coffeescript_spaces_around_bitwise_operators = true -ij_coffeescript_spaces_around_equality_operators = true -ij_coffeescript_spaces_around_logical_operators = true -ij_coffeescript_spaces_around_multiplicative_operators = true -ij_coffeescript_spaces_around_relational_operators = true -ij_coffeescript_spaces_around_shift_operators = true -ij_coffeescript_spaces_around_unary_operator = false -ij_coffeescript_spaces_within_array_initializer_braces = false -ij_coffeescript_spaces_within_array_initializer_brackets = false -ij_coffeescript_spaces_within_imports = false -ij_coffeescript_spaces_within_index_brackets = false -ij_coffeescript_spaces_within_interpolation_expressions = false -ij_coffeescript_spaces_within_method_call_parentheses = false -ij_coffeescript_spaces_within_method_parentheses = false -ij_coffeescript_spaces_within_object_braces = false -ij_coffeescript_spaces_within_object_literal_braces = false -ij_coffeescript_spaces_within_object_type_braces = true -ij_coffeescript_spaces_within_range_brackets = false -ij_coffeescript_spaces_within_type_assertion = false -ij_coffeescript_spaces_within_union_types = true -ij_coffeescript_union_types_wrap = on_every_item -ij_coffeescript_use_chained_calls_group_indents = false -ij_coffeescript_use_double_quotes = true -ij_coffeescript_use_explicit_js_extension = auto -ij_coffeescript_use_path_mapping = always -ij_coffeescript_use_public_modifier = false -ij_coffeescript_use_semicolon_after_statement = false -ij_coffeescript_var_declaration_wrap = normal - [{*.har,*.inputactions,*.jsb2,*.jsb3,*.json,.babelrc,.eslintrc,.stylelintrc,bowerrc,jest.config}] indent_size = 2 ij_json_array_wrapping = split_into_lines @@ -632,34 +103,6 @@ ij_json_spaces_within_braces = false ij_json_spaces_within_brackets = false ij_json_wrap_long_lines = false -[{*.htm,*.html,*.ng,*.sht,*.shtm,*.shtml}] -ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3 -ij_html_align_attributes = true -ij_html_align_text = false -ij_html_attribute_wrap = normal -ij_html_block_comment_add_space = false -ij_html_block_comment_at_first_column = true -ij_html_do_not_align_children_of_min_lines = 0 -ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p -ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot -ij_html_enforce_quotes = false -ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var -ij_html_keep_blank_lines = 2 -ij_html_keep_indents_on_empty_lines = false -ij_html_keep_line_breaks = true -ij_html_keep_line_breaks_in_text = true -ij_html_keep_whitespaces = false -ij_html_keep_whitespaces_inside = span, pre, textarea -ij_html_line_comment_at_first_column = true -ij_html_new_line_after_last_attribute = never -ij_html_new_line_before_first_attribute = never -ij_html_quote_style = double -ij_html_remove_new_line_before_tags = br -ij_html_space_after_tag_name = false -ij_html_space_around_equality_in_attribute = false -ij_html_space_inside_empty_tag = false -ij_html_text_wrap = normal - [{*.markdown,*.md}] ij_markdown_force_one_space_after_blockquote_symbol = true ij_markdown_force_one_space_after_header_symbol = true diff --git a/Exiled.API/Extensions/ItemExtensions.cs b/Exiled.API/Extensions/ItemExtensions.cs index 0fda1197e9..2aa7c90fc0 100644 --- a/Exiled.API/Extensions/ItemExtensions.cs +++ b/Exiled.API/Extensions/ItemExtensions.cs @@ -18,7 +18,7 @@ namespace Exiled.API.Extensions using InventorySystem; using InventorySystem.Items; using InventorySystem.Items.Firearms.Attachments; - + using InventorySystem.Items.Pickups; using Structs; /// @@ -96,6 +96,13 @@ public static ItemBase GetItemBase(this ItemType type) return itemBase; } + /// + /// Given an , returns the matching . + /// + /// The . + /// The , or if not found. + public static ItemPickupBase GetPickupBase(this ItemType type) => GetItemBase(type)?.PickupDropModel; + /// /// Given an , returns the matching , casted to . /// diff --git a/Exiled.API/Features/Effect.cs b/Exiled.API/Features/Effect.cs index dc38b21359..0f8474a24e 100644 --- a/Exiled.API/Features/Effect.cs +++ b/Exiled.API/Features/Effect.cs @@ -32,7 +32,7 @@ public Effect() /// Get all the information of the effect>. public Effect(StatusEffectBase statusEffectBase) { - if (statusEffectBase.TryGetEffectType(out EffectType effect)) + if (!statusEffectBase.TryGetEffectType(out EffectType effect)) Log.Error($"EffectType not found please report to Exiled BugReport : {statusEffectBase}"); Type = effect; Duration = statusEffectBase.Duration; diff --git a/Exiled.API/Features/Generator.cs b/Exiled.API/Features/Generator.cs index ca855c2384..b3f5bfb692 100644 --- a/Exiled.API/Features/Generator.cs +++ b/Exiled.API/Features/Generator.cs @@ -116,7 +116,7 @@ public bool IsActivating public bool IsOpen { get => Base.HasFlag(Base.Network_flags, Scp079Generator.GeneratorFlags.Open); - set => Base.ServerSetFlag(Scp079Generator.GeneratorFlags.Unlocked, value); + set => Base.ServerSetFlag(Scp079Generator.GeneratorFlags.Open, value); } /// diff --git a/Exiled.API/Features/Items/Scp244.cs b/Exiled.API/Features/Items/Scp244.cs index af79e9f337..9e88a53758 100644 --- a/Exiled.API/Features/Items/Scp244.cs +++ b/Exiled.API/Features/Items/Scp244.cs @@ -7,6 +7,7 @@ namespace Exiled.API.Features.Items { + using Exiled.API.Extensions; using Exiled.API.Features.Pickups; using Exiled.API.Interfaces; @@ -29,6 +30,10 @@ public Scp244(Scp244Item itemBase) : base(itemBase) { Base = itemBase; + Scp244DeployablePickup scp244Pickup = (Scp244DeployablePickup)Type.GetPickupBase(); + Health = scp244Pickup._health; + ActivationDot = scp244Pickup._activationDot; + MaxDiameter = scp244Pickup.MaxDiameter; } /// diff --git a/Exiled.API/Features/Player.cs b/Exiled.API/Features/Player.cs index f5eaadde53..39926ee2db 100644 --- a/Exiled.API/Features/Player.cs +++ b/Exiled.API/Features/Player.cs @@ -349,7 +349,7 @@ public string CustomInfo // NW Client check. if (value.Contains('<')) { - foreach (var token in value.Split('<')) + foreach (string token in value.Split('<')) { if (token.StartsWith("/", StringComparison.Ordinal) || token.StartsWith("b>", StringComparison.Ordinal) || @@ -736,7 +736,7 @@ public bool IsBypassModeEnabled /// This property will NOT persistently mute and unmute the player. For persistent mutes, see and . public bool IsMuted { - get => VoiceChatMutes.Mutes.Contains(UserId) && (VoiceChatMuteFlags.HasFlag(VcMuteFlags.GlobalRegular) || VoiceChatMuteFlags.HasFlag(VcMuteFlags.LocalRegular)); + get => VoiceChatMutes.QueryLocalMute(UserId, false); set { if (value) @@ -768,7 +768,7 @@ public bool IsGlobalMuted /// This property will NOT persistently mute and unmute the player. For persistent mutes, see and . public bool IsIntercomMuted { - get => VoiceChatMutes.Mutes.Contains(UserId) && (VoiceChatMuteFlags.HasFlag(VcMuteFlags.GlobalIntercom) || VoiceChatMuteFlags.HasFlag(VcMuteFlags.LocalIntercom)); + get => VoiceChatMutes.QueryLocalMute(UserId, true); set { if (value) @@ -2662,7 +2662,7 @@ public bool TryAddCandy(CandyKindID candyType) /// The new items that have to be added to the inventory. public void ResetInventory(IEnumerable newItems) { - ClearInventory(); + ClearItems(); foreach (ItemType item in newItems) AddItem(item); @@ -2674,7 +2674,7 @@ public void ResetInventory(IEnumerable newItems) /// The new items that have to be added to the inventory. public void ResetInventory(IEnumerable newItems) { - ClearInventory(); + ClearItems(); foreach (Item item in newItems) AddItem(item); @@ -2702,6 +2702,9 @@ public void ClearInventory(bool destroy = true) /// public void ClearItems(bool destroy = true) { + if (CurrentArmor is not null) + CurrentArmor.RemoveExcessOnDrop = true; + while (Items.Count > 0) RemoveItem(Items.ElementAt(0), destroy); } diff --git a/Exiled.API/Features/Ragdoll.cs b/Exiled.API/Features/Ragdoll.cs index 47c3e10dc2..9d73104fed 100644 --- a/Exiled.API/Features/Ragdoll.cs +++ b/Exiled.API/Features/Ragdoll.cs @@ -28,6 +28,8 @@ namespace Exiled.API.Features using UnityEngine; + using BaseScp3114Ragdoll = PlayerRoles.PlayableScps.Scp3114.Scp3114Ragdoll; + using Object = UnityEngine.Object; /// @@ -298,11 +300,12 @@ public static bool TryCreate(RagdollData networkInfo, out Ragdoll ragdoll) basicRagdoll.NetworkInfo = networkInfo; - ragdoll = new(basicRagdoll) + ragdoll = basicRagdoll is BaseScp3114Ragdoll scp3114Ragdoll ? new Scp3114Ragdoll(scp3114Ragdoll) : new Ragdoll(basicRagdoll) { Position = networkInfo.StartPosition, Rotation = networkInfo.StartRotation, }; + return true; } @@ -377,7 +380,7 @@ public static Ragdoll CreateAndSpawn(RoleTypeId roleType, string name, string de /// The to get. /// A or if not found. public static Ragdoll Get(BasicRagdoll ragdoll) => ragdoll == null ? null : - BasicRagdollToRagdoll.TryGetValue(ragdoll, out Ragdoll doll) ? doll : new Ragdoll(ragdoll); + BasicRagdollToRagdoll.TryGetValue(ragdoll, out Ragdoll doll) ? doll : ragdoll is BaseScp3114Ragdoll scp3114Ragdoll ? new Scp3114Ragdoll(scp3114Ragdoll) : new Ragdoll(ragdoll); /// /// Gets the of belonging to the , if any. diff --git a/Exiled.API/Features/Scp3114Ragdoll.cs b/Exiled.API/Features/Scp3114Ragdoll.cs new file mode 100644 index 0000000000..494ec7cdc7 --- /dev/null +++ b/Exiled.API/Features/Scp3114Ragdoll.cs @@ -0,0 +1,78 @@ +// ----------------------------------------------------------------------- +// +// Copyright (c) Exiled Team. All rights reserved. +// Licensed under the CC BY-SA 3.0 license. +// +// ----------------------------------------------------------------------- + +namespace Exiled.API.Features +{ + using Exiled.API.Interfaces; + using PlayerRoles; + + using BaseScp3114Ragdoll = PlayerRoles.PlayableScps.Scp3114.Scp3114Ragdoll; + + /// + /// A wrapper for SCP-3114 ragdolls. + /// + public class Scp3114Ragdoll : Ragdoll, IWrapper + { + /// + /// Initializes a new instance of the class. + /// + /// The base ragdoll to wrap. + internal Scp3114Ragdoll(BaseScp3114Ragdoll ragdoll) + : base(ragdoll) + { + Base = ragdoll; + } + + /// + public new BaseScp3114Ragdoll Base { get; } + + /// + /// Gets or sets the role that the corpse is disguised as. + /// + public RoleTypeId DisguiseRole + { + get => Base._disguiseRole; + set => Base.Network_disguiseRole = value; + } + + /// + /// Gets or sets the delay between when SCP-3114 can disguise this corpse. + /// + public float RevealDelay + { + get => Base._revealDelay; + set => Base._revealDelay = value; + } + + /// + /// Gets or sets the time required to reveal this corpse. + /// + public float RevealDuration + { + get => Base._revealDuration; + set => Base._revealDuration = value; + } + + /// + /// Gets or sets the current time of revealing this corpse. + /// + public float RevealElapsed + { + get => Base._revealElapsed; + set => Base._revealElapsed = value; + } + + /// + /// Gets or sets a value indicating whether or not this corpse will trigger animation. + /// + public bool IsPlayingAnimation + { + get => Base._playingAnimation; + set => Base._playingAnimation = value; + } + } +} \ No newline at end of file diff --git a/Exiled.Installer/CommandSettings.cs b/Exiled.Installer/CommandSettings.cs index e65fadde43..f8fae601d4 100644 --- a/Exiled.Installer/CommandSettings.cs +++ b/Exiled.Installer/CommandSettings.cs @@ -168,7 +168,7 @@ internal sealed class CommandSettings /// public bool Exit { get; set; } - public async static Task Parse(string[] args) + public static async Task Parse(string[] args) { RootCommand.Handler = CommandHandler.Create(async args => await Program.MainSafe(args).ConfigureAwait(false)); RootCommand.TreatUnmatchedTokensAsErrors = false; diff --git a/Exiled.Installer/Program.cs b/Exiled.Installer/Program.cs index 1010e2098d..506bce5c4b 100644 --- a/Exiled.Installer/Program.cs +++ b/Exiled.Installer/Program.cs @@ -55,13 +55,13 @@ internal static class Program // Force use of LF because the file uses LF private static readonly Dictionary Markup = Resources.Markup.Trim().Split('\n').ToDictionary(s => s.Split(':')[0], s => s.Split(':', 2)[1]); - private async static Task Main(string[] args) + private static async Task Main(string[] args) { Console.OutputEncoding = new UTF8Encoding(false, false); await CommandSettings.Parse(args).ConfigureAwait(false); } - internal async static Task MainSafe(CommandSettings args) + internal static async Task MainSafe(CommandSettings args) { bool error = false; try @@ -111,10 +111,8 @@ internal async static Task MainSafe(CommandSettings args) Console.WriteLine(Resources.Program_MainSafe_Asset_found_); Console.WriteLine(FormatAsset(exiledAsset)); - using HttpClient httpClient = new() - { - Timeout = TimeSpan.FromSeconds(SecondsWaitForDownload), - }; + using HttpClient httpClient = new(); + httpClient.Timeout = TimeSpan.FromSeconds(SecondsWaitForDownload); httpClient.DefaultRequestHeaders.Add("User-Agent", Header); using HttpResponseMessage downloadResult = await httpClient.GetAsync(exiledAsset.BrowserDownloadUrl).ConfigureAwait(false); @@ -144,12 +142,12 @@ internal async static Task MainSafe(CommandSettings args) Environment.Exit(error ? 1 : 0); } - private async static Task> GetReleases() + private static async Task> GetReleases() { IEnumerable releases = (await GitHubClient.Repository.Release.GetAll(RepoID).ConfigureAwait(false)) .Where( r => Version.TryParse(r.TagName, out Version version) - && (version > VersionLimit)); + && version > VersionLimit); return releases.OrderByDescending(r => r.CreatedAt.Ticks); } @@ -267,7 +265,8 @@ static PathResolution TryParse(string s) { return TryParse(pair.Value); } - else if (!fileInFolder && !isFolder && + + if (!fileInFolder && !isFolder && pair.Key.Equals(fileName, StringComparison.OrdinalIgnoreCase)) { return TryParse(pair.Value); @@ -280,20 +279,27 @@ static PathResolution TryParse(string s) private static Release FindRelease(CommandSettings args, IEnumerable releases) { Console.WriteLine(Resources.Program_TryFindRelease_Trying_to_find_release__); - Version targetVersion = args.TargetVersion is not null ? new Version(args.TargetVersion) : new Version(releases.First().TagName); + Version? targetVersion = args.TargetVersion is not null ? new Version(args.TargetVersion) : null; - foreach (Release r in releases) - { - if (targetVersion != new Version(r.TagName)) - continue; + List enumerable = releases.ToList(); - if (targetVersion.IsPreRelease && !args.PreReleases) - continue; + foreach (Release release in enumerable) + { + if (targetVersion != null) + { + if (targetVersion == new Version(release.TagName)) + return release; + } + else + { + if (release.Prerelease && !args.PreReleases) + continue; - return r; + return release; + } } - return releases.First(); + return enumerable.First(); } } } \ No newline at end of file From 5dd72bee7fb847114ca4d9e5ba9fa60d01f5daa1 Mon Sep 17 00:00:00 2001 From: louis1706 Date: Sat, 13 Jan 2024 10:51:43 +0100 Subject: [PATCH 2/5] WeaponFixFromXMAS --- .../API/Features/CustomWeapon.cs | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/Exiled.CustomItems/API/Features/CustomWeapon.cs b/Exiled.CustomItems/API/Features/CustomWeapon.cs index 7b3ce94054..b849701f35 100644 --- a/Exiled.CustomItems/API/Features/CustomWeapon.cs +++ b/Exiled.CustomItems/API/Features/CustomWeapon.cs @@ -9,6 +9,7 @@ namespace Exiled.CustomItems.API.Features { using System; + using Exiled.API.Enums; using Exiled.API.Extensions; using Exiled.API.Features; using Exiled.API.Features.DamageHandlers; @@ -18,7 +19,7 @@ namespace Exiled.CustomItems.API.Features using InventorySystem.Items.Firearms.Attachments; using InventorySystem.Items.Firearms.Attachments.Components; - + using InventorySystem.Items.Firearms.BasicMessages; using UnityEngine; using Firearm = Exiled.API.Features.Items.Firearm; @@ -75,7 +76,6 @@ public override ItemType Type firearm.AddAttachment(Attachments); firearm.Ammo = ClipSize; - firearm.MaxAmmo = ClipSize; Pickup? pickup = firearm.CreatePickup(position); @@ -103,7 +103,6 @@ public override ItemType Type firearm.AddAttachment(Attachments); byte ammo = firearm.Ammo; - firearm.MaxAmmo = ClipSize; Log.Debug($"{nameof(Name)}.{nameof(Spawn)}: Spawning weapon with {ammo} ammo."); Pickup? pickup = firearm.CreatePickup(position); pickup.Scale = Scale; @@ -129,7 +128,6 @@ public override void Give(Player player, bool displayMessage = true) firearm.AddAttachment(Attachments); firearm.Ammo = ClipSize; - firearm.MaxAmmo = ClipSize; } Log.Debug($"{nameof(Give)}: Adding {item.Serial} to tracker."); @@ -196,7 +194,7 @@ protected virtual void OnHurting(HurtingEventArgs ev) private void OnInternalReloading(ReloadingWeaponEventArgs ev) { - if (!Check(ev.Firearm)) + if (!Check(ev.Player.CurrentItem)) return; Log.Debug($"{nameof(Name)}.{nameof(OnInternalReloading)}: Reloading weapon. Calling external reload event.."); @@ -209,7 +207,39 @@ private void OnInternalReloading(ReloadingWeaponEventArgs ev) return; } - ev.Firearm.MaxAmmo = ClipSize; + Log.Debug($"{nameof(Name)}.{nameof(OnInternalReloading)}: Continuing with internal reload.."); + ev.IsAllowed = false; + + byte remainingClip = ((Firearm)ev.Player.CurrentItem).Ammo; + + if (remainingClip >= ClipSize) + return; + + Log.Debug($"{ev.Player.Nickname} ({ev.Player.UserId}) [{ev.Player.Role}] is reloading a {Name} ({Id}) [{Type} ({remainingClip}/{ClipSize})]!"); + + AmmoType ammoType = ev.Firearm.AmmoType; + + if (!ev.Player.Ammo.ContainsKey(ammoType.GetItemType())) + { + Log.Debug($"{nameof(Name)}.{nameof(OnInternalReloading)}: {ev.Player.Nickname} does not have ammo to reload this weapon."); + return; + } + + ev.Player.Connection.Send(new RequestMessage(ev.Firearm.Serial, RequestType.Reload)); + + byte amountToReload = (byte)Math.Min(ClipSize - remainingClip, ev.Player.Ammo[ammoType.GetItemType()]); + + if (amountToReload <= 0) + return; + + ev.Player.ReferenceHub.playerEffectsController.GetEffect().Intensity = 0; + + ev.Player.Ammo[ammoType.GetItemType()] -= amountToReload; + ev.Player.Inventory.SendAmmoNextFrame = true; + + ((Firearm)ev.Player.CurrentItem).Ammo = (byte)(((Firearm)ev.Player.CurrentItem).Ammo + amountToReload); + + Log.Debug($"{ev.Player.Nickname} ({ev.Player.UserId}) [{ev.Player.Role}] reloaded a {Name} ({Id}) [{Type} ({((Firearm)ev.Player.CurrentItem).Ammo}/{ClipSize})]!"); } private void OnInternalShooting(ShootingEventArgs ev) @@ -280,4 +310,4 @@ private void OnInternalHurting(HurtingEventArgs ev) OnHurting(ev); } } -} +} \ No newline at end of file From 7b4be691944e92da61a4e83b6261bdd9509a12fe Mon Sep 17 00:00:00 2001 From: louis1706 Date: Sat, 13 Jan 2024 11:01:53 +0100 Subject: [PATCH 3/5] remove var --- Exiled.API/Extensions/ReflectionExtensions.cs | 4 ++-- Exiled.API/Features/Roles/Scp079Role.cs | 2 +- Exiled.CustomItems/API/Features/CustomGrenade.cs | 4 ++-- Exiled.Events/Patches/Events/Map/ChangingIntoGrenade.cs | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Exiled.API/Extensions/ReflectionExtensions.cs b/Exiled.API/Extensions/ReflectionExtensions.cs index a0da60351d..1725f5c9e5 100644 --- a/Exiled.API/Extensions/ReflectionExtensions.cs +++ b/Exiled.API/Extensions/ReflectionExtensions.cs @@ -40,10 +40,10 @@ public static void InvokeStaticMethod(this Type type, string methodName, object[ /// The event arguments. public static void InvokeStaticEvent(this Type type, string eventName, object[] param) { - var eventDelegate = (MulticastDelegate)type.GetField(eventName, AccessTools.all).GetValue(null); + MulticastDelegate eventDelegate = (MulticastDelegate)type.GetField(eventName, AccessTools.all).GetValue(null); if (eventDelegate != null) { - foreach (var handler in eventDelegate.GetInvocationList()) + foreach (Delegate handler in eventDelegate.GetInvocationList()) { handler.Method.Invoke(handler.Target, param); } diff --git a/Exiled.API/Features/Roles/Scp079Role.cs b/Exiled.API/Features/Roles/Scp079Role.cs index f97ee97bcc..8782137a7f 100644 --- a/Exiled.API/Features/Roles/Scp079Role.cs +++ b/Exiled.API/Features/Roles/Scp079Role.cs @@ -588,7 +588,7 @@ public void ActivateTesla(bool consumeEnergy = true) Scp079Camera cam = CurrentCameraSync.CurrentCamera; RewardManager.MarkRoom(cam.Room); - if (!TeslaGateController.Singleton.TeslaGates.TryGetFirst(x => RoomIdUtils.IsTheSameRoom(cam.Position, x.transform.position), out var teslaGate)) + if (!TeslaGateController.Singleton.TeslaGates.TryGetFirst(x => RoomIdUtils.IsTheSameRoom(cam.Position, x.transform.position), out global::TeslaGate teslaGate)) return; if (consumeEnergy) diff --git a/Exiled.CustomItems/API/Features/CustomGrenade.cs b/Exiled.CustomItems/API/Features/CustomGrenade.cs index 24906352c2..bb818ad7b0 100644 --- a/Exiled.CustomItems/API/Features/CustomGrenade.cs +++ b/Exiled.CustomItems/API/Features/CustomGrenade.cs @@ -74,12 +74,12 @@ public virtual Pickup Throw(Vector3 position, float force, float weight, float f player = Server.Host; player.Role.Is(out FpcRole fpcRole); - var velocity = fpcRole.FirstPersonController.FpcModule.Motor.Velocity; + Vector3 velocity = fpcRole.FirstPersonController.FpcModule.Motor.Velocity; Throwable throwable = (Throwable)Item.Create(grenadeType, player); ThrownProjectile thrownProjectile = Object.Instantiate(throwable.Base.Projectile, position, throwable.Owner.CameraTransform.rotation); - Transform transform = thrownProjectile.transform; + PickupSyncInfo newInfo = new() { ItemId = throwable.Type, diff --git a/Exiled.Events/Patches/Events/Map/ChangingIntoGrenade.cs b/Exiled.Events/Patches/Events/Map/ChangingIntoGrenade.cs index 5b806d5b10..397fbe7dbc 100644 --- a/Exiled.Events/Patches/Events/Map/ChangingIntoGrenade.cs +++ b/Exiled.Events/Patches/Events/Map/ChangingIntoGrenade.cs @@ -118,7 +118,7 @@ private static IEnumerable Transpiler(IEnumerable Date: Sat, 13 Jan 2024 11:30:57 +0100 Subject: [PATCH 4/5] Fix RegisteringEvent --- Exiled.Events/Events.cs | 6 +++--- Exiled.Events/Handlers/Internal/Round.cs | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Exiled.Events/Events.cs b/Exiled.Events/Events.cs index af40330c7d..fee31f0c9d 100644 --- a/Exiled.Events/Events.cs +++ b/Exiled.Events/Events.cs @@ -60,7 +60,7 @@ public override void OnEnabled() SceneManager.sceneUnloaded += Handlers.Internal.SceneUnloaded.OnSceneUnloaded; MapGeneration.SeedSynchronizer.OnMapGenerated += Handlers.Internal.MapGenerated.OnMapGenerated; - UsableItemsController.ServerOnUsingCompleted += (hub, usable) => Handlers.Player.OnUsedItem(new(hub, usable)); + UsableItemsController.ServerOnUsingCompleted += Handlers.Internal.Round.OnServerOnUsingCompleted; Handlers.Server.WaitingForPlayers += Handlers.Internal.Round.OnWaitingForPlayers; Handlers.Server.RestartingRound += Handlers.Internal.Round.OnRestartingRound; Handlers.Server.RoundStarted += Handlers.Internal.Round.OnRoundStarted; @@ -91,8 +91,8 @@ public override void OnDisabled() Unpatch(); SceneManager.sceneUnloaded -= Handlers.Internal.SceneUnloaded.OnSceneUnloaded; - MapGeneration.SeedSynchronizer.OnMapGenerated -= Handlers.Map.OnGenerated; - + MapGeneration.SeedSynchronizer.OnMapGenerated -= Handlers.Internal.MapGenerated.OnMapGenerated; + UsableItemsController.ServerOnUsingCompleted -= Handlers.Internal.Round.OnServerOnUsingCompleted; Handlers.Server.WaitingForPlayers -= Handlers.Internal.Round.OnWaitingForPlayers; Handlers.Server.RestartingRound -= Handlers.Internal.Round.OnRestartingRound; Handlers.Server.RoundStarted -= Handlers.Internal.Round.OnRoundStarted; diff --git a/Exiled.Events/Handlers/Internal/Round.cs b/Exiled.Events/Handlers/Internal/Round.cs index 4861c30b64..5409fa67c9 100644 --- a/Exiled.Events/Handlers/Internal/Round.cs +++ b/Exiled.Events/Handlers/Internal/Round.cs @@ -16,7 +16,7 @@ namespace Exiled.Events.Handlers.Internal using Exiled.Loader.Features; using InventorySystem; - + using InventorySystem.Items.Usables; using PlayerRoles; using PlayerRoles.RoleAssign; @@ -25,6 +25,9 @@ namespace Exiled.Events.Handlers.Internal /// internal static class Round { + /// + public static void OnServerOnUsingCompleted(ReferenceHub hub, UsableItem usable) => Handlers.Player.OnUsedItem(new (hub, usable)); + /// public static void OnWaitingForPlayers() { From 6cd360cba48e3caf295b4569e528a0909077f4ef Mon Sep 17 00:00:00 2001 From: louis1706 Date: Sat, 13 Jan 2024 12:31:32 +0100 Subject: [PATCH 5/5] more var remove --- Exiled.API/Extensions/CommonExtensions.cs | 4 ++-- Exiled.API/Features/Doors/CheckpointDoor.cs | 6 +++--- Exiled.Events/Patches/Events/Player/TogglingRadio.cs | 2 +- Exiled.Events/Patches/Events/Scp0492/Consuming.cs | 2 +- Exiled.Events/Patches/Events/Scp106/Teleporting.cs | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Exiled.API/Extensions/CommonExtensions.cs b/Exiled.API/Extensions/CommonExtensions.cs index 41869e15d2..92d140bd17 100644 --- a/Exiled.API/Extensions/CommonExtensions.cs +++ b/Exiled.API/Extensions/CommonExtensions.cs @@ -42,7 +42,7 @@ public static class CommonExtensions /// The new modfied curve. public static AnimationCurve Multiply(this AnimationCurve curve, float amount) { - for (var i = 0; i < curve.length; i++) + for (int i = 0; i < curve.length; i++) curve.keys[i].value *= amount; return curve; @@ -56,7 +56,7 @@ public static AnimationCurve Multiply(this AnimationCurve curve, float amount) /// The new modfied curve. public static AnimationCurve Add(this AnimationCurve curve, float amount) { - for (var i = 0; i < curve.length; i++) + for (int i = 0; i < curve.length; i++) curve.keys[i].value += amount; return curve; diff --git a/Exiled.API/Features/Doors/CheckpointDoor.cs b/Exiled.API/Features/Doors/CheckpointDoor.cs index 34b5b91793..1e31e72aef 100644 --- a/Exiled.API/Features/Doors/CheckpointDoor.cs +++ b/Exiled.API/Features/Doors/CheckpointDoor.cs @@ -93,7 +93,7 @@ public float Health { float health = value / Subdoors.Count; - foreach (var door in Subdoors) + foreach (BreakableDoor door in Subdoors) { door.Health = health; } @@ -108,7 +108,7 @@ public float MaxHealth { float health = value / Subdoors.Count; - foreach (var door in Subdoors) + foreach (BreakableDoor door in Subdoors) { door.MaxHealth = health; } @@ -121,7 +121,7 @@ public DoorDamageType IgnoredDamage get => Subdoors.Aggregate(DoorDamageType.None, (current, door) => current | door.IgnoredDamage); set { - foreach (var door in Subdoors) + foreach (BreakableDoor door in Subdoors) { door.IgnoredDamage = value; } diff --git a/Exiled.Events/Patches/Events/Player/TogglingRadio.cs b/Exiled.Events/Patches/Events/Player/TogglingRadio.cs index 2729e1a1b8..a5bc2e9a72 100644 --- a/Exiled.Events/Patches/Events/Player/TogglingRadio.cs +++ b/Exiled.Events/Patches/Events/Player/TogglingRadio.cs @@ -106,7 +106,7 @@ private static IEnumerable Transpiler(IEnumerable.Pool.Return(newInstructions); diff --git a/Exiled.Events/Patches/Events/Scp0492/Consuming.cs b/Exiled.Events/Patches/Events/Scp0492/Consuming.cs index 2ce3292069..0c41900407 100644 --- a/Exiled.Events/Patches/Events/Scp0492/Consuming.cs +++ b/Exiled.Events/Patches/Events/Scp0492/Consuming.cs @@ -65,7 +65,7 @@ private static IEnumerable Transpiler(IEnumerable.Pool.Return(newInstructions); diff --git a/Exiled.Events/Patches/Events/Scp106/Teleporting.cs b/Exiled.Events/Patches/Events/Scp106/Teleporting.cs index dafd80ca0f..f5d4aa9a39 100644 --- a/Exiled.Events/Patches/Events/Scp106/Teleporting.cs +++ b/Exiled.Events/Patches/Events/Scp106/Teleporting.cs @@ -82,7 +82,7 @@ private static IEnumerable Transpiler(IEnumerable.Pool.Return(newInstructions);