新版本准备
This commit is contained in:
parent
c9aaf18a82
commit
0ba72b440b
BIN
doc/todolist.xmind
Normal file
BIN
doc/todolist.xmind
Normal file
Binary file not shown.
@ -2,6 +2,7 @@ import { EffectCardCfg } from "cfg/parsers/EffectCardCfg";
|
|||||||
import { HeroCfg } from "cfg/parsers/HeroCfg";
|
import { HeroCfg } from "cfg/parsers/HeroCfg";
|
||||||
import { SkillCfg } from "cfg/parsers/SkillCfg";
|
import { SkillCfg } from "cfg/parsers/SkillCfg";
|
||||||
import { UnitCfg } from "cfg/parsers/UnitCfg";
|
import { UnitCfg } from "cfg/parsers/UnitCfg";
|
||||||
|
import arrUtil from "utils/array.util";
|
||||||
import { BaseConst } from "../../constants/BaseConst";
|
import { BaseConst } from "../../constants/BaseConst";
|
||||||
import { EffectCardType, EnhanceEffectType, SkillEffectSignType, SkillEffectValueType, SkillTargetType } from "./skill/SkillConst";
|
import { EffectCardType, EnhanceEffectType, SkillEffectSignType, SkillEffectValueType, SkillTargetType } from "./skill/SkillConst";
|
||||||
|
|
||||||
@ -12,6 +13,8 @@ let CfgMan = {
|
|||||||
*/
|
*/
|
||||||
_cardcache: new Map(),
|
_cardcache: new Map(),
|
||||||
|
|
||||||
|
_typecards: new Map(),
|
||||||
|
|
||||||
findPlayerCfg(playerid: number): HeroCfg{
|
findPlayerCfg(playerid: number): HeroCfg{
|
||||||
return global.$cfg.get(BaseConst.HERO).get(playerid);
|
return global.$cfg.get(BaseConst.HERO).get(playerid);
|
||||||
},
|
},
|
||||||
@ -109,6 +112,38 @@ let CfgMan = {
|
|||||||
this._cardcache.set(cardid + '', {target: res});
|
this._cardcache.set(cardid + '', {target: res});
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
},
|
||||||
|
|
||||||
|
randomCard(subtype: number): number{
|
||||||
|
if(this._typecards.size == 0){
|
||||||
|
for(let [key, val] of global.$cfg.get(BaseConst.EFFECTCARD)){
|
||||||
|
let id1 = val.affix1id;
|
||||||
|
let id2 = val.affix2id;
|
||||||
|
if(id1){
|
||||||
|
let lst = this._typecards.get(id1 + '');
|
||||||
|
if(!lst){
|
||||||
|
lst = [key];
|
||||||
|
this._typecards.set(id1 + '', lst);
|
||||||
|
}else{
|
||||||
|
lst.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(id2 && id2 != id1){
|
||||||
|
let lst = this._typecards.get(id2 + '');
|
||||||
|
if(!lst){
|
||||||
|
lst = [key];
|
||||||
|
this._typecards.set(id2 + '', lst);
|
||||||
|
}else{
|
||||||
|
lst.push(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let obj = this._typecards.get(subtype + '');
|
||||||
|
|
||||||
|
return obj? arrUtil.randomOne(obj): 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ export class BattleHandler {
|
|||||||
{
|
{
|
||||||
let pet = apet;
|
let pet = apet;
|
||||||
let bok = this.petIsValid(pet, players, ct);
|
let bok = this.petIsValid(pet, players, ct);
|
||||||
if(checktaunt && (!bok || !pet._istaunt)){
|
if(checktaunt && (!bok || !pet.isTaunt())){
|
||||||
for(let i = 0; i < players.length;i++){
|
for(let i = 0; i < players.length;i++){
|
||||||
let obj = players[i].findTauntPet();
|
let obj = players[i].findTauntPet();
|
||||||
if(obj){
|
if(obj){
|
||||||
|
@ -29,6 +29,8 @@ export class PetHandler {
|
|||||||
|
|
||||||
_baseap: number; // 基础
|
_baseap: number; // 基础
|
||||||
|
|
||||||
|
_basehp: number = 0;
|
||||||
|
|
||||||
// _exap: number = 0; // 额外
|
// _exap: number = 0; // 额外
|
||||||
|
|
||||||
_exredhurt: number = 0; // 减伤
|
_exredhurt: number = 0; // 减伤
|
||||||
@ -37,10 +39,15 @@ export class PetHandler {
|
|||||||
|
|
||||||
_istaunt: boolean = false; // 是否是嘲讽
|
_istaunt: boolean = false; // 是否是嘲讽
|
||||||
|
|
||||||
|
_isSilent: boolean = false; // 是否被沉默
|
||||||
|
_silentCD: number = 0; // 沉默剩余回合
|
||||||
|
|
||||||
_selfskills: number[] = [];
|
_selfskills: number[] = [];
|
||||||
|
|
||||||
_idx: number;
|
_idx: number;
|
||||||
|
|
||||||
|
_bakBaseap: number;
|
||||||
|
|
||||||
public init(apet: Pet, owner: PlayerHandler, index: number){
|
public init(apet: Pet, owner: PlayerHandler, index: number){
|
||||||
this._pet = apet;
|
this._pet = apet;
|
||||||
this._owner = owner;
|
this._owner = owner;
|
||||||
@ -188,6 +195,7 @@ export class PetHandler {
|
|||||||
if(value <= 0){
|
if(value <= 0){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
let n = -value;
|
let n = -value;
|
||||||
for(let i = 0; i < this._effhalos.length;i++){
|
for(let i = 0; i < this._effhalos.length;i++){
|
||||||
let dv = this._effhalos[i].addHaloValue(n);
|
let dv = this._effhalos[i].addHaloValue(n);
|
||||||
@ -196,21 +204,20 @@ export class PetHandler {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(n < 0){
|
if(n >= 0){
|
||||||
this._baseap += n;
|
this.dataChanged();
|
||||||
this._ceilBaseAP();
|
return value;
|
||||||
}
|
}
|
||||||
this.dataChanged();
|
|
||||||
if(this._baseap <= 0){
|
return this.addBaseAP(n);
|
||||||
this.die();
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
public addBaseAP(value: number): number{
|
public addBaseAP(value: number): number{
|
||||||
if(value == 0){
|
if(value == 0){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._bakBaseap = this._baseap;
|
||||||
this._baseap += value;
|
this._baseap += value;
|
||||||
this._ceilBaseAP();
|
this._ceilBaseAP();
|
||||||
this.dataChanged();
|
this.dataChanged();
|
||||||
@ -254,11 +261,22 @@ export class PetHandler {
|
|||||||
this._owner && this._owner.onPetBorned(this, param);
|
this._owner && this._owner.onPetBorned(this, param);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public isDead(){
|
||||||
|
return this._baseap <= 0;
|
||||||
|
};
|
||||||
|
|
||||||
public die(){
|
public die(){
|
||||||
this.clear();
|
|
||||||
this._owner && this._owner.onPetDied(this);
|
this._owner && this._owner.onPetDied(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public reborn(){
|
||||||
|
this._effhalos.forEach((item: Skill) => {
|
||||||
|
item.resetHaloValue();
|
||||||
|
});
|
||||||
|
this._baseap = this._bakBaseap;
|
||||||
|
this._bakBaseap = 0;
|
||||||
|
};
|
||||||
|
|
||||||
public clear(){
|
public clear(){
|
||||||
if(this._halos.length > 0){
|
if(this._halos.length > 0){
|
||||||
this._halos.length = 0;
|
this._halos.length = 0;
|
||||||
@ -276,10 +294,30 @@ export class PetHandler {
|
|||||||
this._istaunt = false;
|
this._istaunt = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public isTaunt(){
|
||||||
|
return this._istaunt;
|
||||||
|
};
|
||||||
|
|
||||||
|
public isSilent(){
|
||||||
|
return this._isSilent;
|
||||||
|
};
|
||||||
|
|
||||||
public summonPet(petid: number, count: number = 1, exparam: SkillParam):number{
|
public summonPet(petid: number, count: number = 1, exparam: SkillParam):number{
|
||||||
return this._owner.summonPet(petid, count, exparam);
|
return this._owner.summonPet(petid, count, exparam);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public beSilent(count: number){
|
||||||
|
this._isSilent = true;
|
||||||
|
this._silentCD = count;
|
||||||
|
if(this.hasHaloSkill()){
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public hasHaloSkill(): boolean{
|
||||||
|
return this._halos.length > 0;
|
||||||
|
};
|
||||||
|
|
||||||
public hasHalo(skill: Skill): boolean{
|
public hasHalo(skill: Skill): boolean{
|
||||||
return this._halos.includes(skill);
|
return this._halos.includes(skill);
|
||||||
};
|
};
|
||||||
@ -314,6 +352,9 @@ export class PetHandler {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public checkSkills(tgtype: TriggerType, tgtv: any, sp: SkillParam, cb?: any){
|
public checkSkills(tgtype: TriggerType, tgtv: any, sp: SkillParam, cb?: any){
|
||||||
|
if(this._isSilent){
|
||||||
|
return;
|
||||||
|
}
|
||||||
this._waitskills.forEach((item: Skill) => {
|
this._waitskills.forEach((item: Skill) => {
|
||||||
item.checkTrigger(tgtype, tgtv, sp, cb);
|
item.checkTrigger(tgtype, tgtv, sp, cb);
|
||||||
});
|
});
|
||||||
|
@ -270,16 +270,24 @@ export class PlayerHandler {
|
|||||||
this._owner.onAddPetNotify(apet);
|
this._owner.onAddPetNotify(apet);
|
||||||
|
|
||||||
// 战吼
|
// 战吼
|
||||||
this.simpleCheckSkills(apet._bornSkills, apet, param);
|
if(!apet.isSilent()){
|
||||||
|
this.simpleCheckSkills(apet._bornSkills, apet, param);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public onPetDied(apet: PetHandler){
|
public onPetDied(apet: PetHandler): boolean{
|
||||||
this._owner.onDelPetNotify(apet);
|
|
||||||
|
|
||||||
// 遗愿
|
// 遗愿
|
||||||
this.simpleCheckSkills(apet._dieSkills);
|
if(!apet.isSilent()){
|
||||||
|
this.simpleCheckSkills(apet._dieSkills);
|
||||||
|
}
|
||||||
|
|
||||||
this.delPet(apet);
|
if(apet.isDead()){
|
||||||
|
this._owner.onDelPetNotify(apet);
|
||||||
|
apet.clear();
|
||||||
|
this.delPet(apet);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
public onPetChanged(apet: PetHandler){
|
public onPetChanged(apet: PetHandler){
|
||||||
@ -350,11 +358,11 @@ export class PlayerHandler {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public findTauntPet(): PetHandler{
|
public findTauntPet(): PetHandler{
|
||||||
if(this._self && this._self._istaunt){
|
if(this._self && this._self.isTaunt()){
|
||||||
return this._self;
|
return this._self;
|
||||||
}
|
}
|
||||||
return this._pets.find((item: PetHandler) =>{
|
return this._pets.find((item: PetHandler) =>{
|
||||||
return item._istaunt;
|
return item.isTaunt();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ export class Skill {
|
|||||||
_cb: any;
|
_cb: any;
|
||||||
|
|
||||||
halo_v: number = -1;
|
halo_v: number = -1;
|
||||||
|
reborn_v: number = -1;
|
||||||
rd: number = 0;
|
rd: number = 0;
|
||||||
// LIFE-CYCLE CALLBACKS:
|
// LIFE-CYCLE CALLBACKS:
|
||||||
|
|
||||||
@ -198,6 +199,10 @@ export class Skill {
|
|||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
resetHaloValue(){
|
||||||
|
this.halo_v = -1;
|
||||||
|
};
|
||||||
|
|
||||||
trigger(param: SkillParam, cb?: any) {
|
trigger(param: SkillParam, cb?: any) {
|
||||||
//触发buff效果
|
//触发buff效果
|
||||||
let res = TriggerManager.onTrigger(this, param);
|
let res = TriggerManager.onTrigger(this, param);
|
||||||
|
@ -1,4 +1,16 @@
|
|||||||
// 判断条件
|
// 判断条件
|
||||||
|
/**
|
||||||
|
* 0.无条件发动
|
||||||
|
* 1.当前手牌数
|
||||||
|
* 2.累计抽牌数
|
||||||
|
* 3.胡牌(吃牌/自摸)(就是无条件,所以废弃)
|
||||||
|
* 4.吃别人牌(吃牌)
|
||||||
|
* 5.自己胡牌(自摸)
|
||||||
|
* 6.自己受到来自他人的冲锋后
|
||||||
|
* 7.受到伤害后
|
||||||
|
* 8.发动冲锋技能(ID40122)前
|
||||||
|
*/
|
||||||
|
|
||||||
export const enum CondType
|
export const enum CondType
|
||||||
{
|
{
|
||||||
NO_COND = 0,
|
NO_COND = 0,
|
||||||
@ -12,6 +24,12 @@ export const enum CondType
|
|||||||
CARD_ACTION_LINK_OTHER = 4,
|
CARD_ACTION_LINK_OTHER = 4,
|
||||||
|
|
||||||
CARD_ACTION_LINK_SELF = 5,
|
CARD_ACTION_LINK_SELF = 5,
|
||||||
|
|
||||||
|
BE_ATTACK = 6,
|
||||||
|
|
||||||
|
BE_HURT = 7,
|
||||||
|
|
||||||
|
BEFORE_ATTACK = 8,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 判断方式
|
// 判断方式
|
||||||
@ -96,6 +114,14 @@ export const enum SkillRangeUnitType{
|
|||||||
* 11.扣除HP
|
* 11.扣除HP
|
||||||
* 12.增加出场战力[暂不用]
|
* 12.增加出场战力[暂不用]
|
||||||
* 13.自己受到的伤害降低
|
* 13.自己受到的伤害降低
|
||||||
|
* 21.获得引用卡牌(需引用卡牌ID)
|
||||||
|
* 22.冲锋,对被攻击者造成“攻击者战力的伤害值”,同时由攻击者承受“被攻击者战力的伤害值”
|
||||||
|
* 23.伤害(对战力、HP均有效)
|
||||||
|
* 24.强化法术强度
|
||||||
|
* 25.沉默N回合(N=参数)
|
||||||
|
* 26.重生(并获得死前战力)
|
||||||
|
* 27.遭受反击的伤害参数,减半
|
||||||
|
* 28.使获得技能(引用技能ID)
|
||||||
*/
|
*/
|
||||||
export const enum SkillEffectType
|
export const enum SkillEffectType
|
||||||
{
|
{
|
||||||
@ -114,6 +140,13 @@ export const enum SkillEffectType
|
|||||||
POWER_ADD_BUFF = 12,
|
POWER_ADD_BUFF = 12,
|
||||||
HURT_REDUCE = 13,
|
HURT_REDUCE = 13,
|
||||||
CARD_GETDIRECT = 21,
|
CARD_GETDIRECT = 21,
|
||||||
|
ATTACK = 22,
|
||||||
|
HURT_ALL = 23,
|
||||||
|
ENHANCE_MAGIC = 24,
|
||||||
|
SILENT = 25,
|
||||||
|
REBORN = 26,
|
||||||
|
ATTACK_BACK = 27,
|
||||||
|
SKILL_GET = 28,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 技能效果参数类型
|
// 技能效果参数类型
|
||||||
@ -147,6 +180,9 @@ export const enum EffectCardType
|
|||||||
* 3.(使引用随从、技能的次数)+效果强化牌数
|
* 3.(使引用随从、技能的次数)+效果强化牌数
|
||||||
* 4.(使出场战力)+效果强化参数*效果强化牌数
|
* 4.(使出场战力)+效果强化参数*效果强化牌数
|
||||||
* 5.(使出场战力)+效果强化参数的倍速*联合牌总点数*效果强化牌数
|
* 5.(使出场战力)+效果强化参数的倍速*联合牌总点数*效果强化牌数
|
||||||
|
* 21.使本技能的释放次数(下限)+a牌数
|
||||||
|
* 22.使本技能的释放次数(上限)+a牌数
|
||||||
|
* 23.使本技能的引用次数(上限)+a牌数:同理,引用次数,没加下限的,就是下限
|
||||||
*/
|
*/
|
||||||
export const enum EnhanceEffectType {
|
export const enum EnhanceEffectType {
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
@ -155,6 +191,9 @@ export const enum EnhanceEffectType {
|
|||||||
EN_SUBSKILL_BYCFG = 3,
|
EN_SUBSKILL_BYCFG = 3,
|
||||||
EN_POWER_BYCFG = 4,
|
EN_POWER_BYCFG = 4,
|
||||||
EN_POWER_BYAP = 5,
|
EN_POWER_BYAP = 5,
|
||||||
|
EN_SKILL_USECOUNT_MIN = 21,
|
||||||
|
EN_SKILL_USECOUNT_MAX = 22,
|
||||||
|
EN_SKILL_QCOUNT_MAX = 23,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 游戏单位类型
|
// 游戏单位类型
|
||||||
@ -168,6 +207,18 @@ export const enum GameUnitType {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 游戏敌我阵营
|
// 游戏敌我阵营
|
||||||
|
/**
|
||||||
|
* 1.自己(势力)
|
||||||
|
* 2.友方(势力),不包括自己
|
||||||
|
* 3.自己和友方(势力)
|
||||||
|
* 4.单个敌方(势力)
|
||||||
|
* 5.全部敌方(势力)
|
||||||
|
* 6.场上全部(势力),无视敌我
|
||||||
|
|
||||||
|
* 7.自己和友方(势力)中的随机一个
|
||||||
|
* 8.全部敌方(势力)中的随机一个
|
||||||
|
* 9.先对家,不存在,执行第八条
|
||||||
|
*/
|
||||||
export const enum GameCampType {
|
export const enum GameCampType {
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
SELF = 1,
|
SELF = 1,
|
||||||
@ -176,6 +227,9 @@ export const enum GameCampType {
|
|||||||
ENEMY = 4,
|
ENEMY = 4,
|
||||||
ENEMYTEAM = 5,
|
ENEMYTEAM = 5,
|
||||||
ALL = 6,
|
ALL = 6,
|
||||||
|
RANDOM_US = 7,
|
||||||
|
RANDOM_ENEMY = 8,
|
||||||
|
FACE_ENEMY = 9,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 战力参数数值
|
// 战力参数数值
|
||||||
|
Loading…
x
Reference in New Issue
Block a user