getcompetitive 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -15
- package/dist/threats.data.js +587 -0
- package/dist/threats.data.js.map +1 -0
- package/dist/threats.js +35 -324
- package/dist/threats.js.map +1 -1
- package/dist/tools/analyze.js +1 -1
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/calc.js +8 -8
- package/dist/tools/calc.js.map +1 -1
- package/dist/tools/data.js +8 -8
- package/dist/tools/data.js.map +1 -1
- package/dist/tools/meta.js +82 -39
- package/dist/tools/meta.js.map +1 -1
- package/dist/tools/regulations.js +1 -1
- package/dist/tools/regulations.js.map +1 -1
- package/dist/tools/team.js +3 -3
- package/dist/tools/team.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threats.data.js","sourceRoot":"","sources":["../src/threats.data.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,6EAA6E;AAC7E,eAAe;IACb,KAAK,EAAE;QACL,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,YAAY;QAC1B,MAAM,EAAE,+TAA+T;QACvU,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,SAAS,EAAE,YAAY;SACxB;QACD,SAAS,EAAE;YACT;gBACE,MAAM,EAAE,yBAAyB;gBACjC,KAAK,EAAE,gCAAgC;gBACvC,OAAO,EAAE,yCAAyC;aACnD;YACD;gBACE,MAAM,EAAE,kCAAkC;gBAC1C,KAAK,EAAE,8CAA8C;gBACrD,OAAO,EAAE,YAAY;aACtB;SACF;QACD,eAAe,EAAE;YACf,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,8DAA8D;YACrE,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,CAAC;SAClB;QACD,SAAS,EAAE;YACT;gBACE,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,uBAAuB;gBAC/B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,cAAc;gBACzB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,EAAE;iBACV;gBACD,OAAO,EAAE;oBACP,UAAU;oBACV,cAAc;oBACd,aAAa;oBACb,QAAQ;iBACT;gBACD,OAAO,EAAE,qLAAqL;aAC/L;YACD;gBACE,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,UAAU;gBACrB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,cAAc;oBACd,WAAW;oBACX,SAAS;oBACT,UAAU;iBACX;gBACD,OAAO,EAAE,oLAAoL;aAC9L;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,sBAAsB;gBAC9B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,UAAU;gBACzB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,SAAS;oBACT,aAAa;oBACb,UAAU;oBACV,cAAc;iBACf;gBACD,OAAO,EAAE,mLAAmL;aAC7L;YACD;gBACE,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,UAAU;oBACV,aAAa;oBACb,cAAc;oBACd,aAAa;iBACd;gBACD,OAAO,EAAE,sLAAsL;aAChM;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,EAAE;iBACV;gBACD,OAAO,EAAE;oBACP,eAAe;oBACf,cAAc;oBACd,WAAW;oBACX,SAAS;iBACV;gBACD,OAAO,EAAE,oLAAoL;aAC9L;YACD;gBACE,SAAS,EAAE,aAAa;gBACxB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,cAAc;gBACzB,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,eAAe;oBACf,YAAY;oBACZ,UAAU;oBACV,SAAS;iBACV;gBACD,OAAO,EAAE,mLAAmL;aAC7L;YACD;gBACE,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,eAAe;gBAC1B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,WAAW;oBACX,YAAY;oBACZ,cAAc;oBACd,SAAS;iBACV;gBACD,OAAO,EAAE,0LAA0L;aACpM;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,uBAAuB;gBAC/B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,cAAc;gBACzB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,aAAa;oBACb,cAAc;oBACd,SAAS;oBACT,YAAY;iBACb;gBACD,OAAO,EAAE,mLAAmL;aAC7L;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,6BAA6B;gBACrC,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,gBAAgB;gBAC3B,aAAa,EAAE,gBAAgB;gBAC/B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,EAAE;iBACV;gBACD,OAAO,EAAE;oBACP,WAAW;oBACX,YAAY;oBACZ,SAAS;oBACT,cAAc;iBACf;gBACD,OAAO,EAAE,wLAAwL;aAClM;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,SAAS;oBACT,SAAS;oBACT,cAAc;iBACf;gBACD,OAAO,EAAE,qLAAqL;aAC/L;YACD;gBACE,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,cAAc;gBAC1B,MAAM,EAAE,4BAA4B;gBACpC,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,WAAW;gBACnB,SAAS,EAAE,aAAa;gBACxB,aAAa,EAAE,YAAY;gBAC3B,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,SAAS;oBACT,gBAAgB;oBAChB,WAAW;oBACX,WAAW;iBACZ;gBACD,OAAO,EAAE,+KAA+K;aACzL;YACD;gBACE,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,gBAAgB;gBACxB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,aAAa;oBACb,SAAS;oBACT,YAAY;oBACZ,eAAe;iBAChB;gBACD,OAAO,EAAE,2LAA2L;aACrM;YACD;gBACE,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,YAAY;gBACvB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,aAAa;oBACb,YAAY;oBACZ,kBAAkB;oBAClB,SAAS;iBACV;gBACD,OAAO,EAAE,iLAAiL;aAC3L;YACD;gBACE,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,WAAW;oBACX,cAAc;oBACd,UAAU;oBACV,YAAY;iBACb;gBACD,OAAO,EAAE,iLAAiL;aAC3L;YACD;gBACE,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,UAAU;gBACrB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,aAAa;oBACb,YAAY;oBACZ,cAAc;oBACd,QAAQ;iBACT;gBACD,OAAO,EAAE,qLAAqL;aAC/L;YACD;gBACE,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,eAAe;gBAC3B,MAAM,EAAE,uBAAuB;gBAC/B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,eAAe;gBAC1B,aAAa,EAAE,UAAU;gBACzB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,aAAa;oBACb,SAAS;oBACT,UAAU;iBACX;gBACD,OAAO,EAAE,uLAAuL;aACjM;YACD;gBACE,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,WAAW;gBACnB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,EAAE;iBACV;gBACD,OAAO,EAAE;oBACP,cAAc;oBACd,SAAS;oBACT,cAAc;oBACd,cAAc;iBACf;gBACD,OAAO,EAAE,wLAAwL;aAClM;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,kBAAkB;gBAC9B,MAAM,EAAE,iBAAiB;gBACzB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,gBAAgB;gBACxB,SAAS,EAAE,OAAO;gBAClB,aAAa,EAAE,SAAS;gBACxB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,WAAW;oBACX,SAAS;oBACT,cAAc;oBACd,eAAe;iBAChB;gBACD,OAAO,EAAE,kLAAkL;aAC5L;YACD;gBACE,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,GAAG;gBACZ,MAAM,EAAE,WAAW;gBACnB,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,EAAE;iBACV;gBACD,OAAO,EAAE;oBACP,SAAS;oBACT,OAAO;oBACP,UAAU;oBACV,UAAU;iBACX;gBACD,OAAO,EAAE,gLAAgL;aAC1L;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,GAAG;gBACZ,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,OAAO;gBAClB,aAAa,EAAE,UAAU;gBACzB,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,SAAS;oBACT,aAAa;oBACb,iBAAiB;oBACjB,YAAY;iBACb;gBACD,OAAO,EAAE,+KAA+K;aACzL;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,kBAAkB;gBAC1B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,aAAa;gBACxB,aAAa,EAAE,aAAa;gBAC5B,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,YAAY;oBACZ,WAAW;oBACX,SAAS;oBACT,UAAU;iBACX;gBACD,OAAO,EAAE,mLAAmL;aAC7L;YACD;gBACE,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE,4BAA4B;gBACpC,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,GAAG;gBACZ,MAAM,EAAE,eAAe;gBACvB,SAAS,EAAE,aAAa;gBACxB,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,aAAa;oBACb,cAAc;oBACd,SAAS;oBACT,WAAW;iBACZ;gBACD,OAAO,EAAE,qLAAqL;aAC/L;YACD;gBACE,SAAS,EAAE,WAAW;gBACtB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,GAAG;gBACZ,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG;oBACT,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,aAAa;oBACb,eAAe;oBACf,YAAY;oBACZ,SAAS;iBACV;gBACD,OAAO,EAAE,qLAAqL;aAC/L;YACD;gBACE,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,mBAAmB;gBAC3B,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,GAAG;gBACZ,MAAM,EAAE,YAAY;gBACpB,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE;oBACL,IAAI,EAAE,EAAE;oBACR,KAAK,EAAE,GAAG;oBACV,KAAK,EAAE,GAAG;iBACX;gBACD,OAAO,EAAE;oBACP,UAAU;oBACV,WAAW;oBACX,QAAQ;oBACR,SAAS;iBACV;gBACD,OAAO,EAAE,gLAAgL;aAC1L;SACF;KACF;CACF,CAAC"}
|
package/dist/threats.js
CHANGED
|
@@ -1,335 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Usage-derived meta threat list + standard sets for Pokémon Champions regulations.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* points, not authoritative usage data.
|
|
4
|
+
* Nothing in here is hand-authored. The threat list is generated from live
|
|
5
|
+
* competitive data by `scripts/build-threats.mjs`, which ranks the legal roster
|
|
6
|
+
* by measured usage, resolves each species' most-played set, and writes
|
|
7
|
+
* `src/threats.data.ts`:
|
|
9
8
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* * species, item, ability, nature and moves — Limitless VGC online
|
|
10
|
+
* tournaments (at least 25 players), aggregated per regulation
|
|
11
|
+
* * ranking and `usage` — share of the sampled teams carrying the species,
|
|
12
|
+
* summed across its forms because Species Clause is per National Pokédex
|
|
13
|
+
* number
|
|
14
|
+
* * EV spreads — the in-game ranked ladder
|
|
15
|
+
*
|
|
16
|
+
* To refresh a regulation: `node scripts/build-threats.mjs m-c`. See the
|
|
17
|
+
* generator for the derivation rules (tier bands, role labels, the EV
|
|
18
|
+
* conversion from Champions stat points).
|
|
15
19
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
tier: 'S',
|
|
21
|
-
item: 'Safety Goggles',
|
|
22
|
-
ability: 'Intimidate',
|
|
23
|
-
nature: 'Careful',
|
|
24
|
-
evs: { hp: 252, spd: 252, def: 4 },
|
|
25
|
-
moves: ['Fake Out', 'Flare Blitz', 'Knock Off', 'U-turn'],
|
|
26
|
-
teraType: 'Ghost',
|
|
27
|
-
notes: 'The format-defining support: Fake Out + Intimidate + slow U-turn. Ghost Tera dodges Fake Out and Fighting.',
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
species: 'Garchomp',
|
|
31
|
-
role: 'Mega sweeper / wallbreaker',
|
|
32
|
-
tier: 'S',
|
|
33
|
-
item: 'Garchompite',
|
|
34
|
-
ability: 'Rough Skin',
|
|
35
|
-
megaForm: 'Mega Garchomp',
|
|
36
|
-
megaAbility: 'Sand Force',
|
|
37
|
-
nature: 'Jolly',
|
|
38
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
39
|
-
moves: ['Swords Dance', 'Earthquake', 'Dragon Claw', 'Rock Slide'],
|
|
40
|
-
teraType: 'Steel',
|
|
41
|
-
notes: 'Premier Mega. Sand Force in sand, Swords Dance to break walls, Rock Slide for Flying coverage.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
species: 'Salamence',
|
|
45
|
-
role: 'Mega Dragon Dance sweeper',
|
|
46
|
-
tier: 'S',
|
|
47
|
-
item: 'Salamencite',
|
|
48
|
-
ability: 'Intimidate',
|
|
49
|
-
megaForm: 'Mega Salamence',
|
|
50
|
-
megaAbility: 'Aerilate',
|
|
51
|
-
nature: 'Adamant',
|
|
52
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
53
|
-
moves: ['Dragon Dance', 'Dual Wingbeat', 'Earthquake', 'Roost'],
|
|
54
|
-
teraType: 'Steel',
|
|
55
|
-
notes: 'Intimidate pre-Mega, Aerilate-boosted Flying STAB after. One Dragon Dance ends games.',
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
species: 'Kangaskhan',
|
|
59
|
-
role: 'Mega pressure',
|
|
60
|
-
tier: 'S',
|
|
61
|
-
item: 'Kangaskhanite',
|
|
62
|
-
ability: 'Scrappy',
|
|
63
|
-
megaForm: 'Mega Kangaskhan',
|
|
64
|
-
megaAbility: 'Parental Bond',
|
|
65
|
-
nature: 'Jolly',
|
|
66
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
67
|
-
moves: ['Fake Out', 'Body Slam', 'Sucker Punch', 'Crunch'],
|
|
68
|
-
teraType: 'Normal',
|
|
69
|
-
notes: 'Parental Bond double-hits everything; Fake Out + Sucker Punch chip is relentless.',
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
species: 'Gholdengo',
|
|
73
|
-
role: 'Good as Gold breaker',
|
|
74
|
-
tier: 'S',
|
|
75
|
-
item: 'Life Orb',
|
|
76
|
-
ability: 'Good as Gold',
|
|
77
|
-
nature: 'Timid',
|
|
78
|
-
evs: { spa: 252, spe: 252, hp: 4 },
|
|
79
|
-
moves: ['Nasty Plot', 'Make It Rain', 'Shadow Ball', 'Recover'],
|
|
80
|
-
teraType: 'Flying',
|
|
81
|
-
notes: 'Good as Gold blocks status and pivots around; Make It Rain is a nuke. Flying Tera flips its Ground weakness.',
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
species: 'Lucario',
|
|
85
|
-
role: 'Mega mixed sweeper',
|
|
86
|
-
tier: 'A',
|
|
87
|
-
item: 'Lucarionite',
|
|
88
|
-
ability: 'Justified',
|
|
89
|
-
megaForm: 'Mega Lucario',
|
|
90
|
-
megaAbility: 'Adaptability',
|
|
91
|
-
nature: 'Jolly',
|
|
92
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
93
|
-
moves: ['Swords Dance', 'Close Combat', 'Meteor Mash', 'Extreme Speed'],
|
|
94
|
-
teraType: 'Steel',
|
|
95
|
-
notes: 'Adaptability turns Close Combat into a delete button; Extreme Speed picks off weakened threats.',
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
species: 'Dragapult',
|
|
99
|
-
role: 'Fast pivot / special breaker',
|
|
100
|
-
tier: 'A',
|
|
101
|
-
item: 'Choice Specs',
|
|
102
|
-
ability: 'Infiltrator',
|
|
103
|
-
nature: 'Timid',
|
|
104
|
-
evs: { spa: 252, spe: 252, hp: 4 },
|
|
105
|
-
moves: ['Draco Meteor', 'Shadow Ball', 'U-turn', 'Thunderbolt'],
|
|
106
|
-
teraType: 'Ghost',
|
|
107
|
-
notes: 'Fastest relevant mon in the format; Infiltrator ignores screens/Substitute.',
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
species: 'Charizard',
|
|
111
|
-
role: 'Mega X sweeper',
|
|
112
|
-
tier: 'A',
|
|
113
|
-
item: 'Charizardite X',
|
|
114
|
-
ability: 'Blaze',
|
|
115
|
-
megaForm: 'Mega Charizard X',
|
|
116
|
-
megaAbility: 'Tough Claws',
|
|
117
|
-
nature: 'Adamant',
|
|
118
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
119
|
-
moves: ['Dragon Dance', 'Flare Blitz', 'Dragon Claw', 'Earthquake'],
|
|
120
|
-
teraType: 'Fire',
|
|
121
|
-
notes: 'Tough Claws + Dragon Dance makes Flare Blitz and Dragon Claw both stab-boosted nukes.',
|
|
122
|
-
},
|
|
123
|
-
{
|
|
124
|
-
species: 'Gengar',
|
|
125
|
-
role: 'Mega special breaker',
|
|
126
|
-
tier: 'A',
|
|
127
|
-
item: 'Gengarite',
|
|
128
|
-
ability: 'Cursed Body',
|
|
129
|
-
megaForm: 'Mega Gengar',
|
|
130
|
-
megaAbility: 'Shadow Tag',
|
|
131
|
-
nature: 'Timid',
|
|
132
|
-
evs: { spa: 252, spe: 252, hp: 4 },
|
|
133
|
-
moves: ['Nasty Plot', 'Shadow Ball', 'Sludge Bomb', 'Focus Blast'],
|
|
134
|
-
teraType: 'Ghost',
|
|
135
|
-
notes: 'Shadow Tag traps and removes a defensive piece; pairs with Perish Song.',
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
species: 'Scizor',
|
|
139
|
-
role: 'Mega priority + pivot',
|
|
140
|
-
tier: 'A',
|
|
141
|
-
item: 'Scizorite',
|
|
142
|
-
ability: 'Technician',
|
|
143
|
-
megaForm: 'Mega Scizor',
|
|
144
|
-
megaAbility: 'Technician',
|
|
145
|
-
nature: 'Adamant',
|
|
146
|
-
evs: { hp: 252, atk: 252, def: 4 },
|
|
147
|
-
moves: ['Swords Dance', 'Bullet Punch', 'U-turn', 'Close Combat'],
|
|
148
|
-
teraType: 'Steel',
|
|
149
|
-
notes: 'Technician Bullet Punch is the best priority in the format; U-turn keeps momentum.',
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
species: 'Metagross',
|
|
153
|
-
role: 'Mega bulky offense',
|
|
154
|
-
tier: 'A',
|
|
155
|
-
item: 'Metagrossite',
|
|
156
|
-
ability: 'Clear Body',
|
|
157
|
-
megaForm: 'Mega Metagross',
|
|
158
|
-
megaAbility: 'Tough Claws',
|
|
159
|
-
nature: 'Jolly',
|
|
160
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
161
|
-
moves: ['Meteor Mash', 'Zen Headbutt', 'Earthquake', 'Bullet Punch'],
|
|
162
|
-
teraType: 'Steel',
|
|
163
|
-
notes: 'Tough Claws buffs every attacking move; Bullet Punch for cleanup.',
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
species: 'Tyranitar',
|
|
167
|
-
role: 'Mega sand attacker',
|
|
168
|
-
tier: 'A',
|
|
169
|
-
item: 'Tyranitarite',
|
|
170
|
-
ability: 'Sand Stream',
|
|
171
|
-
megaForm: 'Mega Tyranitar',
|
|
172
|
-
megaAbility: 'Sand Stream',
|
|
173
|
-
nature: 'Adamant',
|
|
174
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
175
|
-
moves: ['Dragon Dance', 'Crunch', 'Earthquake', 'Stone Edge'],
|
|
176
|
-
teraType: 'Rock',
|
|
177
|
-
notes: 'Sets sand for the team and sweeps with Dragon Dance; also enables Sand Rush Excadrill.',
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
species: 'Gardevoir',
|
|
181
|
-
role: 'Mega special Fairy',
|
|
182
|
-
tier: 'A',
|
|
183
|
-
item: 'Gardevoirite',
|
|
184
|
-
ability: 'Trace',
|
|
185
|
-
megaForm: 'Mega Gardevoir',
|
|
186
|
-
megaAbility: 'Pixilate',
|
|
187
|
-
nature: 'Timid',
|
|
188
|
-
evs: { spa: 252, spe: 252, hp: 4 },
|
|
189
|
-
moves: ['Calm Mind', 'Moonblast', 'Psyshock', 'Mystical Fire'],
|
|
190
|
-
teraType: 'Fairy',
|
|
191
|
-
notes: 'Pixilate + Fairy STAB pressures Dark/Dragon; Calm Mind turns it into a win condition.',
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
species: 'Gyarados',
|
|
195
|
-
role: 'Mega Dragon Dance + Intimidate',
|
|
196
|
-
tier: 'A',
|
|
197
|
-
item: 'Gyaradosite',
|
|
198
|
-
ability: 'Intimidate',
|
|
199
|
-
megaForm: 'Mega Gyarados',
|
|
200
|
-
megaAbility: 'Mold Breaker',
|
|
201
|
-
nature: 'Jolly',
|
|
202
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
203
|
-
moves: ['Dragon Dance', 'Waterfall', 'Earthquake', 'Ice Fang'],
|
|
204
|
-
teraType: 'Flying',
|
|
205
|
-
notes: 'Intimidate support then Mold Breaker Waterfall ignores abilities like Levitate/Water Absorb.',
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
species: 'Blaziken',
|
|
209
|
-
role: 'Mega Speed Boost sweeper',
|
|
210
|
-
tier: 'A',
|
|
211
|
-
item: 'Blazikenite',
|
|
212
|
-
ability: 'Speed Boost',
|
|
213
|
-
megaForm: 'Mega Blaziken',
|
|
214
|
-
megaAbility: 'Speed Boost',
|
|
215
|
-
nature: 'Adamant',
|
|
216
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
217
|
-
moves: ['Protect', 'Swords Dance', 'Flare Blitz', 'Close Combat'],
|
|
218
|
-
teraType: 'Fire',
|
|
219
|
-
notes: 'Speed Boost snowballs; Protect farms a turn, Swords Dance makes it unstoppable.',
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
species: 'Mawile',
|
|
223
|
-
role: 'Mega Huge Power breaker',
|
|
224
|
-
tier: 'A',
|
|
225
|
-
item: 'Mawilite',
|
|
226
|
-
ability: 'Intimidate',
|
|
227
|
-
megaForm: 'Mega Mawile',
|
|
228
|
-
megaAbility: 'Huge Power',
|
|
229
|
-
nature: 'Adamant',
|
|
230
|
-
evs: { hp: 252, atk: 252, def: 4 },
|
|
231
|
-
moves: ['Swords Dance', 'Play Rough', 'Iron Head', 'Sucker Punch'],
|
|
232
|
-
teraType: 'Fairy',
|
|
233
|
-
notes: 'Huge Power + Swords Dance reaches absurd attack; Sucker Punch covers its low speed.',
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
species: 'Grimmsnarl',
|
|
237
|
-
role: 'Prankster screen setter',
|
|
238
|
-
tier: 'A',
|
|
239
|
-
item: 'Light Clay',
|
|
240
|
-
ability: 'Prankster',
|
|
241
|
-
nature: 'Careful',
|
|
242
|
-
evs: { hp: 252, spd: 252, def: 4 },
|
|
243
|
-
moves: ['Reflect', 'Light Screen', 'Spirit Break', 'Thunder Wave'],
|
|
244
|
-
teraType: 'Steel',
|
|
245
|
-
notes: 'Prankster dual screens enable every setup sweeper; Spirit Break drops the opponent\u2019s SpA.',
|
|
246
|
-
},
|
|
247
|
-
{
|
|
248
|
-
species: 'Swampert',
|
|
249
|
-
role: 'Mega Swift Swim (rain)',
|
|
250
|
-
tier: 'B',
|
|
251
|
-
item: 'Swampertite',
|
|
252
|
-
ability: 'Damp',
|
|
253
|
-
megaForm: 'Mega Swampert',
|
|
254
|
-
megaAbility: 'Swift Swim',
|
|
255
|
-
nature: 'Adamant',
|
|
256
|
-
evs: { atk: 252, spe: 252, hp: 4 },
|
|
257
|
-
moves: ['Waterfall', 'Earthquake', 'Ice Punch', 'Flip Turn'],
|
|
258
|
-
teraType: 'Water',
|
|
259
|
-
notes: 'Swift Swim under rain makes it the fastest rain breaker; Flip Turn pivots.',
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
species: 'Sceptile',
|
|
263
|
-
role: 'Mega special attacker',
|
|
264
|
-
tier: 'B',
|
|
265
|
-
item: 'Sceptilite',
|
|
266
|
-
ability: 'Overgrow',
|
|
267
|
-
megaForm: 'Mega Sceptile',
|
|
268
|
-
megaAbility: 'Lightning Rod',
|
|
269
|
-
nature: 'Timid',
|
|
270
|
-
evs: { spa: 252, spe: 252, hp: 4 },
|
|
271
|
-
moves: ['Leaf Storm', 'Giga Drain', 'Dragon Pulse', 'Focus Blast'],
|
|
272
|
-
teraType: 'Grass',
|
|
273
|
-
notes: 'Lightning Rod redirects Electric (great vs Rotom-Wash/Thunder) while it fires boosted Leaf Storm.',
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
species: 'Whimsicott',
|
|
277
|
-
role: 'Prankster speed control',
|
|
278
|
-
tier: 'B',
|
|
279
|
-
item: 'Focus Sash',
|
|
280
|
-
ability: 'Prankster',
|
|
281
|
-
nature: 'Timid',
|
|
282
|
-
evs: { hp: 252, spe: 252, def: 4 },
|
|
283
|
-
moves: ['Tailwind', 'Taunt', 'Encore', 'Moonblast'],
|
|
284
|
-
teraType: 'Fairy',
|
|
285
|
-
notes: 'Priority Tailwind + Taunt/Encore disruption; the format\u2019s best speed control.',
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
species: 'Pelipper',
|
|
289
|
-
role: 'Rain setter',
|
|
290
|
-
tier: 'B',
|
|
291
|
-
item: 'Damp Rock',
|
|
292
|
-
ability: 'Drizzle',
|
|
293
|
-
nature: 'Bold',
|
|
294
|
-
evs: { hp: 252, def: 252, spd: 4 },
|
|
295
|
-
moves: ['Scald', 'Hurricane', 'U-turn', 'Roost'],
|
|
296
|
-
teraType: 'Water',
|
|
297
|
-
notes: 'Drizzle powers Swift Swim (Mega Swampert) and 100%-accurate Hurricane; U-turn pivots.',
|
|
298
|
-
},
|
|
299
|
-
{
|
|
300
|
-
species: 'Rotom-Wash',
|
|
301
|
-
role: 'Bulky pivot',
|
|
302
|
-
tier: 'B',
|
|
303
|
-
item: 'Sitrus Berry',
|
|
304
|
-
ability: 'Levitate',
|
|
305
|
-
nature: 'Bold',
|
|
306
|
-
evs: { hp: 252, def: 252, spd: 4 },
|
|
307
|
-
moves: ['Volt Switch', 'Hydro Pump', 'Will-O-Wisp', 'Protect'],
|
|
308
|
-
teraType: 'Electric',
|
|
309
|
-
notes: 'Levitate + Will-O-Wisp walls physical attackers; Volt Switch keeps momentum.',
|
|
310
|
-
},
|
|
311
|
-
];
|
|
312
|
-
export const THREAT_LISTS = {
|
|
313
|
-
'm-c': {
|
|
314
|
-
regulation: 'm-c',
|
|
315
|
-
name: 'Regulation Set M-C',
|
|
316
|
-
source: 'curated',
|
|
317
|
-
sourceAsOf: '2026-09-14',
|
|
318
|
-
note: 'Curated editorial threat list, not usage-derived. Mega Evolution is the marquee mechanic; Legendary/Restricted Pokémon are banned.',
|
|
319
|
-
threats: THREATS_M_C,
|
|
320
|
-
},
|
|
321
|
-
};
|
|
20
|
+
import raw from './threats.data.js';
|
|
21
|
+
// `raw` is generated JSON: its literals widen `tier` to `string` and give every
|
|
22
|
+
// `evs` object its own optional-key shape, so neither overlaps the declared types.
|
|
23
|
+
export const THREAT_LISTS = raw;
|
|
322
24
|
export function getThreatList(regulation) {
|
|
323
|
-
const q = regulation.toLowerCase();
|
|
324
|
-
return Object.values(THREAT_LISTS).find((l) => l.regulation
|
|
25
|
+
const q = regulation.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
26
|
+
return Object.values(THREAT_LISTS).find((l) => [l.regulation, l.name].map((alias) => alias.toLowerCase().replace(/[^a-z0-9]/g, '')).includes(q));
|
|
325
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Look up one species' set, optionally scoped to a regulation. Matches the base
|
|
30
|
+
* species, the form it is played as, and its Mega form, so "Indeedee-F" and
|
|
31
|
+
* "Salamence-Mega" find the same entries as "Indeedee" and "Salamence".
|
|
32
|
+
*/
|
|
326
33
|
export function findThreat(species, regulation) {
|
|
327
|
-
const
|
|
328
|
-
const
|
|
34
|
+
const q = species.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
35
|
+
const lists = regulation
|
|
36
|
+
? [getThreatList(regulation)].filter(Boolean)
|
|
37
|
+
: Object.values(THREAT_LISTS);
|
|
329
38
|
for (const list of lists) {
|
|
330
|
-
const
|
|
331
|
-
|
|
332
|
-
|
|
39
|
+
const threat = list.threats.find((t) => [t.species, t.form, t.megaForm]
|
|
40
|
+
.map((alias) => alias?.toLowerCase().replace(/[^a-z0-9]/g, ''))
|
|
41
|
+
.includes(q));
|
|
42
|
+
if (threat)
|
|
43
|
+
return { list, threat };
|
|
333
44
|
}
|
|
334
45
|
return undefined;
|
|
335
46
|
}
|
package/dist/threats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threats.js","sourceRoot":"","sources":["../src/threats.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"threats.js","sourceRoot":"","sources":["../src/threats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,GAAG,MAAM,mBAAmB,CAAC;AAiFpC,gFAAgF;AAChF,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAA+B,GAA4C,CAAC;AAErG,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5C,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACjG,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,UAAmB;IAC7D,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAkB;QAC/D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;aAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;aAC9D,QAAQ,CAAC,CAAC,CAAC,CACf,CAAC;QACF,IAAI,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/tools/analyze.js
CHANGED
|
@@ -10,7 +10,7 @@ import { ok, wrap, requireExists, READ_ONLY_ANNOTATIONS } from '../result.js';
|
|
|
10
10
|
export function registerAnalyzeTools(server) {
|
|
11
11
|
server.registerTool('analyze_team', {
|
|
12
12
|
title: 'Analyze team synergy',
|
|
13
|
-
description: 'Analyze a whole team\u2019s type synergy: per-type weak, resist, and immune counts with the types at risk, super-effective coverage from STAB, Tera type and supplied moves, speed placement, and a transparent 0-100 heuristic score \u2014 a quick signal, not a metagame rating. Use `
|
|
13
|
+
description: 'Analyze a whole team\u2019s type synergy: per-type weak, resist, and immune counts with the types at risk, super-effective coverage from STAB, Tera type and supplied moves, speed placement, and a transparent 0-100 heuristic score \u2014 a quick signal, not a metagame rating. Use `get_type_matchup` or `get_type` for one matchup. Each entry is a `species` with optional `teraType` and `moves`; unknown moves are collected into `unknownMoves`, unknown species or Tera types error, and `regulation` (e.g. "m-c") adds legal threats that outspeed your fastest member. Read-only and offline over the bundled dataset.',
|
|
14
14
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
15
15
|
inputSchema: {
|
|
16
16
|
team: z
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE9E,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/calc.js
CHANGED
|
@@ -57,7 +57,7 @@ const setSchema = z.object({
|
|
|
57
57
|
moves: z
|
|
58
58
|
.array(z.string())
|
|
59
59
|
.optional()
|
|
60
|
-
.describe('Moveset names, e.g. ["Earthquake", "Dragon Claw"]; used by `
|
|
60
|
+
.describe('Moveset names, e.g. ["Earthquake", "Dragon Claw"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.'),
|
|
61
61
|
});
|
|
62
62
|
/** Flatten a calc damage value (number | number[] | number[][]) into a flat roll list. */
|
|
63
63
|
function flatDamage(d) {
|
|
@@ -96,7 +96,7 @@ const reportedEvs = z
|
|
|
96
96
|
/** `[minimum, maximum]` damage of a resolved move, across all of its rolls. */
|
|
97
97
|
const damageRangeSchema = z
|
|
98
98
|
.tuple([z.number(), z.number()])
|
|
99
|
-
.describe('[minimum, maximum] damage: `calculate_damage` totals every roll (multi-hit moves are summed), while `
|
|
99
|
+
.describe('[minimum, maximum] damage: `calculate_damage` totals every roll (multi-hit moves are summed), while `calculate_matchups` reports the flattened per-hit rolls, so its bounds stay single-hit values. [0, 0] means nothing could be calculated.');
|
|
100
100
|
/** One side of a damage calculation as the calc resolved it (see `summarizeSet` in dex.ts). */
|
|
101
101
|
const damageSetSchema = z.object({
|
|
102
102
|
species: z.string().describe('Canonical species name used in the calculation, e.g. "Garchomp".'),
|
|
@@ -117,7 +117,7 @@ const damageSetSchema = z.object({
|
|
|
117
117
|
export function registerCalcTools(server) {
|
|
118
118
|
server.registerTool('calculate_stats', {
|
|
119
119
|
title: 'Calculate final stats',
|
|
120
|
-
description: 'Compute one Pok\u00e9mon\u2019s final six stats at a level from its nature, IVs, and EVs, returning the stat table plus base stats and BST. Stats only, never a battle: use `calculate_damage` or `
|
|
120
|
+
description: 'Compute one Pok\u00e9mon\u2019s final six stats at a level from its nature, IVs, and EVs, returning the stat table plus base stats and BST. Stats only, never a battle: use `calculate_damage` or `calculate_matchups` for damage rolls, `check_speed` to place the Speed stat against a regulation roster, and `optimize_evs` when the spread must be derived from a goal. EVs are 0-252 per stat with a 510 total cap, IVs 0-31, level defaults to 50 and nature to Serious. Read-only and offline; unknown species or nature names return an isError.',
|
|
121
121
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
122
122
|
inputSchema: {
|
|
123
123
|
species: z.string().describe('Species or form name, e.g. "Garchomp", "Ogerpon-Wellspring".'),
|
|
@@ -177,7 +177,7 @@ export function registerCalcTools(server) {
|
|
|
177
177
|
}));
|
|
178
178
|
server.registerTool('calculate_damage', {
|
|
179
179
|
title: 'Calculate damage for one matchup',
|
|
180
|
-
description: 'Simulate one attack end to end: one attacker set, one defender set, one named move, optionally under weather, terrain, game type, or side conditions. Use `
|
|
180
|
+
description: 'Simulate one attack end to end: one attacker set, one defender set, one named move, optionally under weather, terrain, game type, or side conditions. Use `calculate_matchups` when one attacker must be tested against several defenders, and `calculate_stats` for stat tables with no battle. `field.weather` takes Sand/Sun/Rain/Hail/Snow and `field.terrain` Electric/Grassy/Psychic/Misty; `attackerSide`/`defenderSide` take calc flags (isReflect, isLightScreen, isAuroraVeil, spikes 0-3, isSR), and set levels default to 100 here. Species and move names are validated first, so typos return an isError. Returns every damage roll, damageRange, koChance text, a description line, and both sets\u2019 computed stats. Read-only and offline.',
|
|
181
181
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
182
182
|
inputSchema: {
|
|
183
183
|
attacker: setSchema.describe('The attacking Pok\u00e9mon: species plus optional level, nature, IVs, EVs, item, ability, boosts, status, Tera type, and current HP.'),
|
|
@@ -235,7 +235,7 @@ export function registerCalcTools(server) {
|
|
|
235
235
|
const result = damageResult(gen, args.attacker, args.defender, args.move, args.field ?? {});
|
|
236
236
|
return ok(result);
|
|
237
237
|
}));
|
|
238
|
-
server.registerTool('
|
|
238
|
+
server.registerTool('calculate_matchups', {
|
|
239
239
|
title: 'Batch damage matchups',
|
|
240
240
|
description: 'Run one attacker against 1-30 defenders in a single call, picking the hardest-hitting move per defender from `move` or `attacker.moves` and reporting each matchup\u2019s damage range, KO chance, immunity, and who moves first. Use `calculate_damage` for a single pinned matchup or when side screens and hazards matter (this tool\u2019s `field` has only gameType, weather, and terrain); use `analyze_team` for type-synergy, not damage. Supply `move` or a non-empty `attacker.moves`, else the call errors; defender levels default to 100. Read-only, offline, deterministic; unknown species or move names return an isError naming the offender.',
|
|
241
241
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
@@ -360,9 +360,9 @@ export function registerCalcTools(server) {
|
|
|
360
360
|
matchups,
|
|
361
361
|
});
|
|
362
362
|
}));
|
|
363
|
-
server.registerTool('
|
|
363
|
+
server.registerTool('check_speed', {
|
|
364
364
|
title: 'Check Speed against a regulation',
|
|
365
|
-
description: 'Compute one Pok\u00e9mon\u2019s final Speed and, given a Regulation Set, rank it against that roster at its fastest (252 EV, +Spe nature) and uninvested reference speeds. Speed only: for damage use `calculate_damage` or `
|
|
365
|
+
description: 'Compute one Pok\u00e9mon\u2019s final Speed and, given a Regulation Set, rank it against that roster at its fastest (252 EV, +Spe nature) and uninvested reference speeds. Speed only: for damage use `calculate_damage` or `calculate_matchups`, for a tier-wide ranking use `list_speed_tiers`, and to find the Speed EVs that beat a target use `optimize_evs`. Applies `boosts.spe` (-6..+6) and Choice Scarf \u00d71.5; other items are reported as Speed-neutral, and `regulation` is optional. Returns finalSpeed, modifiers, and outspeeds/conditional/losesTo counts with up to 15 threats each. Read-only and offline; unknown names return an isError.',
|
|
366
366
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
367
367
|
inputSchema: {
|
|
368
368
|
species: z.string().describe('Species or form name, e.g. "Dragapult", "Ogerpon-Wellspring".'),
|
|
@@ -520,7 +520,7 @@ export function registerCalcTools(server) {
|
|
|
520
520
|
}));
|
|
521
521
|
server.registerTool('optimize_evs', {
|
|
522
522
|
title: 'Optimize EVs for a goal',
|
|
523
|
-
description: 'Derive a minimal EV spread for one Pok\u00e9mon satisfying up to three goals: survive a named attack, outspeed a target Speed, and guarantee a KO in 1-4 hits. Use it when EVs must come from a goal \u2014 `calculate_stats` evaluates a spread you already have, `
|
|
523
|
+
description: 'Derive a minimal EV spread for one Pok\u00e9mon satisfying up to three goals: survive a named attack, outspeed a target Speed, and guarantee a KO in 1-4 hits. Use it when EVs must come from a goal \u2014 `calculate_stats` evaluates a spread you already have, `check_speed` ranks Speed without deriving EVs, and `get_set` returns a curated spread. Supplying none of survive/outspeed/kill errors; `outspeed` takes a set `target` or a raw `speed`, and leftover EVs fill `maximize` (default spe). Returns the spread, resulting stats, totalEVs/unusedEVs of the 508 usable, and a verification line per goal. Read-only and offline; an unreachable goal returns an isError.',
|
|
524
524
|
annotations: READ_ONLY_ANNOTATIONS,
|
|
525
525
|
inputSchema: {
|
|
526
526
|
species: z.string().describe('Species or form name to optimize, e.g. "Garchomp", "Incineroar".'),
|