// Management · RimWorld Mod

米莉拉绮罗沃芬雕像修复

米莉拉绮罗沃芬雕像修复 mod preview for RimWorld

【模组在执行过程中使用了AI工具,主要用于帮我规范各种写法以及教我写反射】 【原版雕像不支持修复,请建造自定义雕像】 添加一种可通过gizmo按钮自由切换描绘人物的自定义雕像,在建筑选单的杂项里,名字就叫自定义雕像 雕像建成时外观会从现有殖民者里选,如果没有殖民者则只会显示空底座,可自由切换人物 雕像有品质,但出于安全考虑无冥想倍率并且无法重新安装 没啥特别复杂的逻辑,所以支持中途加入 然后由于雕像是奥德赛DLC的,所以你至少得装个奥德赛否则不会生效 还有就是如果你想让雕像变成预览图那样的话得用辉钢(米莉拉里的材料)做雕像 顺便写了个幻化检测,如果你有装

【模组在执行过程中使用了AI工具,主要用于帮我规范各种写法以及教我写反射】
【原版雕像不支持修复,请建造自定义雕像】

添加一种可通过gizmo按钮自由切换描绘人物的自定义雕像,在建筑选单的杂项里,名字就叫自定义雕像
雕像建成时外观会从现有殖民者里选,如果没有殖民者则只会显示空底座,可自由切换人物
雕像有品质,但出于安全考虑无冥想倍率并且无法重新安装

没啥特别复杂的逻辑,所以支持中途加入
然后由于雕像是奥德赛DLC的,所以你至少得装个奥德赛否则不会生效
还有就是如果你想让雕像变成预览图那样的话得用辉钢(米莉拉里的材料)做雕像

顺便写了个幻化检测,如果你有装Transmog或者是Layered Apparel的话,雕像会直接检测幻化装备,但要注意的是只会检测默认状态而非征召状态

我写了挺多反射的,就是日后维护麻烦点,但好处是你不用太在意外星人或者动态表情这种前置依赖啊什么的,当个普通mod玩也行。不过至少请装个harmony

提交bug请尽量附带前因后果(例如是新档还是旧档、是否在最近有过读档操作)







如果你对我冗长的总结感兴趣的话
这个修复理论上可以涵盖所有出现小头bug的雕像,无论它们是不是米、猫、狼这三个种族。
因为小头bug本质上是雕像生成的假pawn年龄默认为0,一些种族的动态表情里使用了一个AgeBasedParams节点来选择头部尺寸,所以装了动态表情以后头部会变成婴儿尺寸
毕竟对动态表情来说这个pawn年龄=0嘛
而那些没有小头bug的种族就是因为没有写AgeBasedParams,让生命阶段决定头部大小,所以才不会有小头bug
不过也不绝对就是了,也有些种族是把整个面部整合进HAR的BodyAddon,它体现在雕像上简单来说就是大头叠小头,只要没人多管闲事(比如我)给雕像加个全局偏移确就不会出错(如果出错就会出现小头大头叠在一起的bug,或者说,是让小头更明显)
目前我观察到的就只有这些
所以第一阶段最主要的修复是控制假pawn的年龄
但光是这些修复是不够的,至少对米猫狼来说不够。即使修复小头,这也会导致它们在不同的生命阶段出现不同程度的头部错位
究其原因,是因为它们分别在三个不同的偏移层级上加了点自定义偏移
米是硬编码,猫是头偏移+生命阶段偏移,狼是头方向性偏移+全局缩放
而雕像生成的假pawn渲染路径不会触发har补丁和外星人框架的叠加逻辑。就当它看不懂这些,所以全部跳过了吧
那么第二阶段就是对症下药了


Spoiler
啊我草,原来是我找错版本了,妈的对着老版本一顿框框分析,我说怎么写出来这么多红字呢


总而言之
经过多次测试后发现是我想把问题想太复杂了,我最初观察到的头部偏移现象的本质其实是pawn年龄计算错误导致动态表情读取了错误尺寸的连锁反应。在更正这部分的逻辑之后所有头部尺寸错误都未再复发

最主要的根因应该就只有动态表情的AgeBasedParams了