标准包武将添加技能代码提示

This commit is contained in:
nonameShijian 2024-01-17 00:36:15 +08:00
parent 9bbb4d7d84
commit 997a5f070e
13 changed files with 1965 additions and 14 deletions

View File

@ -1,4 +1,4 @@
'use strict'; import { game } from '../noname.js';
game.import('character',function(lib,game,ui,get,ai,_status){ game.import('character',function(lib,game,ui,get,ai,_status){
return { return {
name:'standard', name:'standard',
@ -93,6 +93,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ganning:['lingtong','xf_sufei'], ganning:['lingtong','xf_sufei'],
guanyu:['zhangfei','liaohua'], guanyu:['zhangfei','liaohua'],
}, },
/**
* @type { { [key: string]: Skill } }
*/
skill:{ skill:{
//标准版甘夫人 //标准版甘夫人
stdshushen:{ stdshushen:{
@ -304,7 +307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'source', logTarget:'source',
preHidden:true, preHidden:true,
filter(event,player){ filter(event,player){
return (event.source&&event.source.countGainableCards(player,event.source!=player?'he':'e')&&event.num>0); return event.source&&event.source.countGainableCards(player,event.source!=player?'he':'e')>0&&event.num>0;
}, },
async content(event,trigger,player){ async content(event,trigger,player){
player.gainPlayerCard(true,trigger.source,trigger.source!=player?'he':'e'); player.gainPlayerCard(true,trigger.source,trigger.source!=player?'he':'e');

23
node_modules/noname-typings/Card.d.ts generated vendored Normal file
View File

@ -0,0 +1,23 @@
declare type CardBaseUIData = {
name?: string;
suit?: string;
number?: number;
nature?: string;
//用于某些方法,用于过滤卡牌的额外结构
type?: string;
subtype?: string;
color?: string;
/**
*
*
* true,false/undefined
* useCard使用时next.cards,card.cards;
*
*/
isCard?: boolean;
/** 真实使用的卡牌 */
cards?: Card[];
}

43
node_modules/noname-typings/Result.d.ts generated vendored Normal file
View File

@ -0,0 +1,43 @@
declare interface Result {
/**
*
*
* ;
*
*
* game.check
*
* ok方法会有直接的boolgame.check;
*/
bool?: boolean;
//choose系
/** 记录返回当前事件操作过程中的卡牌 */
cards: Card[];
/** 记录返回当前事件操作过程中的目标 */
targets: Player[];
/** 记录返回当前事件操作过程中的按钮 */
buttons: Button[];
/** 记录buttons内所有button.link(即该按钮的类型link的类型很多参考按钮的item) */
links: any[];
//control系(直接control系列没有result.bool)
/** control操作面板的选中结果即该按钮的link即名字 */
control: string;
/** 既control的下标 */
index: number;
//ok系
/** 记录返回当前事件操作过程中面板按钮的确定ok取消cancel */
confirm: string;
/** 一般为触发的“视为”技能 */
skill: string;
/**
*
* card参数特供给视为牌cards[0]
* card.isCardfalse为视为牌
*/
card: Card;
[key: string]: any;
}

1820
node_modules/noname-typings/Skill.d.ts generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,11 @@
/// <reference path="./ArrayEx.d.ts" /> /// <reference path="./ArrayEx.d.ts" />
/// <reference path="./Card.d.ts" />
/// <reference path="./DateEx.d.ts" /> /// <reference path="./DateEx.d.ts" />
/// <reference path="./HTMLDivElementEx.d.ts" /> /// <reference path="./HTMLDivElementEx.d.ts" />
/// <reference path="./HTMLTableELementEx.d.ts" /> /// <reference path="./HTMLTableELementEx.d.ts" />
/// <reference path="./windowEx.d.ts" /> /// <reference path="./windowEx.d.ts" />
/// <reference path="./Result.d.ts" />
/// <reference path="./Skill.d.ts" />
/// <reference path="./type.d.ts" /> /// <reference path="./type.d.ts" />
/// <reference path="./MapEx.d.ts" /> /// <reference path="./MapEx.d.ts" />
/// <reference types="@types/cordova" /> /// <reference types="@types/cordova" />

View File

@ -1,6 +1,6 @@
{ {
"name": "noname-typings", "name": "noname-typings",
"version": "2023.12.31", "version": "2024.01.16",
"description": "Noname typings, mainly for showing type hints when creating extensions of the Sanguosha-like game Noname.", "description": "Noname typings, mainly for showing type hints when creating extensions of the Sanguosha-like game Noname.",
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -17,15 +17,43 @@ interface NMap<V> {
[key: number]: V [key: number]: V
} }
declare type Game = import('../../noname/game/index.js').Game; //从0个参数到任意参数的方法结构声明
declare type Library = import('../../noname/library/index.js').Library; type NoneParmFum<T> = () => T;
type OneParmFun<U, T> = (arg0: U) => T;
type TwoParmFun<U1, U2, T> = (arg0: U1, arg1: U2) => T;
type ThreeParmFun<U1, U2, U3, T> = (arg0: U1, arg1: U2, arg2: U3) => T;
type FourParmFun<U1, U2, U3, U4, T> = (arg0: U1, arg1: U2, arg2: U3, arg3: U4) => T;
type RestParmFun<T> = (...args) => T;
type RestParmFun2<U, T> = (...args: U[]) => T;
//尝试增加的符合类型声明
/** SingleAndArrayType:单体与集合类型 */
type SAAType<T> = T | T[];
/** 再价格可以返回这种类型的方法 */
type SAAFType<T> = T | T[] | RestParmFun<T>;
/** 有name属性的对象 */
type NameType = { name: string };
/** 技能或者卡牌 */
type SkillOrCard = string | NameType | Card;
/** 卡牌或者卡牌集合 */
type CCards = SAAType<Card>;
/** 技能content */
declare type ContentFuncByAll = {
// (event: GameEventPromise, step: number, source: Player, player: Player, target: Player, targets: Player[], card: Card, cards: Card[], skill: string, forced: boolean, num: number, trigger: GameEventPromise, result: Result): any,
(event: GameEventPromise, trigger: GameEventPromise, player: Player): Promise<any>;
}
declare type Game = typeof import('../../noname/game/index.js').Game;
declare type Library = typeof import('../../noname/library/index.js').Library;
declare type Status = typeof import('../../noname/status/index.js').status; declare type Status = typeof import('../../noname/status/index.js').status;
declare type UI = import('../../noname/ui/index.js').UI; declare type UI = typeof import('../../noname/ui/index.js').UI;
declare type Get = import('../../noname/get/index.js').Get; declare type Get = typeof import('../../noname/get/index.js').Get;
declare type AI = import('../../noname/ai/index.js').AI; declare type AI = typeof import('../../noname/ai/index.js').AI;
declare type Button = import('../../noname/library/index.js').Button; declare type Button = import('../../noname/library/index.js').Button;
declare type Card = import('../../noname/library/index.js').Card; declare type Card = import('../../noname/library/index.js').Card;
declare type VCard = import('../../noname/library/index.js').VCard;
declare type Dialog = import('../../noname/library/index.js').Dialog; declare type Dialog = import('../../noname/library/index.js').Dialog;
declare type GameEvent = import('../../noname/library/index.js').GameEvent; declare type GameEvent = import('../../noname/library/index.js').GameEvent;
declare type GameEventPromise = import('../../noname/library/index.js').GameEventPromise; declare type GameEventPromise = import('../../noname/library/index.js').GameEventPromise;
@ -40,3 +68,4 @@ declare type CodeMirror = typeof import('../../game/codemirror.js').default;
declare type Sex = 'male' | 'female' | 'dobule' | 'none'; declare type Sex = 'male' | 'female' | 'dobule' | 'none';
declare type Character = [Sex, string, number | string, string[], string[]]; declare type Character = [Sex, string, number | string, string[], string[]];
declare type Select = [number, number];

View File

@ -1961,8 +1961,8 @@ export class Get extends Uninstantable {
} }
} }
/** /**
* @param { number | [number, number] | (()=>[number, number]) } [select] * @param { number | Select | (()=>Select) } [select]
* @returns { [number, number] } * @returns { Select }
*/ */
static select(select) { static select(select) {
if (typeof select == 'function') return get.select(select()); if (typeof select == 'function') return get.select(select());

View File

@ -332,7 +332,7 @@ export class Is extends Uninstantable {
} }
return true; return true;
} }
static altered() { return false; } static altered(skillName) { return false; }
/* /*
skill=>{ skill=>{
return false; return false;

View File

@ -45,6 +45,10 @@ export class GameEvent {
}; };
this._aiexclude = []; this._aiexclude = [];
this._notrigger = []; this._notrigger = [];
/**
* @type { Result }
*/
// @ts-ignore
this._result = {}; this._result = {};
this._set = []; this._set = [];
/** /**
@ -862,6 +866,11 @@ export class GameEvent {
*/ */
// @ts-ignore // @ts-ignore
this.excludeButton; this.excludeButton;
/**
* @type { Result }
*/
// @ts-ignore
this.result;
throw new Error('Do not call this method'); throw new Error('Do not call this method');
} }
} }

View File

@ -16,7 +16,7 @@ import { AsyncFunction } from '../../util/index.js';
* 且Promise的原有属性无法被修改一切对这个类实例的属性修改删除 * 且Promise的原有属性无法被修改一切对这个类实例的属性修改删除
* 再配置等操作都会转发到事件对应的属性中 * 再配置等操作都会转发到事件对应的属性中
* *
* @todo 需要完成异步事件的debugger方法 * @template { GameEvent } T
* *
* @example * @example
* 使用await xx()等待异步事件执行 * 使用await xx()等待异步事件执行

View File

@ -5,7 +5,7 @@
* @typedef { InstanceType<typeof lib.element.Button> } Button * @typedef { InstanceType<typeof lib.element.Button> } Button
* @typedef { InstanceType<typeof lib.element.Dialog> } Dialog * @typedef { InstanceType<typeof lib.element.Dialog> } Dialog
* @typedef { InstanceType<typeof lib.element.GameEvent> } GameEvent * @typedef { InstanceType<typeof lib.element.GameEvent> } GameEvent
* @typedef { InstanceType<typeof lib.element.GameEvent> & InstanceType<typeof lib.element.GameEventPromise> & typeof Promise<typeof lib.element.GameEvent> } GameEventPromise * @typedef { InstanceType<typeof lib.element.GameEvent> & InstanceType<typeof lib.element.GameEventPromise & typeof Promise<InstanceType<typeof lib.element.GameEvent>> } GameEventPromise
* @typedef { InstanceType<typeof lib.element.NodeWS> } NodeWS * @typedef { InstanceType<typeof lib.element.NodeWS> } NodeWS
* @typedef { InstanceType<typeof lib.element.Control> } Control * @typedef { InstanceType<typeof lib.element.Control> } Control
*/ */
@ -10198,6 +10198,19 @@ export class Library extends Uninstantable {
return 0; return 0;
} }
}; };
/**
* @type {{
* global: string[];
* globalmap: SMap<Player[]>;
* storage: SMap<any>;
* undist: SMap<any>;
* thers: SMap<any>;
* zhu: SMap<any>;
* zhuSkill: SMap<any>;
* land_used: SMap<any>;
* [key: string]: Skill;
* }}
*/
static skill = { static skill = {
stratagem_fury: { stratagem_fury: {
marktext: '🔥', marktext: '🔥',

View File

@ -14134,6 +14134,14 @@ export class UI extends Uninstantable {
* @type { Control | undefined } * @type { Control | undefined }
*/ */
static skills3; static skills3;
/**
* @type { HTMLDivElement }
*/
static window;
/**
* @type { HTMLDivElement }
*/
static pause;
static refresh(node) { static refresh(node) {
void window.getComputedStyle(node, null).getPropertyValue("opacity"); void window.getComputedStyle(node, null).getPropertyValue("opacity");
} }