2013-03-30 15:51:07 +01:00
|
|
|
#include "actionsoulgem.hpp"
|
|
|
|
|
2022-07-25 01:47:10 +03:00
|
|
|
#include <components/debug/debuglog.hpp>
|
|
|
|
|
2013-03-30 15:51:07 +01:00
|
|
|
#include "../mwbase/windowmanager.hpp"
|
|
|
|
#include "../mwbase/environment.hpp"
|
2022-07-25 01:47:10 +03:00
|
|
|
#include "../mwbase/world.hpp"
|
2019-02-19 01:10:55 +03:00
|
|
|
|
2015-09-10 18:48:34 +12:00
|
|
|
#include "../mwmechanics/actorutil.hpp"
|
2013-03-30 15:51:07 +01:00
|
|
|
|
2022-07-25 01:47:10 +03:00
|
|
|
#include "../mwworld/esmstore.hpp"
|
|
|
|
|
2013-03-30 15:51:07 +01:00
|
|
|
namespace MWWorld
|
|
|
|
{
|
|
|
|
|
2014-04-24 22:47:45 -04:00
|
|
|
ActionSoulgem::ActionSoulgem(const Ptr &object)
|
|
|
|
: Action(false, object)
|
|
|
|
{
|
2013-03-30 15:51:07 +01:00
|
|
|
|
2014-04-24 22:47:45 -04:00
|
|
|
}
|
2013-03-30 15:51:07 +01:00
|
|
|
|
2014-04-24 22:47:45 -04:00
|
|
|
void ActionSoulgem::executeImp(const Ptr &actor)
|
|
|
|
{
|
2015-09-10 18:48:34 +12:00
|
|
|
if (actor != MWMechanics::getPlayer())
|
2015-09-07 22:13:20 +02:00
|
|
|
return;
|
|
|
|
|
2015-09-10 18:48:34 +12:00
|
|
|
if(MWMechanics::isPlayerInCombat()) { //Ensure we're not in combat
|
2014-04-24 22:47:45 -04:00
|
|
|
MWBase::Environment::get().getWindowManager()->messageBox("#{sInventoryMessage5}");
|
|
|
|
return;
|
|
|
|
}
|
2022-07-25 01:47:10 +03:00
|
|
|
|
|
|
|
const auto& target = getTarget();
|
|
|
|
const auto& targetSoul = target.getCellRef().getSoul();
|
|
|
|
|
|
|
|
if (targetSoul.empty())
|
|
|
|
{
|
|
|
|
MWBase::Environment::get().getWindowManager()->messageBox("#{sNotifyMessage32}");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!MWBase::Environment::get().getWorld()->getStore().get<ESM::Creature>().search(targetSoul))
|
|
|
|
{
|
|
|
|
const auto& message = "Unknown soul creature id \"" + targetSoul + "\".";
|
|
|
|
Log(Debug::Warning) << message;
|
|
|
|
MWBase::Environment::get().getWindowManager()->messageBox(message);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
MWBase::Environment::get().getWindowManager()->showSoulgemDialog(target);
|
2014-04-24 22:47:45 -04:00
|
|
|
}
|
2013-03-30 15:51:07 +01:00
|
|
|
|
|
|
|
|
|
|
|
}
|