From 2a2bcef71a152d730870457f007a76bf08caa803 Mon Sep 17 00:00:00 2001 From: "wagic.jeck" Date: Tue, 9 Feb 2010 16:56:39 +0000 Subject: [PATCH] Jeck - Hooked economic difficulty into booster prices. --- projects/mtg/include/MTGDefinitions.h | 3 --- projects/mtg/include/PriceList.h | 1 + projects/mtg/src/MTGDeck.cpp | 8 +++++--- projects/mtg/src/PriceList.cpp | 10 +++++++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/projects/mtg/include/MTGDefinitions.h b/projects/mtg/include/MTGDefinitions.h index f36dd7dd7..4d86fb14b 100644 --- a/projects/mtg/include/MTGDefinitions.h +++ b/projects/mtg/include/MTGDefinitions.h @@ -114,9 +114,6 @@ class Constants RARITY_L = 'L', //Lands RARITY_T = 'T', //Tokens - //Economic values (Placeholders for stuff later set by economic difficulty) - PRICE_FILTER_SCALAR = 4, - ECON_NORMAL = 0, //Options default to 0. ECON_HARD = 1, ECON_LUCK = 2, diff --git a/projects/mtg/include/PriceList.h b/projects/mtg/include/PriceList.h index 007f12796..f1908790a 100644 --- a/projects/mtg/include/PriceList.h +++ b/projects/mtg/include/PriceList.h @@ -22,6 +22,7 @@ class PriceList{ int getPurchasePrice(int cardid); int getPrice(int cardId); int setPrice(int cardId, int price); + static float difficultyScalar(float price, int cardid=0); static void updateKey() {randomKey = rand();}; }; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 251dc03a9..111570a9a 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -4,6 +4,7 @@ #include "../include/Subtypes.h" #include "../include/Translate.h" #include "../include/DeckMetaData.h" +#include "../include/PriceList.h" #include #include #include @@ -336,8 +337,8 @@ bool MTGAllCards::addCardToCollection(MTGCard * card, int setId){ CardPrimitive * MTGAllCards::addPrimitive(CardPrimitive * primitive, MTGCard * card){ int maxGrade = options[Options::MAX_GRADE].number; - if (!maxGrade) maxGrade = Constants::GRADE_BORDERLINE; - if (currentGrade >maxGrade) { + if (!maxGrade) maxGrade = Constants::GRADE_BORDERLINE; //Default setting for grade is borderline? + if (currentGrade > maxGrade) { SAFE_DELETE(primitive); return NULL; } @@ -900,7 +901,8 @@ int MTGSetInfo::boosterCost(){ price += booster[i] * Constants::PRICE_XR; } - return price; + price += price + PriceList::difficultyScalar(price,setlist.findSet(id)); + return (price/3); //Boosters only 33% influenced by economic difficulty. } string MTGSetInfo::getName(){ diff --git a/projects/mtg/src/PriceList.cpp b/projects/mtg/src/PriceList.cpp index 046f5e880..42d33e0f8 100644 --- a/projects/mtg/src/PriceList.cpp +++ b/projects/mtg/src/PriceList.cpp @@ -73,15 +73,14 @@ int PriceList::setPrice(int cardId, int price){ int PriceList::getSellPrice(int cardid){ return getPurchasePrice(cardid) / 2; } -int PriceList::getPurchasePrice(int cardid){ - float price = (float) getPrice(cardid); +float PriceList::difficultyScalar(float price, int cardid){ float badluck = (float)(abs(cardid + randomKey) % 201) / 100; //Float between 0 and 2. switch(options[Options::ECON_DIFFICULTY].number){ case Constants::ECON_EASY: badluck -= 1.5; price /= 2; break; //Price from .25x to .75x, .25x more likely. case Constants::ECON_NORMAL: default: - badluck -= 1; break; //price from 1x to 2x, even probability. + badluck /= 2; break; //price from 1x to 2x, even probability. case Constants::ECON_HARD: price *= 1.5; break; //price from 1.5x to 3x, 3x being twice as likely. case Constants::ECON_LUCK: @@ -91,3 +90,8 @@ int PriceList::getPurchasePrice(int cardid){ else if(badluck < -1) badluck = -1; return (price + price * badluck); } +int PriceList::getPurchasePrice(int cardid){ + float p = difficultyScalar(getPrice(cardid),cardid); + if(p < 2) p = 2; //Prevents "Sell for 0 credits" + return (int)p; +}