public void Update(PetBehavior pet, float deltaTime) { if (pet.Happiness < HappinessRange.X || pet.Happiness > HappinessRange.Y) { return; } if (pet.Hunger < HungerRange.X || pet.Hunger > HungerRange.Y) { return; } float currentRate = Rate; currentRate += HappinessRate * (pet.Happiness - HappinessRange.X) / (HappinessRange.Y - HappinessRange.X); currentRate += InvHappinessRate * (1.0f - ((pet.Happiness - HappinessRange.X) / (HappinessRange.Y - HappinessRange.X))); currentRate += HungerRate * (pet.Hunger - HungerRange.X) / (HungerRange.Y - HungerRange.X); currentRate += InvHungerRate * (1.0f - ((pet.Hunger - HungerRange.X) / (HungerRange.Y - HungerRange.X))); timer -= currentRate * deltaTime; if (timer <= 0.0f) { timer = 1.0f; float r = Rand.Range(0.0f, totalCommonness); float aggregate = 0.0f; for (int i = 0; i < Items.Count; i++) { aggregate += Items[i].Commonness; if (aggregate >= r && Items[i].Prefab != null) { Entity.Spawner.AddToSpawnQueue(Items[i].Prefab, pet.AiController.Character.WorldPosition); break; } } } }