Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
1 change: 1 addition & 0 deletions data/sql/db-world/mod_solo_craft.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
INSERT INTO `spell_dbc` (`Id`,`Attributes`,`Effect_1`,`EffectAura_1`,`EffectMiscValue_1`,`Name_Lang_enUS`,`ProcChance`,`RangeIndex`,`EquippedItemClass`) VALUES (150000,448,6,137,-1,"Solocraft Mod Stats Percentage",101,1,-1);
29 changes: 14 additions & 15 deletions src/Solocraft.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#include "SharedDefines.h"
#include "SpellAuraEffects.h"
#include "utils/Utils.h"
#include "Chat.h"
#include "Config.h"
Expand Down Expand Up @@ -42,6 +44,11 @@ float D40 = 1.0;
float D649H10 = 1.0;
float D649H25 = 1.0;

enum SolocraftSpells
{
SPELL_BUFF_STATS_PCT = 150000
};

class SolocraftConfig : public WorldScript
{
public:
Expand Down Expand Up @@ -336,6 +343,9 @@ class SolocraftAnnounce : public PlayerScript
{
if (SoloCraftEnable && SoloCraftAnnounceModule)
ChatHandler(player->GetSession()).SendSysMessage("This server is running the |cff4CFF00SoloCraft |rmodule.");

if (!player->HasAura(SPELL_BUFF_STATS_PCT))
player->AddAura(SPELL_BUFF_STATS_PCT, player);
}

void OnPlayerLogout(Player* player) override
Expand Down Expand Up @@ -506,13 +516,11 @@ class SolocraftPlayerInstanceHandler : public PlayerScript

if (result)
{
float difficulty = (*result)[1].Get<float>();
SpellPowerBonus = (*result)[3].Get<uint32>();
float StatsMultPct = (*result)[4].Get<float>();
SoloCraftXPMod = 1.0;

for (uint32 i = STAT_STRENGTH; i < MAX_STATS; ++i)
player->HandleStatModifier(UnitMods(UNIT_MOD_STAT_START + i), TOTAL_PCT, difficulty * StatsMultPct, false);
if (AuraEffect* aurEff = player->GetAuraEffect(SPELL_BUFF_STATS_PCT, EFFECT_0))
aurEff->ChangeAmount(0);

if (player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN) && !SolocraftNoXPFlag)
player->RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
Expand Down Expand Up @@ -589,17 +597,8 @@ class SolocraftPlayerInstanceHandler : public PlayerScript
QueryResult result = CharacterDatabase.Query("SELECT `GUID`, `Difficulty`, `GroupSize`, `SpellPower`, `Stats` FROM `custom_solocraft_character_stats` WHERE `GUID`={}", player->GetGUID().GetCounter());

// Modify Player Stats
// STATS defined/enum in SharedDefines.h
for (int32 i = STAT_STRENGTH; i < MAX_STATS; ++i)
{
// Check for Dungeon to Dungeon Transfer and remove old buff
if (result)
player->HandleStatModifier(UnitMods(UNIT_MOD_STAT_START + i), TOTAL_PCT, (*result)[1].Get<float>() * (*result)[4].Get<float>(), false);
// Buff the player
// Unitmods enum UNIT_MOD_STAT_START defined in Unit.h line 391
player->HandleStatModifier(UnitMods(UNIT_MOD_STAT_START + i), TOTAL_PCT, difficulty * SoloCraftStatsMult, true);

}
if (AuraEffect* aurEff = player->GetAuraEffect(SPELL_BUFF_STATS_PCT, EFFECT_0))
aurEff->ChangeAmount(difficulty * SoloCraftStatsMult);

// Set player health
// Defined in Unit.h line 1524
Expand Down