Major Voting Improvements!

Discussion in 'Empire Updates' started by Aikar, Feb 19, 2014.

  1. Does anyone have a little timeline of when you get certain rewards? I am gonna start up again. Anyone have pics, too?
  2. Oh I see I need to fix the colors in between service and rupees.
    These major rewards are given out with MONTHS sprees =P

    However, the bonuses will not always be this high.

    Everyones first vote after this update is essentially going to re-reward previous rupee bonuses too because the mechanism for determining the rewards was changed so everyones going to get previous rewards again making the number slightly higher.
    dresden72 and sonicol1 like this.
  3. Now all we need is a voting leaderboard.
    I voted at minecraftserverland and didn't get any mail. Only 700 rupees.
    607, cadgamer101 and dresden72 like this.
  4. Ah. So 38k from voting won't happen everyday. That's a sigh of relief. Because now you can seem to make a living from voting, so I think some thread needs to be started about raising prices.
  5. Around how much of a streak do you need for the armor? And by unbreakable, you mean it has no durability? Is this Soulbound/Final?
  6. *ouch*
  7. Have you had higher than 173 for streak before? If so, you won't get the items until you hit new voting bonuses.

    The code only runs when you reach a new high streak.

    It looks like this:

    Code:
    // TODO: Improve this condition... If we can?
    if (lastVote < midnight && lastVote >= yesterday) {
      voteRupees += 100;
      voteRupees += Math.min(voteBonus++ * 10, 500);
      if (voteBonus > voteMax) {
        processRupeeBonus();
        processItemBonus();
      }
    } else if (lastVote < timestamp - (60 * 60 * 30)) { // 30 hour window before losing streak
      long daysMissed = (long) Math.floor((timestamp - lastVote) / (60 * 60 * 24));
      voteBonus = Math.max(0, voteBonus - (2 + (2 * daysMissed)));
      voteMissed = timestamp;
    }
    607 likes this.
  8. I second this!
    cadgamer101 likes this.
  9. It has durability but its like the PVP Arena, they wont take durability hits.

    Oh why not list the numbers too!

    Code:
            private void processItemBonus() {
                String str = "Vote Bonus " + voteBonus + " Reward";
                /*
                  DO NOT add any other logic after shouldGet* - do it BEFORE.
                  If one of the shouldGetItem returns true, it must deliver item.
                 */
                if (shouldGetEvery(3, "diamond")) {
                    sendSystemMail(player, str, CustomItem.newItem(Material.DIAMOND)
                        .withRange(1, Math.max(1, (int) Math.min(10, voteBonus / 5))).getDrop(0));
                }
    
                if (shouldGetEvery(5, "emerald")) {
                    sendSystemMail(player, str, CustomItem.newItem(Material.EMERALD)
                        .withRange(1, Math.max(1, (int) Math.min(10, voteBonus / 5))).getDrop(0));
                }
    
                if (shouldGetEvery(20, "vaultVoucher")) {
                    sendSystemMail(player, str, PromoItems.VAULT_VOUCHER);
                }
    
                if (shouldGetEvery(50, "stableVoucher")) {
                    sendSystemMail(player, str, PromoItems.STABLE_VOUCHER);
                }
    
                if (shouldGetAt(20, "votersBoots")) {
                    sendSystemMail(player, str, VotingItems.makeVotingItem(player, VotingItems.VOTERS_BOOTS));
                }
    
                if (shouldGetAt(30, "votersHead")) {
                    sendSystemMail(player, str, VotingItems.makeVotingItem(player, VotingItems.VOTERS_HEAD));
                }
    
                if (shouldGetAt(40, "votersLegs")) {
                    sendSystemMail(player, str, VotingItems.makeVotingItem(player, VotingItems.VOTERS_LEGS));
                }
    
                if (shouldGetAt(60, "votersChest")) {
                    sendSystemMail(player, str, VotingItems.makeVotingItem(player, VotingItems.VOTERS_CHEST));
                }
    
                if (shouldGetAt(100, "tyCertificate")) {
                    sendSystemMail(player, str, VotingItems.makeVotingThankYou(player));
                }
            }
    hashhog3000 likes this.
  10. So if you voted 100 days before now you must do 100 again and you get a super bonus?
  11. Now we get to see all the bonuses, yay!
    Do they stack on each other?
  12. Then shouldn't I have gotten 3 of these? I only got one.
  13. This is awesome! Thanks for another great one Aikar! Ill be making sure i vote more often!
  14. Do half the votes in the morning, the other half in the evening, and save one as a 'emergency' vote.
    This is what I 'try' to do, and it seems to work wonders. There is no reason to separate votes per hour.

    If you know you have something going on in the day, (say school) Vote before school. Then when you get home, there is no rush as you have 30 hours. So, vote later at night. As the time limit is 30 hours, try to vote at a time when that 30 hours might help you if you miss your morning votes!

    Just do a little planning, and all will work great!

    And, the way I see it currently, I do not believe that it will wreak havoc on the economy. Having a bonus after a month streak or two, should not have an uncontrolled impact. Slightly more funds on a 'non' regular basis, will encourage more voting, as well as stimulating a bit more, for the players who will vote. Well done Aikar!
    00void and ArtemisV like this.
  15. It won't credit the in the between ones. Just ensures first was received.
  16. I only got one as well.
    Guess we have some more motivation to keep on these streaks, eh? :D
  17. Yeah, I had a higher one before my power went out for 2 days.
  18. Is there a way to pm a staff member to protect your voting level if your going on vacation..etc?
  19. oh my god
  20. No, wouldn't really be fair to say "I voted for 100 days straight" when 30 of them you missed. Voting can be done pretty simple over phone, so we wouldn't want to protect voting.
    607 and QuarterStop like this.