Skip to content

Instantly share code, notes, and snippets.

View FelixWolf's full-sized avatar
💭
https://youtu.be/NvVFHIr6T9Y

Kyler "Félix" Eastridge FelixWolf

💭
https://youtu.be/NvVFHIr6T9Y
View GitHub Profile
@FelixWolf
FelixWolf / sl_puppetry.md
Last active September 8, 2022 16:23
How to install, setup, and use the puppetry viewer and plugins

How to use LEAP on windows

Note on instructions

There are a lot of steps involved here, but that's because this is in-development. Once this is finalized, people will be developing stuff that is stand alone, without the need to install all this stuff.

Important pre-install steps

If you have python installed from the windows store, UNINSTALL IT! Windows store installs python in a virtual environment, which makes it not work

#!/usr/bin/env python3
from libfurc import fox5
LICENSE_FC_BY_SA = 0
LICENSE_FC0 = 1
LICENSE_FC_BY_NC_SA = 2
LICENSE_FC_ND_NC_SA = 3
LICENSE_FC_PRIVATE_SA = 4
LICENSE_FC_BY_X_SA = 5
LICENSE_DEP = 101
#!/usr/bin/env python3
import struct
import io
from libfurc import archive
def unpack(data):
data.seek(-10, 2)
if data.read(2) != b"FC":
print("Not a furcadia installer!")
exit(1)
@FelixWolf
FelixWolf / fox5.py
Last active June 20, 2022 10:10
Furcadia fox parser, zlib licensed
#!/usr/bin/env python3
try:
from PIL import Image, ImageDraw, ImageOps
except ModuleNotFoundError:
pass
import struct
import lzma
import io
sUInt64 = struct.Struct("<Q")
@FelixWolf
FelixWolf / shortname.py
Created June 16, 2022 22:53
Generate short names for furcadia
#!/usr/bin/env python3
import re
rEntities = re.compile(r"(?:&([#\w+]+);)")
entityList = {
'quot': '"', 'lt': '<', 'gt': '>', 'iexcl': '!', 'cent': '', 'pound': '',
'curren': '', 'yen': '', 'brvbar': '|', 'sect': '', 'uml': '', 'copy': '',
'ordf': '', 'laquo': '', 'not': '', 'shy': '', 'reg': '','macr': '',
'deg': '', 'plusmn': '', 'sup2': '', 'sup3': '', 'acute': '', 'micro': '',
'para': '', 'middot': '', 'cedil': '', 'sup1': '', 'ordm': '', 'raquo': '',
Element tags //Stuff in "<>"s
font
color
0 //255 //Color palette
#RRGGBB //RGB in hex format
Color name //Case insensitive:
RED //#ff0000
AQUA //#00ffff
BLUE //#0000ff
GRAY //#808080
@FelixWolf
FelixWolf / particletool.py
Last active May 27, 2022 03:31
Furcadia particle editor/converter tool
#!/usr/bin/env python3
import struct
import argparse
"""
Protocol format:
Base220(2) x
Base220(2) y
Base220(2) offsetX
Base220(2) offsetY
//Minimal skeleton data
list skeleton = [
//bone, parent, pos, scale, end offset
"mPelvis", -1, <0.000, 0.000, 1.067>, <1.000, 1.000, 1.000>, <0.000, 0.000, 0.084>,
"mSpine1", 0, <0.000, 0.000, 0.084>, <1.00, 1.00, 1.00>, <0.000, 0.000, -0.084>,
"mSpine2", 1, <0.000, 0.000, -0.084>, <1.00, 1.00, 1.00>, <0.000, 0.000, 0.084>,
"mTorso", 2, <0.000, 0.000, 0.084>, <1.000, 1.000, 1.000>, <-0.015, 0.000, 0.205>,
"mSpine3", 3, <-0.015, 0.000, 0.205>, <1.00, 1.00, 1.00>, <0.015, 0.000, -0.205>,
"mSpine4", 4, <0.015, 0.000, -0.205>, <1.00, 1.00, 1.00>, <-0.015, 0.000, 0.205>,
"mChest", 5, <-0.015, 0.000, 0.205>, <1.000, 1.000, 1.000>, <-0.010, 0.000, 0.250>,
@FelixWolf
FelixWolf / furcadia.struct
Last active December 29, 2021 04:00
Furcadia protocol structure
//This is NOT in C++ structs!
//This is using protocol structs which is used to define file and protocol
// structures
//"char[4] as Base220" means to read 4 bytes as char and cast it into Base220
//"(char[4] as Base220)[2]" means to read 4 bytes as char and cast it into
// Base220, and do it *twice*
//This is also a *light* scripting language, interpretters must understand how
// to interperate or compile conditionals.
@FelixWolf
FelixWolf / ds_compiler.py
Created December 23, 2021 21:24
totally not a dragonspeak compiler. (ZLib license or WTFPL license or CC0 or whatever, I don't care. Just no warranty. If it catches your house on fire, that's on you)
#!/usr/bin/env python3
import struct
import io
"""
* indicates comment, this is read until newline
{ indicates string literal start.
} indicates string literal end.
@ indicates raw integer variable number. (EG: @12)
% indicates integer variable. (EG: %fdsa)
~ indicates a string variable.