FANDOM


Hey, I have something new. Warframe presents algebra problems. And one thinks through them. To demonstrate this process and the use of PowerShell, I've embedded my thought process into a here-string.

In the code, you can see PowerShell working behind the scenes. And, in the shell, you can see why Shattering Impact fares poorly versus high level Bombards.

Copy the code and run it to see the result in a PowerShell. I recommend saving it as .ps1 file and running that. You might need to enable scripts.

set-executionpolicy remotesigned


This is my first demonstration of any armor calculations in PowerShell. So, those can be reused elsewhere.

I've migrated to PowerShell 6 and Notepad++ versus Windows PowerShell ISE and PowerShell 5.1.

You can learn more about PowerShell 6 here:

Here's the script:

# Armor Scratch.ps1
# A story written in Powershell. 

# Functions

# Armor Calculation
# Credit
#   Title		Armor
#   URL			https://warframe.fandom.com/wiki/Armor
#   Date		September 14, 2019
#   Look for	Enemy Armor
# Example usage for a level 125 Bombard:
# armorCalc 500 4 125
# 11536.07
function armorCalc ($enemyBaseArmor, $enemyBaseLevel, $enemyLevel)
{
	$numerator   = [Math]::pow(($enemyLevel - $enemyBaseLevel), 1.75)
	$denominator = 200

	$result      = $enemyBaseArmor * (1+($numerator/$denominator))

	# Credit
	#   Title		[Math] in PowerShell
	#   URL			https://www.madwithpowershell.com/2013/10/math-in-powershell.html
	#   Date		September 14, 2019
	#   Look for	MidpointRounding
	$roundingMode = [System.MidpointRounding]::AwayFromZero

	# Round(Decimal, Int32, MidpointRounding)
	[Math]::Round($result, 2, $roundingMode)
}


# EnemyArmor
# I'm producing the number you multiply your damage by.
# I'm not producing the damage resistance. 
# This follows the convention in my 
#     Damage Buff Calculator.ps1
#     which treats every term as a damage multiplier. 
# Credit
#   Title		Armor
#   URL			https://warframe.fandom.com/wiki/Armor
#   Date		September 14, 2019
#   Look for	Armor Class Modifiers
# enemyArmor 100 
# 0.75
function enemyArmor ($amountOfEnemyArmor, $vsArmorClass = 0)
{
	$netArmor = $amountOfEnemyArmor * ( 1 - $vsArmorClass)
	$damageReduction = $netArmor / ($netArmor + 300)

	$result = 1 - $damageReduction 
	
	$roundingMode = [System.MidpointRounding]::AwayFromZero
	[Math]::Round($result, 4, $roundingMode)
}


# Output

@"
What is the effect of Shattering Impact on a Bombard?
Why is it good versus a Lancer? 

What is a Lancer's base armor value? 
$($lancerBaseArmor = 100; $lancerBaseArmor)

How much base armor does Shattering Impact remove? 
$($shatteringImpact = 6; $shatteringImpact)

How many hits does it take to remove a Lancer's armor? 
$($lancerHits = [Math]::Ceiling($lancerBaseArmor/$shatteringImpact); $lancerHits)

What is a Bombard's base armor? 
$($bombardBaseArmor = 500; $bombardBaseArmor)

How many hits does it take to remove the Bombard's armor? 
$($bombardHits = [Math]::Ceiling($bombardBaseArmor/$shatteringImpact); $bombardHits)

It takes a certain amount of hits to completely remove the Lancer armor. 
How much Bombard base armor remains after the same number of hits to the Bombard? 
$($bombardRemainingArmor = $bombardBaseArmor-($shatteringImpact*$lancerHits); $bombardRemainingArmor)

How much armor does a level 125 Bombard have? 
$($bombardArmor125 = armorCalc 500 4 125; $bombardArmor125)

Continuing with the Lancer comparison: 
What effect would the attack have on the Bombard's armor? 
$($bombardArmorAftermath = armorCalc $bombardRemainingArmor 4 125; $bombardArmorAftermath)

How much damage am I doing versus the reduced armor? 
$(enemyArmor $bombardArmorAftermath)

How much damage am I doing versus the standard armor? 
$(enemyArmor $bombardArmor125)

After calculating, I see that these numbers are rounded to roughly 0.03.
So, that's why Shattering Impact works against Lancers (whose base armor is 100) and not Bombards (whose base armor is 500).
This suggests using another mod in place of Shattering Impact versus tough enemies where "tough enemies" means they'll be dead from damage before you affect their damage resistance.
I've found that Condition Overload and Reach represent a productive alternative.
You can still use Shattering Impact to tweak boss fights like versus thumpers and versus eidolons.
"@
Community content is available under CC-BY-SA unless otherwise noted.