存list
This commit is contained in:
Binary file not shown.
@@ -551,9 +551,13 @@
|
|||||||
</verbProperties>
|
</verbProperties>
|
||||||
<comps>
|
<comps>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AbilityAddExtraExp">
|
<li Class="ArachnaeSwarm.CompProperties_AbilityAddExtraExp">
|
||||||
<skill>Medicine</skill>
|
<skillChanges>
|
||||||
<passionGained>Major</passionGained>
|
<li>
|
||||||
<xpGainAmount>350000</xpGainAmount>
|
<skill>Medicine</skill>
|
||||||
|
<passionGained>Major</passionGained>
|
||||||
|
<xpGainAmount>350000</xpGainAmount>
|
||||||
|
</li>
|
||||||
|
</skillChanges>
|
||||||
</li>
|
</li>
|
||||||
<li Class="CompProperties_AbilityGiveHediff">
|
<li Class="CompProperties_AbilityGiveHediff">
|
||||||
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
<compClass>CompAbilityEffect_GiveHediff</compClass>
|
||||||
@@ -669,14 +673,18 @@
|
|||||||
<severity>1</severity>
|
<severity>1</severity>
|
||||||
</li>
|
</li>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AbilityAddExtraExp">
|
<li Class="ArachnaeSwarm.CompProperties_AbilityAddExtraExp">
|
||||||
<skill>Melee</skill>
|
<skillChanges>
|
||||||
<passionGained>Major</passionGained>
|
<li>
|
||||||
<xpGainAmount>350000</xpGainAmount>
|
<skill>Melee</skill>
|
||||||
</li>
|
<passionGained>Major</passionGained>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AbilityAddExtraExp">
|
<xpGainAmount>350000</xpGainAmount>
|
||||||
<skill>Shooting</skill>
|
</li>
|
||||||
<passionGained>None</passionGained>
|
<li>
|
||||||
<xpGainAmount>-350000</xpGainAmount>
|
<skill>Shooting</skill>
|
||||||
|
<passionGained>None</passionGained>
|
||||||
|
<xpGainAmount>-350000</xpGainAmount>
|
||||||
|
</li>
|
||||||
|
</skillChanges>
|
||||||
</li>
|
</li>
|
||||||
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
<li Class="ArachnaeSwarm.CompProperties_AbilityResearchPrereq">
|
||||||
<requiredResearch>ARA_Technology_4CLO</requiredResearch>
|
<requiredResearch>ARA_Technology_4CLO</requiredResearch>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
using Verse;
|
using Verse;
|
||||||
using RimWorld;
|
using RimWorld;
|
||||||
using System.Linq;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
namespace ArachnaeSwarm
|
||||||
{
|
{
|
||||||
@@ -13,34 +13,40 @@ namespace ArachnaeSwarm
|
|||||||
base.Apply(target, dest);
|
base.Apply(target, dest);
|
||||||
|
|
||||||
Pawn user = parent.pawn;
|
Pawn user = parent.pawn;
|
||||||
if (user == null) return;
|
if (user == null || user.skills == null) return;
|
||||||
|
|
||||||
// 1. 技能经验增益
|
// 遍历并应用所有技能变更
|
||||||
int levelBefore = user.skills.GetSkill(Props.skill).GetLevel();
|
foreach (var change in Props.skillChanges)
|
||||||
user.skills.Learn(Props.skill, Props.xpGainAmount, direct: true);
|
|
||||||
int levelAfter = user.skills.GetSkill(Props.skill).GetLevel();
|
|
||||||
|
|
||||||
// 2. 热情设置
|
|
||||||
SkillRecord targetSkillRecord = user.skills.GetSkill(Props.skill);
|
|
||||||
if (targetSkillRecord != null && !targetSkillRecord.TotallyDisabled)
|
|
||||||
{
|
{
|
||||||
if (targetSkillRecord.passion != Props.passionGained)
|
if (change.skill == null) continue;
|
||||||
|
|
||||||
|
// 1. 技能经验增益
|
||||||
|
int levelBefore = user.skills.GetSkill(change.skill).GetLevel();
|
||||||
|
user.skills.Learn(change.skill, change.xpGainAmount, direct: true);
|
||||||
|
int levelAfter = user.skills.GetSkill(change.skill).GetLevel();
|
||||||
|
|
||||||
|
// 2. 热情设置
|
||||||
|
SkillRecord targetSkillRecord = user.skills.GetSkill(change.skill);
|
||||||
|
if (targetSkillRecord != null && !targetSkillRecord.TotallyDisabled)
|
||||||
{
|
{
|
||||||
targetSkillRecord.passion = Props.passionGained;
|
if (targetSkillRecord.passion != change.passionGained)
|
||||||
|
{
|
||||||
|
targetSkillRecord.passion = change.passionGained;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// 发送通知
|
// 发送通知 (为每个技能变更发送一次)
|
||||||
if (PawnUtility.ShouldSendNotificationAbout(user))
|
if (PawnUtility.ShouldSendNotificationAbout(user))
|
||||||
{
|
{
|
||||||
Messages.Message("AbilitySkillChanged".Translate(
|
Messages.Message("AbilitySkillChanged".Translate(
|
||||||
user.LabelShort,
|
user.LabelShort,
|
||||||
Props.skill.LabelCap,
|
change.skill.LabelCap,
|
||||||
levelBefore,
|
levelBefore,
|
||||||
levelAfter,
|
levelAfter,
|
||||||
user.Named("USER")),
|
user.Named("USER")),
|
||||||
user,
|
user,
|
||||||
MessageTypeDefOf.PositiveEvent);
|
MessageTypeDefOf.PositiveEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,5 +59,4 @@ namespace ArachnaeSwarm
|
|||||||
return base.Valid(target, throwMessages);
|
return base.Valid(target, throwMessages);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,21 @@
|
|||||||
using Verse;
|
using Verse;
|
||||||
using RimWorld;
|
using RimWorld;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace ArachnaeSwarm
|
namespace ArachnaeSwarm
|
||||||
{
|
{
|
||||||
public class CompProperties_AbilityAddExtraExp : CompProperties_AbilityEffect
|
// 定义一个类来封装单次技能的变更
|
||||||
|
public class SkillChange
|
||||||
{
|
{
|
||||||
public SkillDef skill;
|
public SkillDef skill;
|
||||||
public Passion passionGained = Passion.Major; // 可配置获得的热情等级,默认为大火
|
public Passion passionGained = Passion.None;
|
||||||
public float xpGainAmount = 50000f;
|
public float xpGainAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改 CompProperties 来使用 SkillChange 列表
|
||||||
|
public class CompProperties_AbilityAddExtraExp : CompProperties_AbilityEffect
|
||||||
|
{
|
||||||
|
public List<SkillChange> skillChanges = new List<SkillChange>();
|
||||||
|
|
||||||
public CompProperties_AbilityAddExtraExp()
|
public CompProperties_AbilityAddExtraExp()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user