From: <wel...@us...> - 2012-09-16 12:20:19
|
Revision: 8434 http://planeshift.svn.sourceforge.net/planeshift/?rev=8434&view=rev Author: weltall2 Date: 2012-09-16 12:20:13 +0000 (Sun, 16 Sep 2012) Log Message: ----------- handle better loot with 0 probability (disabled). Modified Paths: -------------- trunk/src/server/lootrandomizer.cpp Modified: trunk/src/server/lootrandomizer.cpp =================================================================== --- trunk/src/server/lootrandomizer.cpp 2012-09-12 22:56:28 UTC (rev 8433) +++ trunk/src/server/lootrandomizer.cpp 2012-09-16 12:20:13 UTC (rev 8434) @@ -200,7 +200,7 @@ // Get returns a number < limit (Get a uint32 integer random number in range 0 <= num < iLimit.) // so we must increase it of 1 in order to pick the case with the highest "probability" and exclude 0 // which means "disabled" or "manual". - probability = psserver->rng->Get(max_probability) + 1; + probability = psserver->rng->Get(max_probability) + 1.0f; for(newModifier = (int)modifierList->GetSize() - 1; newModifier >= 0 ; newModifier--) { //first of all check if the item is allowed to get this modifier @@ -232,7 +232,10 @@ } float item_prob = ((*modifierList)[newModifier]->probability); - if(probability >= item_prob) + + // Probability starts from 1 items under this are automatically excluded + // as "disabled" from this means of randomization. + if(item_prob >= 1.0f && probability >= item_prob) { if(maxcost >= totalCost * (*modifierList)[newModifier]->cost_modifier || lootTesting) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |