欢迎光临散文网 会员登陆 & 注册

【冰话XS】007:XS 修改属性愛憎の絡み合い

2022-03-05 10:08 作者:八重冰冰姬-丽颖明兰  | 我要投稿

☆※冰の引言※☆

前文对XS中的纯读取函数"七君子"做了一定介绍和从实践的角度深度阐明了独立化的那些事儿,这一常见但又头疼的问题。本文不讲太多技术方面的内容,重点就讲讲一个事——XS脚本调用函数与修改属性这两者在使用上的优劣取舍与愛憎の絡み合い(爱恨纠葛)

☆※本节の紹介※☆

☆※种属/护甲与伤害/科技加成之间的联系※☆

在讲修改属性与XS函数的优缺点之前,先简单讲讲一些帝国里常用但容易被忽视的理论。

首先先摆结论在前:种属 → 科技加成,护甲 → 伤害

--- 种属 ---

先来讲讲种属的概念,种属可以认为就是单位的"性别",每一种单位都能从种属列表中找到他们唯一对应的种,单位的种属具有排他性唯一性,每种单位有且只归属于一个种属,就如同人的性别一样,一个人不能既是男的,又是女的。而科技加成在AGE内的实现原理基本上是通过改变种属的属性来实现的,所以说任何单位受的科技加成基本都由种属来决定。

种属列表如下图所示:(红字为常用种属)

在认识到科技加成是由种属来决定的时候,很多平时认知上难以理解的问题就能迎刃而解。

比如说如何解释为何征服者、飞镖骑兵和火枪手不受弹道学影响,因为弹道学是修改归属于种属0和种属36单位的属性,并没有涉及到种属23和种属44单位的修改,所以这三者必然是不吃弹道学加成的;又比如讲马穆鲁克,它有射手类型的护甲,但是他却是吃骑兵护甲加成的单位,究其原因,是因为它归属于种属12骑兵,种属12的单位就一定只受骑兵护甲的影响,所以很多从攻击/护甲角度层面弄不明白的问题,结合种属进行分析,很快就茅塞顿开了。

--- 护甲/攻击 ---

攻击和护甲是一对孖生兄弟,两者互相作用,不可分割。与种属不同,攻击类型和护甲类型相当于单位的"衣服",每种单位可以有多套衣服,每套衣服都是独立的,互相之间不构成关联关系。例如战象同时拥有战象护甲和骑兵护甲,在被长枪兵系单位攻击的时候就会受两种攻击类型的叠加伤害。关于伤害计算的相关内容留待后面章节再细讲,伤害计算的核心要义就是攻击单位的每一种攻击减去被攻击单位对应类型的护甲所得的结果相加,这里简单提几点: 

  1. 总伤害若计算结果为0,则强制造成1伤害

  2. 若出现一种攻击减去对应类型的护甲后的结果不为正数,则该项结果为0

攻击/护甲类型列表如下图所示:

显而易见,一种单位的护甲类型越多,意味着这种单位的"寿衣"越多,体现在战斗中它受到伤害加成会更大;一种单位的攻击类型越多,体现在战斗中它能对更多类型的单位拥有伤害加成优势。

谨记:地图编辑器只能通过高护甲免疫变相实现删除单位护甲,但是无论如何都不能对单位新增攻击类型/护甲类型(数据MOD改dat当然可以,但不是本文讨论的范畴)。所以说攻击/护甲数值大小和类型共同决定了总伤害的多少。

☆※修改属性の"几宗罪"※☆

修改属性因为其能改变单位的属性而又不会独立化受到众多战役制作者的青睐,甚至还衍生出某些到处鼓吹"修改属性"如何神乎其神的狂热分子,其实啊修改属性看上去貌似很好用,实际上局限性非常明显,而且还有很多让人看不明白的反人类骚操作。笔者虽然不才,但是为了让这些吹逼的脸被打肿成猪头,还是要把其中的利害关系,是非曲直道个明白,让我们来盘点下修改属性到底有"几宗罪"。

以下对修改属性的"几宗罪"进行逐条列举:

1.修改属性一次只能修改一个ID一种单位的一种属性。

上文提到科技加成决定因素是以种属为单位的,简而言之就是一类的单位,很遗憾的是修改属性并不支持修改一类的单位。举个例子:如果我想设计一个科技令所有骑兵单位HP+10,用修改属性的话,只能老老实实地逐项枚举,你还要保证不错不漏,那巨大的工作量,几十条起步的效果,就算能实现也是老牛拉破车——费了老大劲,吃力不讨好。反观 XS 函数,直接对骑兵类和骑射手类进行属性修改,一条效果搞定一切,可以说修改属性在这一条上完败,输的彻彻底底。

大家可以翻阅AGE便可知AGE上绝大部分科技比如血统,鼓风炉,突厥骑射等都是直接对同一种属的所有种类的单位统一进行属性修改,这种方法的好处非常明显:简单快捷方便,而且工作量小一步到位又能做到不错不漏,实是四两拨千斤的神来之笔。

2.修改属性的数值只能用整数,不能用小数。

这可谓是修改属性最最反人类的骚操作。都2202年了,数值那里还只能使用整数int,而不能使用浮点数float的修改属性就是逊了。在单位属性方面,工作效率,移速,攻击间隔等很多属性都是以浮点数形式储存的。比如我要把骑士的移速从1.35改为1.5,这个修改属性还要求必须使用四则运算实现小数,先设置为15再除以10,这样虫豸窒息的骚操作怎么能让人做战役/场景做的安心呢?修改一个单位的属性还要两条效果才能实现,属实是低效冗长的老土办法。

再来看看 XS 函数,它可支持float类型,遇到小数直接写就行,根本不用想什么四则运算,甚至可以多种属、不同属性的修改放到同一个函数里同时进行修改,只需一条效果触发足矣。可以说,修改属性完全是被降维打击,实力碾压。与up-effect不同的是, XS 函数无需指定函数值为整型模式还是浮点型模式,统一都是浮点型,大大利好场景设计者,在这点上的确比up1.5更胜一筹。

3.修改属性中某些属性因为官方愚蠢的BUG无法进行修改。

在官方文档的字符串文件中,修改属性有个可修改的功能属性叫"驻扎治疗速率"(属性ID 108),这个参数主要应用于受伤士兵通过驻扎防御建筑回复生命值。其中塔楼类单位该属性是0.1,城堡和营垒是0.2,堡垒是2,研究科技草药后上述参数的值均乘6达到0.6/1.2/12。但是由于官方BUG的原因,这个参数通过修改属性并不能修改,究其原因是官方这个下拉选框无法显示这个属性(见下图,无108 驻扎治疗速率)。如果想把所有塔类的驻扎治疗效率设置为0.5,就只能使用 XS 函数这种方式,除此之外,别无他法。


4.修改属性使用范围较小,没有额外特殊功能,局限性较大

修改属性只能用于修改单位的属性,功能较单一,除了修改单位各类属性之外,其他啥都干不了。

而 XS 函数不仅仅能修改单位属性,还能够承担起变量与资源直接的联动、真随机、全局聊天等等特殊功能。比如勃艮第银冠——勃艮第葡萄园(把一半的食物转换为黄金)这种不定数资源转换的科技,只能通过 XS 函数的方式得以实现,其他方法均无法实现。

☆※两者优劣大盘点※☆

关于两者的优劣对比大盘点详见下图:


☆※权衡の使用场合之我见※☆

从上面的分析可以看出,修改属性除了在修改单位名字(比如把所有的萨瓦尔更名为不死军)对比XS函数有非常明显的优势,在攻防乘除方面算是与之打成平手外,再无更多亮点。

在这里笔者给出的建议是多用XS脚本调用,特定场合才用修改属性门槛高不高不是问题,只要你读熟读透本教程,可以保证的是玩转XS是可以很轻松就能实现的。望各位能权衡好利弊得失,尽量做到趋利避害,用更少的工作量实现预定效果,XS函数远比修改属性好用太多!

☆※冰の小结※☆

本节对修改属性与XS脚本调用函数的愛憎の絡み合い(爱恨纠葛)进行了非常详细的剖析,指明了创作者如何在这两者之间做好取舍,如何分清使用场合正确运用指明了方案。下一篇章将走进xsChatData函数,探秘这个测试神器全局广播究竟有何神通,敬请期待。

欲知后事如何,请听下回分解 

私の心はいつも氷氷です   

Cly0806

03/04/2022


【冰话XS】007:XS 修改属性愛憎の絡み合い的评论 (共 条)

分享到微博请遵守国家法律