You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AdLike2048/assets/script/gm/ProjectGmBootstrap.ts

74 lines
3.5 KiB

1 day ago
import { GmEasy, GmShell } from '../../mx/module/gm';
import { ItemNumType } from '../game/GameData';
import { ProjectGmActions } from './ProjectGmActions';
import { ProjectGmHost } from './ProjectGmHost';
import { ProjectGmPanelId, ProjectGmPanels } from './ProjectGmPanels';
/**
* 本项目 GM 启动。扩展新功能:在 `_register` 里加一行即可。
*/
export class ProjectGmBootstrap {
private static _inited = false;
/** 幂等初始化 */
static init(): void {
if (this._inited) return;
this._inited = true;
GmShell.bindHost(new ProjectGmHost());
ProjectGmPanels.ensureRegistered();
this._register();
}
/** 打开 GM */
static show(): void {
this.init();
GmShell.show();
}
/**
* 注册全部命令(开发者主要改这里)。
* btn=快捷 / sw=开关 / num=数值 / page=子面板 / danger=确认 / text=粘贴
*/
private static _register(): void {
const A = ProjectGmActions;
const P = ProjectGmPanelId;
new GmEasy()
.tab('常用')
.btn('今日首次登录', () => A.firstLoginToday())
.btn('一键添加所有宝石', () => A.grantAllGems())
.btn('一键获取所有武器', () => A.grantAllWeapons())
.btn('清除固定地图', () => A.clearFixedMap())
.btn('设置排行星级&胜场', () => A.prepareEmolumentPop())
.btn('清除副本次数难度全开', () => A.clearReplicaCounts())
.btn('设置武器等级', () => A.openPopGm(1))
.btn('设置武器和技能', () => A.openPopGm(2))
.sw('显示广告', () => A.getShowAd(), (v) => A.setShowAd(v))
.sw('内购版本', () => A.getIap(), (v) => A.setIap(v))
.sw('快速胜利', () => A.getFastWin(), (v) => A.setFastWin(v))
.page('设置道具', P.itemPicker, () => '图标点选')
.page('设置段位和星级', P.rankPicker, () => A.rankSummary())
.num('设置金钱', () => A.getCurrency(ItemNumType.money), (v) => A.setCurrency(ItemNumType.money, v, 'set'))
.num('设置体力', () => A.getCurrency(ItemNumType.vigour), (v) => A.setCurrency(ItemNumType.vigour, v, 'set'))
.num('设置钻石', () => A.getCurrency(ItemNumType.diamond), (v) => A.setCurrency(ItemNumType.diamond, v, 'set'))
.num('通关怪物数量', () => A.getFastWinNum(), (v) => A.setFastWinNum(v))
.danger('GM重置进度', '将关闭所有面板并重置游戏进度,确定?', () => A.hardReset())
.tab('战斗')
.sw('己方营地不掉血', () => A.getLocalCampImmune(), (v) => A.setCampImmune(true, v))
.sw('敌方营地不掉血', () => A.getEnemyCampImmune(), (v) => A.setCampImmune(false, v))
.page('固定地图', P.levelPicker, () => A.fixedMapSummary())
.num('玩家局内血量', () => A.getWallHp() || 1000, (v) => A.setWallHp(v), 1)
.page('设置被动BUFF', P.buffPicker, () => A.passiveCarrySummary(), { expectType: 2, mode: 'carryPassive' })
.page('设置AI主动BUFF', P.buffPicker, () => A.aiBuffSummary(true), { expectType: 1, mode: 'aiActive' })
.page('设置AI被动BUFF', P.buffPicker, () => A.aiBuffSummary(false), { expectType: 2, mode: 'aiPassive' })
.btn('清除AI主动BUFF', () => A.clearAiActiveBuff())
.btn('清除AI被动BUFF', () => A.clearAiPassiveBuff())
.tab('存档')
.embed(P.saveEditor)
.commit();
}
}