Skip to content

Instantly share code, notes, and snippets.

View PatrickJS's full-sized avatar
💻
codex coding

PatrickJS PatrickJS

💻
codex coding
View GitHub Profile

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

@PatrickJS
PatrickJS / Archer.md
Created July 14, 2026 08:14 — forked from ThatMapleDev/Archer.md
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

@PatrickJS
PatrickJS / Reverse Engineer.md
Created July 14, 2026 08:14 — forked from ThatMapleDev/Reverse Engineer.md
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

@PatrickJS
PatrickJS / pseudocode.md
Created July 14, 2026 08:14 — forked from ThatMapleDev/pseudocode.md
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).


@PatrickJS
PatrickJS / SKILL.md
Created June 26, 2026 19:45 — forked from fofr/SKILL.md
An agent skill for writing in the GOV.UK style
name govuk-style
description Write and edit in GOV.UK / GDS house style — plain English, active voice, front-loaded content, sentence case, and no bold or italics for emphasis. Use when writing or editing reports, research write-ups, guidance, documentation, summaries, or any prose where clarity and accessibility matter.
user-invokable true
args
name description required
target
The document or text to write or rewrite in GOV.UK style (optional)
false
@PatrickJS
PatrickJS / try-catch.ts
Created February 24, 2025 18:17 — forked from t3dotgg/try-catch.ts
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;
};
@PatrickJS
PatrickJS / deploy-ssh.sh
Created October 29, 2024 13:18 — forked from lambrospetrou/deploy-ssh.sh
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)
@PatrickJS
PatrickJS / html-languages.txt
Created October 22, 2024 16:36 — forked from JamieMason/html-languages.txt
HTML lang attribute / ISO language code reference / Culture names
CULTURE SPEC.CULTURE ENGLISH NAME
--------------------------------------------------------------
Invariant Language (Invariant Country)
af af-ZA Afrikaans
af-ZA af-ZA Afrikaans (South Africa)
ar ar-SA Arabic
ar-AE ar-AE Arabic (U.A.E.)
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
@PatrickJS
PatrickJS / variousCountryListFormats.js
Created September 23, 2024 00:28 — forked from incredimike/variousCountryListFormats.js
List of Countries in various Javascript data structures: Alphabetical country lists & Country data objects.
// Lists of countries with ISO 3166 codes, presented in various formats.
// Last Updated: July 30, 2020
// If you're using PHP, I suggest checking out:
// https://github.com/thephpleague/iso3166
// or Laravel: https://github.com/squirephp/squire
//
// JS developers can check out:
// https://www.npmjs.com/package/iso3166-2-db
//
@PatrickJS
PatrickJS / method-missing-proxy.js
Created March 11, 2024 01:59 — forked from torgeir/method-missing-proxy.js
es6 proxies method missing example
/*
What happens?
- `new Type().what` is looked up with a call to `get` on the proxy
- a function is returned that will look up `METHOD_NAME` when called
- `METHOD_NAME` is called because of the `()` behind `new Type().what`
- if `METHOD_NAME` exists on you object, your own function is called
- if not, because of prototypal inheritance, `get` is called again
- `name` is now `METHOD_NAME` and we can throw as we know `METHOD_NAME` is not implemented on the type
credits http://soft.vub.ac.be/~tvcutsem/proxies/