diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 243528b9..d5065034 100644 Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/1.6/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml b/1.6/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml index cdf1d85d..1910c299 100644 --- a/1.6/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml +++ b/1.6/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml @@ -63,7 +63,6 @@ WULA_Base_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • @@ -726,34 +725,10 @@ WULA_Base_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • - - WULA_Addons_Antenna_Hediff_Base - Hediff_Mechlink - - 安装于乌拉帝国合成人脑袋两侧的天线除了接收信号外,还能兼职控制其他低级机械体。 - 一对可以控制低级机械体的天线。 - false - false - true - -
  • - - 2 - 1 - -
  • -
    - WULA_Addons_Antenna_Bodypart - - -
  • - - WULA_Addons_Antenna_Expansion @@ -1504,7 +1479,6 @@ UnfinishedHealthItemProsthetic -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • false diff --git a/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml b/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml index 5f6df91e..529c2be4 100644 --- a/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml +++ b/1.6/1.6/Defs/Scenarios/Scenarios_WULA.xml @@ -59,11 +59,6 @@ Chemfuel 300 -
  • - StartingThing_Defined - WULA_MW_Mace - Uranium -
  • StartingThing_Defined WULA_RW_Base_AR @@ -194,11 +189,6 @@ ComponentIndustrial 50
  • -
  • - StartingThing_Defined - WULA_MW_Mace - Uranium -
  • StartingThing_Defined WULA_RW_Base_AR diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_GlobalStorageSender.xml b/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_GlobalStorageSender.xml index d1b6a879..f36405e7 100644 --- a/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_GlobalStorageSender.xml +++ b/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_GlobalStorageSender.xml @@ -1,57 +1,4 @@ - - WULA_GlobalStorageSenderPod - - 一个一次性的物资输送装置,可以将装载的货物直接发射到全局存储网络中,而无需选择目标地点。发射后即告销毁。 - - Things/Special/DropPod - Graphic_Single - (2,2) - - (1,1) - false - Normal - BuildingOnTop - PassThroughOnly - false - Misc12 - 0.5 - WULA_Buildings - 2201 - Medium - - 250 - 1600 - 0.5 - - - 60 - 1 - - -
  • - 300 - 0.8 - true -
  • -
  • - DropPodLeaving - false -
  • -
    - -
  • ITab_ContentsTransporter
  • -
    - -
  • PlaceWorker_NotUnderRoof
  • -
    - -
  • TransportPod
  • -
    - 6 - 0.65 - - \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Buildings.xml b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml similarity index 99% rename from 1.6/1.6/Defs/ThingDefs_Buildings/WULA_Buildings.xml rename to 1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml index 6983c5fc..ac6652e2 100644 --- a/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Buildings.xml +++ b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Drop_Buildings.xml @@ -1056,7 +1056,6 @@ (0,0,0) Standable - WULA_Buildings 250 8000 @@ -1118,4 +1117,14 @@ + + +
  • + YourAircraftDef + 1 + SkyfallerLeaving + 120 + false +
  • +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Local_Buildings.xml similarity index 91% rename from 1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml rename to 1.6/1.6/Defs/ThingDefs_Buildings/WULA_Local_Buildings.xml index b73aba37..1e22d6fc 100644 --- a/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml +++ b/1.6/1.6/Defs/ThingDefs_Buildings/WULA_Local_Buildings.xml @@ -1,5 +1,59 @@  + + + WULA_GlobalStorageSenderPod + + 一个一次性的物资输送装置,可以将装载的货物直接发射到全局存储网络中,而无需选择目标地点。发射后即告销毁。 + + Things/Special/DropPod + Graphic_Single + (2,2) + + (1,1) + false + Normal + BuildingOnTop + PassThroughOnly + false + Misc12 + 0.5 + WULA_Buildings + 2201 + Medium + + 250 + 1600 + 0.5 + + + 60 + 1 + + +
  • + 300 + 0.8 + true +
  • +
  • + DropPodLeaving + false +
  • +
    + +
  • ITab_ContentsTransporter
  • +
    + +
  • PlaceWorker_NotUnderRoof
  • +
    + +
  • TransportPod
  • +
    + 6 + 0.65 +
    + WULA_Synth_Server diff --git a/1.6/1.6/Defs/ThingDefs_Misc/Apperals/WULA_Apparel.xml b/1.6/1.6/Defs/ThingDefs_Misc/Apperals/WULA_Apparel.xml index 57570477..5c36cee5 100644 --- a/1.6/1.6/Defs/ThingDefs_Misc/Apperals/WULA_Apparel.xml +++ b/1.6/1.6/Defs/ThingDefs_Misc/Apperals/WULA_Apparel.xml @@ -267,7 +267,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • GeneralLaborSpeed @@ -312,7 +311,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • GeneralLaborSpeed @@ -328,7 +326,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • 105 @@ -392,7 +389,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • GeneralLaborSpeed @@ -408,7 +404,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • 105 @@ -474,7 +469,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • GeneralLaborSpeed @@ -701,7 +695,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • @@ -729,7 +722,6 @@ WULA_Synth_Clothes_Technology -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • @@ -1541,7 +1533,6 @@
    -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • WULA_Synth_Weapon_2_Missile_Technology diff --git a/1.6/1.6/Defs/WorkGivers/Wula_WorkGivers.xml b/1.6/1.6/Defs/WorkGivers/Wula_WorkGivers.xml index 311a64b9..f0149222 100644 --- a/1.6/1.6/Defs/WorkGivers/Wula_WorkGivers.xml +++ b/1.6/1.6/Defs/WorkGivers/Wula_WorkGivers.xml @@ -8,7 +8,6 @@ Smithing 75 -
  • WULA_Cube_Productor_BIO
  • WULA_Cube_Productor_Energy
  • 工作于 diff --git a/1.6/Anomaly/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml b/1.6/Anomaly/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml deleted file mode 100644 index 8ed3265e..00000000 --- a/1.6/Anomaly/Defs/ThingDefs_Misc/Weapons/WULA_FE_Spiritualist_Weapon.xml +++ /dev/null @@ -1,836 +0,0 @@ - - - - WULA_SP_Spear_Impale - - 这是乌拉星人所创造的最强大的进攻术式,来源于乌拉星人的泰坦和旗舰。这种术式发射的纯净灵能能量能绕过几乎所有防御,在敌人的集群中连续弹跳,瞬间烧穿无信之徒的可悲躯体。\n\n为法杖同时携带了一个需要魂楔充能的进攻型技,可以从很远的地方发射灵能射弹轰炸目标区域。 - Archotech - - 0 - - Wula/Weapon/WULA_MW_Scepter_Of_Explosive - Graphic_Single - 1.3 - - - WULA_Soul_Wedge - - Wula/Weapon/WULA_SP_Spear_Impale - -
  • Wula_Spell_Weapon_T3
  • -
    - False - 1 - Gorehulk_Spine_Launch - - - - - - 2000 - 6 - - - 0 - 0 - 40000 - 0 - 1 - 1 - 1 - 1 - 0 - - -
  • - WulaFallenEmpire.Verb_ShootArc - true - Wula_Psi_Damage - 30 - 0 - 4 - 56 - 25 - 1000 - AgonyPulse_Cast - GunTail_Medium - 9 - True - False - 12 - WULA_SP_Spear_Impale_ArcBeam - Mote_HellsphereCannon_Charge -
  • -
    - - -
  • - - 1 - - 1 -
  • -
  • - WULA_MW_Scepter_Of_Explosive_Ability - 10 - AnomalyAbilityWarmup - 魂锲 - WULA_Soul_Wedge - 2 - 60 -
  • -
  • - -
  • WULA_DamagePsychicScaling
  • -
  • WULA_ExtraPsychicSkill
  • - - - 2 - 2 - - -
    - None - -
  • RewardStandardQualitySuper
  • -
    -
    - - WULA_MW_Scepter_Of_Explosive_Ability - - 发射魂烬裂矢,将目标区域烧成灰烬——这种以纯粹灵能作为驱动的射弹将无视所有的非护盾阻碍,发射时也不需要目标视线。 - Wula/UI/Abilities/WULA_MW_Scepter_Of_Explosive_Ability - True - False - Misc11 - - - Verb_CastAbility - 150 - 3 - 9 - true - FleshmelterBolt_Charging - true - PsychicShockLanceCast - false - - - true - false - true - true - true - - - -
  • - Bullet_WULA_MW_Scepter_Of_Explosive - True - 0.5 -
  • -
    -
    - - Bullet_WULA_MW_Scepter_Of_Explosive - - Projectile_Explosive - - Things/Projectile/FleshmelterBolt - Graphic_Single - Mote - (1.5, 3) - - - Wula_Psi_Bomb - 50 - 65 - FleshmelterBolt_Launch - 3.49 - 0.75 - 0.75 - 0.5 - - - - - WULA_SP_Spear_Impale_ArcBeam - MoteDualAttached - MoteOverhead - - 0 - 1 - 0.4 - False - True - True - False - - true - - Wula/Mote/WULA_Lighting_Beam - (200, 40, 40, 255) - Graphic_MoteWithAgeSecs - MoteGlow - (1.5,1) - - <_ExtraTexA>/Things/Mote/BeamSecondaryNoise_A - <_ExtraTexB>/Things/Mote/BeamSecondaryNoise_B - <_ScrollSpeedA>-4 - <_ScrollSpeedB>3 - <_Intensity>2 - - - - - WULA_SP_Spear_Impale_For_Enermy - true - -
  • WULA_SP_Spear_Impale_For_Enermy
  • -
    -
    - - - WULA_SP_Cotton_Counter - - 这是乌拉星人在舰船上用于反制敌方飞行器和导弹的特殊术式,核心在于高爆发性高追踪性的输出,通过快速吟唱汇聚的灵能能量使对方迅速失能。\n\n法杖同时携带了一个需要魂楔充能的辅助型技能,允许将自身遮蔽起来以进入隐身状态。 - Archotech - - 0 - - Wula/Weapon/WULA_MW_Scepter_Of_CLoak - Graphic_Single - 1.3 - - Wula/Weapon/WULA_SP_Cotton_Counter - - WULA_Soul_Wedge - - -
  • Wula_Spell_Weapon_T1
  • -
    - False - 1 - Heatspikes_Shot - - - - - - 2000 - 4 - - - 0 - 0 - 40000 - 0 - 2 - 2 - 2 - 2 - 0 - - -
  • - Verb_Shoot - true - Bullet_WULA_SP_Cotton_Counter - 0.2 - 52 - 1 - Heatspikes_Shot - Heatspikes_Tail - 9 -
  • -
    - - -
  • - - 1 - - 1 -
  • -
  • - WULA_MW_Scepter_Of_CLoak_Ability - 5 - AnomalyAbilityWarmup - 魂锲 - WULA_Soul_Wedge - 2 - 60 -
  • -
  • - -
  • WULA_DamagePsychicScaling
  • -
  • WULA_ExtraPsychicSkill
  • - - - 2 - 2 - - -
    - None - -
  • RewardStandardQualitySuper
  • -
    -
    - - WULA_MW_Scepter_Of_CLoak_Ability - - 使用灵能让一个目标短时间内被附近的其他生物忽略,从而获得隐身效果。\n\n装填需消耗魂楔。 - Wula/UI/Abilities/WULA_MW_Scepter_Of_CLoak_Ability - True - Misc12 - false - - 0 - -1 - 15 - - - Verb_CastPsycast - false - 0.1 - false - false - - true - - DeadlifeRelease - - -
  • - CompAbilityEffect_GiveHediff - PsychicInvisibility - True -
  • -
  • - PsycastPsychicEffect -
  • -
    -
    - - Bullet_WULA_SP_Cotton_Counter - - Beam - - Things/Projectile/Bullet_Small - Graphic_Single - - - Wula_Psi_Damage - 15 - WULA_SP_Cotton_Counter_ArcBeam - 0.5 - 1.5 - - - - WULA_SP_Cotton_Counter_ArcBeam - MoteDualAttached - MoteOverhead - - 0 - 1 - 0.4 - False - True - True - False - - true - - Wula/Mote/WULA_Lighting_Beam - (255, 255, 255, 255) - Graphic_MoteWithAgeSecs - MoteGlow - (1.2,1) - - <_ExtraTexA>/Things/Mote/BeamSecondaryNoise_A - <_ExtraTexB>/Things/Mote/BeamSecondaryNoise_B - <_ScrollSpeedA>-4 - <_ScrollSpeedB>3 - <_Intensity>2 - - - - - WULA_SP_Cotton_Counter_For_Enermy - true - -
  • WULA_SP_Cotton_Counter_For_Enermy
  • -
    -
    - - - WULA_SP_Live_Shelter - - 这是乌拉星人用于救治伤者的法术,可以使用灵能诱发伤口以非常规的方式快速愈合,并且效果会在友方个体间弹跳。\n\n法杖同时携带了一个需要魂楔充能的生产型技能,可以为大范围内的所有殖民者和机械体提供持续数天的额外移动速度和工作速度。 - Archotech - - 0 - - Wula/Weapon/WULA_MW_Scepter_Of_Feather - Graphic_Single - 1.3 - - - WULA_Soul_Wedge - - Wula/Weapon/WULA_SP_Live_Shelter - -
  • Wula_Spell_Weapon_T1
  • -
    - False - 1 - Gorehulk_Spine_Launch - - - - - - 2000 - 6 - - - 0 - 0 - 40000 - 0 - 1 - 1 - 1 - 1 - 0 - - -
  • - WulaFallenEmpire.Verb_ShootArc - true - WULA_SP_Live_Shelter_Heal - 1 - 0 - 4 - 20 - 25 - 1.5 - AgonyPulse_Cast - GunTail_Medium - 9 - True - True - false - 3 - WULA_SP_Live_Shelter_ArcBeam - Mote_HellsphereCannon_Charge -
  • -
    - -
  • - WULA_MW_Scepter_Of_Feather_Ability - 10 - AnomalyAbilityWarmup - 魂锲 - WULA_Soul_Wedge - 2 - 60 -
  • -
  • - -
  • WULA_DamagePsychicScaling
  • -
  • WULA_ExtraPsychicSkill
  • - - - 2 - 2 - - -
    - None - -
  • RewardStandardQualitySuper
  • -
    -
    - - WULA_SP_Live_Shelter_ArcBeam - MoteDualAttached - MoteOverhead - - 0 - 1 - 0.4 - False - True - True - False - - true - - Wula/Mote/WULA_Lighting_Beam - (38, 204, 66, 255) - Graphic_MoteWithAgeSecs - MoteGlow - (1,1) - - <_ExtraTexA>/Things/Mote/BeamSecondaryNoise_A - <_ExtraTexB>/Things/Mote/BeamSecondaryNoise_B - <_ScrollSpeedA>-4 - <_ScrollSpeedB>3 - <_Intensity>2 - - - - - WULA_MW_Scepter_Of_Feather_Ability - - 以自身为中心,为大范围内的所有殖民者和机械体提供持续数天的额外移动速度和工作速度。 - Wula/UI/Abilities/WULA_MW_Scepter_Of_Feather_Ability - True - false - -1 - - 0 - -1 - 4000 - 500 - - - 5 - 60 - true - false - true - VoidTerrorCast - false - - true - - - -
  • - CompAbilityEffect_GiveHediff - WULA_MW_Scepter_Of_Feather_Hediff - PsychicSensitivity - True -
  • -
  • - PsycastPsychicEffect -
  • -
    -
    - - WULA_MW_Scepter_Of_Feather_Hediff - - 这个殖民者受到了乌拉帝国灵能法术的激励,行动和生产变得更加有效率了。 - HediffWithComps - -
  • - - 1.5 - 1.3 - -
  • -
    - -
  • - 240000~240000 - true -
  • -
    -
    - - - WULA_SP_Mist_Incinerator - - 乌拉星人所使用的压制性术式,能够在短时间的吟唱后喷出大量由灵能能量构成的火焰,这种击穿灵魂的火焰可以无视敌人的护甲,点燃敌人的躯体。\n\n法杖同时携带了一个需要魂楔充能的控制型技能,使小范围内的敌人陷入心灵冲击状态,从而失去战斗力。 - 0 - - Wula/Weapon/WULA_MW_Scepter_Of_Heaven - Graphic_Single - 1.3 - - Wula/Weapon/WULA_SP_Mist_Incinerator - Archotech - Metal_Drop - - WULA_Soul_Wedge - - -
  • Wula_Spell_Weapon_T1
  • -
    - False - - 0 - 0 - 30000 - 0 - - 3 - - - 2000 - 2 - - - - - - -
  • - Verb_ArcSprayIncinerator - true - 0.5 - 22.9 - 5.9 - 11 - 20 - false - true - 6 - 2 - Wula_Psi_Damage - GunTail_Medium - 9 - Flamethrower_Firing - Fleck_IncineratorBeamBurn - 0.32 - 0.5 - 0 - IncineratorBeam_End - 0.85 - 0.55~0.85 - .5 - true - true - true - true - true - Fleck_IncineratorBeamSmoke - (58, 225, 225) - (102, 200, 200) - - -
  • (0, 0)
  • -
  • (0.65, 0.02)
  • -
  • (1, .5)
  • - - - - true - - - -
  • (0.6, 0)
  • -
  • (0.7, 0.2)
  • -
  • (1.2, 0.8)
  • -
    -
    - Combat_RangedFlamethrower - -
    - -
  • - WULA_MW_Scepter_Of_Lost_Ability - 1 - AnomalyAbilityWarmup - 魂锲 - WULA_Soul_Wedge - 10 - 60 -
  • -
  • - -
  • WULA_DamagePsychicScaling
  • -
  • WULA_ExtraPsychicSkill
  • - - - 2 - 2 - - -
    - -
  • RewardStandardQualitySuper
  • -
    -
    - - WULA_MW_Scepter_Of_Lost_Ability - - 使一小片范围内的生物直接陷入心灵冲击状态,从而失去战斗力。 - Wula/UI/Abilities/WULA_MW_Scepter_Of_Lost_Ability - True - -1 - - 0 - -1 - 1500 - 1.1 - - - 5 - 14 - - - true - false - true - - - -
  • - CompAbilityEffect_GiveHediff - PsychicShock - PsychicSensitivity - True - -15 - False -
  • -
  • - PsycastPsychicEffect -
  • -
    -
    - - - WULA_RW_Photon_Missile - - 乌拉星人在舰船上用于代替导弹的一种特殊术式,现在则被镌刻在灵能泰坦上。当其被吟唱时,大量的灵能星光将倾巢而出追击轰炸敌军。\n\n当攻击某个单体的时候,灵能星光将会追踪敌军并准确击中目标;当攻击地面时,灵能星光会分散以形成一片轰炸区。依托于纯净灵能能能量,灵能星光可以穿越任何地形阻碍和护盾进行轰炸。 - Archotech - None - - Wula/Weapon/WULA_RW_Photon_Missile - 0 - - Wula/Weapon/WULA_Weapon_Empty - Graphic_Single - - -
  • WULA_RW_Photon_Missile_Weapon
  • -
    - - UnfinishedWeapon - - - 380 - 60 - 8 - - - 0 - 0 - 40000 - 0 - 0.5 - 0.5 - 0.4 - 0.3 - 0 - - - - - - -
  • - Verb_Shoot - true - Bullet_WULA_RW_Photon_Missile - 0.1 - 4.5 - 48 - 1 - true - false - 4 - 48 - AgonyPulse_Cast - 12 - - Mote_FleshmelterBolt_Aim - Mote_FleshmelterBolt_Charge - 1.07 - 15.9 - Mote_FleshmelterBolt_Target - - - - true - -
  • -
    - -
  • - -
  • WULA_DamagePsychicScaling
  • -
  • WULA_PsychicIgnoreBlock
  • -
  • WULA_MissileLauncher
  • - - - 3 - 3 - - -
    -
    - - Bullet_WULA_RW_Photon_Missile - - - Wula/Building/WULA_Charging_Station_Synth - - Graphic_Multi - TransparentPostLight - - WulaFallenEmpire.Projectile_CruiseMissile - -
  • - Bomb - 8 - 1 - Pawn_Revenant_StartledScream - - true - 0 - 1 - 5 - 6 - Wula_Psi_Bomb - MortarBomb_Explode -
  • -
    - - Wula_Psi_Bomb - 1 - 22 - 1.25 - 1.5 - true - Artillery_HitThickRoof - Pawn_Revenant_StartledScream - MortarRound_PreImpact - MortarRound_Ambient - -
    -
    \ No newline at end of file diff --git a/Source/WulaFallenEmpire/Flyover/WULA_AutoLaunchHangar/CompProperties_AutoLaunchHangar.cs b/Source/WulaFallenEmpire/Flyover/WULA_AutoLaunchHangar/CompProperties_AutoLaunchHangar.cs new file mode 100644 index 00000000..e5b19915 --- /dev/null +++ b/Source/WulaFallenEmpire/Flyover/WULA_AutoLaunchHangar/CompProperties_AutoLaunchHangar.cs @@ -0,0 +1,243 @@ +using RimWorld; +using Verse; +using System.Collections.Generic; + +namespace WulaFallenEmpire +{ + public class CompProperties_AutoLaunchHangar : CompProperties + { + public ThingDef aircraftDef; // 对应的战机定义 + public int aircraftCount = 1; // 起飞后提供的战机数量 + public ThingDef skyfallerLeaving; // 起飞时的天空坠落者效果 + public int launchDelayTicks = 60; // 延迟启动的ticks(默认1秒) + public bool requirePower = true; // 是否需要电力才能启动 + + public CompProperties_AutoLaunchHangar() + { + compClass = typeof(CompAutoLaunchHangar); + } + } + + public class CompAutoLaunchHangar : ThingComp + { + public CompProperties_AutoLaunchHangar Props => (CompProperties_AutoLaunchHangar)props; + private bool hasLaunched = false; + private int spawnTick = -1; + + private CompPowerTrader powerComp; + private CompRefuelable refuelableComp; + + public override void PostSpawnSetup(bool respawningAfterLoad) + { + base.PostSpawnSetup(respawningAfterLoad); + + if (!respawningAfterLoad) + { + // 记录生成时间 + spawnTick = Find.TickManager.TicksAbs; + hasLaunched = false; + + // 缓存其他组件 + powerComp = parent.GetComp(); + refuelableComp = parent.GetComp(); + + Log.Message($"AutoLaunchHangar spawned at tick {spawnTick}, will launch in {Props.launchDelayTicks} ticks"); + } + } + + public override void PostExposeData() + { + base.PostExposeData(); + Scribe_Values.Look(ref hasLaunched, "hasLaunched", false); + Scribe_Values.Look(ref spawnTick, "spawnTick", -1); + } + + public override void CompTick() + { + base.CompTick(); + + if (hasLaunched || spawnTick == -1) + return; + + int currentTick = Find.TickManager.TicksAbs; + if (currentTick - spawnTick >= Props.launchDelayTicks) + { + if (CanAutoLaunch()) + { + AutoLaunchAircraft(); + } + } + } + + private bool CanAutoLaunch() + { + // 检查建筑是否完好 + if (parent.HitPoints <= 0) + { + Log.Message("AutoLaunch: Hangar is damaged, cannot launch"); + return false; + } + + // 检查电力需求 + if (Props.requirePower && powerComp != null && !powerComp.PowerOn) + { + Log.Message("AutoLaunch: No power, cannot launch"); + return false; + } + + // 检查燃料需求 + if (refuelableComp != null && !refuelableComp.HasFuel) + { + Log.Message("AutoLaunch: No fuel, cannot launch"); + return false; + } + + // 检查地图是否有效 + if (parent.Map == null) + { + Log.Message("AutoLaunch: Map is null, cannot launch"); + return false; + } + + return true; + } + + private void AutoLaunchAircraft() + { + Log.Message($"AutoLaunch: Starting aircraft launch sequence for {parent.Label}"); + + // 获取全局战机管理器 + WorldComponent_AircraftManager aircraftManager = Find.World.GetComponent(); + + if (aircraftManager == null) + { + Log.Error("AutoLaunch: AircraftManager not found"); + hasLaunched = true; + return; + } + + try + { + // 立即向全局管理器注册战机 + aircraftManager.AddAircraft(Props.aircraftDef, Props.aircraftCount, parent.Faction); + + // 显示消息 + Messages.Message("AircraftAutoLaunched".Translate(Props.aircraftCount, Props.aircraftDef.LabelCap), + parent, MessageTypeDefOf.PositiveEvent); + + Log.Message($"AutoLaunch: Successfully added {Props.aircraftCount} {Props.aircraftDef.LabelCap} to global manager"); + + // 创建起飞效果 + if (Props.skyfallerLeaving != null) + { + CreateAutoTakeoffEffect(); + } + else + { + // 如果没有定义 Skyfaller,直接销毁建筑 + parent.Destroy(); + } + + hasLaunched = true; + } + catch (System.Exception ex) + { + Log.Error($"AutoLaunch error: {ex}"); + hasLaunched = true; // 标记为已启动,避免重复尝试 + } + } + + private void CreateAutoTakeoffEffect() + { + try + { + // 创建起飞效果 + Thing chemfuel = ThingMaker.MakeThing(ThingDefOf.Chemfuel); + chemfuel.stackCount = 1; + + Skyfaller skyfaller = SkyfallerMaker.MakeSkyfaller(Props.skyfallerLeaving, chemfuel); + + IntVec3 takeoffPos = parent.Position; + + if (parent.Map == null) + { + Log.Error("AutoLaunch: Map is null during takeoff effect creation"); + parent.Destroy(); + return; + } + + // 生成 Skyfaller + GenSpawn.Spawn(skyfaller, takeoffPos, parent.Map); + + Log.Message($"AutoLaunch: Takeoff effect created at {takeoffPos}"); + + // 销毁原建筑 + parent.Destroy(DestroyMode.Vanish); + } + catch (System.Exception ex) + { + Log.Error($"AutoLaunch takeoff effect error: {ex}"); + // 如果Skyfaller创建失败,直接销毁建筑 + parent.Destroy(DestroyMode.Vanish); + } + } + + // 可选:提供手动触发的Gizmo(如果自动触发失败) + public override IEnumerable CompGetGizmosExtra() + { + if (!hasLaunched) + { + Command_Action manualLaunch = new Command_Action + { + defaultLabel = "ManualLaunchAircraft".Translate(), + defaultDesc = "ManualLaunchAircraftDesc".Translate(), + icon = TexCommand.Attack, + action = () => + { + if (CanAutoLaunch()) + { + AutoLaunchAircraft(); + } + else + { + Messages.Message("CannotManualLaunch".Translate(), MessageTypeDefOf.RejectInput); + } + } + }; + + // 禁用条件检查 + if (parent.HitPoints <= 0) + { + manualLaunch.Disable("HangarDamaged".Translate()); + } + else if (Props.requirePower && powerComp != null && !powerComp.PowerOn) + { + manualLaunch.Disable("NoPower".Translate()); + } + else if (refuelableComp != null && !refuelableComp.HasFuel) + { + manualLaunch.Disable("NoFuel".Translate()); + } + + yield return manualLaunch; + } + } + + public override string CompInspectStringExtra() + { + if (!hasLaunched) + { + int remainingTicks = Props.launchDelayTicks - (Find.TickManager.TicksAbs - spawnTick); + if (remainingTicks > 0) + { + return "AutoLaunchIn".Translate(remainingTicks.ToStringTicksToPeriod()); + } + else + { + return "AutoLaunchReady".Translate(); + } + } + return null; + } + } +} diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj index 438b303e..e5da332d 100644 --- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj +++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj @@ -95,6 +95,7 @@ + diff --git a/WeaponTweakData/WULA_MW_Mace_tourswen.wulafallenempiretest.json b/WeaponTweakData/WULA_MW_Mace_tourswen.wulafallenempiretest.json deleted file mode 100644 index 0b4f1d09..00000000 --- a/WeaponTweakData/WULA_MW_Mace_tourswen.wulafallenempiretest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "TextureModID": "tourswen.wulafallenempiretest", - "ItemDefName": "WULA_MW_Mace", - "ItemType": "ThingDef", - "ItemTypeNamespace": "Verse", - "ScaleX": 0.8, - "ScaleY": 0.8, - "HandsMode": 1, - "BladeStart": 0.31609267, - "BladeEnd": -0.318965524, - "MeleeWeaponType": 8 -} \ No newline at end of file