Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/hatersgit/hateforge
Browse files Browse the repository at this point in the history
  • Loading branch information
hatersgit committed Jan 27, 2024
2 parents 3c690d8 + 42048c5 commit 57ac7e8
Show file tree
Hide file tree
Showing 12 changed files with 45 additions and 239 deletions.
94 changes: 0 additions & 94 deletions .github/ISSUE_TEMPLATE/bug_report.yml

This file was deleted.

20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/config.yml

This file was deleted.

43 changes: 0 additions & 43 deletions .github/ISSUE_TEMPLATE/feature_request.yml

This file was deleted.

82 changes: 6 additions & 76 deletions .github/README.md
Original file line number Diff line number Diff line change
@@ -1,88 +1,18 @@
# ![logo](https://raw.githubusercontent.com/azerothcore/azerothcore.github.io/master/images/logo-github.png) AzerothCore

[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)
[![CodeFactor](https://www.codefactor.io/repository/github/azerothcore/azerothcore-wotlk/badge)](https://www.codefactor.io/repository/github/azerothcore/azerothcore-wotlk)
[![StackOverflow](http://img.shields.io/badge/stackoverflow-azerothcore-blue.svg?logo=stackoverflow)](https://stackoverflow.com/questions/tagged/azerothcore?sort=newest "Ask / browse questions here")
[![Discord](https://img.shields.io/discord/217589275766685707?logo=discord&logoColor=white)](https://discord.gg/gkt4y2x "Our community hub on Discord")

## Build Status

[![nopch-build](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-nopch.yml/badge.svg?branch=master)](https://github.com/azerothcore/azerothcore-wotlk/actions/workflows/core-build-nopch.yml)
[![core-modules-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/core-modules-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Acore-modules-build+branch%3Amaster+event%3Apush)
[![windows-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/windows-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Awindows-build+branch%3Amaster+event%3Apush)
[![macos-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/macos-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Amacos-build+branch%3Amaster+event%3Apush)
[![docker-build](https://github.com/azerothcore/azerothcore-wotlk/workflows/docker-build/badge.svg?branch=master&event=push)](https://github.com/azerothcore/azerothcore-wotlk/actions?query=workflow%3Adocker-build+branch%3Amaster+event%3Apush)
# DuskForgeCore

## Introduction

AzerothCore is an open-source game server application and framework designed for hosting massively multiplayer online role-playing games (MMORPGs). It is based on the popular MMORPG World of Warcraft (WoW) and seeks to recreate the gameplay experience of the original game from patch 3.3.5a.
DuskForgeCore is a fork of Azerothcore an open-source game server application and framework designed for hosting massively multiplayer online role-playing games (MMORPGs). It is based on the popular MMORPG World of Warcraft (WoW) and seeks to recreate the gameplay experience of the original game from patch 3.3.5a.

The original code is based on MaNGOS, TrinityCore, and SunwellCore and has since then had extensive development to improve stability, in-game mechanics, and modularity to the game. AC has also grown into a community-driven project with a significant number of contributors and developers. It is written in C++ and provides a solid foundation for creating private servers that mimic the mechanics and behavior of the official WoW servers.

## Philosophy

Our main goal is to create a playable game server, offering a fully working in-game experience.

Here are the main points we focus on:

* Stability
* We make sure all changes pass the CIs before being merged into the master branch.

* Blizzlike content
* We strive to make all in-game content to be blizzlike. Therefore we have a high standard for fixes being made.

* Customization
* It is easy to customize your experience using [modules](#modules).

* Community driven
* AzerothCore has an active community of developers, contributors, and users who collaborate, share knowledge, and provide support through forums, Discord channels, and other communication platforms.

### Modules

AzerothCore is designed to be highly modular, allowing developers to extend and customize the game to suit their preferences or create unique gameplay experiences. This flexibility enables the addition of custom features, content, and modifications.

We have a lot of modules already made by the community, many of which can be found in the [Module Catalogue](https://www.azerothcore.org/catalogue.html#/).
This core is now a joint venture between the Duskhaven and Forged Team.

## Installation

Detailed installation instructions are available [here](http://www.azerothcore.org/wiki/installation).

## Contributing

AzerothCore can also serve as a learning resource for aspiring developers who want to understand how WoW servers work, how MMORPGs are structured, how game server emulators are created, or to improve their C++ and SQL knowledge.

If you want to contribute to the project, you will find a lot of resources that will guide you in our [wiki](https://www.azerothcore.org/wiki/contribute).

We also recommend you read our [Contributor Covenant Code of Conduct](https://github.com/azerothcore/azerothcore-wotlk/blob/master/.github/CODE_OF_CONDUCT.md).

Feel free to join our [Discord server](https://discord.gg/gkt4y2x).

Click on the "⭐ Star" button to help us gain more visibility on Github!
More specific detailed instructions on how to utilize the DuskForgeCore will be available once the Duskhaven Project is available for launch. It does follow the default instructions over at AzerothCore.

## Authors & Contributors

This project exists thanks to the [authors](https://github.com/azerothcore/azerothcore-wotlk/blob/master/AUTHORS).

## Important Links

- [Doxygen documentation](https://www.azerothcore.org/pages/doxygen/index.html)
- [Website](http://www.azerothcore.org/)
- [AzerothCore catalogue](http://www.azerothcore.org/catalogue.html "Modules, tools, and other stuff for AzerothCore") (modules, tools, etc...)
- [Our Discord server](https://discord.gg/gkt4y2x)
- [Our wiki](http://www.azerothcore.org/wiki "Easy to use and developed by AzerothCore founder")
- [Our forum](https://github.com/azerothcore/azerothcore-wotlk/discussions/)
- [Our Facebook page](https://www.facebook.com/AzerothCore/)
- [Our LinkedIn page](https://www.linkedin.com/company/azerothcore/)

## License

- The new AzerothCore source components are released under the [GNU AGPL v3](https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3)
- The old sources based on MaNGOS/TrinityCore are released under the [GNU GPL v2](https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-GPL2)

It's important to note that AzerothCore is not an official Blizzard Entertainment product, and it is not affiliated with or endorsed by World of Warcraft or Blizzard Entertainment. AzerothCore does not in any case sponsor nor support illegal public servers. If you use this project to run an illegal public server and not for testing and learning it is your own personal choice.

## Special thanks

[JetBrains](https://www.jetbrains.com/?from=AzerothCore) is providing free [open-source licenses](https://www.jetbrains.com/community/opensource/) to the AzerothCore developers.

[![JetBrains](https://user-images.githubusercontent.com/75517/51205146-7f225c80-1905-11e9-82e0-835627be170d.png)](https://www.jetbrains.com/?from=AzerothCore)
This core exists thanks to the [authors](https://github.com/azerothcore/azerothcore-wotlk/blob/master/AUTHORS) for the base version of the core.
This core is now a joint venture between the Duskhaven and Forged Team.
2 changes: 1 addition & 1 deletion modules/mod-Forge/src/ForgeCache.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -988,7 +988,7 @@ class ForgeCache : public DatabaseScript

auto amount = 0;
auto level = player->getLevel();
if (level > 10)
if (level >= 10)
level -= 9;

switch (pointType) {
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Entities/Player/Player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10549,7 +10549,7 @@ void Player::SetRestBonus(float rest_bonus_new)
if (rest_bonus_new < 0)
rest_bonus_new = 0;

float rest_bonus_max = (float)GetUInt32Value(PLAYER_NEXT_LEVEL_XP) * 1.5f / 2;
float rest_bonus_max = (float)GetUInt32Value(PLAYER_NEXT_LEVEL_XP) * 1.5f / (2 / GetTotalAuraMultiplier(SPELL_AURA_MOD_RESTED_XP_MAX_AMOUNT));

if (rest_bonus_new > rest_bonus_max)
_restBonus = rest_bonus_max;
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Entities/Player/PlayerUpdates.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ void Player::Update(uint32 p_time)
float bubble = 0.125f * sWorld->getRate(RATE_REST_INGAME);
float extraPerSec =
((float) GetUInt32Value(PLAYER_NEXT_LEVEL_XP) / 72000.0f) *
bubble;
bubble * GetTotalAuraMultiplier(SPELL_AURA_MOD_RESTED_XP_RECOVERY_RATE);

// speed collect rest bonus (section/in hour)
SetRestBonus(GetRestBonus() + timeDiff * extraPerSec);
Expand Down
4 changes: 3 additions & 1 deletion src/server/game/Entities/Unit/Unit.h
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ enum UnitMods
UNIT_MOD_RESISTANCE_END = UNIT_MOD_RESISTANCE_ARCANE + 1,
UNIT_MOD_POWER_START = UNIT_MOD_MANA,
UNIT_MOD_POWER_END = UNIT_MOD_RUNIC_POWER + 1,
UNIT_MOD_FORGE_STAT_START = UNIT_MOD_THORNS,
};

enum BaseModGroup
Expand Down Expand Up @@ -722,7 +723,8 @@ enum MeleeHitOutcome : uint8

enum ForgeStats
{
FORGE_STAT_THORNS
FORGE_STAT_THORNS,
FORGE_STAT_END
};

enum ExtraAttackSpells
Expand Down
5 changes: 4 additions & 1 deletion src/server/game/Spells/Auras/SpellAuraDefines.h
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,10 @@ enum AuraType
SPELL_AURA_MOD_SCHOOL_MASK_HEALING_FROM_CASTER = 348,
SPELL_AURA_MOD_MONEY_GAIN = 349,
SPELL_AURA_MOD_TAXI_FLIGHT_SPEED = 350,
SPELL_AURA_MOD_CHANGE_DAMAGE_SCHOOL_OF_SPELL = 351,
SPELL_AURA_MOD_FORGE_STAT = 351,
SPELL_AURA_MOD_RESTED_XP_MAX_AMOUNT = 352,
SPELL_AURA_MOD_RESTED_XP_RECOVERY_RATE = 353,
SPELL_AURA_MOD_CHANGE_DAMAGE_SCHOOL_OF_SPELL = 354,
TOTAL_AURAS
};

Expand Down
27 changes: 27 additions & 0 deletions src/server/game/Spells/Auras/SpellAuraEffects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,9 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS] =
&AuraEffect::HandleNoImmediateEffect, //348 SPELL_AURA_MOD_SCHOOL_MASK_HEALING_FROM_CASTER
&AuraEffect::HandleNoImmediateEffect, //349 SPELL_AURA_MOD_MONEY_GAIN
&AuraEffect::HandleNoImmediateEffect, //350 SPELL_AURA_MOD_TAXI_FLIGHT_SPEED
&AuraEffect::HandleAuraModForgeStat, //351 SPELL_AURA_MOD_FORGE_STAT
&AuraEffect::HandleNoImmediateEffect, //352 SPELL_AURA_MOD_RESTED_XP_MAX_AMOUNT implemented in Player::SetRestBonus, Spell::EffectGiveRestedExperience
&AuraEffect::HandleNoImmediateEffect, //355 SPELL_AURA_MOD_RESTED_XP_RECOVERY_RATE implemented in Player::Update
};

AuraEffect::AuraEffect(Aura* base, uint8 effIndex, int32* baseAmount, Unit* caster):
Expand Down Expand Up @@ -4955,6 +4958,30 @@ void AuraEffect::HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mod
target->ToPlayer()->UpdateExpertise(OFF_ATTACK);
}

void AuraEffect::HandleAuraModForgeStat(AuraApplication const* aurApp, uint8 mode, bool apply) const
{
if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT)))
return;

Unit* target = aurApp->GetTarget();

if (GetMiscValue() < 0 || GetMiscValue() > 4)
{
LOG_ERROR("spells.aura.effect", "WARNING: Spell {} effect {} has an unsupported misc value ({}) for SPELL_AURA_MOD_FORGE_STAT ", GetId(), GetEffIndex(), GetMiscValue());
return;
}

for (int32 i = FORGE_STAT_THORNS; i < FORGE_STAT_END; i++)
{
if (GetMiscValue() == i)
{
if (!GetMiscValueB())
target->HandleStatModifier(UnitMods(UNIT_MOD_FORGE_STAT_START + i), TOTAL_VALUE, float(GetAmount()), apply);
else
target->HandleStatModifier(UnitMods(UNIT_MOD_FORGE_STAT_START + i), BASE_PCT, float(GetAmount()), apply);
}
}
}
/********************************/
/*** HEAL & ENERGIZE ***/
/********************************/
Expand Down
1 change: 1 addition & 0 deletions src/server/game/Spells/Auras/SpellAuraEffects.h
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ class AuraEffect
void HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModResistenceOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraModForgeStat(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// heal and energize
void HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const;
Expand Down
2 changes: 1 addition & 1 deletion src/server/game/Spells/SpellEffects.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6464,7 +6464,7 @@ void Spell::EffectGiveRestedExperience(SpellEffIndex effIndex)
if (spellAmount < 1)
return;

float rest_bonus_max = float(playerTarget->GetUInt32Value(PLAYER_NEXT_LEVEL_XP) * 1.5f / 2);
float rest_bonus_max = float(playerTarget->GetUInt32Value(PLAYER_NEXT_LEVEL_XP) * 1.5f / (2 / playerTarget->GetTotalAuraMultiplier(SPELL_AURA_MOD_RESTED_XP_MAX_AMOUNT)));
float restBonus = CalculatePct(rest_bonus_max, spellAmount);

playerTarget->SetRestBonus(playerTarget->GetRestBonus() + restBonus);
Expand Down

0 comments on commit 57ac7e8

Please sign in to comment.