Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

World damage/healing, destructible buildings, multiplier rewrite, logging improvements #157

Merged
merged 51 commits into from
Oct 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
6c6a51b
Only skip critters that are flavor-only (<= level 5)
kjack9 Sep 26, 2023
d9e37bb
Refactor to break out some logic into separate functions.
kjack9 Sep 26, 2023
327cfe3
Refactor more repeated operations into separate functions
kjack9 Sep 27, 2023
a425a83
Continued refinement of non-creature-based damage and healing
kjack9 Sep 27, 2023
5720a72
Rework damage handling, improve coverage, debug logging
kjack9 Sep 28, 2023
02ee071
World damage scaling is working, WIP
kjack9 Sep 28, 2023
9ecd9ee
- many, many logging improvements
kjack9 Sep 29, 2023
64975cd
Further work on summoned creatures, still WIP
kjack9 Sep 30, 2023
fee7e9a
WIP
kjack9 Sep 30, 2023
3d6a7f4
Rewrite multiplier calculation, reduce required processing
kjack9 Oct 3, 2023
17d003b
Optimize map updates to only occur when necessary. WIP.
kjack9 Oct 3, 2023
f10afea
Create documentation for Info classes, add player lists
kjack9 Oct 3, 2023
eeb500b
Reworking config tracking, WIP
kjack9 Oct 4, 2023
57f9425
Rewrite player tracking to remove kludges, many improvements
kjack9 Oct 5, 2023
7a9271a
Performance improvements, fix statmodifier selection, logging
kjack9 Oct 6, 2023
5eca60d
Recount players on a config reload.
kjack9 Oct 6, 2023
46737ea
Improve player enter/leave behavior.
kjack9 Oct 6, 2023
85f5811
Improve handling of empty instances, properly scale trigger creatures…
kjack9 Oct 6, 2023
ef5fa03
Check that the target for `.ab creaturestat` is in a dungeon.
kjack9 Oct 6, 2023
5d22b57
Move boss detection to separate function
kjack9 Oct 6, 2023
1ca9bee
Do not modify spells that hurt the player but are intended to - Dark …
kjack9 Oct 7, 2023
e636e36
Fix world multipliers not getting reloaded. Logging improvements.
kjack9 Oct 8, 2023
070cdcd
Additional debug for boss detection
kjack9 Oct 8, 2023
33ccc03
Fix percent-based damage auras, map multipliers honor level scaling
kjack9 Oct 9, 2023
7494c4c
World multipliers now honor stat modifiers
kjack9 Oct 9, 2023
746e1fb
Re-enable the processing of map stats when the instance is empty
kjack9 Oct 10, 2023
211b05b
Combat locking: WIP
kjack9 Oct 10, 2023
fbc8eeb
Combat locking - better implementation. WIP, needs notifications.
kjack9 Oct 10, 2023
6de3e83
Re-implement combat locking
kjack9 Oct 11, 2023
40f8f17
Complete migration from skipMe to isCreatureRelevant
kjack9 Oct 11, 2023
f7c3dce
Code and log cleanup
kjack9 Oct 11, 2023
6207c3f
Handle a combatLockMinPlayers of 0
kjack9 Oct 11, 2023
69237fe
Update bug report template to request AB-specific information
kjack9 Oct 11, 2023
ea2e0a3
Update README.md with commands, loggers, and min AC version
kjack9 Oct 11, 2023
da90034
Add logging settings to .conf.dist file. Small logging change.
kjack9 Oct 11, 2023
7c5ff94
Replace uint with uint8.
kjack9 Oct 12, 2023
11c7cff
Rename `GetCurrentTime()` and remove case ranges to make Windows happy
kjack9 Oct 12, 2023
6a3a638
Code cleanup. Replace case statements. Remove `entry`, which is unnee…
kjack9 Oct 12, 2023
610687f
(Hopefully) final code cleanup, comment refinement
kjack9 Oct 12, 2023
0df570a
Fix enemy totems not level scaling. Update logging statement.
kjack9 Oct 14, 2023
e3e3d0e
Resolve issue with heroic dungeons that don't have LFG levels defined
kjack9 Oct 14, 2023
39257dc
Fix dungeon difficulty normal, add error logging if no LFG found
kjack9 Oct 15, 2023
2a0c1b0
Fix incorrect heroic settings.
kjack9 Oct 15, 2023
47fc321
Fix syntax error.
kjack9 Oct 15, 2023
2b4e2aa
Handle cloned summons, improve creaturestat command
kjack9 Oct 16, 2023
e3a9f80
Handle shared damage auras, add never modify spells
kjack9 Oct 17, 2023
447a3d8
Move initial scaling from first OnAllCreatureUpdate to Creature_Selec…
kjack9 Oct 18, 2023
660cfbf
Tell user to move logging settings to `worldserver.conf`, since they …
kjack9 Oct 18, 2023
58ca271
Fix combat locking.
kjack9 Oct 18, 2023
f898e74
Small update to spellIdsToNeverModify
kjack9 Oct 18, 2023
3f06fda
Move warning to debug.
kjack9 Oct 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ body:
None
validations:
required: false
- type: textarea
id: abcommands
attributes:
label: AutoBalance Debug Commands
description: |
Please include text or an image of the `.ab mapstat` command. If your issue is concerning scaling of creatures, please also include the `.ab creaturestat` command while targeting the problematic creature.
placeholder: |
None
validations:
required: false
- type: textarea
id: commit
attributes:
Expand Down
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,34 @@
# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore
## AutoBalanceModule

## AutoBalance

- 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.

**NOTE:** This module requires at least [this commit](https://github.com/azerothcore/azerothcore-wotlk/commit/f127e583aae3cfa51a77d056c1892a7de07ffb52) of AzerothCore in order to work correctly. Older versions are not supported.

All settings are well-described in the configuration file.

**PLEASE** include the output from the `.ab mapstat` and `.ab creaturestat` commands (while targeting a problematic creature) when reporting issues. This will help us to quickly identify the problem and provide a solution.

## In-game Commands
| Command | Permission | Description |
| :------ | :--------- | :---------- |
| `.ab mapstat` | All Players | Displays AB-calcualted settings for the current map, including player count, difficulty, world modifiers, and others. |
| `.ab creaturestat` | All Players | Displays AB-calculated settings for the targeted dungeon creature including level scaling, difficulty, modifiers, and boss status. |
| `.ab setoffset` | Game Masters | Sets the server-wide player difficulty offset. Instances will be scaled as though they had this many more/less players than they really do. |
| `.ab getoffset` | All Players | Gets the current server-wide player difficulty offset. Instances will be scaled as though they had this many more/less players than they really do. |
| `.reload config` | Game Masters | Reloads all your configuration files, including `AutoBalance.conf`. This lets you update AutoBalance settings without restarting your worldserver. This module is designed to contiue to work as expected when this command is issued. |

## Logger Names
| Logger | Description |
| :----- | ----------- |
| `Logger.module.AutoBalance` | Main logger, verbose debug logs. Map detection, list management, creature adjustments, multiplier, modifiers. Catch-all. |
| `Logger.module.AutoBalance_CombatLocking` | Debug logs related to the combat locking/unlocking mechanism for maps. |
| `Logger.module.AutoBalance_DamageHealingCC` | Debug logs for the spell/melee/CC modifications that are made in real-time. |
| `Logger.module.AutoBalance_StatGeneration` | Detailed debug logs that show all the calculation steps in how different multipliers are derived. |

## References
- [Interactive Inflection Point Spreadsheet](https://docs.google.com/spreadsheets/d/100cmKIJIjCZ-ncWd0K9ykO8KUgwFTcwg4h2nfE_UeCc/copy)
- [InflectionPoint Curve Examples](https://i.imgur.com/x42UnUR.png)
Expand Down
27 changes: 25 additions & 2 deletions conf/AutoBalance.conf.dist
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
[worldserver]
##########################
#
# Logging
#
# Add these lines to your worldserver.conf file to enable logging for AutoBalance.
#
# 4 = Info (Default), 5 = Debug
#
##########################
# Logger.module.AutoBalance=4,Console Server
# Logger.module.AutoBalance_CombatLocking=4,Console Server
# Logger.module.AutoBalance_DamageHealingCC=4,Console Server
# Logger.module.AutoBalance_StatGeneration=4,Console Server

##########################
#
# Enable / Disable Settings
Expand Down Expand Up @@ -300,6 +314,8 @@ AutoBalance.playerCountDifficultyOffset=0
# Health | Mana | Armor | Damage
# Adjusts the StatModifier for the appropriate stat. Affected by the Global StatModifier above.
#
# NOTE: "Damage" affects both creature damage and world damage.
#
# Default: 1.0
#
# Boss.Global | Boss.Health | Boss.Mana | Boss.Armor | Boss.Damage
Expand Down Expand Up @@ -807,12 +823,19 @@ AutoBalance.LevelScaling.DynamicLevel.DistanceCheck.PerInstance="189 500"

#
# AutoBalance.LevelScaling.LevelEndGameBoost
#
# NOTICE: This setting is currently not implemented pending a rewrite.
# Enabling it here has NO effect.
#
# See: https://github.com/azerothcore/mod-autobalance/issues/156
#
# Old description:
# 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
# Default: 0 (1 = ON, 0 = OFF)
AutoBalance.LevelScaling.EndGameBoost = 0 # setting to 1 does not do anything

##########################
#
Expand Down
Loading