兴趣度训练器
This commit is contained in:
Binary file not shown.
@@ -513,4 +513,238 @@
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- ==================== 热情训练器 ==================== -->
|
||||
|
||||
<!-- Melee -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Melee</defName>
|
||||
<label>乌拉帝国兴趣度训练包(格斗)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发格斗兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<!-- 指定要获得兴趣度的技能 -->
|
||||
<skill>Melee</skill>
|
||||
<!-- 指定获得的兴趣度等级。可以是 Minor (小火,官方翻译好奇) 或 Major (大火,官方翻译狂热) -->
|
||||
<passionGained>Major</passionGained>
|
||||
<!-- 指定随机失去兴趣度的技能数量范围。格式为 min~max -->
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Shooting -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Shooting</defName>
|
||||
<label>乌拉帝国兴趣度训练包(射击)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发射击兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Shooting</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Construction -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Construction</defName>
|
||||
<label>乌拉帝国兴趣度训练包(建造)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发建造兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Construction</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Mining -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Mining</defName>
|
||||
<label>乌拉帝国兴趣度训练包(采矿)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发采矿兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Mining</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Cooking -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Cooking</defName>
|
||||
<label>乌拉帝国兴趣度训练包(烹饪)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发烹饪兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Cooking</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Plants -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Plants</defName>
|
||||
<label>乌拉帝国兴趣度训练包(种植)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发种植兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Plants</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Animals -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Animals</defName>
|
||||
<label>乌拉帝国兴趣度训练包(驯兽)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发驯兽兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Animals</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Crafting -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Crafting</defName>
|
||||
<label>乌拉帝国兴趣度训练包(手工)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发手工兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Crafting</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Artistic -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Artistic</defName>
|
||||
<label>乌拉帝国兴趣度训练包(艺术)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发艺术兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Artistic</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Medicine -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Medicine</defName>
|
||||
<label>乌拉帝国兴趣度训练包(医疗)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发医疗兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Medicine</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Social -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Social</defName>
|
||||
<label>乌拉帝国兴趣度训练包(社交)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发社交兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Social</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
<!-- Intellectual -->
|
||||
<ThingDef ParentName="WULA_Syhth_Trainer">
|
||||
<defName>WULA_Syhth_Passion_Trainer_Intellectual</defName>
|
||||
<label>乌拉帝国兴趣度训练包(智识)</label>
|
||||
<comps>
|
||||
<li Class="CompProperties_Usable">
|
||||
<useJob>UseNeurotrainer</useJob>
|
||||
<useLabel>使用数据包激发智识兴趣</useLabel>
|
||||
<showUseGizmo>true</showUseGizmo>
|
||||
<userMustHaveHediff>Wula_Synth</userMustHaveHediff>
|
||||
</li>
|
||||
<li Class="WulaFallenEmpire.CompProperties_UseEffect_PassionTrainer">
|
||||
<skill>Intellectual</skill>
|
||||
<passionGained>Major</passionGained>
|
||||
<passionsLostRange>0~1</passionsLostRange>
|
||||
</li>
|
||||
</comps>
|
||||
</ThingDef>
|
||||
|
||||
</Defs>
|
||||
|
||||
@@ -8,4 +8,13 @@
|
||||
<WULA_MechSerumHealerNotWula>{0}不是机械乌拉,无法使用此修理套件。</WULA_MechSerumHealerNotWula>
|
||||
<WULA_WulaMechRepairKit>机械乌拉修理套件</WULA_WulaMechRepairKit>
|
||||
|
||||
<!-- Passion Trainer Messages -->
|
||||
<WULA_PassionGained>{0}对{1}技能燃起了新的热情!</WULA_PassionGained>
|
||||
<WULA_PassionLost>作为代价,{0}失去了对{1}技能的热情。</WULA_PassionLost>
|
||||
|
||||
<!-- Vanilla Overrides for Passion Trainer -->
|
||||
<PawnHasNoSkills>{0}没有技能系统,无法使用。</PawnHasNoSkills>
|
||||
<SkillTrainerHasNoSkill>该训练器未指定目标技能。</SkillTrainerHasNoSkill>
|
||||
<SkillDisabled>目标技能已被禁用,无法学习。</SkillDisabled>
|
||||
|
||||
</LanguageData>
|
||||
|
||||
Binary file not shown.
87
Source/WulaFallenEmpire/CompUseEffect_PassionTrainer.cs
Normal file
87
Source/WulaFallenEmpire/CompUseEffect_PassionTrainer.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using RimWorld;
|
||||
using Verse;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace WulaFallenEmpire
|
||||
{
|
||||
public class CompProperties_UseEffect_PassionTrainer : CompProperties_UseEffect
|
||||
{
|
||||
public SkillDef skill;
|
||||
public Passion passionGained = Passion.Major; // 可配置获得的热情等级,默认为大火
|
||||
public IntRange passionsLostRange = new IntRange(1, 1); // 可配置失去热情的技能数量范围
|
||||
|
||||
public CompProperties_UseEffect_PassionTrainer()
|
||||
{
|
||||
compClass = typeof(CompUseEffect_PassionTrainer);
|
||||
}
|
||||
}
|
||||
|
||||
public class CompUseEffect_PassionTrainer : CompUseEffect
|
||||
{
|
||||
public CompProperties_UseEffect_PassionTrainer Props => (CompProperties_UseEffect_PassionTrainer)props;
|
||||
|
||||
public override void DoEffect(Pawn usedBy)
|
||||
{
|
||||
base.DoEffect(usedBy);
|
||||
|
||||
if (usedBy.skills == null || Props.skill == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 1. 为指定技能设置热情
|
||||
SkillRecord targetSkillRecord = usedBy.skills.GetSkill(Props.skill);
|
||||
if (targetSkillRecord != null && !targetSkillRecord.TotallyDisabled)
|
||||
{
|
||||
if (targetSkillRecord.passion != Props.passionGained)
|
||||
{
|
||||
targetSkillRecord.passion = Props.passionGained;
|
||||
Messages.Message("WULA_PassionGained".Translate(usedBy.LabelShort, targetSkillRecord.def.label), usedBy, MessageTypeDefOf.PositiveEvent);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 确定要移除的热情数量
|
||||
int numToLose = Props.passionsLostRange.RandomInRange;
|
||||
if (numToLose <= 0)
|
||||
{
|
||||
return; // 如果随机到0或更少,则不移除任何热情
|
||||
}
|
||||
|
||||
// 3. 找到所有其他拥有热情的技能
|
||||
List<SkillRecord> skillsWithPassion = usedBy.skills.skills
|
||||
.Where(s => s.def != Props.skill && s.passion > Passion.None && !s.TotallyDisabled)
|
||||
.ToList();
|
||||
|
||||
skillsWithPassion.Shuffle(); // 打乱列表以实现随机性
|
||||
|
||||
// 4. 移除指定数量技能的热情
|
||||
int passionsRemoved = 0;
|
||||
foreach (var skillToLosePassion in skillsWithPassion)
|
||||
{
|
||||
if (passionsRemoved >= numToLose) break;
|
||||
|
||||
skillToLosePassion.passion = Passion.None;
|
||||
Messages.Message("WULA_PassionLost".Translate(usedBy.LabelShort, skillToLosePassion.def.label), usedBy, MessageTypeDefOf.NegativeEvent);
|
||||
passionsRemoved++;
|
||||
}
|
||||
}
|
||||
|
||||
public override AcceptanceReport CanBeUsedBy(Pawn p)
|
||||
{
|
||||
if (p.skills == null)
|
||||
{
|
||||
return "PawnHasNoSkills".Translate(p.LabelShort);
|
||||
}
|
||||
if (Props.skill == null)
|
||||
{
|
||||
return "SkillTrainerHasNoSkill".Translate(parent.LabelShort);
|
||||
}
|
||||
if (p.skills.GetSkill(Props.skill).TotallyDisabled)
|
||||
{
|
||||
return "SkillDisabled".Translate();
|
||||
}
|
||||
return base.CanBeUsedBy(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,6 +86,7 @@
|
||||
<Compile Include="JobDriver_FeedWulaPatient.cs" />
|
||||
<Compile Include="WulaStatDefOf.cs" />
|
||||
<Compile Include="CompUseEffect_WulaSkillTrainer.cs" />
|
||||
<Compile Include="CompUseEffect_PassionTrainer.cs" />
|
||||
<Compile Include="CompUseEffect_FixAllHealthConditions.cs" />
|
||||
<Compile Include="Recipe_AdministerWulaMechRepairKit.cs" />
|
||||
<Compile Include="Verb_ShootBeamExplosive.cs" />
|
||||
|
||||
Reference in New Issue
Block a user