From 8f993ba6d4a4bf948bdf3d2e07013448c052c1ab Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 25 Mar 2013 14:12:43 -0700 Subject: [PATCH] pets: take task reddness into account when calculating chance drop --- src/app/scoring.coffee | 83 +++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index a4146710ed..9c1c88285c 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -123,55 +123,54 @@ score = (model, taskId, direction, times, batch, cron) -> Drops ### - # debugging purpose - 50% chance during development, 3% chance on prod - chanceMultiplier = if (model.flags.nodeEnv is 'development') then 50 else 3 - # % chance of getting a pet or meat - if direction is 'up' and user.get('flags.dropsEnabled') and Math.random() < (.01 * chanceMultiplier) - # current breakdown - 3% (adjustable) chance on drop - # If they got a drop: 50% chance of egg, 50% Food. If food, broken down further even further - rarity = Math.random() + if direction is 'up' + # debugging purpose - 50% chance during development, 3% chance on prod + chanceMultiplier = if (model.flags.nodeEnv is 'development') then 50 else 1 + chanceMultiplier *= Math.abs(delta) # multiply chance by reddness + if user.get('flags.dropsEnabled') and Math.random() < (.01 * chanceMultiplier) + # current breakdown - 3% (adjustable) chance on drop + # If they got a drop: 50% chance of egg, 50% Food. If food, broken down further even further + rarity = Math.random() - # Egg, 40% chance - if rarity > .6 - drop = randomVal(pets) - user.push 'items.eggs', drop - drop.type = 'Egg' - drop.dialog = "You've found a #{drop.text} Egg! #{drop.notes}" + # Egg, 40% chance + if rarity > .6 + drop = randomVal(pets) + user.push 'items.eggs', drop + drop.type = 'Egg' + drop.dialog = "You've found a #{drop.text} Egg! #{drop.notes}" - - # Food, 60% chance - break down by rarity even more. FIXME this may not be the best method, so revisit - else - acceptableDrops = [] - - # Tier 5 (Blue Moon Rare) - if rarity < .1 - acceptableDrops = ['Base', 'White', 'Desert', 'Red', 'Shade', 'Skeleton', 'Zombie', 'CottonCandyPink', 'CottonCandyBlue', 'Golden'] - - # Tier 4 (Very Rare) - else if rarity < .2 - acceptableDrops = ['Base', 'White', 'Desert', 'Red', 'Shade', 'Skeleton', 'Zombie', 'CottonCandyPink', 'CottonCandyBlue'] - - # Tier 3 (Rare) - else if rarity < .3 - acceptableDrops = ['Base', 'White', 'Desert', 'Red', 'Shade', 'Skeleton'] - - # Tier 2 (Scarce) - else if rarity < .4 - acceptableDrops = ['Base', 'White', 'Desert'] - # Tier 1 (Common) + # Food, 60% chance - break down by rarity even more. FIXME this may not be the best method, so revisit else - acceptableDrops = ['Base'] + acceptableDrops = [] - acceptableDrops = _.filter(food, (foodItem) -> foodItem.name in acceptableDrops) - drop = randomVal acceptableDrops - user.push 'items.food', drop.name - drop.type = 'Food' - drop.dialog = "You've found #{drop.text} Hatching Powder! #{drop.notes}" + # Tier 5 (Blue Moon Rare) + if rarity < .1 + acceptableDrops = ['Base', 'White', 'Desert', 'Red', 'Shade', 'Skeleton', 'Zombie', 'CottonCandyPink', 'CottonCandyBlue', 'Golden'] + # Tier 4 (Very Rare) + else if rarity < .2 + acceptableDrops = ['Base', 'White', 'Desert', 'Red', 'Shade', 'Skeleton', 'Zombie', 'CottonCandyPink', 'CottonCandyBlue'] - model.set '_drop', drop - $('#item-dropped-modal').modal 'show' + # Tier 3 (Rare) + else if rarity < .3 + acceptableDrops = ['Base', 'White', 'Desert', 'Red', 'Shade', 'Skeleton'] + + # Tier 2 (Scarce) + else if rarity < .4 + acceptableDrops = ['Base', 'White', 'Desert'] + # Tier 1 (Common) + else + acceptableDrops = ['Base'] + + acceptableDrops = _.filter(food, (foodItem) -> foodItem.name in acceptableDrops) + drop = randomVal acceptableDrops + user.push 'items.food', drop.name + drop.type = 'Food' + drop.dialog = "You've found #{drop.text} Hatching Powder! #{drop.notes}" + + model.set '_drop', drop + $('#item-dropped-modal').modal 'show' return delta