private void PlaceItem(D3ActorCommonData d3ACD) { switch ((ItemPlacement)d3ACD.Placement) { case ItemPlacement.Merchant: throw new NotImplementedException("Merchant items"); /*NPC merchant; * if (npcs.TryGetValue(d3ACD.OwnerID, out merchant)) * { * if (merchant.Inventory == null) * merchant.Inventory = new Inventory(10, 60); * merchant.Inventory.AddItem(CreateItem(d3ACD)); * } * break;*/ case ItemPlacement.PlayerBackpack: this.Me.Backpack.AddItem(CreateItem(d3ACD)); break; case ItemPlacement.PlayerStash: this.Me.Stash.AddItem(CreateItem(d3ACD)); break; case ItemPlacement.PlayerGold: if (d3ACD.GBID != Offsets.GOLD_GBID) { Log.Warn("Unrecognized item " + d3ACD.ModelName + " in the gold slot"); break; } this.Me.Gold = d3ACD.Attributes[D3Attribute.ItemStackQuantityLo].Value; break; case ItemPlacement.PlayerBracers: case ItemPlacement.PlayerFeet: case ItemPlacement.PlayerHands: case ItemPlacement.PlayerHead: case ItemPlacement.PlayerLeftFinger: case ItemPlacement.PlayerLeftHand: case ItemPlacement.PlayerLegs: case ItemPlacement.PlayerNeck: case ItemPlacement.PlayerRightFinger: case ItemPlacement.PlayerRightHand: case ItemPlacement.PlayerShoulders: case ItemPlacement.PlayerTorso: case ItemPlacement.PlayerWaist: this.Me.Outfit.AddItem((ItemPlacement)d3ACD.Placement, CreateItem(d3ACD)); break; case ItemPlacement.Unknown1: case ItemPlacement.Unknown2: case ItemPlacement.Unknown3: case ItemPlacement.Unknown4: case ItemPlacement.Unknown5: default: throw new MemoryReadException("Unknown item placement " + d3ACD.Placement + " for " + d3ACD.ModelName, d3ACD.Pointer); } }
private Item CreateItem(D3ActorCommonData d3ACD) { Actor templateActor = ActorTemplates.Actors[d3ACD.SnoID]; ItemDefinition itemDef = ItemDefinitions.Definitions[(int)d3ACD.GBID]; ItemType type = ItemTypes.Types[itemDef.ItemTypeHash]; Item item = Item.CreateInstance((Item)templateActor, itemDef, -1, d3ACD.AcdID, AABB.Zero, Vector2f.Zero, d3ACD.WorldID, d3ACD.SceneID, type, d3ACD.Placement, d3ACD.InventoryX, d3ACD.InventoryY); item.InstanceID = d3ACD.AcdID; return(item); }