MCPcopy Create free account
hub / github.com/TurningWheel/Barony / getDamageTableMultiplier

Method getDamageTableMultiplier

src/entity.cpp:31050–31265  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31048}
31049
31050real_t Entity::getDamageTableMultiplier(Entity* my, Stat& myStats, DamageTableType damageType, int* magicResistance, int* outNumSources)
31051{
31052 real_t damageMultiplier = damagetables[myStats.type][damageType];
31053 if ( myStats.getEffectActive(EFF_SHADOW_TAGGED) )
31054 {
31055 if ( myStats.type == LICH || myStats.type == LICH_FIRE || myStats.type == LICH_ICE
31056 || myStats.type == DEVIL )
31057 {
31058 return 1.5; // rough average.
31059 }
31060 else
31061 {
31062 return 1.0;
31063 }
31064 }
31065
31066 std::vector<real_t> allBonuses;
31067
31068 //messagePlayer(0, "%f", damageMultiplier);
31069 if ( myStats.type == GOATMAN && myStats.getEffectActive(EFF_DRUNK) )
31070 {
31071 allBonuses.push_back(-.2);
31072 }
31073 if ( damageType == DamageTableType::DAMAGE_TABLE_MAGIC
31074 && myStats.type == BUGBEAR && myStats.defending && myStats.shield )
31075 {
31076 damageMultiplier = 0.1;
31077 }
31078 int followerResist = my ? my->getFollowerBonusDamageResist() : 0;
31079 if ( followerResist != 0 )
31080 {
31081 allBonuses.push_back(-followerResist / 100.0);
31082 }
31083
31084 if ( damageType == DAMAGE_TABLE_MAGIC )
31085 {
31086 if ( myStats.getEffectActive(EFF_RATION_HERBAL) )
31087 {
31088 allBonuses.push_back(-0.2);
31089 }
31090
31091 if ( myStats.getEffectActive(EFF_GUARD_SPIRIT) || myStats.getEffectActive(EFF_DIVINE_GUARD) )
31092 {
31093 real_t guardBonus = -0.1 * myStats.getEffectActive(EFF_GUARD_SPIRIT);
31094 guardBonus = std::min(guardBonus, -0.025 * myStats.getEffectActive(EFF_DIVINE_GUARD));
31095 allBonuses.push_back(guardBonus);
31096 }
31097 }
31098
31099 if ( damageType != DAMAGE_TABLE_MAGIC )
31100 {
31101 if ( myStats.type == MYCONID )
31102 {
31103 if ( !myStats.helmet && myStats.getEffectActive(EFF_GROWTH) > 1 )
31104 {
31105 int bonus = std::min(3, myStats.getEffectActive(EFF_GROWTH) - 1);
31106 allBonuses.push_back(-0.05 * bonus);
31107 }

Callers

nothing calls this directly

Calls 4

statGetINTFunction · 0.85

Tested by

no test coverage detected