Since tumblr refuses to upload the image to the correct size in the ask, here it is in all it’s glory.
This was a little too much fun to make.
I’m on page 385… working backwards…..
WHEN DID YOU LEARN TO QUEUE THINGS, BROTHER?
ARE YOU JUST IGNORING ME?
Got the file-writing bit done. Now I gotta—no, penis, later! Down boy!

Now I’ve got to do some thumbnails after I get back from the gym.
You test my patience, dear.
Good night~!
Here’s what I’ve got so far.
The Loader
def load(filename):
ini_file = configparser.ConfigParser({'x':0, 'y':0, 'a':0})
if not ini_file.read(filename): return
try: name = ini_file.get('header', 'name')
except (NoSectionError, NoOptionError): name = filename
_FRAME_REPOSITORY[name] = ini_file
The Setter
def set(repo_name, num_str): if repo_name not in _FRAME_REPOSITORY: return rf = _FRAME_REPOSITORY[repo_name] self.clear() hb = 1 while True: sect = num_str + '.' + str(hb) if not rf.has_section(sect): break hb += 1 bpy.ops.object.add() box = bpy.context.active_object box.parent = self.origin box.select = False box.worldPosition = self.origin.worldPosition box.worldOrientation = self.origin.worldOrientation box.applyMovement((rf.getfloat(sect, 'x'), rf.getfloat(sect, 'y'), 0), True) box.applyRotation((rf.getfloat(sect, 'a'), 0, 0), True) try: pass #box.dimensions[1] = rf.getfloat(sect, 'w') #box.dimensions[2] = rf.getfloat(sect, 'h') except NoOptionError: pass
Yeah; I mix tabs and spaces in multi-line statements. Wanna fight about it?
What’s Left
- I’ve got to write a little something to allow for dimensions to be set: I’ll probably just hack the scale of the hitbox by leaving the depth at 1 (since this is for a 2D fighter) and using it as the base for multiplication or division or whatever the hell I gotta do to get the relative scale.
- Set the rest of the hitbox-properties
- load via os for multiplatform functionality
- asd;fkldasfj;asogfhagfohaewrewragfr3eojirgfaefiroirgafert4kji



It’s beddy-bye time, bitches. I am out this piece.
Got it!
I have to use applyMovement(), with the argument local set to True.
Baby Black Box, Revisited
Man, this feels so good. I’ve been thinking that it was impossible to make and control logic bricks from within Python for a while, but now I’ve got it figured out:
def spawn(self): bpy.ops.object.add() bpy.ops.logic.sensor_add() bpy.ops.logic.controller_add(type="PYTHON") bpy.ops.logic.actuator_add() self.origin = bpy.context.active_object c = self.origin.game.controllers['Python'] c.mode = 'MODULE' c.module = '' c.link(self.origin.game.sensors['Always'], self.origin.game.actuators['Motion'])
This is what I’ve changed since my previous post on the matter, hence the title. Since logic bricks exist within an object-bound namespace, I can run this little number as many times as I want. The shortcut, ‘c’, is just to keep inline with the Official Python Style Guide without having a mass of multi-line statements; also, I figured it’d be slightly faster than having the system run through self, origin, game, then search an index of controllers.
Hey
Steve is still here. Cool!
Who was that other guy, then?
Whatever. Fuck ‘im.
See Ya, Bro!
A sharp mind’s soft touch
A towel and a back door
A free man, named Steve

