diff --git a/assets/script/game/common/config/GameEvent.ts b/assets/script/game/common/config/GameEvent.ts index 383a8a78..f9e01254 100644 --- a/assets/script/game/common/config/GameEvent.ts +++ b/assets/script/game/common/config/GameEvent.ts @@ -41,4 +41,5 @@ export enum GameEvent { WaveUpdate = "WaveUpdate", ChangeATK = "ChangeATK", ChangeATK_FRIEND_LIVE_CD = "ChangeATK_FRIEND_LIVE_CD", + ChangeATK_EQUIP_SPECIAL_ATTR = "ChangeATK_EQUIP_SPECIAL_ATTR", } \ No newline at end of file diff --git a/assets/script/game/common/config/Mission.ts b/assets/script/game/common/config/Mission.ts index 480b54c0..05483209 100644 --- a/assets/script/game/common/config/Mission.ts +++ b/assets/script/game/common/config/Mission.ts @@ -56,6 +56,9 @@ export enum FightSet { MON_WAVE_TIME=10,//怪物波次时间 FRIEND_LIVE_CD=10,//伙伴复活时间 FRIEND_LIVE_CD_LESS=2,//伙伴复活时间减少 + ATK_ADD_FRIEND_ATK=4,//伙伴攻击力增加 + ATK_ADD_FRIEND_HP=8,//伙伴生命值增加 + ATK_ADD_GLOD=1,//金币增加 // ATK_TO_ATK_RATIO=0.1, // ATK_TO_HP_RATIO=0.2, // ATK_TO_SHIELD_RATIO=2, diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index b20c8b1e..c70e7c7f 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -38,9 +38,9 @@ export const HeroSet = { Start_y:[70,0,-70] } export const HeroPos={ - 0:{pos:v3(-140,0,0)}, - 1:{pos:v3(-220,0,0)}, - 2:{pos:v3(-300,0,0)}, + 0:{pos:v3(-280,0,0)}, + 1:{pos:v3(-140,0,0)}, + 2:{pos:v3(-200,0,0)}, } export const MonSet = { 0:{pos:v3(320,0,0)}, @@ -59,30 +59,30 @@ export const HeroInfo = { 5009:{uuid:5009,name:"暴风射手",path:"a5", lv:3,kind:2,type:1,hp:50,ap:15,ap_u:0,ap_ur:0,hp_up:0,dis:700,a_cd:1.2,speed:50,skills:[6006],tals:"说明"}, 5010:{uuid:5010,name:"苍穹射手",path:"a3", lv:3,kind:1,type:1,hp:50,ap:15,ap_u:0,ap_ur:0,hp_up:0,dis:700,a_cd:1.2,speed:50,skills:[6006],tals:"说明"}, 5011:{uuid:5011,name:"幽灵射手",path:"a4", lv:3,kind:2,type:1,hp:50,ap:15,ap_u:0,ap_ur:0,hp_up:0,dis:700,a_cd:1.2,speed:50,skills:[6006],tals:"说明"}, - 5201:{uuid:5201,name:"兽人战士",path:"mor1", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5202:{uuid:5202,name:"兽人刺客",path:"mor2", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5203:{uuid:5203,name:"兽人护卫",path:"mor3", lv:1,kind:1,type:1,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, - 5204:{uuid:5204,name:"石卫", path:"mgem1",lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5205:{uuid:5205,name:"土卫", path:"mgem2",lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5206:{uuid:5206,name:"树人", path:"mgem3",lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5210:{uuid:5210,name:"骷髅战士",path:"mkl4", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5211:{uuid:5211,name:"骷髅战士",path:"mkl5", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5212:{uuid:5212,name:"骷髅战士",path:"mkl6", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5213:{uuid:5213,name:"骷髅射手",path:"mkla1",lv:1,kind:1,type:1,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, - 5214:{uuid:5214,name:"骷髅射手",path:"mkla2",lv:1,kind:1,type:1,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, - 5215:{uuid:5215,name:"骷髅射手",path:"mkla3",lv:1,kind:1,type:1,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, - 5216:{uuid:5216,name:"元素1", path:"my1", lv:2,kind:1,type:2,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.5,speed:50,skills:[6001],tals:"说明"}, - 5217:{uuid:5217,name:"元素2", path:"my2", lv:2,kind:1,type:2,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.5,speed:50,skills:[6001],tals:"说明"}, - 5218:{uuid:5218,name:"元素3", path:"my3", lv:2,kind:1,type:2,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.5,speed:50,skills:[6001],tals:"说明"}, - 5219:{uuid:5219,name:"牛头战士",path:"mn1", lv:2,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5220:{uuid:5220,name:"牛头战士",path:"mn2", lv:1,kind:1,type:1,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, - 5221:{uuid:5221,name:"牛头战士",path:"mn3", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5222:{uuid:5222,name:"独眼巨人",path:"md1", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5223:{uuid:5223,name:"独眼巨人",path:"md2", lv:1,kind:1,type:0,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5224:{uuid:5224,name:"独眼巨人",path:"md3", lv:1,kind:1,type:1,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, - 5225:{uuid:5225,name:"精英独眼",path:"md4", lv:3,kind:1,type:2,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5226:{uuid:5226,name:"精英牛头",path:"mn4", lv:3,kind:1,type:2,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, - 5227:{uuid:5227,name:"精英兽人",path:"mor4", lv:3,kind:1,type:2,hp:200,ap:1,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"} + 5201:{uuid:5201,name:"兽人战士",path:"mor1", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5202:{uuid:5202,name:"兽人刺客",path:"mor2", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5203:{uuid:5203,name:"兽人护卫",path:"mor3", lv:1,kind:1,type:1,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, + 5204:{uuid:5204,name:"石卫", path:"mgem1",lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5205:{uuid:5205,name:"土卫", path:"mgem2",lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5206:{uuid:5206,name:"树人", path:"mgem3",lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5210:{uuid:5210,name:"骷髅战士",path:"mkl4", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5211:{uuid:5211,name:"骷髅战士",path:"mkl5", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5212:{uuid:5212,name:"骷髅战士",path:"mkl6", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5213:{uuid:5213,name:"骷髅射手",path:"mkla1",lv:1,kind:1,type:1,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, + 5214:{uuid:5214,name:"骷髅射手",path:"mkla2",lv:1,kind:1,type:1,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, + 5215:{uuid:5215,name:"骷髅射手",path:"mkla3",lv:1,kind:1,type:1,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, + 5216:{uuid:5216,name:"元素1", path:"my1", lv:2,kind:1,type:2,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.5,speed:50,skills:[6001],tals:"说明"}, + 5217:{uuid:5217,name:"元素2", path:"my2", lv:2,kind:1,type:2,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.5,speed:50,skills:[6001],tals:"说明"}, + 5218:{uuid:5218,name:"元素3", path:"my3", lv:2,kind:1,type:2,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.5,speed:50,skills:[6001],tals:"说明"}, + 5219:{uuid:5219,name:"牛头战士",path:"mn1", lv:2,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5220:{uuid:5220,name:"牛头战士",path:"mn2", lv:1,kind:1,type:1,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, + 5221:{uuid:5221,name:"牛头战士",path:"mn3", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5222:{uuid:5222,name:"独眼巨人",path:"md1", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5223:{uuid:5223,name:"独眼巨人",path:"md2", lv:1,kind:1,type:0,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5224:{uuid:5224,name:"独眼巨人",path:"md3", lv:1,kind:1,type:1,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1.2,speed:50,skills:[6001],tals:"说明"}, + 5225:{uuid:5225,name:"精英独眼",path:"md4", lv:3,kind:1,type:2,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5226:{uuid:5226,name:"精英牛头",path:"mn4", lv:3,kind:1,type:2,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"}, + 5227:{uuid:5227,name:"精英兽人",path:"mor4", lv:3,kind:1,type:2,hp:200,ap:5,ap_u:0,ap_ur:0,hp_up:0,dis:400,a_cd:1,speed:50,skills:[6001],tals:"说明"} }; export const HeroUpInfo = { 5001:{ap_up:0,ap_up_rate:10,self_ap_up:0,self_ap_up_rate:0,hp_up:0,self_hp_up:0}, diff --git a/assets/script/game/hero/FriendModel.ts b/assets/script/game/hero/FriendModel.ts index 88b57213..51e0c635 100644 --- a/assets/script/game/hero/FriendModel.ts +++ b/assets/script/game/hero/FriendModel.ts @@ -1,26 +1,23 @@ +import { oops } from "db://oops-framework/core/Oops"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { VM } from "../../../../extensions/oops-plugin-framework/assets/libs/model-view/ViewModel"; +import { GameEvent } from "../common/config/GameEvent"; /** 数据层对象 */ @ecs.register('FriendModel') export class FriendModelComp extends ecs.Comp { /** 提供 MVVM 组件使用的数据 */ private vm: any = {}; - - /** 显示数据添加到 MVVM 框架中监视 */ - vmAdd() { - VM.add(this.vm, "FriendModel"); + onLoad(){ + oops.message.on(GameEvent.ChangeATK_EQUIP_SPECIAL_ATTR,this.change_equip_special_attr,this) } - /** 显示数据从 MVVM 框架中移除 */ - vmRemove() { - VM.remove("FriendModel"); + change_equip_special_attr(e:GameEvent,data:any){ + console.log("[FriendModel]:change_equip_special_attr",data) } /** 数据层组件移除时,重置所有数据为默认值 */ reset() { - for (var key in this.vm) { - delete this.vm[key]; - } + } } \ No newline at end of file diff --git a/assets/script/game/hero/Hero.ts b/assets/script/game/hero/Hero.ts index 1204c22f..8c9664a0 100644 --- a/assets/script/game/hero/Hero.ts +++ b/assets/script/game/hero/Hero.ts @@ -5,10 +5,9 @@ import { smc } from "../common/SingletonModuleComp"; import { HeroModelComp } from "./HeroModelComp"; import { HeroViewComp } from "./HeroViewComp"; import { BoxSet, FacSet } from "../common/config/BoxSet"; -import { HeroInfo } from "../common/config/heroSet"; +import { HeroInfo, HeroPos } from "../common/config/heroSet"; import { BattleMoveComp } from "../common/ecs/position/BattleMoveComp"; import { SkillConComp } from "./SkillConComp"; -import { FriendModelComp } from "./FriendModel"; /** 角色实体 */ @ecs.register(`Hero`) @@ -37,7 +36,7 @@ export class Hero extends ecs.Entity { var node = instantiate(prefab); var scene = smc.map.MapView.scene; node.parent = scene.entityLayer!.node! - let pos=v3(-277,0,0) + let pos=HeroPos[0].pos node.setPosition(pos) var hv = node.getComponent(HeroViewComp)!; let hero= HeroInfo[uuid] // 共用英雄数据 @@ -62,7 +61,7 @@ export class Hero extends ecs.Entity { this.add(hv); } /** 加载角色 */ - load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001,info:any={ap:0,hp:0},fight_pos:number=0) { + load(pos: Vec3 = Vec3.ZERO,scale:number = 1,uuid:number=1001,info:any={ap:0,hp:0},fight_pos:number=1) { // console.log("英雄加载:",uuid,pos,scale,info) scale = 1 let box_group=BoxSet.HERO @@ -73,7 +72,6 @@ export class Hero extends ecs.Entity { node.parent = scene.entityLayer!.node! node.setPosition(pos) // console.log("hero load",pos) - this.addComponents(FriendModelComp); var hv = node.getComponent(HeroViewComp)!; let hero= HeroInfo[uuid] // 共用英雄数据 hv.scale = scale; diff --git a/assets/script/game/hero/HeroViewComp.ts b/assets/script/game/hero/HeroViewComp.ts index d5eb272d..1350cda3 100644 --- a/assets/script/game/hero/HeroViewComp.ts +++ b/assets/script/game/hero/HeroViewComp.ts @@ -2,7 +2,7 @@ import { Vec3, _decorator , v3,Collider2D,Contact2DType,Label ,Node,Prefab,insta import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { HeroSpine } from "./HeroSpine"; -import { BoxSet } from "../common/config/BoxSet"; +import { BoxSet, FacSet } from "../common/config/BoxSet"; import { smc } from "../common/SingletonModuleComp"; import { Timer } from "../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer"; import { SkillSet, TargetGroup, TargetType } from "../common/config/SkillSet"; @@ -76,7 +76,8 @@ export class HeroViewComp extends CCComp { dir_y:number = 0; speek_time:number = 0; is_stop_temp:boolean = false;i - + Friend_alive_cd:Timer=new Timer(10) + private damageQueue: Array<{ damage: number, isCrit: boolean, @@ -92,28 +93,10 @@ export class HeroViewComp extends CCComp { this.FIGHTCON=this.node.parent.getComponent(FightConComp); console.log("hero view comp ",this.FIGHTCON) this.on(GameEvent.ChangeATK,this.change_atk,this) + this.on(GameEvent.ChangeATK_EQUIP_SPECIAL_ATTR,this.change_equip_special_attr,this) // let anm = this.node.getChildByName("anm") // anm.setScale(anm.scale.x*0.8,anm.scale.y*0.8); - // 注册单个碰撞体的回调函数 - - // let collider = this.getComponent(Collider2D); - // collider.group = this.box_group; - // // console.log("hero collider ",this.scale,collider); - // if (collider) { - // collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this); - // // collider.on(Contact2DType.END_CONTACT, this.onEndContact, this); - // collider.on(Contact2DType.PRE_SOLVE, this.onPreSolve, this); - // // collider.on(Contact2DType.POST_SOLVE, this.onPostSolve, this); - // } - - } - // onBeginContact (seCol: Collider2D, oCol: Collider2D) { - // console.log("碰撞开始 ",this.scale,seCol,oCol); - // } - // onEndContact (seCol: Collider2D, oCol: Collider2D) { console.log("碰撞结束 ",this.scale,seCol,oCol);} - // onPreSolve (seCol: Collider2D, oCol: Collider2D) {console.log("碰撞预处理 ",this.scale,seCol,oCol);} - // onPostSolve (seCol: Collider2D, oCol: Collider2D) {console.log("碰撞后处理 ",this.scale,seCol,oCol); } - + } /** 视图层逻辑代码分离演示 */ start () { this.as.idle() @@ -127,7 +110,7 @@ export class HeroViewComp extends CCComp { } /* 显示角色血量 */ this.node.getChildByName("top").getChildByName("hp").active = true; - // console.log("hero parent",this.node.parent) + this.Friend_alive_cd=new Timer(FightSet.FRIEND_LIVE_CD) } update(dt: number){ if(!smc.mission.play||smc.mission.pause) return @@ -135,6 +118,12 @@ export class HeroViewComp extends CCComp { // this.ent.destroy(); // return // } + if(this.is_dead) { + if(this.Friend_alive_cd.update(dt)){ + console.log("alive friend") + this.to_alive() + } + } if(this.timer.update(dt)){ // this.add_ap(10) }; @@ -149,7 +138,17 @@ export class HeroViewComp extends CCComp { this.in_stop(dt); // 处理伤害队列 this.processDamageQueue(); - } + } + + change_equip_special_attr(e:GameEvent,data:any){ + console.log("change_equip_special_attr",data) + this.up_friend_alive_cd(data.friend_live_cd_less) + } + + up_friend_alive_cd(less:number){ + this.Friend_alive_cd=new Timer(FightSet.FRIEND_LIVE_CD-less) + } + change_atk(e:GameEvent,data:any){ switch(data){ case EquipSpecialAttr.ICE: @@ -296,10 +295,17 @@ export class HeroViewComp extends CCComp { this.hp -= remainingDamage; if(this.hp <= 0) { if(this == null) return; + this.is_dead=true this.BUFFCOMP.dead() this.do_dead() + console.log("[HeroViewComp]:dead,fac => "+(this.fac==FacSet.HERO?"hero":"monster")) if(this.ent == null) return; - this.ent.destroy(); + + if(this.fac ==FacSet.HERO){ + this.to_grave() + }else{ + this.ent.destroy(); + } } this.BUFFCOMP.update_info_hp() this.showDamage(remainingDamage, true); @@ -309,10 +315,21 @@ export class HeroViewComp extends CCComp { this.BUFFCOMP.dead() this.to_drop() + } + to_grave(){ + tween(this.node).to(0.5, { position:v3(-900,this.node.position.y+300,0)},{ + onComplete: (target?: object) => { + this.node.setPosition(-900,this.node.position.y-300,0) + } + } + ).start() } to_alive(){ this.is_dead=false - this.node.setPosition(HeroPos[0].pos) + this.hp=this.hp_max + this.BUFFCOMP.update_info_hp() + this.node.setPosition(HeroPos[this.fight_pos].pos) + this.BUFFCOMP.heathed() } //掉落物品 to_drop(){ diff --git a/assets/script/game/hero/MasterModel.ts b/assets/script/game/hero/MasterModel.ts new file mode 100644 index 00000000..ffe14dd1 --- /dev/null +++ b/assets/script/game/hero/MasterModel.ts @@ -0,0 +1,25 @@ +import { _decorator, Component, Node } from 'cc'; +import { GameEvent } from '../common/config/GameEvent'; +import { oops } from 'db://oops-framework/core/Oops'; +import { ecs } from 'db://oops-framework/libs/ecs/ECS'; +const { ccclass, property } = _decorator; + +@ecs.register('MasterModel') +export class MasterModelComp extends ecs.Comp { + + onLoad(){ + oops.message.on(GameEvent.ChangeATK_EQUIP_SPECIAL_ATTR,this.change_equip_special_attr,this) + } + + change_equip_special_attr(e:GameEvent,data:any){ + console.log("[MasterModel]:change_equip_special_attr",data) + } + update(deltaTime: number) { + + } + reset(): void { + + } +} + + diff --git a/assets/script/game/hero/MasterModel.ts.meta b/assets/script/game/hero/MasterModel.ts.meta new file mode 100644 index 00000000..ab04b6ee --- /dev/null +++ b/assets/script/game/hero/MasterModel.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "70abe143-ca41-4c22-b645-63a6035aba95", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/script/game/hero/SkillConComp.ts b/assets/script/game/hero/SkillConComp.ts index 12276346..ba9e7743 100644 --- a/assets/script/game/hero/SkillConComp.ts +++ b/assets/script/game/hero/SkillConComp.ts @@ -42,6 +42,7 @@ export class SkillConComp extends CCComp { if(count<1) count=1 // console.log(this.HeroView.hero_name+(this.HeroView.is_master?"[主]":"[从] 准备释放")+SkillSet[this.HeroView.atk_skill].name+"=>"+"=>cd:"+cd+"=> count:"+count) if (this.HeroView.is_atking &&(this.HeroView.at > cd)) { + if(this.HeroView.is_dead) return const config = SkillSet[this.HeroView.atk_skill]; if (!config) return; // console.log(this.HeroView.hero_name+(this.HeroView.is_master?"[主]":"[从] 释放")+"=>"+config.name+"=>"+count) diff --git a/assets/script/game/map/EquipsComp.ts b/assets/script/game/map/EquipsComp.ts index 1eed66c2..a7010af2 100644 --- a/assets/script/game/map/EquipsComp.ts +++ b/assets/script/game/map/EquipsComp.ts @@ -135,34 +135,9 @@ export class EquipsComp extends Component { console.log("武器减益", weapon_debuffs); console.log("防具减益", armor_debuffs); console.log("饰品减益", accessory_debuffs); - //特殊属性附加 - switch(weapon_special_attr){ - case EquipSpecialAttr.ICE: - oops.message.dispatchEvent(GameEvent.ChangeATK,EquipSpecialAttr.ICE) - break - case EquipSpecialAttr.FIRE: - oops.message.dispatchEvent(GameEvent.ChangeATK,EquipSpecialAttr.FIRE) - break - case EquipSpecialAttr.WIND: - oops.message.dispatchEvent(GameEvent.ChangeATK,EquipSpecialAttr.WIND) - break - } - switch(armor_special_attr){ - case EquipSpecialAttr.FRIEND_LIVE_CD: - oops.message.dispatchEvent(GameEvent.ChangeATK_FRIEND_LIVE_CD,FightSet.FRIEND_LIVE_CD_LESS) - break - default: - oops.message.dispatchEvent(GameEvent.ChangeATK_FRIEND_LIVE_CD,0) - break - } - switch(accessory_special_attr){ - case EquipSpecialAttr.FRIEND_LIVE_CD: - oops.message.dispatchEvent(GameEvent.ChangeATK_FRIEND_LIVE_CD,FightSet.FRIEND_LIVE_CD_LESS) - break - default: - oops.message.dispatchEvent(GameEvent.ChangeATK_FRIEND_LIVE_CD,0) - break - } + + let equip_special_attr=this.count_equip_special_attr(weapon_special_attr,armor_special_attr,accessory_special_attr) + oops.message.dispatchEvent(GameEvent.ChangeATK_EQUIP_SPECIAL_ATTR,equip_special_attr) // 合并所有装备属性 const allBuff = [...weapon_buffs, ...armor_buffs, ...accessory_buffs]; @@ -206,6 +181,69 @@ export class EquipsComp extends Component { oops.message.dispatchEvent(GameEvent.EquipChange, this.attrs); } + count_equip_special_attr(weapon_special_attr:any,armor_special_attr:any,accessory_special_attr:any){ + //特殊属性附加 + let equip_special_attr={ + friend_live_cd_less:0, + atk_add_friend_atk:0, + atk_add_friend_hp:0, + atk_add_glod:0, + } + + switch(weapon_special_attr){ + case EquipSpecialAttr.ICE: + oops.message.dispatchEvent(GameEvent.ChangeATK,EquipSpecialAttr.ICE) + break + case EquipSpecialAttr.FIRE: + oops.message.dispatchEvent(GameEvent.ChangeATK,EquipSpecialAttr.FIRE) + break + case EquipSpecialAttr.WIND: + oops.message.dispatchEvent(GameEvent.ChangeATK,EquipSpecialAttr.WIND) + break + case EquipSpecialAttr.FRIEND_LIVE_CD: + equip_special_attr.friend_live_cd_less+=FightSet.FRIEND_LIVE_CD_LESS + break + case EquipSpecialAttr.ATK_ADD_FRIEND_ATK: + equip_special_attr.atk_add_friend_atk+=FightSet.ATK_ADD_FRIEND_ATK + break + case EquipSpecialAttr.ATK_ADD_FRIEND_HP: + equip_special_attr.atk_add_friend_hp+=FightSet.ATK_ADD_FRIEND_HP + break + case EquipSpecialAttr.ATK_ADD_GLOD: + equip_special_attr.atk_add_glod+=FightSet.ATK_ADD_GLOD + } + + switch(armor_special_attr){ + case EquipSpecialAttr.FRIEND_LIVE_CD: + equip_special_attr.friend_live_cd_less+=FightSet.FRIEND_LIVE_CD_LESS + break + case EquipSpecialAttr.ATK_ADD_FRIEND_ATK: + equip_special_attr.atk_add_friend_atk+=FightSet.ATK_ADD_FRIEND_ATK + break + case EquipSpecialAttr.ATK_ADD_FRIEND_HP: + equip_special_attr.atk_add_friend_hp+=FightSet.ATK_ADD_FRIEND_HP + break + case EquipSpecialAttr.ATK_ADD_GLOD: + equip_special_attr.atk_add_glod+=FightSet.ATK_ADD_GLOD + } + + switch(accessory_special_attr){ + case EquipSpecialAttr.FRIEND_LIVE_CD: + equip_special_attr.friend_live_cd_less+=FightSet.FRIEND_LIVE_CD_LESS + break + case EquipSpecialAttr.ATK_ADD_FRIEND_ATK: + equip_special_attr.atk_add_friend_atk+=FightSet.ATK_ADD_FRIEND_ATK + break + case EquipSpecialAttr.ATK_ADD_FRIEND_HP: + equip_special_attr.atk_add_friend_hp+=FightSet.ATK_ADD_FRIEND_HP + break + case EquipSpecialAttr.ATK_ADD_GLOD: + equip_special_attr.atk_add_glod+=FightSet.ATK_ADD_GLOD + } + return equip_special_attr + } + + add_attr(targetKey:string,attr:any){ if(targetKey){ this.attrs[targetKey][BuffAttr[attr.type]] += attr.value; diff --git a/assets/script/game/map/MissionHeroComp.ts b/assets/script/game/map/MissionHeroComp.ts index 0050c0fe..7383d35a 100644 --- a/assets/script/game/map/MissionHeroComp.ts +++ b/assets/script/game/map/MissionHeroComp.ts @@ -10,7 +10,6 @@ import { HeroViewComp } from "../hero/HeroViewComp"; import { oops } from "db://oops-framework/core/Oops"; import { HeroPos } from "../common/config/heroSet"; import { FightSet } from "../common/config/Mission"; -import { FriendModelComp } from "../hero/FriendModel"; const { ccclass, property } = _decorator; /** 视图层对象 */ @@ -23,7 +22,7 @@ export class MissionHeroCompComp extends CCComp { current_hero_uuid:number=0 onLoad(){ this.on(GameEvent.UseHeroCard,this.call_friend,this) - this.on(GameEvent.ChangeATK_FRIEND_LIVE_CD,this.change_friend_alive_cd,this) + this.on(GameEvent.ChangeATK_EQUIP_SPECIAL_ATTR,this.change_equip_qpecial_attr,this) this.on(GameEvent.FightReady,this.fight_ready,this) } @@ -44,31 +43,34 @@ export class MissionHeroCompComp extends CCComp { } - change_friend_alive_cd(e:GameEvent,data:any){ - console.log("change_friend_alive_cd",data) - this.Friend_alive_cd=new Timer(FightSet.FRIEND_LIVE_CD-data) + change_equip_qpecial_attr(e:GameEvent,data:any){ + } - private call_friend(event: string, args: any,freind_pos:number=0){ - console.log("call_hero addHero",args.uuid) + up_friend_alive_cd(less:number){ + + } + + private call_friend(event: string, args: any,freind_pos:number=1){ + console.log("[MissionHeroComp]:call_hero addHero",args.uuid) let info:any={ap:0,hp:0,lv:0} let hero = ecs.getEntity(Hero); let scale = 1 - let pos:Vec3 = HeroPos[freind_pos].pos; - hero.load(pos,scale,args.uuid,info,freind_pos); - console.log("call_friend",hero) - } - - alive_friend(){ - this.Friend_is_dead=false - let heros = ecs.query(ecs.allOf(FriendModelComp)) + let heros=ecs.query(ecs.allOf(HeroViewComp)) for(let hero of heros){ let hv = hero.get(HeroViewComp) - if(hv.is_dead){ - hv.to_alive() + if(hv.fight_pos==freind_pos){ + freind_pos=2 + break } } + console.log("[MissionHeroComp]:call_friend",heros) + let pos:Vec3 = HeroPos[freind_pos].pos; + hero.load(pos,scale,args.uuid,info,freind_pos); + } + + // show_heros_pos(event: string, args: any){ // console.log("show_heros_pos",args) diff --git a/assets/script/todo.md b/assets/script/todo.md index f4f14b6f..81bae756 100644 --- a/assets/script/todo.md +++ b/assets/script/todo.md @@ -15,7 +15,7 @@ - [x] 普通攻击改为飓风攻击带击退(被动) - [x] 普通攻击改为寒冰攻击带冰冻(被动) - [x] 普通攻击改为火焰攻击带易伤(被动) -- [ ] 伙伴复活时间减少%(被动) +- [x] 伙伴复活时间减少%(被动) - [ ] 每攻击n次 加伙伴hp - [ ] 每攻击n次 加伙伴ap - [ ] 每攻击n次后 增加1金币