void ThreatMap::addDamage(CreatureObject* target, uint32 damage, String xp) { Locker locker(&lockMutex); ManagedReference<TangibleObject*> strongSelf = self.get(); if (strongSelf == NULL || strongSelf.get() == target) return; int idx = find(target); String xpToAward = ""; if (xp == "") { WeaponObject* weapon = target->getWeapon(); xpToAward = weapon->getXpType(); } else xpToAward = xp; if (idx == -1) { ThreatMapEntry entry; entry.addDamage(xpToAward, damage); entry.addAggro(1); put(target, entry); registerObserver(target); } else { ThreatMapEntry* entry = &elementAt(idx).getValue(); entry->addDamage(xpToAward, damage); entry->addAggro(1); } }
void ThreatMap::addDamage(CreatureObject* target, uint32 damage, String xp) { Locker locker(&lockMutex); int idx = find(target); String xpToAward = ""; if (xp == "") { WeaponObject* weapon = target->getWeapon(); xpToAward = weapon->getXpType(); } else xpToAward = xp; if (idx == -1) { ThreatMapEntry entry; entry.addDamage(xpToAward, damage); entry.addAggro(1); put(target, entry); registerObserver(target); } else { ThreatMapEntry* entry = &elementAt(idx).getValue(); entry->addDamage(xpToAward, damage); entry->addAggro(1); } // randomly change target everytime threatmap is added to, TODO: keep this in mind and perhaps make it slightly more complicated if (System::random(5) == 0) currentThreat = target; }