public static void SendSpawnPet(Character chr, PetItem pet, Character tochar = null) { // 43 10000000 01 404B4C00 0300312031 3A00000000000000 0000 00 0000 000000000000000000000000000000000000000000000000000000 var pw = new Packet(ServerMessages.SPAWN_PET); pw.WriteInt(chr.ID); pw.WriteBool(true); // Spawns pw.WriteInt(pet.ItemID); pw.WriteString(pet.Name); pw.WriteLong(pet.CashId); pw.WriteShort(pet.MovableLife.Position.X); pw.WriteShort(pet.MovableLife.Position.Y); pw.WriteByte(pet.MovableLife.Stance); pw.WriteShort(pet.MovableLife.Foothold); pw.WriteLong(0); pw.WriteLong(0); if (tochar == null) { chr.Field.SendPacket(chr, pw); } else { tochar.SendPacket(pw); } }
public static BaseItem CreateFromItemID(int itemId, short amount = 1) { if (itemId == 0) { throw new Exception("Invalid ItemID in CreateFromItemID"); } int itemType = (itemId / 1000000); BaseItem ret; if (itemType == 1) { ret = new EquipItem(); } else if (itemType == 5) { ret = new PetItem(); // TODO: Pet } else { ret = new BundleItem(); } ret.ItemID = itemId; ret.Amount = amount; return(ret); }
public PetItem(PetItem itemBase) : base(itemBase) { Name = itemBase.Name; Level = itemBase.Level; Closeness = itemBase.Closeness; Fullness = itemBase.Fullness; DeadDate = itemBase.DeadDate; }
public static byte GetLevel(PetItem petItem) { var expCurve = Constants.PetExp; for (byte i = 0; i < expCurve.Length; i++) { if (expCurve[i] > petItem.Closeness) { return((byte)(i + 1)); } } return(1); }
public static void IncreaseCloseness(Character chr, PetItem petItem, short inc) { if (petItem.Closeness >= Constants.MaxCloseness) { return; } petItem.Closeness = (short)Math.Min(Constants.MaxCloseness, petItem.Closeness + inc); var possibleLevel = GetLevel(petItem); if (possibleLevel != petItem.Level) { petItem.Level = possibleLevel; PetsPacket.SendPetLevelup(chr); } }
public static bool IsNamedPet(PetItem petItem) { return(DataProvider.Pets.TryGetValue(petItem.ItemID, out var petData) && petItem.Name != petData.Name); }
public static void UpdatePet(Character chr, PetItem petItem) { InventoryPacket.AddItem(chr, Constants.getInventory(petItem.ItemID), petItem, false); }