Skip to content

Commit

Permalink
Add Protoss Stalwart unit
Browse files Browse the repository at this point in the history
  • Loading branch information
Ziktofel committed Jul 3, 2024
1 parent 0719b40 commit 3eb4185
Show file tree
Hide file tree
Showing 15 changed files with 338 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const int AP_Sticky_NUM_FACTIONS_PER_CLASS = 4;
const int AP_Sticky_NUM_UNITS = 30;

const int AP_Sticky_NUM_GATEWAY_UNITS = 21;
const int AP_Sticky_NUM_ROBO_UNITS = 9;
const int AP_Sticky_NUM_ROBO_UNITS = 10;
const int AP_Sticky_NUM_STARGATE_UNITS = 11;

const int AP_Sticky_BUILDING_GATEWAY = 0;
Expand Down Expand Up @@ -89,6 +89,7 @@ void initLists() {
roboTrainToUnitClass[6] = AP_Sticky_CLASS_IMMORTAL; // Vanguard
roboTrainToUnitClass[7] = AP_Sticky_CLASS_DISRUPTOR; // Reaver
roboTrainToUnitClass[8] = AP_Sticky_CLASS_DISRUPTOR; // Disruptor
roboTrainToUnitClass[9] = AP_Sticky_CLASS_IMMORTAL; // Stalwart

// stargate train ID -> class
stargateTrainToUnitClass[0] = AP_Sticky_CLASS_PHOENIX; // Phoenix
Expand Down Expand Up @@ -129,7 +130,7 @@ void initLists() {
abilityIndices[AP_Sticky_CLASS_ADEPT][AP_Sticky_FACTION_NERAZIM] = 18; // Dark Archon
abilityIndices[AP_Sticky_CLASS_ADEPT][AP_Sticky_FACTION_TALDARIM] = -1; // -
abilityIndices[AP_Sticky_CLASS_IMMORTAL][AP_Sticky_FACTION_AIUR] = 3; // Immortal
abilityIndices[AP_Sticky_CLASS_IMMORTAL][AP_Sticky_FACTION_PURIFIER] = -1; // -
abilityIndices[AP_Sticky_CLASS_IMMORTAL][AP_Sticky_FACTION_PURIFIER] = 9; // Stalwart
abilityIndices[AP_Sticky_CLASS_IMMORTAL][AP_Sticky_FACTION_NERAZIM] = 5; // Annihilator
abilityIndices[AP_Sticky_CLASS_IMMORTAL][AP_Sticky_FACTION_TALDARIM] = 6; // Vanguard
abilityIndices[AP_Sticky_CLASS_COLOSSUS][AP_Sticky_FACTION_AIUR] = -1; // -
Expand Down
16 changes: 16 additions & 0 deletions Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/AbilData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5917,6 +5917,10 @@
<Button DefaultButtonFace="AP_Disruptor" State="Restricted"/>
<Unit value="AP_Disruptor"/>
</InfoArray>
<InfoArray index="Train10" Time="55">
<Button DefaultButtonFace="AP_ImmortalPurifier" State="Restricted"/>
<Unit value="AP_ImmortalPurifier"/>
</InfoArray>
</CAbilTrain>
<CAbilTrain id="AP_RoboticsFacilityTrainRedirect" parent="AP_RoboticsFacilityTrain"/>
<CAbilWarpTrain id="AP_RoboticsFacilityWarpTrain">
Expand Down Expand Up @@ -6028,6 +6032,18 @@
</Charge>
<Button DefaultButtonFace="AP_Disruptor" State="Restricted"/>
</InfoArray>
<InfoArray index="Train10" Time="5" Unit="AP_ImmortalPurifier">
<Charge Location="Unit">
<CountMax value="1"/>
<CountStart value="1"/>
<CountUse value="1"/>
<Link value="WarpGateTrain"/>
<TimeStart value="30"/>
<TimeUse value="44"/>
<Flags index="EnableChargeTimeQueuing" value="1"/>
</Charge>
<Button DefaultButtonFace="AP_ImmortalPurifier" State="Restricted"/>
</InfoArray>
</CAbilWarpTrain>
<CAbilWarpTrain id="AP_RoboticsFacilityWarpTrainRedirect" parent="AP_RoboticsFacilityWarpTrain"/>
<CAbilEffectTarget id="AP_PhaseCannon">
Expand Down
102 changes: 102 additions & 0 deletions Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/ActorData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12544,6 +12544,108 @@
<Image value="Assets\Textures\Wireframe-Protoss-Immortal-Shield03.dds"/>
</WireframeShield>
</CActorUnit>
<CActorUnit id="AP_ImmortalPurifier" parent="GenericUnitBase" unitName="AP_ImmortalPurifier">
<Aliases value="_UnitLarge"/>
<Macros value="TerrainSquibAnimations"/>
<Macros value="PhysicsDeathsSwarmGround"/>
<Macros value="PhysicsDeathsVoidGround"/>
<On Terms="Behavior.Hallucination.On" Send="Create HallucinationBirthSoundMedium"/>
<On Terms="UnitDeathCustomize; ValidateUnit IsHallucination" Send="DeathCustomize Hallucination"/>
<On Terms="Abil.attack.ReadyStart" Send="AnimGroupApply Ready"/>
<On Terms="WeaponStart.*.AttackStart; WeaponTargetElevation GE 20.000000" Send="AnimBracketStart Attack Attack,Superior"/>
<On Terms="WeaponStart.*.AttackStart; WeaponTargetElevation LE -20.000000" Send="AnimBracketStart Attack Attack,Inferior"/>
<On Terms="WeaponStart.*.AttackStart" Send="AnimBracketStart Attack Attack"/>
<On Terms="WeaponStop.*.AttackStop" Send="AnimBracketStop Attack"/>
<On Terms="Abil.attack.ReadyStop" Send="AnimGroupRemove Ready"/>
<On Terms="Upgrade.AP_DarkProtoss.Add" Send="ModelSwap DarkImmortal"/>
<On Terms="UnitBirth; ValidateUnit AP_NoDarkProtoss" Send="ModelSwap DarkImmortal"/>
<On Terms="UnitDeathCustomize; ValidateUnit AP_NoDarkProtoss" Send="DeathCustomize DarkProtoss"/>
<On Terms="UnitHeightUpdate.*.Land" Send="Create AP_Immortal_Land"/>
<On Terms="Upgrade.AP_DarkProtoss.Add" Send="DeathCustomsEnablePhysics 0"/>
<On Terms="UnitBirth; ValidateUnit AP_NoDarkProtoss" Send="DeathCustomsEnablePhysics 0"/>
<On Terms="Behavior.AP_ImmortalOverload.On" Send="AnimBracketStart Cover Cover,Start Cover Cover,End"/>
<On Terms="Behavior.AP_ImmortalOverload.On" Send="Create AP_Immortal_Barrier_OnSound"/>
<On Terms="Behavior.AP_ImmortalOverload.Off" Send="AnimBracketStop Cover"/>
<On Terms="Behavior.AP_ImmortalOverload.Off" Send="Create AP_Immortal_Void_BarrierOffSound"/>
<On Terms="UnitBirth; ValidateUnit AP_HasPurifierProtoss" Send="TextureSelectById PurifierHackDiffuse"/>
<On Terms="Upgrade.AP_PurifierProtoss.Add" Send="TextureSelectById PurifierHackDiffuse"/>
<On Terms="Signal.*.PurifierHack" Send="TextureSelectById PurifierHackDiffuse"/>
<On Terms="UnitDeathCustomize; ValidateUnit AP_IsTerrazineShadow" Send="DeathCustomize Hallucination"/>
<On Terms="UnitDeathCustomize; ValidateUnit AP_HaveVoidShade" Send="DeathCustomize Shadow"/>
<On Terms="UnitDeathCustomize; ValidateUnit AP_HaveTerrazineShadow" Send="DeathCustomize Shadow"/>
<On Terms="Behavior.AP_ImmortalBarrierBase.On" Send="Create AP_Immortal_Barrier_OnSound"/>
<On Terms="Behavior.AP_ImmortalBarrierBase.On" Send="AnimBracketStart Cover Cover,Start Cover Cover,End"/>
<On Terms="Behavior.AP_ImmortalBarrierBase.Off" Send="Create AP_Immortal_Void_BarrierOffSound"/>
<On Terms="Behavior.AP_ImmortalBarrierBase.Off" Send="AnimBracketStop Cover"/>
<Model value="Immortal_Purifier_Collection"/>
<ModelFlags index="OutlineEmitter" value="1"/>
<BuildModel value="AP_Immortal_Purifier_Collection_WarpIn"/>
<DeathArray index="Normal" ModelLink="Immortal_Purifier_Collection_Death"/>
<DeathCustoms ModelLink="HallucinationDeath" SoundLink="Sentry_HallucinationDeathMedium" Name="Hallucination"/>
<DeathCustoms ModelLink="ProtossLargeUnitDeathLow" Name="AntiGravProtoss"/>
<DeathCustoms ModelLink="DarkImmortalDeath" Name="DarkProtoss"/>
<DeathCustoms ModelLink="Immortal_Purifier_Collection_DeathRagdoll" Name="RagdollBasic">
<BodySquibs Name="Basic" Model="ProtossRobotSquibDeathRagdoll"/>
<BodySquibs Name="BloodReduced" Model="ProtossRobotBloodSquibDeathRagdoll"/>
</DeathCustoms>
<DeathCustoms Name="RagdollSiegeTank" InheritsFrom="RagdollBasic"/>
<DeathCustoms Name="RagdollNuke" InheritsFrom="RagdollBasic">
<BodySquibs Name="Fire"/>
</DeathCustoms>
<DeathCustoms Name="RagdollFire" InheritsFrom="RagdollBasic">
<BodySquibs Name="Fire"/>
</DeathCustoms>
<DeathCustoms Name="RagdollAcid" InheritsFrom="RagdollBasic">
<BodySquibs Name="Acid"/>
</DeathCustoms>
<DeathCustoms Name="RagdollBaneling" InheritsFrom="RagdollBasic">
<BodySquibs Name="Acid"/>
</DeathCustoms>
<DeathCustoms Name="RagdollUltraUnburrow" InheritsFrom="RagdollBasic"/>
<DeathCustoms Name="RagdollOverkillDPRH" InheritsFrom="RagdollBasic"/>
<DeathCustoms Name="RagdollOverkillDOI" InheritsFrom="RagdollBasic"/>
<DeathCustoms Name="RagdollMidair" InheritsFrom="RagdollBasic"/>
<DeathCustoms>
<ModelLink value="DeathVoidShadowMedium"/>
<SoundLink value="ShadowUnit_DeathFX"/>
<VoiceLink value="ShadowUnit_DeathVox"/>
<Name value="Shadow"/>
</DeathCustoms>
<PlacementModel value="AP_Immortal_Purifier_Collection_Placement"/>
<PlacementSound value="Protoss_BuildingPlacementSmall"/>
<PortraitModel value="Immortal_Purifier_Collection_Portrait"/>
<TerrainSquibs>
<MovementDistance value="0.150000,0.150000"/>
<IdlePeriod value="0.100000,0.250000"/>
<RangeUp value="0.600000"/>
<RangeDown value="1.000000"/>
<AttachQuery Methods="AMFilterCenter"/>
<Visuals TerrainPhysicsMaterial="Water" ActorModel="TerrainSquibHarnessContinuous" ModelLink="WaterRippleImmortal"/>
</TerrainSquibs>
<WalkAnimMoveSpeed value="1.25"/>
<BarOffset value="80"/>
<BarWidth value="90"/>
<GroupIcon>
<Image value="Assets\Textures\wireframe-collection-purifier-Immortal.dds"/>
</GroupIcon>
<HeroIcon value="Assets\Textures\BTN-Unit-Protoss-Immortal.dds"/>
<LifeArmorIcon value="Assets\Textures\btn-upgrade-protoss-groundarmorlevel0.dds"/>
<SoundArray index="Ready" value="Immortal_Ready"/>
<SoundArray index="Help" value="Immortal_Help"/>
<SoundArray index="What" value="Immortal_What"/>
<SoundArray index="Yes" value="ImmortalVoid_Yes"/>
<SoundArray index="Attack" value="Immortal_Attack"/>
<SoundArray index="Pissed" value="ImmortalVoid_Pissed"/>
<UnitIcon value="Assets\Textures\btn-unit-collection-purifier-Immortal.dds"/>
<Wireframe>
<Image value="Assets\Textures\wireframe-collection-purifier-Immortal.dds"/>
</Wireframe>
<WireframeShield>
<Image value="Assets\Textures\wireframe-collection-purifier-Immortal-shield01.dds"/>
<Image value="Assets\Textures\wireframe-collection-purifier-Immortal-shield02.dds"/>
<Image value="Assets\Textures\wireframe-collection-purifier-Immortal-shield03.dds"/>
</WireframeShield>
</CActorUnit>
<CActorUnit id="AP_ImmortalBarrier" parent="GenericUnitBase" unitName="AP_ImmortalBarrier">
<Aliases value="_UnitLarge"/>
<Macros value="TerrainSquibAnimations"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2420,6 +2420,14 @@
<HotkeyAlias value="Immortal"/>
<Universal value="1"/>
</CButton>
<CButton id="AP_ImmortalPurifier">
<Icon value="Assets\Textures\btn-unit-collection-purifier-immortal.dds"/>
<AlertIcon value="Assets\Textures\btn-unit-collection-purifier-immortal.dds"/>
<Hotkey value="Button/Hotkey/Immortal"/>
<EditorCategories value="Race:Protoss"/>
<HotkeyAlias value="Immortal"/>
<Universal value="1"/>
</CButton>
<CButton id="AP_MorphBackToRoboticsFacility">
<Icon value="Assets\Textures\btn-building-protoss-roboticsfacility.dds"/>
<AlertIcon value="Assets\Textures\btn-building-protoss-roboticsfacility.dds"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14569,4 +14569,12 @@
<Model value="Assets\Effects\Terran\AirUnits_TeleportOut_COOP\AirUnits_TeleportOut_COOP.m3"/>
<EditorCategories value="Race:Terran"/>
</CModel>
<CModel id="AP_Immortal_Purifier_Collection_WarpIn" parent="Immortal_Purifier_Collection_WarpIn">
<ScaleMax value="0.750000,0.750000,0.750000"/>
<ScaleMin value="0.750000,0.750000,0.750000"/>
</CModel>
<CModel id="AP_Immortal_Purifier_Collection_Placement" parent="Immortal_Purifier_Collection_Placement">
<ScaleMax value="0.750000,0.750000,0.750000"/>
<ScaleMin value="0.750000,0.750000,0.750000"/>
</CModel>
</Catalog>
12 changes: 12 additions & 0 deletions Mods/ArchipelagoPlayer.SC2Mod/Base.SC2Data/GameData/UnitData.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12339,6 +12339,14 @@
</Fidget>
<TauntDuration index="Dance" value="5"/>
</CUnit>
<CUnit id="AP_ImmortalPurifier" parent="AP_Immortal">
<Name value="Unit/Name/AP_ImmortalPurifier"/>
<Description value="Button/Tooltip/AP_ImmortalPurifier"/>
<CardLayouts index="0">
<LayoutButtons Face="AP_ImmortalSingularityCharge" Type="Passive" Requirements="AP_HaveImmortalIncreasedRange" Row="1" Column="0"/>
<LayoutButtons Face="AP_ImmortalAdvancedTargetingMechanics" Type="Passive" Requirements="AP_HaveImmortalAirAttack" Row="1" Column="1"/>
</CardLayouts>
</CUnit>
<CUnit id="AP_ImmortalBarrier" parent="AP_Immortal">
<AbilArray Link="AP_ImmortalBarrierBase"/>
<BehaviorArray index="0" removed="1"/>
Expand Down Expand Up @@ -18738,6 +18746,7 @@
<LayoutButtons Face="AP_ImmortalAiur" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,3" Row="0" Column="1"/>
<LayoutButtons Face="AP_ImmortalShakuras" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,5" Row="0" Column="1"/>
<LayoutButtons Face="AP_ImmortalTaldarim" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,6" Row="0" Column="1"/>
<LayoutButtons Face="AP_ImmortalPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,9" Row="0" Column="1"/>
<LayoutButtons Face="AP_ColossusPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,2" Row="0" Column="2"/>
<LayoutButtons Face="AP_ColossusTaldarim" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,4" Row="0" Column="2"/>
<LayoutButtons Face="AP_Observer" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrainRedirect,1" Row="1" Column="0"/>
Expand All @@ -18764,6 +18773,7 @@
<CardLayouts CardId="Puri">
<LayoutButtons Face="AP_WarpPrism" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrain,0" Row="0" Column="0"/>
<LayoutButtons Face="AP_Observer" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrain,1" Row="1" Column="0"/>
<LayoutButtons Face="AP_ImmortalPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrain,9" Row="0" Column="1"/>
<LayoutButtons Face="AP_ColossusPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrain,2" Row="0" Column="2"/>
<LayoutButtons Face="AP_Disruptor" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityTrain,8" Row="1" Column="1"/>
<LayoutButtons Face="AP_AiurFaction" Type="Submenu" SubmenuCardId="Aiur" Row="0" Column="3"/>
Expand Down Expand Up @@ -18865,6 +18875,7 @@
<LayoutButtons Face="AP_ImmortalAiur" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,3" Row="0" Column="1"/>
<LayoutButtons Face="AP_ImmortalShakuras" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,5" Row="0" Column="1"/>
<LayoutButtons Face="AP_ImmortalTaldarim" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,6" Row="0" Column="1"/>
<LayoutButtons Face="AP_ImmortalPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,9" Row="0" Column="1"/>
<LayoutButtons Face="AP_Reaver" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,7" Row="1" Column="1"/>
<LayoutButtons Face="AP_Disruptor" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,8" Row="1" Column="1"/>
<LayoutButtons Face="AP_Observer" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrainRedirect,1" Row="1" Column="0"/>
Expand All @@ -18888,6 +18899,7 @@
<CardLayouts CardId="Puri">
<LayoutButtons Face="AP_WarpPrism" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrain,0" Row="0" Column="0"/>
<LayoutButtons Face="AP_Observer" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrain,1" Row="1" Column="0"/>
<LayoutButtons Face="AP_ImmortalPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrain,9" Row="0" Column="1"/>
<LayoutButtons Face="AP_ColossusPurifier" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrain,2" Row="0" Column="2"/>
<LayoutButtons Face="AP_Disruptor" Type="AbilCmd" AbilCmd="AP_RoboticsFacilityWarpTrain,8" Row="1" Column="1"/>
<LayoutButtons Face="AP_AiurFaction" Type="Submenu" SubmenuCardId="Aiur" Row="0" Column="3"/>
Expand Down
Loading

0 comments on commit 3eb4185

Please sign in to comment.