根据士兵职业设定个人7技能
本帖最后由 wmaker 于 2020-2-17 10:08 编辑好久没来,刚发现这个游戏.看各位大佬的mod都是固定7技能,我这种强迫症晚期的用起来总感觉差点什么.
参考各位大佬的mod,自己大致改了下,感觉舒服不少.分享给大家,请大家批判下.
public CharacterProgression(SpecializationDef specializationDef, LevelProgressionDef levelProgression, BaseStatSheetDef baseStatSheetDef, CharacterGenerationParams generationParams = null)
{
this._baseStats.Clear();
int num = (generationParams != null) ? generationParams.EnduranceBonus : 0;
this._baseStats.Add(baseStatSheetDef.Strength + num);
int num2 = (generationParams != null) ? generationParams.WillBonus : 0;
this._baseStats.Add(baseStatSheetDef.Will + num2);
int num3 = (generationParams != null) ? generationParams.SpeedBonus : 0;
this._baseStats.Add(baseStatSheetDef.Speed + num3);
this.BaseStatSheet = baseStatSheetDef;
this.SkillPoints = levelProgression.InitialSkillpoints;
this.LevelProgression = new LevelProgression(levelProgression, 0);
this.MainSpecDef = specializationDef;
AbilityTrack track = new AbilityTrack(specializationDef.AbilityTrack, AbilityTrackSource.PrimaryClass);
this.AddNewAbilityTrack(track, true);
//------------------------------------------------------------------------------------------------------
List<AbilityTrackSlot> list = new List<AbilityTrackSlot>();
string classtag = this.GetClassTags().name;
List<string> learns;
if (!(classtag == "Priest_ClassTagDef") && !(classtag == "Technician_ClassTagDef"))
{
learns = new List<string>
{
"ExpertShooter_AbilityDef",
"ExpertHeavyWeapons_AbilityDef",
"Strongman_AbilityDef",
"Reckless_AbilityDef",
"HeavyLifter_AbilityDef",
"RageBurst_ShootAbilityDef"
};
if (!(classtag == "Infiltrator_ClassTagDef"))
{
if (!(classtag == "Assault_ClassTagDef"))
{
if (!(classtag == "Sniper_ClassTagDef"))
{
learns.Add("Crafty_AbilityDef");
}
else
{
learns.Add("Gunslinger_AbilityDef");
}
}
else
{
learns.Add("CloseQuartersSpecialist_AbilityDef");
}
}
else
{
learns.Add("StealthSpecialist_AbilityDef");
}
}
else
{
learns = new List<string>
{
"Brainiac_AbilityDef",
"Helpful_AbilityDef",
"RadiantHope_AbilityDef",
"HeavyLifter_AbilityDef",
"Priest_InstilFrenzy_AbilityDef"
};
if (!(classtag == "Priest_ClassTagDef"))
{
learns.Add("PsychicWard_AbilityDef");
learns.Add("MindCrush_AbilityDef");
}
else
{
learns.Add("Inspire_AbilityDef");
learns.Add("ElectricReinforcement_AbilityDef");
}
}
AbilityTrackSlot abilityTrackSlot;
(from itDef in GameUtl.GameComponent<DefRepository>().GetAllDefs<TacticalAbilityDef>()
where learns.Contains(itDef.name)
select itDef).ToList<TacticalAbilityDef>().ForEach(delegate(TacticalAbilityDef itDef)
{
this.AddAbility(itDef); //可注释掉,技能就需要升级慢慢学
abilityTrackSlot = new AbilityTrackSlot();
abilityTrackSlot.Ability = itDef;
list.Add(abilityTrackSlot);
});
this.AddNewAbilityTrack(new AbilityTrack(list.ToArray(), AbilityTrackSource.Personal), false);
//------------------------------------------------------------------------------------------------------
this.Init();
}
只需要用2条线中间的部分替换掉原来的随机技能生成语句,如下2条线之间的部分
public CharacterProgression(SpecializationDef specializationDef, LevelProgressionDef levelProgression, BaseStatSheetDef baseStatSheetDef, CharacterGenerationParams generationParams = null)
{
this._baseStats.Clear();
int num = (generationParams != null) ? generationParams.EnduranceBonus : 0;
this._baseStats.Add(baseStatSheetDef.Strength + num);
int num2 = (generationParams != null) ? generationParams.WillBonus : 0;
this._baseStats.Add(baseStatSheetDef.Will + num2);
int num3 = (generationParams != null) ? generationParams.SpeedBonus : 0;
this._baseStats.Add(baseStatSheetDef.Speed + num3);
this.BaseStatSheet = baseStatSheetDef;
this.SkillPoints = levelProgression.InitialSkillpoints;
this.LevelProgression = new LevelProgression(levelProgression, 0);
this.MainSpecDef = specializationDef;
AbilityTrack track = new AbilityTrack(specializationDef.AbilityTrack, AbilityTrackSource.PrimaryClass);
this.AddNewAbilityTrack(track, true);
//------------------------------------------------------------------------------------------------------
AbilityTrack track2 = AbilityTrack.CreatePersonalAbilityTrack(new GameTagDef, levelProgression.MaxLevel, baseStatSheetDef.PersonalAbilitiesCount);
this.AddNewAbilityTrack(track2, false);
//------------------------------------------------------------------------------------------------------
this.Init();
}
技能在learns后面的list表里,可以随意修改成你喜欢的
因为兵生成的时候并不区分阵营,所以修改后电脑刷出的也都是超级兵.
可以用控制台的give_soldier 命令来招兵,招完兵就替换会原来的就行.
下面是give_soldier的命令参数:
give_soldier SY_Assault
PX_Assault
PX_Heavy
PX_Sniper
ANU_Assault
ANU_Berserker
ANU_Heavy
ANU_Priest
ANU_Shooter
ANU_Watcher
SY_Assault
SY_Infiltrator
SY_Sniper
SY_Leader
NJ_Assault
NJ_Heavy
NJ_Sniper
NJ_Technician
独立势力
IN_Assault
IN_Heavy
技能名可以参考https://bbs.3dmgame.com/thread-5978422-1-1.html
修改工具dnSpy可以参考https://bbs.3dmgame.com/thread-5977651-1-1.html
打开控制台参考https://bbs.3dmgame.com/thread-5976935-1-1.html
最后还要感谢本版各位大佬作出的巨大贡献.
Ps:显示全据点命令:reveal_sites,你值得拥有.(还有一条命令:visit_all_px_bases,但是没有效果)
忘了,程序位置:PhoenixPoint.Common.Entities.Characters.CharacterProgre,并且要在程序开头加
using Base.Core;
using Base.Defs;
5555555555555555
页:
[1]