@ -282,7 +282,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
return true ;
} ,
"afterBattle" : function ( enemyId , x , y ) {
"afterBattle" : async function ( enemyId , x , y ) {
// 战斗结束后触发的事件
var enemy = core . getEnemyInfo ( enemyId , hero , x , y )
var special = enemy . special ;
@ -295,7 +295,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
animate = core . material . items [ equipId ] . equip . animate ;
// 你也可以在这里根据自己的需要, 比如enemyId或special或flag来修改播放的动画效果
// if (enemyId == '...') animate = '...';
if ( core . getFlag ( 'noAnimate' ) ) {
// 检查该动画是否存在SE, 如果不存在则使用默认音效
if ( ! ( core . material . animates [ animate ] || { } ) . se )
core . playSound ( 'attack.mp3' ) ;
@ -305,11 +305,11 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
core . drawAnimate ( animate , x , y ) ;
else
core . drawHeroAnimate ( animate ) ;
}
// 获得战斗伤害信息
var damageInfo = core . getDamageInfo ( enemyId , null , x , y ) || { } ;
if ( ! core . getFlag ( "noAnimate" ) ) core . attackAnimate (
if ( ! core . getFlag ( "noAnimate" ) ) await core . attackAnimate (
enemyId ,
damageInfo . start [ 0 ] ,
damageInfo . start [ 1 ] ,
@ -928,6 +928,17 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
origin _hero _atk = core . getStatusOrDefault ( hero , "atk" ) ,
origin _hero _def = core . getStatusOrDefault ( hero , "def" ) ;
//编辑器特判
if ( main . mode == "editor" ) {
hero _hp = hero ? . hp ? ? core . status . hero . hp ,
hero _atk = hero ? . atk ? ? core . status . hero . atk ,
hero _def = hero ? . def ? ? core . status . hero . def ,
hero _matk = hero ? . matk ? ? core . status . hero . matk ,
hero _mdef = hero ? . mdef ? ? core . status . hero . mdef ,
hero _mhp = hero ? . mhp ? ? core . status . hero . mhp ,
hero _speed = hero ? . speed ? ? core . status . hero . speed ,
hero _spell = hero ? . spell ? ? core . status . hero . spell ;
}
// 怪物的各项数据
// 对坚固模仿等处理扔到了脚本编辑-getEnemyInfo之中
var enemyInfo = core . enemys . getEnemyInfo ( enemy , hero , x , y , floorId ) ;
@ -1017,7 +1028,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
//需要变更
const onegcd = gcd ( ... oneTurn ) //最大公约数
oneTurn = lcm ( ... oneTurn ) / onegcd //单次回合长度
oneTurn = lcm ( ... oneTurn ) //单次回合长度
//在这里处理equip的初始位置now
equipInfo . forEach ( v => {
switch ( v . id ) {
@ -1029,7 +1040,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
v . onAttack = false
if ( v . now === oneTurn ) v . onAttack = true //增加正在攻击的标志
} )
const heroinfo = { hp : hero _hp , atk : hero _atk , def : hero _def , mdef : hero _ mdef, spell : hero _spell , mhp : Math . floor ( hero _spell * hero _mhp / 100 ) , matk : Math . floor ( hero _spell * hero _matk / 100 ) , speed : hero _speed , now : 0 , isAttack : false } //勇士属性
const heroinfo = { hp : hero _hp , atk : hero _atk , def : hero _def , mdef : ( ! hero ? . mdef || hero ? . mdef === 100 ) ? hero _ mdef : hero . mdef, spell : hero _spell , mhp : Math . floor ( hero _spell * hero _mhp / 100 ) , matk : Math . floor ( hero _spell * hero _matk / 100 ) , speed : hero _speed , now : 0 , isAttack : false } //勇士属性
const enemyinfo = { hp : mon _hp , atk : mon _atk , def : mon _def , mdef : mon _mdef , spell : mon _spell , speed : mon _speed , special : mon _special , now : 0 , onAttack : false , isAttack : false } //怪物属性
//先攻,先攻为怪物和勇士勇士行动前怪物出第一刀
if ( core . hasSpecial ( mon _special , 1 ) ) {
@ -1062,7 +1073,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
let per _damage = Math . max ( enemyinfo . atk - heroinfo . def , 0 ) ,
per _mdamage = Math . floor ( enemyinfo . spell * ( 100 - heroinfo . mdef ) / 100 ) ;
//这里记录伤害触发后的属性变化和动画, 同时计入diff、damage
//这里记录伤害触发后的属性变化和动画, 同时计入diff、damage (不要在此直接修改heroinfo和enemyinfo)
if ( core . hasSpecial ( mon _special , 6 ) ) {
hero _damage += per _damage * enemy . n + per _mdamage * enemy . n
} else {
@ -1071,12 +1082,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
let animate = core . plugin . enemyanimate [ enemy . id ] ? ? "sword"
//这里可通过if更改默认的怪物攻击特效
hero _animate . push ( animate ) //勇士身上绘制sword动画
if ( heroinfo . mhp - hero _damage >= 0 ) {
hero info. mhp = heroinfo . mhp - hero _damage
if ( heroinfo . mhp + ( hero _diff . mhp ? ? 0 ) - hero _damage >= 0 ) {
hero _diff . mhp = ( hero _diff . mhp ? ? 0 ) - hero _damage
hero _damage = 0
hero _diff . hp = ( hero _diff . hp ? ? 0 ) - hero _damage
} else {
hero _damage -= heroinfo . mhp
heroinfo . hp -= hero _damage
hero _damage -= heroinfo . mhp + ( hero _diff . mhp ? ? 0 )
hero _diff . mhp = ( hero _diff . mhp ? ? 0 ) - heroinfo . mhp - ( hero _diff . mhp ? ? 0 )
hero _diff . hp = ( hero _diff . hp ? ? 0 ) - hero _damage
}
@ -1089,7 +1102,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
if ( v . onAttack ) {
let mon _damage = 0
let hero _damage = 0
//这里写生效装备的技能效果, 同时对双方属性的修改计入diff
//这里写生效装备的技能效果, 同时对双方属性的修改计入diff (不要在此直接修改heroinfo和enemyinfo)
let animate = core . plugin . equipanimate [ v . id ] ? ? "sword"
//这里可通过if更改默认的道具特效
enemy _animate . push ( animate ) //勇士身上绘制动画
@ -1104,6 +1117,13 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
enemyDiffList . push ( enemy _diff )
heroanimateList . push ( hero _animate )
enemyanimateList . push ( enemy _animate )
//处理属性变化
for ( let v in hero _diff ) {
heroinfo [ v ] += hero _diff [ v ]
}
for ( let v in enemy _diff ) {
enemyinfo [ v ] += enemy _diff [ v ]
}
continue //进入下一循环
}
heroinfo . now += heroinfo . speed
@ -1124,12 +1144,12 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
let per _damage = Math . max ( heroinfo . atk - enemyinfo . def , 0 )
let per _mdamage = Math . max ( Math . floor ( heroinfo . matk * ( 100 - enemyinfo . mdef ) / 100 ) , 0 )
mon _damage = per _damage + per _mdamage
//这里记录伤害触发后的属性变化和动画, 同时计入diff
//这里记录伤害触发后的属性变化和动画, 同时计入diff (不要在此直接修改heroinfo和enemyinfo)
let animate = core . plugin . heroanimate [ equip0 ] ? ? "sword"
//这里可通过if更改默认的武器攻击特效
enemy _animate . push ( animate )
enemyinfo . hp -= mon _damage
enemy _diff . hp = ( enemy _diff . hp ? ? 0 ) - mon _damage
heroinfo . now -= oneTurn
hero _turn ++
@ -1145,7 +1165,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
let per _damage = Math . max ( enemyinfo . atk - heroinfo . def , 0 ) ,
per _mdamage = Math . floor ( enemyinfo . spell * ( 100 - heroinfo . mdef ) / 100 ) ;
//这里记录伤害触发后的属性变化和动画, 同时计入diff、damage
//这里记录伤害触发后的属性变化和动画, 同时计入diff、damage (不要在此直接修改heroinfo和enemyinfo)
if ( core . hasSpecial ( mon _special , 6 ) ) {
hero _damage += per _damage * enemy . n + per _mdamage * enemy . n
} else {
@ -1154,12 +1174,14 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
let animate = core . plugin . enemyanimate [ enemy . id ] ? ? "sword"
//这里可通过if更改默认的怪物攻击特效
hero _animate . push ( animate ) //勇士身上绘制sword动画
if ( heroinfo . mhp - hero _damage >= 0 ) {
hero info. mhp = heroinfo . mhp - hero _damage
if ( heroinfo . mhp + ( hero _diff . mhp ? ? 0 ) - hero _damage >= 0 ) {
hero _diff . mhp = ( hero _diff . mhp ? ? 0 ) - hero _damage
hero _damage = 0
hero _diff . hp = ( hero _diff . hp ? ? 0 ) - hero _damage
} else {
hero _damage -= heroinfo . mhp
heroinfo . hp -= hero _damage
hero _damage -= heroinfo . mhp + ( hero _diff . mhp ? ? 0 )
hero _diff . mhp = ( hero _diff . mhp ? ? 0 ) - heroinfo . mhp - ( hero _diff . mhp ? ? 0 )
hero _diff . hp = ( hero _diff . hp ? ? 0 ) - hero _damage
}
@ -1172,7 +1194,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
if ( v . now >= oneTurn ) {
let mon _damage = 0
let hero _damage = 0
//这里写生效装备的技能效果, 同时对双方属性的修改计入diff
//这里写生效装备的技能效果, 同时对双方属性的修改计入diff (不要在此直接修改heroinfo和enemyinfo)
let animate = core . plugin . equipanimate [ v . id ] ? ? "sword"
//这里可通过if更改默认的道具特效
enemy _animate . push ( animate ) //怪物身上绘制动画
@ -1183,20 +1205,27 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
} )
if ( onattack ) { //处理完毕后的数据处理
//处理完毕后的数据处理
heroDiffList . push ( hero _diff )
enemyDiffList . push ( enemy _diff )
heroanimateList . push ( hero _animate )
enemyanimateList . push ( enemy _animate )
let a = hero _turn % 50 //出手50回合怪物生命未降低直接判负, 避免死循环
if ( a === 0 ) {
//处理属性变化
for ( let v in hero _diff ) {
heroinfo [ v ] += hero _diff [ v ]
}
for ( let v in enemy _diff ) {
enemyinfo [ v ] += enemy _diff [ v ]
}
//出手50回合怪物生命未降低直接判负, 避免死循环
if ( hero _turn === 50 ) {
if ( enemyinfo . hp >= beforehp ) {
return null
} else {
beforehp = enemyinfo . hp
}
}
}
}
//下面这些还没修改,原有技能除先攻、连击外暂时全部移除,所有技能需要在上方的模拟循环中做修正