diff --git a/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects.xml b/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects.xml
index 28856108..9cd4b1f7 100644
--- a/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects.xml
+++ b/1.6/1.6/Defs/ResearchProjectDefs/WULA_ResearchProjects.xml
@@ -421,27 +421,13 @@
WULA_Mech_Mobile_Shield_Technology
- 6.00
+ 10.00
5.60
允许殖民地申请空投MSm-8"放射盾",乌拉帝国的中型战争机械,一种多足机械体,拥有密不透风的反射盾的同时,还可以灼烧那些企图进入护盾区域内的宵小之辈。
- 2000
-
- WULA_Synth_Productor_Technology
-
-
- WULA_Colony_License_LV2_Technology
-
-
-
- WULA_Mech_Mobile_Shield_Teleporter_Technology
- 10.00
- 5.60
-
- 允许殖民地使用MSm-8"放射盾"内置的传送器,机械乌拉在其覆盖范围内,处于征召状态下进行常规移动时,会以瞬间传送代替步行。
3000
- WULA_Mech_Mobile_Shield_Technology
+ WULA_Synth_Productor_Technology
WULA_Colony_License_LV3_Technology
diff --git a/1.6/1.6/Defs/ThingDefs_Races/WULA_Mechunit_Race.xml b/1.6/1.6/Defs/ThingDefs_Races/WULA_Mechunit_Race.xml
index 87f7d407..73406ed7 100644
--- a/1.6/1.6/Defs/ThingDefs_Races/WULA_Mechunit_Race.xml
+++ b/1.6/1.6/Defs/ThingDefs_Races/WULA_Mechunit_Race.xml
@@ -78,11 +78,11 @@
9999
0
- 1
- 1
+ 1.25
+ 1.25
2
- 3
+ 4
300
@@ -302,7 +302,7 @@
3
- 3
+ 2
true
@@ -356,11 +356,11 @@
9999
0
- 1
- 1
+ 1.25
+ 1.25
2
- 3
+ 4
300
@@ -570,7 +570,7 @@
3
- 3
+ 2
true
@@ -598,6 +598,12 @@
PawnFlyer
PawnFlyerLand
+
+
+ true
+ 1
+ 60
+ Wula_TerrainBlocked
false
@@ -616,6 +622,8 @@
0.5
0.5
2
+
+ 5
300
@@ -649,7 +657,7 @@
- 15
+ 25
300
2400
30
@@ -669,13 +677,13 @@
true
- 0.85
+ 0.95
30
0
Interceptor_BlockedProjectile
- 15
+ 25
30
Flame
8
@@ -687,7 +695,7 @@
false
false
热辐射
- MSm-8"放射盾"可以打开外壳,蒸发胆敢进入反射立场内的敌军——这同时会使得它伤害附近所有的散落物品。
+ MSm-8"放射盾"可以打开外壳,蒸发胆敢进入反射立场内的敌军。
Wula/UI/Commands/Wula_Psi_Titan_AreaDamage
+
+
+
+ 0.5
+ 1.0
+ 15
+ 6
+
+
+ 3
+
+
+ true
+ true
+
+
+ Blunt
+ 1
+ 0.1
+
+
+ MeleeHit_BladelinkZeusHammer
+
+
+ Blunt
+ 20
+ 4
+ true
+
+ MeleeHit_BladelinkZeusHammer
+
+
+ PawnFlyer
+
+ PawnFlyerLand
+
+
+ true
+ 1
+ 60
+ Wula_TerrainBlocked
+
+
+ false
+ false
+ false
+
Wula_Mech_Mobile_Factory
- 乌拉帝国的大型战争机械,简直就是一座移动堡垒——它不仅装甲厚实、火炮林立,还能在战场上生产大量的辅助战争机械以形成坚实的弹性阵线,生来就是为了粉碎坚固的要塞和顽强的抵抗。
+ 乌拉帝国的大型构装体,简直就是一座移动堡垒——它不仅装甲厚实、火炮林立,还能在战场上生产大量的辅助战争机械以形成坚实的弹性阵线,生来就是为了粉碎坚固的要塞和顽强的抵抗。
1
5
@@ -845,6 +902,8 @@
1.75
1.75
2
+
+ 10
300
@@ -1287,6 +1346,12 @@
PawnFlyer
PawnFlyerLand
+
+
+ true
+ 1
+ 60
+ Wula_TerrainBlocked
false
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Icon.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Icon.png
index bdcec844..655d3404 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Icon.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Icon.png differ
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Incoming.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Incoming.png
index 927fdd0d..98b5a264 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Incoming.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Heavy_Panzer_Incoming.png differ
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Icon.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Icon.png
index 404761eb..508efa65 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Icon.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Icon.png differ
diff --git a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming.png b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming.png
index 2febcdbd..27098333 100644
Binary files a/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming.png and b/Content/Textures/Wula/Things/Wula_AI_Heavy_Panzer/Wula_AI_Rocket_Panzer_Incoming.png differ
diff --git a/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_north.png b/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_north.png
index f18bbaa6..3d09692e 100644
Binary files a/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_north.png and b/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_north.png differ
diff --git a/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_south.png b/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_south.png
index 0398fc35..96ebb903 100644
Binary files a/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_south.png and b/Content/Textures/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_south.png differ
diff --git a/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveWithDirectHit.cs b/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveWithDirectHit.cs
new file mode 100644
index 00000000..7a94cebe
--- /dev/null
+++ b/Source/WulaFallenEmpire/Projectiles/Projectile_ExplosiveWithDirectHit.cs
@@ -0,0 +1,259 @@
+using System;
+using System.Collections.Generic;
+using RimWorld;
+using Verse;
+using Verse.Sound;
+
+namespace WulaFallenEmpire
+{
+ ///
+ /// 支持直击伤害的爆炸弹丸
+ ///
+ public class Projectile_ExplosiveWithDirectHit : Projectile_Explosive
+ {
+ // 缓存ModExtension
+ private ProjectileExtension_DirectHit directHitExtension = null;
+
+ // 标记是否已经应用了直击伤害
+ private bool directDamageApplied = false;
+
+ public override void ExposeData()
+ {
+ base.ExposeData();
+ Scribe_Values.Look(ref directDamageApplied, "directDamageApplied", false);
+ }
+
+ protected override void Impact(Thing hitThing, bool blockedByShield = false)
+ {
+ // 获取ModExtension
+ if (directHitExtension == null)
+ {
+ directHitExtension = def.GetModExtension();
+ }
+
+ // 应用直击伤害(只在有直接击中目标时)
+ if (hitThing != null && directHitExtension != null &&
+ directHitExtension.directDamageAmount > 0 &&
+ !directDamageApplied)
+ {
+ ApplyDirectDamage(hitThing, blockedByShield);
+ directDamageApplied = true;
+ }
+
+ // 调用基类方法处理爆炸
+ base.Impact(hitThing, blockedByShield);
+ }
+
+ ///
+ /// 应用直击伤害
+ ///
+ private void ApplyDirectDamage(Thing hitThing, bool blockedByShield = false)
+ {
+ // 如果只在无护盾时生效且有护盾阻挡,则不应用
+ if (blockedByShield && directHitExtension.applyDirectDamageOnlyWithoutShield)
+ return;
+
+ // 准备伤害信息
+ DamageInfo damageInfo = CreateDirectDamageInfo();
+
+ // 对目标造成伤害
+ hitThing.TakeDamage(damageInfo);
+
+ // 播放效果
+ PlayDirectImpactEffects(hitThing);
+ }
+
+ ///
+ /// 创建直击伤害信息
+ ///
+ private DamageInfo CreateDirectDamageInfo()
+ {
+ // 确定伤害类型
+ DamageDef damageDef = directHitExtension.directDamageDef;
+ if (damageDef == null)
+ {
+ // 默认使用爆炸伤害类型
+ damageDef = base.DamageDef ?? DamageDefOf.Bomb;
+ }
+
+ // 确定伤害量
+ int damageAmount = directHitExtension.directDamageAmount;
+ if (directHitExtension.useEquipmentStatsForDirectDamage && equipment != null)
+ {
+ // 使用装备属性计算伤害
+ damageAmount = def.projectile.GetDamageAmount(equipment);
+ }
+
+ // 确定护甲穿透
+ float armorPenetration = directHitExtension.directArmorPenetration;
+ if (directHitExtension.useEquipmentStatsForDirectDamage && equipment != null)
+ {
+ armorPenetration = def.projectile.GetArmorPenetration(equipment);
+ }
+
+ // 创建伤害信息
+ DamageInfo damageInfo = new DamageInfo(
+ damageDef,
+ damageAmount,
+ armorPenetration,
+ -1f, // 角度
+ launcher,
+ null, // 击中部位
+ equipmentDef,
+ DamageInfo.SourceCategory.ThingOrUnknown,
+ intendedTarget.Thing
+ );
+
+ // 添加额外伤害
+ AddExtraDirectDamages(damageInfo);
+
+ return damageInfo;
+ }
+
+ ///
+ /// 添加上额外伤害
+ ///
+ private void AddExtraDirectDamages(DamageInfo mainDamage)
+ {
+ if (directHitExtension?.extraDirectDamages == null)
+ return;
+
+ foreach (var extraDamage in directHitExtension.extraDirectDamages)
+ {
+ if (extraDamage != null && extraDamage.def != null && extraDamage.amount > 0)
+ {
+ DamageInfo extraDamageInfo = new DamageInfo(
+ extraDamage.def,
+ extraDamage.amount,
+ extraDamage.armorPenetration,
+ -1f,
+ launcher,
+ null,
+ equipmentDef,
+ DamageInfo.SourceCategory.ThingOrUnknown,
+ intendedTarget.Thing
+ );
+
+ // 应用额外伤害
+ if (mainDamage.IntendedTarget != null && mainDamage.IntendedTarget != null)
+ {
+ mainDamage.IntendedTarget.TakeDamage(extraDamageInfo);
+ }
+ }
+ }
+ }
+
+ ///
+ /// 播放直击效果
+ ///
+ private void PlayDirectImpactEffects(Thing hitThing)
+ {
+ Map map = base.Map;
+ if (map == null)
+ return;
+
+ // 播放效果器
+ if (directHitExtension.directImpactEffecter != null)
+ {
+ Effecter effecter = directHitExtension.directImpactEffecter.Spawn();
+ effecter.Trigger(new TargetInfo(base.Position, map),
+ new TargetInfo(hitThing.Position, map));
+ effecter.Cleanup();
+ }
+
+ // 播放音效
+ if (directHitExtension.directImpactSound != null)
+ {
+ directHitExtension.directImpactSound.PlayOneShot(new TargetInfo(base.Position, map));
+ }
+ }
+
+ ///
+ /// 覆盖爆炸方法以添加直击伤害信息
+ ///
+ protected override void Explode()
+ {
+ // 在爆炸前确保直击伤害已经应用(如果是延迟爆炸的情况)
+ if (!directDamageApplied && directHitExtension != null &&
+ directHitExtension.directDamageAmount > 0 && intendedTarget.Thing != null)
+ {
+ ApplyDirectDamage(intendedTarget.Thing, false);
+ directDamageApplied = true;
+ }
+
+ // 调用基类爆炸方法
+ base.Explode();
+ }
+
+ ///
+ /// 获取调试信息
+ ///
+ public string GetDirectHitDebugInfo()
+ {
+ if (directHitExtension == null)
+ return "No direct hit extension configured.";
+
+ string info = "Direct Hit Configuration:\n";
+ info += $"Damage Def: {directHitExtension.directDamageDef?.defName ?? "None"}\n";
+ info += $"Damage Amount: {directHitExtension.directDamageAmount}\n";
+ info += $"Armor Penetration: {directHitExtension.directArmorPenetration}\n";
+ info += $"Use Equipment Stats: {directHitExtension.useEquipmentStatsForDirectDamage}\n";
+ info += $"Apply Without Shield Only: {directHitExtension.applyDirectDamageOnlyWithoutShield}\n";
+ info += $"Extra Damages Count: {directHitExtension.extraDirectDamages?.Count ?? 0}\n";
+ info += $"Direct Damage Applied: {directDamageApplied}";
+
+ return info;
+ }
+ }
+
+ ///
+ /// 直击伤害ModExtension定义
+ ///
+ public class ProjectileExtension_DirectHit : DefModExtension
+ {
+ ///
+ /// 直击伤害类型(默认为爆炸伤害类型)
+ ///
+ public DamageDef directDamageDef = null;
+
+ ///
+ /// 直击伤害量
+ ///
+ public int directDamageAmount = 0;
+
+ ///
+ /// 直击伤害护甲穿透
+ ///
+ public float directArmorPenetration = 0f;
+
+ ///
+ /// 直击伤害是否受装备影响
+ ///
+ public bool useEquipmentStatsForDirectDamage = false;
+
+ ///
+ /// 直击伤害额外伤害列表
+ ///
+ public List extraDirectDamages = null;
+
+ ///
+ /// 直击伤害是否只在击穿护盾后生效
+ ///
+ public bool applyDirectDamageOnlyWithoutShield = false;
+
+ ///
+ /// 直击伤害效果器
+ ///
+ public EffecterDef directImpactEffecter = null;
+
+ ///
+ /// 直击伤害音效
+ ///
+ public SoundDef directImpactSound = null;
+
+ ///
+ /// 是否显示直击伤害日志
+ ///
+ public bool logDirectDamage = false;
+ }
+}
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index c32753b3..acbcd702 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -106,6 +106,7 @@
+
diff --git a/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png b/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png
index 3b4af632..e8fde12c 100644
Binary files a/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png and b/美术与文本源文件/Wula/Things/Wula_AI_Heavy_Panzer/Bodies/Naked_Thin_east.png differ
diff --git a/美术与文本源文件/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_east.sai2 b/美术与文本源文件/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_east.sai2
index 78b0cf6c..2755d99c 100644
Binary files a/美术与文本源文件/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_east.sai2 and b/美术与文本源文件/Wula/Things/Wula_Mech_Mobile_Factory/Bodies/Naked_Thin_east.sai2 differ