mirror of
https://github.com/bombsquad-community/plugin-manager.git
synced 2025-10-08 14:54:36 +00:00
[ci] auto-format
This commit is contained in:
parent
93ab4f7422
commit
f7ae806295
1 changed files with 212 additions and 205 deletions
|
|
@ -60,28 +60,29 @@ os.makedirs(CUSTOM_CHARACTERS, exist_ok=True)
|
|||
|
||||
|
||||
SPAZ_PRESET = {
|
||||
"color_mask" : "neoSpazColorMask",
|
||||
"color_texture" : "neoSpazColor",
|
||||
"head" : "neoSpazHead",
|
||||
"hand" : "neoSpazHand",
|
||||
"torso" : "neoSpazTorso",
|
||||
"pelvis" : "neoSpazTorso",
|
||||
"upper_arm" : "neoSpazUpperArm",
|
||||
"forearm" : "neoSpazForeArm",
|
||||
"upper_leg" : "neoSpazUpperLeg",
|
||||
"lower_leg" : "neoSpazLowerLeg",
|
||||
"toes_mesh" : "neoSpazToes",
|
||||
"jump_sounds" : ['spazJump01', 'spazJump02', 'spazJump03', 'spazJump04'],
|
||||
"attack_sounds" : ['spazAttack01', 'spazAttack02', 'spazAttack03', 'spazAttack04'],
|
||||
"impact_sounds" : ['spazImpact01', 'spazImpact02', 'spazImpact03', 'spazImpact04'],
|
||||
"death_sounds" : ['spazDeath01'],
|
||||
"pickup_sounds" : ['spazPickup01'],
|
||||
"fall_sounds" : ['spazFall01'],
|
||||
"icon_texture" : "neoSpazIcon",
|
||||
"color_mask": "neoSpazColorMask",
|
||||
"color_texture": "neoSpazColor",
|
||||
"head": "neoSpazHead",
|
||||
"hand": "neoSpazHand",
|
||||
"torso": "neoSpazTorso",
|
||||
"pelvis": "neoSpazTorso",
|
||||
"upper_arm": "neoSpazUpperArm",
|
||||
"forearm": "neoSpazForeArm",
|
||||
"upper_leg": "neoSpazUpperLeg",
|
||||
"lower_leg": "neoSpazLowerLeg",
|
||||
"toes_mesh": "neoSpazToes",
|
||||
"jump_sounds": ['spazJump01', 'spazJump02', 'spazJump03', 'spazJump04'],
|
||||
"attack_sounds": ['spazAttack01', 'spazAttack02', 'spazAttack03', 'spazAttack04'],
|
||||
"impact_sounds": ['spazImpact01', 'spazImpact02', 'spazImpact03', 'spazImpact04'],
|
||||
"death_sounds": ['spazDeath01'],
|
||||
"pickup_sounds": ['spazPickup01'],
|
||||
"fall_sounds": ['spazFall01'],
|
||||
"icon_texture": "neoSpazIcon",
|
||||
"icon_mask_texture": "neoSpazIconColorMask",
|
||||
"style" : "spaz"
|
||||
"style": "spaz"
|
||||
}
|
||||
|
||||
|
||||
class Player(bs.Player['Team']):
|
||||
"""Our player type for this game."""
|
||||
|
||||
|
|
@ -169,9 +170,9 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
|
||||
self._punch_image = Image(
|
||||
bs.gettexture('buttonPunch'),
|
||||
position=(345,200),
|
||||
scale=(50,50),
|
||||
color= (0.9,0.9,0,0.9)
|
||||
position=(345, 200),
|
||||
scale=(50, 50),
|
||||
color=(0.9, 0.9, 0, 0.9)
|
||||
)
|
||||
self._punch_text = Text(
|
||||
"Model+",
|
||||
|
|
@ -179,13 +180,13 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
shadow=0.5,
|
||||
flatness=0.5,
|
||||
color=(0.9, 0.9, 0, 0.9),
|
||||
position=(263,190))
|
||||
position=(263, 190))
|
||||
|
||||
self._grab_image = Image(
|
||||
bs.gettexture('buttonPickUp'),
|
||||
position=(385,240),
|
||||
scale=(50,50),
|
||||
color= (0,0.7,0.9)
|
||||
position=(385, 240),
|
||||
scale=(50, 50),
|
||||
color=(0, 0.7, 0.9)
|
||||
)
|
||||
self._grab_text = Text(
|
||||
"Component-",
|
||||
|
|
@ -193,13 +194,13 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
shadow=0.5,
|
||||
flatness=0.5,
|
||||
color=(0, 0.7, 1, 0.9),
|
||||
position=(340,265))
|
||||
position=(340, 265))
|
||||
|
||||
self._jump_image = Image(
|
||||
bs.gettexture('buttonJump'),
|
||||
position=(385,160),
|
||||
scale=(50,50),
|
||||
color= (0.2,0.9,0.2,0.9)
|
||||
position=(385, 160),
|
||||
scale=(50, 50),
|
||||
color=(0.2, 0.9, 0.2, 0.9)
|
||||
)
|
||||
self._jump_text = Text(
|
||||
"Component+",
|
||||
|
|
@ -207,13 +208,13 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
shadow=0.5,
|
||||
flatness=0.5,
|
||||
color=(0.2, 0.9, 0.2, 0.9),
|
||||
position=(340,113))
|
||||
position=(340, 113))
|
||||
|
||||
self._bomb_image = Image(
|
||||
bs.gettexture('buttonBomb'),
|
||||
position=(425,200),
|
||||
scale=(50,50),
|
||||
color= (0.9,0.2,0.2,0.9)
|
||||
position=(425, 200),
|
||||
scale=(50, 50),
|
||||
color=(0.9, 0.2, 0.2, 0.9)
|
||||
)
|
||||
self._bomb_text = Text(
|
||||
"Model-",
|
||||
|
|
@ -221,8 +222,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
shadow=0.5,
|
||||
flatness=0.5,
|
||||
color=(0.9, 0.2, 0.2, 0.9),
|
||||
position=(452,190))
|
||||
|
||||
position=(452, 190))
|
||||
|
||||
self._host = Text(
|
||||
"Originally created by \ue020HeySmoothy\nhttps://youtu.be/q0KxY1hfMPQ\nhttps://youtu.be/3l2dxWEhrzE\n\nModified for multiplayer by \ue047Nyaa! :3",
|
||||
|
|
@ -290,7 +290,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
super().on_begin()
|
||||
|
||||
def nextBodyPart(self, spaz):
|
||||
spaz.bodyindex = (spaz.bodyindex+1)%len(self.cache.keys())
|
||||
spaz.bodyindex = (spaz.bodyindex+1) % len(self.cache.keys())
|
||||
try:
|
||||
spaz.bodypart.delete()
|
||||
except AttributeError:
|
||||
|
|
@ -302,15 +302,15 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
attrs={
|
||||
'text': str(part),
|
||||
'in_world': True,
|
||||
'color':(1,1,1),
|
||||
'color': (1, 1, 1),
|
||||
'scale': 0.011,
|
||||
'shadow': 0.5,
|
||||
'flatness': 0.5,
|
||||
'h_align': 'center',})
|
||||
'h_align': 'center', })
|
||||
math = bs.newnode('math',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'input1': (0,1.7,0.5),
|
||||
'input1': (0, 1.7, 0.5),
|
||||
'operation': 'add',
|
||||
})
|
||||
spaz.node.connectattr('position', math, 'input2')
|
||||
|
|
@ -318,27 +318,27 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
bs.getsound('deek').play()
|
||||
|
||||
def prevBodyPart(self, spaz):
|
||||
spaz.bodyindex = (spaz.bodyindex-1)%len(self.cache.keys())
|
||||
spaz.bodyindex = (spaz.bodyindex-1) % len(self.cache.keys())
|
||||
try:
|
||||
spaz.bodypart.delete()
|
||||
except AttributeError:
|
||||
pass
|
||||
part=list(self.cache.keys())[spaz.bodyindex]
|
||||
spaz.bodypart=bs.newnode(
|
||||
part = list(self.cache.keys())[spaz.bodyindex]
|
||||
spaz.bodypart = bs.newnode(
|
||||
'text',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'text': str(part),
|
||||
'in_world': True,
|
||||
'color':(1,1,1),
|
||||
'color': (1, 1, 1),
|
||||
'scale': 0.011,
|
||||
'shadow': 0.5,
|
||||
'flatness': 0.5,
|
||||
'h_align': 'center',})
|
||||
'h_align': 'center', })
|
||||
math = bs.newnode('math',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'input1': (0,1.7,0.5),
|
||||
'input1': (0, 1.7, 0.5),
|
||||
'operation': 'add',
|
||||
})
|
||||
spaz.node.connectattr('position', math, 'input2')
|
||||
|
|
@ -351,7 +351,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
except AttributeError:
|
||||
pass
|
||||
part = list(self.cache.keys())[spaz.bodyindex]
|
||||
spaz.meshindex = (spaz.meshindex+1)%len(self.cache[part])
|
||||
spaz.meshindex = (spaz.meshindex+1) % len(self.cache[part])
|
||||
mesh = self.cache[part][spaz.meshindex]
|
||||
spaz.newmesh = bs.newnode(
|
||||
'text',
|
||||
|
|
@ -359,7 +359,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
attrs={
|
||||
'text': str(mesh),
|
||||
'in_world': True,
|
||||
'color':(1,1,1),
|
||||
'color': (1, 1, 1),
|
||||
'scale': 0.011,
|
||||
'shadow': 0.5,
|
||||
'flatness': 0.5,
|
||||
|
|
@ -368,17 +368,17 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
math = bs.newnode('math',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'input1': (0,-0.6,0.5),
|
||||
'input1': (0, -0.6, 0.5),
|
||||
'operation': 'add',
|
||||
})
|
||||
spaz.node.connectattr('position', math, 'input2')
|
||||
math.connectattr('output', spaz.newmesh, 'position')
|
||||
if part == "main_color":
|
||||
self.setColor(spaz,mesh)
|
||||
self.setColor(spaz, mesh)
|
||||
elif part == "highlight_color":
|
||||
self.setHighlight(spaz,mesh)
|
||||
self.setHighlight(spaz, mesh)
|
||||
else:
|
||||
self.setModel(spaz,part,mesh)
|
||||
self.setModel(spaz, part, mesh)
|
||||
bs.getsound('click01').play()
|
||||
|
||||
def prevModel(self, spaz):
|
||||
|
|
@ -387,7 +387,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
except AttributeError:
|
||||
pass
|
||||
part = list(self.cache.keys())[spaz.bodyindex]
|
||||
spaz.meshindex = (spaz.meshindex-1)%len(self.cache[part])
|
||||
spaz.meshindex = (spaz.meshindex-1) % len(self.cache[part])
|
||||
mesh = self.cache[part][spaz.meshindex]
|
||||
spaz.newmesh = bs.newnode(
|
||||
'text',
|
||||
|
|
@ -395,7 +395,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
attrs={
|
||||
'text': str(mesh),
|
||||
'in_world': True,
|
||||
'color':(1,1,1),
|
||||
'color': (1, 1, 1),
|
||||
'scale': 0.011,
|
||||
'shadow': 0.5,
|
||||
'flatness': 0.5,
|
||||
|
|
@ -404,17 +404,17 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
math = bs.newnode('math',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'input1': (0,-0.6,0.5),
|
||||
'input1': (0, -0.6, 0.5),
|
||||
'operation': 'add',
|
||||
})
|
||||
spaz.node.connectattr('position', math, 'input2')
|
||||
math.connectattr('output', spaz.newmesh, 'position')
|
||||
if part == "main_color":
|
||||
self.setColor(spaz,mesh)
|
||||
self.setColor(spaz, mesh)
|
||||
elif part == "highlight_color":
|
||||
self.setHighlight(spaz,mesh)
|
||||
self.setHighlight(spaz, mesh)
|
||||
else:
|
||||
self.setModel(spaz,part,mesh)
|
||||
self.setModel(spaz, part, mesh)
|
||||
bs.getsound('click01').play()
|
||||
|
||||
def setColor(self, spaz, color):
|
||||
|
|
@ -424,36 +424,36 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
spaz.node.highlight = highlight
|
||||
|
||||
def setModel(self, spaz, bodypart, meshname):
|
||||
if bodypart=='head':
|
||||
if bodypart == 'head':
|
||||
spaz.node.head_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='torso':
|
||||
elif bodypart == 'torso':
|
||||
spaz.node.torso_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='pelvis':
|
||||
elif bodypart == 'pelvis':
|
||||
spaz.node.pelvis_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='upper_arm':
|
||||
elif bodypart == 'upper_arm':
|
||||
spaz.node.upper_arm_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='forearm':
|
||||
elif bodypart == 'forearm':
|
||||
spaz.node.forearm_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='hand':
|
||||
elif bodypart == 'hand':
|
||||
spaz.node.hand_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='upper_leg':
|
||||
elif bodypart == 'upper_leg':
|
||||
spaz.node.upper_leg_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='lower_leg':
|
||||
elif bodypart == 'lower_leg':
|
||||
spaz.node.lower_leg_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='toes_mesh':
|
||||
elif bodypart == 'toes_mesh':
|
||||
spaz.node.toes_mesh = bs.getmesh(meshname)
|
||||
elif bodypart=='style':
|
||||
elif bodypart == 'style':
|
||||
spaz.node.style = meshname
|
||||
elif bodypart=='color_texture':
|
||||
elif bodypart == 'color_texture':
|
||||
spaz.node.color_texture = bs.gettexture(meshname)
|
||||
elif bodypart=='color_mask':
|
||||
elif bodypart == 'color_mask':
|
||||
spaz.node.color_mask_texture = bs.gettexture(meshname)
|
||||
|
||||
def spawn_player(self, player):
|
||||
spaz = self.spawn_player_spaz(player)
|
||||
spaz.bodyindex=0
|
||||
spaz.meshindex=0
|
||||
spaz.bodypart= bs.newnode(
|
||||
spaz.bodyindex = 0
|
||||
spaz.meshindex = 0
|
||||
spaz.bodypart = bs.newnode(
|
||||
'text',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
|
|
@ -468,7 +468,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
math = bs.newnode('math',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'input1': (0,1.7,0.5),
|
||||
'input1': (0, 1.7, 0.5),
|
||||
'operation': 'add',
|
||||
})
|
||||
spaz.node.connectattr('position', math, 'input2')
|
||||
|
|
@ -488,7 +488,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
math = bs.newnode('math',
|
||||
owner=spaz.node,
|
||||
attrs={
|
||||
'input1': (0,-0.6,0.5),
|
||||
'input1': (0, -0.6, 0.5),
|
||||
'operation': 'add',
|
||||
})
|
||||
spaz.node.connectattr('position', math, 'input2')
|
||||
|
|
@ -533,28 +533,29 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
|
||||
def initialize_meshs(self):
|
||||
self.cache = {
|
||||
"head" : ["bomb","landMine","wing","eyeLid","impactBomb"],
|
||||
"hand" : ["hairTuft3","bomb","powerup"],
|
||||
"torso" : ["bomb","landMine","bomb"],
|
||||
"pelvis" : ["hairTuft4","bomb"],
|
||||
"upper_arm" : ["wing","locator","bomb"],
|
||||
"forearm" : ["flagPole","bomb"],
|
||||
"upper_leg" : ["bomb"],
|
||||
"lower_leg" : ["bomb"],
|
||||
"toes_mesh" : ["bomb"],
|
||||
"style" : ["spaz","female","ninja","kronk","mel","pirate","santa","frosty","bones","bear","penguin","ali","cyborg","agent","pixie","bunny"],
|
||||
"color_texture": ["kronk","egg1","egg2","egg3","achievementGotTheMoves","bombColor","crossOut","explosion","rgbStripes","powerupCurse","powerupHealth","impactBombColorLit"],
|
||||
"color_mask" : ["egg1","egg2","egg3","bombColor","crossOutMask","fontExtras3"],
|
||||
"main_color" : [(0,0,0),(1,0,0),(0,1,0),(0,0,1),(1,1,0),(1,0,1),(0,1,1),(1,1,1)],
|
||||
"highlight_color" : [(0,0,0),(1,0,0),(0,1,0),(0,0,1),(1,1,0),(1,0,1),(0,1,1),(1,1,1)],
|
||||
"head": ["bomb", "landMine", "wing", "eyeLid", "impactBomb"],
|
||||
"hand": ["hairTuft3", "bomb", "powerup"],
|
||||
"torso": ["bomb", "landMine", "bomb"],
|
||||
"pelvis": ["hairTuft4", "bomb"],
|
||||
"upper_arm": ["wing", "locator", "bomb"],
|
||||
"forearm": ["flagPole", "bomb"],
|
||||
"upper_leg": ["bomb"],
|
||||
"lower_leg": ["bomb"],
|
||||
"toes_mesh": ["bomb"],
|
||||
"style": ["spaz", "female", "ninja", "kronk", "mel", "pirate", "santa", "frosty", "bones", "bear", "penguin", "ali", "cyborg", "agent", "pixie", "bunny"],
|
||||
"color_texture": ["kronk", "egg1", "egg2", "egg3", "achievementGotTheMoves", "bombColor", "crossOut", "explosion", "rgbStripes", "powerupCurse", "powerupHealth", "impactBombColorLit"],
|
||||
"color_mask": ["egg1", "egg2", "egg3", "bombColor", "crossOutMask", "fontExtras3"],
|
||||
"main_color": [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 1, 1)],
|
||||
"highlight_color": [(0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, 0, 1), (0, 1, 1), (1, 1, 1)],
|
||||
}
|
||||
chars = ["neoSpaz","zoe","ninja","kronk","mel","jack","santa","frosty","bones","bear","penguin","ali","cyborg","agent","wizard","pixie","bunny"]
|
||||
chars = ["neoSpaz", "zoe", "ninja", "kronk", "mel", "jack", "santa", "frosty",
|
||||
"bones", "bear", "penguin", "ali", "cyborg", "agent", "wizard", "pixie", "bunny"]
|
||||
|
||||
for char in chars:
|
||||
self.cache["head"].append(char + "Head")
|
||||
self.cache["hand"].append(char + "Hand")
|
||||
self.cache["torso"].append(char + "Torso")
|
||||
if char not in ['mel',"jack","santa"]:
|
||||
if char not in ['mel', "jack", "santa"]:
|
||||
self.cache["pelvis"].append(char + "Pelvis")
|
||||
self.cache["upper_arm"].append(char + "UpperArm")
|
||||
self.cache["forearm"].append(char + "ForeArm")
|
||||
|
|
@ -562,7 +563,7 @@ class CharacterBuilder(bs.TeamGameActivity[Player, Team]):
|
|||
self.cache["lower_leg"].append(char + "LowerLeg")
|
||||
self.cache["toes_mesh"].append(char + "Toes")
|
||||
self.cache["color_mask"].append(char + "ColorMask")
|
||||
if char !="kronk":
|
||||
if char != "kronk":
|
||||
self.cache["color_texture"].append(char + "Color")
|
||||
|
||||
|
||||
|
|
@ -661,7 +662,10 @@ def register_character_json(name, character):
|
|||
appearance.fall_sounds = character['fall_sounds']
|
||||
appearance.style = character['style']
|
||||
|
||||
|
||||
cm = bs.chatmessage
|
||||
|
||||
|
||||
def _new_chatmessage(msg: str | babase.Lstr, *args, **kwargs):
|
||||
activity = bs.get_foreground_host_activity()
|
||||
if not activity:
|
||||
|
|
@ -685,13 +689,13 @@ def _new_chatmessage(msg: str | babase.Lstr, *args, **kwargs):
|
|||
if success:
|
||||
bs.screenmessage(
|
||||
'Exported character "{}"'.format(character_name),
|
||||
color=(0,1,0)
|
||||
color=(0, 1, 0)
|
||||
)
|
||||
bui.getsound("gunCocking").play()
|
||||
else:
|
||||
bs.screenmessage(
|
||||
'Character "{}" already exists'.format(character_name),
|
||||
color=(1,0,0)
|
||||
color=(1, 0, 0)
|
||||
)
|
||||
bui.getsound("error").play()
|
||||
else:
|
||||
|
|
@ -702,13 +706,13 @@ def _new_chatmessage(msg: str | babase.Lstr, *args, **kwargs):
|
|||
if success:
|
||||
bs.screenmessage(
|
||||
'Imported character "{}"'.format(character_name),
|
||||
color=(0,1,0)
|
||||
color=(0, 1, 0)
|
||||
)
|
||||
bui.getsound("gunCocking").play()
|
||||
else:
|
||||
bs.screenmessage(
|
||||
'Character "{}" doesn\'t exist'.format(character_name),
|
||||
color=(1,0,0)
|
||||
color=(1, 0, 0)
|
||||
)
|
||||
bui.getsound("error").play()
|
||||
else:
|
||||
|
|
@ -724,12 +728,14 @@ def _new_chatmessage(msg: str | babase.Lstr, *args, **kwargs):
|
|||
spaz_str = ""
|
||||
for key, value in spaz_json.items():
|
||||
spaz_str += "{}: {}\n".format(key, value)
|
||||
bs.screenmessage(spaz_str, color=(1,1,1))
|
||||
bs.screenmessage(spaz_str, color=(1, 1, 1))
|
||||
|
||||
cm(msg, *args, **kwargs)
|
||||
|
||||
|
||||
bs.chatmessage = _new_chatmessage
|
||||
|
||||
|
||||
def get_player(msg, activity):
|
||||
client_id = -1
|
||||
words = msg.split(" ")
|
||||
|
|
@ -742,6 +748,8 @@ def get_player(msg, activity):
|
|||
return player
|
||||
|
||||
# ba_meta export plugin
|
||||
|
||||
|
||||
class bySmoothy(babase.Plugin):
|
||||
def __init__(self):
|
||||
bui.set_party_icon_always_visible(True)
|
||||
|
|
@ -755,4 +763,3 @@ class bySmoothy(babase.Plugin):
|
|||
with open(os.path.join(CUSTOM_CHARACTERS, character_file), "r") as fin:
|
||||
character = json.load(fin)
|
||||
register_character_json(name, character)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue