// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.net.client.msg.login; import engine.net.AbstractConnection; import engine.net.ByteBufferReader; import engine.net.ByteBufferWriter; import engine.net.client.Protocol; import engine.net.client.msg.ClientNetMsg; import engine.objects.Race; public class CommitNewCharacterMsg extends ClientNetMsg { private String firstName; private String lastName; private int serverID; private int hairStyle; private int beardStyle; private int skinColor; private int hairColor; private int beardColor; private int kit; private int numRunes; private int[] runes; private int numStats; private int strengthMod; private int dexterityMod; private int constitutionMod; private int intelligenceMod; private int spiritMod; /** * This is the general purpose constructor. */ public CommitNewCharacterMsg() { super(Protocol.CREATECHAR); runes = new int[23]; strengthMod = 0; dexterityMod = 0; constitutionMod = 0; intelligenceMod = 0; spiritMod = 0; } /** * This constructor is used by NetMsgFactory. It attempts to deserialize the * ByteBuffer into a message. If a BufferUnderflow occurs (based on reading * past the limit) then this constructor Throws that Exception to the * caller. */ public CommitNewCharacterMsg(AbstractConnection origin, ByteBufferReader reader) { super(Protocol.CREATECHAR, origin, reader); } /** * Serializes the subclass specific items to the supplied ByteBufferWriter. */ @Override protected void _serialize(ByteBufferWriter writer) { writer.putString(this.firstName); writer.putString(this.lastName); writer.putInt(this.serverID); writer.putInt(0); writer.putInt(this.hairStyle); writer.putInt(0); writer.putInt(this.beardStyle); writer.putInt(this.skinColor); writer.putInt(this.hairColor); writer.putInt(this.beardColor); writer.putInt(this.kit); for (int i = 0; i < 23; i++) { writer.putInt(0); writer.putInt(this.runes[i]); writer.putInt(0); writer.putInt(0); } writer.putInt(this.numStats); if (this.strengthMod != 0) { writer.putInt(0x8AC3C0E6); writer.putInt(this.strengthMod); } if (this.dexterityMod != 0) { writer.putInt(0xE07B3336); writer.putInt(this.dexterityMod); } if (this.constitutionMod != 0) { writer.putInt(0xB15DC77E); writer.putInt(this.constitutionMod); } if (this.intelligenceMod != 0) { writer.putInt(0xFF665EC3); writer.putInt(this.intelligenceMod); } if (this.spiritMod != 0) { writer.putInt(0xACB82E33); writer.putInt(this.spiritMod); } } /** * Deserializes the subclass specific items from the supplied ByteBufferReader. */ @Override protected void _deserialize(ByteBufferReader reader) { runes = new int[23]; runes = new int[23]; strengthMod = 0; dexterityMod = 0; constitutionMod = 0; intelligenceMod = 0; spiritMod = 0; this.firstName = reader.getString(); this.lastName = reader.getString(); this.serverID = reader.getInt(); reader.monitorInt(0, "CommitNewCharacter 01"); this.hairStyle = reader.getInt(); reader.monitorInt(0, "CommitNewCharacter 02"); this.beardStyle = reader.getInt(); this.skinColor = reader.getInt(); this.hairColor = reader.getInt(); this.beardColor = reader.getInt(); this.kit = reader.getInt(); this.clearRunes(); int runeCount = 0; for (int i = 0; i < 23; i++) { reader.monitorInt(0, "CommitNewCharacter 03-" + i); this.runes[i] = reader.getInt(); reader.monitorInt(0, "CommitNewCharacter 04-" + i); reader.monitorInt(0, "CommitNewCharacter 05-" + i); if (this.runes[i] != 0) runeCount++; } this.numRunes = runeCount; this.numStats = reader.getInt(); int stattype; for (int i = 0; i < this.numStats; i++) { stattype = reader.getInt(); if (stattype == 0x8AC3C0E6) this.strengthMod = reader.getInt(); else if (stattype == 0xE07B3336) this.dexterityMod = reader.getInt(); else if (stattype == 0xB15DC77E) this.constitutionMod = reader.getInt(); else if (stattype == 0xFF665EC3) this.intelligenceMod = reader.getInt(); else if (stattype == 0xACB82E33) this.spiritMod = reader.getInt(); } } public void clearRunes() { for (int i = 0; i < 23; i++) this.runes[i] = 0; } public int getRace() { for (int i = 0; i < 23; i++) if(Race.getRace(this.runes[i]) != null) return this.runes[i]; return 0; } public int getBaseClass() { for (int i = 0; i < 23; i++) if (this.runes[i] > 2499 && this.runes[i] < 2504) return this.runes[i]; return 0; } /** * @return the firstName */ public String getFirstName() { return firstName; } /** * @param firstName the firstName to set */ public void setFirstName(String firstName) { this.firstName = firstName; } /** * @return the lastName */ public String getLastName() { return lastName; } /** * @param lastName the lastName to set */ public void setLastName(String lastName) { this.lastName = lastName; } /** * @return the serverID */ public int getServerID() { return serverID; } /** * @param serverID the serverID to set */ public void setServerID(int serverID) { this.serverID = serverID; } /** * @return the hairStyle */ public int getHairStyle() { return hairStyle; } /** * @param hairStyle the hairStyle to set */ public void setHairStyle(int hairStyle) { this.hairStyle = hairStyle; } /** * @return the beardStyle */ public int getBeardStyle() { return beardStyle; } /** * @param beardStyle the beardStyle to set */ public void setBeardStyle(int beardStyle) { this.beardStyle = beardStyle; } /** * @return the skinColor */ public int getSkinColor() { return skinColor; } /** * @param skinColor the skinColor to set */ public void setSkinColor(int skinColor) { this.skinColor = skinColor; } /** * @return the hairColor */ public int getHairColor() { return hairColor; } /** * @param hairColor the hairColor to set */ public void setHairColor(int hairColor) { this.hairColor = hairColor; } /** * @return the beardColor */ public int getBeardColor() { return beardColor; } /** * @param beardColor the beardColor to set */ public void setBeardColor(int beardColor) { this.beardColor = beardColor; } /** * @return the kit */ public int getKit() { return kit; } /** * @param kit the kit to set */ public void setKit(int kit) { this.kit = kit; } /** * @return the runeCount */ public int getNumRunes() { return numRunes; } /** * @param numRunes the runeCount to set */ public void setNumRunes(int numRunes) { this.numRunes = numRunes; } /** * @return the runes */ public int[] getRunes() { return runes; } /** * @param runes the runes to set */ public void setRunes(int[] runes) { this.runes = runes; } /** * @return the numStats */ public int getNumStats() { return numStats; } /** * @param numStats the numStats to set */ public void setNumStats(int numStats) { this.numStats = numStats; } /** * @return the strengthMod */ public int getStrengthMod() { return strengthMod; } /** * @param strengthMod the strengthMod to set */ public void setStrengthMod(int strengthMod) { this.strengthMod = strengthMod; } /** * @return the dexterityMod */ public int getDexterityMod() { return dexterityMod; } /** * @param dexterityMod the dexterityMod to set */ public void setDexterityMod(int dexterityMod) { this.dexterityMod = dexterityMod; } /** * @return the constitutionMod */ public int getConstitutionMod() { return constitutionMod; } /** * @param constitutionMod the constitutionMod to set */ public void setConstitutionMod(int constitutionMod) { this.constitutionMod = constitutionMod; } /** * @return the intelligenceMod */ public int getIntelligenceMod() { return intelligenceMod; } /** * @param intelligenceMod the intelligenceMod to set */ public void setIntelligenceMod(int intelligenceMod) { this.intelligenceMod = intelligenceMod; } /** * @return the spiritMod */ public int getSpiritMod() { return spiritMod; } /** * @param spiritMod the spiritMod to set */ public void setSpiritMod(int spiritMod) { this.spiritMod = spiritMod; } }