1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-29 00:06:43 +00:00

[Client] Send PlayerSpellbook packet when contracting or curing disease

This commit is contained in:
David Cernat 2019-11-12 17:44:38 +02:00
parent 8f7a267129
commit 1d8668305c
2 changed files with 72 additions and 0 deletions

View file

@ -3,6 +3,17 @@
#include <components/misc/rng.hpp> #include <components/misc/rng.hpp>
/*
Start of tes3mp addition
Include additional headers for multiplayer purposes
*/
#include "../mwmp/Main.hpp"
#include "../mwmp/LocalPlayer.hpp"
/*
End of tes3mp addition
*/
#include "../mwbase/windowmanager.hpp" #include "../mwbase/windowmanager.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
@ -59,6 +70,16 @@ namespace MWMechanics
actor.getClass().getCreatureStats(actor).getSpells().add(it->first); actor.getClass().getCreatureStats(actor).getSpells().add(it->first);
MWBase::Environment::get().getWorld()->applyLoopingParticles(actor); MWBase::Environment::get().getWorld()->applyLoopingParticles(actor);
/*
Start of tes3mp addition
Send an ID_PLAYER_SPELLBOOK packet every time a player gains a disease
*/
mwmp::Main::get().getLocalPlayer()->sendSpellChange(it->first->mId, mwmp::SpellbookChanges::ADD);
/*
End of tes3mp addition
*/
std::string msg = "sMagicContractDisease"; std::string msg = "sMagicContractDisease";
msg = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find(msg)->mValue.getString(); msg = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>().find(msg)->mValue.getString();
msg = Misc::StringUtils::format(msg, spell->mName); msg = Misc::StringUtils::format(msg, spell->mName);

View file

@ -4,6 +4,17 @@
#include <components/esm/spellstate.hpp> #include <components/esm/spellstate.hpp>
#include <components/misc/rng.hpp> #include <components/misc/rng.hpp>
/*
Start of tes3mp addition
Include additional headers for multiplayer purposes
*/
#include "../mwmp/Main.hpp"
#include "../mwmp/LocalPlayer.hpp"
/*
End of tes3mp addition
*/
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
@ -229,6 +240,16 @@ namespace MWMechanics
const ESM::Spell *spell = iter->first; const ESM::Spell *spell = iter->first;
if (spell->mData.mType == ESM::Spell::ST_Disease) if (spell->mData.mType == ESM::Spell::ST_Disease)
{ {
/*
Start of tes3mp addition
Send an ID_PLAYER_SPELLBOOK packet every time a player's common disease is removed
*/
mwmp::Main::get().getLocalPlayer()->sendSpellChange(spell->mId, mwmp::SpellbookChanges::REMOVE);
/*
End of tes3mp addition
*/
mSpells.erase(iter++); mSpells.erase(iter++);
mSpellsChanged = true; mSpellsChanged = true;
} }
@ -244,6 +265,16 @@ namespace MWMechanics
const ESM::Spell *spell = iter->first; const ESM::Spell *spell = iter->first;
if (spell->mData.mType == ESM::Spell::ST_Blight && !hasCorprusEffect(spell)) if (spell->mData.mType == ESM::Spell::ST_Blight && !hasCorprusEffect(spell))
{ {
/*
Start of tes3mp addition
Send an ID_PLAYER_SPELLBOOK packet every time a player's blight disease is removed
*/
mwmp::Main::get().getLocalPlayer()->sendSpellChange(spell->mId, mwmp::SpellbookChanges::REMOVE);
/*
End of tes3mp addition
*/
mSpells.erase(iter++); mSpells.erase(iter++);
mSpellsChanged = true; mSpellsChanged = true;
} }
@ -259,6 +290,16 @@ namespace MWMechanics
const ESM::Spell *spell = iter->first; const ESM::Spell *spell = iter->first;
if (hasCorprusEffect(spell)) if (hasCorprusEffect(spell))
{ {
/*
Start of tes3mp addition
Send an ID_PLAYER_SPELLBOOK packet every time a player's corprus disease is removed
*/
mwmp::Main::get().getLocalPlayer()->sendSpellChange(spell->mId, mwmp::SpellbookChanges::REMOVE);
/*
End of tes3mp addition
*/
mSpells.erase(iter++); mSpells.erase(iter++);
mSpellsChanged = true; mSpellsChanged = true;
} }
@ -274,6 +315,16 @@ namespace MWMechanics
const ESM::Spell *spell = iter->first; const ESM::Spell *spell = iter->first;
if (spell->mData.mType == ESM::Spell::ST_Curse) if (spell->mData.mType == ESM::Spell::ST_Curse)
{ {
/*
Start of tes3mp addition
Send an ID_PLAYER_SPELLBOOK packet every time a player's curse is removed
*/
mwmp::Main::get().getLocalPlayer()->sendSpellChange(spell->mId, mwmp::SpellbookChanges::REMOVE);
/*
End of tes3mp addition
*/
mSpells.erase(iter++); mSpells.erase(iter++);
mSpellsChanged = true; mSpellsChanged = true;
} }