Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int32 ACombatManager::RollSpellDamage(FCharacterData CasterData, FSpell SpellBeingCast)
- {
- int32 finalRoll = 0;
- int32 casterLevel = CasterData.CharacterBaseStats.Level;
- int32 modifiedMax = 0;
- int32 modifiedMin = 0;
- // only modify if stat should be increased (ie. a multiple of levels/max increase or level is high enough for mod to have happened previously)
- if (casterLevel % SpellBeingCast.SpellLevelsPerMaxIncrease == 0 || (casterLevel >= SpellBeingCast.SpellLevelsPerMaxIncrease))
- {
- int32 modCasterLevel = FMath::FloorToInt(casterLevel / SpellBeingCast.SpellLevelsPerMaxIncrease);
- // clamp to avoid spell growing over level cap, and so max cannot be zero
- modifiedMax = FMath::Clamp(((SpellBeingCast.SpellLevelsPerMaxIncrease / modCasterLevel) * SpellBeingCast.SpellMaxIncreaseAmount),
- SpellBeingCast.SpellBaseMax,
- (((SpellBeingCast.SpellLevelsPerMaxIncrease / SpellBeingCast.SpellLevelCap) * SpellBeingCast.SpellMaxIncreaseAmount) + SpellBeingCast.SpellBaseMax));
- }
- else
- {
- modifiedMax = SpellBeingCast.SpellBaseMax;
- }
- // clamp to avoid spell growing over level cap, and so min cannot be zero
- if (casterLevel % SpellBeingCast.SpellLevelsPerMinIncrease == 0 || (casterLevel >= SpellBeingCast.SpellLevelsPerMinIncrease))
- {
- int32 modCasterLevel = FMath::FloorToInt(casterLevel / SpellBeingCast.SpellLevelsPerMinIncrease);
- // clamp to avoid spell growing over level cap, and so min cannot be zero
- modifiedMax = FMath::Clamp(((SpellBeingCast.SpellLevelsPerMinIncrease / modCasterLevel) * SpellBeingCast.SpellMinIncreaseAmount),
- SpellBeingCast.SpellBaseMin,
- (((SpellBeingCast.SpellLevelsPerMinIncrease / SpellBeingCast.SpellLevelCap) * SpellBeingCast.SpellMinIncreaseAmount) + SpellBeingCast.SpellBaseMin));
- }
- else
- {
- modifiedMin = SpellBeingCast.SpellBaseMin;
- }
- // roll damage with modified min/max
- finalRoll = FMath::RandRange(modifiedMin, modifiedMax);
- return finalRoll;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement