void Monster::updateFollowing() { if (attackedCreature != nullptr) { startFollowing(attackedCreature); } else if (hasMaster()) { startFollowing(_master.get()); } else { stopFollowing(); } }
void MapControl::followGeometry(const Geometry* geom) const { if ( geom == 0 ) { return; } //ensures only one signal is ever connected stopFollowing(geom); connect(geom, SIGNAL(positionChanged(Geometry*)), this, SLOT(positionChanged(Geometry*))); }
void Monster::setMaster(const CreatureP& master) { assert(master != this); if (master == _master) { return; } auto previousMaster = _master; _master = master; setDropLoot(LOOT_DROP_NONE); setLossSkill(false); removeFromRaid(); removeFromSpawn(); stopFollowing(); target(nullptr); notifyMasterChanged(previousMaster); }