英雄 简单优化
This commit is contained in:
@@ -88,45 +88,7 @@ export class BuffComp extends Component {
|
|||||||
this.node.getChildByName("shielded").active=val
|
this.node.getChildByName("shielded").active=val
|
||||||
}
|
}
|
||||||
|
|
||||||
vmdata_update(is_hp:boolean=false){
|
|
||||||
// console.log("[BuffComp]:to_update_vmdata:"+this.HeroView.hero_name)
|
|
||||||
let info= null
|
|
||||||
if(!this.HeroView) return
|
|
||||||
if(!this.HeroView.is_master) return
|
|
||||||
info=smc.vmdata.hero
|
|
||||||
if(info==null) return
|
|
||||||
let view_atk = 0 //临时buff
|
|
||||||
let view_deatk = 0 //临时debuff
|
|
||||||
if(is_hp){
|
|
||||||
info.hp=this.HeroView.currentHp
|
|
||||||
info.hp_max=this.HeroView.currentHpMax
|
|
||||||
}else{
|
|
||||||
info.hp=this.HeroView.currentHp
|
|
||||||
info.hp_max=this.HeroView.currentHpMax
|
|
||||||
|
|
||||||
for(let i=0;i<this.HeroView.BUFF_ATKS.length;i++){
|
|
||||||
view_atk += this.HeroView.BUFF_ATKS[i].value
|
|
||||||
}
|
|
||||||
|
|
||||||
for(let i=0;i<this.HeroView.DEBUFF_DEATKS.length;i++){
|
|
||||||
view_deatk += this.HeroView.DEBUFF_DEATKS[i].value
|
|
||||||
}
|
|
||||||
|
|
||||||
info.ap=this.HeroView.ap
|
|
||||||
// info.lv=this.HeroView.lv
|
|
||||||
info.cd=Number(this.HeroView.cd.toFixed(2))
|
|
||||||
|
|
||||||
info.buff_ap=view_atk
|
|
||||||
info.debuff_ap=view_deatk
|
|
||||||
info.damage=this.HeroView.ap*(100+view_atk-view_deatk)/100
|
|
||||||
info.crit=this.HeroView.crit
|
|
||||||
info.crit_d=this.HeroView.crit_d
|
|
||||||
info.dod=this.HeroView.dod
|
|
||||||
info.def=this.HeroView.def
|
|
||||||
info.wind=this.HeroView.wfuny
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
update_info_lv(){
|
update_info_lv(){
|
||||||
|
|||||||
@@ -1,196 +1,139 @@
|
|||||||
import { _decorator } from "cc";
|
import { _decorator } from "cc";
|
||||||
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS";
|
||||||
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp";
|
||||||
import { oops } from "db://oops-framework/core/Oops";
|
|
||||||
import { GameEvent } from "../common/config/GameEvent";
|
import { GameEvent } from "../common/config/GameEvent";
|
||||||
import { EquipAttrTarget, EquipInfo } from "../common/config/Equips";
|
import { EquipAttrTarget, EquipInfo } from "../common/config/Equips";
|
||||||
import { HeroViewComp } from "./HeroViewComp";
|
import { HeroViewComp } from "./HeroViewComp";
|
||||||
import { BuffAttr } from "../common/config/SkillSet";
|
import { BuffAttr } from "../common/config/SkillSet";
|
||||||
import { EnhancementType } from "../common/config/LevelUp";
|
import { EnhancementType } from "../common/config/LevelUp";
|
||||||
import { TalentList } from "../common/config/TalentSet";
|
import { TalentList } from "../common/config/TalentSet";
|
||||||
import { smc } from "../common/SingletonModuleComp";
|
import { SuperCardsType } from "../common/config/CardSet";
|
||||||
import { SuperCards, SuperCardsType } from "../common/config/CardSet";
|
|
||||||
|
|
||||||
const { ccclass, property } = _decorator;
|
const { ccclass, property } = _decorator;
|
||||||
|
|
||||||
/** 视图层对象 */
|
/** 英雄控制组件 - 处理英雄的装备、强化、天赋等逻辑 */
|
||||||
@ccclass('HeroConComp')
|
@ccclass('HeroConComp')
|
||||||
@ecs.register('HeroCon')
|
@ecs.register('HeroCon')
|
||||||
export class HeroConComp extends CCComp {
|
export class HeroConComp extends CCComp {
|
||||||
/** 视图层逻辑代码分离演示 */
|
private heroView: HeroViewComp = null;
|
||||||
heroView:HeroViewComp=null
|
|
||||||
|
// Buff处理方法映射表
|
||||||
|
private static readonly BUFF_HANDLERS = new Map<BuffAttr, string>([
|
||||||
|
[BuffAttr.AP, 'handleAPBuff'],
|
||||||
|
[BuffAttr.ATK, 'handleATKBuff'],
|
||||||
|
[BuffAttr.ATK_CD, 'handleSpeedBuff'],
|
||||||
|
[BuffAttr.DEF, 'handleDefBuff'],
|
||||||
|
[BuffAttr.HP, 'handleHPBuff'], // 生命值比例
|
||||||
|
[BuffAttr.HP_MAX, 'handleHPMaxBuff'], // 生命值数值
|
||||||
|
[BuffAttr.CRITICAL, 'handleCritBuff'],
|
||||||
|
[BuffAttr.CRITICAL_DMG, 'handleCritDmgBuff'],
|
||||||
|
[BuffAttr.DODGE, 'handleDodgeBuff'],
|
||||||
|
[BuffAttr.PUNCTURE, 'handlePunctureBuff'],
|
||||||
|
[BuffAttr.PUNCTURE_DMG, 'handlePunctureDmgBuff'],
|
||||||
|
[BuffAttr.FROST_RATIO, 'handleFrostBuff'],
|
||||||
|
[BuffAttr.KNOCKBACK, 'handleKnockbackBuff'],
|
||||||
|
[BuffAttr.STUN_RATTO, 'handleStunBuff'],
|
||||||
|
[BuffAttr.REFLECT, 'handleReflectBuff'],
|
||||||
|
[BuffAttr.LIFESTEAL, 'handleLifestealBuff']
|
||||||
|
]);
|
||||||
|
|
||||||
protected onLoad(): void {
|
protected onLoad(): void {
|
||||||
this.on(GameEvent.EquipAdd,this.equip_add,this)
|
this.heroView = this.node.getComponent(HeroViewComp);
|
||||||
this.on(GameEvent.EquipChange,this.equip_change,this)
|
this.registerEvents();
|
||||||
this.on(GameEvent.FightReady,this.fight_ready,this)
|
}
|
||||||
this.on(GameEvent.UseSpecialCard,this.use_special_card,this)
|
|
||||||
this.on(GameEvent.UseEnhancement,this.use_enhancement,this)
|
|
||||||
this.on(GameEvent.UseTalentCard,this.use_talent_card,this)
|
|
||||||
this.on(GameEvent.RemoveTalent,this.remove_talent_card,this)
|
|
||||||
this.on(GameEvent.LuckCardUsed,this.luck_card_used,this)
|
|
||||||
|
|
||||||
this.heroView=this.node.getComponent(HeroViewComp)
|
private registerEvents(): void {
|
||||||
console.log("[HeroConCompComp]:onLoad",this.heroView)
|
this.on(GameEvent.EquipAdd, this.onEquipAdd, this);
|
||||||
|
this.on(GameEvent.EquipChange, this.onEquipChange, this);
|
||||||
|
this.on(GameEvent.FightReady, this.onFightReady, this);
|
||||||
|
this.on(GameEvent.UseSpecialCard, this.onUseSpecialCard, this);
|
||||||
|
this.on(GameEvent.UseEnhancement, this.onUseEnhancement, this);
|
||||||
|
this.on(GameEvent.UseTalentCard, this.onUseTalentCard, this);
|
||||||
|
this.on(GameEvent.RemoveTalent, this.onRemoveTalentCard, this);
|
||||||
|
this.on(GameEvent.LuckCardUsed, this.onLuckCardUsed, this);
|
||||||
}
|
}
|
||||||
start() {
|
private onEquipAdd(e: GameEvent, data: any): void {
|
||||||
console.log("[HeroConCompComp]:start",this.heroView)
|
const equip = EquipInfo[data.uuid];
|
||||||
// var entity = this.ent as ecs.Entity; // ecs.Entity 可转为当前模块的具体实体对象
|
if (!equip?.buff) return;
|
||||||
// this.on(ModuleEvent.Cmd, this.onHandler, this);
|
|
||||||
}
|
|
||||||
equip_add(e:GameEvent,data:any){
|
|
||||||
console.log("[HeroConCompComp]:equip_add",data,this.heroView)
|
|
||||||
let equip=EquipInfo[data.uuid]
|
|
||||||
let buffs=equip.buff
|
|
||||||
let special_attr=equip.special_attr
|
|
||||||
for(let i=0;i<buffs.length;i++){
|
|
||||||
let buff=buffs[i]
|
|
||||||
if(buff.target==EquipAttrTarget.HERO){
|
|
||||||
switch(buff.type){
|
|
||||||
case BuffAttr.AP:
|
|
||||||
this.heroView.add_ap(buff.value,true)
|
|
||||||
break
|
|
||||||
case BuffAttr.ATK:
|
|
||||||
this.heroView.add_ap(buff.value,false)
|
|
||||||
break
|
|
||||||
case BuffAttr.ATK_CD:
|
|
||||||
this.heroView.add_speed(buff.value)
|
|
||||||
break
|
|
||||||
case BuffAttr.DEF:
|
|
||||||
this.heroView.change_def(buff.value)
|
|
||||||
break
|
|
||||||
case BuffAttr.HP:
|
|
||||||
this.heroView.add_hp_max(buff.value,false)
|
|
||||||
break
|
|
||||||
case BuffAttr.HP_MAX:
|
|
||||||
this.heroView.add_hp_max(buff.value,true)
|
|
||||||
break
|
|
||||||
case BuffAttr.CRITICAL:
|
|
||||||
this.heroView.change_crit(buff.value)
|
|
||||||
break
|
|
||||||
case BuffAttr.CRITICAL_DMG:
|
|
||||||
this.heroView.change_crit_d(buff.value)
|
|
||||||
break
|
|
||||||
|
|
||||||
|
equip.buff
|
||||||
|
.filter(buff => buff.target === EquipAttrTarget.HERO)
|
||||||
|
.forEach(buff => this.applyBuff(buff.type, buff.value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private onEquipChange(e: GameEvent, data: any): void {
|
||||||
|
// TODO: 处理装备变更逻辑
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private onFightReady(e: GameEvent, data: any): void {
|
||||||
|
// TODO: 处理战斗准备逻辑
|
||||||
|
}
|
||||||
|
|
||||||
|
private onUseSpecialCard(e: GameEvent, data: any): void {
|
||||||
|
// TODO: 处理特殊卡牌使用逻辑
|
||||||
|
}
|
||||||
|
private onUseEnhancement(e: GameEvent, data: any): void {
|
||||||
|
const enhancementMap = {
|
||||||
|
[EnhancementType.ATTACK]: () => this.handleATKBuff(data.value),
|
||||||
|
[EnhancementType.ATTACK_SPEED]: () => this.handleSpeedBuff(data.value),
|
||||||
|
[EnhancementType.HEALTH]: () => this.handleHPMaxBuff(data.value),
|
||||||
|
[EnhancementType.DEF]: () => this.handleDefBuff(data.value)
|
||||||
|
};
|
||||||
|
|
||||||
|
enhancementMap[data.type]?.();
|
||||||
|
}
|
||||||
|
|
||||||
|
private onUseTalentCard(e: GameEvent, data: any): void {
|
||||||
|
const talent = TalentList[data.uuid];
|
||||||
|
if (talent) {
|
||||||
|
this.applyBuff(talent.buffType, talent.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
equip_change(e:GameEvent,data:any){
|
private onRemoveTalentCard(e: GameEvent, data: any): void {
|
||||||
console.log("[HeroConCompComp]:equip_change",data)
|
const talent = TalentList[data.uuid];
|
||||||
}
|
if (talent) {
|
||||||
fight_ready(e:GameEvent,data:any){
|
this.applyBuff(talent.buffType, -talent.value);
|
||||||
console.log("[HeroConCompComp]:fight_ready",data)
|
|
||||||
}
|
|
||||||
use_special_card(e:GameEvent,data:any){
|
|
||||||
console.log("[HeroConCompComp]:use_special_card",data)
|
|
||||||
}
|
|
||||||
use_enhancement(e:GameEvent,data:any){
|
|
||||||
// console.log("[HeroViewComp]:use_enhancement",data)
|
|
||||||
switch(data.type){
|
|
||||||
case EnhancementType.ATTACK:
|
|
||||||
this.heroView.add_ap(data.value)
|
|
||||||
break
|
|
||||||
case EnhancementType.ATTACK_SPEED:
|
|
||||||
this.heroView.add_speed(data.value)
|
|
||||||
break
|
|
||||||
case EnhancementType.HEALTH:
|
|
||||||
this.heroView.add_hp_max(data.value,true)
|
|
||||||
break
|
|
||||||
case EnhancementType.DEF:
|
|
||||||
this.heroView.change_def(data.value)
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use_talent_card(e:GameEvent,data:any){
|
private onLuckCardUsed(e: GameEvent, card: any): void {
|
||||||
console.log("[HeroConCompComp]:use_talent_card",data)
|
|
||||||
let tal=TalentList[data.uuid]
|
|
||||||
this.do_buff_func(tal.buffType,tal.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_talent_card(e:GameEvent,data:any){
|
|
||||||
let tal=TalentList[data.uuid]
|
|
||||||
console.log("[HeroConCompComp]:remove_talent_card",data,tal)
|
|
||||||
this.do_buff_func(tal.buffType,-tal.value)
|
|
||||||
}
|
|
||||||
luck_card_used(e:GameEvent,card:any){
|
|
||||||
switch (card.type) {
|
switch (card.type) {
|
||||||
case SuperCardsType.BUFF:
|
case SuperCardsType.BUFF:
|
||||||
this.do_buff_func(card.value1,card.value2)
|
this.applyBuff(card.value1, card.value2);
|
||||||
break
|
break;
|
||||||
case SuperCardsType.AOE:
|
case SuperCardsType.AOE:
|
||||||
//do skill
|
// TODO: 处理AOE技能
|
||||||
break
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/** 统一的Buff应用方法 */
|
||||||
|
private applyBuff(buffType: BuffAttr, value: number): void {
|
||||||
|
const handlerName = HeroConComp.BUFF_HANDLERS.get(buffType);
|
||||||
|
if (handlerName && typeof this[handlerName] === 'function') {
|
||||||
|
this[handlerName](value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
do_buff_func(buffType:number,value:number){
|
|
||||||
switch(buffType){
|
|
||||||
case BuffAttr.AP:
|
|
||||||
this.heroView.ap_base+=value
|
|
||||||
this.heroView.count_atrr(BuffAttr.ATK)
|
|
||||||
break
|
|
||||||
case BuffAttr.HP_MAX:
|
|
||||||
this.heroView.hp_base+=value
|
|
||||||
this.heroView.count_atrr(BuffAttr.HP)
|
|
||||||
break
|
|
||||||
case BuffAttr.ATK:
|
|
||||||
this.heroView.TALENT[BuffAttr.ATK]+=value
|
|
||||||
this.heroView.count_atrr(BuffAttr.ATK)
|
|
||||||
break
|
|
||||||
case BuffAttr.ATK_CD:
|
|
||||||
this.heroView.TALENT[BuffAttr.ATK_CD]+=value
|
|
||||||
this.heroView.count_atrr(BuffAttr.ATK_CD)
|
|
||||||
break
|
|
||||||
case BuffAttr.HP:
|
|
||||||
this.heroView.TALENT[BuffAttr.HP]+=value
|
|
||||||
break
|
|
||||||
case BuffAttr.DEF:
|
|
||||||
this.heroView.change_def(value)
|
|
||||||
break
|
|
||||||
case BuffAttr.CRITICAL:
|
|
||||||
this.heroView.change_crit(value)
|
|
||||||
break
|
|
||||||
case BuffAttr.CRITICAL_DMG:
|
|
||||||
this.heroView.change_crit_d(value)
|
|
||||||
break
|
|
||||||
case BuffAttr.DODGE:
|
|
||||||
this.heroView.change_dodge(value)
|
|
||||||
break
|
|
||||||
case BuffAttr.PUNCTURE:
|
|
||||||
this.heroView.change_puncture(value)
|
|
||||||
break
|
|
||||||
case BuffAttr.PUNCTURE_DMG:
|
|
||||||
this.heroView.change_puncture_damage(value)
|
|
||||||
break
|
|
||||||
case BuffAttr.FROST_RATIO:
|
|
||||||
this.heroView.change_frost_ratto(value)
|
|
||||||
break
|
|
||||||
|
|
||||||
case BuffAttr.KNOCKBACK:
|
// Buff处理方法
|
||||||
this.heroView.change_knockback(value)
|
private handleAPBuff(value: number): void { this.heroView.change_ap(value, true); }
|
||||||
break
|
private handleATKBuff(value: number): void { this.heroView.change_ap(value, false); }
|
||||||
case BuffAttr.STUN_RATTO:
|
private handleSpeedBuff(value: number): void { this.heroView.add_speed(value); }
|
||||||
this.heroView.change_stun_ratto(value)
|
private handleDefBuff(value: number): void { this.heroView.change_def(value); }
|
||||||
break
|
private handleHPBuff(value: number): void { this.heroView.change_hp_max(value, false); }
|
||||||
case BuffAttr.REFLECT:
|
private handleHPMaxBuff(value: number): void { this.heroView.change_hp_max(value, true); }
|
||||||
this.heroView.change_reflect(value)
|
private handleCritBuff(value: number): void { this.heroView.change_crit(value); }
|
||||||
break
|
private handleCritDmgBuff(value: number): void { this.heroView.change_crit_d(value); }
|
||||||
case BuffAttr.LIFESTEAL:
|
private handleDodgeBuff(value: number): void { this.heroView.change_dodge(value); }
|
||||||
this.heroView.change_lifesteal(value)
|
private handlePunctureBuff(value: number): void { this.heroView.change_puncture(value); }
|
||||||
break
|
private handlePunctureDmgBuff(value: number): void { this.heroView.change_puncture_damage(value); }
|
||||||
}
|
private handleFrostBuff(value: number): void { this.heroView.change_frost_ratto(value); }
|
||||||
}
|
private handleKnockbackBuff(value: number): void { this.heroView.change_knockback(value); }
|
||||||
/** 全局消息逻辑处理 */
|
private handleStunBuff(value: number): void { this.heroView.change_stun_ratto(value); }
|
||||||
// private onHandler(event: string, args: any) {
|
private handleReflectBuff(value: number): void { this.heroView.change_reflect(value); }
|
||||||
// switch (event) {
|
private handleLifestealBuff(value: number): void { this.heroView.change_lifesteal(value); }
|
||||||
// case ModuleEvent.Cmd:
|
/** 组件重置 */
|
||||||
// break;
|
reset(): void {
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
/** 视图对象通过 ecs.Entity.remove(ModuleViewComp) 删除组件是触发组件处理自定义释放逻辑 */
|
|
||||||
reset() {
|
|
||||||
this.node.destroy();
|
this.node.destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,23 +166,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
DEBUFF_COUNT:number=0; //debuff 持续次数
|
DEBUFF_COUNT:number=0; //debuff 持续次数
|
||||||
DEBUFF_UP:number=0; //debuff 概率提升
|
DEBUFF_UP:number=0; //debuff 概率提升
|
||||||
|
|
||||||
TALENT:any={
|
|
||||||
[BuffAttr.ATK]:0,
|
|
||||||
[BuffAttr.CRITICAL]:0,
|
|
||||||
[BuffAttr.CRITICAL_DMG]:0,
|
|
||||||
[BuffAttr.DODGE]:0,
|
|
||||||
[BuffAttr.DEBUFF_COUNT]:0,
|
|
||||||
[BuffAttr.HP]:0,
|
|
||||||
[BuffAttr.DEF]:0,
|
|
||||||
[BuffAttr.PUNCTURE]:0,
|
|
||||||
[BuffAttr.ATK_CD]:0,
|
|
||||||
[BuffAttr.SKILL_CD]:0,
|
|
||||||
[BuffAttr.FROST_RATIO]:0,
|
|
||||||
[BuffAttr.KNOCKBACK]:0,
|
|
||||||
[BuffAttr.STUN_RATTO]:0,
|
|
||||||
[BuffAttr.REFLECT]:0,
|
|
||||||
[BuffAttr.LIFESTEAL]:0,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private damageQueue: Array<{
|
private damageQueue: Array<{
|
||||||
@@ -212,7 +196,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
start () {
|
start () {
|
||||||
this.as.idle()
|
this.as.idle()
|
||||||
this.BUFFCOMP=this.node.getComponent(BuffComp);
|
this.BUFFCOMP=this.node.getComponent(BuffComp);
|
||||||
// this.update_vmdata()
|
|
||||||
/** 方向 */
|
/** 方向 */
|
||||||
this.node.setScale(this.scale,1);
|
this.node.setScale(this.scale,1);
|
||||||
this.node.getChildByName("top").setScale(this.scale,1);
|
this.node.getChildByName("top").setScale(this.scale,1);
|
||||||
@@ -223,9 +207,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.node.getChildByName("top").getChildByName("hp").active = true;
|
this.node.getChildByName("top").getChildByName("hp").active = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
update_vmdata(){
|
|
||||||
if(this.is_master) this.BUFFCOMP.vmdata_update()
|
|
||||||
}
|
|
||||||
update(dt: number){
|
update(dt: number){
|
||||||
if(!smc.mission.play||smc.mission.pause) return
|
if(!smc.mission.play||smc.mission.pause) return
|
||||||
// if(this.is_dead) {
|
// if(this.is_dead) {
|
||||||
@@ -233,9 +215,7 @@ export class HeroViewComp extends CCComp {
|
|||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if(this.timer.update(dt)){
|
|
||||||
// this.add_ap(10)
|
|
||||||
};
|
|
||||||
if(this.DEBUFF_FROST > 0){
|
if(this.DEBUFF_FROST > 0){
|
||||||
this.DEBUFF_FROST -=dt;
|
this.DEBUFF_FROST -=dt;
|
||||||
}
|
}
|
||||||
@@ -282,80 +262,80 @@ export class HeroViewComp extends CCComp {
|
|||||||
change_wfuny(wfuny: number){
|
change_wfuny(wfuny: number){
|
||||||
this.wfuny+=wfuny
|
this.wfuny+=wfuny
|
||||||
if(this.wfuny<0) this.wfuny=0
|
if(this.wfuny<0) this.wfuny=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_puncture(puncture: number){
|
change_puncture(puncture: number){
|
||||||
this.puncture+=puncture
|
this.puncture+=puncture
|
||||||
if(this.puncture<1) this.puncture=1
|
if(this.puncture<1) this.puncture=1
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_puncture_damage(puncture_damage: number){
|
change_puncture_damage(puncture_damage: number){
|
||||||
this.puncture_damage+=puncture_damage
|
this.puncture_damage+=puncture_damage
|
||||||
if(this.puncture_damage<0) this.puncture_damage=0
|
if(this.puncture_damage<0) this.puncture_damage=0
|
||||||
if(this.puncture_damage>80) this.puncture_damage=80
|
if(this.puncture_damage>80) this.puncture_damage=80
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_dodge(dodge: number){
|
change_dodge(dodge: number){
|
||||||
this.dod+=dodge
|
this.dod+=dodge
|
||||||
if(this.dod<0) this.dod=0
|
if(this.dod<0) this.dod=0
|
||||||
if(this.dod>90) this.dod=90
|
if(this.dod>90) this.dod=90
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_frost_ratto(frost_ratto: number){
|
change_frost_ratto(frost_ratto: number){
|
||||||
this.frost_ratto+=frost_ratto
|
this.frost_ratto+=frost_ratto
|
||||||
if(this.frost_ratto<0) this.frost_ratto=0
|
if(this.frost_ratto<0) this.frost_ratto=0
|
||||||
if(this.frost_ratto>90) this.frost_ratto=90
|
if(this.frost_ratto>90) this.frost_ratto=90
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
change_knockback(knockback: number){
|
change_knockback(knockback: number){
|
||||||
this.knockback+=knockback
|
this.knockback+=knockback
|
||||||
if(this.knockback<0) this.knockback=0
|
if(this.knockback<0) this.knockback=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
change_stun_ratto(stun_ratto: number){
|
change_stun_ratto(stun_ratto: number){
|
||||||
this.stun_ratto+=stun_ratto
|
this.stun_ratto+=stun_ratto
|
||||||
if(this.stun_ratto<0) this.stun_ratto=0
|
if(this.stun_ratto<0) this.stun_ratto=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
change_def(def: number){
|
change_def(def: number){
|
||||||
this.def+=def
|
this.def+=def
|
||||||
if(this.def>90) this.def=90
|
if(this.def>90) this.def=90
|
||||||
if(this.def<0) this.def=0
|
if(this.def<0) this.def=0
|
||||||
// this.update_vmdata()
|
|
||||||
// this.BUFFCOMP.tooltip(TooltipTypes.defup,def.toFixed(0));
|
// this.BUFFCOMP.tooltip(TooltipTypes.defup,def.toFixed(0));
|
||||||
}
|
}
|
||||||
change_crit(crit: number){
|
change_crit(crit: number){
|
||||||
this.crit+=crit
|
this.crit+=crit
|
||||||
if(this.crit<0) this.crit=0
|
if(this.crit<0) this.crit=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_crit_d(crit_d: number){
|
change_crit_d(crit_d: number){
|
||||||
this.crit_d+=crit_d
|
this.crit_d+=crit_d
|
||||||
if(this.crit_d<0) this.crit_d=0
|
if(this.crit_d<0) this.crit_d=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_reflect(reflect: number){
|
change_reflect(reflect: number){
|
||||||
this.reflect+=reflect
|
this.reflect+=reflect
|
||||||
if(this.reflect<0) this.reflect=0
|
if(this.reflect<0) this.reflect=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
change_lifesteal(lifesteal: number){
|
change_lifesteal(lifesteal: number){
|
||||||
this.lifesteal+=lifesteal
|
this.lifesteal+=lifesteal
|
||||||
if(this.lifesteal<0) this.lifesteal=0
|
if(this.lifesteal<0) this.lifesteal=0
|
||||||
// this.update_vmdata()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
check_atrr(buff:BuffAttr){
|
check_atrr(buff:BuffAttr){
|
||||||
switch(buff){
|
switch(buff){
|
||||||
case BuffAttr.ATK:
|
case BuffAttr.ATK:
|
||||||
return Math.floor(this.ap_base*(100+this.ap_buff+this.TALENT[BuffAttr.ATK])/100)
|
return Math.floor(this.ap_base*(100+this.ap_buff)/100)
|
||||||
case BuffAttr.ATK_CD:
|
case BuffAttr.ATK_CD:
|
||||||
return this.cd_base/((this.cd_buff+this.TALENT[BuffAttr.ATK_CD])/100+1)
|
return this.cd_base/((this.cd_buff)/100+1)
|
||||||
case BuffAttr.HP:
|
case BuffAttr.HP:
|
||||||
return Math.floor(this.hp_base*(100+this.hp_buff+this.TALENT[BuffAttr.HP])/100)
|
return Math.floor(this.hp_base*(100+this.hp_buff)/100)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,17 +343,17 @@ export class HeroViewComp extends CCComp {
|
|||||||
switch(buff){
|
switch(buff){
|
||||||
case BuffAttr.ATK:
|
case BuffAttr.ATK:
|
||||||
this.ap=this.check_atrr(BuffAttr.ATK)
|
this.ap=this.check_atrr(BuffAttr.ATK)
|
||||||
// this.update_vmdata()
|
|
||||||
break
|
break
|
||||||
case BuffAttr.ATK_CD:
|
case BuffAttr.ATK_CD:
|
||||||
this.cd=this.check_atrr(BuffAttr.ATK_CD)
|
this.cd=this.check_atrr(BuffAttr.ATK_CD)
|
||||||
// this.update_vmdata()
|
|
||||||
break
|
break
|
||||||
case BuffAttr.HP:
|
case BuffAttr.HP:
|
||||||
let diff=this.check_atrr(BuffAttr.HP)-this.currentHpMax
|
let diff=this.check_atrr(BuffAttr.HP)-this.currentHpMax
|
||||||
this.currentHpMax=this.check_atrr(BuffAttr.HP)
|
this.currentHpMax=this.check_atrr(BuffAttr.HP)
|
||||||
this.currentHp+=diff
|
this.currentHp+=diff
|
||||||
// this.update_vmdata()
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -385,28 +365,18 @@ export class HeroViewComp extends CCComp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
add_ap(ap: number,is_num:boolean=true){
|
change_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){
|
if(is_num){
|
||||||
this.ap_base += Math.floor(ap);
|
this.ap_base += Math.floor(ap);
|
||||||
}else{
|
}else{
|
||||||
this.ap_base += Math.floor(ap/100*this.ap_base);
|
this.ap_buff += Math.floor(ap/100*this.ap_base);
|
||||||
}
|
|
||||||
this.count_atrr(BuffAttr.ATK)
|
|
||||||
// this.BUFFCOMP.tooltip(TooltipTypes.apup,diff.toFixed(0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
de_ap(ap: number,is_num:boolean=true){
|
|
||||||
//console.log("[HeroViewComp]:de_ap de:",ap,this.ap)
|
|
||||||
if(is_num){
|
|
||||||
this.ap_base -= Math.floor(ap);
|
|
||||||
}else{
|
|
||||||
this.ap_base -= Math.floor(ap/100*this.ap_base);
|
|
||||||
}
|
|
||||||
this.count_atrr(BuffAttr.ATK)
|
this.count_atrr(BuffAttr.ATK)
|
||||||
}
|
}
|
||||||
|
|
||||||
add_hp_max(hp: number=0,is_num:boolean=false){
|
change_hp_max(hp: number=0,is_num:boolean=false){
|
||||||
// console.log("[HeroViewComp]:add_hp_max add:",hp,this.currentHpMax)
|
// console.log("[HeroViewComp]:add_hp_max add:",hp,this.currentHpMax)
|
||||||
if(is_num){
|
if(is_num){
|
||||||
this.hp_base += Math.floor(hp) ;
|
this.hp_base += Math.floor(hp) ;
|
||||||
@@ -414,13 +384,6 @@ export class HeroViewComp extends CCComp {
|
|||||||
this.hp_buff+=hp
|
this.hp_buff+=hp
|
||||||
}
|
}
|
||||||
this.count_atrr(BuffAttr.HP)
|
this.count_atrr(BuffAttr.HP)
|
||||||
// this.BUFFCOMP.tooltip(TooltipTypes.hpup,diff.toFixed(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
de_hp_max(hp: number=0,is_num:boolean=true){ //最大值 只存在数值添加, 比例通过hp_buff处理
|
|
||||||
//console.log("[HeroViewComp]:de_hp_max de:",hp,this.currentHpMax)
|
|
||||||
this.hp_base -= Math.floor(hp) ;
|
|
||||||
this.count_atrr(BuffAttr.HP)
|
|
||||||
// this.update_vm
|
// this.update_vm
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -834,8 +797,8 @@ export class HeroViewComp extends CCComp {
|
|||||||
if(this.fac==FacSet.MON) return
|
if(this.fac==FacSet.MON) return
|
||||||
console.log("[HeroViewComp]:升级",this.BUFFCOMP)
|
console.log("[HeroViewComp]:升级",this.BUFFCOMP)
|
||||||
if(this.hero_uuid!=data.uuid) return
|
if(this.hero_uuid!=data.uuid) return
|
||||||
this.add_ap(HeroInfo[data.uuid].ap,true)
|
this.change_ap(HeroInfo[data.uuid].ap,true)
|
||||||
this.add_hp_max(HeroInfo[data.uuid].hp,true)
|
this.change_hp_max(HeroInfo[data.uuid].hp,true)
|
||||||
this.BUFFCOMP.lv_up()
|
this.BUFFCOMP.lv_up()
|
||||||
// this.BUFFCOMP.tooltip(TooltipTypes.lvup)
|
// this.BUFFCOMP.tooltip(TooltipTypes.lvup)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user