mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-07-25 03:48:23 +02:00
Fixed up how "special" items work (ie: PUG and ARC weapons). No more glitches hopefully.
This commit is contained in:
parent
caf254fd95
commit
77d6cb2e43
5 changed files with 62 additions and 10 deletions
|
@ -84,11 +84,12 @@ namespace FFXIVClassic_Map_Server
|
|||
SELECT
|
||||
*
|
||||
FROM gamedata_items
|
||||
LEFT JOIN gamedata_items_equipment ON gamedata_items.catalogID = gamedata_items_equipment.catalogID
|
||||
LEFT JOIN gamedata_items_accessory ON gamedata_items.catalogID = gamedata_items_accessory.catalogID
|
||||
LEFT JOIN gamedata_items_armor ON gamedata_items.catalogID = gamedata_items_armor.catalogID
|
||||
LEFT JOIN gamedata_items_weapon ON gamedata_items.catalogID = gamedata_items_weapon.catalogID
|
||||
LEFT JOIN gamedata_items_graphics ON gamedata_items.catalogID = gamedata_items_graphics.catalogID
|
||||
LEFT JOIN gamedata_items_equipment ON gamedata_items.catalogID = gamedata_items_equipment.catalogID
|
||||
LEFT JOIN gamedata_items_accessory ON gamedata_items.catalogID = gamedata_items_accessory.catalogID
|
||||
LEFT JOIN gamedata_items_armor ON gamedata_items.catalogID = gamedata_items_armor.catalogID
|
||||
LEFT JOIN gamedata_items_weapon ON gamedata_items.catalogID = gamedata_items_weapon.catalogID
|
||||
LEFT JOIN gamedata_items_graphics ON gamedata_items.catalogID = gamedata_items_graphics.catalogID
|
||||
LEFT JOIN gamedata_items_graphics_extra ON gamedata_items.catalogID = gamedata_items_graphics_extra.catalogID
|
||||
";
|
||||
|
||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||
|
|
|
@ -1005,6 +1005,19 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
|
||||
appearanceIds[slot] = graphicId;
|
||||
}
|
||||
|
||||
//Handle offhand
|
||||
if (slot == MAINHAND && item is WeaponItem)
|
||||
{
|
||||
WeaponItem wpItem = (WeaponItem)item;
|
||||
|
||||
uint graphicId =
|
||||
(wpItem.graphicsOffhandWeaponId & 0x3FF) << 20 |
|
||||
(wpItem.graphicsOffhandEquipmentId & 0x3FF) << 10 |
|
||||
(wpItem.graphicsOffhandVariantId & 0x3FF);
|
||||
|
||||
appearanceIds[SetActorAppearancePacket.OFFHAND] = graphicId;
|
||||
}
|
||||
}
|
||||
|
||||
Database.SavePlayerAppearance(this);
|
||||
|
|
|
@ -467,6 +467,11 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
|||
|
||||
class WeaponItem : EquipmentItem
|
||||
{
|
||||
//extra graphics
|
||||
public readonly uint graphicsOffhandWeaponId;
|
||||
public readonly uint graphicsOffhandEquipmentId;
|
||||
public readonly uint graphicsOffhandVariantId;
|
||||
|
||||
//weapon sheet
|
||||
public readonly short attack;
|
||||
public readonly short magicAttack;
|
||||
|
@ -497,6 +502,13 @@ namespace FFXIVClassic_Map_Server.dataobjects
|
|||
public WeaponItem(MySqlDataReader reader)
|
||||
: base(reader)
|
||||
{
|
||||
if (!reader.IsDBNull(reader.GetOrdinal("offHandWeaponId")) && !reader.IsDBNull(reader.GetOrdinal("offHandEquipmentId")) && !reader.IsDBNull(reader.GetOrdinal("offHandVarientId")))
|
||||
{
|
||||
graphicsOffhandWeaponId = reader.GetUInt32("offHandWeaponId");
|
||||
graphicsOffhandEquipmentId = reader.GetUInt32("offHandEquipmentId");
|
||||
graphicsOffhandVariantId = reader.GetUInt32("offHandVarientId");
|
||||
}
|
||||
|
||||
attack = reader.GetInt16("attack");
|
||||
magicAttack = reader.GetInt16("magicAttack");
|
||||
craftProcessing = reader.GetInt16("craftProcessing");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue