diff options
author | megamage <none@none> | 2009-09-02 18:40:27 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-09-02 18:40:27 -0500 |
commit | 09974f0598ddac3bc9ae954cd4ff68950c280cb5 (patch) | |
tree | 54ffc537cac5e07c9126c049919001e8e9d1eda2 | |
parent | 4d94b923ef1d8af84b9a078f9aa7d021abe86d04 (diff) |
[8455] Do not disband guild, if guild ranks are not defined for that guild, removed obsolete comment.
Do not allow to delete guild rank, when there are only 5 or less ranks defined.
Signed-off-by: Triply <triply@getmangos.com>
--HG--
branch : trunk
-rw-r--r-- | src/game/Guild.cpp | 10 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 2 | ||||
-rw-r--r-- | src/game/Unit.cpp | 14 |
3 files changed, 18 insertions, 8 deletions
diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp index 4086c525d57..207b91d8dd1 100644 --- a/src/game/Guild.cpp +++ b/src/game/Guild.cpp @@ -299,7 +299,11 @@ bool Guild::LoadRanksFromDB(uint32 GuildId) QueryResult *result = CharacterDatabase.PQuery("SELECT rid,rname,rights,BankMoneyPerDay FROM guild_rank WHERE guildid = '%u' ORDER BY rid ASC", GuildId); if(!result) - return false; + { + sLog.outError("Guild %u has broken `guild_rank` data, creating new...",GuildId); + CreateDefaultGuildRanks(0); + return true; + } bool broken_ranks = false; @@ -343,7 +347,6 @@ bool Guild::LoadRanksFromDB(uint32 GuildId) CharacterDatabase.PExecute("DELETE FROM guild_rank WHERE guildid='%u'", GuildId); for(size_t i = 0; i < m_Ranks.size(); ++i) { - // guild_rank.rid always store rank+1 std::string name = m_Ranks[i].name; uint32 rights = m_Ranks[i].rights; CharacterDatabase.escape_string(name); @@ -643,7 +646,8 @@ void Guild::AddRank(const std::string& name_,uint32 rights, uint32 money) void Guild::DelRank() { - if(m_Ranks.empty()) + // client won't allow to have less than GUILD_RANKS_MIN_COUNT ranks in guild + if(m_Ranks.size() <= GUILD_RANKS_MIN_COUNT) return; // delete lowest guild_rank diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index bb6ed39a9a6..fe13946fe40 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -333,7 +333,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleNoImmediateEffect, //277 SPELL_AURA_MOD_ABILITY_AFFECTED_TARGETS implemented in spell::settargetmap &Aura::HandleAuraModDisarm, //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon &Aura::HandleAuraInitializeImages, //279 SPELL_AURA_INITIALIZE_IMAGES - &Aura::HandleNoImmediateEffect, //280 SPELL_AURA_MOD_ARMOR_PENETRATION_PCT + &Aura::HandleNoImmediateEffect, //280 SPELL_AURA_MOD_TARGET_ARMOR_PCT implemented in Unit::CalcArmorReducedDamage &Aura::HandleNoImmediateEffect, //281 SPELL_AURA_MOD_HONOR_GAIN_PCT implemented in Player::RewardHonor &Aura::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT &Aura::HandleNoImmediateEffect, //283 SPELL_AURA_MOD_HEALING_RECEIVED implemented in Unit::SpellHealingBonus diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index eba87182585..8cd2fc5c0d6 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1615,6 +1615,7 @@ uint32 Unit::CalcArmorReducedDamage(Unit* pVictim, const uint32 damage, SpellEnt { uint32 newdamage = 0; float armor = pVictim->GetArmor(); + // Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura armor += GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL); @@ -1679,19 +1680,24 @@ uint32 Unit::CalcArmorReducedDamage(Unit* pVictim, const uint32 damage, SpellEnt armor -= armorPen; } - if (armor < 0.0f) armor=0.0f; + // Ignore enemy armor by SPELL_AURA_MOD_TARGET_ARMOR_PCT + //armor *= 1.0f - GetTotalAuraModifier(SPELL_AURA_MOD_ARMOR_PENETRATION_PCT) / 100.0f; + + if (armor < 0.0f) + armor = 0.0f; float levelModifier = getLevel(); - if ( levelModifier > 59 ) + if (levelModifier > 59) levelModifier = levelModifier + (4.5f * (levelModifier-59)); float tmpvalue = 0.1f * armor / (8.5f * levelModifier + 40); tmpvalue = tmpvalue/(1.0f + tmpvalue); - if(tmpvalue < 0.0f) + if (tmpvalue < 0.0f) tmpvalue = 0.0f; - if(tmpvalue > 0.75f) + if (tmpvalue > 0.75f) tmpvalue = 0.75f; + newdamage = uint32(damage - (damage * tmpvalue)); return (newdamage > 1) ? newdamage : 1; |