mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-01-20 13:29:25 +08:00
203 lines
6.8 KiB
TypeScript
203 lines
6.8 KiB
TypeScript
|
/** @file enemys.js 定义了一系列和敌人相关的API函数。 */
|
|||
|
declare class enemys {
|
|||
|
/**
|
|||
|
* 判定某种特殊属性的有无
|
|||
|
* @example core.hasSpecial('greenSlime', 1) // 判定绿头怪有无先攻属性
|
|||
|
* @param special 敌人id或敌人对象或正整数数组或自然数
|
|||
|
* @param test 待检查的属性编号
|
|||
|
* @returns 若special为数组或数且含有test或相等、或special为敌人id或对象且具有此属性,则返回true
|
|||
|
*/
|
|||
|
hasSpecial(
|
|||
|
special: number | number[] | string | Enemy,
|
|||
|
test: number
|
|||
|
): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* 获得某种敌人的全部特殊属性名称
|
|||
|
* @example core.getSpecialText('greenSlime') // ['先攻', '3连击', '破甲', '反击']
|
|||
|
* @param enemy 敌人id或敌人对象,如core.material.enemys.greenSlime
|
|||
|
* @returns 字符串数组
|
|||
|
*/
|
|||
|
getSpecialText(enemy: string | Enemy): string[];
|
|||
|
|
|||
|
/**
|
|||
|
* 获得某种敌人的某种特殊属性的介绍
|
|||
|
* @example core.getSpecialHint('bat', 1) // '先攻:怪物首先攻击'
|
|||
|
* @param enemy 敌人id或敌人对象,用于确定属性的具体数值,否则可选
|
|||
|
* @param special 属性编号,可以是该敌人没有的属性
|
|||
|
* @returns 属性的介绍,以属性名加中文冒号开头
|
|||
|
*/
|
|||
|
getSpecialHint(enemy: string | Enemy, special: number): string;
|
|||
|
|
|||
|
/** 获得某个敌人的某项属性值 */
|
|||
|
getEnemyValue(
|
|||
|
enemy: string | Enemy,
|
|||
|
name: string,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): any;
|
|||
|
|
|||
|
/**
|
|||
|
* 判定主角当前能否打败某只敌人
|
|||
|
* @example core.canBattle('greenSlime',0,0,'MT0') // 能否打败主塔0层左上角的绿头怪(假设有)
|
|||
|
* @param enemy 敌人id或敌人对象
|
|||
|
* @param x 敌人的横坐标,可选
|
|||
|
* @param y 敌人的纵坐标,可选
|
|||
|
* @param floorId 敌人所在的地图,可选
|
|||
|
* @returns true表示可以打败,false表示无法打败
|
|||
|
*/
|
|||
|
canBattle(
|
|||
|
enemy: string | Enemy,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): boolean;
|
|||
|
|
|||
|
/**
|
|||
|
* 获得某只敌人对主角的总伤害
|
|||
|
* @example core.getDamage('greenSlime',0,0,'MT0') // 绿头怪的总伤害
|
|||
|
* @param enemy 敌人id或敌人对象
|
|||
|
* @param x 敌人的横坐标,可选
|
|||
|
* @param y 敌人的纵坐标,可选
|
|||
|
* @param floorId 敌人所在的地图,可选
|
|||
|
* @returns 总伤害,如果因为没有破防或无敌怪等其他原因无法战斗,则返回null
|
|||
|
*/
|
|||
|
getDamage(
|
|||
|
enemy: string | Enemy,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): number;
|
|||
|
|
|||
|
/**
|
|||
|
* 获得某只敌人的地图显伤,包括颜色
|
|||
|
* @example core.getDamageString('greenSlime', 0, 0, 'MT0') // 绿头怪的地图显伤
|
|||
|
* @param enemy 敌人id或敌人对象
|
|||
|
* @param x 敌人的横坐标,可选
|
|||
|
* @param y 敌人的纵坐标,可选
|
|||
|
* @param floorId 敌人所在的地图,可选
|
|||
|
* @returns damage: 表示伤害值或为'???',color: 形如'#RrGgBb'
|
|||
|
*/
|
|||
|
getDamageString(
|
|||
|
enemy: string | Enemy,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): {
|
|||
|
damage: string;
|
|||
|
color: string;
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* 获得某只敌人接下来的若干个临界及其减伤,算法基于useLoop开关选择回合法或二分法
|
|||
|
* @example core.nextCriticals('greenSlime', 9, 0, 0, 'MT0') // 绿头怪接下来的9个临界
|
|||
|
* @param enemy 敌人id或敌人对象
|
|||
|
* @param number 要计算的临界数量,可选,默认为1
|
|||
|
* @param x 敌人的横坐标,可选
|
|||
|
* @param y 敌人的纵坐标,可选
|
|||
|
* @param floorId 敌人所在的地图,可选
|
|||
|
* @returns 两列的二维数组,每行表示一个临界及其减伤
|
|||
|
*/
|
|||
|
nextCriticals(
|
|||
|
enemy: string | Enemy,
|
|||
|
number?: number,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): number[][];
|
|||
|
|
|||
|
/**
|
|||
|
* 计算再加若干点防御能使某只敌人对主角的总伤害降低多少
|
|||
|
* @example core.nextCriticals('greenSlime', 10, 0, 0, 'MT0') // 再加10点防御能使绿头怪的伤害降低多少
|
|||
|
* @param enemy 敌人id或敌人对象
|
|||
|
* @param k 假设主角增加的防御力,可选,默认为1
|
|||
|
* @param x 敌人的横坐标,可选
|
|||
|
* @param y 敌人的纵坐标,可选
|
|||
|
* @param floorId 敌人所在的地图,可选
|
|||
|
* @returns 总伤害的减少量
|
|||
|
*/
|
|||
|
getDefDamage(
|
|||
|
enemy: string | Enemy,
|
|||
|
k?: number,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): number;
|
|||
|
|
|||
|
/**
|
|||
|
* 获得某张地图的敌人集合,用于手册绘制
|
|||
|
* @example core.getCurrentEnemys('MT0') // 主塔0层的敌人集合
|
|||
|
* @param floorId 地图id,可选
|
|||
|
* @returns 敌人集合,按伤害升序排列,支持多朝向怪合并
|
|||
|
*/
|
|||
|
getCurrentEnemys(floorId?: string): Enemy[];
|
|||
|
|
|||
|
/**
|
|||
|
* 检查某些楼层是否还有漏打的(某种)敌人
|
|||
|
* @example core.hasEnemyLeft('greenSlime', ['sample0', 'sample1']) // 样板0层和1层是否有漏打的绿头怪
|
|||
|
* @param enemyId 敌人id,可选,默认为任意敌人
|
|||
|
* @param floorId 地图id或其数组,可选,默认为当前地图
|
|||
|
* @returns true表示有敌人被漏打,false表示敌人已死光
|
|||
|
*/
|
|||
|
hasEnemyLeft(enemyId?: string, floorId?: string | string[]): boolean;
|
|||
|
|
|||
|
/** 获得所有怪物原始数据的一个副本 */
|
|||
|
getEnemys(): any;
|
|||
|
|
|||
|
/** 获得所有特殊属性定义 */
|
|||
|
getSpecials(): [
|
|||
|
number,
|
|||
|
string | ((enemy: Enemy) => string),
|
|||
|
string | ((enemy: Enemy) => string),
|
|||
|
string | [number, number, number, number?],
|
|||
|
number?
|
|||
|
][];
|
|||
|
|
|||
|
/** 获得所有特殊属性的颜色 */
|
|||
|
getSpecialColor(
|
|||
|
enemy: string | Enemy
|
|||
|
): Array<string | [number, number, number, number?]>;
|
|||
|
|
|||
|
/** 获得所有特殊属性的额外标记 */
|
|||
|
getSpecialFlag(enemy: string | Enemy): Array<number>;
|
|||
|
|
|||
|
/** 获得怪物真实属性 */
|
|||
|
getEnemyInfo(
|
|||
|
enemy: string | Enemy,
|
|||
|
hero?: any,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): {
|
|||
|
hp: number;
|
|||
|
def: number;
|
|||
|
atk: number;
|
|||
|
money: number;
|
|||
|
exp: number;
|
|||
|
point: number;
|
|||
|
special: number | number[];
|
|||
|
guards: Array<[number, number, string]>;
|
|||
|
[x: string]: any;
|
|||
|
};
|
|||
|
|
|||
|
/** 获得战斗伤害信息(实际伤害计算函数) */
|
|||
|
getDamageInfo(
|
|||
|
enemy: string | Enemy,
|
|||
|
hero?: any,
|
|||
|
x?: number,
|
|||
|
y?: number,
|
|||
|
floorId?: string
|
|||
|
): {
|
|||
|
mon_hp: number;
|
|||
|
mon_atk: number;
|
|||
|
mon_def: number;
|
|||
|
init_damage: number;
|
|||
|
per_damage: number;
|
|||
|
hero_per_damage: number;
|
|||
|
turn: number;
|
|||
|
damage: number;
|
|||
|
[x: string]: any;
|
|||
|
};
|
|||
|
}
|