mirror of
				https://github.com/unanmed/HumanBreak.git
				synced 2025-11-04 07:02:58 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			967 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			967 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						||
 * 怪物buff缓存
 | 
						||
 */
 | 
						||
interface EnemyBuffCache {
 | 
						||
    /**
 | 
						||
     * 生命值提升量
 | 
						||
     */
 | 
						||
    hp_buff: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 攻击提升量
 | 
						||
     */
 | 
						||
    atk_buff: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 防御提升量
 | 
						||
     */
 | 
						||
    def_buff: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 支援信息
 | 
						||
     */
 | 
						||
    guards: [number, number, string][];
 | 
						||
}
 | 
						||
 | 
						||
interface CheckBlockStatus {
 | 
						||
    /**
 | 
						||
     * 捕捉信息
 | 
						||
     */
 | 
						||
    ambush: Record<LocString, [number, number, string, Dir]>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 阻击信息
 | 
						||
     */
 | 
						||
    repulse: Record<LocString, [number, number, string, Dir]>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 每点的伤害,小于等于0会不显示
 | 
						||
     */
 | 
						||
    damage: Record<LocString, number>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 是否需要重算
 | 
						||
     */
 | 
						||
    needCache: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 每点的伤害类型
 | 
						||
     */
 | 
						||
    type: Record<LocString, Record<string, number>>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 缓存信息,是每个怪物受到的光环加成
 | 
						||
     */
 | 
						||
    cache: Record<string, DeepReadonly<EnemyBuffCache>>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 光环信息
 | 
						||
     */
 | 
						||
    halo: Record<LocString, string[]>;
 | 
						||
}
 | 
						||
 | 
						||
interface DamageStatus {
 | 
						||
    /**
 | 
						||
     * v2优化下当前的偏移横坐标,单位格子
 | 
						||
     */
 | 
						||
    posX: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * v2优化下当前的偏移纵坐标,单位格子
 | 
						||
     */
 | 
						||
    posY: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 显示的伤害信息
 | 
						||
     */
 | 
						||
    data: DamageStatusData[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 地图伤害或其它在地图上显示的文字
 | 
						||
     */
 | 
						||
    extraData: DamageStatusExtraData[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 不同方向伤害不同的信息
 | 
						||
     */
 | 
						||
    dir: DamageDirData[];
 | 
						||
}
 | 
						||
 | 
						||
interface DamageStatusData {
 | 
						||
    /**
 | 
						||
     * 显示的文字
 | 
						||
     */
 | 
						||
    text: string;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 显示横坐标,单位像素
 | 
						||
     */
 | 
						||
    px: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 显示纵坐标,单位像素
 | 
						||
     */
 | 
						||
    py: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 文字的颜色
 | 
						||
     */
 | 
						||
    color: Color;
 | 
						||
}
 | 
						||
 | 
						||
interface DamageStatusExtraData extends DamageStatusData {
 | 
						||
    /**
 | 
						||
     * 文字的不透明度
 | 
						||
     */
 | 
						||
    alpha: number;
 | 
						||
}
 | 
						||
 | 
						||
interface DamageDirData {
 | 
						||
    x: number;
 | 
						||
    y: number;
 | 
						||
    dir: Dir;
 | 
						||
    color: Color;
 | 
						||
}
 | 
						||
 | 
						||
interface AutomaticRouteStatus {
 | 
						||
    /**
 | 
						||
     * 勇士是否正在移动
 | 
						||
     */
 | 
						||
    autoHeroMove: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 不太清楚用处
 | 
						||
     */
 | 
						||
    autoStep: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路中已经走过的步数
 | 
						||
     */
 | 
						||
    movedStep: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路的总步数
 | 
						||
     */
 | 
						||
    destStep: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路的目标横坐标
 | 
						||
     */
 | 
						||
    destX: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路的目标纵坐标
 | 
						||
     */
 | 
						||
    destY: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路绘图时的偏移横坐标,单位像素
 | 
						||
     */
 | 
						||
    offsetX: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路绘图时的偏移纵坐标,单位像素
 | 
						||
     */
 | 
						||
    offsetY: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路的路线
 | 
						||
     */
 | 
						||
    autoStepRoutes: AutoStep[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 剩下的自动寻路路线
 | 
						||
     */
 | 
						||
    moveStepBeforeStop: AutoStep[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 上一步的勇士方向
 | 
						||
     */
 | 
						||
    lastDirection: Dir;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 光标界面(按下E时的界面)的光标横坐标
 | 
						||
     */
 | 
						||
    cursorX: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 光标界面(按下E时的界面)的光标纵坐标
 | 
						||
     */
 | 
						||
    cursorY: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 是否瞬间移动
 | 
						||
     */
 | 
						||
    moveDirectly: boolean;
 | 
						||
}
 | 
						||
 | 
						||
interface AutoStep {
 | 
						||
    /**
 | 
						||
     * 当前步的步数
 | 
						||
     */
 | 
						||
    step: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前步走向的方向
 | 
						||
     */
 | 
						||
    direction: Dir;
 | 
						||
}
 | 
						||
 | 
						||
interface ReplaySaveBase {
 | 
						||
    /**
 | 
						||
     * 录像播放时,剩下的要播放的录像内容
 | 
						||
     */
 | 
						||
    toReplay: string[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 录像播放时,录像的完整信息
 | 
						||
     */
 | 
						||
    totalList: string[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 不太清楚用处,应该是与录像回退有关的
 | 
						||
     */
 | 
						||
    steps: number;
 | 
						||
}
 | 
						||
 | 
						||
interface ReplayStatus extends ReplaySaveBase {
 | 
						||
    /**
 | 
						||
     * 当前是否正在播放录像,同core.isReplaying()
 | 
						||
     */
 | 
						||
    replaying: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前录像有没有暂停
 | 
						||
     */
 | 
						||
    pausing: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前是否正在某段动画中
 | 
						||
     */
 | 
						||
    animate: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 录像播放是否失败
 | 
						||
     */
 | 
						||
    failed: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前的录像播放速度
 | 
						||
     */
 | 
						||
    speed: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 录像的回退信息
 | 
						||
     */
 | 
						||
    save: ReplaySave[];
 | 
						||
}
 | 
						||
 | 
						||
interface ReplaySave {
 | 
						||
    /**
 | 
						||
     * 回退的存档信息
 | 
						||
     */
 | 
						||
    data: Save;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 回退的录像信息
 | 
						||
     */
 | 
						||
    replay: ReplaySaveBase;
 | 
						||
}
 | 
						||
 | 
						||
interface TextAttribute {
 | 
						||
    /**
 | 
						||
     * 文本框的位置
 | 
						||
     */
 | 
						||
    position: TextPosition;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 文本的左右对齐方式
 | 
						||
     */
 | 
						||
    align: 'left' | 'center' | 'right';
 | 
						||
 | 
						||
    /**
 | 
						||
     * 偏移像素
 | 
						||
     */
 | 
						||
    offset: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 标题颜色
 | 
						||
     */
 | 
						||
    title: RGBArray;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 背景颜色
 | 
						||
     */
 | 
						||
    background: RGBArray | ImageIds;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 文字颜色
 | 
						||
     */
 | 
						||
    text: RGBArray;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 标题字体大小
 | 
						||
     */
 | 
						||
    titlefont: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 正文字体大小
 | 
						||
     */
 | 
						||
    textfont: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 是否加粗
 | 
						||
     */
 | 
						||
    bold: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 打字机时间,每隔多少毫秒显示一个字
 | 
						||
     */
 | 
						||
    time: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 字符间距
 | 
						||
     */
 | 
						||
    letterSpacing: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 淡入淡出时间
 | 
						||
     */
 | 
						||
    animateTime: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 行距
 | 
						||
     */
 | 
						||
    lineHeight: number;
 | 
						||
}
 | 
						||
 | 
						||
interface StatusStyle {
 | 
						||
    /**
 | 
						||
     * 游戏的边框颜色
 | 
						||
     */
 | 
						||
    borderColor: Color;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 状态栏文字的颜色
 | 
						||
     */
 | 
						||
    statusBarColor: Color;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 楼层切换样式,css字符串
 | 
						||
     */
 | 
						||
    floorChangingStyle: string;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 全局字体
 | 
						||
     */
 | 
						||
    font: string;
 | 
						||
}
 | 
						||
 | 
						||
interface GlobalAttribute extends StatusStyle {
 | 
						||
    /**
 | 
						||
     * 装备栏名称
 | 
						||
     */
 | 
						||
    equipName: string[];
 | 
						||
}
 | 
						||
 | 
						||
interface FloorAnimate {
 | 
						||
    /**
 | 
						||
     * 图片的目标画布
 | 
						||
     */
 | 
						||
    canvas: 'bg' | 'fg';
 | 
						||
 | 
						||
    /**
 | 
						||
     * 图片的名称
 | 
						||
     */
 | 
						||
    name: ImageIds;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 绘制横坐标
 | 
						||
     */
 | 
						||
    x: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 绘制纵坐标
 | 
						||
     */
 | 
						||
    y: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 裁剪横坐标
 | 
						||
     */
 | 
						||
    sx?: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 裁剪纵坐标
 | 
						||
     */
 | 
						||
    sy?: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 裁剪宽度
 | 
						||
     */
 | 
						||
    w?: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 裁剪高度
 | 
						||
     */
 | 
						||
    h?: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 绘制帧数
 | 
						||
     */
 | 
						||
    frame?: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 图片翻转
 | 
						||
     */
 | 
						||
    reverse?: ':x' | ':y' | ':o';
 | 
						||
 | 
						||
    /**
 | 
						||
     * 是否禁用
 | 
						||
     */
 | 
						||
    disable?: boolean;
 | 
						||
}
 | 
						||
 | 
						||
interface BoxAnimate {
 | 
						||
    /**
 | 
						||
     * 动画的帧数
 | 
						||
     */
 | 
						||
    animate: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 背景的高度
 | 
						||
     */
 | 
						||
    bgHeight: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 背景的宽度
 | 
						||
     */
 | 
						||
    bgWidth: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 背景的左上角横坐标
 | 
						||
     */
 | 
						||
    bgx: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 背景的左上角纵坐标
 | 
						||
     */
 | 
						||
    bgy: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 动画图片的高度
 | 
						||
     */
 | 
						||
    height: 32 | 48;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 图片信息
 | 
						||
     */
 | 
						||
    img: HTMLImageElement;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 这个图块的图片在其素材图片的纵坐标
 | 
						||
     */
 | 
						||
    pos: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 图块的横坐标
 | 
						||
     */
 | 
						||
    x: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 图块的纵坐标
 | 
						||
     */
 | 
						||
    y: number;
 | 
						||
}
 | 
						||
 | 
						||
interface BigImageBoxAnimate {
 | 
						||
    /**
 | 
						||
     * 大图片的贴图信息
 | 
						||
     */
 | 
						||
    bigImage: HTMLImageElement;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 贴图的朝向
 | 
						||
     */
 | 
						||
    face: Dir;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 中心横坐标
 | 
						||
     */
 | 
						||
    centerX: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 中心纵坐标
 | 
						||
     */
 | 
						||
    centerY: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 最大宽度
 | 
						||
     */
 | 
						||
    max_width: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 绘制到的画布
 | 
						||
     */
 | 
						||
    ctx: CtxRefer;
 | 
						||
}
 | 
						||
 | 
						||
interface AnimateObj {
 | 
						||
    /**
 | 
						||
     * 动画名称
 | 
						||
     */
 | 
						||
    name: AnimationIds;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 动画的唯一标识符
 | 
						||
     */
 | 
						||
    id: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 动画信息
 | 
						||
     */
 | 
						||
    animate: Animate;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 中心横坐标
 | 
						||
     */
 | 
						||
    centerX: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 中心纵坐标
 | 
						||
     */
 | 
						||
    centerY: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前帧数
 | 
						||
     */
 | 
						||
    index: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 回调函数
 | 
						||
     */
 | 
						||
    callback: () => void;
 | 
						||
}
 | 
						||
 | 
						||
interface RouteFolding {
 | 
						||
    /**
 | 
						||
     * 录像折叠信息中的勇士信息
 | 
						||
     */
 | 
						||
    hero: Omit<SelectType<HeroStatus, number>, 'steps'>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 折叠的长度
 | 
						||
     */
 | 
						||
    length: number;
 | 
						||
}
 | 
						||
 | 
						||
/**
 | 
						||
 * 初始游戏状态
 | 
						||
 */
 | 
						||
interface InitGameStatus {
 | 
						||
    /**
 | 
						||
     * 是否开始了游戏
 | 
						||
     */
 | 
						||
    played: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 游戏是否结束
 | 
						||
     */
 | 
						||
    gameOver: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 所有楼层的地图信息
 | 
						||
     */
 | 
						||
    maps: {
 | 
						||
        [P in FloorIds]: Floor<P>;
 | 
						||
    };
 | 
						||
 | 
						||
    /**
 | 
						||
     * 背景图块
 | 
						||
     */
 | 
						||
    bgmaps: Record<FloorIds, number[][]>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 前景图块
 | 
						||
     */
 | 
						||
    fgmaps: Record<FloorIds, number[][]>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 以坐标列举的图块
 | 
						||
     */
 | 
						||
    mapBlockObjs: Record<FloorIds, Record<LocString, Block>>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 伤害显示信息
 | 
						||
     */
 | 
						||
    damage: DamageStatus;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 是否锁定了用户控制
 | 
						||
     */
 | 
						||
    lockControl: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated 迟早给你删喽\
 | 
						||
     * 勇士移动状态,每个数字干啥的自己去libs翻,这东西太复杂了,不过应该不会有人用这个东西吧(
 | 
						||
     */
 | 
						||
    heroMoving: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 勇士是否停下了
 | 
						||
     */
 | 
						||
    heroStop: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 自动寻路状态
 | 
						||
     */
 | 
						||
    automaticRoute: AutomaticRouteStatus;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 按键按下的时间,用于判定双击
 | 
						||
     */
 | 
						||
    downTime: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * ctrl键是否倍按下
 | 
						||
     */
 | 
						||
    ctrlDown: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前录像信息
 | 
						||
     */
 | 
						||
    route: string[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前的回放状态
 | 
						||
     */
 | 
						||
    replay: ReplayStatus;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前的所有全局商店
 | 
						||
     */
 | 
						||
    shops: Record<string, ShopEventOf<keyof ShopEventMap>>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前的事件状态,样板最大的败笔之一,离谱到逆天
 | 
						||
     */
 | 
						||
    event: EventStatusOf;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前的所有自动事件
 | 
						||
     */
 | 
						||
    autoEvents: DeepReadonly<AutoEvent[]>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前的全局剧情文本设置
 | 
						||
     */
 | 
						||
    textAttribute: TextAttribute;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 部分全局属性,会跟随存档
 | 
						||
     */
 | 
						||
    globalAttribute: GlobalAttribute;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 色调的颜色
 | 
						||
     */
 | 
						||
    curtainColor: Color;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 全局动画对象
 | 
						||
     */
 | 
						||
    globalAnimateObjs: Block<
 | 
						||
        IdToNumber[AllIdsOf<Exclude<AnimatableCls, 'autotile'>>]
 | 
						||
    >[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 楼层贴图
 | 
						||
     */
 | 
						||
    floorAnimateObjs: FloorAnimate[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 所有的BoxAnimate信息
 | 
						||
     */
 | 
						||
    boxAnimateObjs: (BoxAnimate | BigImageBoxAnimate)[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 所有的自动元件动画
 | 
						||
     */
 | 
						||
    autotileAnimateObjs: Block<IdToNumber[AllIdsOf<'autotile'>]>[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 全局动画状态,每经过一个全局动画时间便加一
 | 
						||
     */
 | 
						||
    globalAnimateStatus: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 所有绘制的动画
 | 
						||
     */
 | 
						||
    animateObjs: AnimateObj[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前难度
 | 
						||
     */
 | 
						||
    hard: string;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 勇士的中心
 | 
						||
     */
 | 
						||
    heroCenter: Record<'px' | 'py', number>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前按下的按键
 | 
						||
     */
 | 
						||
    holdingKeys: number[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * id转数字
 | 
						||
     */
 | 
						||
    id2number: IdToNumber;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 数字转图块
 | 
						||
     */
 | 
						||
    number2block: {
 | 
						||
        [P in keyof NumberToId]: Block<P>;
 | 
						||
    };
 | 
						||
 | 
						||
    /**
 | 
						||
     * 录像折叠信息
 | 
						||
     */
 | 
						||
    routeFolding: Record<`${LocString},${FirstCharOf<Dir>}`, RouteFolding>;
 | 
						||
}
 | 
						||
 | 
						||
/**
 | 
						||
 * 运行时的游戏状态
 | 
						||
 */
 | 
						||
interface GameStatus extends InitGameStatus {
 | 
						||
    /**
 | 
						||
     * 当前层的floorId
 | 
						||
     */
 | 
						||
    floorId: FloorIds;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 获得当前楼层信息,等价于core.status.maps[core.status.floorId]
 | 
						||
     */
 | 
						||
    thisMap: Floor;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 地图伤害
 | 
						||
     */
 | 
						||
    checkBlock: Readonly<CheckBlockStatus>;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前勇士状态信息。例如core.status.hero.atk就是当前勇士的攻击力数值
 | 
						||
     */
 | 
						||
    hero: HeroStatus;
 | 
						||
}
 | 
						||
 | 
						||
interface Follower {
 | 
						||
    /**
 | 
						||
     * 跟随者的图片id
 | 
						||
     */
 | 
						||
    name: ImageIds;
 | 
						||
 | 
						||
    direction: Dir;
 | 
						||
    x: number;
 | 
						||
    y: number;
 | 
						||
    stop: boolean;
 | 
						||
}
 | 
						||
 | 
						||
interface HeroStatistics {
 | 
						||
    /**
 | 
						||
     * 击败的怪物数量
 | 
						||
     */
 | 
						||
    battle: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 由于战斗损失的生命值
 | 
						||
     */
 | 
						||
    battleDamage: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前游戏时间
 | 
						||
     */
 | 
						||
    currentTime: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 获得的总经验值
 | 
						||
     */
 | 
						||
    exp: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 由于地图伤害损失的生命值
 | 
						||
     */
 | 
						||
    extraDamage: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 总共损失的生命值
 | 
						||
     */
 | 
						||
    hp: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 由于瞬移少走的步数
 | 
						||
     */
 | 
						||
    ignoreSteps: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 总共获得的金币数
 | 
						||
     */
 | 
						||
    money: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 瞬移次数
 | 
						||
     */
 | 
						||
    moveDirectly: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 中毒损失的生命值
 | 
						||
     */
 | 
						||
    poisonDamage: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 本次游戏的开始时间
 | 
						||
     */
 | 
						||
    startTime: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 游戏总时间
 | 
						||
     */
 | 
						||
    totalTime: number;
 | 
						||
}
 | 
						||
 | 
						||
/**
 | 
						||
 * 勇士状态
 | 
						||
 */
 | 
						||
interface HeroStatus {
 | 
						||
    /**
 | 
						||
     * 勇士停止时及对话框中是否启用帧动画
 | 
						||
     */
 | 
						||
    animate: boolean;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士生命值
 | 
						||
     */
 | 
						||
    hp: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士生命回复
 | 
						||
     */
 | 
						||
    hpmax: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的攻击
 | 
						||
     */
 | 
						||
    atk: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的防御
 | 
						||
     */
 | 
						||
    def: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的魔防
 | 
						||
     */
 | 
						||
    mdef: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的等级
 | 
						||
     */
 | 
						||
    lv: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的经验
 | 
						||
     */
 | 
						||
    exp: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的金币
 | 
						||
     */
 | 
						||
    money: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的额外攻击
 | 
						||
     */
 | 
						||
    mana: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的魔法上限
 | 
						||
     */
 | 
						||
    manamax: number;
 | 
						||
 | 
						||
    /** 魔法防御 */
 | 
						||
    magicDef: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的名称
 | 
						||
     */
 | 
						||
    name: string;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士移动过的步数
 | 
						||
     */
 | 
						||
    steps: number;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士的图片
 | 
						||
     */
 | 
						||
    image: ImageIds;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 当前勇士的装备
 | 
						||
     */
 | 
						||
    equipment: ItemIdOf<'equips'>[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士当前的位置
 | 
						||
     */
 | 
						||
    loc: DiredLoc;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 当前的变量
 | 
						||
     */
 | 
						||
    flags: Flags;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 勇士的跟随者
 | 
						||
     */
 | 
						||
    followers: Follower[];
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     */
 | 
						||
    statistics: HeroStatistics;
 | 
						||
 | 
						||
    /**
 | 
						||
     * @deprecated
 | 
						||
     * 勇士拥有的道具
 | 
						||
     */
 | 
						||
    items: {
 | 
						||
        [P in Exclude<ItemCls, 'items'>]: Record<ItemIdOf<P>, number>;
 | 
						||
    };
 | 
						||
 | 
						||
    /**
 | 
						||
     * 勇士学习的特技
 | 
						||
     */
 | 
						||
    special: {
 | 
						||
        num: number[];
 | 
						||
        last: number[];
 | 
						||
        [k: string]: any;
 | 
						||
    };
 | 
						||
 | 
						||
    buff: Partial<Record<keyof NumbericHeroStatus, number>>;
 | 
						||
}
 |