Skip to content

Instantly share code, notes, and snippets.

View PatrickJS's full-sized avatar
💻
codex coding

PatrickJS PatrickJS

💻
codex coding
View GitHub Profile
@ThatMapleDev
ThatMapleDev / pseudocode.md
Created February 23, 2026 18:20
Player Physics

Physics Pseudocode — All Functions, All Paths (Audit-Verified)

Companion to physics_engine.md

Important

All paths cross-verified against raw IDA decompilation on 2026-02-16. DoJump path ordering was corrected (originally had ladder/foothold swapped). HandleGroundedMovement and ClampToBounds were added (previously missing).


@ThatMapleDev
ThatMapleDev / Reverse Engineer.md
Created February 1, 2026 13:18
Maplestory Player Controller

MapleStory v40 Physics - Fresh Reverse Engineering Analysis

Date: 2026-01-29 (Updated: 2026-02-01)
Method: Direct IDA analysis without existing documentation
Implementation: SpookyStory V2 (MaplePlayerController, MaplePhysicsEngine, MapleConstants)


Implementation Status Legend

@ThatMapleDev
ThatMapleDev / Archer.md
Last active July 14, 2026 08:14
Archer Damage

Archer Combat Mechanics (MapleStory v40b)

SpookStory Server Implementation Guide

This document provides comprehensive documentation of the Archer combat system, covering damage formulas, the 7-random heartbeat RNG model, Final Attack mechanics, Mortal Blow, and the RNG recovery system. All formulas and logic are IDA-verified against the v40 client binary.


Table of Contents

Magic Damage Formula - v40 Reverse Engineering

Overview

This document contains the 100% IDA-verified magic damage formula for MapleStory v40, reverse engineered from sub_515307 (CalcMagicDamagePerHit).


Formula

@t3dotgg
t3dotgg / try-catch.ts
Last active July 14, 2026 20:54
Theo's preferred way of handling try/catch in TypeScript
// Types for the result object with discriminated union
type Success<T> = {
data: T;
error: null;
};
type Failure<E> = {
data: null;
error: E;
};
@lambrospetrou
lambrospetrou / deploy-ssh.sh
Created September 6, 2024 07:06
Simple deployment on a VPS, Hetzner, EC2 with zero downtime. Uses Caddy and systemd.
#!/usr/bin/env bash
# Inspired from:
# - https://blog.wesleyac.com/posts/simple-deploy-script
# - https://gist.github.com/WesleyAC/b3aaa0292579158ad566c140415c875d
# - https://caddyserver.com/docs/running#using-the-service
set -e
# cd $(dirname $0)
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width"/>
</head>
<body style="height: 300vh">
<svg style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);"
width="655" height="209" viewBox="0 0 655 209" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M653 207V62C653 28.8629 626.228 2 593.091 2C519.318 2 391.639 2 292.675 2C270.583 2 252.717 19.9124 252.717 42.0038C252.717 63.5378 252.717 81.7221 252.717 81.7221C252.717 81.7221 252.717 81.7221 252.717 81.7221V167C252.717 189.091 234.808 207 212.717 207H2"
stroke="#EAECF0" stroke-width="4" stroke-linecap="round"/>
import fs from "fs";
import path from "path";
import { pathToFileURL, fileURLToPath } from "url";
import { builtinModules } from "module";
import { init, parse } from "es-module-lexer";
import { moduleResolve } from "import-meta-resolve";
/**
* @param {string} specifier
* @returns {boolean}
import { z } from "zod";
import { zodToTs, printNode } from "zod-to-ts";
// Replace with your `openai` thing
import { openai } from "../openai.server";
import endent from "endent";
function createJSONCompletion<T extends z.ZodType>({
prompt,
schema_name,
export const h=(t,p,...c)=>({t,p,c,k:p&&p.key})
export const render=(e,d,t=d.t||(d.t={}),p,r,c,m,y)=>
// arrays
e.map?e.map((e,p)=>render(e,d,t.o&&t.o[p])):
// components
e.t.call?(e.i=render((render.c=e).t(Object.assign({children:e.c},e.p),e.s=t.s||{},t=>
render(Object.assign(e.s,t)&&e,d,e)),t.i||d,t&&t.i||{}),d.t=t=e):(
// create notes
m=t.d||(e.t?document.createElement(e.t):new Text(e.p)),
// diff props