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

fix(SoloCraft): Limit XP modification to instances only #2

Open
wants to merge 65 commits into
base: master
Choose a base branch
from

Conversation

Hotschmoe
Copy link

Changes Proposed

This PR addresses an issue in the SoloCraft module where XP modification was being applied to all players, regardless of whether they were in an instance or not. The changes include:

  1. Implemented a system to track whether players are in instances or not.
  2. Modified the XP calculation to only apply when players are in instances (dungeons or raids).
  3. Fixed build errors related to the use of ObjectGuid.

Implementation Details

  • Added a std::map<ObjectGuid, bool> to track players' instance status.
  • Implemented OnMapChanged to update players' instance status.
  • Modified OnGiveXP to check instance status before applying XP modifications.
  • Updated OnLogout to clean up instance tracking data.

How to Test

  1. Enable the SoloCraft module.
  2. Enter a dungeon or raid and kill some mobs. Verify that XP is modified as expected.
  3. Exit the instance and kill mobs in the open world. Verify that XP is not modified.
  4. Re-enter an instance and confirm that XP modification resumes.

Issues Addressed

This PR fixes the issue where XP modification was being applied globally, even outside of instances.

gtao725 and others added 30 commits April 12, 2019 17:01
`/home/travis/build/milestorme/azerothcore-wotlk/modules/mod-solocraft/src/Solocraft.cpp:63:17: fatal error: use of undeclared identifier 'ChatHandler'
                ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00SoloCraft |rmodule.");
                ^
1 error generated.`
update no need to announce number of players for solo dungeons and raids
Travis now compiles

Fixed some errors
- Before this commit: Login while being in a dungeon will not
rebuff character.
- Fixes azerothcore#9
This is a large overhaul of the Solocraft module.

Features and Admin Controls added:

-Groups now work. Difficulty is now distributed across group size
-Debuff added for groups trying to exceed the difficulty modifier
-Debuff can be enabled and disabled
-Spellpower is now scaled based on character level and modifier
-Stat modifier can now be changed in config to reel in melee damage
-Individual modification of each dungeon/raid difficulty
-Max level cap to keep high level characters from getting buffed
-Max level cap modifiable in config for each dungeon/raid
-Dungeon/Raid types still used as a catch all if not found as an
individual instance in the config

A database table is included to manage groups and the difficulty
modifier that each group member has applied to them. It also
deals with server restarts and players having to log out and log
back in to try to correct stats. The table is required.

Updated README.md file with current instructions and config file name fix.

Testing:

Debuff:
-Character in dungeon with full difficulty modifier applied while not in a group.
-Invite another character to the group.
-Have new group member enter same dungeon.
-Debuff will be applied because of the group member already in the dungeon
has the full difficulty modifier applied.
-Have both characters leave dungeon and re-enter it to have the modifier
balanced across the current members of the group.

-Max Level:
-Solocraft.Max.Level.Diff and the Dungeon individual level are added together
to declare the max level a character can be to get the difficulty modifier
applied for the dungeon.
-Use a character whose level is higher than the max level and enter dungeon.
-Character should not receive the difficulty modifier buff for the dungeon.

-Spellpower and Stats modifier adjustments:
-Change modifier in the config.
-Enter dungeon with character and notice stats and/or spellpower numbers
changed from previous entrance into the dungeon.
Removed: unused variable maxlevel at line 508
Fix(cpp):  Login after logout in dungeon will rebuff character
Removed numInGroup unused variable line 1144 and 1176
Large nested If groups removed and converted into using Hashmaps
BuildTools and others added 29 commits April 30, 2021 16:11
Fix Dungeon Hopping Continually Increasing Stats
refactor: updated module registration to core rev 4++
Added Class Balancing to cpp and conf
Closes issue azerothcore#21
Update code to use GetOption
New Feature: XP Balancing
Fix: Closes Issue azerothcore#24
feat(CORE): XP Balancing and Minor Fix
from tinyint to bigint ( every Character with GUID <255 can scale endless)
(bugfix) CalculateDifficulty should return a `float`, not an `int`
* feat. Update Module and fix. Misc

* fatal error: unused parameter 'map'
…hcore#38)

* Allow config to be reloaded without server restart.

* comment unused variables

---------

Co-authored-by: Walter Pagani <[email protected]>
Co-authored-by: Winfidonarleyan <[email protected]>
…e tracking for players * Modify XP only when player is in an instance * Fix build errors related to ObjectGuid usage

## Changes Proposed
This PR addresses an issue in the SoloCraft module where XP modification was being applied to all players, regardless of whether they were in an instance or not. The changes include:

1. Implemented a system to track whether players are in instances or not.
2. Modified the XP calculation to only apply when players are in instances (dungeons or raids).
3. Fixed build errors related to the use of ObjectGuid.

## Implementation Details
- Added a `std::map<ObjectGuid, bool>` to track players' instance status.
- Implemented `OnMapChanged` to update players' instance status.
- Modified `OnGiveXP` to check instance status before applying XP modifications.
- Updated `OnLogout` to clean up instance tracking data.

## How to Test
1. Enable the SoloCraft module.
2. Enter a dungeon or raid and kill some mobs. Verify that XP is modified as expected.
3. Exit the instance and kill mobs in the open world. Verify that XP is not modified.
4. Re-enter an instance and confirm that XP modification resumes.

## Issues Addressed
This PR fixes the issue where XP modification was being applied globally, even outside of instances.
@TheSCREWEDSoftware
Copy link

Maybe if you make the PR in here it might be approved.

https://github.com/azerothcore/mod-solocraft

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.