【投文字比视频方便系列】MUGEN如何打赢之扣血方式
文字就是比视频方便快捷,所以比起视频我才会选择文字,反正可视化也没少人做,我懒得弄了。
第一种,给一拳、扔波波、叫人代拳,都是一样的,属于直接攻击。
内核层面叫hitdef或projectile,其中的damege数值决定造成多少基础伤害,而最终伤害取决于双方的攻防值,在比例为1:1时才会是那个数。
其原理为:攻击时,受击方首先会强制跳转statedef 5000,在此处根据hitdef或projectile的其它属性再次进行中转。不管statedef 5000还会转去哪里,它的movetype默认为=H,它不仅是一种“AI用的标志”,还是决定这一帧之内受击方是否会把血量扣除攻击方打过来的伤害值,说简单点就是:当进入movetype = H的statedef时(不限定statedef 5000到5150),执行life-gethitvar(damage)这个公式。gethitvar(damage)就是攻击方打过来的那一拳的damage数值了。
;----------------------------------------------------------------------
第二种,摔,也是直接攻击,但不会立即扣除。
hitdef和projectile里面都可以设置fall.damage这个数值,这就是受击方会摔出来的数值,它是个固定数值,不会受其它因素影响,但是会被后续不同fall.damage的攻击给刷成不同的数值。
其原理为:攻击方攻击时,受击方会保存这个数值,直到被其它攻击影响到或至少执行了一次hitfalldamage这个控制器。hitfalldamage意思为,当人物携带fall.damage摔伤时,如果当前statedef存在它,则血量扣除摔伤,也即执行life-gethitvar(fall.damage)。如果不存在它,人物是不可能受到摔伤的。通常来说,hitfalldamage存在于人物的statedef 5100和statedef 5110,除非人物文件修改了这两个状态号。当然跟上方的movetype = H一样它可以被用户自定义于任何其它statedef内,便于执行自己编写的内容。
;----------------------------------------------------------------------
第三种,血量操作,不算直接攻击,但必定通过直接攻击才行。
通过hitdef、projectile和当身reversaldef,其中带有的p2stateno参数让受击方进入攻击方的自定义statedef内,其中包括了lifeadd和lifeset任一一种或两者皆有;又或者通过这三种方式,攻击方短暂地获得了受击方的target——这相当于受击方的身份认证——然后攻击方通过targetlifeadd进行不干涉双方statedef状态号变换的正负数血量操作,或通过targetstate在获得target期间,任意时刻干涉受击方的statedef状态号,进行如上的与p2stateno结果相同的手段。血量操作的值与摔伤一样也是固定的,但首先要在lifeadd和targetlifeadd下面加一句absolute = 1,否则会受到一种程序强制修正的影响,不会加减相应的值。
其原理为:lifeadd为血量增加的控制器,但它可以在value填负数实现扣血;lifeset是设置血量为任意值;targetlifeadd与lifeadd一样,但是是通过攻击方主动控制并使用的。
;----------------------------------------------------------------------
三种扣血方式的具体区别:没有区别!哈哈!
传说中的血量攻击比拳脚攻击优越,这是错的,属于是谣传。相反,如果对方做了锁血,血量操作反而比拳脚弱起码一个奥加曼那么大的差距。但是如何对应不是我现在要写的。