3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

楼主: skylifeye1988
打印 上一主题 下一主题

[分享] 【技能倍率,技能槽位,拥有5个以上技能,以及初始员工0技能和0特性或多特性的修改方法】

  [复制链接]

7

主题

980

帖子

1011

积分

游戏狂人

Rank: 6Rank: 6

贡献度
12
金元
9633
积分
1011
精华
0
注册时间
2011-8-31
跳转到指定楼层
主题
发表于 2018-9-11 17:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 skylifeye1988 于 2018-9-11 17:20 编辑

1.【技能倍率】

namespace TH20
{
   
// Token: 0x02000309 RID: 777
   
[UsedImplicitly(ImplicitUseKindFlags.Assign | ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature, ImplicitUseTargetFlags.Members
   
public abstract class QualificationBaseModifier : CharacterModifier
   
{
        
// Token: 0x06000F5B RID: 3931 RVA: 0x00073EFC File Offset: 0x000720FC
        
public float Calculate(Room room)
        
{
            
if (room == null || this._validRooms == null || this._validRooms.Length == 0)
            
{
               
return this._modifier;
            
}
            
foreach (SharedInstance<RoomDefinition> sharedInstance in this._validRooms)
            
{
               
if (sharedInstance.NotNull<RoomDefinition>() && sharedInstance.Instance == room.Definition)
               
{
                    
return this._modifier;
               
}
            
}
            
return 0f;


这里改技能属性的倍率。

把其中的_modifier;改为_modifier * 10;即技能附加属性翻十倍。或者把里面其他内容全部暴力删除,改成


    public abstract class QualificationBaseModifier : CharacterModifier
   
{
        
// Token: 0x06000F5B RID: 3931
        
public float Calculate(Room room)
        
{
            
return this._modifier * 5f;
        
}


这样大概就是去除了特定房间才生效的限制。好比一个五级的全科医生,不管是在全科诊室,还是其他诊室,员工属性里面显示的诊断和治疗数值都保持不变,至于属性是不是能够全科通用,没验证过,所以不确定。



2.【技能槽位和拥有5个以上技能】


TH20


Staff

        // Token: 0x17000178 RID: 376
        
// (get) Token: 0x06000F76 RID: 3958 RVA: 0x0000D856 File Offset: 0x0000BA56
        
public int MaxQualifications
        
{
            
get
            
{
               
return this.Rank + 1;
            
}
        
}


这里就是技能槽位修改。

Rank + 1;】改为【Rank + 5;】甚至【Rank * 5;】,就等于招聘的初始员工直接就拥有五个(翻五倍)可培训技能空槽。

楼主对编程语言一窍不通,所以也不确定是这里的修改会直接关系到员工最终的可拥有技能数量,还是其他方面。

我自己改的时候,还改了另外的地方:

TH20

StaffRank

其中public const int MaxLevels = 5;,这句不知道是指的技能的最大等级,还是人物的最大等级,总之我改成了10以上。

另外,在JobApplicant 类里面,也有跟Staff相同的那段内容。

        // Token: 0x17000163 RID: 355
        
// (get) Token: 0x06000DE4 RID: 3556 RVA: 0x0000C444 File Offset: 0x0000A644
        
public int MaxQualifications
        
{
            
get
            
{
               
return this.Rank + 1;
            
}
        
}

3.【初始员工和招聘员工0技能】


TH20


JobApplicant

        // Token: 0x06000DE7 RID: 3559
        
private void AssignRandomQualifications(WeightedList<QualificationDefinition> qualifications, Metagame metagame, Level level, int chanceOfEmptyTrainingSlot)
        
{
            
int num = this.MaxQualifications - 1;
            
if (RandomUtils.GlobalRandomInstance.Next(0, 100) > chanceOfEmptyTrainingSlot)
            
{
               
num++;
            
}
            
this.Qualifications = new List<QualificationSlot>(num);
            
for (int i = 0; i < num; i++)
            
{
               
WeightedList<QualificationDefinition> weightedList = new WeightedList<QualificationDefinition>();
               
foreach (KeyValuePair<QualificationDefinition, int> keyValuePair in qualifications.List)
               
{
                    
if (keyValuePair.Key.ValidFor(this.Definition._type, this.MaxQualifications, this.Qualifications, metagame, level))
                    
{
                        
weightedList.Add(keyValuePair.Key, keyValuePair.Value);
                    
}
               
}
               
QualificationDefinition qualificationDefinition = weightedList.Choose(null, RandomUtils.GlobalRandomInstance);
               
if (qualificationDefinition != null)
               
{
                    
this.Qualifications.Add(new QualificationSlot(qualificationDefinition, true));
               
}
            
}
        
}


这是员工随机生成分配技能的地方。

把以上内容里的(0,100)改成(100,0)后,初始员工是白板了,但我玩的时候,游戏出错,坏过档,不确定是否跟改这里有关。

然后换了另外的改法,只把方法中的num++ 改成num = 0以及i < num改为i > num
就是正常全部员工0技能。


4.【0特性及多特性】

TH20


CharacterTraitsManager


        public CharacterTraits GenerateRandomTraits(StaffDefinition.Type staffType, Character.Sex sex)
        
{
            
List<CharacterTraitDefinition> list = new List<CharacterTraitDefinition>();
            
int num = RandomUtils.GlobalRandomInstance.Next(this._config.GameplayTraitsMin, this._config.GameplayTraitsMax + 1);
            
int numTraits = RandomUtils.GlobalRandomInstance.Next(this._config.FlavourTraitsMin, this._config.FlavourTraitsMax + 1);
            
for (int i = 0; i < num; i++)
            
{
               
CharacterTraitDefinition characterTraitDefinition = this._traits.Choose(null, RandomUtils.GlobalRandomInstance);
               
if (characterTraitDefinition != null && characterTraitDefinition.CanAdd(list) && characterTraitDefinition.IsValidFor(staffType))
               
{
                    
list.Add(characterTraitDefinition);
               
}
            
}
            
return new CharacterTraits(list, this._config.FlavourTraits.Instance.GenerateFlavour(numTraits, sex));
        
}

这里控制员工随机特性的数量。

其中
GameplayTraitsMin
是特性最小数,
GameplayTraitsMax + 1
最大特性数量.
添加修改数值就好。

取消员工特性,我的笨办法就是把+的数值删除,甚至-1,然后其中的 i < num 也改为 i > num


由于不会修改控制特性出现的好坏,我个人玩的时候,直接暴力取消了全部特性。





评分

1

查看全部评分

回复

使用道具 举报

5

主题

361

帖子

331

积分

高级玩家

Rank: 4

贡献度
5
金元
3113
积分
331
精华
0
注册时间
2011-2-6
舒服的沙发
发表于 2021-7-10 21:49 | 只看该作者
TH20下面那么多文件夹 你那个修改技能倍率的在哪个里面啊?找半天了
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-3-31 01:58 , Processed in 0.030476 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表