diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll index 67db11af..a86d36f6 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/DroneWorkModeDefs/DroneWorkModes.xml b/1.6/1.6/Defs/DroneWorkModeDefs/DroneWorkModes.xml index ea9de08b..b61d2c16 100644 --- a/1.6/1.6/Defs/DroneWorkModeDefs/DroneWorkModes.xml +++ b/1.6/1.6/Defs/DroneWorkModeDefs/DroneWorkModes.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/1.6/1.6/Defs/JobDefs/Jobs_WULA_AutonomousMech.xml b/1.6/1.6/Defs/JobDefs/Jobs_WULA_AutonomousMech.xml index fbfa5302..ece1f6a1 100644 --- a/1.6/1.6/Defs/JobDefs/Jobs_WULA_AutonomousMech.xml +++ b/1.6/1.6/Defs/JobDefs/Jobs_WULA_AutonomousMech.xml @@ -1,12 +1,12 @@ - + \ No newline at end of file diff --git a/1.6/1.6/Defs/QuestScriptDefs/WULA_Vacation_Quest.xml b/1.6/1.6/Defs/QuestScriptDefs/WULA_Vacation_Quest.xml index 1c892f95..cda66585 100644 --- a/1.6/1.6/Defs/QuestScriptDefs/WULA_Vacation_Quest.xml +++ b/1.6/1.6/Defs/QuestScriptDefs/WULA_Vacation_Quest.xml @@ -238,6 +238,35 @@ + +
  • + 30 + Give_Tex_Reward_Counter + + +
  • + 900000 + + +
  • + + 尽管没有实质上的缴税,但是殖民地还是收到了一份缴税凭证。\n\n看起来某人正在悄悄答谢殖民地。 + PositiveEvent +
  • +
  • + WULA_Base_Tex_Reward + permissionReward +
  • +
  • + $permissionReward +
  • + + + + + + + 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 cb843f17..16a3bd7a 100644 --- a/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml +++ b/1.6/1.6/Defs/ThingDefs_Races/Races_Wulaspecies.xml @@ -1331,7 +1331,7 @@ false -
  • +
  • Drafted diff --git a/1.6/1.6/Patches/WULA_BaseStoryteller_Patch.xml b/1.6/1.6/Patches/WULA_BaseStoryteller_Patch.xml index 8523f4f2..beccd99f 100644 --- a/1.6/1.6/Patches/WULA_BaseStoryteller_Patch.xml +++ b/1.6/1.6/Patches/WULA_BaseStoryteller_Patch.xml @@ -29,7 +29,7 @@ 0 - 15 + 10 false diff --git a/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompAreaDamage.cs b/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompAreaDamage.cs index 4b257d5d..6dc6f405 100644 --- a/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompAreaDamage.cs +++ b/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompAreaDamage.cs @@ -61,7 +61,8 @@ namespace WulaFallenEmpire List thingList = cell.GetThingList(map); foreach (Thing thing in thingList) { - if (IsValidTarget(thing) && !thingsInRange.Contains(thing)) + // 修改:添加目标类型检查,只处理建筑和Pawn + if (IsValidTargetType(thing) && IsValidTarget(thing) && !thingsInRange.Contains(thing)) { thingsInRange.Add(thing); } @@ -75,78 +76,120 @@ namespace WulaFallenEmpire } } + /// + /// 检查目标是否为建筑或Pawn + /// + private bool IsValidTargetType(Thing thing) + { + // 只针对建筑和Pawn + return thing is Building || thing is Pawn; + } + private bool IsValidTarget(Thing thing) { - // 检查是否为 Pawn(Pawn 有独立的健康系统) + // 首先检查是否为建筑或Pawn(双重检查) + if (!(thing is Building || thing is Pawn)) + { + return false; + } + + // 检查是否为 Pawn if (thing is Pawn pawn) { - Faction targetFaction = pawn.Faction; - Faction parentFaction = parent.Faction; - - if (pawn.Dead || pawn.Downed) - return false; - - // 检查是否影响生物 - if (!Props.affectPawns) - return false; - - // 如果父物体没有派系,则只检查目标派系 - if (parentFaction == null) - { - if (targetFaction == null && !Props.affectNeutral) - return false; - if (targetFaction != null && targetFaction.IsPlayer && !Props.affectFriendly) - return false; - if (targetFaction != null && !targetFaction.IsPlayer && !Props.affectHostile) - return false; - } - else - { - // 正常阵营关系检查 - if (targetFaction == null) - { - if (!Props.affectNeutral) - return false; - } - else if (targetFaction == parentFaction) - { - if (!Props.affectFriendly) - return false; - } - else if (targetFaction.HostileTo(parentFaction)) - { - if (!Props.affectHostile) - return false; - } - else - { - if (!Props.affectNeutral) - return false; - } - } + // 移除植物检查,因为不再处理植物 + // 修改:简化Pawn检查逻辑 + return IsValidPawnTarget(pawn); } - else + // 检查是否为建筑 + else if (thing is Building building) { - // 对于非 Pawn 物体,检查生命值系统 - if (thing.def.useHitPoints == false || thing.HitPoints <= 0) - return false; - - // 检查物体类型过滤 - if (thing is Building && !Props.affectBuildings) - return false; - if (thing is Plant && !Props.affectPlants) - return false; + return IsValidBuildingTarget(building); } - // 如果设置为影响所有物体,跳过后续检查 - if (Props.affectEverything) - return true; + return false; + } - // 如果忽略阵营关系,跳过阵营检查 + /// + /// 检查Pawn是否有效目标 + /// + private bool IsValidPawnTarget(Pawn pawn) + { + // 基础检查:死亡或倒地的Pawn不是有效目标 + if (pawn.Dead || pawn.Downed) + return false; + + // 检查是否影响Pawn + if (!Props.affectPawns) + return false; + + // 检查阵营关系 + return CheckFactionRelationship(pawn.Faction); + } + + /// + /// 检查建筑是否有效目标 + /// + private bool IsValidBuildingTarget(Building building) + { + // 基础检查:建筑必须有生命值且未损坏 + if (building.def.useHitPoints == false || building.HitPoints <= 0) + return false; + + // 检查是否影响建筑 + if (!Props.affectBuildings) + return false; + + // 检查阵营关系 + return CheckFactionRelationship(building.Faction); + } + + /// + /// 检查阵营关系 + /// + private bool CheckFactionRelationship(Faction targetFaction) + { + Faction parentFaction = parent.Faction; + + // 如果忽略所有阵营关系检查,直接返回true if (Props.ignoreFactionRelations) return true; - return true; + // 如果影响所有物体,直接返回true + if (Props.affectEverything) + return true; + + // 父物体没有派系的情况 + if (parentFaction == null) + { + // 目标也没有派系 - 检查是否影响中立 + if (targetFaction == null) + return Props.affectNeutral; + + // 目标是玩家 - 检查是否影响友好 + if (targetFaction.IsPlayer) + return Props.affectFriendly; + + // 目标是非玩家派系 - 检查是否影响敌对 + return Props.affectHostile; + } + + // 父物体有派系的情况 + if (targetFaction == null) + { + // 目标没有派系 - 检查是否影响中立 + return Props.affectNeutral; + } + + // 目标与父物体同派系 - 检查是否影响友好 + if (targetFaction == parentFaction) + return Props.affectFriendly; + + // 目标与父物体敌对 - 检查是否影响敌对 + if (targetFaction.HostileTo(parentFaction)) + return Props.affectHostile; + + // 其他情况视为中立 - 检查是否影响中立 + return Props.affectNeutral; } private void ApplyDamageToTarget(Thing target) @@ -187,7 +230,7 @@ namespace WulaFallenEmpire { damageFactor = Props.fixedDamageFactor; } - // 使用心灵敏感度缩放 + // 使用心灵敏感度缩放(仅对Pawn有效) else if (Props.scaleWithPsychicSensitivity && target is Pawn pawn) { damageFactor = CalculatePsychicSensitivityFactor(pawn); @@ -225,15 +268,14 @@ namespace WulaFallenEmpire /// private void HandleSpecialEffects(Thing target, DamageInfo damageInfo) { - // 如果是 Pawn,可以添加额外的效果 - if (target is Pawn pawn) + // 显示伤害数值(调试用) + if (Props.showDamageNumbers) { - // 显示伤害数值(调试用) - if (Props.showDamageNumbers) - { - MoteMaker.ThrowText(target.DrawPos, target.Map, damageInfo.Amount.ToString()); - } + MoteMaker.ThrowText(target.DrawPos, target.Map, damageInfo.Amount.ToString()); } + + // 可以根据伤害类型添加额外效果 + // 例如:火焰伤害点燃目标,电击伤害麻痹目标等 } public override void PostExposeData() @@ -276,6 +318,8 @@ namespace WulaFallenEmpire public override string CompInspectStringExtra() { string baseString = base.CompInspectStringExtra(); + + // 状态信息 string statusText = enabled ? "AreaDamageEnabled".Translate() : "AreaDamageDisabled".Translate(); @@ -285,5 +329,34 @@ namespace WulaFallenEmpire else return baseString + "\n" + statusText; } + + /// + /// 获取范围内所有有效目标(调试和外部调用用) + /// + public List GetValidTargetsInRange() + { + Map map = parent.Map; + List validTargets = new List(); + + if (map == null || !enabled) + return validTargets; + + foreach (IntVec3 cell in GenRadial.RadialCellsAround(parent.Position, Props.radius, true)) + { + if (!cell.InBounds(map)) + continue; + + List thingList = cell.GetThingList(map); + foreach (Thing thing in thingList) + { + if (IsValidTargetType(thing) && IsValidTarget(thing) && !validTargets.Contains(thing)) + { + validTargets.Add(thing); + } + } + } + + return validTargets; + } } } diff --git a/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompProperties_AreaDamage.cs b/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompProperties_AreaDamage.cs index d56a6371..28d6242e 100644 --- a/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompProperties_AreaDamage.cs +++ b/Source/WulaFallenEmpire/ThingComp/WULA_AreaDamage/CompProperties_AreaDamage.cs @@ -24,7 +24,9 @@ namespace WulaFallenEmpire public bool affectHostile = true; // 是否影响敌方 public bool affectBuildings = true; // 是否影响建筑 public bool affectPawns = true; // 是否影响生物 - public bool affectPlants = false; // 是否影响植物 + + // 移除植物相关设置,因为现在只针对建筑和Pawn + // public bool affectPlants = false; // 已移除:不再影响植物 // 特殊设置 public bool ignoreFactionRelations = false; // 忽略所有阵营关系检查(用于无派系实体) diff --git a/美术与文本源文件/V2宣传截图/~$ DOCX 文档.docx b/美术与文本源文件/V2宣传截图/~$ DOCX 文档.docx deleted file mode 100644 index 7bb4c1b9..00000000 Binary files a/美术与文本源文件/V2宣传截图/~$ DOCX 文档.docx and /dev/null differ diff --git a/美术与文本源文件/V2宣传截图/新建 DOCX 文档.docx b/美术与文本源文件/V2宣传截图/新建 DOCX 文档.docx index 0417a32c..4969d99a 100644 Binary files a/美术与文本源文件/V2宣传截图/新建 DOCX 文档.docx and b/美术与文本源文件/V2宣传截图/新建 DOCX 文档.docx differ