type PartialNumbericEnemyProperty = | 'value' | 'zone' | 'repulse' | 'laser' | 'breakArmor' | 'counterAttack' | 'vampire' | 'hpBuff' | 'atkBuff' | 'defBuff' | 'range' | 'haloRange' | 'n' | 'purify' | 'atkValue' | 'defValue' | 'damage'; type BooleanEnemyProperty = | 'zoneSquare' | 'haloSquare' | 'notBomb' | 'add' | 'haloAdd'; type DetailedEnemy = { specialText: string[]; toShowSpecial: string[]; toShowColor: Color[]; specialColor: Color[]; damageColor: Color; criticalDamage: number; critical: number; defDamage: number; } & Enemy; type Enemy = { /** * 怪物id */ id: I; /** * 怪物名称 */ name: string; /** * 怪物说明 */ description: string; /** * 在怪物手册中映射到的怪物ID。如果此项不为null,则在怪物手册中,将用目标ID来替换该怪物原本的ID。 * 常被运用在同一个怪物的多朝向上 */ displayIdInBook: EnemyIds; /** * 战前事件 */ beforeBattle: MotaEvent; /** * 战后事件 */ afterBattle: MotaEvent; } & { [P in PartialNumbericEnemyProperty]?: number; } & { [P in BooleanEnemyProperty]: boolean; } & EnemyInfoBase; /** * 怪物的特殊属性定义 */ type EnemySpecialDeclaration = [ id: number, name: string | ((enemy: Enemy) => string), desc: string | ((enemy: Enemy) => string), color: Color, extra?: number ]; interface DamageString { /** * 伤害字符串 */ damage: string; /** * 伤害颜色 */ color: Color; } interface EnemyInfoBase { /** * 生命值 */ hp: number; /** * 攻击力 */ atk: number; /** * 防御力 */ def: number; /** * 金币 */ money: number; /** * 经验 */ exp: number; /** * 加点量 */ point: number; /** * 特殊属性列表 */ special: number[]; } interface EnemyInfo extends EnemyInfoBase { /** * 支援信息 */ guards: [x: number, y: number, id: EnemyIds]; } interface DamageInfo { /** * 怪物生命值 */ mon_hp: number; /** * 怪物攻击力 */ mon_atk: number; /** * 怪物防御力 */ mon_def: number; /** * 先攻伤害 */ init_damage: number; /** * 怪物的每回合伤害 */ per_damage: number; /** * 勇士的每回合伤害 */ hero_per_damage: number; /** * 战斗的回合数 */ turn: number; /** * 勇士损失的生命值 */ damage: number; } interface BookEnemyInfo extends Enemy, EnemyInfo { /** * 怪物的坐标列表 */ locs?: [x: number, y: number][]; /** * 怪物的中文名 */ name: string; /** * 特殊属性名称列表 */ specialText: string[]; /** * 特殊属性的颜色列表 */ specialColor: Color[]; /** * 怪物的伤害 */ damage: number; /** * 第一个临界的加攻的值 */ critical: number; /** * 临界的减伤值 */ criticalDamage: number; /** * ratio防减伤 */ defDamage: number; } /** * 怪物模块 */ interface Enemys extends EnemyData { /** * 所有的怪物信息 */ readonly enemys: { [P in EnemyIds]: Enemy
; }; /** * 脚本编辑的怪物相关 */ readonly enemydata: EnemyData; /** * 获得所有怪物原始数据的一个副本 */ getEnemys(): { [P in EnemyIds]: Enemy
;
};
/**
* 获得某种敌人的全部特殊属性名称
* @example core.getSpecialText('greenSlime') // ['先攻', '3连击', '破甲', '反击']
* @param enemy 敌人id或敌人对象,如core.material.enemys.greenSlime
* @returns 字符串数组
*/
getSpecialText(enemy: EnemyIds | Enemy): string[];
/**
* 获得所有特殊属性的颜色
* @param enemy 敌人id或敌人对象,如core.material.enemys.greenSlime
*/
getSpecialColor(enemy: EnemyIds | Enemy): Color[];
/**
* 获得所有特殊属性的额外标记
* @param enemy 敌人id或敌人对象,如core.material.enemys.greenSlime
*/
getSpecialFlag(enemy: EnemyIds | Enemy): number[];
/**
* 获得某种敌人的某种特殊属性的介绍
* @example core.getSpecialHint('bat', 1) // '先攻:怪物首先攻击'
* @param enemy 敌人id或敌人对象,用于确定属性的具体数值
* @param special 属性编号,可以是该敌人没有的属性
* @returns 属性的介绍,以属性名加中文冒号开头
*/
getSpecialHint(enemy: EnemyIds | Enemy, special: number): string;
/**
* 获得某个敌人的某项属性值
* @param enemy 敌人id或敌人对象
* @param name 获取的敌人属性
* @param x 敌人的横坐标
* @param y 敌人的纵坐标
* @param floorId 敌人所在楼层
*/
getEnemyValue