Revised spectralizing cost of spells and weapons:

- Spell costs now directly correlate to their magicka costs.
- Increased importance of base damage and tempering for weapons.
This commit is contained in:
Eddoursul 2021-11-29 21:42:09 +01:00
parent 846a1ebaa8
commit ba912c86ab
2 changed files with 24 additions and 6 deletions

BIN
SKSE/Plugins/fs.dll (Stored with Git LFS)

Binary file not shown.

View File

@ -47,7 +47,8 @@ namespace PhasmalistScripts {
papyrusEnchantment::GetNthEffectMagicEffect(ench, i), papyrusEnchantment::GetNthEffectMagicEffect(ench, i),
papyrusEnchantment::GetNthEffectMagnitude(ench, i), papyrusEnchantment::GetNthEffectMagnitude(ench, i),
papyrusEnchantment::GetNthEffectArea(ench, i), papyrusEnchantment::GetNthEffectArea(ench, i),
papyrusEnchantment::GetNthEffectDuration(ench, i)); papyrusEnchantment::GetNthEffectDuration(ench, i)
);
} }
return result * magicWeight; return result * magicWeight;
} }
@ -56,6 +57,8 @@ namespace PhasmalistScripts {
if (!spell) { if (!spell) {
return 0.0; return 0.0;
} }
/*
* // Sum of effect costs
float result = 0; float result = 0;
for (int i = papyrusSpell::GetNumEffects(spell) - 1; i >= 0; i--) { for (int i = papyrusSpell::GetNumEffects(spell) - 1; i >= 0; i--) {
result += getMagicEffectStrength( result += getMagicEffectStrength(
@ -64,7 +67,22 @@ namespace PhasmalistScripts {
papyrusSpell::GetNthEffectDuration(spell, i), papyrusSpell::GetNthEffectDuration(spell, i),
papyrusSpell::GetNthEffectArea(spell, i)); papyrusSpell::GetNthEffectArea(spell, i));
} }
return result * magicWeight; */
/*
* // The costliest effect
int iCostliestEffect = papyrusSpell::GetCostliestEffectIndex(spell);
float result = getMagicEffectStrength(
papyrusSpell::GetNthEffectMagicEffect(spell, iCostliestEffect),
papyrusSpell::GetNthEffectMagnitude(spell, iCostliestEffect),
papyrusSpell::GetNthEffectDuration(spell, iCostliestEffect),
papyrusSpell::GetNthEffectArea(spell, iCostliestEffect)
);
*/
// 2.0.10: Switch to flat magicka correlation
return papyrusSpell::GetMagickaCost(spell) * 1.5;
} }
float getAdditionalExtendDataStrength(InventoryEntryData * itemStack, float physicalStrength) { float getAdditionalExtendDataStrength(InventoryEntryData * itemStack, float physicalStrength) {
@ -88,7 +106,7 @@ namespace PhasmalistScripts {
//item has been tempered //item has been tempered
ExtraHealth * health = DYNAMIC_CAST(extraData->GetByType(kExtraData_Health), BSExtraData, ExtraHealth); ExtraHealth * health = DYNAMIC_CAST(extraData->GetByType(kExtraData_Health), BSExtraData, ExtraHealth);
if (health) { if (health) {
strength += physicalStrength * (health->health - 1.0) * count; strength += physicalStrength * (health->health - 1.0) * 20 * count;
} }
} }
} }
@ -102,7 +120,7 @@ namespace PhasmalistScripts {
if (itemStack->type->IsWeapon()) { if (itemStack->type->IsWeapon()) {
TESObjectWEAP * asWeapon = static_cast<TESObjectWEAP*>(itemStack->type); TESObjectWEAP * asWeapon = static_cast<TESObjectWEAP*>(itemStack->type);
if (asWeapon) { if (asWeapon) {
float baseDmg = papyrusWeapon::GetBaseDamage(asWeapon); float baseDmg = papyrusWeapon::GetBaseDamage(asWeapon) * 1.5;
float speed = papyrusWeapon::GetSpeed(asWeapon); float speed = papyrusWeapon::GetSpeed(asWeapon);
physicalStrength = baseDmg * speed; physicalStrength = baseDmg * speed;
strength += physicalStrength; strength += physicalStrength;