Ejemplo n.º 1
0
        private void GenerateRewards(Player player)
        {
            float MaxChance;
            List <RequestReward> PossibleRewards = RequestReward.GetPossibleRewards(player, RequestGiver, out MaxChance);
            float RewardPercentage = 1f + RequestGiver.FriendshipLevel * 0.1f;

            RewardPercentage *= (float)MaxObjectiveCount / Base.GetRequestObjectiveCount(0);
            float RewardVariationStart = 0.8f, VariationRange = 0.4f;

            if (RequestGiver.FriendshipLevel < 1)
            {
                MaxChance           += (int)(MaxChance * 0.5f);
                RewardVariationStart = 0.5f;
                VariationRange       = 0.3f;
            }
            else if (RequestGiver.FriendshipLevel < 3)
            {
                MaxChance += (int)(MaxChance * 0.25f);
            }
            else if (RequestGiver.FriendshipLevel < 5)
            {
                MaxChance           += (int)(MaxChance * 0.15f);
                RewardVariationStart = 0.9f;
                VariationRange       = 0.2f;
            }
            else if (RequestGiver.FriendshipLevel < 7)
            {
                MaxChance           += (int)(MaxChance * 0.05f);
                RewardVariationStart = 0.95f;
                VariationRange       = 0.3f;
            }
            else
            {
                RewardVariationStart = 1;
                VariationRange       = 0.5f;
            }
            for (byte i = 0; i < 3; i++)
            {
                ThisRequestReward reward       = Rewards[i];
                float             PickedChance = Main.rand.NextFloat() * MaxChance;
                float             Stack        = 0;
                Item item = new Item();
                foreach (RequestReward r in PossibleRewards)
                {
                    if (PickedChance >= Stack && PickedChance < Stack + r.AcquisitionChance)
                    {
                        item.SetDefaults(r.itemID, true);
                        item.stack = r.Stack;
                        break;
                    }
                    Stack += r.AcquisitionChance;
                }
                reward.item  = item;
                reward.value = (int)(Base.RewardValue * RewardPercentage * (RewardVariationStart + VariationRange * Main.rand.NextFloat()));
            }
        }
Ejemplo n.º 2
0
        public static RequestReward AddRequestReward(int ItemID, int Stack = 1, float AcquisitionChance = 1f)
        {
            RequestReward reward = new RequestReward()
            {
                itemID = ItemID, Stack = Stack, AcquisitionChance = AcquisitionChance
            };

            RequestRewards.Add(reward);
            return(reward);
        }