Added support for actor property changed. Removed a lot of hard coded packets. Added a bunch of Support Desk packets.

This commit is contained in:
Filip Maj 2015-12-04 02:00:05 -05:00
parent c8d6326ecd
commit 1f7c876461
33 changed files with 783 additions and 754 deletions

View file

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class BattleSave
{
public float potencial;
public int skillLevel;
public int skillLevelCap;
public int[] skillPoint;
public int physicalExp;
public bool[] negotiationFlag= new bool[2];
}
}

View file

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class BattleTemp
{
//These are known property IDs
public const uint NAMEPLATE_SHOWN = 0xFBFBCFB1;
public const uint TARGETABLE = 0x2138FD71;
public const uint STAT_STRENGTH = 0x647A29A8;
public const uint STAT_VITALITY = 0x939E884A;
public const uint STAT_DEXTERITY = 0x416571AC;
public const uint STAT_INTELLIGENCE = 0x2DFBC13A;
public const uint STAT_MIND = 0x0E704141;
public const uint STAT_PIETY = 0x6CCAF8B3;
public const uint STAT_ACCURACY = 0x91CD44E7;
public const uint STAT_EVASION = 0x11B1B22D;
public const uint STAT_ATTACK = 0xBA51C4E1;
public const uint STAT_DEFENSE = 0x8CAE90DB;
public const uint STAT_ATTACK_MAGIC_POTENCY = 0x1F3DACC5;
public const uint STAT_HEALING_MAGIC_POTENCY = 0xA329599A;
public const uint STAT_ENCHANCEMENT_MAGIC_POTENCY = 0xBA51C4E1;
public const uint STAT_ENFEEBLING_MAGIC_POTENCY = 0xEB90BAAB;
public const uint STAT_MAGIC_ACCURACY = 0xD57DC284;
public const uint STAT_MAGIC_EVASION = 0x17AB37EF;
public const uint RESISTANCE_FIRE = 0x79C7ECFF;
public const uint RESISTANCE_ICE = 0xE17D8C7A;
public const uint RESISTANCE_WIND = 0x204CF942;
public const uint RESISTANCE_LIGHTNING = 0x1C2AEC73;
public const uint RESISTANCE_EARTH = 0x5FC56D16;
public const uint RESISTANCE_WATER = 0x64803E98;
//End of properties
public int[] castGauge_speed = new int[2];
public bool[] timingCommandFlag = new bool[4];
public ushort[] generalParameter = new ushort[32];
}
}

View file

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class CharaWork
{
public ParameterSave parameterSave = new ParameterSave();
public ParameterTemp parameterTemp = new ParameterTemp();
public BattleSave battleSave = new BattleSave();
public BattleTemp battleTemp = new BattleTemp();
public EventSave eventSave = new EventSave();
public EventTemp eventTemp = new EventTemp();
public byte[] property = new byte[32];
public uint[] statusShownTime = new uint[20];
public int[] command = new int[64];
public int[] commandCategory = new int[64];
public int commandBorder = 0x20;
public bool commandAcquired = false;
public bool[] additionalCommandAcquired = new bool[1];
public uint depictionJudge = 0xa0f50911;
}
}

View file

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class EventSave
{
public bool bazaar;
public float bazaarTax;
public int repairType;
}
}

View file

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class EventTemp
{
public bool bazaarRetail = false;
public bool bazaarRepair = false;
public bool bazaarMateria = false;
public ushort[] linshellIcon = new ushort[4];
}
}

View file

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class ParameterSave
{
public int[] hp = new int[1];
public int[] hpMax = new int[1];
public int mp;
public int mpMax;
public int[] state_mainSkill = new int[4];
public int state_mainSkillLevel;
public int[] state_boostPointForSkill;
public int[] commandSlot_compatibility;
public int[] commandSlot_recastTime;
public int[] giftCommandSlot_commandId;
}
}

View file

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class ParameterTemp
{
public int tp = 0;
public int targetInformation = 0;
public int[] maxCommandRecastTime = new int[40];
public float[] forceControl_float_forClientSelf = new float[4];
public short[] forceControl_int16_forClientSelf = new short[2];
public int[] otherClassAbilityCount = new int[2];
public int[] giftCount = new int[2];
}
}

View file

@ -0,0 +1,70 @@
using FFXIVClassic_Lobby_Server;
using FFXIVClassic_Lobby_Server.common;
using FFXIVClassic_Lobby_Server.dataobjects;
using FFXIVClassic_Map_Server.dataobjects.database;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class PlayerActor : Actor
{
public PlayerActor(uint actorID) : base(actorID)
{
DBStats stats = Database.getCharacterStats(actorID);
charaWork.property[0] = 1;
charaWork.property[1] = 1;
charaWork.property[2] = 1;
charaWork.property[4] = 1;
charaWork.parameterSave.hp[0] = stats.hp;
charaWork.parameterSave.hpMax[0] = stats.hpMax;
charaWork.parameterSave.mp = stats.mp;
charaWork.parameterSave.mpMax = stats.mpMax;
charaWork.parameterSave.state_mainSkill[0] = 3;
charaWork.parameterSave.state_mainSkillLevel = 1;
charaWork.battleSave.skillLevel = 1;
charaWork.battleSave.skillLevelCap = 2;
charaWork.battleSave.potencial = 0.5f;
charaWork.battleSave.physicalExp = 1;
charaWork.battleSave.negotiationFlag[0] = false;
charaWork.battleSave.negotiationFlag[1] = false;
for (int i = 0; i < 20; i++)
charaWork.statusShownTime[i] = 0xFFFFFFFF;
setPlayerAppearance();
}
public void setPlayerAppearance()
{
DBAppearance appearance = Database.getAppearance(actorID);
modelID = DBAppearance.getTribeModel(appearance.tribe);
appearanceIDs[SIZE] = appearance.size;
appearanceIDs[COLORINFO] = (uint)(appearance.skinColor | (appearance.hairColor << 10) | (appearance.eyeColor << 20));
appearanceIDs[FACEINFO] = PrimitiveConversion.ToUInt32(appearance.getFaceInfo());
appearanceIDs[HIGHLIGHT_HAIR] = (uint)(appearance.hairHighlightColor | appearance.hairStyle << 10);
appearanceIDs[VOICE] = appearance.voice;
appearanceIDs[WEAPON1] = appearance.mainHand;
appearanceIDs[WEAPON2] = appearance.offHand;
appearanceIDs[HEADGEAR] = appearance.head;
appearanceIDs[BODYGEAR] = appearance.body;
appearanceIDs[LEGSGEAR] = appearance.legs;
appearanceIDs[HANDSGEAR] = appearance.hands;
appearanceIDs[FEETGEAR] = appearance.feet;
appearanceIDs[WAISTGEAR] = appearance.waist;
appearanceIDs[R_EAR] = appearance.rightEar;
appearanceIDs[L_EAR] = appearance.leftEar;
appearanceIDs[R_FINGER] = appearance.rightFinger;
appearanceIDs[L_FINGER] = appearance.leftFinger;
}
}
}

View file

@ -0,0 +1,51 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FFXIVClassic_Map_Server.dataobjects.chara
{
class PlayerWork
{
public int tribe;
public int guardian;
public int birthdayMonth;
public int birthdayDay;
public int initialTown;
public int restBonusExpRate;
public int[] questScenario = new int[16];
public int[] questGuildLeve = new int[8];
public int questScenarioComplete;
public int questGuildleveComplete;
public bool isContentsCommand;
public int castCommandClient;
public int castEndClient;
public int[] comboNextCommandId = new int[2];
public int comboCostBonusRate;
public bool isRemainBonusPoint;
public int[] npcLinkshellChatCalling = new int[64];
public int[] npcLinkshellChatExtra = new int[64];
public int variableCommandConfirmWarp;
public int variableCommandConfirmWarpSender;
public int variableCommandConfirmWarpSenderByID;
public int variableCommandConfirmWarpSenderSex;
public int variableCommandConfirmWarpPlace;
public int variableCommandConfirmRaise;
public int variableCommandConfirmRaiseSender;
public int variableCommandConfirmRaiseSenderByID;
public int variableCommandConfirmRaiseSenderSex;
public int variableCommandConfirmRaisePlace;
}
}