教程之家 > 游戏攻略 > 单机游戏 > 正文

环世界Rimworld1.3版本DLL代码更新内容一览

2021-07-12 09:53  教程之家  媛媛  
字号:T|T

环世界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不会被运行。

点击加载更多