UNPKG

@haelp/teto

Version:

A typescript-based controllable TETR.IO client.

594 lines 19.8 kB
import { type BagType, Engine, type KickTable } from "../engine"; export declare namespace Game { /** Handling config interface (test on TETR.IO for limits) */ interface Handling { arr: number; das: number; dcd: number; sdf: number; safelock: boolean; cancel: boolean; may20g: boolean; irs: "off" | "hold" | "tap"; ihs: "off" | "hold" | "tap"; } /** Game config preset */ type Preset = "default" | "tetra league" | "tetra league (season 1)" | "enforced delays" | "4wide" | "100 battle royale" | "classic" | "arcade" | "bombs" | "quickplay"; /** Way the garbage enters the board. `continuous` and `delayed` not yet supported */ type GarbageEntry = "instant" | "continuous" | "delayed"; /** When garbage enters the board. only `combo blocking` is currently supported */ type GarbageBlocking = "combo blocking" | "limited blocking" | "none"; /** Garbage target bonus not yet supported. Used in royale mode */ type GarbageTargetBonus = "offensive" | "defensive" | "none"; /** Only `zero` passthrough supported */ type Passthrough = "zero" | "limited" | "consistent" | "full"; /** Only `T-spins` supported */ type SpinBonuses = "T-spins" | "T-spins+" | "all" | "all+" | "all-mini" | "all-mini+" | "mini-only" | "handheld" | "stupid" | "none"; /** Whether decimal garbage is rounded down or weighted RNG rounding */ type RoundingMode = "down" | "rng"; /** Only `multiplier` is currently supported */ type ComboTable = "none" | "multiplier" | "classic guideline" | "modern guideline"; /** Only `versus` supported. Client will run in `practice` but undoing is not yet implemented. */ type GameMode = "versus" | "royale" | "practice"; /** Topout: Player tops themself out. Garbage smash: Player received garbage that causes them to top out. Winner: Player wins (does not die) */ type GameOverReason = "topout" | "garbagesmash" | "winner"; interface Options { version: number; seed_random: boolean; seed: number; g: number; stock: number; countdown: boolean; countdown_count: number; countdown_interval: number; precountdown: number; prestart: number; mission: string; mission_type: string; zoominto: string; slot_counter1: string; slot_counter2: string; slot_counter3: string; slot_counter5: string; slot_bar1: string; display_fire: boolean; display_username: boolean; hasgarbage: boolean; bgmnoreset: boolean; neverstopbgm: boolean; display_next: boolean; display_hold: boolean; infinite_hold: boolean; gmargin: number; gincrease: number; garbagemultiplier: number; garbagemargin: number; garbageincrease: number; garbagecap: number; garbagecapincrease: number; garbagecapmargin: number; garbagecapmax: number; garbageabsolutecap: boolean; garbageholesize: number; garbagephase: number; garbagequeue: boolean; garbageare: number; garbageentry: GarbageEntry; garbageblocking: GarbageBlocking; garbagetargetbonus: GarbageTargetBonus; garbagespecialbonus: boolean; presets: Preset; bagtype: BagType; spinbonuses: SpinBonuses; combotable: ComboTable; kickset: KickTable; nextcount: number; allow_harddrop: boolean; display_shadow: boolean; locktime: number; garbagespeed: number; forfeit_time: number; are: number; lineclear_are: number; infinitemovement: boolean; lockresets: number; allow180: boolean; objective: { type: string; }; room_handling: boolean; room_handling_arr: number; room_handling_das: number; room_handling_sdf: number; manual_allowed: boolean; b2bchaining: boolean; allclears: boolean; clutch: boolean; nolockout: boolean; passthrough: Passthrough; can_undo: boolean; can_retry: boolean; retryisclear: boolean; noextrawidth: boolean; stride: boolean; boardwidth: number; boardheight: number; new_payback: boolean; messiness_change: number; messiness_inner: number; messiness_nosame: boolean; messiness_timeout: number; } interface ReadyOptions { version: number; seed: number; seed_random: boolean; are: number; lineclear_are: number; g: number; gincrease: number; gmargin: number; gravitymay20g: boolean; shielded: boolean; hasgarbage: boolean; usebombs: boolean; garbagespeed: number; garbagefavor: number; garbagemultiplier: number; receivemultiplier: number; garbagemargin: number; garbageincrease: number; garbageholesize: number; garbagephase: number; garbagequeue: boolean; garbageentry: GarbageEntry; garbageare: number; garbagecap: number; garbagecapincrease: number; garbagecapmargin: number; garbagecapmax: number; garbageabsolutecap: number; garbageattackcap: number; garbagetargetbonus: GarbageTargetBonus; garbageblocking: GarbageBlocking; garbagespecialbonus: boolean; passthrough: Passthrough; openerphase: number; roundmode: RoundingMode; spinbonuses: SpinBonuses; combotable: ComboTable; kickset: KickTable; bagtype: BagType; messiness_change: number; messiness_inner: number; messiness_center?: boolean; messiness_nosame: boolean; messiness_timeout: number; b2bchaining: boolean; b2bcharging: boolean; b2bextras: boolean; b2bcharge_at: number; b2bcharge_base: number; allclears: boolean; allclear_garbage: number; allclear_b2b: number; allclear_b2b_sends: boolean; allclear_b2b_dupes: boolean; allclear_charges: boolean; allow_harddrop: boolean; allow180: boolean; infinite_hold: boolean; infinite_movement: boolean; nextcount: number; clutch: boolean; no_szo: boolean; nolockout: boolean; manual_allowed: boolean; new_payback: boolean; can_undo: boolean; boardwidth: number; boardheight: number; boardbuffer: number; stock: number; infinite_stock: boolean; locktime: number; lockresets: number; prestart: number; precountdown: number; countdown: boolean; countdown_count: number; countdown_interval: number; inverted: boolean; mission: string; mission_type: string; no_mission_sound: boolean; objective_type: string; objective_count: number; objective_time: number; objective_result: string; zoominto: string; noextrawidth: boolean; stride: boolean; pro: boolean; pro_alert: boolean; pro_retry: boolean; can_retry: boolean; slot_counter1: string; slot_counter2: string; slot_counter3: string; slot_counter4: string; slot_counter5: string; slot_bar1: string; slot_bar2: string; absolute_lines: boolean; display_zen: boolean; display_username: boolean; display_fire: boolean; display_replay: boolean; display_next: boolean; display_hold: boolean; display_shadow: boolean; levels: boolean; masterlevels: boolean; startinglevel: number; levelspeed: number; levelstatic: boolean; levelstaticspeed: number; levelgbase: number; levelgspeed: number; minoskin: { z: string; l: string; o: string; s: string; i: string; j: string; t: string; other: string; ghost: string; }; boardskin: string; map: string; handling: Handling; room_handling: boolean; room_handling_arr: number; room_handling_das: number; room_handling_sdf: number; noreplay: boolean; nosound: boolean; bgmnoreset: boolean; neverstopbgm: boolean; song: string; survivalmode: string; survival_messiness: number; survival_layer_amt: number; survival_layer_non: boolean; survival_layer_min: number; survival_timer_itv: number; survival_cap: number; usezenconfig: boolean; zenlevels: boolean; zenlevel: number; zenprogress: number; nosiren: boolean; anchorseed: boolean; forfeit_time: number; username: string; latencymode: string; fulloffset: number; fullinterval: number; fromretry: boolean; retryisclear: boolean; topoutisclear: boolean; zenith: boolean; zenith_expert: boolean; zenith_doublehole: boolean; zenith_volatile: boolean; zenith_gravity: boolean; zenith_messy: boolean; zenith_invisible: boolean; zenith_allspin: boolean; zenith_duo: boolean; zenith_mods: any[]; zenith_ally: any[]; zenith_allyexpert: boolean; TEMP_zenith_rng: boolean; TEMP_zenith_grace: string; } interface Ready { players: { gameid: number; userid: string; options: ReadyOptions; alive: boolean; naturalorder: number; }[]; isNew: boolean; } namespace IGEs { type all = Target | AllowTargeting | Interaction | KEV; interface Target { type: "target"; data: { targets: number[]; }; } interface AllowTargeting { type: "allow_targeting"; data: { value: boolean; }; } namespace Interactions { type all = Garbage | Targeted; interface Garbage { type: "garbage"; frame: number; gameid: number; iid: number; cid: number; ackiid: number; amt: number; x: number; y: number; size: number; zthalt?: any; } interface Targeted { type: "targeted"; value: boolean; } } interface Interaction { type: "interaction" | "interaction_confirm"; data: Interactions.all; } interface KEV { type: "kev"; data: { victim: { gameid: number; }; killer: { gameid: number; }; fire: number; }; } } interface IGEBase { id: number; frame: number; } type IGE = IGEBase & IGEs.all; interface Leaderboard { id: string; username: string; active: boolean; naturalorder: number; shadows: any[]; shadowedBy: (null | any)[]; wins: number; stats: { apm: number | null; pps: number | null; vsscore: number | null; garbagesent: number; garbagereceived: number; kills: number; altitude: number; rank: number; targetingfactor: number; targetinggrace: number; btb: number; revives: number; escapeartist: number; blockrationing_app: number; blockrationing_final: number; }; } type Key = "moveLeft" | "moveRight" | "rotateCW" | "rotateCCW" | "rotate180" | "softDrop" | "hardDrop" | "hold"; namespace Replay { namespace Frames { type all = Start | Full | IGE | Keypress | End | Strategy | ManualTarget; interface Start { type: "start"; data: {}; } interface Full { type: "full"; data: { game: { board: BoardSquare[][]; bag: Mino[]; hold: { piece: null | Mino; locked: boolean; }; g: number; controlling: { lShift: { held: boolean; arr: number; das: number; dir: -1; }; rShift: { held: boolean; arr: number; das: number; dir: 1; }; lastshift: 1 | -1; inputSoftdrop: boolean; }; falling: { type: Mino; x: number; y: number; r: number; hy: number; irs: number; kick: number; keys: number; flags: number; safelock: number; locking: number; lockresets: number; rotresets: number; skip: number[]; }; handling: Handling; playing: boolean; }; stats: { lines: number; level_lines: number; level_lines_needed: number; inputs: number; holds: number; score: number; zenlevel: number; zenprogress: number; level: number; combo: number; topcombo: number; combopower: number; btb: number; topbtb: number; btbpower: number; tspins: number; piecesplaced: number; clears: { singles: number; doubles: number; triples: number; quads: number; pentas: number; realtspins: number; minitspins: number; minitspinsingles: number; tspinsingles: number; minitspindoubles: number; tspindoubles: number; minitspintriples: number; tspintriples: number; minitspinquads: number; tspinquads: number; tspinpentas: number; allclear: number; }; garbage: { sent: number; sent_nomult: number; maxspike: number; maxspike_nomult: number; received: number; attack: number; cleared: number; }; kills: number; finesse: { combo: number; faults: number; perfectpieces: number; }; zenith: { altitude: number; rank: number; peakrank: number; avgrankpts: number; floor: number; targetingfactor: number; targetinggrace: number; totalbonus: number; revives: number; revivesTotal: number; revivesMaxOfBoth: number; speedrun: boolean; speedrun_seen: boolean; splits: number[]; }; }; diyusi: number; }; } interface IGE { type: "ige"; data: IGEs.all; } interface Keypress { type: "keydown" | "keyup"; data: { key: Key; subframe: number; hoisted?: boolean; }; } interface End { type: "end"; data: any; } interface Strategy { type: "strategy"; /** Even, Eliminations, Random, and Payback (0, 1, 2, 3) */ data: 0 | 1 | 2 | 3; } interface ManualTarget { type: "manual_target"; data: number; } } type Frame = Frames.all & { frame: number; }; } type Mino = "s" | "z" | "j" | "l" | "i" | "t" | "o"; type BoardSquare = Mino | "gb" | null; namespace Client { type Event = Garbage | Frameset; /** @deprecated */ type Events = Event; interface Frameset { type: "frameset"; provisioned: number; frames: Game.Replay.Frame[]; } interface Garbage { type: "garbage"; frame: number; amount: number; size: number; column: number; } } type Target = { strategy: "even" | "elims" | "random" | "payback"; } | { strategy: "manual"; target: number; }; namespace Tick { interface In { gameid: number; frame: number; events: Client.Events[]; engine: Engine; } interface Keypress { type: "keydown" | "keyup"; frame: number; data: { key: Key; /** The 1-digit decimal part of the frame (`.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9`) */ subframe: number; }; } interface Out { keys?: Keypress[]; runAfter?: (() => void)[]; } type Func = (data: In) => Promise<Out> | Out; } } //# sourceMappingURL=game.d.ts.map