Orbital Strike - KonradHeinser/EBSGFramework GitHub Wiki

This ability comp allows you to create bombardment style abilities with a bunch of options for customization. The only hard requirement for this comp is that it uses a center marker that is using the EBSGFramework.CustomizeableOrbitalStrike thingClass. This framework has a bunch of premade ones that you can take a look at in OrbitalCenters.xml, or if you want to make one with a different color you can copy one of those for your own. Your basic ability comp stuff should look something like this:

<!--This particular centerMarker doesn't create a visual marker at the center-->
        <comps>
            <li Class="EBSGFramework.CompProperties_OrbitalStrike">
                <centerMarker>EBSG_OrbitalCenter_Colorless</centerMarker>
            </li>
        </comps>

These are the tags you can use to customize how the bombardment functions in general:

  • preImpactSound : SoundDef played while falling. The vanilla equivalent of this def would be Bombardment_PreImpact
  • count : Default (30) : How many to drop
  • interval : Default (18) : The ticks between drops
  • warmupTicks : Default (60) : Delay between cast finish and first drop starting
  • targetRadius : Default (25) : Area that strikes can land in
  • projectileTexPath : Default (Things/Projectile/Bullet_Big) : The appearance of the projectile
  • projectileColor : Default (255,255,255) : The color used on the projectile graphic. If set to (1, 1, 1, 0) the graphic shouldn't appear

These tags alter the more direct impacts of the explosions:

  • damageDef : Default (Bomb) : The DamageDef to use
  • explosionRadius : Default (6~8) : The radius of the explosion
  • damageAmount : Default (-1) : Defaults to whatever the DamageDef says to use
  • armorPenetration : Default (-1) : Defaults to whatever the DamageDef says to use
  • damageFalloff : Default (False) : When true, explosions deal less damage to those further from the center
  • fireChance : Default (1) : Chance to set any flammable things that survived the explosion on fire
  • extraGasType : Default (None) : The type of gas to create post-explosion. The options are None, Smoke, Tox, and Rot

These final tags alter the less direct impacts of the explosions, like sounds and things created:

  • explosionSound : The sound the explosion makes. If left blank or not included, the damageDef determines the explosionSound

  • screenShakeFactor : Default (0) : Shake that screen

  • postExplosionThingWater : Creates thing over water when the explosion overlaps with water

  • postExplosionThing : The ThingDef that is generated after explosion

  • postExplosionThingChance : Default (0) : The chances of the thing being created, with 1 being 100%

  • postExplosionSpawnThingCount : Default (1) : Number of things created

  • preExplosionThing : The ThingDef that is generated before the explosion

  • preExplosionThingChance : Default (0) : The chances of the thing being created, with 1 being 100%

  • preExplosionSpawnThingCount : Default (1) : Number of things created

Note: The orbital strike saves the data when it is started, so if you save mid-bombardment to make a change, you'll need to start a new bombardment to see the changes


These three examples create different types of bombardment type abilities. The first one is a more normal bombardment that drops bombs on the area. The second one drops a bunch of smoke bombs that don't deal damage, but instead create a rapidly expanding cloud of smoke. The third one removes the appearance of a bombardment entirely by using the clear/colorless marker and making the projectiles invisible, and instead starts fires randomly in a small area:

    <AbilityDef>
        <defName>Bombardment_Normal</defName>
        <label>bombardment</label>
        <verbProperties>
            <verbClass>Verb_CastAbility</verbClass>
            <range>30</range>
            <warmupTime>0.5</warmupTime>
            <requireLineOfSight>False</requireLineOfSight>
            <targetParams>
                <canTargetLocations>true</canTargetLocations>
                <canTargetSelf>false</canTargetSelf>
                <canTargetPawns>true</canTargetPawns>
                <canTargetBuildings>true</canTargetBuildings>
                <canTargetPlants>true</canTargetPlants>
              </targetParams>
        </verbProperties>
        <comps>
            <li Class="EBSGFramework.CompProperties_OrbitalStrike">
                <centerMarker>EBSG_OrbitalCenter_Red</centerMarker>
                <fireChance>0</fireChance>
                <damageFalloff>True</damageFalloff>
            </li>
        </comps>
        <description>.</description>
        <iconPath>Things/Mote/SpeechSymbols/Speech</iconPath>
        <cooldownTicksRange>60</cooldownTicksRange>
    </AbilityDef>

    <AbilityDef>
        <defName>Bombardment_Smoke</defName>
        <label>bombardment (smoke)</label>
        <verbProperties>
            <verbClass>Verb_CastAbility</verbClass>
            <range>30</range>
            <warmupTime>0.5</warmupTime>
            <requireLineOfSight>False</requireLineOfSight>
            <targetParams>
                <canTargetLocations>true</canTargetLocations>
                <canTargetSelf>false</canTargetSelf>
                <canTargetPawns>true</canTargetPawns>
                <canTargetBuildings>true</canTargetBuildings>
                <canTargetPlants>true</canTargetPlants>
              </targetParams>
        </verbProperties>
        <comps>
            <li Class="EBSGFramework.CompProperties_OrbitalStrike">
                <centerMarker>EBSG_OrbitalCenter_White</centerMarker>
                <projectileTexPath>Things/Projectile/LauncherShot</projectileTexPath>
                <extraGasType>Smoke</extraGasType> <!--This creates the smoke-->
                <damageDef>Smoke</damageDef> <!--This changes explosion color and prevents damage-->
                <fireChance>0</fireChance>
            </li>
        </comps>
        <description>.</description>
        <iconPath>Things/Mote/SpeechSymbols/Speech</iconPath>
        <cooldownTicksRange>60</cooldownTicksRange>
    </AbilityDef>

    <AbilityDef>
        <defName>Bombardment_FireStarter</defName>
        <label>bombardment (firestarter)</label>
        <verbProperties>
            <verbClass>Verb_CastAbility</verbClass>
            <range>30</range>
            <warmupTime>0.5</warmupTime>
            <requireLineOfSight>False</requireLineOfSight>
            <targetParams>
                <canTargetLocations>true</canTargetLocations>
                <canTargetSelf>false</canTargetSelf>
                <canTargetPawns>true</canTargetPawns>
                <canTargetBuildings>true</canTargetBuildings>
                <canTargetPlants>true</canTargetPlants>
              </targetParams>
        </verbProperties>
        <comps>
            <li Class="EBSGFramework.CompProperties_OrbitalStrike">
                <centerMarker>EBSG_OrbitalCenter_Clear</centerMarker>
                <projectileColor>(1,1,1,0)</projectileColor> <!--Removes the visual portion of the projectile-->
                <damageAmount>1</damageAmount>
                <fireChance>1</fireChance>
                <explosionRadius>3~4</explosionRadius>
            </li>
        </comps>
        <description>.</description>
        <iconPath>Things/Mote/SpeechSymbols/Speech</iconPath>
        <cooldownTicksRange>60</cooldownTicksRange>
    </AbilityDef>
⚠️ **GitHub.com Fallback** ⚠️