No looting if you attack units in same faction
This commit is contained in:
parent
68455a819f
commit
3cae2559c7
|
@ -2573,31 +2573,34 @@ void UnitUpdater::damage(Unit *attacker, const AttackSkillType* ast, Unit *attac
|
||||||
attacker->incKills(attacked->getTeam());
|
attacker->incKills(attacked->getTeam());
|
||||||
}
|
}
|
||||||
|
|
||||||
int lootableResourceCount = attacked->getType()->getLootableResourceCount();
|
// Perform resource looting iff the attack is from a different faction
|
||||||
for(int i = 0; i < lootableResourceCount; i++) {
|
if(attacker->getFaction() != attacked->getFaction()) {
|
||||||
LootableResource resource = attacked->getType()->getLootableResource(i);
|
int lootableResourceCount = attacked->getType()->getLootableResourceCount();
|
||||||
|
for(int i = 0; i < lootableResourceCount; i++) {
|
||||||
|
LootableResource resource = attacked->getType()->getLootableResource(i);
|
||||||
|
|
||||||
// Figure out how much of the resource in question that the attacked unit's faction has
|
// Figure out how much of the resource in question that the attacked unit's faction has
|
||||||
int factionTotalResource = 0;
|
int factionTotalResource = 0;
|
||||||
for(int j = 0; j < attacked->getFaction()->getTechTree()->getResourceTypeCount(); j++) {
|
for(int j = 0; j < attacked->getFaction()->getTechTree()->getResourceTypeCount(); j++) {
|
||||||
if(attacked->getFaction()->getTechTree()->getResourceType(j) == resource.getResourceType()) {
|
if(attacked->getFaction()->getTechTree()->getResourceType(j) == resource.getResourceType()) {
|
||||||
factionTotalResource = attacked->getFaction()->getResource(j)->getAmount();
|
factionTotalResource = attacked->getFaction()->getResource(j)->getAmount();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(resource.isNegativeAllowed()) {
|
if(resource.isNegativeAllowed()) {
|
||||||
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -resource.getLossPercentage() * factionTotalResource);
|
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -resource.getLossPercentage() * factionTotalResource);
|
||||||
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -resource.getLossValue());
|
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -resource.getLossValue());
|
||||||
attacker->getFaction()->incResourceAmount(resource.getResourceType(), resource.getAmountPercentage() * factionTotalResource);
|
attacker->getFaction()->incResourceAmount(resource.getResourceType(), resource.getAmountPercentage() * factionTotalResource);
|
||||||
attacker->getFaction()->incResourceAmount(resource.getResourceType(), resource.getAmountValue());
|
attacker->getFaction()->incResourceAmount(resource.getResourceType(), resource.getAmountValue());
|
||||||
}
|
}
|
||||||
// Can't take more resources than the faction has, otherwise we end up in the negatives
|
// Can't take more resources than the faction has, otherwise we end up in the negatives
|
||||||
else {
|
else {
|
||||||
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -min(resource.getLossPercentage() * factionTotalResource, factionTotalResource));
|
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -min(resource.getLossPercentage() * factionTotalResource, factionTotalResource));
|
||||||
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -min(resource.getLossValue(), factionTotalResource));
|
attacked->getFaction()->incResourceAmount(resource.getResourceType(), -min(resource.getLossValue(), factionTotalResource));
|
||||||
attacker->getFaction()->incResourceAmount(resource.getResourceType(), min(resource.getAmountPercentage() * factionTotalResource, factionTotalResource));
|
attacker->getFaction()->incResourceAmount(resource.getResourceType(), min(resource.getAmountPercentage() * factionTotalResource, factionTotalResource));
|
||||||
attacker->getFaction()->incResourceAmount(resource.getResourceType(), min(resource.getAmountValue(), factionTotalResource));
|
attacker->getFaction()->incResourceAmount(resource.getResourceType(), min(resource.getAmountValue(), factionTotalResource));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue