Machine gun, for military use, good damage, slightly lower rate, increased value, greater firing distance
machine_gun
Part : /BASE_PART
{
NameKey = "Parts/MachineGun"
IconNameKey = "Parts/MachineGunIcon"
IDString = machine_gun
EditorGroup = "Weapons"
DescriptionKey = "Parts/MachineGunDesc"
Cost = 3000
AIValue = 1
TypeCategories = [weapon, weapon_using_ammo]
Size = [1, 2]
PhysicalRect = [0, 1, 1, 1]
SaveRect = &PhysicalRect
SelectionPriority = 1
SelectionTypeByRotation = true
MaxHealth = 3000
PenetrationResistance = 10
ProhibitAbove = 1
AllowedDoorLocations
[
[-1, 1]
[1, 1]
[0, 2]
]
EditorIcon
{
Texture
{
File = "icon.png"
SampleMode = Linear
}
Size = [21.33, 42.66]
}
BlueprintSprites
[
{
File = "blueprints.png"
Size = [1, 2]
}
]
PowerUIStats
{
Min = .333
Ideal = .666
}
CrewUIStats
{
Min = 0
Ideal = 1
}
Components
{
PowerToggle
{
Type = UIToggle
ToggleID = "on_off"
DefaultToggleValue = 1
RequiredForWholePartOperation = true
ToggledOnChoices = [1]
}
BatteryStorage
{
Type = AmmoConsumer
AmmoType = battery
MaxAmmo = 4000
LowConsumeJobPriority = &/TERRAN_PRIORITIES/PointDefense_LowConsume
HighConsumeJobPriority = &/TERRAN_PRIORITIES/PointDefense_HighConsume
EmptyConsumeJobPriority = &/TERRAN_PRIORITIES/PointDefense_EmptyConsume
JobUnassignThreshold = 1000000// Effectively unassignable.
RequiredForWholePartOperation = true
AmmoDesireToggle = PowerToggle
ReceiveAmmoMediaEffects = &/EFFECT_PREFABS/PowerDeliver
}
Graphics
{
Type = Graphics
Location = [.5, 1.5]
Floor
{
Layer = "floors"
DamageLevels
[
{
File = "floor.png"
Size = [1, 1]
}
{
File = "floor_33.png"
Size = [1, 1]
}
{
File = "floor_66.png"
Size = [1, 1]
}
]
}
OperationalDoodad
{
Layer = "doodads_high"
Offset = [0, -0.5]
DamageLevels
[
{
File = "doodads_on.png"
Size = [1, 2]
}
{
File = "doodads_on_33.png"
Size = [1, 2]
}
{
File = "doodads_on_66.png"
Size = [1, 2]
}
]
}
NonOperationalDoodad
{
Layer = "doodads_high"
Offset = [0, -0.5]
DamageLevels
[
{
File = "doodads_off.png"
Size = [1, 2]
}
{
File = "doodads_off_33.png"
Size = [1, 2]
}
{
File = "doodads_off_66.png"
Size = [1, 2]
}
]
}
OperationalLighting
{
Layer = "lights_add"
DamageLevels
[
{
File = "lights.png"
Size = [1, 1]
}
]
}
Walls
{
Layer = "walls"
DamageLevels
[
{
File = "walls.png"
Size = [1, 1]
}
{
File = "walls_33.png"
Size = [1, 1]
}
{
File = "walls_66.png"
Size = [1, 1]
}
]
}
Roof
{
Layer = "roofs"
DamageLevels
[
{
File = "roof.png"
Size = [1, 1]
}
{
File = "roof_33.png"
Size = [1, 1]
}
{
File = "roof_66.png"
Size = [1, 1]
}
]
}
OperationalRoofWindows
{
Layer = "roof_windows"
DamageLevels
[
{
File = "roof_window.png"
Size = [1, 1]
}
{
File = "roof_window_33.png"
Size = [1, 1]
}
{
File = "roof_window_66.png"
Size = [1, 1]
}
]
}
NonOperationalRoofWindows = &OperationalRoofWindows
}
Turret
{
Type = TurretWeapon
Location = [.5, 0.89]// Relative to upper-left corner of unrotated part.
Rotation = -90d// Relative to unrotated part.
FireInterval = .25
FireDelay = 0
FiringArc = 135d
RotateSpeed = 180d
FireThresholdAngle = 1d
SpawnLoc = [0.6875, 0]
AmmoStorage = BatteryStorage
AmmoUsed = 40
TargetSearchTriesPerFrame = 1
AIFirepowerRating = 20
Emitter
{
Type = Bullet
Bullet = &<machine_gun_shot.txt>
Spread = [-2d, 2d]
}
}
FireEffect
{
Type = TriggeredEffects
ChainedTo = Turret
Location = [0.6875, 0]
AnchorMediaEffects = true
MediaEffects
[
&/PARTICLES/PointDefenseShoot
: /SOUNDS/AudioExterior
{
Sound = "point_defense_shoot.wav"
Volume = .55
SpeedVariation = .25
}
]
}
TurretGraphics
{
Type = Graphics
ChainedTo = Turret
Location = [-0.109375, 0]
Rotation = 90d
OperationalDoodad
{
Layer = "turrets"
DamageLevels
[
{
File = "turret_on.png"
Size = [1, 2]
}
{
File = "turret_on_33.png"
Size = [1, 2]
}
{
File = "turret_on_66.png"
Size = [1, 2]
}
]
}
NonOperationalDoodad
{
Layer = "turrets"
DamageLevels
[
{
File = "turret_off.png"
Size = [1, 2]
}
{
File = "turret_off_33.png"
Size = [1, 2]
}
{
File = "turret_off_66.png"
Size = [1, 2]
}
]
}
}
BatterySprites
{
Type = AmmoSprites
Location = [.5, 1.5]
AmmoStorage = BatteryStorage
Layer = "doodads_low"
HasZeroAmmoSprite = true
AmmoLevels
[
{
File = "battery0.png"
Size = [1, 1]
}
{
File = "battery1.png"
Size = [1, 1]
}
]
}
OperationEffects
{
Type = OperationEffects
Location = [.5, 1.5]
BecameOperationalMediaEffects = &/EFFECT_PREFABS/PowerOn
BecameNonOperationalMediaEffects = &/EFFECT_PREFABS/PowerOff
}
DestroyedEffects
{
Type = DeathEffects
MediaEffects = &/EFFECT_PREFABS/SmallPartDestroyed
Location = [.5, 1.5]
}
Indicators
{
Type = IndicatorSprites
Location = [.5, 1.5]
Layer = "indicators"
Indicators
[
// Turned off.
{
Source = PowerToggle
AtlasSprite
{
File = &/INDICATORS/PowerOff
Size = [1, 1]
}
}
// Out of power.
{
Source = BatteryStorage
AtlasSprite
{
File = &/INDICATORS/NoPower
Size = [1, 1]
}
}
]
}
}
}
machine_gun_shot
ID = machine_gun_shot
Range = 100
IdealRange = 70
Speed = 120
Components
{
Physics
{
Type = CirclePhysics
Radius = 0.01
Density = 0.1
}
Death
{
Type = DeathByLifetime
// Lifetime will be auto-calculated based on range and speed.
}
Sprite
{
Type = Sprite
RenderBucket = Lower
Sprite
{
Texture = "point_defense_shot.png"
Size = [8, .5]
}
}
Hit
{
Type = PenetratingHit
PhysicsComponent = Physics
Penetration = .5
PenetrationSpeed = 20
HitShield
{
HitEffects
[
{
Type = ShieldDamage
Damage = 100
}
{
Type = Impulse;
Impulse = 1;
}
]
MediaEffects = &../HitOperational/MediaEffects
}
HitOperational
{
HitEffects
[
{
Type = PartDamage
Damage = 150
}
{
Type = Impulse;
Impulse = 1;
}
]
MediaEffects
[
&/PARTICLES/MedBulletHit
&/PARTICLES/MedBulletSmoke
&/PARTICLES/MedBulletFlash
: /SOUNDS/AudioExterior
{
Sound = "med_bullet_hit.wav"
Volume = .4
SpeedVariation = .4
}
: /SHAKES/Shake
{
ShakeAmount = .05
Duration = .5
}
]
}
HitStructural
{
HitEffects
[
{
Type = PartDamage
Damage = 100
}
{
Type = Impulse;
Impulse = 1;
}
]
MediaEffects
[
&/PARTICLES/MedBulletHitStruct
: /SOUNDS/AudioExterior
{
Sound = "med_bullet_hit_structure.wav"
Volume = .3
SpeedVariation = .4
}
]
}
PenetratingOperational
{
HitEffects
[
{
Type = PartDamage
Damage = 100
}
{
Type = PartFire
FireChance = .05
}
]
MediaEffects
[
&/PARTICLES/MedBulletPenetrate
&/PARTICLES/MedBulletFlash
]
}
PenetratingStructural
{
HitEffects
[
{
Type = PartAreaDamage
DamageVsOperationalPerTile = 2000
RadiusVsOperational = 2
DamageVsStructurePerTile = 7200
RadiusVsStructure = 3
}
{
Type = Impulse;
Impulse = 5;
}
]
}
FinishedPenetratingOperational = &PenetratingOperational
FinishedPenetratingStructural = &PenetratingStructural
}
}