Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
2 changes: 2 additions & 0 deletions data/sql/db-world/mod_solo_craft.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
DELETE FROM `spell_dbc` WHERE `Id` = 150000;
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