diff options
author | STRWarrior <niels.breuker@hotmail.nl> | 2014-10-15 14:08:45 +0200 |
---|---|---|
committer | STRWarrior <niels.breuker@hotmail.nl> | 2014-10-15 14:08:45 +0200 |
commit | e3aa6e48577f3247653e94a76b68a4626a630c65 (patch) | |
tree | 2efec4c43cab7bff0173ad68ef0ab4400addf6dd /src/ItemGrid.cpp | |
parent | cWorld: Fixed scheduler. (diff) | |
download | cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.tar cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.tar.gz cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.tar.bz2 cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.tar.lz cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.tar.xz cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.tar.zst cuberite-e3aa6e48577f3247653e94a76b68a4626a630c65.zip |
Diffstat (limited to '')
-rw-r--r-- | src/ItemGrid.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/ItemGrid.cpp b/src/ItemGrid.cpp index 2344dc0a5..68e753e08 100644 --- a/src/ItemGrid.cpp +++ b/src/ItemGrid.cpp @@ -637,7 +637,20 @@ void cItemGrid::GenerateRandomLootWithBooks(const cLootProbab * a_LootProbabs, s int Rnd = (Noise.IntNoise1DInt(i) / 7); int LootRnd = Rnd % TotalProbab; Rnd >>= 8; - cItem CurrentLoot = cItem(E_ITEM_BOOK, 1, 0); // TODO: enchantment + cItem CurrentLoot = cItem(E_ITEM_ENCHANTED_BOOK, 1, 0); + + // Choose the enchantments + cWeightedEnchantments Enchantments; + cEnchantments::AddItemEnchantmentWeights(Enchantments, E_ITEM_BOOK, 24 + Noise.IntNoise2DInt(a_Seed, TotalProbab) % 7); + int NumEnchantments = Noise.IntNoise3DInt(TotalProbab, Rnd, a_Seed) % 5; // The number of enchantments this book wil get. + + for (int I = 0; I <= NumEnchantments; I++) + { + cEnchantments Enchantment = cEnchantments::GetRandomEnchantmentFromVector(Enchantments, a_Seed); + CurrentLoot.m_Enchantments.AddFromString(Enchantment.ToString()); + cEnchantments::RemoveEnchantmentWeightFromVector(Enchantments, Enchantment); + } + for (size_t j = 0; j < a_CountLootProbabs; j++) { LootRnd -= a_LootProbabs[i].m_Weight; |