diff --git a/doc/todolist8.3.xmind b/doc/todolist8.3.xmind index be4c795..619d459 100644 Binary files a/doc/todolist8.3.xmind and b/doc/todolist8.3.xmind differ diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index 31d4cd7..08df268 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -226,9 +226,11 @@ export class BattleHandler { } break; case GameCampType.FRIEND: - let obj = this.getFriend(src); - if(obj && obj.isAlive()){ - lst.push(obj); + { + let obj = this.getFriend(src); + if(obj && obj.isAlive()){ + lst.push(obj); + } } break; case GameCampType.MYTEAM: @@ -295,6 +297,13 @@ export class BattleHandler { } } break; + case GameCampType.ALL_EXSELF: + for(let [key, obj] of this._players){ + if(obj && obj.isAlive() && obj != src){ + lst.push(obj); + } + } + break; default: break; } diff --git a/src/rooms/logic/Handler/PetHandler.ts b/src/rooms/logic/Handler/PetHandler.ts index 74a1d70..24bdead 100644 --- a/src/rooms/logic/Handler/PetHandler.ts +++ b/src/rooms/logic/Handler/PetHandler.ts @@ -260,11 +260,17 @@ export class PetHandler { }; public beHurt(value: number): number{ - let res = value - value * this._exredhurt; - if(res < 0){ + let rv = value - value * this._exredhurt; + if(rv < 0){ return 0; } - return this.subAP(res); + let res = this.subAP(rv); + + if(res != 0){ + this._owner.onBeHurt(this, res); + } + + return res; }; public addHP(value: number){ @@ -316,17 +322,18 @@ export class PetHandler { this._owner.onPetDied(this); }; - public attack(apet: PetHandler, param: SkillParam){ - //todo: - return 0; - }; + public attack(apet: PetHandler, param: SkillParam, ev: number = 0, isAtkBack: boolean = false){ + !isAtkBack && this._owner.onAttackBefore(this, param); - beforeAttack(){ - //todo: - }; + let myap = this.totalAP(); + myap += myap*ev; + // let otherap = apet.totalAP(); - afterAttack(){ - //todo: + let n = apet.beHurt(myap); + + !isAtkBack && this._owner.onBeAttack(apet, param); + + return n; }; public reborn(){ diff --git a/src/rooms/logic/Handler/PlayerHandler.ts b/src/rooms/logic/Handler/PlayerHandler.ts index 643019e..deeb253 100644 --- a/src/rooms/logic/Handler/PlayerHandler.ts +++ b/src/rooms/logic/Handler/PlayerHandler.ts @@ -267,8 +267,8 @@ export class PlayerHandler { return this._self.addEM(value); }; - public getEM(): number{ - return this._totalem; + public getEMRatio(): number{ + return this._totalem/100; }; public onEMChanged(value: number){ @@ -299,7 +299,7 @@ export class PlayerHandler { }; public attack(apet: PetHandler, param: SkillParam, ev: number){ - return this._self.attack(apet, param); + return this._self.attack(apet, param, ev); }; public beSilent(count: number){ @@ -403,6 +403,18 @@ export class PlayerHandler { this._owner.onUpdatePetsNotify(lst); }; + onAttackBefore(apet: PetHandler, sp?: SkillParam){ + this.singleCheckSkills(apet, TriggerType.BEFORE_ATTACK, null, sp); + }; + + onBeAttack(apet: PetHandler, sp?: SkillParam){ + this.singleCheckSkills(apet, TriggerType.BE_ATTACK, null, sp); + }; + + onBeHurt(apet: PetHandler, value: number){ + this.singleCheckSkills(apet, TriggerType.BE_HURT, value); + }; + public isMyPet(apet: PetHandler){ if(apet == this._self){ return true; @@ -542,6 +554,24 @@ export class PlayerHandler { this._owner.onSkillResultNotify(reslst); }; + singleCheckSkills(apet: PetHandler, tgttype: TriggerType, tgtvalue?: any, tgtsp?: SkillParam){ + let sp = tgtsp; + if(!sp){ + sp = new SkillParam(0, 0, 0, this, apet, null, null); + } + let reslst: SkillTarget[] = []; + apet.checkSkills(tgttype, tgtvalue, sp, (skill: Skill, ap: SkillParam, res: SkillTarget[])=>{ + if(res){ + reslst = reslst.concat(res); + }else{ + let st = new SkillTarget(skill); + st.LoadParam(sp); + reslst.push(st); + } + }); + this._owner.onSkillResultNotify(reslst); + }; + simpleCheckSkills(skills: Skill[], apet?: PetHandler, param?: SkillParam): SkillTarget[]{ let ps = param? param: new SkillParam(0, 0, 0, this, apet, this, apet); let reslst: SkillTarget[] = []; diff --git a/src/rooms/logic/skill/Skill.ts b/src/rooms/logic/skill/Skill.ts index 94466e9..9e22a23 100644 --- a/src/rooms/logic/skill/Skill.ts +++ b/src/rooms/logic/skill/Skill.ts @@ -216,7 +216,21 @@ export class Skill { _triggerSubSkill(param: SkillParam, cb?: any){ if(this._data.quoteskillid && !this._subskill){ this._subskill = this._owner.newSkill(this._data.quoteskillid); - + } + if(this._subskill){ + let subparam = this._data.skill_users? param.clone(): param; + if(this._data.skill_users){ + subparam.srcplayer = subparam.dstplayer; + subparam.srcpet = subparam.dstpet; + } + let ncount = this.getFinalValue(this._data.quotecard_times, + this._data.quotecard_timesmax, param.edd_cnt, param.cardpoint); + if(ncount == 0){ + ncount = 1; + } + for(let i=0; i