环世界Rimworld目前已经推出1.3beta版本,新版本对游戏文件中的部分DLL代码进行了改动,下面一起来看看环世界Rimworld1.3版本DLL代码更新内容一览
环世界Rimworld1.3版本DLL代码更新内容一览
CompReloadable无修改,衣物对于verb的获取依然依靠CompReloadable
Apparel修改:“为穿戴护盾腰带的小人禁用了开火选项和按钮。”
AllowVerbCast(IntVec3 root, Map map, LocalTargetInfo targ, Verb verb)
修改为
AllowVerbCast(Verb verb)
修改内容:
取消了CanReachImmediate的检测
在verb处有Apparel FirstApparelPreventingShooting()
在verbTracker处对FirstApparelPreventingShooting()检测,若有则让verb的command Disable掉,但没有看见“移除”
进游戏查看后,确认是翻译者错误,确实只有Disable的禁用
仿生体现在能够被渲染,但不是hediff的Draw
用的是FleshTypeDef.hediffWounds,即伤口的渲染
所以mod作者们需要制作的话,需要自己用patch打代码
FleshTypeDef.hediffWounds内有对hediff的检测,然后四个方向的渲染图,一些关于部位的东西,其他设定等。
可能不太好用【依然建议用harmony直接打draw】
抛射物“手雷现在将渲染其抛物线”
子弹的ThingDef.projectile下,有float的arcHeightFactor和shadowSize【原版在手雷们的父defs
前者控制抛物线最高高度,后者控制影子
经过一系列处理,最后在Projectile.Draw引用
与之前跳跃背包的PawnJumper应该是相同的抛物线绘制法
子弹修改
Projectile.Launch(Thing launcher, Vector3 origin, LocalTargetInfo usedTarget, LocalTargetInfo intendedTarget, ProjectileHitFlags hitFlags, Thing equipment = null, ThingDef targetCoverDef = null)
改为
Projectile.Launch(Thing launcher, Vector3 origin, LocalTargetInfo usedTarget, LocalTargetInfo intendedTarget, ProjectileHitFlags hitFlags, bool preventFriendlyFire = false, Thing equipment = null, ThingDef targetCoverDef = null)
在第五个参数后,第六个参数的位置,即原来equipment的位置,增加了preventFriendlyFire,其余参数不变
Projectile增加了属性
protected bool preventFriendlyFire;
若该值为true,则当子弹击中的单位与子弹发射者的派系是友好时
子弹的Impact()无法执行
mod修改意见:增加了友伤避免,建议按mod实际需求来进行参数更改
Verb修改
Verb.ValidateTarget(LocalTargetInfo target)
改为
Verb.ValidateTarget(LocalTargetInfo target, bool showMessages = true)
看了一圈,原版对showMessages的引用似乎比较少,大多数原版重载的代码没有修改,
mod更新建议:仅需修改ValidateTarget的参数,其代码完全无需修改。
Mote 被从Thing中剥离到独立线程中以提高渲染性能,他们现在位于"Flecks"下
许多Mote,MoteMaker,MoteDef
变为Fleck,FleckMaker,FlackDef
在FleckMaker下有许多现成的fleck
许多MoteDef改为了FleckDef
举例:
MoteMaker.MakeStaticMote(loc, base.Wearer.Map, ThingDefOf.Mote_ExplosionFlash, num);
MoteMaker.ThrowDustPuff(loc, base.Wearer.Map, Rand.Range(0.8f, 1.2f));
应改为
FleckMaker.Static(loc, base.Wearer.Map, FleckDefOf.ExplosionFlash, num);FleckMaker.ThrowDustPuff(loc, base.Wearer.Map, Rand.Range(0.8f, 1.2f));
FleckMaker.ThrowDustPuff(loc, base.Wearer.Map, Rand.Range(0.8f, 1.2f));
新增FleckDef【public class FleckDef : Def
将原来MoteProperties【即ThingDef.mote】下所有内容
移至FleckDef
并有
public Type fleckSystemClass;
public AltitudeLayer altitudeLayer;
public float altitudeLayerIncOffset;
public bool drawGUIOverlay;
public GraphicData graphicData; //即原本ThingDef下的
public ListrandomGraphics;//新增的随机贴图读取
随机贴图的读取,对于喜欢特效的作者是福音
Gzimo修改
Gizmo.GizmoOnGUI(Vector2 topLeft, float maxWidth)改为
Gizmo.GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRenderParms parms);
增加了参数GizmoRenderParms,内含:
public bool highLight;
public bool lowLight;
public bool shrunk;
mod更新意见:若无对该三者的应用,仅需修改GizmoOnGUI的参数,其代码完全无需更改。
“角色现在渲染效率更高(游戏将它们打印到纹理上并在一次过程中渲染,而不是在每一帧上分别渲染每个身体层)。”
PawnRenderer.RenderCache被重写了,有兴趣的可以去看看
美工福利:头发与胡子,现在统称叫造型
头发【HairDef】:
hairTags名字改为styleTags,原版有更多的Tags了
hairGender名字改为styleGender【不填默认为any,与改变前一样
新增category,用于给头发和胡子分类。可在CoreDefsMiscHairDefsStyleItemCategoryDefs.xml查看原版所有的category。
新增iconPath,填贴图路径,表示头发的显示图标
胡子【BeardDef】
绝大多数东西与改版后的头发一样。
新增offsetNarrowEast【格式为(x,y,z)】,表示朝东时胡子贴图的偏移,x和z分别为左右和上下
新增offsetNarrowSouth【格式为(x,y,z)】,表示朝南时胡子贴图的偏移,x和z分别为左右和上下
这两块属于美工不想单独调整南和东的贴图时 程序给予的补偿代码。
Hediff修改
Hediff.Tended_NewTemp(float quality, float maxQuality, int batchPosition = 0)
改为
Hediff.Tended(float quality, float maxQuality, int batchPosition = 0)
内部代码没有任何变化
mod更新意见:直接改方法名即可
Pawn的Faction修改
FactionOrExtraMiniOrHomeFaction改为HomeFaction,返回值新增Pawn.SlaveFaction
RecipeWorker的Faction修改
RecipeWorker下:
protected void ReportViolation(Pawn pawn, Pawn billDoer, Faction factionToInform, int goodwillImpact, string reason)
改为
protected void ReportViolation(Pawn pawn, Pawn billDoer, Faction factionToInform, int goodwillImpact)
移除了第五个参数string reason,因为ReportViolation自带Reason HistoryEventDef:PerformedHarmfulSurgery【“harmful surgery on member”】
更新建议:
1.使用他自己的reason
2.绕过ReportViolation,直接自己写TryAffectGoodwillWith
Building的修改
需要在ThingDef中修改drawerType
常用的为MapMeshAndRealTime
否则Draw不会被运行。