Skip to content

Features/orbital bombardment#4475

Open
Haecriver wants to merge 8 commits into
CombatExtended-Continued:Developmentfrom
Haecriver:features/orbital-bombardment
Open

Features/orbital bombardment#4475
Haecriver wants to merge 8 commits into
CombatExtended-Continued:Developmentfrom
Haecriver:features/orbital-bombardment

Conversation

@Haecriver
Copy link
Copy Markdown
Contributor

Additions

Describe new functionality added by your code, e.g.

  • Mortar can fire on orbital tiles

Testing

Check tests you have performed:

  • Compiles without warnings
  • Game runs without errors
  • Playtested

@Haecriver
Copy link
Copy Markdown
Contributor Author

Haecriver commented Feb 23, 2026

Savegame to quickly test it

CE Orbital test.zip

And here's a example of a orbital mortar

<Defs>
    <CombatExtended.AmmoSetDef>
		<defName>AmmoSet_OrbitalMortarShell</defName>
		<label>orbital mortar shells</label>
		<ammoTypes>
			<!-- Overrides vanilla artillery shell -->
			<Shell_HighExplosive>Bullet_OrbitalMortarShell_HE</Shell_HighExplosive>
		</ammoTypes>
		<isMortarAmmoSet>true</isMortarAmmoSet>
		<!-- This ammoset functions as the mortar generic due to hardcoded references -->
		<modExtensions>
			<li Class="CombatExtended.GenericLabelExtension">
				<genericLabel>mortar shells</genericLabel>
			</li>
		</modExtensions>
	</CombatExtended.AmmoSetDef>

    <ThingDef ParentName="BaseExplosiveBullet">
		<thingClass>CombatExtended.ProjectileCE_Explosive</thingClass>
        <defName>Bullet_OrbitalMortarShell_HE</defName>
		<graphicData>
			<shaderType>TransparentPostLight</shaderType>
            <texPath>Things/Projectile/Mortar/HE</texPath>
			<graphicClass>Graphic_Single</graphicClass>
		</graphicData>
		<projectile Class="CombatExtended.ProjectilePropertiesCE">
			<speed>0</speed>
			<soundHitThickRoof>Artillery_HitThickRoof</soundHitThickRoof>
			<soundImpactAnticipate>MortarRound_PreImpact</soundImpactAnticipate>
			<soundAmbient>MortarRound_Ambient</soundAmbient>
			<flyOverhead>true</flyOverhead>
			<dropsCasings>false</dropsCasings>
			<gravityFactor>5</gravityFactor>
			<shellingProps>
				<iconPath>Things/WorldObjects/Munitions/Mortar</iconPath>
				<tilesPerTick>0.06</tilesPerTick>
				<range>300</range>
			</shellingProps>

            <damageDef>Bomb</damageDef>
			<damageAmountBase>156</damageAmountBase>
			<explosionRadius>2.5</explosionRadius>
			<flyOverhead>true</flyOverhead>
			<soundExplode>MortarBomb_Explode</soundExplode>
			<applyDamageToExplosionCellsNeighbors>true</applyDamageToExplosionCellsNeighbors>
			<ai_IsIncendiary>true</ai_IsIncendiary>
			<preExplosionSpawnSingleThingDef>Filth_BlastMark</preExplosionSpawnSingleThingDef>
		</projectile>
        <label>81mm mortar shell (HE)</label>
		<comps>
			<li Class="CombatExtended.CompProperties_Fragments">
				<fragments>
					<Fragment_Large>16</Fragment_Large>
					<Fragment_Small>25</Fragment_Small>
				</fragments>
			</li>
		</comps>
		<modExtensions>
			<li Class="CombatExtended.GenericLabelExtension">
				<genericLabel>mortar shell (HE)</genericLabel>
			</li>
		</modExtensions>
	</ThingDef>

  <ThingDef Name="OrbitalBaseArtilleryBuilding" ParentName="BuildingBase" Abstract="True">
    <thingClass>Building_TurretGun</thingClass>
    <drawerType>MapMeshAndRealTime</drawerType>
    <drawHighlight>true</drawHighlight>
    <drawHighlightOnlyForHostile>true</drawHighlightOnlyForHostile>
    <graphicData>
      <graphicClass>Graphic_Single</graphicClass>
      <texPath>Things/Building/Security/TurretMortar_Base</texPath>
      <drawSize>(4,4)</drawSize>
      <damageData>
        <rect>(0.38,0.2,0.56375,0.8)</rect>
        <cornerTL>Damage/Corner</cornerTL>
      </damageData>
      <shadowData>
        <offset>(-0.13,-0.87,-0.1)</offset>
        <volume>(0.5,0.4,1.05)</volume>
      </shadowData>
    </graphicData>
    <minifiedDef>MinifiedThing</minifiedDef>
    <altitudeLayer>Building</altitudeLayer>
    <hasInteractionCell>True</hasInteractionCell>
    <interactionCellOffset>(0,0,-1)</interactionCellOffset>
    <stealable>false</stealable>
    <size>(2,2)</size>
    <passability>PassThroughOnly</passability>
    <pathCost>50</pathCost>
    <fillPercent>0.4</fillPercent>
    <thingCategories>
      <li>BuildingsSecurity</li>
    </thingCategories>
    <stuffCategories>
      <li>Metallic</li>
    </stuffCategories>
    <tickerType>Normal</tickerType>
    <terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
    <designationCategory>Security</designationCategory>
    <costStuffCount>75</costStuffCount>
    <constructionSkillPrerequisite>5</constructionSkillPrerequisite>
    <costList>
      <Steel>150</Steel>
      <ComponentIndustrial>6</ComponentIndustrial>
    </costList>
    <inspectorTabs>
      <li>ITab_Shells</li>
    </inspectorTabs>
    <comps>
      <li Class="CompProperties_Forbiddable"/>
      <li Class="CompProperties_Mannable">
        <manWorkType>Violent</manWorkType>
        <planetLayerWhitelist>
          <li>Surface</li>
        </planetLayerWhitelist>
      </li>
    </comps>
    <statBases>
      <MaxHitPoints>180</MaxHitPoints>
      <Flammability>0.7</Flammability>
      <WorkToBuild>2000</WorkToBuild>
      <Mass>30</Mass>
      <Beauty>-20</Beauty>
    </statBases>
    <building>
      <turretBurstWarmupTime>4.0</turretBurstWarmupTime>
      <turretBurstCooldownTime>28.0</turretBurstCooldownTime>
      <buildingTags>
        <li>Artillery</li>
      </buildingTags>
    </building>
    <placeWorkers>
      <li>PlaceWorker_NotUnderRoof</li>
      <li>PlaceWorker_TurretTop</li>
      <li>PlaceWorker_PreventInteractionSpotOverlap</li>
    </placeWorkers>
    <researchPrerequisites>
      <li>Mortars</li>
    </researchPrerequisites>
    <uiIconScale>1.1</uiIconScale>
  </ThingDef>

    <ThingDef ParentName="BaseArtilleryBuilding">
        <defName>Orbital_Turret_Mortar</defName>
        <label>orbital mortar</label>
        <description>test.</description>
        <costListForDifficulty>
            <difficultyVar>classicMortars</difficultyVar>
            <invert>true</invert>
            <costList>
                <ComponentIndustrial>6</ComponentIndustrial>
                <ReinforcedBarrel>1</ReinforcedBarrel>
            </costList>
            <costStuffCount>50</costStuffCount>
        </costListForDifficulty>
        <designationHotKey>Misc4</designationHotKey>
        <terrainAffordanceNeeded>Heavy</terrainAffordanceNeeded>
        <building>
            <turretGunDef>Orbital_Mortar_Gun</turretGunDef>
            <buildingTags>
                <li>Artillery_BaseDestroyer</li>
                <li>Artillery_MannedMortar</li>
            </buildingTags>
        </building>
        <uiIconPath>Things/Building/Security/TurretMortar_MenuIcon</uiIconPath>
        <uiIconScale>0.9</uiIconScale>
        <comps>
            <li Class="CompProperties_Mannable">
                <manWorkType>Violent</manWorkType>
            </li>
        </comps>
    </ThingDef>

    <ThingDef ParentName="BaseArtilleryWeapon">
        <defName>Orbital_Mortar_Gun</defName>
        <label>orbital mortar</label>
        <description>Test</description>
        <recoilPower>3</recoilPower>
        <graphicData>
            <texPath>Things/Building/Security/TurretMortar_Top</texPath>
        </graphicData>
        <weaponTags>
            <li>Artillery_BaseDestroyer</li>
        </weaponTags>
        <statBases>
            <SightsEfficiency>0.5</SightsEfficiency>
		</statBases>
        <verbs>
           <li Class="CombatExtended.VerbPropertiesCE">
                <verbClass>CombatExtended.Verb_ShootMortarCE</verbClass>
                <forceNormalTimeSpeed>false</forceNormalTimeSpeed>
                <hasStandardCommand>true</hasStandardCommand>
                <defaultProjectile>Bullet_81mmMortarShell_HE</defaultProjectile>
                <warmupTime>5.5</warmupTime>
                <minRange>32</minRange>
                <range>700</range>
                <burstShotCount>1</burstShotCount>
                <soundCast>Mortar_LaunchA</soundCast>
                <muzzleFlashScale>16</muzzleFlashScale>
                <circularError>1</circularError>
                <indirectFirePenalty>0.2</indirectFirePenalty>
                <targetParams>
                    <canTargetLocations>true</canTargetLocations>
                </targetParams>
            </li>
        </verbs>
        <comps>
            <li Class="CombatExtended.CompProperties_Charges">
				<chargeSpeeds>
					<li>30</li>
					<li>50</li>
					<li>70</li>
					<li>90</li>
				</chargeSpeeds>
			</li>
            <li Class="CombatExtended.CompProperties_AmmoUser">
				<magazineSize>1</magazineSize>
				<reloadTime>5</reloadTime>
				<ammoSet>AmmoSet_OrbitalMortarShell</ammoSet>
			</li>
            <li Class="CombatExtended.CompProperties_OrbitalTurret">
                <interLayerPrecisionBonusFactor>20</interLayerPrecisionBonusFactor>
                <isMarkMandatory>false</isMarkMandatory>
            </li>
        </comps>
        <building>
            <fixedStorageSettings>
                <filter>
                    <categories>
                        <li>MortarShells</li>
                    </categories>
                </filter>
            </fixedStorageSettings>
            <defaultStorageSettings>
                <filter>
                    <categories>
                        <li>MortarShells</li>
                    </categories>
                    <disallowedThingDefs>
                        <li>Shell_Firefoam</li>
                        <li>Shell_AntigrainWarhead</li>
                    </disallowedThingDefs>
                </filter>
            </defaultStorageSettings>
        </building>
    </ThingDef>
</Defs>

@github-actions
Copy link
Copy Markdown

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-22319790602.zip

@github-actions github-actions Bot added the Download in Comments This PR has a zipfile download available. label Feb 23, 2026
@Haecriver Haecriver force-pushed the features/orbital-bombardment branch from 6696972 to 782cccc Compare March 2, 2026 20:02
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 2, 2026

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-22593402666.zip

@Haecriver Haecriver force-pushed the features/orbital-bombardment branch from 782cccc to bd8ad19 Compare March 21, 2026 14:24
@github-actions
Copy link
Copy Markdown

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-23381666708.zip

@Haecriver Haecriver marked this pull request as ready for review March 21, 2026 15:25
@Haecriver Haecriver requested review from a team as code owners March 21, 2026 15:25
@github-actions
Copy link
Copy Markdown

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-23382679147.zip

@Haecriver Haecriver force-pushed the features/orbital-bombardment branch from 8cfdc17 to fa5f1d1 Compare May 1, 2026 12:32
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-25214372588.zip

@Haecriver Haecriver force-pushed the features/orbital-bombardment branch from fa5f1d1 to 4ed72d9 Compare May 8, 2026 13:04
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-25557426654.zip

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

You can download the rebuilt assembly for this PR here: https://combatextended.lp-programming.com/CombatExtended-25557626524.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Download in Comments This PR has a zipfile download available.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant