private void BuildHookProfile(WorldObject hookedItem) { HookProfile = new HookProfile(); if (hookedItem.Inscribable) { HookProfile.Flags |= HookFlags.Inscribable; } if (hookedItem is Healer) { HookProfile.Flags |= HookFlags.IsHealer; } if (hookedItem is Food) { HookProfile.Flags |= HookFlags.IsFood; } if (hookedItem is Lockpick) { HookProfile.Flags |= HookFlags.IsLockpick; } if (hookedItem.ValidLocations != null) { HookProfile.ValidLocations = hookedItem.ValidLocations.Value; } if (hookedItem.AmmoType != null) { HookProfile.AmmoType = hookedItem.AmmoType.Value; } }
private void BuildHookProfile(WorldObject hookedItem) { HookProfile = new HookProfile(); if (hookedItem.Inscription != null) { HookProfile.Flags |= HookFlags.Inscribable; } if (hookedItem.ValidLocations != null) { HookProfile.ValidLocations = (uint)hookedItem.ValidLocations; } // This only handles basic Arrow, Quarrels and Darts. It does not, for instance, handle Crystal Arrows. // How were those handled? if (hookedItem.AmmoType != null) { if ((hookedItem.AmmoType & AmmoType.Arrow) != 0) { HookProfile.AmmoType |= HookAmmoType.Arrow; } if ((hookedItem.AmmoType & AmmoType.Bolt) != 0) { HookProfile.AmmoType |= HookAmmoType.Bolt; } if ((hookedItem.AmmoType & AmmoType.Atlatl) != 0) { HookProfile.AmmoType |= HookAmmoType.Dart; } } }
public static void Write(this BinaryWriter writer, HookProfile hook) { writer.Write((uint)hook.Flags); writer.Write(hook.ValidLocations); writer.Write((ushort)hook.AmmoType); }