/** * 女巫释放加血 */ import { _decorator, Component, sp } from 'cc'; import MTools from 'db://assets/mx/tools/MTools'; import { IWitchProperty } from '../../../game/ChapterPlayTypes'; 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; gg.audio.playEffect({ name: "恐怖音效", path: "sound/怪物来袭/" }); } 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() { gg.audio.playEffect({ name: "回血", path: "sound/" }); 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; nodeSpine.setAnimation(0, '攻击', false); nodeSpine.setCompleteListener(() => { nodeSpine.setCompleteListener(null); nodeSpine.setAnimation(0, '行走', 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(); } }