注释 打印+怪物变强

This commit is contained in:
2025-07-21 08:07:53 +08:00
parent c6dea41c80
commit 9fd8fa02af
8 changed files with 106 additions and 83 deletions

View File

@@ -14,7 +14,7 @@ const { ccclass, property } = _decorator;
@ccclass('Main')
export class Main extends Root {
start() {
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb
}
protected async run() {
smc.initialize = ecs.getEntity<Initialize>(Initialize);

View File

@@ -217,15 +217,15 @@ export const getSkills=(quality:number)=>{
export const SkillSet = {
6001:{uuid:6001,name:"凛冬之触",for_hero:false,sp_name:"greenball",path:"3034",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人释放寒冰弹,造成100%攻击的伤害"},
6002:{uuid:6002,name:"穿心箭矢",for_hero:false,sp_name:"arrow",path:"3037",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.parabolic,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人释放箭矢,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人释放箭矢,造成100%攻击的伤害"},
6003:{uuid:6003,name:"护盾",for_hero:true,sp_name:"buff_to",path:"3045",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Team,SType:SType.shield,act:"atk",DTType:DTType.single,CdType:2,AType:AType.StartEnd,RType:RType.fixed,EType:EType.timeEnd,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:10,hit:1,hited:0.3,shield:2,heal:0,speed:720,hero:0,cost:10,info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"},
debuff:0,deV:0,deC:0,deR:100,in:1,ap:0,cd:10,hit:1,hited:3,shield:2,heal:0,speed:720,hero:0,cost:10,info:"为最前排队友召唤一个可以抵御2次攻击的圣盾(最高叠加到6次)"},
6004:{uuid:6004,name:"治疗", for_hero:true, sp_name:"heath_small",path:"3056",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Team,SType:SType.heal,act:"atk",DTType:DTType.single,CdType:2,AType:AType.StartEnd,RType:RType.fixed,EType:EType.timeEnd,fname:"max",flash:false,with:0,
@@ -233,29 +233,29 @@ export const SkillSet = {
6005:{uuid:6005,name:"基础打击",for_hero:false,sp_name:"base1",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6006:{uuid:6006,name:"基础打击",for_hero:false,sp_name:"base2",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6007:{uuid:6007,name:"基础打击",for_hero:false,sp_name:"base3",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6008:{uuid:6008,name:"基础打击",for_hero:false,sp_name:"base4",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6009:{uuid:6009,name:"铁斧打击",for_hero:false,sp_name:"base_ft",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出铁斧,造成100%攻击的伤害"},
6010:{uuid:6010,name:"木棍打击",for_hero:false,sp_name:"base_mg",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出木棍,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出木棍,造成100%攻击的伤害"},
6011:{uuid:6011,name:"飞刀打击",for_hero:false,sp_name:"mon_xd",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出飞刀,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出飞刀,造成100%攻击的伤害"},
6012:{uuid:6012,name:"石斧打击",for_hero:false,sp_name:"base_sf",path:"3036",quality:Quality.WHITE, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:1,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:0,
debuff:0,deV:0,deC:0,deR:100,in:0.8,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"},
debuff:0,deV:0,deC:0,deR:100,in:8,ap:100,cd:5,hit:1,hited:3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"向最前方敌人扔出石斧,造成100%攻击的伤害"},
6020:{uuid:6020,name:"冰暴",for_hero:true,sp_name:"bingyu",path:"3135",quality:Quality.BLUE, TType:TType.Frontline,maxC:1,
@@ -276,7 +276,7 @@ export const SkillSet = {
6024:{uuid:6024,name:"寒冰箭",for_hero:true, sp_name:"arrow_blue",path:"3060",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:2,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90,
debuff:DebuffAttr.FROST,deV:1,deC:0,deR:100,in:1,ap:100,cd:5,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率冰冻敌人"},
debuff:DebuffAttr.FROST,deV:1,deC:0,deR:100,in:1,ap:100,cd:1,hit:1,hited:0.3,shield:0,heal:0,speed:720,hero:0,cost:10,info:"召唤大火球攻击前方所有敌人,造成200%攻击的伤害,20%几率冰冻敌人"},
6025:{uuid:6025,name:"烈焰射击",for_hero:false,sp_name:"arrow_yellow",path:"3014",quality:Quality.GREEN, TType:TType.Frontline,maxC:1,
TGroup:TGroup.Enemy,SType:SType.damage,act:"atk",DTType:DTType.single,CdType:2,AType:AType.linear,RType:RType.linear,EType:EType.collision,fname:"max",flash:false,with:90,

View File

@@ -116,7 +116,7 @@ export class HeroViewComp extends CCComp {
onLoad() {
this.as = this.getComponent(HeroSpine);
this.FIGHTCON=this.node.parent.getComponent(FightConComp);
console.log("[HeroViewComp]:hero view comp ",this.FIGHTCON)
//console.log("[HeroViewComp]:hero view comp ",this.FIGHTCON)
this.on(GameEvent.ChangeATK_EQUIP_SPECIAL_ATTR,this.change_atk,this)
this.on(GameEvent.UpdateHP,this.update_hp,this)
this.on(GameEvent.EXPUP,this.exp_up,this)
@@ -159,7 +159,7 @@ export class HeroViewComp extends CCComp {
this.processDamageQueue();
}
use_enhancement(e:GameEvent,data:any){
console.log("[HeroViewComp]:use_enhancement",data)
//console.log("[HeroViewComp]:use_enhancement",data)
if(this.is_master){
switch(data.type){
case EnhancementType.ATTACK:
@@ -230,7 +230,7 @@ export class HeroViewComp extends CCComp {
// this.BUFFCOMP.tooltip(TooltipTypes.speedup,speed.toFixed(0));
}
add_ap(ap: number,is_num:boolean=true){
console.log("[HeroViewComp]:add_ap add:",ap,this.ap)
//console.log("[HeroViewComp]:add_ap add:",ap,this.ap)
if(is_num){
this.ap += Math.floor(ap);
}else{
@@ -242,7 +242,7 @@ export class HeroViewComp extends CCComp {
}
de_ap(ap: number,is_num:boolean=true){
console.log("[HeroViewComp]:de_ap de:",ap,this.ap)
//console.log("[HeroViewComp]:de_ap de:",ap,this.ap)
if(is_num){
this.ap -= Math.floor(ap);
}else{
@@ -251,7 +251,7 @@ export class HeroViewComp extends CCComp {
this.BUFFCOMP.vmdata_update()
}
update_hp(e:GameEvent,data:any){
console.log("[HeroViewComp]:update_hp",data)
//console.log("[HeroViewComp]:update_hp",data)
if(this.is_master===data.is_master&&this.fac===FacSet.HERO){
this.buff_hp += data.hp
if(data.hp > 0){
@@ -271,7 +271,7 @@ export class HeroViewComp extends CCComp {
}
de_hp_max(hp: number=0,is_num:boolean=true){ //最大值 只存在数值添加, 比例通过buff_hp处理
console.log("[HeroViewComp]:de_hp_max de:",hp,this.hp_max)
//console.log("[HeroViewComp]:de_hp_max de:",hp,this.hp_max)
this.hp_max -= Math.floor(hp) ;
this.BUFFCOMP.vmdata_update(true)
}
@@ -339,7 +339,7 @@ export class HeroViewComp extends CCComp {
do_dead(){
this.do_dead_trigger()
console.log("[HeroViewComp]:角色死亡",this.hero_uuid)
//console.log("[HeroViewComp]:角色死亡",this.hero_uuid)
if(this.fac==FacSet.MON){
let exp=getExpDrops(HeroInfo[this.hero_uuid].quality,this.lv)
@@ -353,7 +353,7 @@ export class HeroViewComp extends CCComp {
}
if(this.fac==FacSet.HERO){
console.log("[HeroViewComp]:英雄死亡")
//console.log("[HeroViewComp]:英雄死亡")
oops.message.dispatchEvent(GameEvent.FightEnd,{victory:false})
}
@@ -384,7 +384,7 @@ export class HeroViewComp extends CCComp {
}
let n_deR=deR-DEBUFF_DOWN-buff_debuff_down // 触发概率
let r=RandomManager.instance.getRandomInt(0,100) // 随机数
console.log("[HeroViewComp]:类型,值,次数,技能概率,实际概率,随机数",type,deV,deC,deR,n_deR,r)
//console.log("[HeroViewComp]:类型,值,次数,技能概率,实际概率,随机数",type,deV,deC,deR,n_deR,r)
if(r < n_deR) {
// this.BUFFCOMP.tooltip(TooltipTypes.uskill,"*抵抗*")
return
@@ -434,7 +434,7 @@ export class HeroViewComp extends CCComp {
}
break
}
console.log("[HeroViewComp]:debuffs",type,deV,deC,deR,this.DEBUFF_BURNS)
//console.log("[HeroViewComp]:debuffs",type,deV,deC,deR,this.DEBUFF_BURNS)
}
add_buff(buff:number,count:number,type:number){
@@ -482,7 +482,7 @@ export class HeroViewComp extends CCComp {
this.is_dead=true
this.BUFFCOMP.dead()
this.do_dead()
console.log("[HeroViewComp]:dead,fac => "+(this.fac==FacSet.HERO?"hero":"monster"))
//console.log("[HeroViewComp]:dead,fac => "+(this.fac==FacSet.HERO?"hero":"monster"))
if(this.ent == null) return;
if(this.fac ==FacSet.HERO){
this.to_grave()
@@ -519,7 +519,7 @@ export class HeroViewComp extends CCComp {
if(buff!==null) buff_def=buff.DEF
damage=remainingDamage*(100-(buff_def+def)+Burn)/100
console.log("[HeroViewComp]:最终伤害,敌人伤害值,免伤,防御,易伤",damage,remainingDamage,buff_def,def,Burn)
////console.log("[HeroViewComp]:最终伤害,敌人伤害值,免伤,防御,易伤",damage,remainingDamage,buff_def,def,Burn)
return Math.floor(damage)
}
count_debuff(){
@@ -559,11 +559,11 @@ export class HeroViewComp extends CCComp {
if(crit > 0){
let random = Math.random()*100
if(random < crit) {
console.log("[HeroViewComp]:crit",crit,random)
//console.log("[HeroViewComp]:crit",crit,random)
return true
}
}
console.log("[HeroViewComp]:crit",crit)
//console.log("[HeroViewComp]:crit",crit)
return false
}
// dead(){
@@ -575,14 +575,14 @@ export class HeroViewComp extends CCComp {
if(this.is_dead||this.fac==FacSet.MON||this.is_master) return
let count = 1
for(let i=0;i<count;i++){
console.log("[HeroViewComp]:dead"+i+"次")
//console.log("[HeroViewComp]:dead"+i+"次")
}
}
do_atked_trigger(){
if(this.is_dead||this.fac==FacSet.MON) return
let count = 1
if(this.double_atked) {
console.log("[HeroViewComp]:double_atked")
//console.log("[HeroViewComp]:double_atked")
count =2
}
@@ -611,7 +611,7 @@ export class HeroViewComp extends CCComp {
}
to_console(value:any,value2:any=null,value3:any=null){
console.log("["+this.scale+this.hero_name+']'+value,value2,value3)
//console.log("["+this.scale+this.hero_name+']'+value,value2,value3)
}
reset() {
@@ -641,13 +641,13 @@ export class HeroViewComp extends CCComp {
exp_up(e:any,data:any){
if(this.fac==FacSet.MON) return
console.log("[HeroViewComp]:经验提高",data.exp)
//console.log("[HeroViewComp]:经验提高",data.exp)
this.exp+=data.exp
this.next_exp=getUpExp(this.lv)
let diff=this.exp-this.next_exp
if(diff >= 0){
this.exp=diff
console.log("[HeroViewComp]:exp_up",this.exp,this.next_exp)
//console.log("[HeroViewComp]:exp_up",this.exp,this.next_exp)
oops.message.dispatchEvent(GameEvent.EnhancementSelect)
this.to_update()
}
@@ -704,10 +704,10 @@ export class HeroViewComp extends CCComp {
this.atked_count++;
if (isCrit) {
this.BUFFCOMP.tooltip(TooltipTypes.crit, damage.toFixed(0), damage);
// console.log("暴击伤害:" + damage);
// //console.log("暴击伤害:" + damage);
} else {
this.BUFFCOMP.tooltip(TooltipTypes.life, damage.toFixed(0), damage);
// console.log("普通伤害:" + damage);
// //console.log("普通伤害:" + damage);
}
}
}

View File

@@ -76,8 +76,8 @@ export class Monster extends ecs.Entity {
// 怪物属性随等级增长 (根据Design.md中的公式)
// HP增长: Math.floor(baseHp * (1 + (level-1) * 0.3))
// AP增长: Math.floor(baseAp * (1 + (level-1) * 0.25))
const levelHp = Math.floor(baseHp * (1 + (lv - 1) * 0.3));
const levelAp = Math.floor(baseAp * (1 + (lv - 1) * 0.25));
const levelHp = Math.floor(baseHp * (1 + (lv - 1) * 0.5));
const levelAp = Math.floor(baseAp * (1 + (lv - 1) * 0.1));
hv.hp = hv.hp_max = levelHp;
hv.ap = levelAp;

View File

@@ -37,13 +37,13 @@ export class SkillConComp extends CCComp {
onLoad(){
this.HeroView=this.node.getComponent(HeroViewComp)
this.FIGHTCON=this.node.parent.getComponent(FightConComp)
// console.log(this.HeroView.uuid+"=>"+this.HeroView.hero_name+"=> SkillConComp onLoad")
// //console.log(this.HeroView.uuid+"=>"+this.HeroView.hero_name+"=> SkillConComp onLoad")
this.on(GameEvent.CastHeroSkill,this.cast_master_skill,this)
oops.message.on(GameEvent.MaxSkill,this.use_max_skill,this)
}
start() {
// console.log(this.HeroView.uuid+"=>"+this.HeroView.hero_name+"=> SkillConComp start")
// //console.log(this.HeroView.uuid+"=>"+this.HeroView.hero_name+"=> SkillConComp start")
this.HeroEntity=this.HeroView.ent
}
@@ -61,7 +61,7 @@ export class SkillConComp extends CCComp {
this.HeroView.at = 0;
}
if (this.aoe_queues.length > 0) {
console.log("[FightConComp]:aoe_queues:",this.aoe_queues)
//console.log("[FightConComp]:aoe_queues:",this.aoe_queues)
// 遍历所有必杀技技能,更新它们的计时器
for (let i = this.aoe_queues.length - 1; i >= 0; i--) {
@@ -93,13 +93,13 @@ export class SkillConComp extends CCComp {
cast_master_skill(e:string,uuid:any){
if(!this.HeroView) return
if(!this.HeroView.is_master) return
console.log("hart cast_skill",uuid ,e)
//console.log("hart cast_skill",uuid ,e)
const config = SkillSet[uuid];
this.castSkill(config,false,this.FIGHTCON.hero_buff.SKILL_DMG)
}
/** 施放技能 */
castSkill(config: typeof SkillSet[keyof typeof SkillSet],is_wfuny:boolean=false,dmg:number=0) {
// console.log(view.uuid+"=>"+view.hero_name+"施放技能:"+config.uuid);
// //console.log(view.uuid+"=>"+view.hero_name+"施放技能:"+config.uuid);
this.doSkill(config,is_wfuny,dmg);
@@ -109,7 +109,7 @@ export class SkillConComp extends CCComp {
use_max_skill(e:GameEvent,data:any){
if(!this.HeroView) return
if(!this.HeroView.is_master) return
console.log("[SkillConComp]:use_max_skill:",data)
//console.log("[SkillConComp]:use_max_skill:",data)
this.skill_id_counter++;
this.aoe_queues.push({
id: this.skill_id_counter,
@@ -258,7 +258,7 @@ export class SkillConComp extends CCComp {
target_pos= new Vec3(targets[0].get(HeroViewComp).node.position.x,0,0)
}
let start_pos=new Vec3(-280,50,0)
// console.log("[Skill]:node=>",start_pos)
// //console.log("[Skill]:node=>",start_pos)
skill.load(
start_pos,
this.node.parent,
@@ -284,7 +284,7 @@ export class SkillConComp extends CCComp {
public clear_timer() {
// console.log("clear_timer");
// //console.log("clear_timer");
Object.values(this._timers).forEach(clearTimeout);
}
get_cd(cd:number,view:HeroViewComp){

View File

@@ -29,7 +29,7 @@ export class MissionMonCompComp extends CCComp {
buffData?: any[] // 使用BuffAttr格式的buff数据
}> = [];
private isSpawning: boolean = false;// 是否正在生成怪物
private spawnInterval: number = 1; // 每个怪物生成间隔时间
private spawnInterval: number = 2; // 每个怪物生成间隔时间
private spawnTimer: number = 0; // 生成计时器
private is_fight:boolean = false;

View File

@@ -410,28 +410,65 @@ export class RogueConfig {
const modifiedStats = { ...baseStats };
const buffData = [];
// 怪物能力提升倍数3倍强化
const enhancementMultiplier = 3;
for (const affix of affixes) {
const config = MonsterAffixConfig[affix];
if (config) {
// 应用3倍强化到配置值
const enhancedValue = config.value * enhancementMultiplier;
buffData.push({
buff_type: affix,
value: config.value
value: enhancedValue // 使用强化后的值
});
// 预览属性变化实际应用在Mon.ts中
switch (affix) {
case BuffAttr.ATK:
// 攻击力提升幅度加大每波提升额外增加10%
modifiedStats.ap = Math.floor(modifiedStats.ap * (1 + config.value / 100 + baseStats.lv * 0.1));
// 攻击力提升幅度加大每波提升额外增加10%再乘以3倍
modifiedStats.ap = Math.floor(modifiedStats.ap * (1 + enhancedValue / 100 + baseStats.lv * 0.1 * enhancementMultiplier));
break;
case BuffAttr.HP:
// 生命值提升幅度加大每波提升额外增加15%
modifiedStats.hp = Math.floor(modifiedStats.hp * (1 + config.value / 100 + baseStats.lv * 0.15));
// 生命值提升幅度加大每波提升额外增加15%再乘以3倍
modifiedStats.hp = Math.floor(modifiedStats.hp * (1 + enhancedValue / 100 + baseStats.lv * 0.15 * enhancementMultiplier));
break;
case BuffAttr.ATK_CD:
modifiedStats.cd = Math.max(0.1, modifiedStats.cd * (1 - config.value / 100));
// 攻击速度提升也应用3倍效果
modifiedStats.cd = Math.max(0.1, modifiedStats.cd * (1 - enhancedValue / 100));
break;
case BuffAttr.DEF:
// 防御力提升3倍效果
modifiedStats.def = (modifiedStats.def || 0) + enhancedValue;
break;
case BuffAttr.CRITICAL:
// 暴击率提升3倍效果
modifiedStats.crit = (modifiedStats.crit || 0) + enhancedValue;
break;
case BuffAttr.CRITICAL_DMG:
// 暴击伤害提升3倍效果
modifiedStats.crit_d = (modifiedStats.crit_d || 0) + enhancedValue;
break;
case BuffAttr.DODGE:
// 闪避率提升3倍效果
modifiedStats.dod = (modifiedStats.dod || 0) + enhancedValue;
break;
case BuffAttr.BURN_COUNT:
// 燃烧次数提升3倍效果
modifiedStats.burn_count = (modifiedStats.burn_count || 0) + enhancedValue;
break;
case BuffAttr.PUNCTURE:
// 穿刺数量提升3倍效果
modifiedStats.puncture = (modifiedStats.puncture || 0) + enhancedValue;
break;
case BuffAttr.FROST_RATIO:
// 冰冻概率提升3倍效果
modifiedStats.frost_ratto = (modifiedStats.frost_ratto || 0) + enhancedValue;
break;
}
console.log(`[RogueConfig]: 应用3倍强化词条 ${BuffAttr[affix]} - 原始值: ${config.value}% → 强化值: ${enhancedValue}%`);
}
}
@@ -446,7 +483,7 @@ export class RogueConfig {
* 获取怪物等级
*/
static getMonsterLevel(waveNumber: number): number {
return Math.max(1, Math.floor(waveNumber / 5) + 1);
return Math.max(1, Math.floor(waveNumber / 1) + 1);
}
}

View File

@@ -79,7 +79,7 @@ export class SkillCom extends CCComp {
}
oops.message.on(GameEvent.MissionEnd, this.doDestroy, this);
this.node.active = true;
// console.log("[SkillCom]:caster",this.caster)
// //console.log("[SkillCom]:caster",this.caster)
let collider = this.getComponent(Collider2D);
@@ -88,7 +88,7 @@ export class SkillCom extends CCComp {
collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
}
let bm=this.node.getComponent(BezierMove)
// console.log(this.group +"技能 collider ",collider);
// //console.log(this.group +"技能 collider ",collider);
switch(SkillSet[this.s_uuid].AType){
case AType.parabolic:
this.node.angle +=10
@@ -124,24 +124,24 @@ export class SkillCom extends CCComp {
this.node.setPosition(this.targetPos.x,this.targetPos.y,0)
if(this.node.getComponent(Animation)){
let anim = this.node.getComponent(Animation);
// console.log("[SkillCom]:has anim",anim)
// //console.log("[SkillCom]:has anim",anim)
anim.on(Animation.EventType.FINISHED, this.onAnimationFinished, this);
}
if(this.node.getChildByName('anm')){
if(this.node.getChildByName('anm').getComponent('sp.Skeleton')){
// console.log("[SkillCom]:has spine",this.spine)
// //console.log("[SkillCom]:has spine",this.spine)
this.spine.setCompleteListener((trackEntry) => {
this.onAnimationFinished()
// console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex);
// //console.log("[SkillCom]:[track %s][animation %s] complete: %s", trackEntry.trackIndex);
});
}
}
break;
case AType.fixedStart:
case AType.fixedStart: //都是buff
this.node.setPosition(this.startPos.x,this.startPos.y,0)
this.scheduleOnce(()=>{
this.do_buff()
console.log("[SkillCom]:fixedStart",SkillSet[this.s_uuid].in-0.2)
//console.log("[SkillCom]:fixedStart",SkillSet[this.s_uuid].in-0.2)
},SkillSet[this.s_uuid].in-0.2)
break;
}
@@ -155,6 +155,7 @@ export class SkillCom extends CCComp {
}
//范围伤害
range_damage(){
console.log("[SkillCom]:range_damage",this.s_uuid)
let enemys=ecs.query(ecs.allOf(MonModelComp))
if(this.fac==FacSet.MON) enemys=ecs.query(ecs.allOf(HeroModelComp))
enemys.forEach(entity => {
@@ -169,14 +170,14 @@ export class SkillCom extends CCComp {
}
//单体伤害
single_damage(target:HeroViewComp,is_range:boolean=false){
// console.log("[SkillCom]:onBeginContact hit_count:",this.hit_count,SkillSet[this.s_uuid].hit)
// //console.log("[SkillCom]:onBeginContact hit_count:",this.hit_count,SkillSet[this.s_uuid].hit)
// if(this.hit_count > 0&&!is_range) this.ap=this.ap*(50+this.puncture_damage)/100 // 穿刺后 伤害减半,过滤范围伤害
if(target == null) return;
target.do_atked(this.ap,this.caster_crit,this.caster_crit_d,
this.burn_count,this.burn_value,
this.stun_time,this.stun_ratto,
this.frost_time,this.frost_ratto) // ap 及暴击 属性已经在skill.ts 处理
console.log("[SkillCom]:single_damage",this.ap,this.caster_crit,this.caster_crit_d,this.hit_count)
console.log("[SkillCom]:single_damage t:tp:rtp",this.node.position,this.targetPos,target.node.position)
if(SkillSet[this.s_uuid].debuff>0){
let deUP =this.get_debuff() // 因为不是每个技能都需要,debuff的增益在这里处理, ap 及暴击 属性已经在skill.ts 处理
let debuff=SkillSet[this.s_uuid]
@@ -184,7 +185,7 @@ export class SkillCom extends CCComp {
let deR=debuff.deR+deUP.deR
dev=Math.round(dev*100)/100
let deC=debuff.deC+deUP.deC //dec只作为次数叠加
// console.log("[SkillCom]:debuff",SkillSet[this.s_uuid].name,debuff.debuff,deUP.deV,deUP.deC)
// //console.log("[SkillCom]:debuff",SkillSet[this.s_uuid].name,debuff.debuff,deUP.deV,deUP.deC)
target.add_debuff(debuff.debuff,dev,deC,deR)
}
this.hit_count++
@@ -192,11 +193,11 @@ export class SkillCom extends CCComp {
}
onBeginContact (seCol: Collider2D, oCol: Collider2D) {
// console.log(this.scale+"碰撞开始 ",seCol,oCol);
// //console.log(this.scale+"碰撞开始 ",seCol,oCol);
let target = oCol.getComponent(HeroViewComp)
if(oCol.group!=this.group){
if(target == null) return;
console.log("[SkillCom]:onBeginContact targetPos||skillPos",target.node.position,this.node.position)
console.log("[SkillCom]:onBeginContact oCol||seCol",oCol.node.position,seCol.node.position)
this.single_damage(target)
// this.ent.destroy()
}
@@ -243,7 +244,7 @@ export class SkillCom extends CCComp {
.start();
}
private do_buff(){
console.log("[SkillCom]:do_buff")
//console.log("[SkillCom]:do_buff")
let teams=ecs.query(ecs.allOf(HeroModelComp))
if(this.fac==FacSet.MON) teams=ecs.query(ecs.allOf(MonModelComp))
if(SkillSet[this.s_uuid].TGroup==TGroup.Team||SkillSet[this.s_uuid].TGroup==TGroup.Self) {
@@ -261,21 +262,6 @@ export class SkillCom extends CCComp {
}
}
private startLinearMove(dt: number) {
if (!this.speed || this.is_destroy) return;
if(this.s_uuid == 6005){
// console.log("[SkillCom]:startLinearMove",this.node.position.x)
}
// 使用角度方向移动
const newX = this.node.position.x + this.speed * dt*this.scale;
const newY = this.node.position.y;
this.node.setPosition(newX, this.node.position.y, this.node.position.z);
// 检查是否超出边界
if (newX < -400 || newX > 400) {
this.is_destroy = true;
}
}
update(deltaTime: number) {
@@ -291,7 +277,7 @@ export class SkillCom extends CCComp {
if(config.EType==EType.timeEnd){
this.run_time+=deltaTime
if(this.run_time>config.in){
// console.log("[SkillCom]: timeEnd destroy",this.s_uuid,this.run_time)
// //console.log("[SkillCom]: timeEnd destroy",this.s_uuid,this.run_time)
this.is_destroy=true
}
}
@@ -319,11 +305,11 @@ export class SkillCom extends CCComp {
}
}
doDestroy(){
// console.log("[SkillCom]:doDestroy")
// //console.log("[SkillCom]:doDestroy")
this.is_destroy=true
}
to_console(value:any,value2:any=null,value3:any=null){
console.log("[SkillCom]:["+this.s_name+this.s_uuid+"]:",value,value2,value3)
//console.log("[SkillCom]:["+this.s_name+this.s_uuid+"]:",value,value2,value3)
}
/** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */