Revert 6b28c06..98fd381

This rolls back to commit 6b28c06b2c.
actorid
Jeffrey Haines 11 years ago
parent 98fd381564
commit 8ce938c6f1

@ -111,7 +111,7 @@ namespace MWBase
* @param arg Depends on \a type, e.g. for Theft, the value of the item that was stolen. * @param arg Depends on \a type, e.g. for Theft, the value of the item that was stolen.
* @return was the crime reported? * @return was the crime reported?
*/ */
virtual bool commitCrime (const MWWorld::Ptr& offender, const MWWorld::Ptr& victim, virtual bool commitCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim,
OffenseType type, int arg=0) = 0; OffenseType type, int arg=0) = 0;
virtual void reportCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim, virtual void reportCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim,
OffenseType type, int arg=0) = 0; OffenseType type, int arg=0) = 0;

@ -3,7 +3,6 @@
#include "../mwworld/esmstore.hpp" #include "../mwworld/esmstore.hpp"
#include "../mwworld/inventorystore.hpp" #include "../mwworld/inventorystore.hpp"
#include "../mwworld/cellstore.hpp"
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/world.hpp" #include "../mwbase/world.hpp"
@ -13,8 +12,6 @@
#include "../mwworld/class.hpp" #include "../mwworld/class.hpp"
#include "../mwworld/player.hpp" #include "../mwworld/player.hpp"
#include "aicombat.hpp"
#include <OgreSceneNode.h> #include <OgreSceneNode.h>
#include "spellcasting.hpp" #include "spellcasting.hpp"
@ -801,55 +798,37 @@ namespace MWMechanics
return; return;
commitCrime(ptr, victim, OT_Theft, item.getClass().getValue(item) * count); commitCrime(ptr, victim, OT_Theft, item.getClass().getValue(item) * count);
} }
bool MechanicsManager::commitCrime(const MWWorld::Ptr& offender, const MWWorld::Ptr& victim, OffenseType type, int arg) bool MechanicsManager::commitCrime(const MWWorld::Ptr &ptr, const MWWorld::Ptr &victim, OffenseType type, int arg)
{ {
if (offender.getRefData().getHandle() != "player") if (ptr.getRefData().getHandle() != "player")
return false; return false;
MWWorld::Ptr ptr;
bool reported=false; bool reported=false;
MWWorld::CellStore* cell = victim.getCell(); for (Actors::PtrControllerMap::const_iterator it = mActors.begin(); it != mActors.end(); ++it)
// TODO: implement and check the distance of actors to victim using fAlarmRadius
// get all NPCs in victims cell
for (MWWorld::CellRefList<ESM::NPC>::List::iterator it (cell->get<ESM::NPC>().mList.begin()); it != cell->get<ESM::NPC>().mList.end(); ++it)
{ {
MWWorld::Ptr ptr (&*it, cell); if (it->first != ptr &&
MWBase::Environment::get().getWorld()->getLOS(ptr, it->first) &&
// offender can't be ally to themselves awarenessCheck(ptr, it->first))
if (ptr == offender)
continue;
CreatureStats& creatureStats = MWWorld::Class::get(ptr).getCreatureStats(ptr);
// curse at the thief
if (ptr == victim && type == OT_Theft)
MWBase::Environment::get().getDialogueManager()->say(victim, "Thief");
// TODO: Make guards persue unless other factors, such as bounty stops them
// If the actor is a guard
// TODO: An actor reacts differently based on different values of AI_Alarm.
// Actor has witnessed a crime. Will he report it?
if (creatureStats.getAiSetting(CreatureStats::AI_Alarm).getModified() > 0)
{ {
creatureStats.setAlarmed(true); // NPCs will always curse you when they notice you steal their items, even if they don't report the crime
reported=true; if (it->first == victim && type == OT_Theft)
} {
else MWBase::Environment::get().getDialogueManager()->say(victim, "Thief");
continue; }
// TODO: An actor reacts differently based on different values of AI_Fight and AI_Flee. // Actor has witnessed a crime. Will he report it?
// Actor has reported the crime, will the actor fight the offender? // (not sure, is > 0 correct?)
if (creatureStats.getAiSetting(CreatureStats::AI_Fight).getModified() > 0) if (it->first.getClass().getCreatureStats(it->first).getAiSetting(CreatureStats::AI_Alarm).getModified() > 0)
{ {
creatureStats.getAiSequence().stack(AiCombat(offender)); // TODO: stats.setAlarmed(true) on NPCs within earshot
creatureStats.setHostile(true); // fAlarmRadius ?
creatureStats.getAiSequence().execute(ptr, 0); reported=true;
break;
}
} }
} }
if (reported) if (reported)
reportCrime(ptr, victim, type, arg); reportCrime(ptr, victim, type, arg);
return reported; return reported;

@ -111,7 +111,7 @@ namespace MWMechanics
* @param arg Depends on \a type, e.g. for Theft, the value of the item that was stolen. * @param arg Depends on \a type, e.g. for Theft, the value of the item that was stolen.
* @return was the crime reported? * @return was the crime reported?
*/ */
virtual bool commitCrime (const MWWorld::Ptr& offender, const MWWorld::Ptr& victim, virtual bool commitCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim,
OffenseType type, int arg=0); OffenseType type, int arg=0);
virtual void reportCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim, virtual void reportCrime (const MWWorld::Ptr& ptr, const MWWorld::Ptr& victim,
OffenseType type, int arg=0); OffenseType type, int arg=0);

Loading…
Cancel
Save