Public Repository for the Magicbane Emulator Project Called BattleBane
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

429 lines
10 KiB

// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
// 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;
}
}