aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/LootHandler.cpp
diff options
context:
space:
mode:
authorVincent_Michael <Vincent_Michael@gmx.de>2013-03-03 00:44:29 +0100
committerVincent_Michael <Vincent_Michael@gmx.de>2013-03-03 00:44:29 +0100
commit85d96c5a3f6ec30240638356afea360acb8fb160 (patch)
tree918edb0e61286b90398cb7dab028004f91d360ea /src/server/game/Handlers/LootHandler.cpp
parent37101c82d3b06431726d15d33439744c756c4664 (diff)
parent6be5bc71eb667536d5f289aa8723766a912105da (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/game/Handlers/LootHandler.cpp')
-rw-r--r--src/server/game/Handlers/LootHandler.cpp52
1 files changed, 3 insertions, 49 deletions
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index 5955d0fb29c..596c317b3b0 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -286,61 +286,15 @@ void WorldSession::DoLootRelease(uint64 lguid)
}
else if (loot->isLooted() || go->GetGoType() == GAMEOBJECT_TYPE_FISHINGNODE)
{
- // GO is mineral vein? so it is not removed after its looted
- if (go->GetGoType() == GAMEOBJECT_TYPE_CHEST)
- {
- uint32 go_min = go->GetGOInfo()->chest.minSuccessOpens;
- uint32 go_max = go->GetGOInfo()->chest.maxSuccessOpens;
-
- // only vein pass this check
- if (go_min != 0 && go_max > go_min)
- {
- float amount_rate = sWorld->getRate(RATE_MINING_AMOUNT);
- float min_amount = go_min*amount_rate;
- float max_amount = go_max*amount_rate;
-
- go->AddUse();
- float uses = float(go->GetUseCount());
-
- if (uses < max_amount)
- {
- if (uses >= min_amount)
- {
- float chance_rate = sWorld->getRate(RATE_MINING_NEXT);
-
- int32 ReqValue = 175;
- LockEntry const* lockInfo = sLockStore.LookupEntry(go->GetGOInfo()->chest.lockId);
- if (lockInfo)
- ReqValue = lockInfo->Skill[0];
- float skill = float(player->GetSkillValue(SKILL_MINING))/(ReqValue+25);
- double chance = pow(0.8*chance_rate, 4*(1/double(max_amount))*double(uses));
- if (roll_chance_f((float)(100*chance+skill)))
- {
- go->SetLootState(GO_READY);
- }
- else // not have more uses
- go->SetLootState(GO_JUST_DEACTIVATED);
- }
- else // 100% chance until min uses
- go->SetLootState(GO_READY);
- }
- else // max uses already
- go->SetLootState(GO_JUST_DEACTIVATED);
- }
- else // not vein
- go->SetLootState(GO_JUST_DEACTIVATED);
- }
- else if (go->GetGoType() == GAMEOBJECT_TYPE_FISHINGHOLE)
+ if (go->GetGoType() == GAMEOBJECT_TYPE_FISHINGHOLE)
{ // The fishing hole used once more
go->AddUse(); // if the max usage is reached, will be despawned in next tick
- if (go->GetUseCount() >= urand(go->GetGOInfo()->fishinghole.minSuccessOpens, go->GetGOInfo()->fishinghole.maxSuccessOpens))
- {
+ if (go->GetUseCount() >= go->GetGOValue()->FishingHole.MaxOpens)
go->SetLootState(GO_JUST_DEACTIVATED);
- }
else
go->SetLootState(GO_READY);
}
- else // not chest (or vein/herb/etc)
+ else
go->SetLootState(GO_JUST_DEACTIVATED);
loot->clear();