rimworld吧 关注:220,639贴子:3,731,836

【代码解析】1.2近战攻击手段选择机制

只看楼主收藏回复

反编译图镇楼
图中即是核心机制的代码
我会在接下来解释含义,并给出一个算例


IP属地:北京来自iPhone客户端1楼2021-04-13 23:51回复
    二楼自占!!!


    IP属地:北京来自iPhone客户端2楼2021-04-13 23:51
    回复
      先给出各种名词的定义
      攻击手段(tool):例如钉头锤的顶端和柄分别是两种tool
      伤害(power):例如钉头锤顶端的伤害假设是15.7,柄伤害假设9
      近战基础伤害总量(AdjustedBaseMeleeDamageAmount):根据装备的属性调整,假设为一般品质的铀钉头锤,铀的伤害系数1.5,品质系数1,因此此时锤头的伤害就是15.7*1.5*1=23.55,锤柄伤害9*1.5*1=13.5


      IP属地:北京来自iPhone客户端3楼2021-04-13 23:52
      回复
        近战伤害总量(AdjustedMeleeDamageAmount):先根据小人的健康状态,全身部件效率和使用该武器的部件的效率来计算出一个系数(具体算法没看懂),再乘以近战基础伤害总量。“使用该武器的部件的效率”的系数最低为0.4,因此即使是手臂血量只有1,这个系数也有至少0.4(小人都是狂战士?)
        常见性(commonality):默认为1,也许有些MOD里有改动,原版不用管
        机会系数(chanceFactor):默认为1,原版小人用牙(原生牙齿,非毒牙)攻击的机会系数只有0.07,头槌的机会系数是0.2


        IP属地:北京来自iPhone客户端4楼2021-04-13 23:53
        回复
          重点来了,原版每种攻击手段的权重算法为:
          (近战伤害总量)*(近战伤害总量)*(常见性)*(机会系数)=权重
          假如这种攻击手段是“来自该单位的原生词条(comesFromPawnNativeVerbs)”,还需要乘上一个0.3的折减系数


          IP属地:北京来自iPhone客户端5楼2021-04-13 23:54
          回复
            下面我们来计算一下,一个健康的没有服用药物且全身无仿生的近战小人的近战出手概率是如何分配的。
            钉头锤顶端权重:23.55*23.55*1*1=554.60,折合出手概率:70.78%
            钉头锤锤柄权重:13.5*13.5*1*1=182.25,折合出手概率:23.26%
            左拳权重:8.2*8.2*1*1*0.3=20.17,折合出手概率:2.57%
            右拳权重:8.2*8.2*1*1*0.3=20.17,折合出手概率:2.57%
            牙齿权重:8.2*8.2*1*0.07*0=1.41,折合出手概率:0.18%
            头权重:5*5*1*0.2=5,折合出手概率:0.64%


            IP属地:北京来自iPhone客户端6楼2021-04-13 23:56
            回复
              这些数值跟实战观感比较吻合,当小人持有高伤害武器时,由于0.3折减系数的存在,的确没怎么见过用牙咬。而打架时由于不能用武器,拳头伤害又不比牙齿高,因此使用牙齿的概率就大大提高了。


              IP属地:北京来自iPhone客户端7楼2021-04-13 23:59
              回复
                反编译能写出这么漂亮的格式?


                IP属地:湖南来自Android客户端8楼2021-04-14 00:00
                收起回复
                  根据权重计算公式我们可以发现,伤害在权重里是做了平方的。这意味着Tool的伤害将极大的影响他的出手概率,尤其是当他的伤害显著高于其他Tool的时候。


                  IP属地:北京来自iPhone客户端9楼2021-04-14 00:03
                  回复
                    而对我们来说,这个公式的指导意义在于。为了提高输出,我们应该尽量为小人寻找一个伤害最高的攻击手段,同时尽量降低其他手段的伤害,以提升主要攻击手段的出手权重。简单来说就是不装仿生武器和毒牙之类的东西。


                    IP属地:北京来自iPhone客户端10楼2021-04-14 00:06
                    回复
                      比较复杂的一点是,仿生臂会提升小人的部件效率,这会让主要攻击手段伤害更高。但反过来讲它也会降低主要攻击手段的出手概率,这就比较诡谲了。由于部件效率影响的部分我没看懂,因此这里暂且保留疑问。欢迎有想法或者能看懂的朋友补充结论,仿生臂是否会提升总的输出呢?


                      IP属地:北京来自iPhone客户端11楼2021-04-14 00:09
                      收起回复
                        我记得前几天有人说,现在毒牙肘刃啥的只会取代拳头、牙咬之类的低输出,不会出现取代高输出的情况了


                        IP属地:山东来自Android客户端12楼2021-04-14 00:24
                        收起回复
                          前排


                          IP属地:新疆来自Android客户端13楼2021-04-14 01:57
                          回复
                            那是不是近战小人卸了下巴就不会咬敌人了


                            IP属地:山东来自iPhone客户端14楼2021-04-14 07:41
                            收起回复