Skip to content

Instantly share code, notes, and snippets.

View mbutler's full-sized avatar
🇦🇶
Exploring

Matthew Butler mbutler

🇦🇶
Exploring
View GitHub Profile
@mbutler
mbutler / dracula.md
Last active February 28, 2025 20:59
Fury of Dracula 2nd ed.

🦇 Fury of Dracula Cheat Sheet

📌 Turn Order (p.1)

  1. Dracula's Turn
    • Timekeeping: Advance the Day/Night track (p.1).
    • Movement: Play a Location or Power card (p.3).
    • Action Phase:
      • If Dracula is in a city with a HunterCombat begins (p.4).
      • Otherwise, place an Encounter on the new location (p.3).
  • Mature Encounters (p.5).
@mbutler
mbutler / scoundrel.py
Created February 23, 2025 00:17
debug the solitaire game Scoundrel to prove how hard if not impossible it is
import random
def simulate_scoundrel(debug=False):
deck = []
for value in range(2, 11):
deck.append((value, 'monster'))
deck.append((value, 'monster'))
deck.append((value, 'weapon'))
deck.append((value, 'potion'))
for value in [11, 12, 13, 14]:
@mbutler
mbutler / character_template.md
Last active February 24, 2025 06:56
Log scale for game measurements

Below are three simple templates for Normal Human, Pro Athlete, Elite Human, and Superhuman, using the recalibrated Layer 0 foundational attributes from your system. Each template lists the levels, corresponding numerical values, and point totals. The Normal Human is our baseline from the previous step (19 points). The Pro Athlete builds on that with 2-3 attributes boosted to professional athlete levels (mid-to-high human range). The Elite Human pushes 1-2 attributes to the maximum human potential (Level 10). The Superhuman exceeds human limits, entering comic book territory with higher levels across the board.


1. Normal Human

  • Description: An average adult, as established earlier, with ~18-20 points.
  • Total Points: 19
Attribute Level Value Points
@mbutler
mbutler / orbs.js
Last active February 17, 2025 18:59
Attack and Cast Sequence Game
const iterations = 1000000 // number of simulated sequences. 1000000 is the right number
const sequenceLength = 7 // number of turns in each sequence
const orbCapacity = 7 // maximum number of orbs that can be held for each effect type
// types of orbs that can be produced or consumed
const effectTypes = [
'Piercing',
'Slashing',
'Crushing',
'Cleaving',
'Force',
@mbutler
mbutler / retro-prompt.txt
Last active February 13, 2025 21:36
Retro Illustration Prompt
I will give you the style of illustration and then the subject of the illustration. You will render it exactly as described.
Style: A hand-painted, mid-century modern gouache illustration with a rich, textured, and organic feel. The painting is created with thick, visible brush strokes, rough dry-brush textures, and slight pigment irregularities, giving it an expressive, hand-rendered appearance. Colors are applied in flat, bold shapes with no smooth gradients, but each color block shows natural imperfections, such as subtle streaks, slight tonal shifts, and uneven paint absorption, mimicking traditional gouache or dry watercolor techniques.
Edges are not perfectly crisp, but rather show organic hand-painted roughness, slight bristle marks, and areas where paint overlaps or pools. Surfaces retain a painterly depth, with visible layering, mild color bleeding, and paper texture subtly showing through in lighter areas.
For portraits: The skin is depicted with flat, warm hues, but with expressive brushwork, la
@mbutler
mbutler / life-token-game.md
Created February 12, 2025 05:44
Life Tokens

Table of Contents

Preface

  1. Introduction
    1.1. Welcome & Overview
    1.2. The Philosophy of Life Paths
    1.3. How to Use This Book
    1.4. Conventions, Icons, and Symbols
    1.5. Quick-Start Guide to Your First Build
@mbutler
mbutler / phoenix-command-equation.md
Last active February 10, 2025 17:21
Use an equation to figure out chance to hit in Phoenix Command

Hit Chance Equation

This is the complete and elegant mathematical equation that models the entire shooting system of Phoenix Commandwithout the need for lookup tables:

Hit Chance Equation

Hit Chance =
  (B_max - k * log(2R)) +
  (10 * sqrt(Skill Level)) -
  (5 * sqrt(S_shooter)) -
  (10 * log2(S_target + 1)) +
 (30 * (1 - e^(-0.5 * T))) -
@mbutler
mbutler / character-portrait-prompt.txt
Created February 9, 2025 20:04
My character portrait prompt
An illustration featuring bold linework, halftone shading, and a limited but vibrant color palette with strong primary colors. The illustration has dramatic inking with thick outlines and expressive cross-hatching for depth. The background is slightly grainy, mimicking the texture of old printed comic books. The lighting is high-contrast with strong highlights and deep shadows, reminiscent of artists like Jack Kirby, John Buscema, and Jim Aparo. The overall aesthetic evokes the classic pulp adventure, sci-fi, or superhero stories from the Bronze Age of Comics.
The subject of the illustration is a character portrait. The character is:
@mbutler
mbutler / zalvek.html
Last active February 9, 2025 16:21
Zalvek the Cipher, a portable character with a body and spirt, the public and the private
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cryptographic Character: Signed Versioning</title>
<style>
/* Basic styling */
body {
font-family: sans-serif;
margin: 20px;
@mbutler
mbutler / 4e-style
Created February 3, 2025 19:23
4e style
\columnbreak
<style>
/*---------------*/
/*--Title font --*/
@font-face{
font-family:'Vecna';
src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAHWEABIAAAAA9dAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABlAAAABwAAAAcg0+1IEdERUYAAAGwAAAAKAAAACoBOAHtR1BPUwAAAdgAAAFkAAAB6LbAytlHU1VCAAADPAAAACAAAAAgbJF0j09TLzIAAANcAAAAVQAAAGB282WGY21hcAAAA7QAAAGBAAAB2i9Jb0ZjdnQgAAAFOAAAADQAAAA0CQANJGZwZ20AAAVsAAABsQAAAmVTtC+nZ2FzcAAAByAAAAAIAAAACAAAABBnbHlmAAAHKAAAZl0AAOD0yI3GlGhlYWQAAG2IAAAANQAAADYUdboVaGhlYQAAbcAAAAAeAAAAJA8gB69obXR4AABt4AAAAc4AAAOYb6j/PmxvY2EAAG+wAAABwQAAAc529j5MbWF4cAAAcXQAAAAfAAAAIAICAxluYW1lAABxlAAAAW0AAAL8IRRzu3Bvc3QAAHMEAAAB2QAAAray+1dNcHJlcAAAdOAAAAChAAAA6NnGOmAAAAABAAAAANXtRbgAAAAA0D13dwAAAADdJPfweNpjYGRgYOABYiUgZmJgBuI6BkaGeoZGIKuJ4SmQzQKWYQAANU0DJnjaJZE9S0MxGEZP/LxIsfVCFZd2Koo4VBCRlg4OVas4aLXalouIVfADh6KLk6izk/U36A/oL9HhjqKLiyC1axOf1uGQN3lO8oYEA4yQYBZzfnB5gceAVnCObmLOjurdNf5nyvp6o4cxDz0zyjRr7FHnhidCWiZilk3NnJpLc23uZS7aHTL2kazIqa7YX6rOJ7CvhPadfmKdH/zOJymXYEj+hPym/Df5E/KahJ3VrmcP