CurrencyData getSpecialGift(DogDescriptor dog) { CurrencyData specialGift = getDogSpecialGiftChances(dog).GetRandom(); if (specialGift is SouvenirData) { // Need to return the specific souvenir the dog owns return(dog.Souvenir); } else { SpecialGiftData gift = specialGift as SpecialGiftData; (gift as SpecialGiftData).SetFinder(dog); if (!checkSpecialGiftCanBeUsed(gift)) { // Set to a default currency if the SpecialGift cannot be used specialGift = giftFactory.Create(defaultReturnChances.GetRandom(), randomAmount()); } return(specialGift); } }
bool checkSpecialGiftCanBeUsed(SpecialGiftData specialGift) { bool invalidUse = specialGift is GiftEventData && !GiftDatabase.GetInstance.TryUseEvent(specialGift as GiftEventData); return(!invalidUse); }