/** * 女巫释放加血 */ import { _decorator, Component, sp } from 'cc'; import MTools from 'db://assets/mx/tools/MTools'; import { IWitchProperty } from '../../../game/ChapterPlayTypes'; import { BattleSpinePlayback } from 'db://assets/script/battle/presentation/BattleSpinePlayback'; const { ccclass, property } = _decorator; @ccclass('SingleWitch') export class SingleWitch extends Component { Data: IWitchProperty = null; private _isStart = false; private _exitTime = 0; private _releaseTime = 0; setData(data: IWitchProperty) { this.Data = data; this._exitTime = this.Data.existTime; this._releaseTime = 0; this.startRelease(); } /**开始释放 */ startRelease() { this._isStart = true; } protected update(dt: number): void { if (!gg.game.CurentBattle.canUpdateFrame()) return; if (!this._isStart) return; const scaledDt = dt * gg.game.CurentBattle.TimeScale; this._releaseTime -= scaledDt; if (this._releaseTime < 0) this.release(); this._exitTime -= scaledDt; if (this._exitTime <= 0) { this.remove(); } } release() { this._releaseTime = Math.random() * (this.Data.effectTimeUpperLimit - this.Data.effectTimeLowerLimit) + this.Data.effectTimeLowerLimit; let arr = gg.game.CurentBattle.MonsterSpawner.getAllMonster().filter((item) => (item.getComponent('Monster') as any)?.Data?.id != 40041); let count = arr.length < this.Data.maxAddHpMonsterNum ? arr.length : this.Data.maxAddHpMonsterNum; let arr2 = MTools.getRandomElements(arr, count); let nodeSpine = (this.node.getComponent('Monster') as any).anim; BattleSpinePlayback.play(nodeSpine, '攻击', { loop: false, onComplete: () => { BattleSpinePlayback.play(nodeSpine, '行走', { loop: true }); }, }); arr2.map((item) => { (item.getComponent('Monster') as any)?.addHP(this.Data.addHpCoefficient, true); }) } remove() { this._isStart = false; (this.node.getComponent('Monster') as any)?.remove(); } }