Autobalance updates from local

This commit is contained in:
2024-07-08 00:03:08 -04:00
commit 796078a564
22 changed files with 4725 additions and 0 deletions

8
.editorconfig Executable file
View File

@@ -0,0 +1,8 @@
[*]
charset = utf-8
indent_style = space
indent_size = 4
tab_width = 4
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 80

49
.git_commit_template.txt Executable file
View File

@@ -0,0 +1,49 @@
### TITLE
## Type(Scope/Subscope): Commit ultra short explanation
## |---- Write below the examples with a maximum of 50 characters ----|
## Example 1: fix(DB/SAI): Missing spell to NPC Hogger
## Example 2: fix(CORE/Raid): Phase 2 of Ragnaros
## Example 3: feat(CORE/Commands): New GM command to do something
### DESCRIPTION
## Explain why this change is being made, what does it fix etc...
## |---- Write below the examples with a maximum of 72 characters per lines ----|
## Example: Hogger (id: 492) was not charging player when being engaged.
## Provide links to any issue, commit, pull request or other resource
## Example 1: Closes issue #23
## Example 2: Ported from other project's commit (link)
## Example 3: References taken from wowpedia / wowhead / wowwiki / https://wowgaming.altervista.org/aowow/
## =======================================================
## EXTRA INFOS
## =======================================================
## "Type" can be:
## feat (new feature)
## fix (bug fix)
## refactor (refactoring production code)
## style (formatting, missing semi colons, etc; no code change)
## docs (changes to documentation)
## test (adding or refactoring tests; no production code change)
## chore (updating bash scripts, git files etc; no production code change)
## --------------------
## Remember to
## Capitalize the subject line
## Use the imperative mood in the subject line
## Do not end the subject line with a period
## Separate subject from body with a blank line
## Use the body to explain what and why rather than how
## Can use multiple lines with "-" for bullet points in body
## --------------------
## More info here https://www.conventionalcommits.org/en/v1.0.0-beta.2/
## =======================================================
## "Scope" can be:
## CORE (core related, c++)
## DB (database related, sql)
## =======================================================
## "Subscope" is optional and depends on the nature of the commit.
## =======================================================

105
.gitattributes vendored Executable file
View File

@@ -0,0 +1,105 @@
## AUTO-DETECT
## Handle line endings automatically for files detected as
## text and leave all files detected as binary untouched.
## This will handle all files NOT defined below.
* text=auto eol=lf
# Text
*.conf text
*.conf.dist text
*.cmake text
## Scripts
*.sh text
*.fish text
*.lua text
## SQL
*.sql text
## C++
*.c text
*.cc text
*.cxx text
*.cpp text
*.c++ text
*.hpp text
*.h text
*.h++ text
*.hh text
## For documentation
# Documents
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
## DOCUMENTATION
*.markdown text
*.md text
*.mdwn text
*.mdown text
*.mkd text
*.mkdn text
*.mdtxt text
*.mdtext text
*.txt text
AUTHORS text
CHANGELOG text
CHANGES text
CONTRIBUTING text
COPYING text
copyright text
*COPYRIGHT* text
INSTALL text
license text
LICENSE text
NEWS text
readme text
*README* text
TODO text
## GRAPHICS
*.ai binary
*.bmp binary
*.eps binary
*.gif binary
*.ico binary
*.jng binary
*.jp2 binary
*.jpg binary
*.jpeg binary
*.jpx binary
*.jxr binary
*.pdf binary
*.png binary
*.psb binary
*.psd binary
*.svg text
*.svgz binary
*.tif binary
*.tiff binary
*.wbmp binary
*.webp binary
## ARCHIVES
*.7z binary
*.gz binary
*.jar binary
*.rar binary
*.tar binary
*.zip binary
## EXECUTABLES
*.exe binary
*.pyc binary

72
.github/ISSUE_TEMPLATE/bug_report.yml vendored Executable file
View File

@@ -0,0 +1,72 @@
name: Bug report
description: Create a bug report to help us improve.
title: "Bug: "
body:
- type: textarea
id: current
attributes:
label: Current Behaviour
description: |
Description of the problem or issue here.
Include entries of affected creatures / items / quests / spells etc.
If this is a crash, post the crashlog (upload to https://gist.github.com/) and include the link here.
Never upload files! Use GIST for text and YouTube for videos!
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected Behaviour
description: |
Tell us what should happen instead.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce the problem
description: |
What does someone else need to do to encounter the same bug?
placeholder: |
1. Step 1
2. Step 2
3. Step 3
validations:
required: true
- type: textarea
id: extra
attributes:
label: Extra Notes
description: |
Do you have any extra notes that can help solve the issue that does not fit any other field?
placeholder: |
None
validations:
required: false
- type: textarea
id: commit
attributes:
label: AC rev. hash/commit
description: |
Copy the result of the `.server debug` command (if you need to run it from the client get a prat addon)
validations:
required: true
- type: input
id: os
attributes:
label: Operating system
description: |
The Operating System the Server is running on.
i.e. Windows 11 x64, Debian 10 x64, macOS 12, Ubuntu 20.04
validations:
required: true
- type: textarea
id: custom
attributes:
label: Custom changes or Modules
description: |
List which custom changes or modules you have applied, i.e. Eluna module, etc.
placeholder: |
None
validations:
required: false

33
.github/ISSUE_TEMPLATE/feature_request.yml vendored Executable file
View File

@@ -0,0 +1,33 @@
name: Feature request
description: Suggest an idea for this project
title: "Feature: "
body:
- type: markdown
attributes:
value: |
Thank you for taking your time to fill out a feature request. Remember to fill out all fields including the title above.
An issue that is not properly filled out will be closed.
- type: textarea
id: description
attributes:
label: Describe your feature request or suggestion in detail
description: |
A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
id: solution
attributes:
label: Describe a possible solution to your feature or suggestion in detail
description: |
A clear and concise description of any alternative solutions or features you've considered.
validations:
required: false
- type: textarea
id: additional
attributes:
label: Additional context
description: |
Add any other context or screenshots about the feature request here.
validations:
required: false

12
.github/workflows/core-build.yml vendored Executable file
View File

@@ -0,0 +1,12 @@
name: core-build
on:
push:
branches:
- 'master'
pull_request:
jobs:
build:
uses: azerothcore/reusable-workflows/.github/workflows/core_build_modules.yml@main
with:
module_repo: ${{ github.event.repository.name }}

51
.gitignore vendored Executable file
View File

@@ -0,0 +1,51 @@
!.gitignore
#
#Generic
#
.directory
.mailmap
*.orig
*.rej
*.*~
.hg/
*.kdev*
.DS_Store
CMakeLists.txt.user
*.bak
*.patch
*.diff
*.REMOTE.*
*.BACKUP.*
*.BASE.*
*.LOCAL.*
#
# IDE & other softwares
#
/.settings/
/.externalToolBuilders/*
# exclude in all levels
nbproject/
.sync.ffs_db
*.kate-swp
.idea
cmake-build-debug
.vscode
#
# Eclipse
#
*.pydevproject
.metadata
.gradle
tmp/
*.tmp
*.swp
*~.nib
local.properties
.settings/
.loadpath
.project
.cproject

12
README.md Executable file
View File

@@ -0,0 +1,12 @@
# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore
## AutoBalanceModule
- Latest build status with azerothcore: [![Build Status](https://github.com/azerothcore/mod-autobalance/workflows/core-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/mod-autobalance)
This module is intended to scale based on number of players, instance mobs and bosses' health, mana, and damage.
All settings are well-described in the configuration file.
## References
- [Interactive Inflection Point Spreadsheet](https://docs.google.com/spreadsheets/d/100cmKIJIjCZ-ncWd0K9ykO8KUgwFTcwg4h2nfE_UeCc/copy)
- [InflectionPoint Curve Examples](https://i.imgur.com/x42UnUR.png)
- [Impact of CurveFloor and CurveCeiling on enemy multiplier](https://i.imgur.com/I8S4cwJ.png)

9
acore-module.json Executable file
View File

@@ -0,0 +1,9 @@
{
"name": "mod-autobalance",
"version": "2.2.0",
"compatibility" : [
{ "version": "1.0.0", "branch": "none" },
{ "version": "^2.0.0", "branch": "2.0" },
{ "version": "^3.0.0", "branch": "master" }
]
}

922
conf/AutoBalance.conf.dist Executable file
View File

@@ -0,0 +1,922 @@
[worldserver]
##########################
#
# Enable Settings
#
##########################
#
# AutoBalance.Enable
# Enable/Disable all features globally. If this setting is off, all settings after this one do not take effect.
# Default: 1 (1 = ON, 0 = OFF)
AutoBalance.Enable.Global=1
#
# AutoBalance.Enabled.*
# Enable/Disable all features for each instance size and difficulty.
# If an instance size is set to 0 here, none of the other settings for that instance size will take effect.
# Default: 1 (1 = ON, 0 = OFF)
#
AutoBalance.Enable.5M=1
AutoBalance.Enable.10M=0
AutoBalance.Enable.15M=0
AutoBalance.Enable.20M=0
AutoBalance.Enable.25M=0
AutoBalance.Enable.40M=0
AutoBalance.Enable.OtherNormal=1
AutoBalance.Enable.5MHeroic=1
AutoBalance.Enable.10MHeroic=0
AutoBalance.Enable.25MHeroic=0
AutoBalance.Enable.OtherHeroic=0
##########################
#
# Stat Scaling - Inflection Point
#
##########################
# AutoBalance.InflectionPoint* series
# InflectionPoint
# Changes the inflection point of the Hyperbolic Tangent function that determines the enemy multiplier for a given player count.
# This adjusts the shape of the overall curve. A lower value means that difficulty will increase faster as you add players.
#
# This image provies a visual of several InflectionPoint settings and its affect on the enemy stat multipliers.
# https://i.imgur.com/x42UnUR.png
#
# Example: If InflectionPointRaid is 0.5, an enemy in a 40-player instance will have half its life with 20 players in the instance
# If InflectionPointRaid is 0.8, an enemy in a 40-player instance will have half its life with 12 players in the instance
#
# Default: 0.5
#
# CurveFloor
# When the curve to determine the enemy multiplier is calculated, start the curve at this value.
#
# This allows you to make enemies have higher stats for lower player counts without adversely affecting the stats of
# higher player counts. Applied before `AutoBalance.StatModifier*` values.
#
# Value may be negative if needed to achieve your desired curve.
#
# To understand how CurveFloor and CurveCeiling affect the multiplier, see this image:
# https://i.imgur.com/I8S4cwJ.png
#
# Default: 0.0
#
# CurveCeiling
# When the curve to determine the enemy multiplier is calculated, end the curve at this value.
#
# This allows you to make enemies have lower stats for higher player counts without adversely affecting the stats of
# lower player counts. Applied before `AutoBalance.StatModifier*` values.
#
# To understand how CurveFloor and CurveCeiling affect the multiplier, see this image:
# https://i.imgur.com/I8S4cwJ.png
#
# May be set to higher than 1.0 to increase difficulty of the instance over the stock values:
# https://i.imgur.com/DBPxT8E.png
#
# Default: 1.0
#
# BossModifier
# InflectionPoint is multiplied by this value for creatures considered dungeon bosses (from dungeons or raids).
# It is a multiplier, not a new Inflection Point. Values higher than 1.0 will make enemies easier at lower player
# counts while lower than 1.0 will make enemies easier at lower player counts.
#
# To better understand this effect, see the interactive spreadsheet explained below.
#
# Default: 1.0
#
#
# An interactive spreadsheet is available for you to visually see what effect your settings have on the difficulty curve.
#
# https://docs.google.com/spreadsheets/d/100cmKIJIjCZ-ncWd0K9ykO8KUgwFTcwg4h2nfE_UeCc/copy
#
# To use it, copy the sheet to your own Google Drive and edit the values on the left with the yellow background.
# The "Final Multiplier" value is the actual multiplier that will be applied to enemies in a given dungeon.
### 5-player dungeons
AutoBalance.InflectionPoint=0.55
AutoBalance.InflectionPoint.CurveFloor=0.25
AutoBalance.InflectionPoint.CurveCeiling=1.0
AutoBalance.InflectionPoint.BossModifier=1.0
### 5-player heroic dungeons
AutoBalance.InflectionPointHeroic=0.5
AutoBalance.InflectionPointHeroic.CurveFloor=0.0
AutoBalance.InflectionPointHeroic.CurveCeiling=1.0
AutoBalance.InflectionPointHeroic.BossModifier=1.0
### Default for all raids
AutoBalance.InflectionPointRaid=0.5
AutoBalance.InflectionPointRaid.CurveFloor=0.0
AutoBalance.InflectionPointRaid.CurveCeiling=1.0
AutoBalance.InflectionPointRaid.BossModifier=1.0
### Default for all heroic raids
AutoBalance.InflectionPointRaidHeroic=0.5
AutoBalance.InflectionPointRaidHeroic.CurveFloor=0.0
AutoBalance.InflectionPointRaidHeroic.CurveCeiling=1.0
AutoBalance.InflectionPointRaidHeroic.BossModifier=1.0
###
### By default, all instances use the settings configured above. To customize settings for
### a particular instance size or difficulty, set the variables below. If the variable is
### blank, the broader settings above will apply.
###
### 10-player raids
AutoBalance.InflectionPointRaid10M=
AutoBalance.InflectionPointRaid10M.CurveFloor=
AutoBalance.InflectionPointRaid10M.CurveCeiling=
AutoBalance.InflectionPointRaid10M.BossModifier=
### 10-player heroic raids
AutoBalance.InflectionPointRaid10MHeroic=
AutoBalance.InflectionPointRaid10MHeroic.CurveFloor=
AutoBalance.InflectionPointRaid10MHeroic.CurveCeiling=
AutoBalance.InflectionPointRaid10MHeroic.BossModifier=
### 15-player raids
AutoBalance.InflectionPointRaid15M=
AutoBalance.InflectionPointRaid15M.CurveFloor=
AutoBalance.InflectionPointRaid15M.CurveCeiling=
AutoBalance.InflectionPointRaid15M.BossModifier=
### 20-player raids
AutoBalance.InflectionPointRaid20M=
AutoBalance.InflectionPointRaid20M.CurveFloor=
AutoBalance.InflectionPointRaid20M.CurveCeiling=
AutoBalance.InflectionPointRaid20M.BossModifier=
### 25-player raids
AutoBalance.InflectionPointRaid25M=
AutoBalance.InflectionPointRaid25M.CurveFloor=
AutoBalance.InflectionPointRaid25M.CurveCeiling=
AutoBalance.InflectionPointRaid25M.BossModifier=
### 25-player heroic raids
AutoBalance.InflectionPointRaid25MHeroic=
AutoBalance.InflectionPointRaid25MHeroic.CurveFloor=
AutoBalance.InflectionPointRaid25MHeroic.CurveCeiling=
AutoBalance.InflectionPointRaid25MHeroic.BossModifier=
### 40-player raids
AutoBalance.InflectionPointRaid40M=
AutoBalance.InflectionPointRaid40M.CurveFloor=
AutoBalance.InflectionPointRaid40M.CurveCeiling=
AutoBalance.InflectionPointRaid40M.BossModifier=
#
# AutoBalance.InflectionPoint.PerInstance
# Sets Inflection Point settings for specific `InstanceID`s.
#
# Get a list of Instance IDs here: https://wowpedia.fandom.com/wiki/InstanceID#Classic
#
# Specifying a value of `-1` will skip overriding of that value. For instances not listed, the default inflection value for the instance's
# difficulty and size will be used. You may omit entries from the end of the string if desired. Only one set of values should be specified per InstanceID.
#
# Format: "[InstanceID] [InflectionPoint] [CurveFloor] [CurveCeiling], [InstanceID] [InflectionPoint] [CurveFloor] [CurveCeiling], ..."
#
# Example: AutoBalance.InflectionPoint.PerInstance="229 0.4 0.0 1.5, 309 -1 0.0 1.1, 48 0.3"
#
# Default: ""
#
AutoBalance.InflectionPoint.PerInstance=""
#
# AutoBalance.InflectionPoint.Boss.PerInstance
# Sets Inflection Point settings for all bosses in specific `InstanceID`s. Note that the first value is "InflectionPointMultiplier", which behaves
# identically to the BossModifier setting. The "normal" inflection point is multiplied by this value for bosses. To better understand this effect,
# see the interactive spreadsheet.
#
# Get a list of Instance IDs here: https://wowpedia.fandom.com/wiki/InstanceID#Classic
#
# For instances not listed, the default inflection value for the instance's difficulty and size will be used. Only one set of values should be specified
# per InstanceID.
#
# Format: "[InstanceID] [InflectionPointMultiplier], [InstanceID] [InflectionPointMultiplier], ..."
#
# Example: AutoBalance.InflectionPoint.Boss.PerInstance="229 1.2, 309 1.5, 48 1.25"
#
# Default: ""
#
AutoBalance.InflectionPoint.Boss.PerInstance=""
#
# AutoBalance.playerCountDifficultyOffset
# Offset of players inside an instance. Affects all instance types.
# Default: 0
AutoBalance.playerCountDifficultyOffset=0
##########################
#
# Stat Scaling - Stat Modifiers
#
##########################
# AutoBalance.StatModifier* series
# The difficulty curve (as defined by the InflectionPoint settings) determines the base multiplier. The base
# multiplier is then adjusted (multiplied) by the appropriate StatModifier setting. This allows you to control
# the balance of how scaling affects the four adjustable stats: health, mana, armor, and damage.
#
# AutoBalance.StatModifier*.<Stat> -- only affects non-boss creatures
# AutoBalance.StatModifier*.Boss.<Stat> -- only affects bosses
#
# To see this in action, change the `StatModifier` value on the spreadsheet:
# https://docs.google.com/spreadsheets/d/100cmKIJIjCZ-ncWd0K9ykO8KUgwFTcwg4h2nfE_UeCc/copy
#
# To use it, copy the sheet to your own Google Drive and edit the values on the left with the yellow background.
# The "Final Multiplier" value is the actual multiplier that will be applied to enemies in a given instance.
#
# Global
# Multiply the other four settings by this value. Allows you to increase all the stats (health, mana, armor,
# damage) with a single adjustment. Both the global value and the stat-specific value are used at the same time.
#
# Example: If "Global" is 0.5, and "Health" is 1.5, the health of the creature will be multiplied by 0.75 of
# its value (after adjusting for the number of players).
#
# Default: 1.0
#
# Health | Mana | Armor | Damage
# Adjusts the StatModifier for the appropriate stat. Affected by the Global StatModifier above.
#
# Default: 1.0
#
# Boss.Global | Boss.Health | Boss.Mana | Boss.Armor | Boss.Damage
# Sets a SEPARATE stat multiplier for bosses. Is NOT affected by the non-boss modifiers. Only applies to creatures
# considered instance bosses (from dungeons or raids).
#
# Default: If not set for a given instance size/type, defaults to the dungeon/raid default values.
#
# To better understand this effect, see the interactive spreadsheet.
#
### 5-player dungeons
AutoBalance.StatModifier.Global=1.0
AutoBalance.StatModifier.Health=1.0
AutoBalance.StatModifier.Mana=1.0
AutoBalance.StatModifier.Armor=1.0
AutoBalance.StatModifier.Damage=1.0
AutoBalance.StatModifier.Boss.Global=1.0
AutoBalance.StatModifier.Boss.Health=1.0
AutoBalance.StatModifier.Boss.Mana=1.0
AutoBalance.StatModifier.Boss.Armor=1.0
AutoBalance.StatModifier.Boss.Damage=1.0
### 5-player heroic dungeons
AutoBalance.StatModifierHeroic.Global=1.0
AutoBalance.StatModifierHeroic.Health=1.0
AutoBalance.StatModifierHeroic.Mana=1.0
AutoBalance.StatModifierHeroic.Armor=1.0
AutoBalance.StatModifierHeroic.Damage=1.0
AutoBalance.StatModifierHeroic.Boss.Global=1.0
AutoBalance.StatModifierHeroic.Boss.Health=1.0
AutoBalance.StatModifierHeroic.Boss.Mana=1.0
AutoBalance.StatModifierHeroic.Boss.Armor=1.0
AutoBalance.StatModifierHeroic.Boss.Damage=1.0
### Default for all raids
AutoBalance.StatModifierRaid.Global=1.0
AutoBalance.StatModifierRaid.Health=1.0
AutoBalance.StatModifierRaid.Mana=1.0
AutoBalance.StatModifierRaid.Armor=1.0
AutoBalance.StatModifierRaid.Damage=1.0
AutoBalance.StatModifierRaid.Boss.Global=1.0
AutoBalance.StatModifierRaid.Boss.Health=1.0
AutoBalance.StatModifierRaid.Boss.Mana=1.0
AutoBalance.StatModifierRaid.Boss.Armor=1.0
AutoBalance.StatModifierRaid.Boss.Damage=1.0
### Default for all heroic raids
AutoBalance.StatModifierRaidHeroic.Global=1.0
AutoBalance.StatModifierRaidHeroic.Health=1.0
AutoBalance.StatModifierRaidHeroic.Mana=1.0
AutoBalance.StatModifierRaidHeroic.Armor=1.0
AutoBalance.StatModifierRaidHeroic.Damage=1.0
AutoBalance.StatModifierRaidHeroic.Boss.Global=1.0
AutoBalance.StatModifierRaidHeroic.Boss.Health=1.0
AutoBalance.StatModifierRaidHeroic.Boss.Mana=1.0
AutoBalance.StatModifierRaidHeroic.Boss.Armor=1.0
AutoBalance.StatModifierRaidHeroic.Boss.Damage=1.0
###
### By default, all instances use the settings configured above. To customize settings for
### a particular instance size or difficulty, set the variables below. If the variable is
### blank, the broader settings above will apply.
###
### 10-player raids
AutoBalance.StatModifierRaid10M.Global=
AutoBalance.StatModifierRaid10M.Health=
AutoBalance.StatModifierRaid10M.Mana=
AutoBalance.StatModifierRaid10M.Armor=
AutoBalance.StatModifierRaid10M.Damage=
AutoBalance.StatModifierRaid10M.Boss.Global=
AutoBalance.StatModifierRaid10M.Boss.Health=
AutoBalance.StatModifierRaid10M.Boss.Mana=
AutoBalance.StatModifierRaid10M.Boss.Armor=
AutoBalance.StatModifierRaid10M.Boss.Damage=
### 10-player heroic raids
AutoBalance.StatModifierRaid10MHeroic.Global=
AutoBalance.StatModifierRaid10MHeroic.Health=
AutoBalance.StatModifierRaid10MHeroic.Mana=
AutoBalance.StatModifierRaid10MHeroic.Armor=
AutoBalance.StatModifierRaid10MHeroic.Damage=
AutoBalance.StatModifierRaid10MHeroic.Boss.Global=
AutoBalance.StatModifierRaid10MHeroic.Boss.Health=
AutoBalance.StatModifierRaid10MHeroic.Boss.Mana=
AutoBalance.StatModifierRaid10MHeroic.Boss.Armor=
AutoBalance.StatModifierRaid10MHeroic.Boss.Damage=
### 15-player raids
AutoBalance.StatModifierRaid15M.Global=
AutoBalance.StatModifierRaid15M.Health=
AutoBalance.StatModifierRaid15M.Mana=
AutoBalance.StatModifierRaid15M.Armor=
AutoBalance.StatModifierRaid15M.Damage=
AutoBalance.StatModifierRaid15M.Boss.Global=
AutoBalance.StatModifierRaid15M.Boss.Health=
AutoBalance.StatModifierRaid15M.Boss.Mana=
AutoBalance.StatModifierRaid15M.Boss.Armor=
AutoBalance.StatModifierRaid15M.Boss.Damage=
### 20-player raids
AutoBalance.StatModifierRaid20M.Global=
AutoBalance.StatModifierRaid20M.Health=
AutoBalance.StatModifierRaid20M.Mana=
AutoBalance.StatModifierRaid20M.Armor=
AutoBalance.StatModifierRaid20M.Damage=
AutoBalance.StatModifierRaid20M.Boss.Global=
AutoBalance.StatModifierRaid20M.Boss.Health=
AutoBalance.StatModifierRaid20M.Boss.Mana=
AutoBalance.StatModifierRaid20M.Boss.Armor=
AutoBalance.StatModifierRaid20M.Boss.Damage=
### 25-player raids
AutoBalance.StatModifierRaid25M.Global=
AutoBalance.StatModifierRaid25M.Health=
AutoBalance.StatModifierRaid25M.Mana=
AutoBalance.StatModifierRaid25M.Armor=
AutoBalance.StatModifierRaid25M.Damage=
AutoBalance.StatModifierRaid25M.Boss.Global=
AutoBalance.StatModifierRaid25M.Boss.Health=
AutoBalance.StatModifierRaid25M.Boss.Mana=
AutoBalance.StatModifierRaid25M.Boss.Armor=
AutoBalance.StatModifierRaid25M.Boss.Damage=
### 25-player heroic raids
AutoBalance.StatModifierRaid25MHeroic.Global=
AutoBalance.StatModifierRaid25MHeroic.Health=
AutoBalance.StatModifierRaid25MHeroic.Mana=
AutoBalance.StatModifierRaid25MHeroic.Armor=
AutoBalance.StatModifierRaid25MHeroic.Damage=
AutoBalance.StatModifierRaid25MHeroic.Boss.Global=
AutoBalance.StatModifierRaid25MHeroic.Boss.Health=
AutoBalance.StatModifierRaid25MHeroic.Boss.Mana=
AutoBalance.StatModifierRaid25MHeroic.Boss.Armor=
AutoBalance.StatModifierRaid25MHeroic.Boss.Damage=
### 40-player raids
AutoBalance.StatModifierRaid40M.Global=
AutoBalance.StatModifierRaid40M.Health=
AutoBalance.StatModifierRaid40M.Mana=
AutoBalance.StatModifierRaid40M.Armor=
AutoBalance.StatModifierRaid40M.Damage=
AutoBalance.StatModifierRaid40M.Boss.Global=
AutoBalance.StatModifierRaid40M.Boss.Health=
AutoBalance.StatModifierRaid40M.Boss.Mana=
AutoBalance.StatModifierRaid40M.Boss.Armor=
AutoBalance.StatModifierRaid40M.Boss.Damage=
# AutoBalance.StatModifier*.CCDuration series
# These StatModifier values affect the duration of CC effects used against the players. CC effects are auras with one
# or more of these effects:
#
# - SPELL_AURA_MOD_CHARM
# - SPELL_AURA_MOD_CONFUSE
# - SPELL_AURA_MOD_DISARM
# - SPELL_AURA_MOD_FEAR
# - SPELL_AURA_MOD_PACIFY
# - SPELL_AURA_MOD_POSSESS
# - SPELL_AURA_MOD_SILENCE
# - SPELL_AURA_MOD_STUN
# - SPELL_AURA_MOD_SPEED_SLOW_ALL
#
# CCDuration
# Adjusts the duration of CC effects. Not affected by any global settings.
#
# After the InflectionPoint curve determines the base multiplier, it is multiplied by this value to determine the final
# CC duration multiplier.
#
# CCDuration IS affected by the InflectionPoint curve!
# CCDuration IS NOT affected by StatModifier*.Global values!
# CCDuration IS affected by AutoBalance.MinCCDurationModifier and AutoBalance.MaxCCDurationModifier!
#
# Example:
# Assume we are using the default InflectionPoint curve (0.5 with 0.0 floor and 1.0 ceiling), and there are 3 players in the instance.
# With 3 players, the base multiplier is '0.6843'. Let's say that CCDuration is set to '0.5'.
# The final CC Duration multiplier is 0.6843 * 0.5 = 0.34215
# For a CC with a programmed duration of 8 seconds, the CC will last 8 * 0.34215 = 2.7372 seconds.
#
# Default: no value
# If no value is set for a given instance type and player count, and the generic values that apply to that instance
# are also blank, CC duration will be unchanged.
#
# Boss.CCDuration
# Sets a SEPARATE CCDuration multiplier for bosses. Is NOT affected by the non-boss modifiers. Only applies to creatures
# considered instance bosses (from dungeons or raids).
#
# Default: no value
# If no value is set for a given instance type and player count, and the generic values that apply to that instance
# are also blank, CC duration will be unchanged.
#
### 5-player dungeons
AutoBalance.StatModifier.CCDuration=
AutoBalance.StatModifier.Boss.CCDuration=
### 5-player heroic dungeons
AutoBalance.StatModifierHeroic.CCDuration=
AutoBalance.StatModifierHeroic.Boss.CCDuration=
### Default for all raids
AutoBalance.StatModifierRaid.CCDuration=
AutoBalance.StatModifierRaid.Boss.CCDuration=
### Default for all heroic raids
AutoBalance.StatModifierRaidHeroic.CCDuration=
AutoBalance.StatModifierRaidHeroic.Boss.CCDuration=
###
### Configuring the CCDuration settings above this line will affect all dungeons and raids.
### To customize settings for a particular instance size, add your value to the settings below.
###
### 10-player raids
AutoBalance.StatModifierRaid10M.CCDuration=
AutoBalance.StatModifierRaid10M.Boss.CCDuration=
### 10-player heroic raids
AutoBalance.StatModifierRaid10MHeroic.CCDuration=
AutoBalance.StatModifierRaid10MHeroic.Boss.CCDuration=
### 15-player raids
AutoBalance.StatModifierRaid15M.CCDuration=
AutoBalance.StatModifierRaid15M.Boss.CCDuration=
### 20-player raids
AutoBalance.StatModifierRaid20M.CCDuration=
AutoBalance.StatModifierRaid20M.Boss.CCDuration=
### 25-player raids
AutoBalance.StatModifierRaid25M.CCDuration=
AutoBalance.StatModifierRaid25M.Boss.CCDuration=
### 25-player heroic raids
AutoBalance.StatModifierRaid25MHeroic.CCDuration=
AutoBalance.StatModifierRaid25MHeroic.Boss.CCDuration=
### 40-player raids
AutoBalance.StatModifierRaid40M.CCDuration=
AutoBalance.StatModifierRaid40M.Boss.CCDuration=
##########################
#
# Stat Scaling - Stat Modifier Overrides
#
##########################
# A note on how the stat modifier settings are prioritized. More specific values REPLACE less-specific values.
# Bosses and non-boss creatures pull from different settings but work in a similar way.
#
# Boss example: High Priest Venoxis (boss, CreatureID 14507) in the Zul'Gurub 20-player raid (InstanceID 309):
#
# StatModifierRaid.Boss.Global= 0.7
# StatModifierRaid20M.Boss.Global= 0.8
# StatModifier.Boss.PerInstance= "309 0.9"
# StatModifier.PerCreature= "14507 1.0"
#
# Settings are applied from top the bottom, with the bottom setting (1.0) being applied to all stats for the boss.
# Omitting the "PerCreature" setting would cause the per-instance setting for Zul'Gurub bosses (0.9) to be applied instead, and so on.
#
# Non-boss example: Molten Giant (non-boss, CreatureID 11658) in the Molten Core 40-player raid (InstanceID 409):
#
# StatModifierRaid.Damage = 2.1
# StatModifierRaid40M.Damage = 2.2
# StatModifier.PerInstance = "409 -1 -1 -1 -1 2.3"
# StatModifier.PerCreature= "11658 -1 -1 -1 -1 2.4"
#
# Settings are applied from top the bottom, with the bottom setting (2.4) being applied to the creature's damage multiplier.
# Omitting the "PerCreature" setting would cause the per-instance setting for Molten Core non-boss damage (2.3) to be applied instead, and so on.
#
# Keep in mind that you may use "-1" for any specific override stat to allow less-specific settings to come through.
#
# In this way you can make your configs as simple or complicated as you like - if you only want to set some generic dungeon and raid modifiers, everything will
# work as expected. If you want to tune specific creatures to your liking, you can do that too.
#
#
# AutoBalance.StatModifier.PerInstance
# Allows setting per-instance stat modifier values. Specifying a value of `-1` will skip overriding of that value.
# You may omit entries from the end of the string if desired. Only one set of values should be specified per InstanceID.
#
# ONLY AFFECTS NON-BOSS CREATURES.
#
# Get a list of Instance IDs here: https://wowpedia.fandom.com/wiki/InstanceID#Classic
#
# Format: "[InstanceID] [Global] [Health] [Mana] [Armor] [Damage] [CCDuration], [InstanceID] [Global] [Health] [Mana] [Armor] [Damage] [CCDuration], ..."
#
# Example: AutoBalance.StatModifier.PerInstance="409 1.0 0.8 0.8 1.0 1.2 1.0, 568 -1 -1 -1 -1 1.35, 43 -1 1.2 1.2"
#
# Default: Empty string, which disables the feature.
AutoBalance.StatModifier.PerInstance=""
#
# AutoBalance.StatModifier.Boss.PerInstance
# Allows setting per-instance stat modifier values for bosses only. Specifying a value of `-1` will skip overriding of that value.
# You may omit entries from the end of the string if desired. Only one set of values should be specified per InstanceID.
#
# ONLY AFFECTS BOSSES.
#
# Get a list of Instance IDs here: https://wowpedia.fandom.com/wiki/InstanceID#Classic
#
# Format: "[InstanceID] [Boss.Global] [Boss.Health] [Boss.Mana] [Boss.Armor] [Boss.Damage] [Boss.CCDuration], [InstanceID] [Boss.Global] [Boss.Health] [Boss.Mana] [Boss.Armor] [Boss.Damage] [Boss.CCDuration], ..."
#
# Example: AutoBalance.StatModifier.Boss.PerInstance="409 1.0 0.8 0.8 1.0 1.2 0.8, 568 -1 -1 -1 -1 1.35, 43 -1 1.2 1.2"
#
# Default: Empty string, which disables the feature.
AutoBalance.StatModifier.Boss.PerInstance=""
#
# AutoBalance.StatModifier.Boss.PerCreature
# Allows setting per-creature stat modifier values. Specifying a value of `-1` will skip overriding of that value.
# You may omit entries from the end of the string if desired. Only one set of values should be specified per CreatureID.
#
# Format: "[CreatureID] [Global] [Health] [Mana] [Armor] [Damage] [CCDuration], [CreatureID] [Global] [Health] [Mana] [Armor] [Damage] [CCDuration], ..."
#
# Example: AutoBalance.StatModifier.Boss.PerInstance="14507 1.0 0.8 0.8 1.0 1.2 0.5, 11372 -1 -1 -1 -1 1.35, 43 -1 1.2 1.2"
#
# Default: Empty string, which disables the feature.
AutoBalance.StatModifier.PerCreature=""
#
# AutoBalance.MinHPModifier
# Minimum Modifier setting for Health Modification. An enemy's health will not be multiplied by a value smaller than this.
# Default: 0.01
AutoBalance.MinHPModifier=0.01
#
# AutoBalance.MinManaModifier
# Minimum Modifier setting for Mana Modification. An enemy's mana will not be multiplied by a value smaller than this.
# Default: 0.01
AutoBalance.MinManaModifier=0.01
#
# AutoBalance.MinDamageModifier
# Minimum Modifier setting for Damage Modification. An enemy's damage will not be multiplied by a value smaller than this.
# Default: 0.01
AutoBalance.MinDamageModifier=0.01
#
# AutoBalance.MinCCDurationModifier
# Minimum Modifier setting for Crowd Control Duration. The duration of an enemy's CC will not be multiplied by a value smaller than this.
# Default: 0.25
AutoBalance.MinCCDurationModifier=0.25
#
# AutoBalance.MaxCCDurationModifier
# Maximum Modifier setting for Crowd Control Duration. The duration of an enemy's CC will not be multiplied by a value greater than this.
# Default: 1.0
AutoBalance.MaxCCDurationModifier=1.0
##########################
#
# Misc Settings
#
##########################
#
# AutoBalance.PerDungeonPlayerCounts
# Allows setting a per-instance setting for minimum number of players to scale. For example, dungeons could remain at 5 players, but raids could be chosen to scale down to 5 players as well.
# Formatted as "[InstanceID] [playerCount], [InstanceID] [playerCount], [InstanceID] [playerCount], ..."
# Example: AutoBalance.PerDungeonPlayerCounts="33 1,34 1,36 1,43 1,47 1,48 1,70 1,90 1,109 1,129 1,189 1,209 1,349 1,389 1, 289 2, 329 2, 230 2, 429 2, 309 5, 409 5"
# For instances not listed, the instance's original player count (5, 10, 20, 25, or 40) is used as the minimum, meaning no scaling will take place.
# To disable, leave empty; all instances will then scale down to 1 player minimum. This is the default setting.
# Default: ""
#
AutoBalance.PerDungeonPlayerCounts=""
#
# AutoBalance.ForcedIDXX
# Sets MobIDs for the group they belong to.
# All 5 Man Mobs should go in .AutoBalance.5.Name
# All 10 Man Mobs should go in .AutoBalance.10.Name etc.
AutoBalance.ForcedID40="11583,16441,30057,13020,15589,14435,18192,14889,14888,14887,14890,15302,15818,15742,15741,15740,18338"
AutoBalance.ForcedID25="22997,21966,21965,21964,21806,21215,21845,19728,12397,17711,18256,18192,"
AutoBalance.ForcedID20=""
AutoBalance.ForcedID10="15689,15550,16152,17521,17225,16028,29324,31099"
AutoBalance.ForcedID5="8317,15203,15204,15205,15305,6109,26801,30508,26799,30495,26803,30497,27859,27249"
AutoBalance.ForcedID2=""
#
# AutoBalance.DisabledID
# Disable scaling on specific creatures
#
AutoBalance.DisabledID="6867"
##########################
#
# Level Scaling
#
##########################
#
# AutoBalance.LevelScaling
# Scale creatures in instances based on the highest-level player.
# 0 = Disabled
# 1 = Enabled (only in dungeons/raids)
# Default: 1
AutoBalance.LevelScaling=0
#
# AutoBalance.LevelScaling.Method
# Selects which method should be used when the level for scaled creatures.
#
# fixed:
# Creatures will be scaled to the level of the highest-level player in the group.
#
# dynamic:
# Creatures will be scaled to a level based on 1) their original assignments compared to the
# highest-level creature in the instance and 2) the highest-level player in the dungeon. This
# means that lower-level trash will still be lower level than you, and higher-level bosses
# will still be higher-level than you.
#
# Possible values: "fixed" or "dynamic"
#
# Default: "dynamic"
AutoBalance.LevelScaling.Method="dynamic"
#
# AutoBalance.LevelScaling.SkipHigherLevels
# If an instance's average creature level is no more than (SkipHigherLevels) levels
# above the highest player level, do not scale down.
#
# To disable scaling instance levels DOWN, set this to the max level of your server (likely 80).
# To disable this feature entirely and scale all higher-level instances, set this to 0.
#
# Default: 3
#
# AutoBalance.LevelScaling.SkipLowerLevels
# If an instance's average creature level is no more than (SkipLowerLevels) levels
# below of the Highest player level, do not scale up.
#
# To disable scaling instance levels UP, set this to the max level of your server (likely 80).
# To disable this feature entirely and scale all lower-level instances, set this to 0.
#
# Default: 5
AutoBalance.LevelScaling.SkipHigherLevels = 3
AutoBalance.LevelScaling.SkipLowerLevels = 5
#
# AutoBalance.LevelScaling.DynamicLevel.Ceiling.*
# Sets the maximum number of levels creatures scaled in "dynamic" mode can be OVER your highest-level
# player. The creature in the dungeon with the highest original level will be set to the highest-level
# player's level + this value.
#
# Only takes effect if AutoBalance.LevelScaling.Method = "dynamic"
#
# Default: 1 (Dungeons), 2 (Heroic Dungeons), 3 (Raids), 3 (Heroic Raids)
#
# AutoBalance.LevelScaling.DynamicLevel.Floor.*
# Sets the maximum number of levels creatures scaled in "dynamic" mode can be UNDER your highest-level
# player. For instances with wide level spreads, ensures that the level differences stay reasonable.
#
# Only takes effect if AutoBalance.LevelScaling.Method = "dynamic"
#
# Default: 5
AutoBalance.LevelScaling.DynamicLevel.Ceiling.Dungeons = 1
AutoBalance.LevelScaling.DynamicLevel.Floor.Dungeons = 5
AutoBalance.LevelScaling.DynamicLevel.Ceiling.HeroicDungeons = 2
AutoBalance.LevelScaling.DynamicLevel.Floor.HeroicDungeons = 5
AutoBalance.LevelScaling.DynamicLevel.Ceiling.Raids = 3
AutoBalance.LevelScaling.DynamicLevel.Floor.Raids = 5
AutoBalance.LevelScaling.DynamicLevel.Ceiling.HeroicRaids = 3
AutoBalance.LevelScaling.DynamicLevel.Floor.HeroicRaids = 5
#
# AutoBalance.LevelScaling.DynamicLevel.PerInstance
# Allows setting per-instance Dynamic Level options. Specifying a value of `-1` will skip overriding of that value.
# You may omit entries from the end of the string if desired. Only one set of values should be specified per InstanceID.
# Set to a value of "" to disable the feature.
#
# Get a list of Instance IDs here: https://wowpedia.fandom.com/wiki/InstanceID#Classic
#
# Format: "[InstanceID] [SkipHigherLevels] [SkipLowerLevels] [DynamicLevelCeiling] [DynamicLevelFloor], [InstanceID] [SkipHigherLevels] [SkipLowerLevels] [DynamicLevelCeiling] [DynamicLevelFloor], ..."
#
# Example: AutoBalance.StatModifier.PerInstance="409 -1 -1 0 3, 568 3, 43 -1 8"
#
# Default: "229 -1 -1 1, 230 0 0" (Recommended adjustments)
#
# 229 - Blackrock Spire
# 230 - Blackrock Depths
AutoBalance.LevelScaling.DynamicLevel.PerInstance="229 -1 -1 1, 230 0 0"
#
# AutoBalance.LevelScaling.DynamicLevel.DistanceCheck.PerInstance
# Some dungeons contain multiple wings that exist in the same InstanceID. These wings may have different level requirements.
# You may set this setting per-instance to ensure that only creatures within [WorldUnits] of any player are included in the
# instance level calculation. This will improve the accuracy of creature levels in instances that contain multiple wings.
#
# NOTE: If two players in a party enter two different wings of the same InstanceID at the same time, creature levels will be
# calculated incorrectly until one of those players leaves the instance.
#
# Get a list of Instance IDs here: https://wowpedia.fandom.com/wiki/InstanceID#Classic
#
# Format: "[InstanceID] [WorldUnits]"
#
# Example: AutoBalance.LevelScaling.DynamicLevel.DistanceCheck.PerInstance="189 500, 624 250"
#
# Default: "189 500" (Recommended adjustments)
#
# 189 - Scarlet Monastery
AutoBalance.LevelScaling.DynamicLevel.DistanceCheck.PerInstance="189 500"
#
# AutoBalance.LevelScaling.LevelEndGameBoost
# End game creatures have an exponential (not linear) regression
# that is not correctly handled by db values. Keep this enabled
# to have stats as near possible to the official ones.
#
# Default: 1 (1 = ON, 0 = OFF)
AutoBalance.LevelScaling.EndGameBoost = 1
##########################
#
# Reward Scaling
#
##########################
#
# AutoBalance.RewardScaling.Method
# Sets which method should be used when scaling down XP and Money in an instance.
#
# fixed:
# XP and Money will be divided by the maximum number of players in the group
# regardless of scaling settings. Each player will receive the calculated value.
#
# dynamic:
# XP and Money will be scaled based on the the health and damage modifiers that are applied to
# the creature. Level scaling is taken into account when determining the reward scaling.
#
# If scaling determines that a creature should have an XP scaling multiplier of .65, the creature
# will create 65% of the XP you would normally recieve from a creature at the scaled level.
#
# If scaling determines that a creature should have a money scaling multiplier of 1.5, the creature
# will create 150% of the money it would have at its original level and scaling.
#
# The XP and money is evenly split amongst all players in the instance.
#
# Possible values: "fixed" or "dynamic"
#
# Default: "dynamic"
AutoBalance.RewardScaling.Method="dynamic"
#
# AutoBalance.RewardScaling.XP
# Scale XP based on the `AutoBalance.RewardScaling.Method` selection.
#
# Default: 1 (1 = ON, 0 = OFF)
#
# AutoBalance.RewardScaling.XP.Modifier
# Apply a flat modifier to the amount of XP that is rewarded to players.
#
# Only takes effect if `AutoBalance.RewardScaling.XP` is 1.
#
# If `RewardScaling.XP.Modifier` is set to 1.5 and RewardScaling determines that 100xp should be
# rewarded to each player, 150xp will be rewarded.
#
# Default: 1.0 (no change)
AutoBalance.RewardScaling.XP = 1
AutoBalance.RewardScaling.XP.Modifier = 1.0
#
# AutoBalance.RewardScaling.Money
# Scale Money drops based on the `AutoBalance.RewardScaling.Method` selection. If set to 0, the full
# amount will be rewarded.
#
# Default: 1 (1 = ON, 0 = OFF)
#
# AutoBalance.RewardScaling.Money.Modifier
# Apply a flat modifier to the amount of money that is rewarded to players.
#
# Only takes effect if `AutoBalance.RewardScaling.Money` is 1.
#
# If `RewardScaling.Money.Modifier` is set to 1.5 and RewardScaling determines that 1 gold should be
# rewarded to each player, 1 gold 50 silver will be rewarded.
#
# Default: 1.0 (no change)
AutoBalance.RewardScaling.Money = 1
AutoBalance.RewardScaling.Money.Modifier = 1.0
##########################
#
# Messages
#
##########################
#
# AutoBalance.PlayerChangeNotify
# Set Auto Notifications to all players in Instance that player count has changed.
# Default: 1 (1 = ON, 0 = OFF)
AutoBalance.PlayerChangeNotify=1
##########################
#
# REWARD SYSTEM (experimental)
#
##########################
#
# AutoBalance.reward.enable
# This is an experimental feature to reward a player that kill a boss when
# a pre-wotlk dungeon/raid is completed with creature levelling enabled.
# This is an idea to boost old contents even if you're end-game player.
#
# Default: 0 (1 = ON, 0 = OFF)
AutoBalance.reward.enable = 0
#
# AutoBalance.reward.raidToken
# AutoBalance.reward.dungeonToken
#
#
# Default:
# raidToken -> emblem of frost (49426)
# dungeonToken -> emblem of triumph (47241)
AutoBalance.reward.raidToken = 49426
AutoBalance.reward.dungeonToken = 47241
#
# AutoBalance.reward.MinPlayerReward
# This conf option checks how many players are in the same
# map before allowing the reward to be carried out
# if MinPlayerReward is set to two and player is soloing this conf doesn't reward then.
# this will give more a challenge to players for low level instances.
#
# Default: 1
AutoBalance.reward.MinPlayerReward = 1
##########################
#
# Announcement
#
##########################
#
# AutoBalanceAnnounce.enable
# Announce the module on login if it is enabled
# Default: 1 (1 = ON, 0 = OFF)
AutoBalanceAnnounce.enable=1
##########################
#
# Deprecated Settings
#
##########################
# The following variables are deprecated and should not be used in new deployments. Their values should be left blank.
# They will still be applied to support backwards compatability, but will be removed entirely in a future release.
# Their entire functionality (and more) has been moved to new settings referenced in this config file.
#
AutoBalance.enable=
AutoBalance.PerDungeonScaling=
AutoBalance.PerDungeonBossScaling=
AutoBalance.BossInflectionMult=
AutoBalance.rate.global=
AutoBalance.rate.health=
AutoBalance.rate.mana=
AutoBalance.rate.armor=
AutoBalance.rate.damage=
AutoBalance.DungeonScaleDownXP=
AutoBalance.DungeonScaleDownMoney=
AutoBalance.LevelHigherOffset=
AutoBalance.LevelLowerOffset=
# The following variables have been removed entirely and should not be used in a new or existing deployment.
# Their values should be left blank.
# Their entire functionality (and more) has been moved to new settings referenced in this config file.
AutoBalance.DungeonsOnly=
AutoBalance.levelUseDbValuesWhenExists=

View File

View File

@@ -0,0 +1,6 @@
DROP TABLE IF EXISTS acore_characters.group_difficulty;
CREATE TABLE acore_characters.group_difficulty
(
group_id int unsigned default '0' not null primary key,
difficulty tinyint unsigned default '0' not null
)

View File

View File

View File

BIN
icon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

0
include.sh Executable file
View File

25
pull_request_template.md Executable file
View File

@@ -0,0 +1,25 @@
<!-- First of all, THANK YOU for your contribution. -->
## Changes Proposed:
-
-
## Issues Addressed:
<!-- If your fix has a relating issue, link it below -->
- Closes
## SOURCE:
<!-- If you can, include a source that can strengthen your claim -->
## Tests Performed:
<!-- Does it build without errors? Did you test in-game? What did you test? On which OS did you test? Describe any other tests performed -->
-
-
## How to Test the Changes:
<!-- Describe in a detailed step-by-step order how to test the changes -->
1.
2.
3.

4
setup_git_commit_template.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env bash
## Set a local git commit template
git config --local commit.template ".git_commit_template.txt" ;

6
src/AB_loader.cpp Executable file
View File

@@ -0,0 +1,6 @@
void AddAutoBalanceScripts();
void Addmod_autobalanceScripts()
{
AddAutoBalanceScripts();
}

3368
src/AutoBalance.cpp Executable file

File diff suppressed because it is too large Load Diff

43
src/AutoBalance.h Executable file
View File

@@ -0,0 +1,43 @@
#ifndef MOD_AUTOBALANCE_H
#define MOD_AUTOBALANCE_H
#include "ScriptMgr.h"
#include "Creature.h"
// Manages registration, loading, and execution of scripts.
class ABScriptMgr
{
public: /* Initialization */
static ABScriptMgr* instance();
// called at the start of ModifyCreatureAttributes method
// it can be used to add some condition to skip autobalancing system for example
bool OnBeforeModifyAttributes(Creature* creature, uint32 & instancePlayerCount);
// called right after default multiplier has been set, you can use it to change
// current scaling formula based on number of players or just skip modifications
bool OnAfterDefaultMultiplier(Creature* creature, float &defaultMultiplier);
// called before change creature values, to tune some values or skip modifications
bool OnBeforeUpdateStats(Creature* creature, uint32 &scaledHealth, uint32 &scaledMana, float &damageMultiplier, uint32 &newBaseArmor);
};
#define sABScriptMgr ABScriptMgr::instance()
/*
* Dedicated hooks for Autobalance Module
* Can be used to extend/customize this system
*/
class ABModuleScript : public ModuleScript
{
protected:
ABModuleScript(const char* name);
public:
virtual bool OnBeforeModifyAttributes(Creature* /*creature*/, uint32 & /*instancePlayerCount*/) { return true; }
virtual bool OnAfterDefaultMultiplier(Creature* /*creature*/, float & /*defaultMultiplier*/) { return true; }
virtual bool OnBeforeUpdateStats(Creature* /*creature*/, uint32 &/*scaledHealth*/, uint32 &/*scaledMana*/, float &/*damageMultiplier*/, uint32 &/*newBaseArmor*/) { return true; }
};
template class ScriptRegistry<ABModuleScript>;
#endif