# NPCÊôÐÔÔöÇ¿¹«Ê½ÅäÖÃ
|
# ¿ÉÓòÎÊý:
|
# ²Î¿¼Íæ¼ÒÊôÐÔ²ÎÊý
|
# ReMaxHP ×î´óÉúÃüÖµ
|
# ReAtk ¹¥»÷£¨×îС¡¢×î´ó¹¥»÷£©
|
# ReDef ·ÀÓù
|
# ReHit ÃüÖÐ
|
# ReMiss ÉÁ±Ü
|
# ReAtkSpeed ¹¥»÷ËÙ¶È
|
# ReSkillAtkRate ¼¼ÄÜÉ˺¦±ÈÀý
|
# ReDamagePer Ôö¼ÓÉ˺¦
|
# ReDamReduce ¼õÉÙÉ˺¦
|
# ReIgnoreDefRate ÎÞÊÓ·ÀÓù±ÈÀý
|
# ReLuckyHitRate »áÐÄÒ»»÷ÂÊ
|
# ReLuckyHit »áÐÄÒ»»÷É˺¦
|
# ReBleedDamage Á÷ѪÉ˺¦Ôö¼Ó
|
# ReIceAtk ÕæÊµÉ˺¦
|
# ReIceDef ÕæÊµµÖÓù
|
# RePetAtk Áé³è¹¥»÷
|
# RePetSkillAtkRate Áé³è¼¼ÄÜ
|
# RePetDamPer Áé³èÉ˺¦Ôö¼Ó
|
# ReFinalHurt ¹Ì¶¨É˺¦Ôö¼Ó
|
# ReFinalHurtReduce ¹Ì¶¨É˺¦¼õÉÙ
|
# RePotionReply Ѫƿ»Ö¸´Á¿
|
# RePotionCD ѪƿCD
|
#
|
# ¹Ì¶¨²ÎÊý
|
# HitTime ¹ÖÎïÊÜ»÷´ÎÊý
|
# DefCoefficient ÈËÎï·ÀÓùϵÊý
|
# AtkCoefficient ÈËÎï¹¥»÷ϵÊý
|
# AdjustCoefficient µ÷ÕûϵÊý±ÈÀý
|
|
(
|
|
[
|
|
# ¹ý³Ì²ÎÊý¹«Ê½
|
{
|
# ¹ÖÎï¹¥»÷»Ø¸´µ÷ÕûÖµ
|
"AtkReplyCoefficient":"(RePotionReply/(RePotionCD*1.0)+(0 if MaxEnduranceTime==0 else ReMaxHP/(MaxEnduranceTime*1.0)))/(MonterNum*1.0)*AtkInterval/(1+SkillAtkRate/10000.0)/(1-ReDamReduce/10000.0)*AdjustCoefficient/10000.0",
|
|
# ¹ÖÎï¹Ì¶¨É˺¦ ÔÝʱûÓÃ
|
"MonterHurt":"100",
|
|
# Íæ¼ÒÿÃëµôѪÁ¿
|
"LostHPPerSecond":"0 if MaxEnduranceTime==0 else ReMaxHP/(MaxEnduranceTime*1.0)",
|
},
|
|
# µÈ¼¶³É³¤ÊôÐÔ¹«Ê½±ê¼Ç
|
{0:
|
[
|
["Hit","0.95*ReMiss/(1-HitRate/10000.0)-ReMiss"],
|
["Miss","ReHit*MissRate/10000.0/(0.95-MissRate/10000.0)"],
|
["IceAtk","IceAtkCoefficient/10000.0*ReIceAtk"],
|
["IceDef","IceDefCoefficient/10000.0*ReIceDef"],
|
["MinAtk","DefCoefficient/10000.0*ReDef+AtkReplyCoefficient"],
|
["MaxAtk","DefCoefficient/10000.0*ReDef+AtkReplyCoefficient"],
|
["Def","ReAtk*AtkCoefficient/10000.0"],
|
["FireAtk","(RePotionReply/(RePotionCD*1.0)+LostHPPerSecond)/(MonterNum*1.0)*(1-AdjustCoefficient/10000.0)*AtkInterval/(1+SkillAtkRate/10000.0)+ReFinalHurtReduce/(MonterNum*1.0)*AtkInterval"],
|
["MaxHP","((ReAtk-Def*(1-ReIgnoreDefRate/10000.0))*ReSkillAtkRate/10000.0*(1+ReDamagePer/10000.0)*(1-ReLuckyHitRate/10000.0+ReLuckyHitRate/10000.0*(1.2+ReLuckyHit/10000.0))+max((RePetAtk-Def)*(1+RePetDamPer/10000.0)*RePetSkillAtkRate/10000.0,0)+max((ReIceAtk-IceDef)*ReSkillAtkRate/10000.0*(1+ReDamagePer/10000.0)*(1-ReLuckyHitRate/10000.0+ReLuckyHitRate/10000.0*(1.2+ReLuckyHit/10000.0)),0)+ReFinalHurt)*HitTime/100.0*math.sqrt((ReAtkSpeed+10000)/10000.0)+(ReAtk-Def*(1-ReIgnoreDefRate/10000.0))*ReBleedDamage/10000.0*(1+ReDamagePer/10000.0)*(1-ReLuckyHitRate/10000.0+ReLuckyHitRate/10000.0*(1.2+ReLuckyHit/10000.0))*HitTime/100.0"],
|
|
],
|
1:
|
[
|
["Hit","0.95*ReMiss/(1-HitRate/10000.0)-ReMiss"],
|
["Miss","ReHit*MissRate/10000.0/(0.95-MissRate/10000.0)"],
|
["IceAtk","IceAtkCoefficient/10000.0*ReIceAtk"],
|
["IceDef","IceDefCoefficient/10000.0*ReIceDef"],
|
["Def","ReAtk*AtkCoefficient/10000.0"],
|
["MinAtk","int(DefCoefficient/10000.0*ReDef+(ReMaxHP/(MonterNum*1.0)/(MaxEnduranceTime*1.0)+(RePotionReply/(RePotionCD*1.0)/(MonterNum*1.0)+ReMaxHP*0.3/60/(MonterNum*1.0)))*AtkInterval*(AdjustCoefficient/10000.0))"],
|
["MaxAtk","int(DefCoefficient/10000.0*ReDef+(ReMaxHP/(MonterNum*1.0)/(MaxEnduranceTime*1.0)+(RePotionReply/(RePotionCD*1.0)/(MonterNum*1.0)+ReMaxHP*0.3/60/(MonterNum*1.0)))*AtkInterval*(AdjustCoefficient/10000.0))"],
|
["FireAtk","int((ReMaxHP/(MonterNum*1.0)/(MaxEnduranceTime*1.0)+(RePotionReply/(RePotionCD*1.0)/(MonterNum*1.0)+ReMaxHP*0.3/60.0/(MonterNum*1.0)))*AtkInterval*(1-AdjustCoefficient/10000.0))"],
|
["MaxHP","int(((((ReAtk-Def)+ReLuckyHitRate/10000.0*ReLuckyHit+ReIceAtk)*(ReSkillAtkRate/10000.0)+(ReFinalHurt))*math.sqrt(ReAtkSpeed/10000.0+1)+RePetAtk*RePetSkillAtkRate/10000.0)*HitTime/100.0)"],
|
|
],
|
2:
|
[
|
["Hit","0.95*ReMiss/(1-HitRate/10000.0)-ReMiss"],
|
["Miss","ReHit*MissRate/10000.0/(0.95-MissRate/10000.0)"],
|
["IceAtk","IceAtkCoefficient/10000.0*ReIceAtk"],
|
["IceDef","IceDefCoefficient/10000.0*ReIceDef"],
|
["Def","ReAtk*AtkCoefficient/10000.0"],
|
["MinAtk","int(DefCoefficient/10000.0*ReDef+(ReMaxHP/(MonterNum*1.0)/(MaxEnduranceTime*1.0)+(RePotionReply/(RePotionCD*1.0)/(MonterNum*1.0)+ReMaxHP*0.3/60/(MonterNum*1.0)))*AtkInterval*(AdjustCoefficient/10000.0))"],
|
["MaxAtk","int(DefCoefficient/10000.0*ReDef+(ReMaxHP/(MonterNum*1.0)/(MaxEnduranceTime*1.0)+(RePotionReply/(RePotionCD*1.0)/(MonterNum*1.0)+ReMaxHP*0.3/60/(MonterNum*1.0)))*AtkInterval*(AdjustCoefficient/10000.0))"],
|
["FireAtk","int((ReMaxHP/(MonterNum*1.0)/(MaxEnduranceTime*1.0)+(RePotionReply/(RePotionCD*1.0)/(MonterNum*1.0)+ReMaxHP*0.3/60.0/(MonterNum*1.0)))*AtkInterval*(1-AdjustCoefficient/10000.0))"],
|
|
],
|
},
|
|
|
# µØÍ¼ÈËÊý¶ÔÓ¦ÊôÐÔ¶îÍâ³É³¤ÏµÊý {mapID:{"ÊôÐÔÃû":{×é¶Ó½øÈëÈËÊý:ϵÊý, ...}, ...}, ...} »ò {mapID:{"ÊôÐÔÃû":"ÈËÊý³É³¤ÏµÊý¹«Ê½", ...}, ...}
|
# keyÖ§³ÖÁ½¸ö¸ñʽ£º1-Ö±½ÓÅ䣬2-·¶Î§ÓÃСÀ¨ºÅ£¨min£¬max£©; ¹«Ê½ÈËÊý²ÎÊýÃû: strengthenPlayerCnt
|
{
|
|
|
# »ìÂÒÑýÓò
|
31180:{"MaxHP":{1:1, 2:1.3, 3:1.5, 4:1.6}, "Def":{4:1, 3:1, 2:1, 1:1}},
|
|
#ÊØÎÀÈË»Ê
|
31170:{"MaxHP":{1:1, 2:1.9, 3:2.7, 4:3.4, 5:4, 6:4.5, 7:4.9,(8,100):5.5}, "Def":{(1,10):1, (11,100):1}},
|
|
# ÏÉÃËboss
|
31210:{"MaxHP":{1:1, 2:1.8, 3:2.4, 4:2.8, 5:3, 6:3.3, 7:3.5,(8,100):4}, "Def":{(1,10):1, (11,100):1}},
|
|
|
},
|
|
# NPCÌØÊâ³É³¤ÈËÊý¶ÔÓ¦ÊôÐÔ¶îÍâ³É³¤ÏµÊý {npcID:{"ÊôÐÔÃû":{ÈËÊý:ϵÊý, ...}, ...}, ...}, ÓÅÏȼ¶´óÓÚµØÍ¼ÈËÊýϵÊý »ò {npcID:{"ÊôÐÔÃû":"ÈËÊý³É³¤ÏµÊý¹«Ê½", ...}, ...}
|
# keyÖ§³ÖÁ½¸ö¸ñʽ£º1-Ö±½ÓÅ䣬2-·¶Î§ÓÃСÀ¨ºÅ£¨min£¬max£©; ¹«Ê½ ÈËÊý²ÎÊýÃû: strengthenPlayerCnt£¬ ³É³¤µÈ¼¶:strengthenLV µÈ¼¶Óɳɳ¤±íÅäÖõÄÀàÐ;ö¶¨
|
{
|
#Æï³èboss
|
},
|
|
# ¶¯Ì¬µÈ¼¶µÄµØÍ¼IDÁÐ±í£¬Ä¬ÈÏÒÑˢгöÀ´µÄNPCµÈ¼¶²»»áÔÙ±ä¸ü£¬Ï´ÎË¢³öÀ´µÄ¹ÖÎïµÈ¼¶±ä¸ü [µØÍ¼ID, ...]
|
[31160,31170,31080],
|
|
# ¶¯Ì¬ÈËÊýϵÊýµÄµØÍ¼ID {µØÍ¼ID:ÊÇ·ñÂíÉÏË¢ÐÂÊôÐÔ, ...}
|
{31170:1, 51010:1, 31210:1},
|
|
]
|
|
)
|