diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index 4d844f30..15fffd0b 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/AbilityDefs/WULA_Flyover_Ability.xml b/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml
index 6ca5d244..85eaf6f1 100644
--- a/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml
+++ b/1.6/1.6/Defs/AbilityDefs/WULA_Flyover_Ability.xml
@@ -188,7 +188,35 @@
-
+
+ WULA_ClearFlightPath
+ 航道净空
+ 使近地轨道上的舰队离开,以使得其他乌拉帝国舰队可以入场
+ Wula/UI/Abilities/WULA_CallConstructionShip
+ 1
+ Misc12
+ false
+ true
+ false
+
+ Verb_CastAbility
+ true
+ false
+ true
+ 2
+ -1
+ false
+
+ false
+ true
+
+
+
+
+
+
+
+
WULA_Spawn_Fighter_Drone_Laser
diff --git a/1.6/1.6/Defs/DamageDefs/Damages_Wula.xml b/1.6/1.6/Defs/DamageDefs/Damages_Wula.xml
index d8a305c3..f3ae02a8 100644
--- a/1.6/1.6/Defs/DamageDefs/Damages_Wula.xml
+++ b/1.6/1.6/Defs/DamageDefs/Damages_Wula.xml
@@ -337,4 +337,21 @@
+
+
+ Damage_WULA_RW_Unlimit_Penetrating_Beam_Cannon
+ 贯杀炮切割束
+ 0
+ Explosion_Vaporize
+
+
+
+
+ WULA_GiantBomb
+ 大型爆炸
+ 150
+ 2.0
+ 1.30
+ GiantExplosion
+
\ No newline at end of file
diff --git a/1.6/1.6/Defs/HediffDefs/WULA_FM_Hediffs.xml b/1.6/1.6/Defs/HediffDefs/WULA_FM_Hediffs.xml
index a683e563..9aef23a2 100644
--- a/1.6/1.6/Defs/HediffDefs/WULA_FM_Hediffs.xml
+++ b/1.6/1.6/Defs/HediffDefs/WULA_FM_Hediffs.xml
@@ -102,7 +102,9 @@
WULA_CallMotherShip
WULA_CallBattleShip
+ WULA_CallAircraftCarrier
WULA_CallConstructionShip
+ WULA_ClearFlightPath
diff --git a/1.6/1.6/Defs/QuestScriptDefs/Wula_Base_Events.xml b/1.6/1.6/Defs/QuestScriptDefs/Wula_Base_Events.xml
index 4a47122e..2a2237b3 100644
--- a/1.6/1.6/Defs/QuestScriptDefs/Wula_Base_Events.xml
+++ b/1.6/1.6/Defs/QuestScriptDefs/Wula_Base_Events.xml
@@ -1,10 +1,16 @@
-
+
WULA_GiveQuest_Intro_Spy
+ GiveQuest
SPY
- WULA_Intro_Spy
- 0
+
+ Map_PlayerHome
+
+ WULA_Intro_Spy
+ IncidentWorker_GiveQuest
+ 0
+ True
diff --git a/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml b/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml
index 5a023ae6..e27f8ab8 100644
--- a/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml
+++ b/1.6/1.6/Defs/StoryTellers/WULA_Storytellers.xml
@@ -181,15 +181,17 @@
1
-
- WULA_GiveQuest_Intro_Spy
- 6
-
- WULA_Awakened_Synth
-
-
+
+
+ 1
+ WULA_GiveQuest_Intro_Spy
+ WULA_Intro_Spy
+
+ Map_PlayerHome
+
+
+ Ludeon.RimWorld.Odyssey
+
diff --git a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Machine_Weapon.xml b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Machine_Weapon.xml
index ee53715c..16a185bb 100644
--- a/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Machine_Weapon.xml
+++ b/1.6/1.6/Defs/ThingDefs_Misc/Weapons/WULA_FE_Machine_Weapon.xml
@@ -46,7 +46,7 @@
true
2
- BombSuper
+ Damage_WULA_RW_Unlimit_Penetrating_Beam_Cannon
450
2
WULA_ExcaliburBeam
@@ -224,7 +224,7 @@
16
true
false
- 4
+ 12
120
3
12
@@ -247,7 +247,7 @@
WulaFallenEmpire.Projectile_ExplosiveWithTrail
- Bomb
+ WULA_GiantBomb
45
60
6
@@ -373,27 +373,55 @@
Verb_Shoot
true
- Bullet_WULA_WM_Panzer_Turret
+ Bullet_Wula_AI_Heavy_Panzer_Turret_Weapon
0
- 4
5.9
60
+ 3
+ 6
+ 6
true
- 1
0.1
- WULA_MW_Mass_Drivers_Shootingsound
+ Shot_ChargeRifle
GunTail_Heavy
18
+
+ Bullet_Wula_AI_Heavy_Panzer_Turret_Weapon
+ 青金石自动炮炮弹
+
+ Wula/Projectile/WULA_Bullet_ChargeLanceShot_Red
+ Graphic_Single
+ MoteGlow
+ 2.5
+
+ WulaFallenEmpire.Projectile_ExplosiveWithTrail
+
+ Bullet
+ 12
+ 90
+ 2.1
+ 0
+ Explosion_Rocket
+ 1.5
+ 0.1
+
+
+
+ WULA_GunTail_Lighting
+ 1
+
+
+
- Wula_AI_Heavy_Panzer_Missile_Weapon
- WLl-2"月长石"
- HAp-6"战车"在侧面挂载的导弹系统,需要瞄准较长的时间,但是可以一次性发射大量的导弹。
+ Wula_AI_Heavy_Panzer_Main_Weapon
+ SDm-2"月长石"
+ HAp-6"战车"车体正面的突击炮,射程很短并且只能在静止状态开火,但是威力巨大,专门用于对付坚固的工事和成片的人群。
Normal
Spacer
- Wula/Projectile/WULA_Loitering_Munition
+ Wula/Projectile/WULA_Shrapnel
Wula/Weapon/WULA_Weapon_Empty
Graphic_Single
@@ -415,18 +443,15 @@
Verb_Shoot
true
-
- Bullet_WULA_RW_Base_Loitering_Munition
- 5
- 40
- 6
- 16
+ Bullet_Wula_AI_Heavy_Panzer_Main_Weapon
+ 2
+ 21
+ 1
+ 1
RocketswarmLauncher_Fire
GunTail_Heavy
- true
true
- true
@@ -438,4 +463,33 @@
Wula_AI_Heavy_Panzer_Weapon
+
+ Bullet_Wula_AI_Heavy_Panzer_Main_Weapon
+ 月长石炮弹
+
+ Wula/Projectile/WULA_Shrapnel
+ Graphic_Single
+ (2,2)
+
+ WulaFallenEmpire.Projectile_ExplosiveWithTrail
+
+ WULA_GiantBomb
+ 65
+ 25
+ 6
+ 1.5
+ true
+ Artillery_HitThickRoof
+ MortarBomb_Explode
+ MortarRound_PreImpact
+ MortarRound_Ambient
+ 10
+
+
+
+ WULA_Smoke_Tail
+ 1
+
+
+
\ No newline at end of file
diff --git a/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml b/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml
index d1ae7b99..04254649 100644
--- a/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml
+++ b/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml
@@ -1053,8 +1053,8 @@
36000
- 4.2
- 4.4
+ 5.2
+ 5.4
0.02
4.0
false
diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/AirStrike_Keys.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/AirStrike_Keys.xml
index 6fb8295d..24697f5f 100644
--- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/AirStrike_Keys.xml
+++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/AirStrike_Keys.xml
@@ -20,14 +20,6 @@
已获得 {0} {1}
机库已损坏
-
- 战机管理器未找到!
- 空中打击已启动:{0}
- 空中打击:成功使用 {0} 只 {1}
- 没有可用的战机:{0}
- 空中打击:{1} 没有可用的 {0}
- 没有可用的 {0}
-
{0}:{1}
冷却中:{0}
@@ -70,4 +62,28 @@
{0} 准备好再次进行打击
没有可用的战机
{0}:{1}/{2}(冷却中:{3})
+
+ 已净空航道,航道上的舰队正在回到高空轨道
+
+
+ 战机管理器未找到
+ {0}空袭已启动
+ 使用了{0}架{1}执行空袭
+ 没有可用的{0}
+ 无法为派系{1}使用{0}
+ 未知派系
+ 战机系统未就绪
+ 没有可用的{0}
+ {0}数量不足 ({1}/{2})
+ {0}正在冷却中
+ 可用战机: {0}
+ 冷却中: {0}
+ 每次消耗: {0}
+ 没有可用的战机执行空袭
+ 战机状态:
+ • 总数: {0}
+ • 可用: {0}
+ • 冷却中: {0}
+ 需要 {0} x{1}
+ 冷却时间: {0} 小时
\ No newline at end of file
diff --git a/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_north.png b/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_north.png
index 40a944bb..e625c8ac 100644
Binary files a/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_north.png and b/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_north.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_south.png b/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_south.png
index a6a94bb5..045038c7 100644
Binary files a/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_south.png and b/Content/Textures/Wula/Hair/WULA_Double_Ponytail_Long_south.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_High_Ponytail_east.png b/Content/Textures/Wula/Hair/WULA_High_Ponytail_east.png
index 579693f5..58578ba4 100644
Binary files a/Content/Textures/Wula/Hair/WULA_High_Ponytail_east.png and b/Content/Textures/Wula/Hair/WULA_High_Ponytail_east.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_High_Ponytail_north.png b/Content/Textures/Wula/Hair/WULA_High_Ponytail_north.png
index 80006c55..2659f6ef 100644
Binary files a/Content/Textures/Wula/Hair/WULA_High_Ponytail_north.png and b/Content/Textures/Wula/Hair/WULA_High_Ponytail_north.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_High_Ponytail_south.png b/Content/Textures/Wula/Hair/WULA_High_Ponytail_south.png
index b1a09654..ceedff2e 100644
Binary files a/Content/Textures/Wula/Hair/WULA_High_Ponytail_south.png and b/Content/Textures/Wula/Hair/WULA_High_Ponytail_south.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_east.png b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_east.png
index 5ba8eaa7..62f2cf7a 100644
Binary files a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_east.png and b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_east.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_north.png b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_north.png
index e96690d7..0056189a 100644
Binary files a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_north.png and b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_north.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_south.png b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_south.png
index 9efc75dd..88bcad82 100644
Binary files a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_south.png and b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_south.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_west.png b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_west.png
index e9611676..a61d04fb 100644
Binary files a/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_west.png and b/Content/Textures/Wula/Hair/WULA_One_Side_Ponytail_west.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_east.png b/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_east.png
index 5e490b5a..bde7d6d2 100644
Binary files a/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_east.png and b/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_east.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_north.png b/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_north.png
index 120936a2..dabdc8d4 100644
Binary files a/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_north.png and b/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_north.png differ
diff --git a/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_south.png b/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_south.png
index 63af54cd..10b30e1f 100644
Binary files a/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_south.png and b/Content/Textures/Wula/Hair/WULA_Rotational_Ponytail_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_east.png b/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_east.png
index 7cafdf8f..2f03f701 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_north.png b/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_north.png
index c2ea6052..9cfe2d94 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_north.png and b/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_north.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.png b/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.png
index 916f626f..9133ed36 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_east.png b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_east.png
index 9a6bea5a..65d037dd 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_east.png b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_east.png
index 521660cf..22a413e0 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_south.png b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_south.png
index cc7febf5..87bf2ee7 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_highlight_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_south.png b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_south.png
index 09835971..a3a0973d 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Eyes/Normal/Unisex/normal_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_north.png b/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_north.png
index a52df560..6f071bc3 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_north.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_north.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_south.png b/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_south.png
index 2876f061..a8efce29 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads/Average_Normal_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_east.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_east.png
index dc989125..87299426 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_north.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_north.png
index 566f9f06..6f071bc3 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_north.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_north.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_south.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_south.png
index 09ebb626..ef787192 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_west.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_west.png
index de0666d5..bc176e99 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_west.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/blush_west.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_east.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_east.png
index aafd5355..e8dd8276 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_north.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_north.png
index 566f9f06..6f071bc3 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_north.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_north.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_south.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_south.png
index 877ecbef..fee991cf 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_west.png b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_west.png
index 563a0b54..5c22479f 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_west.png and b/Content/Textures/Wula/Things/WulaSpecies/Heads_Blank/Normal/Unisex/normal_west.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_east.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_east.png
index 5a025be1..c58bedef 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_south.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_south.png
index c171935f..f777ddc2 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/arrow_close_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_east.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_east.png
index db76390c..6a0067ec 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_south.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_south.png
index d8b81ae7..394ebb7b 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/close_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_east.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_east.png
index 057c23a0..14957a2a 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_south.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_south.png
index 28c73951..d49a9c2b 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/normal_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_east.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_east.png
index d89c1ce2..119ab848 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_south.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_south.png
index e78edfc3..e67b9daf 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/speechless_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_east.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_east.png
index 450005a1..f6a46a83 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_south.png b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_south.png
index 67f94627..64d0ed02 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Lids/Normal/Unisex/stun_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_east.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_east.png
index 63bf7f97..99b649c0 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_south.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_south.png
index 8876ac12..1c801bb7 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/dissatisfaction_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_east.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_east.png
index 6a2bd2fb..fff8c315 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_south.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_south.png
index 6ed4f6e4..e8da47a7 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/normal_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_east.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_east.png
index 66af0f47..8436fb55 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_south.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_south.png
index 5c4ab4d2..3ca895b8 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/open_south.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_east.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_east.png
index 2d106184..f8bb74e1 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_east.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_east.png differ
diff --git a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_south.png b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_south.png
index d4d6d370..c0235869 100644
Binary files a/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_south.png and b/Content/Textures/Wula/Things/WulaSpecies/Mouth/Normal/Unisex/openex_south.png differ
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png
index c0c8b293..99d0d821 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png differ
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_north.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_north.png
index 0eb69307..d3ec8352 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_north.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_north.png differ
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_south.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_south.png
index fad06b83..7eaeb922 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_south.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_south.png differ
diff --git a/Source/WulaFallenEmpire/Flyover/ThingclassFlyOver.cs b/Source/WulaFallenEmpire/Flyover/ThingclassFlyOver.cs
index 1efa5c6c..175fb2f8 100644
--- a/Source/WulaFallenEmpire/Flyover/ThingclassFlyOver.cs
+++ b/Source/WulaFallenEmpire/Flyover/ThingclassFlyOver.cs
@@ -197,28 +197,6 @@ namespace WulaFallenEmpire
return Mathf.Clamp01(currentFadeInTime / fadeInDuration);
}
}
-
- // 修改后的淡出透明度属性
- public float FadeOutAlpha
- {
- get
- {
- if (!useFadeOut || !fadeOutStarted) return 1f;
- if (fadeOutCompleted) return 0f;
- return Mathf.Clamp01(1f - (currentFadeOutTime / fadeOutDuration));
- }
- }
-
- // 修改后的总体透明度属性
- public float OverallAlpha
- {
- get
- {
- if (!useFadeEffects) return 1f;
- return FadeInAlpha * FadeOutAlpha;
- }
- }
-
// 新增:计算剩余飞行时间(秒)
public float RemainingFlightTime
{
@@ -228,6 +206,151 @@ namespace WulaFallenEmpire
return remainingProgress / (flightSpeed * 0.001f) * (1f / 60f);
}
}
+ // 修改后的紧急销毁方法 - 急速加速版本
+ public void EmergencyDestroy()
+ {
+ if (Destroyed || hasCompleted) return;
+ // 计算剩余进度
+ float remainingProgress = 1f - currentProgress;
+
+ // 计算需要的速度:确保在1秒内完成剩余进度
+ // 每帧增加 flightSpeed * 0.001,1秒60帧,所以需要:remainingProgress = flightSpeed * 0.001 * 60
+ // 因此:flightSpeed = remainingProgress / (0.001 * 60) = remainingProgress / 0.06
+ float requiredSpeed = remainingProgress / 0.06f;
+
+ // 设置新的飞行速度,确保至少是当前速度的2倍
+ flightSpeed = Mathf.Max(requiredSpeed, flightSpeed * 2f);
+
+ // 标记为紧急销毁状态
+ hasCompleted = false; // 确保可以继续飞行
+
+ Log.Message($"FlyOver emergency destroy: accelerating to complete in 1 second. " +
+ $"Current progress: {currentProgress:F2}, Required speed: {requiredSpeed:F2}, " +
+ $"Actual speed: {flightSpeed:F2}");
+ }
+ // 修改后的淡出透明度属性 - 紧急销毁时强制启用淡出
+ public float FadeOutAlpha
+ {
+ get
+ {
+ // 如果已经开始了淡出(包括紧急销毁),就应用淡出效果
+ if (!fadeOutStarted) return 1f;
+ if (fadeOutCompleted) return 0f;
+ return Mathf.Clamp01(1f - (currentFadeOutTime / fadeOutDuration));
+ }
+ }
+ // 修改后的总体透明度属性 - 紧急销毁时强制计算淡出
+ public float OverallAlpha
+ {
+ get
+ {
+ if (!useFadeEffects && !fadeOutStarted) return 1f;
+ return FadeInAlpha * FadeOutAlpha;
+ }
+ }
+ // 修改后的 Tick 方法,优化紧急销毁逻辑
+ protected override void Tick()
+ {
+ base.Tick();
+ if (!hasStarted || hasCompleted)
+ return;
+
+ // 更新进场动画
+ if (useApproachAnimation && !approachCompleted)
+ {
+ currentApproachTime += 1f / 60f;
+ if (currentApproachTime >= approachDuration)
+ {
+ approachCompleted = true;
+ currentApproachTime = approachDuration;
+ }
+ }
+
+ // 更新淡入效果(仅在启用时)
+ if (useFadeIn && !fadeInCompleted)
+ {
+ currentFadeInTime += 1f / 60f;
+ if (currentFadeInTime >= fadeInDuration)
+ {
+ fadeInCompleted = true;
+ currentFadeInTime = fadeInDuration;
+ }
+ }
+
+ // 更新飞行进度
+ currentProgress += flightSpeed * 0.001f;
+
+ // 检查是否应该开始淡出(仅在启用时且未紧急销毁)
+ if (useFadeOut && !fadeOutStarted && currentProgress >= fadeOutStartProgress)
+ {
+ StartFadeOut();
+ }
+
+ // 更新淡出效果(仅在启用时)
+ if (useFadeOut && fadeOutStarted && !fadeOutCompleted)
+ {
+ currentFadeOutTime += 1f / 60f;
+ if (currentFadeOutTime >= fadeOutDuration)
+ {
+ fadeOutCompleted = true;
+ currentFadeOutTime = fadeOutDuration;
+ }
+ }
+
+ // 更新当前位置
+ UpdatePosition();
+
+ // 维持飞行音效
+ UpdateFlightSound();
+
+ // 检查是否到达终点
+ if (currentProgress >= 1f)
+ {
+ CompleteFlyOver();
+ return; // 立即返回,避免后续处理
+ }
+
+ // 生成飞行轨迹特效
+ CreateFlightEffects();
+ }
+ // 修改后的 CompleteFlyOver 方法,添加紧急销毁处理
+ private void CompleteFlyOver()
+ {
+ if (hasCompleted) return;
+ hasCompleted = true;
+ currentProgress = 1f;
+
+ // 生成内容物(如果需要)
+ if (spawnContentsOnImpact && innerContainer.Any)
+ {
+ SpawnContents();
+ }
+
+ // 播放完成音效
+ if (def.skyfaller?.impactSound != null)
+ {
+ def.skyfaller.impactSound.PlayOneShot(
+ SoundInfo.InMap(new TargetInfo(endPosition, base.Map)));
+ }
+
+ Log.Message($"FlyOver completed at {endPosition}");
+
+ // 立即销毁
+ Destroy();
+ }
+
+ // 修改后的 UpdatePosition 方法,添加安全检查
+ private void UpdatePosition()
+ {
+ if (hasCompleted) return;
+
+ Vector3 currentWorldPos = Vector3.Lerp(startPosition.ToVector3(), endPosition.ToVector3(), currentProgress);
+ IntVec3 newPos = currentWorldPos.ToIntVec3();
+ if (newPos != base.Position && newPos.InBounds(base.Map))
+ {
+ base.Position = newPos;
+ }
+ }
// 新增:计算基于剩余距离的淡出持续时间
private float CalculateDynamicFadeOutDuration()
@@ -337,63 +460,6 @@ namespace WulaFallenEmpire
}
}
}
- protected override void Tick()
- {
- base.Tick();
- if (!hasStarted || hasCompleted)
- return;
- // 更新进场动画
- if (useApproachAnimation && !approachCompleted)
- {
- currentApproachTime += 1f / 60f;
- if (currentApproachTime >= approachDuration)
- {
- approachCompleted = true;
- currentApproachTime = approachDuration;
- Log.Message("FlyOver approach animation completed");
- }
- }
- // 更新淡入效果(仅在启用时)
- if (useFadeIn && !fadeInCompleted)
- {
- currentFadeInTime += 1f / 60f;
- if (currentFadeInTime >= fadeInDuration)
- {
- fadeInCompleted = true;
- currentFadeInTime = fadeInDuration;
- }
- }
- // 更新飞行进度
- currentProgress += flightSpeed * 0.001f;
- // 检查是否应该开始淡出(仅在启用时)
- if (useFadeOut && !fadeOutStarted && currentProgress >= fadeOutStartProgress)
- {
- StartFadeOut();
- }
- // 更新淡出效果(仅在启用时)
- if (useFadeOut && fadeOutStarted && !fadeOutCompleted)
- {
- currentFadeOutTime += 1f / 60f;
- if (currentFadeOutTime >= fadeOutDuration)
- {
- fadeOutCompleted = true;
- currentFadeOutTime = fadeOutDuration;
- Log.Message("FlyOver fade out completed");
- }
- }
- // 更新当前位置
- UpdatePosition();
- // 维持飞行音效(在淡出时逐渐降低音量)
- UpdateFlightSound();
- // 检查是否到达终点
- if (currentProgress >= 1f)
- {
- CompleteFlyOver();
- }
- // 生成飞行轨迹特效(在淡出时减少特效)
- CreateFlightEffects();
- }
-
// 新增:开始淡出效果
private void StartFadeOut()
{
@@ -405,69 +471,21 @@ namespace WulaFallenEmpire
Log.Message($"FlyOver started fade out at progress {currentProgress:F2}, duration: {fadeOutDuration:F2}s, remaining time: {RemainingFlightTime:F2}s");
}
- private void UpdatePosition()
- {
- Vector3 currentWorldPos = Vector3.Lerp(startPosition.ToVector3(), endPosition.ToVector3(), currentProgress);
- IntVec3 newPos = currentWorldPos.ToIntVec3();
-
- if (newPos != base.Position && newPos.InBounds(base.Map))
- {
- base.Position = newPos;
- }
- }
-
- // 修改后的音效更新方法
+ // 修改后的 UpdateFlightSound 方法,添加紧急销毁时的音效处理
private void UpdateFlightSound()
{
if (flightSoundPlaying != null)
{
- if (useFadeOut && fadeOutStarted)
+ // 紧急销毁时提高音效音量或频率
+ if (flightSoundPlaying != null && flightSoundPlaying.externalParams != null)
{
- // 淡出时逐渐降低音效音量
- flightSoundPlaying.externalParams["VolumeFactor"] = FadeOutAlpha;
+ // 可以根据需要调整紧急销毁时的音效参数
+ flightSoundPlaying.externalParams["VolumeFactor"] = 1f; // 保持最大音量
}
flightSoundPlaying?.Maintain();
}
}
- private void CompleteFlyOver()
- {
- hasCompleted = true;
- currentProgress = 1f;
-
- // 生成内容物(如果需要)
- if (spawnContentsOnImpact && innerContainer.Any)
- {
- SpawnContents();
- }
-
- // 播放完成音效
- if (def.skyfaller?.impactSound != null)
- {
- def.skyfaller.impactSound.PlayOneShot(
- SoundInfo.InMap(new TargetInfo(endPosition, base.Map)));
- }
-
- Log.Message($"FlyOver completed at {endPosition}");
-
- // 销毁自身
- Destroy();
- }
-
- // 修改后的紧急销毁方法
- public void EmergencyDestroy()
- {
- if (useFadeOut && !fadeOutStarted)
- {
- // 如果还没有开始淡出,使用默认淡出时间
- fadeOutStarted = true;
- fadeOutDuration = defaultFadeOutDuration;
- Log.Message($"FlyOver emergency destroy with default fade out: {defaultFadeOutDuration}s");
- }
- // 设置标记,下一帧会处理淡出
- hasCompleted = true;
- }
-
private void SpawnContents()
{
foreach (Thing thing in innerContainer)
@@ -480,19 +498,21 @@ namespace WulaFallenEmpire
innerContainer.Clear();
}
- // 修改后的特效生成方法
+ // 修改后的 CreateFlightEffects 方法,添加紧急销毁时的特效增强
private void CreateFlightEffects()
{
// 在飞行轨迹上生成粒子效果
- if (Rand.MTBEventOccurs(0.5f, 1f, 1f) && def.skyfaller?.motesPerCell > 0 && !fadeOutCompleted)
+ if (Rand.MTBEventOccurs(0.5f, 1f, 1f) && def.skyfaller?.motesPerCell > 0)
{
Vector3 effectPos = DrawPos;
effectPos.y = AltitudeLayer.MoteOverhead.AltitudeFor();
- // 淡出时减少粒子效果强度
- float effectIntensity = (useFadeOut && fadeOutStarted) ? FadeOutAlpha : 1f;
+
+ // 紧急销毁时增强粒子效果
+ float effectIntensity = 1f;
FleckMaker.ThrowSmoke(effectPos, base.Map, 1f * effectIntensity);
- // 可选:根据速度生成更多效果
- if (flightSpeed > 2f && !(useFadeOut && fadeOutStarted))
+
+ // 紧急销毁时生成更多效果
+ if (flightSpeed > 2f)
{
FleckMaker.ThrowAirPuffUp(effectPos, base.Map);
}
diff --git a/Source/WulaFallenEmpire/Flyover/WULA_AircraftHangar/CompAbilityEffect_AircraftStrike.cs b/Source/WulaFallenEmpire/Flyover/WULA_AircraftHangar/CompAbilityEffect_AircraftStrike.cs
index f7d295b8..3d82e907 100644
--- a/Source/WulaFallenEmpire/Flyover/WULA_AircraftHangar/CompAbilityEffect_AircraftStrike.cs
+++ b/Source/WulaFallenEmpire/Flyover/WULA_AircraftHangar/CompAbilityEffect_AircraftStrike.cs
@@ -31,7 +31,7 @@ namespace WulaFallenEmpire
if (aircraftManager == null)
{
- Log.Error("AircraftManagerNotFound".Translate());
+ Log.Error("WULA_AircraftManagerNotFound".Translate());
return;
}
@@ -39,13 +39,13 @@ namespace WulaFallenEmpire
if (aircraftManager.TryUseAircraft(Props.requiredAircraftType, Props.aircraftsPerUse, parent.pawn.Faction, Props.aircraftCooldownTicks))
{
// 成功消耗战机,发送消息
- Messages.Message("AircraftStrikeInitiated".Translate(Props.requiredAircraftType.LabelCap), MessageTypeDefOf.PositiveEvent);
- Log.Message("AircraftStrikeSuccess".Translate(Props.aircraftsPerUse, Props.requiredAircraftType.LabelCap));
+ Messages.Message("WULA_AircraftStrikeInitiated".Translate(Props.requiredAircraftType.LabelCap), MessageTypeDefOf.PositiveEvent);
+ Log.Message("WULA_AircraftStrikeSuccess".Translate(Props.aircraftsPerUse, Props.requiredAircraftType.LabelCap));
}
else
{
- Messages.Message("NoAvailableAircraft".Translate(Props.requiredAircraftType.LabelCap), MessageTypeDefOf.NegativeEvent);
- Log.Warning("AircraftStrikeFailed".Translate(Props.requiredAircraftType.LabelCap, parent.pawn.Faction?.Name ?? "UnknownFaction".Translate()));
+ Messages.Message("WULA_NoAvailableAircraft".Translate(Props.requiredAircraftType.LabelCap), MessageTypeDefOf.NegativeEvent);
+ Log.Warning("WULA_AircraftStrikeFailed".Translate(Props.requiredAircraftType.LabelCap, parent.pawn.Faction?.Name ?? "WULA_UnknownFaction".Translate()));
}
}
@@ -59,6 +59,44 @@ namespace WulaFallenEmpire
aircraftManager.HasAvailableAircraft(Props.requiredAircraftType, Props.aircraftsPerUse, parent.pawn.Faction);
}
+ // 关键修改:重写 GizmoDisabled 方法,在不满足条件时禁用按钮
+ public override bool GizmoDisabled(out string reason)
+ {
+ // 先检查基础条件
+ if (base.GizmoDisabled(out reason))
+ return true;
+
+ // 检查战机可用性
+ WorldComponent_AircraftManager aircraftManager = Find.World.GetComponent();
+ if (aircraftManager == null)
+ {
+ reason = "WULA_AircraftSystemNotReady".Translate();
+ return true;
+ }
+
+ if (!aircraftManager.HasAvailableAircraft(Props.requiredAircraftType, Props.aircraftsPerUse, parent.pawn.Faction))
+ {
+ int available = aircraftManager.GetAvailableAircraftCount(Props.requiredAircraftType, parent.pawn.Faction);
+ int total = aircraftManager.GetTotalAircraftCount(Props.requiredAircraftType, parent.pawn.Faction);
+
+ if (available == 0 && total == 0)
+ {
+ reason = "WULA_NoAvailableAircraftType".Translate(Props.requiredAircraftType.LabelCap);
+ }
+ else if (available < Props.aircraftsPerUse)
+ {
+ reason = "WULA_AircraftInsufficient".Translate(Props.requiredAircraftType.LabelCap, available, Props.aircraftsPerUse);
+ }
+ else
+ {
+ reason = "WULA_AircraftOnCooldown".Translate(Props.requiredAircraftType.LabelCap);
+ }
+ return true;
+ }
+
+ return false;
+ }
+
public override string ExtraLabelMouseAttachment(LocalTargetInfo target)
{
WorldComponent_AircraftManager aircraftManager = Find.World.GetComponent();
@@ -73,9 +111,9 @@ namespace WulaFallenEmpire
string cooldownSymbols = GetAircraftSymbols(onCooldown, "◇");
StringBuilder sb = new StringBuilder();
- sb.AppendLine("AvailableAircraft".Translate(Props.requiredAircraftType.LabelCap, availableSymbols));
- sb.AppendLine("CooldownAircraft".Translate(cooldownSymbols));
- sb.Append("CostPerUse".Translate(Props.aircraftsPerUse));
+ sb.AppendLine("WULA_AvailableAircraft".Translate(availableSymbols));
+ sb.AppendLine("WULA_CooldownAircraft".Translate(cooldownSymbols));
+ sb.Append("WULA_CostPerUse".Translate(Props.aircraftsPerUse));
return sb.ToString();
}
@@ -86,18 +124,16 @@ namespace WulaFallenEmpire
// 生成飞机符号表示
private string GetAircraftSymbols(int count, string symbol)
{
- if (count <= 0) return "—"; // 无飞机时显示破折号
+ if (count <= 0) return "—";
StringBuilder sb = new StringBuilder();
int displayCount = count;
- // 如果数量过多,用数字+符号表示
if (count > 10)
{
return $"{count}{symbol}";
}
- // 直接显示符号
for (int i = 0; i < displayCount; i++)
{
sb.Append(symbol);
@@ -117,7 +153,7 @@ namespace WulaFallenEmpire
{
if (throwMessages)
{
- Messages.Message("NoAircraftForStrike".Translate(Props.requiredAircraftType.LabelCap), MessageTypeDefOf.RejectInput);
+ Messages.Message("WULA_NoAircraftForStrike".Translate(), MessageTypeDefOf.RejectInput);
}
return false;
}
@@ -140,11 +176,12 @@ namespace WulaFallenEmpire
float cooldownHours = TicksToHours(Props.aircraftCooldownTicks);
StringBuilder sb = new StringBuilder();
- sb.AppendLine("AircraftStatusTooltip".Translate());
- sb.AppendLine("• " + "TotalAircraft".Translate(total));
- sb.AppendLine("• " + "ReadyAircraft".Translate(available));
- sb.AppendLine("• " + "CooldownAircraft".Translate(onCooldown));
- sb.AppendLine("AircraftAbilityDescription".Translate(Props.requiredAircraftType.LabelCap, Props.aircraftsPerUse, cooldownHours.ToString("F1")));
+ sb.AppendLine("WULA_AircraftStatus".Translate());
+ sb.AppendLine("WULA_TotalAircraft".Translate(total));
+ sb.AppendLine("WULA_ReadyAircraft".Translate(available));
+ sb.AppendLine("WULA_CooldownAircraftCount".Translate(onCooldown));
+ sb.AppendLine("WULA_AircraftRequirement".Translate(Props.requiredAircraftType.LabelCap, Props.aircraftsPerUse));
+ sb.AppendLine("WULA_CooldownTime".Translate(cooldownHours.ToString("F1")));
return sb.ToString();
}
@@ -155,7 +192,6 @@ namespace WulaFallenEmpire
// 将 tick 转换为小时
private float TicksToHours(int ticks)
{
- // RimWorld 中 1 小时 = 2500 tick
return ticks / 2500f;
}
}
diff --git a/Source/WulaFallenEmpire/Flyover/WULA_DestroyFlyOverByFacilities/CompProperties_DestroyFlyOverByFacilities.cs b/Source/WulaFallenEmpire/Flyover/WULA_DestroyFlyOverByFacilities/CompProperties_DestroyFlyOverByFacilities.cs
new file mode 100644
index 00000000..3063c5d8
--- /dev/null
+++ b/Source/WulaFallenEmpire/Flyover/WULA_DestroyFlyOverByFacilities/CompProperties_DestroyFlyOverByFacilities.cs
@@ -0,0 +1,57 @@
+using System.Collections.Generic;
+using RimWorld;
+using Verse;
+
+namespace WulaFallenEmpire
+{
+ // CompProperties 定义
+ public class CompProperties_DestroyFlyOverByFacilities : CompProperties_AbilityEffect
+ {
+ public CompProperties_DestroyFlyOverByFacilities()
+ {
+ compClass = typeof(CompAbilityEffect_DestroyFlyOverByFacilities);
+ }
+ }
+
+ // Comp 实现
+ public class CompAbilityEffect_DestroyFlyOverByFacilities : CompAbilityEffect
+ {
+ public new CompProperties_DestroyFlyOverByFacilities Props => (CompProperties_DestroyFlyOverByFacilities)props;
+
+ public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
+ {
+ base.Apply(target, dest);
+
+ if (parent.pawn?.Map == null) return;
+
+ // 销毁所有 FlyOver 物体
+ DestroyAllFlyOvers();
+ }
+
+ // 销毁所有 FlyOver
+ private void DestroyAllFlyOvers()
+ {
+ List flyOvers = new List();
+
+ // 获取地图上所有的 FlyOver
+ foreach (Thing thing in parent.pawn.Map.listerThings.AllThings)
+ {
+ if (thing is FlyOver flyOver)
+ {
+ flyOvers.Add(flyOver);
+ }
+ }
+
+ // 销毁找到的 FlyOver
+ foreach (FlyOver flyOver in flyOvers)
+ {
+ flyOver.EmergencyDestroy();
+ }
+
+ if (flyOvers.Count > 0)
+ {
+ Messages.Message($"WULA_DestroyFlyOver".Translate(), parent.pawn, MessageTypeDefOf.PositiveEvent);
+ }
+ }
+ }
+}
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index ff80bf29..149827e0 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -127,6 +127,7 @@
+
diff --git a/美术与文本源文件/Wula/Hair/WULA_Double_Ponytail_Long_south.sai2 b/美术与文本源文件/Wula/Hair/WULA_Double_Ponytail_Long_south.sai2
index e84c2885..54be1c19 100644
Binary files a/美术与文本源文件/Wula/Hair/WULA_Double_Ponytail_Long_south.sai2 and b/美术与文本源文件/Wula/Hair/WULA_Double_Ponytail_Long_south.sai2 differ
diff --git a/美术与文本源文件/Wula/Hair/WULA_High_Ponytail_south.sai2 b/美术与文本源文件/Wula/Hair/WULA_High_Ponytail_south.sai2
index 8652ae97..b7ee19eb 100644
Binary files a/美术与文本源文件/Wula/Hair/WULA_High_Ponytail_south.sai2 and b/美术与文本源文件/Wula/Hair/WULA_High_Ponytail_south.sai2 differ
diff --git a/美术与文本源文件/Wula/Hair/WULA_One_Side_Ponytail_south.sai2 b/美术与文本源文件/Wula/Hair/WULA_One_Side_Ponytail_south.sai2
index 4e8bbc42..c544edd2 100644
Binary files a/美术与文本源文件/Wula/Hair/WULA_One_Side_Ponytail_south.sai2 and b/美术与文本源文件/Wula/Hair/WULA_One_Side_Ponytail_south.sai2 differ
diff --git a/美术与文本源文件/Wula/Hair/WULA_Rotational_Ponytail_south.sai2 b/美术与文本源文件/Wula/Hair/WULA_Rotational_Ponytail_south.sai2
index 90bbd26e..6ada5165 100644
Binary files a/美术与文本源文件/Wula/Hair/WULA_Rotational_Ponytail_south.sai2 and b/美术与文本源文件/Wula/Hair/WULA_Rotational_Ponytail_south.sai2 differ
diff --git a/美术与文本源文件/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.sai2 b/美术与文本源文件/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.sai2
index 46ff76bf..f5622e60 100644
Binary files a/美术与文本源文件/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.sai2 and b/美术与文本源文件/Wula/Things/WulaSpecies/Addons/WULA_Addons_Antenna_south.sai2 differ
diff --git a/美术与文本源文件/Wula/Things/WulaSpecies/Heads/Average_Normal_south.sai2 b/美术与文本源文件/Wula/Things/WulaSpecies/Heads/Average_Normal_south.sai2
index 377cb0ca..b9ede907 100644
Binary files a/美术与文本源文件/Wula/Things/WulaSpecies/Heads/Average_Normal_south.sai2 and b/美术与文本源文件/Wula/Things/WulaSpecies/Heads/Average_Normal_south.sai2 differ
diff --git a/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.sai2 b/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.sai2
index 1d77f265..6f10f2aa 100644
Binary files a/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.sai2 and b/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.sai2 differ