Source code for antorum.packets.character_creation

from antorum.utils import BufferWriter, BufferReader
import logging
import enum

from antorum.packets.packet import NetworkPacket

packet_id = 49  # the creation is 48 but the response is 49


[docs] class CreationStatus(enum.Enum): SUCCESS = 0 INVALID_CLASS = 1 INVALID_STATS = 2 INVALID_BODY = 3 INVALID_NAME = 4 NAME_TAKEN = 5
[docs] class Packet(NetworkPacket): packet_id = 48 def __init__(self, name: str, crafting_skill: int, foraging_skill: int, combat_skill: int, ascetic_skill: int, stamina: int, strength: int, smarts: int, speed: int, hair: int, hair_color: int, facial_hair: int, facial_hair_color: int, skin_color: int, shirt: int, pants: int, bulk: int, height: int): self.name = name self.crafting_skill = crafting_skill self.foraging_skill = foraging_skill self.combat_skill = combat_skill self.ascetic_skill = ascetic_skill self.stamina = stamina self.strength = strength self.smarts = smarts self.speed = speed self.hair = hair self.hair_color = hair_color self.facial_hair = facial_hair self.facial_hair_color = facial_hair_color self.skin_color = skin_color self.shirt = shirt self.pants = pants self.bulk = bulk self.height = height
[docs] def serialize(self): writer = BufferWriter() writer.write_string(self.name) writer.write_int8(self.crafting_skill) writer.write_int8(self.foraging_skill) writer.write_int8(self.combat_skill) writer.write_int8(self.ascetic_skill) writer.write_int8(self.stamina) writer.write_int8(self.strength) writer.write_int8(self.smarts) writer.write_int8(self.speed) writer.write_int8(self.hair) writer.write_int8(self.hair_color) writer.write_int8(self.facial_hair) writer.write_int8(self.facial_hair_color) writer.write_int8(self.skin_color) writer.write_int8(self.shirt) writer.write_int8(self.pants) writer.write_int8(self.bulk) writer.write_int8(self.height) return bytes(writer)
[docs] class Response(NetworkPacket): packet_id = packet_id def __init__(self, data: bytes): reader = BufferReader(data) self.status = CreationStatus(reader.read_int8())
[docs] def handle(self, client: "multiplayer.Client"): if self.status == CreationStatus.SUCCESS: logging.info(f"Character created!") else: logging.error(f"Character creation failed: {self.status.name}")
receive_packet = Response