

————————————————————————————————————
大蛇的不洁生命
(本质:队友濒死时,复活队友一次)
—————————————————
思路:
通过使用hitdef控制器中罕见的参数affectteam=F,来允许攻击到队友。
(许多杀害队友的古怪技能即基于该参数)
为避免hitdef被敌方当身捕获后出现各种BUG,使用神代码【无视当身的HITDEF】。
通过使用p2state来进一步对队友进行操作。
通过使用神代码【永续target】在保持随时可以调用队友进行修改的同时,不干扰队友的正常动作。
通过变量记录琐碎细节,比如是否已经复活过一次,于是不再重复复活。
通过使用神代码【NOKO断言】来防止队友意外死亡。
(注意:NOKO断言只能作用于发起者本身挨打、目标受到发起者挨打两方面。
因此发起者自杀、目标受到非发起者挨打,依旧会死亡。故NOKO断言作用于队友尚不够确保其存活)
通过使用superpause冻结,来阻止队友在life=0时意外死亡。
—————————————————
主要代码概述:
攻击队友:
[State 0, Hitdef]
type = Hitdef
trigger1 = 1 《----神代码【无视当身的HITDEF】
affectteam = F
attr = ,AA 《----神代码【无视当身的HITDEF】
priority = 9999999, hit ;;Hit,Miss,Dodge 3 4 7 99999 9999999
hitflag = HLMAFD
guardflag = N
numhits = 0
sparkno = -1
hitsound = -1
p1stateno = 4215
p2stateno = 4216 《----对队友进行p2state操作
guard.dist = 0
hitonce = 1
ignorehitpause = 1
捕获后:
捕获目标超过一个,纠错(队友仅可能一人,说明抓错了helper等)
[State 0, TargetDrop];Drop other helper target (for example shadow clone)
type = TargetDrop
trigger1 = Numtarget > 1
trigger2 = target,ishelper
keepone = 1 《---只保留一个目标,扔掉其他
ignorehitpause = 1
捕获目标并非队友,扔掉目标
[State 0, TargetDrop]
type = TargetDrop
trigger1 = IsHelper(4211)
trigger1 = !(target,ID = partner,ID)
keepone = 0
ignorehitpause = 1
捕获目标并非队友,折回重新捕获
[State 0, ChangeState]
type = ChangeState
triggerall = !win || !lose || !drawgame
trigger1 = IsHelper(4211)
trigger1 = !(target,ID = partner,ID)
value = 4210
ignorehitpause = 1
实施神代码【永续target】
[State 0, ReversalDef]
type = ReversalDef
trigger1 = 1
reversal.attr = SCA
priority = 9999999, hit ;;Hit,Miss,Dodge 3 4 7 99999 9999999
hitflag = P
numhits = 0
sparkno = -1
hitsound = -1
guard.dist = 0
ignorehitpause = 1
supermovetime = 99999
pausemovetime = 99999
变量记录较为繁琐,略去。
贴图、特效等代码略去。
常时、有条件的NOKO断言(var(29)用于判断是否应该断言,后述)
[State 0, AssertSpecial]; ---- DO NOT CHANGE THIS!!!
type = AssertSpecial
triggerall = !((win || lose || drawgame) && roundstate = 2)
trigger1 = parent,var(29) = 1
flag = noko
ignorehitpause = 1
队友生命为0时,强制其改变状态进入己方p2state