Inventory logger
This commit is contained in:
parent
29fba4b7cb
commit
de2057789a
41 changed files with 12834 additions and 171 deletions
165
Shared/ObjectClass.cs
Normal file
165
Shared/ObjectClass.cs
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
using System;
|
||||
|
||||
using Mag.Shared.Constants;
|
||||
|
||||
namespace Mag.Shared
|
||||
{
|
||||
public enum ObjectClass
|
||||
{
|
||||
Unknown = 0,
|
||||
MeleeWeapon = 1,
|
||||
Armor = 2,
|
||||
Clothing = 3,
|
||||
Jewelry = 4,
|
||||
Monster = 5,
|
||||
Food = 6,
|
||||
Money = 7,
|
||||
Misc = 8,
|
||||
MissileWeapon = 9,
|
||||
Container = 10,
|
||||
Gem = 11,
|
||||
SpellComponent = 12,
|
||||
Key = 13,
|
||||
Portal = 14,
|
||||
TradeNote = 15,
|
||||
ManaStone = 16,
|
||||
Plant = 17,
|
||||
BaseCooking = 18,
|
||||
BaseAlchemy = 19,
|
||||
BaseFletching = 20,
|
||||
CraftedCooking = 21,
|
||||
CraftedAlchemy = 22,
|
||||
CraftedFletching = 23,
|
||||
Player = 24,
|
||||
Vendor = 25,
|
||||
Door = 26,
|
||||
Corpse = 27,
|
||||
Lifestone = 28,
|
||||
HealingKit = 29,
|
||||
Lockpick = 30,
|
||||
WandStaffOrb = 31,
|
||||
Bundle = 32,
|
||||
Book = 33,
|
||||
Journal = 34,
|
||||
Sign = 35,
|
||||
Housing = 36,
|
||||
Npc = 37,
|
||||
Foci = 38,
|
||||
Salvage = 39,
|
||||
Ust = 40,
|
||||
Services = 41,
|
||||
Scroll = 42,
|
||||
NumObjectClasses = 43,
|
||||
}
|
||||
|
||||
public static class ObjectClassTools
|
||||
{
|
||||
/// <summary>
|
||||
/// Converts a decal specific IntValueKey to the actual IntValueKey.
|
||||
/// If this is not an IntValueKey, 0 will be returned.
|
||||
/// </summary>
|
||||
public static ObjectClass FromWeenieType(ItemType itemType, WeenieType weenieType)
|
||||
{
|
||||
var result = ObjectClass.Unknown;
|
||||
|
||||
if ((itemType & ItemType.MeleeWeapon) != 0)
|
||||
result = ObjectClass.MeleeWeapon;
|
||||
else if ((itemType & ItemType.Armor) != 0)
|
||||
result = ObjectClass.Armor;
|
||||
else if ((itemType & ItemType.Clothing) != 0)
|
||||
result = ObjectClass.Clothing;
|
||||
else if ((itemType & ItemType.Jewelry) != 0)
|
||||
result = ObjectClass.Jewelry;
|
||||
else if ((itemType & ItemType.Creature) != 0)
|
||||
result = ObjectClass.Monster;
|
||||
else if ((itemType & ItemType.Food) != 0)
|
||||
result = ObjectClass.Food;
|
||||
else if ((itemType & ItemType.Money) != 0)
|
||||
result = ObjectClass.Money;
|
||||
else if ((itemType & ItemType.Misc) != 0)
|
||||
result = ObjectClass.Misc;
|
||||
else if ((itemType & ItemType.MissileWeapon) != 0)
|
||||
result = ObjectClass.MissileWeapon;
|
||||
else if ((itemType & ItemType.Container) != 0)
|
||||
result = ObjectClass.Container;
|
||||
else if ((itemType & ItemType.Useless) != 0)
|
||||
result = ObjectClass.Bundle;
|
||||
else if ((itemType & ItemType.Gem) != 0)
|
||||
result = ObjectClass.Gem;
|
||||
else if ((itemType & ItemType.SpellComponents) != 0)
|
||||
result = ObjectClass.SpellComponent;
|
||||
else if ((itemType & ItemType.Key) != 0)
|
||||
result = ObjectClass.Key;
|
||||
else if ((itemType & ItemType.Caster) != 0)
|
||||
result = ObjectClass.WandStaffOrb;
|
||||
else if ((itemType & ItemType.Portal) != 0)
|
||||
result = ObjectClass.Portal;
|
||||
else if ((itemType & ItemType.PromissoryNote) != 0)
|
||||
result = ObjectClass.TradeNote;
|
||||
else if ((itemType & ItemType.ManaStone) != 0)
|
||||
result = ObjectClass.ManaStone;
|
||||
else if ((itemType & ItemType.Service) != 0)
|
||||
result = ObjectClass.Services;
|
||||
else if ((itemType & ItemType.MagicWieldable) != 0)
|
||||
result = ObjectClass.Plant;
|
||||
else if ((itemType & ItemType.CraftCookingBase) != 0)
|
||||
result = ObjectClass.BaseCooking;
|
||||
else if ((itemType & ItemType.CraftAlchemyBase) != 0)
|
||||
result = ObjectClass.BaseAlchemy;
|
||||
//else if ((itemType & ItemType.01000000)
|
||||
// result = ObjectClass.BaseFletching;
|
||||
else if ((itemType & ItemType.CraftFletchingBase) != 0)
|
||||
result = ObjectClass.CraftedCooking;
|
||||
else if ((itemType & ItemType.CraftAlchemyIntermediate) != 0)
|
||||
result = ObjectClass.CraftedAlchemy;
|
||||
else if ((itemType & ItemType.CraftFletchingIntermediate) != 0)
|
||||
result = ObjectClass.CraftedFletching;
|
||||
else if ((itemType & ItemType.TinkeringTool) != 0)
|
||||
result = ObjectClass.Ust;
|
||||
else if ((itemType & ItemType.TinkeringMaterial) != 0)
|
||||
result = ObjectClass.Salvage;
|
||||
|
||||
/*
|
||||
if (Behavior & 0x00000008)
|
||||
result = ObjectClass.Player;
|
||||
else if (Behavior & 0x00000200)
|
||||
result = ObjectClass.Vendor;
|
||||
else if (Behavior & 0x00001000)
|
||||
result = ObjectClass.Door;
|
||||
else if (Behavior & 0x00002000)
|
||||
result = ObjectClass.Corpse;
|
||||
else if (Behavior & 0x00004000)
|
||||
result = ObjectClass.Lifestone;
|
||||
else if (Behavior & 0x00008000)
|
||||
result = ObjectClass.Food;
|
||||
else if (Behavior & 0x00010000)
|
||||
result = ObjectClass.HealingKit;
|
||||
else if (Behavior & 0x00020000)
|
||||
result = ObjectClass.Lockpick;
|
||||
else if (Behavior & 0x00040000)
|
||||
result = ObjectClass.Portal;
|
||||
else if (Behavior & 0x00800000)
|
||||
result = ObjectClass.Foci;
|
||||
else if (Behavior & 0x00000001)
|
||||
result = ObjectClass.Container;
|
||||
*/
|
||||
|
||||
/*if (((itemType & ItemType.Writable) != 0) && (Behavior & 0x00000100) && result == ObjectClass.Unknown)
|
||||
{
|
||||
if (pCreate->m_Behavior & 0x00000002)
|
||||
result = ObjectClass.Journal;
|
||||
else if (pCreate->m_Behavior & 0x00000004)
|
||||
result = ObjectClass.Sign;
|
||||
else if (!(pCreate->m_Behavior & 0x0000000F))
|
||||
result = ObjectClass.Book;
|
||||
}*/
|
||||
|
||||
/*if (((itemType & ItemType.Writable) != 0) && ((GameDataFlags1 & 0x00400000) != 0))
|
||||
result = ObjectClass.Scroll;*/
|
||||
|
||||
//throw new Exception($"Unable to convert WeenieType {input} to an ObjectClass.");
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue