Part Explosion
When certain parts like the reactor are destroyed they explode and damage their surrounding. See the table below for what may be a complete list.
Contents
Formula
The damage applied to each tile from the center of explosion is determined by the following equation:
wherein : is the distance from the center of explosion, : is the RadiusVsOperational, : is the DamageVsOperationalFalloff, and : is the DamageVsOperationalPerTile.
Armor explosion reduction
Cosmoteer 0.12.x to 0.14.4
Armor can reduce the damage effects of explosions by 75% such that only 25% would reach the parts behind it. For example the first armor layer would reduce the damage from a reactor explosion to 423. A second layer would reduce it to 73.
Borrowed from Reactor these tables demonstrate armor blocking / damage fall off in addition to the graph and screenshot to the right.
Upon death the reactor will deal 4000 damage to parts in a 6 tile radius, 2000 against structure in a 4 tile, and a 50% chance of fire in a 6 tile radius.
Explosion damage:
Distance | -5 | -4 | -3 | -2 | -1 | 0 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
5 | 199 | 318 | 318 | 199 | ||||||||
4 | 199 | 568 | 838 | 982 | 982 | 838 | 568 | 199 | ||||
3 | 893 | 1674 | 2128 | 2418 | 2564 | 2564 | 2418 | 2128 | 1674 | 893 | ||
2 | 568 | 1133 | 1643 | 2056 | 2300 | 2300 | 2056 | 1643 | 1133 | 568 | ||
1 | 199 | 838 | 1461 | 2056 | 2586 | 2946 | 2946 | 2586 | 2056 | 1461 | 838 | 199 |
0 | 318 | 982 | 1643 | 2300 | 2946 | 2946 | 2300 | 1643 | 982 | 318 | ||
0 | 318 | 982 | 1643 | 2300 | 2946 | 2946 | 2300 | 1643 | 982 | 318 | ||
1 | 199 | 838 | 1461 | 2056 | 2586 | 2946 | 2946 | 2586 | 2056 | 1461 | 838 | 199 |
2 | 568 | 1133 | 1643 | 2056 | 2300 | 2300 | 2056 | 1643 | 1133 | 568 | ||
3 | 893 | 1674 | 2128 | 2418 | 2564 | 2564 | 2418 | 2128 | 1674 | 893 | ||
4 | 199 | 568 | 838 | 982 | 982 | 838 | 568 | 199 | ||||
5 | 199 | 318 | 318 | 199 |
Explosion damage blocked by one 2x1 armor layer:
Distance | -5 | -4 | -3 | -2 | -1 | 0 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
5 | 49 | 79 | 79 | 49 | ||||||||
4 | 49 | 142 | 209 | 245 | 245 | 209 | 142 | 49 | ||||
3 | 49 | 175 | 283 | 365 | 410 | 410 | 365 | 283 | 175 | 49 | ||
2 | 142 | 283 | 410 | 514 | 575 | 575 | 514 | 410 | 283 | 142 | ||
1 | 49 | 209 | 365 | 514 | 646 | 2945 | 2945 | 646 | 514 | 365 | 209 | 49 |
0 | 79 | 245 | 410 | 575 | 2945 | 2945 | 575 | 410 | 245 | 79 | ||
0 | 79 | 245 | 410 | 575 | 2945 | 2945 | 575 | 410 | 245 | 79 | ||
1 | 49 | 209 | 365 | 514 | 646 | 2945 | 2945 | 646 | 514 | 365 | 209 | 49 |
2 | 142 | 283 | 410 | 514 | 575 | 575 | 514 | 410 | 283 | 142 | ||
3 | 49 | 175 | 283 | 365 | 410 | 410 | 365 | 283 | 175 | 49 | ||
4 | 49 | 142 | 209 | 245 | 245 | 209 | 142 | 49 | ||||
5 | 49 | 79 | 79 | 49 |
Explosion damage blocked by two 2x1 armor layers:
Distance | -5 | -4 | -3 | -2 | -1 | 0 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
5 | 49 | 19 | 19 | 49 | ||||||||
4 | 49 | 142 | 209 | 61 | 61 | 209 | 142 | 49 | ||||
3 | 49 | 175 | 283 | 365 | 102 | 102 | 365 | 283 | 175 | 49 | ||
2 | 142 | 283 | 102 | 514 | 575 | 575 | 514 | 102 | 283 | 142 | ||
1 | 49 | 209 | 365 | 514 | 646 | 2945 | 2945 | 646 | 514 | 365 | 209 | 49 |
0 | 19 | 61 | 102 | 575 | 2945 | 2945 | 575 | 102 | 61 | 19 | ||
0 | 19 | 61 | 102 | 575 | 2945 | 2945 | 575 | 102 | 61 | 19 | ||
1 | 49 | 209 | 365 | 514 | 646 | 2945 | 2945 | 646 | 514 | 365 | 209 | 49 |
2 | 142 | 283 | 102 | 514 | 575 | 575 | 514 | 102 | 283 | 142 | ||
3 | 49 | 175 | 283 | 365 | 102 | 102 | 365 | 283 | 175 | 49 | ||
4 | 49 | 142 | 209 | 61 | 61 | 209 | 142 | 49 | ||||
5 | 49 | 19 | 19 | 49 |
Cosmoteer 0.14.5+
Armor can reduce the damage effects of explosions by 50% and 1000 EMP batteries per tile.
Per-Component Damage Table
Below is a table of damage per component as of 0.15.1a (9/10/2019):
name | factor | operationaldamage | operationalradius | structuredamage | structureradius |
---|---|---|---|---|---|
ammo_factory | AmmoStorage | 25000 | 4 | 5000 | 3 |
ammo_storage | AmmoStorage | 25000 | 4 | 5000 | 3 |
cannon_large | AmmoPrereq | 25000 | 4.5 | 5000 | 3.5 |
cannon_med | AmmoPrereq | 10000 | 4 | 2000 | 3 |
explosive_charge | 25000 | 2.5 | |||
flak_cannon_large | AmmoPrereq | 25000 | 4.5 | 5000 | 3.5 |
ion_beam_prism | BeamEmitter | 45000 | 5 | 10000 | 3 |
mine_factory | MineStorage | 15000 | 6 | 5000 | 5 |
missile_factory_he | MissileStorage | 30000 | 6 | 10000 | 5 |
missile_factory_nuke | MissileStorage | 200000 | 1 | ||
missile_launcher_he | 10000 | 5 | 3333 | 4 | |
missile_launcher_mine | MineStorage | 15000 | 5 | ||
missile_launcher_nuke | MissileStorage | 200000 | 1 | ||
missile_storage | MissileStorage | 30000 | 5 | ||
missile_storage | MissileStorage | 200000 | 1 | ||
missile_storage | MissileStorage | 15000 | 5 | 5000 | 4 |
railgun_loader | AmmoPrereq | 25000,5000 | 4.5,3.5 | ||
reactor_small | 90000 | 6 | 20000 | 4 |
PowerShell script to generate the above from the cosmoteer\data\ships\terran directory.
$reset = {
$start,$edmg,$prereq = $null,$null,$null,$null
$edmgs=@()
}
$outputobject = {
[pscustomobject]@{
file=$file.BaseName
prereq=. {if($prereq -ne $null) {$prereq.Trim()}}
edmgs=$edmgs
start=$start.Trim()
}
}
$objs=foreach($file in (gci -Recurse -Include *.txt)){
$lines=gc $file
. $reset
foreach($line in $lines){
switch -Regex ($line) {
"DestroyedEffects" {
if($start){
. $outputobject
. $reset
}
$start=$line
}
'FactorHitEffectsWith\s*=\s*(.*)' { $prereq = $matches[1] }
'ExplosiveDamage' {
if($edmg) {
$edmgs+=$edmg
}
$edmg = [pscustomobject]@{
totaldmg=$null
radius=$null
delay = $null
fire=$null
ndmg = $null
operation=$null
struct = $null
friend = $null
}
}
'TotalDamage\s*=\s*(\d+\.?\d*)' { if($edmg) {$edmg.totaldmg = [double]$matches[1] }}
'Radius\s*=\s*(\d+\.?\d*)' { if($edmg) {$edmg.radius = [double]$matches[1] }}
'Delay\s*=\s*(\d*\.?\d*)' { if($edmg) {$edmg.delay = [double]$matches[1] }}
'FireChancePerNDamage\s*=\s*(\d+\.?\d*)' { if($edmg) {$edmg.fire = [double]$matches[1] }}
'NDamage\s*=\s*(\d+\.?\d*)' { if($edmg) {$edmg.ndmg = [double]$matches[1] }}
'OperationalHealth\s*=\s*(true|false)' { if($edmg) {$edmg.operation = [convert]::ToBoolean($matches[1]) }}
'StructuralHealth\s*=\s*(true|false)' { if($edmg) {$edmg.struct = [convert]::ToBoolean($matches[1]) }}
'Friendlies\s*=\s*(true|false)' { if($edmg) {$edmg.friend = [convert]::ToBoolean($matches[1]) }}
}
}
if($start){
if($edmg){$edmgs+=$edmg}
. $outputobject
$start=$false
}
}
$withdmg=$objs |?{$_.edmgs} |?{$_.edmgs |?{$_.totaldmg}}
$out=$withdmg | %{
$struct=$_.edmgs|?{$_.struct}
$op = $_.edmgs|?{$_.operation}
[pscustomobject]@{
name=$_.file
factor=$_.prereq
structuredamage=($struct | select -ExpandProperty totaldmg) -join ","
structureradius=($struct | select -ExpandProperty radius) -join ","
operationaldamage=($op | select -ExpandProperty totaldmg) -join ","
operationalradius=($op | select -ExpandProperty radius) -join ","
}
}
#$header=$out[0] | gm |?{$_.membertype -eq "NoteProperty"} | select -ExpandProperty name
$header=@("name","factor","operationaldamage","operationalradius","structuredamage","structureradius")
@"
{| class="wikitable sortable"
|-
! $($header -join " !! ")`n
"@ + (($out | %{
"|-"
"| $($l=$_;($header| %{ if(($l.$_)){$l.$_} else {''}}) -join " || ")"
}
) -join "`n")+@"
`n|}
"@ | clip