Skip to content

Instantly share code, notes, and snippets.

@fulcrum6378
Last active February 2, 2024 07:37
Show Gist options
  • Save fulcrum6378/ea825813b8a98f1abe2fe7094a52ca0b to your computer and use it in GitHub Desktop.
Save fulcrum6378/ea825813b8a98f1abe2fe7094a52ca0b to your computer and use it in GitHub Desktop.
Validates body characteristics of crushes in Sexbook so that no property remains empty.
import json
STAT_GENDER = 0x07
STAT_FICTION = 0x08
STAT_NOTIFY_BIRTH = 0x10
STAT_INACTIVE = 0x80
BODY_SKIN_COLOUR = 0x00000007, 0, 'skin_colour'
BODY_HAIR_COLOUR = 0x00000007 << 3, 3, 'hair_colour'
BODY_EYE_COLOUR = 0x00000007 << 6, 6, 'eye_colour'
BODY_EYE_SHAPE = 0x00000003 << 9, 9, 'eye_shape'
BODY_FACE_SHAPE = 0x00000007 << 11, 11, 'face_shape'
BODY_FAT = 0x00000003 << 14, 14, 'fat'
BODY_MUSCLE = 0x00000003 << 16, 16, 'muscle'
BODY_BREASTS = 0x00000003 << 18, 18, 'breasts'
# BODY_PENIS = 0x00000003 << 20, 20, 'penis'
# BODY_SEXUALITY = 0x00000007 << 22, 22, 'sexuality'
sexbook: dict = json.loads(open('sexbook.json', 'r', encoding='utf-8').read())
inc = 0
for crush in sexbook['crushes']:
gender = crush['status'] & STAT_GENDER
faults = []
skin_colour, hair_colour, eye_colour = 0, 0, 0
eye_shape, face_shape = 0, 0
fat, muscle = 0, 0
breasts, penis, sexuality = 0, 0, 0
if 'body' in crush:
skin_colour = (crush['body'] & BODY_SKIN_COLOUR[0]) >> BODY_SKIN_COLOUR[1]
hair_colour = (crush['body'] & BODY_HAIR_COLOUR[0]) >> BODY_HAIR_COLOUR[1]
eye_colour = (crush['body'] & BODY_EYE_COLOUR[0]) >> BODY_EYE_COLOUR[1]
eye_shape = (crush['body'] & BODY_EYE_SHAPE[0]) >> BODY_EYE_SHAPE[1]
face_shape = (crush['body'] & BODY_FACE_SHAPE[0]) >> BODY_FACE_SHAPE[1]
fat = (crush['body'] & BODY_FAT[0]) >> BODY_FAT[1]
muscle = (crush['body'] & BODY_MUSCLE[0]) >> BODY_MUSCLE[1]
if gender == 1 or gender == 3:
breasts = (crush['body'] & BODY_BREASTS[0]) >> BODY_BREASTS[1]
# if gender == 2 or gender == 3:
# penis = (crush['body'] & BODY_PENIS[0]) >> BODY_PENIS[1]
# sexuality = (crush['body'] & BODY_SEXUALITY[0]) >> BODY_SEXUALITY[1]
else:
inc += 1
print('{0: <35}'.format(str(inc) + '. ' + crush['key'] + ':'), 'ALL')
continue
if skin_colour == 0: faults.append(BODY_SKIN_COLOUR[2])
if hair_colour == 0: faults.append(BODY_HAIR_COLOUR[2])
if eye_colour == 0: faults.append(BODY_EYE_COLOUR[2])
if eye_shape == 0: faults.append(BODY_EYE_SHAPE[2])
if face_shape == 0: faults.append(BODY_FACE_SHAPE[2])
if fat == 0: faults.append(BODY_FAT[2])
if muscle == 0: faults.append(BODY_MUSCLE[2])
if (gender == 1 or gender == 3) and breasts == 0: faults.append(BODY_BREASTS[2])
# if (gender == 2 or gender == 3) and penis == 0: faults.append(BODY_PENIS[2])
# if sexuality == 0: faults.append(BODY_SEXUALITY[2])
if len(faults) != 0:
inc += 1
print('{0: <35}'.format(str(inc) + '. ' + crush['key'] + ':'), faults)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment