暂存
This commit is contained in:
Binary file not shown.
@@ -78,15 +78,13 @@
|
|||||||
<level>8</level>
|
<level>8</level>
|
||||||
</li>
|
</li>
|
||||||
</skillLevels> -->
|
</skillLevels> -->
|
||||||
<instantTrainables>
|
<trainables>
|
||||||
<!-- <li>ARA_Sowing</li>
|
<li>
|
||||||
<li>Dig</li> -->
|
<trainable>Haul</trainable>
|
||||||
<li>Haul</li>
|
<trainInstantly>true</trainInstantly>
|
||||||
<!-- 救援 -->
|
<setWanted>true</setWanted>
|
||||||
<!-- <li>Rescue</li> -->
|
</li>
|
||||||
<!-- 觅食 -->
|
</trainables>
|
||||||
<!-- <li>Forage</li> -->
|
|
||||||
</instantTrainables>
|
|
||||||
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
@@ -102,9 +100,13 @@
|
|||||||
</race>
|
</race>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AdvancedTraining">
|
<li Class="ArachnaeSwarm.CompProperties_AdvancedTraining">
|
||||||
<instantTrainables>
|
<trainables>
|
||||||
<li>ARA_Sowing</li>
|
<li>
|
||||||
</instantTrainables>
|
<trainable>ARA_Sowing</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
</trainables>
|
||||||
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
@@ -121,10 +123,18 @@
|
|||||||
</race>
|
</race>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AdvancedTraining">
|
<li Class="ArachnaeSwarm.CompProperties_AdvancedTraining">
|
||||||
<instantTrainables>
|
<trainables>
|
||||||
<li>Dig</li>
|
<li>
|
||||||
<li>AttackTarget</li>
|
<trainable>Dig</trainable>
|
||||||
</instantTrainables>
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<trainable>AttackTarget</trainable>
|
||||||
|
<trainInstantly>true</trainInstantly>
|
||||||
|
<setWanted>true</setWanted>
|
||||||
|
</li>
|
||||||
|
</trainables>
|
||||||
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
<disableAllSkillDecay>true</disableAllSkillDecay> <!-- 阻止这个动物的所有技能衰减 -->
|
||||||
</li>
|
</li>
|
||||||
</comps>
|
</comps>
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ namespace ArachnaeSwarm
|
|||||||
public class CompProperties_AdvancedTraining : CompProperties
|
public class CompProperties_AdvancedTraining : CompProperties
|
||||||
{
|
{
|
||||||
// 1. 用于设置固定技能等级
|
// 1. 用于设置固定技能等级
|
||||||
public List<SkillLevelEntry> skillLevels = new List<SkillLevelEntry>();
|
public List<SkillLevelEntry> skillLevels = new List<SkillLevelEntry>();
|
||||||
|
|
||||||
// 2. 用于指定生成时立即完成的训练
|
// 2. 用于配置训练项目
|
||||||
public List<TrainableDef> instantTrainables = new List<TrainableDef>();
|
public List<TrainableEntry> trainables = new List<TrainableEntry>();
|
||||||
|
|
||||||
// 3. 全局开关:是否阻止所有技能衰减
|
// 3. 全局开关:是否阻止所有技能衰减
|
||||||
public bool disableAllSkillDecay = false;
|
public bool disableAllSkillDecay = false;
|
||||||
|
|
||||||
public CompProperties_AdvancedTraining()
|
public CompProperties_AdvancedTraining()
|
||||||
{
|
{
|
||||||
@@ -25,10 +25,15 @@ namespace ArachnaeSwarm
|
|||||||
{
|
{
|
||||||
public SkillDef skill;
|
public SkillDef skill;
|
||||||
public int level = 0;
|
public int level = 0;
|
||||||
// 这里的 disableDecay 字段现在是冗余的,因为我们有全局的 disableAllSkillDecay
|
public bool disableDecay = true;
|
||||||
// 但为了兼容性或未来可能的需求,可以保留。
|
}
|
||||||
// 在当前方案中,它的值将被忽略。
|
|
||||||
public bool disableDecay = true;
|
// 新增:用于定义训练项目的条目
|
||||||
|
public class TrainableEntry
|
||||||
|
{
|
||||||
|
public TrainableDef trainable;
|
||||||
|
public bool trainInstantly = false; // 是否立即完成训练
|
||||||
|
public bool setWanted = false; // 是否默认启用
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CompAdvancedTraining : ThingComp
|
public class CompAdvancedTraining : ThingComp
|
||||||
@@ -53,22 +58,28 @@ namespace ArachnaeSwarm
|
|||||||
if (skillRecord != null)
|
if (skillRecord != null)
|
||||||
{
|
{
|
||||||
skillRecord.Level = entry.level;
|
skillRecord.Level = entry.level;
|
||||||
// 注意: 激情 (passion) 影响学习速度,不直接阻止衰减。
|
|
||||||
// 实际的衰减阻止逻辑在 TrainingSystem_Patcher.cs 中处理。
|
|
||||||
// 默认情况下,我们不改变 passion,除非有特殊需求。
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- 2. 执行瞬间训练 (只在初次生成时) ---
|
// --- 2. 处理训练项目 (只在初次生成时) ---
|
||||||
if (!respawningAfterLoad && pawn.training != null && !Props.instantTrainables.NullOrEmpty())
|
if (!respawningAfterLoad && pawn.training != null && !Props.trainables.NullOrEmpty())
|
||||||
{
|
{
|
||||||
foreach (var trainable in Props.instantTrainables)
|
foreach (var entry in Props.trainables)
|
||||||
{
|
{
|
||||||
if (trainable != null && !pawn.training.HasLearned(trainable))
|
if (entry.trainable == null) continue;
|
||||||
|
|
||||||
|
// 2a. 立即完成训练
|
||||||
|
if (entry.trainInstantly && !pawn.training.HasLearned(entry.trainable))
|
||||||
{
|
{
|
||||||
pawn.training.Train(trainable, null, complete: true);
|
pawn.training.Train(entry.trainable, null, complete: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2b. 设置为默认启用
|
||||||
|
if (entry.setWanted)
|
||||||
|
{
|
||||||
|
pawn.training.SetWantedRecursive(entry.trainable, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user