Bläddra i källkod

Fix Campfire Gold reward amount. Now always one of 400/500/600

Ivan Savenko 2 år sedan
förälder
incheckning
a2cd17197e
2 ändrade filer med 10 tillägg och 4 borttagningar
  1. 1 2
      config/objects/rewardablePickable.json
  2. 9 2
      lib/mapObjects/JsonRandom.cpp

+ 1 - 2
config/objects/rewardablePickable.json

@@ -35,8 +35,7 @@
 							},
 							},
 							{
 							{
 								"type" : "gold",
 								"type" : "gold",
-								"min" : 400,
-								"max" : 600
+								"amount" : [ 400, 500, 600 ]
 							}
 							}
 						]
 						]
 					}
 					}

+ 9 - 2
lib/mapObjects/JsonRandom.cpp

@@ -31,10 +31,17 @@ namespace JsonRandom
 			return defaultValue;
 			return defaultValue;
 		if (value.isNumber())
 		if (value.isNumber())
 			return static_cast<si32>(value.Float());
 			return static_cast<si32>(value.Float());
+		if (value.isVector())
+		{
+			const auto & vector = value.Vector();
+
+			size_t index= rng.getIntRange(0, vector.size()-1)();
+			return loadValue(vector[index], rng, 0);
+		}
 		if (!value["amount"].isNull())
 		if (!value["amount"].isNull())
 			return static_cast<si32>(loadValue(value["amount"], rng, defaultValue));
 			return static_cast<si32>(loadValue(value["amount"], rng, defaultValue));
-		si32 min = static_cast<si32>(value["min"].Float());
-		si32 max = static_cast<si32>(value["max"].Float());
+		si32 min = static_cast<si32>(loadValue(value["min"], rng, 0));
+		si32 max = static_cast<si32>(loadValue(value["max"], rng, 0));
 		return rng.getIntRange(min, max)();
 		return rng.getIntRange(min, max)();
 	}
 	}