护士装技能
This commit is contained in:
Binary file not shown.
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_addextraexp\\compproperties_addextraexp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_addextraexp\\compproperties_addextraexp.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
"AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_terrainrestriction\\compabilityeffect_terrainrestriction .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
@@ -23,14 +23,14 @@
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "CompProperties_AddExtraExp.cs",
|
||||
"DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
|
||||
"ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_AddExtraExp\\CompProperties_AddExtraExp.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAcAAAAAAAAAA==",
|
||||
"Title": "CompAbilityEffect_TerrainRestriction .cs",
|
||||
"DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
|
||||
"RelativeDocumentMoniker": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
|
||||
"ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
|
||||
"RelativeToolTip": "Abilities\\ARA_TerrainRestriction\\CompAbilityEffect_TerrainRestriction .cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAAEsAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-09-25T09:59:56.766Z",
|
||||
"WhenOpened": "2025-09-26T03:32:39.017Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class CompAbilityEffect_TerrainRestriction : CompAbilityEffect
|
||||
{
|
||||
public new CompProperties_AbilityTerrainRestriction Props => (CompProperties_AbilityTerrainRestriction)props;
|
||||
|
||||
// 检查能力是否可用
|
||||
public override bool GizmoDisabled(out string reason)
|
||||
{
|
||||
if (!IsCasterOnValidTerrain())
|
||||
{
|
||||
reason = Props.disabledReasonKey.Translate(GetTerrainList());
|
||||
return true;
|
||||
}
|
||||
reason = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 验证目标是否有效
|
||||
public override bool Valid(LocalTargetInfo target, bool throwMessages = false)
|
||||
{
|
||||
if (!base.Valid(target, throwMessages))
|
||||
return false;
|
||||
|
||||
// 检查施法者地形
|
||||
if (!IsCasterOnValidTerrain())
|
||||
{
|
||||
if (throwMessages)
|
||||
{
|
||||
Messages.Message(Props.casterTerrainFailMessage.Translate(GetTerrainList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// 应用效果前的最终验证
|
||||
public override bool CanApplyOn(LocalTargetInfo target, LocalTargetInfo dest)
|
||||
{
|
||||
if (!IsCasterOnValidTerrain())
|
||||
{
|
||||
Messages.Message(Props.casterTerrainFailMessage.Translate(GetTerrainList()), parent.pawn, MessageTypeDefOf.RejectInput, historical: false);
|
||||
return false;
|
||||
}
|
||||
return base.CanApplyOn(target, dest);
|
||||
}
|
||||
// 检查施法者地形是否有效
|
||||
private bool IsCasterOnValidTerrain()
|
||||
{
|
||||
if (parent.pawn == null || !parent.pawn.Spawned)
|
||||
return false;
|
||||
|
||||
TerrainDef casterTerrain = parent.pawn.Position.GetTerrain(parent.pawn.Map);
|
||||
return Props.terrainDefs != null && Props.terrainDefs.Contains(casterTerrain);
|
||||
}
|
||||
|
||||
// 获取地形列表的字符串表示
|
||||
private string GetTerrainList()
|
||||
{
|
||||
if (Props.terrainDefs == null)
|
||||
return "";
|
||||
|
||||
string terrainList = "";
|
||||
foreach (var terrain in Props.terrainDefs)
|
||||
{
|
||||
if (terrainList.Length > 0)
|
||||
terrainList += ", ";
|
||||
terrainList += terrain.label;
|
||||
}
|
||||
return terrainList;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using RimWorld;
|
||||
using System.Collections.Generic;
|
||||
using Verse;
|
||||
namespace ArachnaeSwarm
|
||||
{
|
||||
public class CompProperties_AbilityTerrainRestriction : CompProperties_AbilityEffect
|
||||
{
|
||||
// 允许释放技能的地形列表
|
||||
public List<TerrainDef> terrainDefs;
|
||||
// 失败消息配置
|
||||
[MustTranslate]
|
||||
public string casterTerrainFailMessage = "AbilityMustBeOnTerrain";
|
||||
[MustTranslate]
|
||||
public string disabledReasonKey = "AbilityDisabledNotOnTerrain";
|
||||
public CompProperties_AbilityTerrainRestriction()
|
||||
{
|
||||
compClass = typeof(CompAbilityEffect_TerrainRestriction);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -89,6 +89,8 @@
|
||||
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_ResearchPrereq.cs" />
|
||||
<Compile Include="Abilities\ARA_QueenAbility\CompAbilityEffect_SprayLiquidMulti.cs" />
|
||||
<Compile Include="Abilities\ARA_QueenAbility\CompProperties_AbilitySprayLiquidMulti.cs" />
|
||||
<Compile Include="Abilities\ARA_TerrainRestriction\CompAbilityEffect_TerrainRestriction .cs" />
|
||||
<Compile Include="Abilities\ARA_TerrainRestriction\CompProperties_TerrainRestriction.cs" />
|
||||
<Compile Include="Abilities\CompAbilityEffect_DRM_Deaddustpop.cs" />
|
||||
<Compile Include="Abilities\CompAbilityEffect_LaunchMultiProjectile.cs" />
|
||||
<Compile Include="Abilities\PsychicBrainburn\CompAbilityEffect_PsychicBrainburn.cs" />
|
||||
|
||||
Reference in New Issue
Block a user