You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.2 KiB
69 lines
2.2 KiB
/**
|
|
* 女巫释放加血
|
|
*/
|
|
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();
|
|
}
|
|
}
|
|
|
|
|
|
|