void Player::UpdateArmor() { float value = 0.0f; UnitMods unitMod = UNIT_MOD_ARMOR; value = GetModifierValue(unitMod, BASE_VALUE); // base armor (from items) value *= GetModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetStat(STAT_AGILITY) * 2.0f; // armor bonus from stats value += GetModifierValue(unitMod, TOTAL_VALUE); //add dynamic flat mods AuraList const& mResbyIntellect = GetAurasByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT); for (AuraList::const_iterator i = mResbyIntellect.begin();i != mResbyIntellect.end(); ++i) { Modifier* mod = (*i)->GetModifier(); if (mod->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL) value += int32(GetStat(Stats((*i)->GetMiscBValue())) * (*i)->GetModifierValue() / 100.0f); } value *= GetModifierValue(unitMod, TOTAL_PCT); if (HasAura(5229,0)) value -= HasAura(9634,0) ? 0.16*value : 0.27*value; SetArmor(int32(value)); Pet *pet = GetPet(); if (pet) pet->UpdateArmor(); }
void Missile::Init(TemporaryPtr<const Ship> launcher, const OpenSteer::Vec3& position_, const OpenSteer::Vec3& direction) { assert(!launcher->Unowned()); m_empire_id = launcher->Owner(); m_stats.m_damage = launcher->GetPartMeter(METER_DAMAGE, m_part_name)->Current(); m_stats.m_ROF = launcher->GetPartMeter(METER_ROF, m_part_name)->Current(); m_stats.m_range = launcher->GetPartMeter(METER_RANGE, m_part_name)->Current(); m_stats.m_speed = launcher->GetPartMeter(METER_SPEED, m_part_name)->Current(); m_stats.m_stealth = launcher->GetPartMeter(METER_STEALTH, m_part_name)->Current(); m_stats.m_structure = launcher->GetPartMeter(METER_STRUCTURE, m_part_name)->Current(); m_stats.m_capacity = launcher->GetPartMeter(METER_CAPACITY, m_part_name)->Current(); m_structure = m_stats.m_structure; m_proximity_token = m_pathing_engine->GetProximityDB().Insert( this, MISSILE_FLAG, EmpireFlag(m_empire_id)); SimpleVehicle::reset(); SimpleVehicle::setMaxForce(9.0 * 18.0); SimpleVehicle::setMaxSpeed(Stats().m_speed); // TODO: setMass() SimpleVehicle::regenerateOrthonormalBasis(direction, OpenSteer::Vec3(0, 0, 1)); SimpleVehicle::setPosition(position_); SimpleVehicle::setSpeed(0); m_proximity_token->UpdatePosition(position()); }
void Player::UpdateManaRegen() { float Intellect = GetStat(STAT_INTELLECT); // Mana regen from spirit and intellect float power_regen = sqrt(Intellect) * OCTRegenMPPerSpirit(); // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen power_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA); // Mana regen from SPELL_AURA_MOD_POWER_REGEN aura float power_regen_mp5 = (GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) + m_baseManaRegen) / 5.0f; // Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura AuraList const& regenAura = GetAurasByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT); for(AuraList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i) { Modifier* mod = (*i)->GetModifier(); power_regen_mp5 += GetStat(Stats(mod->m_miscvalue)) * mod->m_amount / 500.0f; } // Set regen rate in cast state apply only on spirit based regen int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); if (modManaRegenInterrupt > 100) modManaRegenInterrupt = 100; SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, power_regen_mp5 + power_regen * modManaRegenInterrupt / 100.0f); SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, power_regen_mp5 + power_regen); if (IsInWorld()) CallForAllControlledUnits(ApplyScalingBonusWithHelper(SCALING_TARGET_POWERREGEN, 0, false),CONTROLLED_PET|CONTROLLED_GUARDIANS); }
void Player::UpdateArmor() { float value = 0.0f; UnitMods unitMod = UNIT_MOD_ARMOR; value = GetModifierValue(unitMod, BASE_VALUE); // base armor (from items) value *= GetModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetModifierValue(unitMod, TOTAL_VALUE); // Custom MoP Script // 77494 - Mastery : Nature's Guardian if (GetTypeId() == TYPEID_PLAYER && HasAura(77494)) { float Mastery = 1.0f + GetFloatValue(PLAYER_MASTERY) * 1.25f / 100.0f; value *= Mastery; } //add dynamic flat mods AuraEffectList const& mResbyIntellect = GetAuraEffectsByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT); for (AuraEffectList::const_iterator i = mResbyIntellect.begin(); i != mResbyIntellect.end(); ++i) { if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) value += CalculatePct(GetStat(Stats((*i)->GetMiscValueB())), (*i)->GetAmount()); } value *= GetModifierValue(unitMod, TOTAL_PCT); SetArmor(int32(value)); Pet* pet = GetPet(); if (pet) pet->UpdateArmor(); UpdateAttackPowerAndDamage(); // armor dependent auras update for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR }
bool Pet::UpdateAllStats() { for (int i = STAT_STRENGTH; i < MAX_STATS; ++i) UpdateStats(Stats(i)); for (uint32 i = 0; i <= sChrPowerTypesStore.GetNumRows(); i++) { ChrPowerTypesEntry const* cEntry = sChrPowerTypesStore.LookupEntry(i); if (!cEntry) continue; if (getClass() != cEntry->classId) continue; if (cEntry->power == 10) continue; SetMaxPower(Powers(cEntry->power), uint32(GetCreatePowers(Powers(cEntry->power)))); } for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); return true; }
void Player::UpdateManaRegen() { float Intellect = GetStat(STAT_INTELLECT); // Mana regen from spirit and intellect float power_regen = sqrt(Intellect) * OCTRegenMPPerSpirit(); // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen power_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA); // Mana regen from SPELL_AURA_MOD_POWER_REGEN aura float power_regen_mp5 = (GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) + m_baseManaRegen) / 5.0f; // Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura AuraEffectList const& regenAura = GetAuraEffectsByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT); for (AuraEffectList::const_iterator i = regenAura.begin(); i != regenAura.end(); ++i) { power_regen_mp5 += GetStat(Stats((*i)->GetMiscValue())) * (*i)->GetAmount() / 500.0f; } // Set regen rate in cast state apply only on spirit based regen int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); if (modManaRegenInterrupt > 100) modManaRegenInterrupt = 100; SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, power_regen_mp5 + CalculatePctN(power_regen, modManaRegenInterrupt)); SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, power_regen_mp5 + power_regen); }
bool Player::UpdateStats(Stats stat) { if (stat > STAT_SPIRIT) return false; // value = ((base_value * base_pct) + total_value) * total_pct float value = GetTotalStatValue(stat); SetStat(stat, int32(value)); if (stat == STAT_STAMINA || stat == STAT_INTELLECT) { Pet* pet = GetPet(); if (pet) pet->UpdateStats(stat); } switch (stat) { case STAT_STRENGTH: break; case STAT_AGILITY: UpdateArmor(); UpdateAllCritPercentages(); UpdateDodgePercentage(); break; case STAT_STAMINA: UpdateMaxHealth(); break; case STAT_INTELLECT: UpdateMaxPower(POWER_MANA); UpdateAllSpellCritChances(); UpdateArmor(); // SPELL_AURA_MOD_RESISTANCE_OF_INTELLECT_PERCENT, only armor currently break; case STAT_SPIRIT: break; default: break; } // Need update (exist AP from stat auras) UpdateAttackPowerAndDamage(); UpdateAttackPowerAndDamage(true); UpdateSpellDamageAndHealingBonus(); UpdateManaRegen(); // Update ratings in exist SPELL_AURA_MOD_RATING_FROM_STAT and only depends from stat uint32 mask = 0; AuraList const& modRatingFromStat = GetAurasByType(SPELL_AURA_MOD_RATING_FROM_STAT); for (AuraList::const_iterator i = modRatingFromStat.begin(); i != modRatingFromStat.end(); ++i) if (Stats((*i)->GetMiscBValue()) == stat) mask |= (*i)->GetMiscValue(); if (mask) { for (uint32 rating = 0; rating < MAX_COMBAT_RATING; ++rating) if (mask & (1 << rating)) ApplyRatingMod(CombatRating(rating), 0, true); } return true; }
void Player::UpdateManaRegen() { float base_regen = GetCreateMana() * 0.01f; // Mana regen from spirit and intellect float spirit_regen = sqrt(GetStat(STAT_INTELLECT)) * OCTRegenMPPerSpirit(); // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen spirit_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA); // Mana regen from SPELL_AURA_MOD_POWER_REGEN aura float power_regen_mp5 = GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) / 5.0f; // Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura AuraList const& regenAura = GetAurasByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT); for (AuraList::const_iterator i = regenAura.begin(); i != regenAura.end(); ++i) { Modifier* mod = (*i)->GetModifier(); power_regen_mp5 += GetStat(Stats(mod->m_miscvalue)) * mod->m_amount / 500.0f; } // Set regen rate in cast state apply only on spirit based regen int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); if (modManaRegenInterrupt > 100) modManaRegenInterrupt = 100; SetStatFloatValue(UNIT_FIELD_POWER_REGEN_INTERRUPTED_FLAT_MODIFIER, base_regen + power_regen_mp5 + spirit_regen * modManaRegenInterrupt / 100.0f); SetStatFloatValue(UNIT_FIELD_POWER_REGEN_FLAT_MODIFIER, base_regen + 0.001f + power_regen_mp5 + spirit_regen); }
void Player::UpdateArmor() { float value; UnitMods unitMod = UNIT_MOD_ARMOR; value = GetModifierValue(unitMod, BASE_VALUE); // base armor (from items) value *= GetModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetModifierValue(unitMod, TOTAL_VALUE); // add dynamic flat mods AuraList const& mResbyIntellect = GetAurasByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT); for (AuraList::const_iterator i = mResbyIntellect.begin(); i != mResbyIntellect.end(); ++i) { Modifier* mod = (*i)->GetModifier(); if (mod->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL) value += int32(GetStat(Stats((*i)->GetMiscBValue())) * mod->m_amount / 100.0f); } value *= GetModifierValue(unitMod, TOTAL_PCT); SetArmor(int32(value)); Pet* pet = GetPet(); if (pet) pet->UpdateArmor(); UpdateAttackPowerAndDamage(); // armor dependent auras update for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR }
LPXLFOPER EXCEL_EXPORT xlStats( LPXLFOPER dataa) { EXCEL_BEGIN; if (XlfExcel::Instance().IsCalledByFuncWiz()) return XlfOper(true); XlfOper datab( (dataa)); MyArray data( datab.AsArray("data")); double t = (clock()+0.0)/CLOCKS_PER_SEC; MyArray result( Stats( data) ); t = (clock()+0.0)/CLOCKS_PER_SEC-t; CellMatrix resultCells(result); CellMatrix time(1,2); time(0,0) = "time taken"; time(0,1) = t; resultCells.PushBottom(time); return XlfOper(resultCells); EXCEL_END }
void Missile::update(const float elapsed_time, bool force) { OpenSteer::Vec3 steer = m_last_steer; if (force || m_pathing_engine->UpdateNumber() % PathingEngine::UPDATE_SETS == serialNumber % PathingEngine::UPDATE_SETS) { const float AT_DESTINATION = speed(); const float AT_DEST_SQUARED = AT_DESTINATION * AT_DESTINATION; float distance_squared = (m_destination - position()).lengthSquared(); CombatObjectPtr target = m_target.lock(); if (distance_squared < AT_DEST_SQUARED) { if (target) { Listener().MissileExploded(shared_from_this()); target->Damage(Stats().m_damage, NON_PD_DAMAGE); } else { Listener().MissileRemoved(shared_from_this()); } delete m_proximity_token; m_proximity_token = 0; m_pathing_engine->RemoveObject(shared_from_this()); return; } else { if (target) m_destination = target->position(); } steer = Steer(); } applySteeringForce(steer, elapsed_time); m_last_steer = steer; m_proximity_token->UpdatePosition(position()); }
void Player::UpdateArmor() { float value = 0.0f; UnitMods unitMod = UNIT_MOD_ARMOR; value = GetModifierValue(unitMod, BASE_VALUE); // base armor (from items) value *= GetModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetStat(STAT_AGILITY) * 2.0f; // armor bonus from stats value += GetModifierValue(unitMod, TOTAL_VALUE); //add dynamic flat mods AuraEffectList const& mResbyIntellect = GetAuraEffectsByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT); for (AuraEffectList::const_iterator i = mResbyIntellect.begin(); i != mResbyIntellect.end(); ++i) { if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) value += CalculatePctN(GetStat(Stats((*i)->GetMiscValueB())), (*i)->GetAmount()); } value *= GetModifierValue(unitMod, TOTAL_PCT); SetArmor(int32(value)); Pet *pet = GetPet(); if (pet) pet->UpdateArmor(); UpdateAttackPowerAndDamage(); // armor dependent auras update for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR }
Part::Part(Part&& other) : Part(other.name, other.location, other.slot, other.stats) { other.name.clear(); other.location = Location(); other.slot = Slot::Nothing; other.stats = Stats(); }
Rcpp::NumericVector HDPState::save_betas(){ Rcpp::NumericVector Stats(num_topics_); for (int k = 0; k < num_topics_; ++k) { Stats[k]= beta_u_[k]; } return Stats; }
bool Player::UpdateAllStats() { for (int i = STAT_STRENGTH; i < MAX_STATS; ++i) { float value = GetTotalStatValue(Stats(i)); SetStat(Stats(i), (int32)value); } UpdateArmor(); // calls UpdateAttackPowerAndDamage() in UpdateArmor for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR UpdateAttackPowerAndDamage(true); UpdateMaxHealth(); for (uint32 i = 0; i <= sChrPowerTypesStore.GetNumRows(); i++) { ChrPowerTypesEntry const* cEntry = sChrPowerTypesStore.LookupEntry(i); if (!cEntry) continue; if (getClass() != cEntry->classId) continue; if (cEntry->power == 10) continue; SetMaxPower(Powers(cEntry->power), uint32(GetCreatePowers(Powers(cEntry->power)))); } UpdateAllRatings(); UpdateAllCritPercentages(); UpdateAllSpellCritChances(); UpdateDefenseBonusesMod(); UpdateShieldBlockValue(); UpdateArmorPenetration(); UpdateSpellDamageAndHealingBonus(); UpdateManaRegen(); UpdateExpertise(BASE_ATTACK); UpdateExpertise(OFF_ATTACK); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); return true; }
void ArenaTeam::NotifyStatsChanged() { // this is called after a rated match ended // updates arena team stats for every member of the team (not only the ones who participated!) for (MemberList::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr) { Player * plr = sObjectMgr.GetPlayer(itr->guid); if (plr) Stats(plr->GetSession()); } }
void S2NearIndexCursor::seek(const BSONObj& query, const NearQuery& nearQuery, const vector<GeoQuery>& regions) { _indexedGeoFields = regions; _nearQuery = nearQuery; _returnedDistance = 0; _nearFieldIndex = 0; _stats = Stats(); _returned = unordered_set<DiskLoc, DiskLoc::Hasher>(); _results = priority_queue<Result>(); BSONObjBuilder geoFieldsToNuke; for (size_t i = 0; i < _indexedGeoFields.size(); ++i) { geoFieldsToNuke.append(_indexedGeoFields[i].getField(), ""); } // false means we want to filter OUT geoFieldsToNuke, not filter to include only that. _filteredQuery = query.filterFieldsUndotted(geoFieldsToNuke.obj(), false); // More indexing machinery. BSONObjBuilder specBuilder; BSONObjIterator specIt(_descriptor->keyPattern()); while (specIt.more()) { BSONElement e = specIt.next(); // Checked in AccessMethod already, so we know this spec has only numbers and 2dsphere if ( e.type() == String ) { specBuilder.append( e.fieldName(), 1 ); } else { specBuilder.append( e.fieldName(), e.numberInt() ); } } _specForFRV = specBuilder.obj(); specIt = BSONObjIterator(_descriptor->keyPattern()); while (specIt.more()) { if (specIt.next().fieldName() == _nearQuery.field) { break; } ++_nearFieldIndex; } _minDistance = max(0.0, _nearQuery.minDistance); // _outerRadius can't be greater than (pi * r) or we wrap around the opposite // side of the world. _maxDistance = min(M_PI * _params.radius, _nearQuery.maxDistance); uassert(16892, "$minDistance too large", _minDistance < _maxDistance); // Start with a conservative _radiusIncrement. _radiusIncrement = 5 * S2::kAvgEdge.GetValue(_params.finestIndexedLevel) * _params.radius; _innerRadius = _outerRadius = _minDistance; // We might want to adjust the sizes of our coverings if our search // isn't local to the start point. // Set up _outerRadius with proper checks (maybe maxDistance is really small?) nextAnnulus(); fillResults(); }
bool Guardian::UpdateAllStats() { for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i) UpdateStats(Stats(i)); for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); UpdateAllResistances(); return true; }
//! clears the rendering lists void EntityRenderer::Clear() { m_Solid3DRenderMap.clear(); m_Transparent3DRenderMap.clear(); m_Solid2DRenderMap.clear(); m_Transparent2DRenderMap.clear(); m_Solid2DPostFadeRenderMap.clear(); m_SkyBoxMap.clear(); m_Debug2DMap.clear(); m_Stats = Stats(); }
bool Pet::UpdateAllStats() { for (int i = STAT_STRENGTH; i < MAX_STATS; ++i) UpdateStats(Stats(i)); for(int i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); return true; }
bool Player::UpdateAllStats() { for (int8 i = STAT_STRENGTH; i < MAX_STATS; ++i) { float value = GetTotalStatValue(Stats(i)); SetStat(Stats(i), int32(value)); } UpdateArmor(); // calls UpdateAttackPowerAndDamage() in UpdateArmor for SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR UpdateAttackPowerAndDamage(true); UpdateMaxHealth(); for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); UpdateAllRatings(); UpdateAllCritPercentages(); UpdateAllSpellCritChances(); UpdateBlockPercentage(); UpdateShieldBlockValue(); UpdateParryPercentage(); UpdateDodgePercentage(); UpdateSpellDamageAndHealingBonus(); UpdateManaRegen(); UpdateFocusRegen(); UpdateEnergyRegen(); UpdateExpertise(BASE_ATTACK); UpdateExpertise(OFF_ATTACK); UpdateMastery(); RecalculateRating(CR_ARMOR_PENETRATION); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); if (getClass() == CLASS_DEATH_KNIGHT) UpdateAllRunesRegen(); return true; }
bool FFT::test() { Image a(123, 234, 10, 4); Noise::apply(a, 0, 1); Image b = a.copy(); // Check it's a self-inverse FFT::apply(a, true, true, true); IFFT::apply(a, true, true, true); if (!nearlyEqual(b, a)) return false; // Check it's an orthogonal transform ComplexMultiply::apply(b, a, true); double d1 = Stats(b).sum(); FFT::apply(a, true, true, false); a /= sqrtf(123*234); b = a.copy(); ComplexMultiply::apply(b, a, true); double d2 = Stats(b).sum(); if (!nearlyEqual(d1, d2)) return false; // Check a single shifted curve creates a spike a.channel(0).set(cos(16 * M_PI * Expr::X() / 123.0 + M_PI/8)); a.channel(1).set(sin(16 * M_PI * Expr::X() / 123.0 + M_PI/8)); a.channel(2).set(a.channel(0)); a.channel(3).set(a.channel(1)); FFT::apply(a, true, true, true); a /= sqrtf(123*234*10); float r = a(8, 0, 0, 0); float c = a(8, 0, 0, 1); if (r*r + c*c < 1) return false; if (!nearlyEqual(atan2(c, r), M_PI/8)) return false; a(8, 0, 0, 0) = 0; a(8, 0, 0, 1) = 0; a(8, 0, 0, 2) = 0; a(8, 0, 0, 3) = 0; ComplexMultiply::apply(a, a, true); return Stats(a).maximum() < 0.0001; }
void CombatFighter::EnterSpace() { if (m_leader) { m_proximity_token = m_pathing_engine->GetProximityDB().Insert( this, Stats().m_type == INTERCEPTOR ? INTERCEPTOR_FLAG : BOMBER_FLAG, EmpireFlag(m_empire_id)); } SimpleVehicle::reset(); SimpleVehicle::setMaxForce(3.0 * 9.0); SimpleVehicle::setMaxSpeed(Stats().m_speed); // TODO: setMass() if (m_leader) { CombatObjectPtr base = m_base.lock(); assert(base); SimpleVehicle::setPosition(base->position()); SimpleVehicle::regenerateOrthonormalBasis(base->forward(), base->up()); SimpleVehicle::setSpeed(CombatFighter::maxSpeed()); } else { SimpleVehicle::regenerateOrthonormalBasis(m_formation->Leader().forward(), m_formation->Leader().up()); SimpleVehicle::setPosition(GlobalFormationPosition()); SimpleVehicle::setSpeed(0.0); } if (m_leader) m_proximity_token->UpdatePosition(position()); m_mission_queue.push_front(FighterMission(FighterMission::NONE)); Listener().FighterLaunched(shared_from_this()); }
Connection::Connection(const char* hn, int pt, const char* pw, float to){ hostname=hn; port=pt; password=pw; timeout=to; //currentSong=EMPTY_SONG; // Or something elapsedSong=0; status=Status(); stats=Stats(); lock_flag=false; // Perhaps zero out some other variables } // Tested
bool Pet::UpdateAllStats() { for (int i = STAT_STRENGTH; i < MAX_STATS; ++i) UpdateStats(Stats(i)); UpdateAllMaxPower(); UpdateAllResistances(); UpdateAttackPowerAndDamage(); UpdateAttackPowerAndDamage(true); UpdateManaRegen(); UpdateSpellPower(); return true; }
int main() { int i {0}; double x {0.0}; std::map<int,Stats> data; while (std::cin >> i >> x) { if (data.find(i) == data.end()) data.emplace(std::make_pair(i, Stats())); data[i].add(x); } for (const auto& values: data) { Stats stats = values.second; std::cout << values.first << " " << stats.avg() << " " << stats.min() << " " << stats.max() << std::endl; } return 0; }
void Player::UpdateManaRegen() { float Intellect = GetStat(STAT_INTELLECT); // Mana regen from spirit and intellect float power_regen = sqrt(Intellect) * OCTRegenMPPerSpirit(); // Apply PCT bonus from SPELL_AURA_MOD_POWER_REGEN_PERCENT aura on spirit base regen power_regen *= GetTotalAuraMultiplierByMiscValue(SPELL_AURA_MOD_POWER_REGEN_PERCENT, POWER_MANA); // Mana regen from SPELL_AURA_MOD_POWER_REGEN aura float power_regen_mp5 = GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_POWER_REGEN, POWER_MANA) / 5.0f; // Get bonus from SPELL_AURA_MOD_MANA_REGEN_FROM_STAT aura AuraList const& regenAura = GetAurasByType(SPELL_AURA_MOD_MANA_REGEN_FROM_STAT); for (AuraList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i) { Modifier* mod = (*i)->GetModifier(); power_regen_mp5 += GetStat(Stats(mod->m_miscvalue)) * (*i)->GetModifierValue() / 500.0f; } // Bonus from some dummy auras AuraMap const& mAuras = GetAuras(); for (AuraMap::const_iterator itr = mAuras.begin(); itr != mAuras.end(); ++itr) { // Aspect of the Viper if (itr->second->GetId() == 34074) { power_regen_mp5 += itr->second->GetModifier()->m_amount * Intellect / 500.0f; // Add regen bonus from level in this dummy power_regen_mp5 += getLevel() * 35 / 100; } // Improved Water Shield (Totem of the Thunderhead) if (itr->second->GetId() == 34318) { power_regen_mp5 += 0.4;//itr->second->GetSpellProto()->EffectMiscValue[1]; } } // Set regen rate in cast state apply only on spirit based regen int32 modManaRegenInterrupt = GetTotalAuraModifier(SPELL_AURA_MOD_MANA_REGEN_INTERRUPT); if (modManaRegenInterrupt > 100) modManaRegenInterrupt = 100; SetStatFloatValue(PLAYER_FIELD_MOD_MANA_REGEN_INTERRUPT, power_regen_mp5 + power_regen * modManaRegenInterrupt / 100.0f); SetStatFloatValue(PLAYER_FIELD_MOD_MANA_REGEN, power_regen_mp5 + power_regen); }
bool Pet::UpdateAllStats() { for (int i = STAT_STRENGTH; i < MAX_STATS; ++i) UpdateStats(Stats(i)); for(int i = POWER_MANA; i < MAX_POWERS; ++i) UpdateMaxPower(Powers(i)); for (int i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) UpdateResistances(i); UpdateAttackPowerAndDamage(); UpdateAttackPowerAndDamage(true); UpdateManaRegen(); UpdateSpellPower(); return true; }
void StatsCalculator::compute(NormalVector &normals, StatsVector &statsVector, const PointVector &points, const IntImage &indexImage) { assert(indexImage.rows > 0 && indexImage.cols > 0 && "StatsCalculator: indexImage has zero size"); assert(points.size() > 0 && "StatsCalculator: points has zero size"); // HAKKE in order to avoid an annoying warning if(indexImage.rows > 0 && indexImage.cols > 0) { assert(1); } if(statsVector.size() != points.size()) statsVector.resize(points.size()); if(normals.size() != points.size()) normals.resize(points.size()); Normal dummyNormal = Normal::Zero(); std::fill(statsVector.begin(), statsVector.end(), Stats()); std::fill(normals.begin(), normals.end(), dummyNormal); }
bool Inpaint::test() { // A circular mask Image mask(99, 97, 1, 1); Expr::X x; Expr::Y y; mask.set(Select((x-50)*(x-50) + (y-50)*(y-50) < 30*30, 0, 1)); // Patch a corrupted region of a smooth ramp Image im(99, 97, 1, 3); im.set((x + y)/100.0f); Image corrupted = im.copy(); Noise::apply(corrupted.region(40, 40, 0, 0, 20, 20, 1, 3), -20, 20); Image after = Inpaint::apply(corrupted, mask); if (!nearlyEqual(im, after)) return false; // There should be no strong gradients in the output GradMag::apply(after); after = after.region(10, 10, 0, 0, 80, 80, 1, 3); Stats s(after); if (s.maximum() > 0.01) return false; // Smooth a hole within a noise image im.set(0); Noise::apply(im, 0, 1); after = Inpaint::apply(im, mask); // Statistics within the hole should be mean of 0.5, zero variance s = Stats(after.region(45, 45, 0, 0, 10, 10, 1, 3)); if (s.mean() < 0.45 || s.mean() > 0.55 || !nearlyEqual(s.variance(), 0)) return false; // Outside the hole should be untouched for (int c = 0; c < 3; c++) { im.channel(c) *= mask; after.channel(c) *= mask; } return nearlyEqual(im, after); }