diff --git a/Server/data/configs/item_configs.json b/Server/data/configs/item_configs.json
index 6d9c649e0..93762f2a4 100644
--- a/Server/data/configs/item_configs.json
+++ b/Server/data/configs/item_configs.json
@@ -130116,7 +130116,7 @@
"tradeable": "true",
"archery_ticket_price": "0",
"id": "13879",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -130138,7 +130138,7 @@
"tradeable": "true",
"archery_ticket_price": "0",
"id": "13880",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -130160,7 +130160,7 @@
"tradeable": "true",
"archery_ticket_price": "0",
"id": "13881",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -130182,7 +130182,7 @@
"tradeable": "true",
"archery_ticket_price": "0",
"id": "13882",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -130203,7 +130203,7 @@
"tradeable": "true",
"archery_ticket_price": "0",
"id": "13883",
- "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,117"
},
{
"requirements": "{1,78}",
@@ -131553,7 +131553,7 @@
"name": "Corrupt morrigan's javelin",
"archery_ticket_price": "0",
"id": "13953",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -131573,7 +131573,7 @@
"name": "C. morrigan's javelin (p)",
"archery_ticket_price": "0",
"id": "13954",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -131593,7 +131593,7 @@
"name": "C. morrigan's javelin (p+)",
"archery_ticket_price": "0",
"id": "13955",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -131613,7 +131613,7 @@
"name": "C. morrigan's javelin (p++)",
"archery_ticket_price": "0",
"id": "13956",
- "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,105,0,0,0,0,0,0,0,0,0,145"
},
{
"requirements": "{4,78}",
@@ -131632,7 +131632,7 @@
"name": "C. morrigan's throwing axe",
"archery_ticket_price": "0",
"id": "13957",
- "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,0"
+ "bonuses": "0,0,0,0,93,0,0,0,0,0,0,0,0,0,117"
},
{
"requirements": "{0,78}-{4,78}",
diff --git a/Server/detekt.yml b/Server/detekt.yml
new file mode 100644
index 000000000..8895d520d
--- /dev/null
+++ b/Server/detekt.yml
@@ -0,0 +1,713 @@
+build:
+ maxIssues: 0
+ excludeCorrectable: false
+ weights:
+ # complexity: 2
+ # LongParameterList: 1
+ # style: 1
+ # comments: 1
+
+config:
+ validation: true
+ warningsAsErrors: false
+ # when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]'
+ excludes: ''
+
+processors:
+ active: true
+ exclude:
+ - 'DetektProgressListener'
+ # - 'KtFileCountProcessor'
+ # - 'PackageCountProcessor'
+ # - 'ClassCountProcessor'
+ # - 'FunctionCountProcessor'
+ # - 'PropertyCountProcessor'
+ # - 'ProjectComplexityProcessor'
+ # - 'ProjectCognitiveComplexityProcessor'
+ # - 'ProjectLLOCProcessor'
+ # - 'ProjectCLOCProcessor'
+ # - 'ProjectLOCProcessor'
+ # - 'ProjectSLOCProcessor'
+ # - 'LicenseHeaderLoaderExtension'
+
+console-reports:
+ active: true
+ exclude:
+ - 'ProjectStatisticsReport'
+ - 'ComplexityReport'
+ - 'NotificationReport'
+ - 'FindingsReport'
+ - 'FileBasedFindingsReport'
+ # - 'LiteFindingsReport'
+
+output-reports:
+ active: true
+ exclude:
+ # - 'TxtOutputReport'
+ # - 'XmlOutputReport'
+ # - 'HtmlOutputReport'
+ # - 'MdOutputReport'
+
+comments:
+ active: true
+ AbsentOrWrongFileLicense:
+ active: false
+ licenseTemplateFile: 'license.template'
+ licenseTemplateIsRegex: false
+ CommentOverPrivateFunction:
+ active: false
+ CommentOverPrivateProperty:
+ active: false
+ DeprecatedBlockTag:
+ active: false
+ EndOfSentenceFormat:
+ active: false
+ endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)'
+ KDocReferencesNonPublicProperty:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ OutdatedDocumentation:
+ active: false
+ matchTypeParameters: true
+ matchDeclarationsOrder: true
+ allowParamOnConstructorProperties: false
+ UndocumentedPublicClass:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ searchInNestedClass: true
+ searchInInnerClass: true
+ searchInInnerObject: true
+ searchInInnerInterface: true
+ UndocumentedPublicFunction:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ UndocumentedPublicProperty:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+
+complexity:
+ active: true
+ ComplexCondition:
+ active: false
+ threshold: 4
+ ComplexInterface:
+ active: false
+ threshold: 10
+ includeStaticDeclarations: false
+ includePrivateDeclarations: false
+ ComplexMethod:
+ active: false
+ threshold: 15
+ ignoreSingleWhenExpression: false
+ ignoreSimpleWhenEntries: false
+ ignoreNestingFunctions: false
+ nestingFunctions:
+ - 'also'
+ - 'apply'
+ - 'forEach'
+ - 'isNotNull'
+ - 'ifNull'
+ - 'let'
+ - 'run'
+ - 'use'
+ - 'with'
+ LabeledExpression:
+ active: false
+ ignoredLabels: []
+ LargeClass:
+ active: false
+ threshold: 600
+ LongMethod:
+ active: false
+ threshold: 60
+ LongParameterList:
+ active: false
+ functionThreshold: 6
+ constructorThreshold: 7
+ ignoreDefaultParameters: false
+ ignoreDataClasses: true
+ ignoreAnnotatedParameter: []
+ MethodOverloading:
+ active: false
+ threshold: 6
+ NamedArguments:
+ active: false
+ threshold: 3
+ ignoreArgumentsMatchingNames: false
+ NestedBlockDepth:
+ active: false
+ threshold: 4
+ NestedScopeFunctions:
+ active: false
+ threshold: 1
+ functions:
+ - 'kotlin.apply'
+ - 'kotlin.run'
+ - 'kotlin.with'
+ - 'kotlin.let'
+ - 'kotlin.also'
+ ReplaceSafeCallChainWithRun:
+ active: false
+ StringLiteralDuplication:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ threshold: 3
+ ignoreAnnotation: true
+ excludeStringsWithLessThan5Characters: true
+ ignoreStringsRegex: '$^'
+ TooManyFunctions:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ thresholdInFiles: 11
+ thresholdInClasses: 11
+ thresholdInInterfaces: 11
+ thresholdInObjects: 11
+ thresholdInEnums: 11
+ ignoreDeprecated: false
+ ignorePrivate: false
+ ignoreOverridden: false
+
+coroutines:
+ active: true
+ GlobalCoroutineUsage:
+ active: false
+ InjectDispatcher:
+ active: true
+ dispatcherNames:
+ - 'IO'
+ - 'Default'
+ - 'Unconfined'
+ RedundantSuspendModifier:
+ active: true
+ SleepInsteadOfDelay:
+ active: true
+ SuspendFunWithCoroutineScopeReceiver:
+ active: false
+ SuspendFunWithFlowReturnType:
+ active: true
+
+empty-blocks:
+ active: false
+ EmptyCatchBlock:
+ active: true
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ EmptyClassBlock:
+ active: true
+ EmptyDefaultConstructor:
+ active: true
+ EmptyDoWhileBlock:
+ active: true
+ EmptyElseBlock:
+ active: true
+ EmptyFinallyBlock:
+ active: true
+ EmptyForBlock:
+ active: true
+ EmptyFunctionBlock:
+ active: true
+ ignoreOverridden: false
+ EmptyIfBlock:
+ active: true
+ EmptyInitBlock:
+ active: true
+ EmptyKtFile:
+ active: true
+ EmptySecondaryConstructor:
+ active: true
+ EmptyTryBlock:
+ active: true
+ EmptyWhenBlock:
+ active: true
+ EmptyWhileBlock:
+ active: true
+
+exceptions:
+ active: true
+ ExceptionRaisedInUnexpectedLocation:
+ active: true
+ methodNames:
+ - 'equals'
+ - 'finalize'
+ - 'hashCode'
+ - 'toString'
+ InstanceOfCheckForException:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ NotImplementedDeclaration:
+ active: false
+ ObjectExtendsThrowable:
+ active: false
+ PrintStackTrace:
+ active: false
+ RethrowCaughtException:
+ active: true
+ ReturnFromFinally:
+ active: true
+ ignoreLabeled: false
+ SwallowedException:
+ active: false
+ ignoredExceptionTypes:
+ - 'InterruptedException'
+ - 'MalformedURLException'
+ - 'NumberFormatException'
+ - 'ParseException'
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ ThrowingExceptionFromFinally:
+ active: true
+ ThrowingExceptionInMain:
+ active: false
+ ThrowingExceptionsWithoutMessageOrCause:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ exceptions:
+ - 'ArrayIndexOutOfBoundsException'
+ - 'Exception'
+ - 'IllegalArgumentException'
+ - 'IllegalMonitorStateException'
+ - 'IllegalStateException'
+ - 'IndexOutOfBoundsException'
+ - 'NullPointerException'
+ - 'RuntimeException'
+ - 'Throwable'
+ ThrowingNewInstanceOfSameException:
+ active: true
+ TooGenericExceptionCaught:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ exceptionNames:
+ - 'ArrayIndexOutOfBoundsException'
+ - 'Error'
+ - 'Exception'
+ - 'IllegalMonitorStateException'
+ - 'IndexOutOfBoundsException'
+ - 'NullPointerException'
+ - 'RuntimeException'
+ - 'Throwable'
+ allowedExceptionNameRegex: '_|(ignore|expected).*'
+ TooGenericExceptionThrown:
+ active: true
+ exceptionNames:
+ - 'Error'
+ - 'Exception'
+ - 'RuntimeException'
+ - 'Throwable'
+
+naming:
+ active: true
+ BooleanPropertyNaming:
+ active: false
+ allowedPattern: '^(is|has|are)'
+ ignoreOverridden: true
+ ClassNaming:
+ active: false
+ classPattern: '[A-Z][a-zA-Z0-9]*'
+ ConstructorParameterNaming:
+ active: false
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ privateParameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ ignoreOverridden: true
+ EnumNaming:
+ active: true
+ enumEntryPattern: '[A-Z][_a-zA-Z0-9]*'
+ ForbiddenClassName:
+ active: false
+ forbiddenName: []
+ FunctionMaxLength:
+ active: false
+ maximumFunctionNameLength: 30
+ FunctionMinLength:
+ active: false
+ minimumFunctionNameLength: 3
+ FunctionNaming:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ functionPattern: '[a-z][a-zA-Z0-9]*'
+ excludeClassPattern: '$^'
+ ignoreOverridden: true
+ FunctionParameterNaming:
+ active: false
+ parameterPattern: '[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ ignoreOverridden: true
+ InvalidPackageDeclaration:
+ active: false
+ rootPackage: ''
+ requireRootInDeclaration: false
+ LambdaParameterNaming:
+ active: false
+ parameterPattern: '[a-z][A-Za-z0-9]*|_'
+ MatchingDeclarationName:
+ active: false
+ mustBeFirst: true
+ MemberNameEqualsClassName:
+ active: false
+ ignoreOverridden: true
+ NoNameShadowing:
+ active: true
+ NonBooleanPropertyPrefixedWithIs:
+ active: false
+ ObjectPropertyNaming:
+ active: true
+ constantPattern: '[A-Za-z][_A-Za-z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*'
+ PackageNaming:
+ active: false
+ packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*'
+ TopLevelPropertyNaming:
+ active: false
+ constantPattern: '[A-Z][_A-Z0-9]*'
+ propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
+ privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*'
+ VariableMaxLength:
+ active: false
+ maximumVariableNameLength: 64
+ VariableMinLength:
+ active: false
+ minimumVariableNameLength: 1
+ VariableNaming:
+ active: false
+ variablePattern: '[a-z][A-Za-z0-9]*'
+ privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
+ excludeClassPattern: '$^'
+ ignoreOverridden: true
+
+performance:
+ active: true
+ ArrayPrimitive:
+ active: false
+ CouldBeSequence:
+ active: false
+ threshold: 3
+ ForEachOnRange:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ SpreadOperator:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ UnnecessaryTemporaryInstantiation:
+ active: true
+
+potential-bugs:
+ active: true
+ AvoidReferentialEquality:
+ active: true
+ forbiddenTypePatterns:
+ - 'kotlin.String'
+ CastToNullableType:
+ active: false
+ Deprecation:
+ active: false
+ DontDowncastCollectionTypes:
+ active: false
+ DoubleMutabilityForCollection:
+ active: true
+ mutableTypes:
+ - 'kotlin.collections.MutableList'
+ - 'kotlin.collections.MutableMap'
+ - 'kotlin.collections.MutableSet'
+ - 'java.util.ArrayList'
+ - 'java.util.LinkedHashSet'
+ - 'java.util.HashSet'
+ - 'java.util.LinkedHashMap'
+ - 'java.util.HashMap'
+ DuplicateCaseInWhenExpression:
+ active: true
+ ElseCaseInsteadOfExhaustiveWhen:
+ active: false
+ EqualsAlwaysReturnsTrueOrFalse:
+ active: true
+ EqualsWithHashCodeExist:
+ active: true
+ ExitOutsideMain:
+ active: false
+ ExplicitGarbageCollectionCall:
+ active: false
+ HasPlatformType:
+ active: true
+ IgnoredReturnValue:
+ active: true
+ restrictToAnnotatedMethods: true
+ returnValueAnnotations:
+ - '*.CheckResult'
+ - '*.CheckReturnValue'
+ - 'com.google.errorprone.annotations.CheckReturnValue'
+ ignoreReturnValueAnnotations:
+ - '*.CanIgnoreReturnValue'
+ ignoreFunctionCall: []
+ ImplicitDefaultLocale:
+ active: true
+ ImplicitUnitReturnType:
+ active: false
+ allowExplicitReturnType: true
+ InvalidRange:
+ active: true
+ IteratorHasNextCallsNextMethod:
+ active: true
+ IteratorNotThrowingNoSuchElementException:
+ active: true
+ LateinitUsage:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ ignoreOnClassesPattern: ''
+ MapGetWithNotNullAssertionOperator:
+ active: true
+ MissingPackageDeclaration:
+ active: false
+ excludes: ['**/*.kts']
+ MissingWhenCase:
+ active: true
+ allowElseExpression: true
+ NullCheckOnMutableProperty:
+ active: false
+ NullableToStringCall:
+ active: false
+ RedundantElseInWhen:
+ active: true
+ UnconditionalJumpStatementInLoop:
+ active: false
+ UnnecessaryNotNullOperator:
+ active: true
+ UnnecessarySafeCall:
+ active: true
+ UnreachableCatchBlock:
+ active: true
+ UnreachableCode:
+ active: true
+ UnsafeCallOnNullableType:
+ active: true
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ UnsafeCast:
+ active: true
+ UnusedUnaryOperator:
+ active: true
+ UselessPostfixExpression:
+ active: false
+ WrongEqualsTypeParameter:
+ active: true
+
+style:
+ active: true
+ CanBeNonNullable:
+ active: false
+ CascadingCallWrapping:
+ active: false
+ includeElvis: true
+ ClassOrdering:
+ active: false
+ CollapsibleIfStatements:
+ active: false
+ DataClassContainsFunctions:
+ active: false
+ conversionFunctionPrefix: 'to'
+ DataClassShouldBeImmutable:
+ active: false
+ DestructuringDeclarationWithTooManyEntries:
+ active: true
+ maxDestructuringEntries: 3
+ EqualsNullCall:
+ active: true
+ EqualsOnSignatureLine:
+ active: false
+ ExplicitCollectionElementAccessMethod:
+ active: false
+ ExplicitItLambdaParameter:
+ active: false
+ ExpressionBodySyntax:
+ active: false
+ includeLineWrapping: false
+ ForbiddenComment:
+ active: false
+ values:
+ - 'FIXME:'
+ - 'STOPSHIP:'
+ - 'TODO:'
+ allowedPatterns: ''
+ customMessage: ''
+ ForbiddenImport:
+ active: false
+ imports: []
+ forbiddenPatterns: ''
+ ForbiddenMethodCall:
+ active: false
+ methods:
+ - 'kotlin.io.print'
+ - 'kotlin.io.println'
+ ForbiddenPublicDataClass:
+ active: true
+ excludes: ['**']
+ ignorePackages:
+ - '*.internal'
+ - '*.internal.*'
+ ForbiddenSuppress:
+ active: false
+ rules: []
+ ForbiddenVoid:
+ active: true
+ ignoreOverridden: false
+ ignoreUsageInGenerics: false
+ FunctionOnlyReturningConstant:
+ active: false
+ ignoreOverridableFunction: true
+ ignoreActualFunction: true
+ excludedFunctions: ''
+ LibraryCodeMustSpecifyReturnType:
+ active: true
+ excludes: ['**']
+ LibraryEntitiesShouldNotBePublic:
+ active: true
+ excludes: ['**']
+ LoopWithTooManyJumpStatements:
+ active: false
+ maxJumpCount: 1
+ MagicNumber:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts']
+ ignoreNumbers:
+ - '-1'
+ - '0'
+ - '1'
+ - '2'
+ ignoreHashCodeFunction: true
+ ignorePropertyDeclaration: false
+ ignoreLocalVariableDeclaration: false
+ ignoreConstantDeclaration: true
+ ignoreCompanionObjectPropertyDeclaration: true
+ ignoreAnnotation: false
+ ignoreNamedArgument: true
+ ignoreEnums: false
+ ignoreRanges: false
+ ignoreExtensionFunctions: true
+ MandatoryBracesIfStatements:
+ active: false
+ MandatoryBracesLoops:
+ active: false
+ MaxChainedCallsOnSameLine:
+ active: false
+ maxChainedCalls: 5
+ MaxLineLength:
+ active: false
+ maxLineLength: 120
+ excludePackageStatements: true
+ excludeImportStatements: true
+ excludeCommentStatements: false
+ MayBeConst:
+ active: false
+ ModifierOrder:
+ active: false
+ MultilineLambdaItParameter:
+ active: false
+ NestedClassesVisibility:
+ active: true
+ NewLineAtEndOfFile:
+ active: false
+ NoTabs:
+ active: false
+ NullableBooleanCheck:
+ active: false
+ ObjectLiteralToLambda:
+ active: true
+ OptionalAbstractKeyword:
+ active: true
+ OptionalUnit:
+ active: false
+ OptionalWhenBraces:
+ active: false
+ PreferToOverPairSyntax:
+ active: false
+ ProtectedMemberInFinalClass:
+ active: true
+ RedundantExplicitType:
+ active: false
+ RedundantHigherOrderMapUsage:
+ active: true
+ RedundantVisibilityModifierRule:
+ active: false
+ ReturnCount:
+ active: false
+ max: 2
+ excludedFunctions: 'equals'
+ excludeLabeled: false
+ excludeReturnFromLambda: true
+ excludeGuardClauses: false
+ SafeCast:
+ active: true
+ SerialVersionUIDInSerializableClass:
+ active: true
+ SpacingBetweenPackageAndImports:
+ active: false
+ ThrowsCount:
+ active: false
+ max: 2
+ excludeGuardClauses: false
+ TrailingWhitespace:
+ active: false
+ UnderscoresInNumericLiterals:
+ active: false
+ acceptableLength: 4
+ allowNonStandardGrouping: false
+ UnnecessaryAbstractClass:
+ active: true
+ UnnecessaryAnnotationUseSiteTarget:
+ active: false
+ UnnecessaryApply:
+ active: true
+ UnnecessaryBackticks:
+ active: false
+ UnnecessaryFilter:
+ active: true
+ UnnecessaryInheritance:
+ active: true
+ UnnecessaryInnerClass:
+ active: false
+ UnnecessaryLet:
+ active: false
+ UnnecessaryParentheses:
+ active: false
+ UntilInsteadOfRangeTo:
+ active: false
+ UnusedImports:
+ active: false
+ UnusedPrivateClass:
+ active: false
+ UnusedPrivateMember:
+ active: false
+ allowedNames: '(_|ignored|expected|serialVersionUID)'
+ UseAnyOrNoneInsteadOfFind:
+ active: true
+ UseArrayLiteralsInAnnotations:
+ active: true
+ UseCheckNotNull:
+ active: true
+ UseCheckOrError:
+ active: false
+ UseDataClass:
+ active: false
+ allowVars: false
+ UseEmptyCounterpart:
+ active: false
+ UseIfEmptyOrIfBlank:
+ active: false
+ UseIfInsteadOfWhen:
+ active: false
+ UseIsNullOrEmpty:
+ active: true
+ UseOrEmpty:
+ active: true
+ UseRequire:
+ active: true
+ UseRequireNotNull:
+ active: true
+ UselessCallOnNotNull:
+ active: true
+ UtilityClassWithPublicConstructor:
+ active: false
+ VarCouldBeVal:
+ active: true
+ ignoreLateinitVar: false
+ WildcardImport:
+ active: false
+ excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
+ excludeImports:
+ - 'java.util.*'
diff --git a/Server/pom.xml b/Server/pom.xml
index 14376e738..fa45ae164 100644
--- a/Server/pom.xml
+++ b/Server/pom.xml
@@ -84,6 +84,12 @@
2.0.0-beta6
compile
+
+ com.google.errorprone
+ error_prone_annotations
+ 2.9.0
+ compile
+
@@ -190,6 +196,22 @@
1024m
false
+
+ -XDcompilePolicy=simple
+
+
+
+
+ com.google.errorprone
+ error_prone_core
+ 2.9.0
+
+
+
@@ -235,6 +257,48 @@
rs09.Server
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.8
+
+
+
+ detekt
+ verify
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+ io.gitlab.arturbosch.detekt
+ detekt-cli
+ 1.21.0
+
+
+
diff --git a/Server/src/main/java/core/game/container/Container.java b/Server/src/main/java/core/game/container/Container.java
index e3ac24b61..4265e0d76 100644
--- a/Server/src/main/java/core/game/container/Container.java
+++ b/Server/src/main/java/core/game/container/Container.java
@@ -12,6 +12,9 @@ import java.nio.ByteBuffer;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
+import com.google.errorprone.annotations.CheckReturnValue;
+
+
/**
* Represents a container which contains items.
*
@@ -277,6 +280,7 @@ public class Container {
* @param items The set of items.
* @return {@code True} if all items got successfully removed.
*/
+ @CheckReturnValue
public boolean remove(Item... items) {
boolean removedAll = true;
for (Item item : items) {
@@ -294,6 +298,7 @@ public class Container {
* @param item The item.
* @return {@code True} if the item got removed, {@code false} if not.
*/
+ @CheckReturnValue
public boolean remove(Item item) {
return remove(item, true);
}
@@ -305,6 +310,7 @@ public class Container {
* @param fireListener If the fire listener should be "notified".
* @return {@code True} if the item got removed,
{@code false} if not.
*/
+ @CheckReturnValue
public boolean remove(Item item, boolean fireListener) {
int slot = getSlot(item);
if (slot != -1) {
@@ -322,6 +328,7 @@ public class Container {
* @return {@code True} if the item got removed,
{@code false} if the
* item on the slot was null or the ids didn't match.
*/
+ @CheckReturnValue
public boolean remove(Item item, int slot, boolean fireListener) {
Item oldItem = items[slot];
if (oldItem == null || oldItem.getId() != item.getId()) {
diff --git a/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt b/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt
index e161c7d89..9aff415e9 100644
--- a/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt
+++ b/Server/src/main/kotlin/rs09/game/ai/pvmbots/CombatBotAssembler.kt
@@ -415,12 +415,14 @@ class CombatBotAssembler {
skillAmt++
}
when (tier){
- Tier.PURE -> bot.skills.setStaticLevel(Skills.DEFENCE,10)
- Tier.PURE -> bot.skills.setStaticLevel(Skills.STRENGTH,99)
- Tier.PURE -> bot.skills.setStaticLevel(Skills.ATTACK,90)
- Tier.PURE -> bot.skills.setStaticLevel(Skills.PRAYER,43)
- Tier.PURE -> bot.skills.setStaticLevel(Skills.RANGE,1)
- Tier.PURE -> bot.skills.setStaticLevel(Skills.MAGIC,1)
+ Tier.PURE -> {
+ bot.skills.setStaticLevel(Skills.DEFENCE,10)
+ bot.skills.setStaticLevel(Skills.STRENGTH,99)
+ bot.skills.setStaticLevel(Skills.ATTACK,90)
+ bot.skills.setStaticLevel(Skills.PRAYER,43)
+ bot.skills.setStaticLevel(Skills.RANGE,1)
+ bot.skills.setStaticLevel(Skills.MAGIC,1)
+ }
}
bot.skills.addExperience(Skills.HITPOINTS, (totalXPAdd / skillAmt) * 0.2)
@@ -528,4 +530,4 @@ class CombatBotAssembler {
val RING_ARCH = arrayOf(6733)
val RICH_MELEE_HELMS = arrayOf(2587,2595,2605,2613,2619,2627,2657,2665,2673,3486,1149,10828,4716,4724,4753)
-}
\ No newline at end of file
+}
diff --git a/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt b/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt
index 3bf7d736e..5309958a3 100644
--- a/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt
+++ b/Server/src/main/kotlin/rs09/game/content/quest/members/familycrest/AvanDialogue.kt
@@ -146,12 +146,12 @@ class AvanDialogue (player: Player? = null): DialoguePlugin(player) {
304 -> npc("Well, the last I heard of my brother Johnathon," ,
" he was studying the magical arts, " ,
"and trying to hunt some demon or other out in The Wilderness.").also{stage++}
- 304 -> npc("Unsurprisingly, I do not believe he is doing a particularly good job of things, ",
+ 305 -> npc("Unsurprisingly, I do not believe he is doing a particularly good job of things, ",
"and spends most of his time recovering from his injuries " ,
"in some tavern or other near the eastern edge of The Wilderness. " ,
"You'll probably find him still there.").also{stage++}
- 305 -> player("Thanks Avan.").also { stage = 1000 }
+ 306 -> player("Thanks Avan.").also { stage = 1000 }
400 -> player("I am still working on it.").also{stage++}
diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt
index 4f056fef8..33fecf75a 100644
--- a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt
+++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceExtinguisher.kt
@@ -35,7 +35,8 @@ class LightSourceExtinguisher : OptionHandler(){
}
fun Container.replace(item: Item, with: Item){
- remove(item)
- add(with)
+ if(remove(item)) {
+ add(with)
+ }
}
-}
\ No newline at end of file
+}
diff --git a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt
index 835cfec99..06217efe2 100644
--- a/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt
+++ b/Server/src/main/kotlin/rs09/game/node/entity/skill/crafting/lightsources/LightSourceLighter.kt
@@ -73,8 +73,9 @@ class LightSourceLighter : UseWithHandler(590,36,38){
}
fun Container.replace(item: Item, with: Item){
- remove(item)
- add(with)
+ if(remove(item)) {
+ add(with)
+ }
}
fun light(player: Player, item: Item, lightSource: LightSources): Boolean{
diff --git a/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt b/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt
index 917414af5..e846e9004 100644
--- a/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt
+++ b/Server/src/main/kotlin/rs09/game/system/command/sets/AnimationCommandSet.kt
@@ -13,7 +13,7 @@ import java.util.*
@Initializable
class AnimationCommandSet : CommandSet(Privilege.ADMIN) {
- protected var npcs: List = ArrayList()
+ private var npcs: List = ArrayList()
override fun defineCommands() {