Warnings improvements
* Turn off global-constructors warning. These are needed to implement cRoot signal handler functionality
* Add Clang flags based on version lookup instead of a compile test. The CMake config process is single threaded and slow enough already
* Reduced GetStackValue verbosity
+ Clarify EnchantmentLevel, StayCount, AlwaysTicked, ViewDistance signedness
+ Give SettingsRepositoryInterface a move constructor to simplify main.cpp code
- Remove do {} while (false) construction in redstone handler
This commit is contained in:
112
src/Item.cpp
112
src/Item.cpp
@@ -356,95 +356,93 @@ bool cItem::IsEnchantable(short a_ItemType, bool a_FromBook)
|
||||
|
||||
|
||||
|
||||
int cItem::GetEnchantability()
|
||||
unsigned cItem::GetEnchantability()
|
||||
{
|
||||
int Enchantability = 0;
|
||||
|
||||
switch (m_ItemType)
|
||||
{
|
||||
case E_ITEM_WOODEN_SWORD: Enchantability = 15; break;
|
||||
case E_ITEM_WOODEN_PICKAXE: Enchantability = 15; break;
|
||||
case E_ITEM_WOODEN_SHOVEL: Enchantability = 15; break;
|
||||
case E_ITEM_WOODEN_AXE: Enchantability = 15; break;
|
||||
case E_ITEM_WOODEN_HOE: Enchantability = 15; break;
|
||||
case E_ITEM_WOODEN_SWORD:
|
||||
case E_ITEM_WOODEN_PICKAXE:
|
||||
case E_ITEM_WOODEN_SHOVEL:
|
||||
case E_ITEM_WOODEN_AXE:
|
||||
case E_ITEM_WOODEN_HOE: return 15;
|
||||
|
||||
case E_ITEM_LEATHER_CAP: Enchantability = 15; break;
|
||||
case E_ITEM_LEATHER_TUNIC: Enchantability = 15; break;
|
||||
case E_ITEM_LEATHER_PANTS: Enchantability = 15; break;
|
||||
case E_ITEM_LEATHER_BOOTS: Enchantability = 15; break;
|
||||
case E_ITEM_LEATHER_CAP:
|
||||
case E_ITEM_LEATHER_TUNIC:
|
||||
case E_ITEM_LEATHER_PANTS:
|
||||
case E_ITEM_LEATHER_BOOTS: return 15;
|
||||
|
||||
case E_ITEM_STONE_SWORD: Enchantability = 5; break;
|
||||
case E_ITEM_STONE_PICKAXE: Enchantability = 5; break;
|
||||
case E_ITEM_STONE_SHOVEL: Enchantability = 5; break;
|
||||
case E_ITEM_STONE_AXE: Enchantability = 5; break;
|
||||
case E_ITEM_STONE_HOE: Enchantability = 5; break;
|
||||
case E_ITEM_STONE_SWORD:
|
||||
case E_ITEM_STONE_PICKAXE:
|
||||
case E_ITEM_STONE_SHOVEL:
|
||||
case E_ITEM_STONE_AXE:
|
||||
case E_ITEM_STONE_HOE: return 5;
|
||||
|
||||
case E_ITEM_IRON_HELMET: Enchantability = 9; break;
|
||||
case E_ITEM_IRON_CHESTPLATE: Enchantability = 9; break;
|
||||
case E_ITEM_IRON_LEGGINGS: Enchantability = 9; break;
|
||||
case E_ITEM_IRON_BOOTS: Enchantability = 9; break;
|
||||
case E_ITEM_IRON_HELMET:
|
||||
case E_ITEM_IRON_CHESTPLATE:
|
||||
case E_ITEM_IRON_LEGGINGS:
|
||||
case E_ITEM_IRON_BOOTS: return 9;
|
||||
|
||||
case E_ITEM_IRON_SWORD: Enchantability = 14; break;
|
||||
case E_ITEM_IRON_PICKAXE: Enchantability = 14; break;
|
||||
case E_ITEM_IRON_SHOVEL: Enchantability = 14; break;
|
||||
case E_ITEM_IRON_AXE: Enchantability = 14; break;
|
||||
case E_ITEM_IRON_HOE: Enchantability = 14; break;
|
||||
case E_ITEM_IRON_SWORD:
|
||||
case E_ITEM_IRON_PICKAXE:
|
||||
case E_ITEM_IRON_SHOVEL:
|
||||
case E_ITEM_IRON_AXE:
|
||||
case E_ITEM_IRON_HOE: return 14;
|
||||
|
||||
case E_ITEM_CHAIN_HELMET: Enchantability = 12; break;
|
||||
case E_ITEM_CHAIN_CHESTPLATE: Enchantability = 12; break;
|
||||
case E_ITEM_CHAIN_LEGGINGS: Enchantability = 12; break;
|
||||
case E_ITEM_CHAIN_BOOTS: Enchantability = 12; break;
|
||||
case E_ITEM_CHAIN_HELMET:
|
||||
case E_ITEM_CHAIN_CHESTPLATE:
|
||||
case E_ITEM_CHAIN_LEGGINGS:
|
||||
case E_ITEM_CHAIN_BOOTS: return 12;
|
||||
|
||||
case E_ITEM_DIAMOND_HELMET: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_CHESTPLATE: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_LEGGINGS: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_BOOTS: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_HELMET:
|
||||
case E_ITEM_DIAMOND_CHESTPLATE:
|
||||
case E_ITEM_DIAMOND_LEGGINGS:
|
||||
case E_ITEM_DIAMOND_BOOTS: return 10;
|
||||
|
||||
case E_ITEM_DIAMOND_SWORD: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_PICKAXE: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_SHOVEL: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_AXE: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_HOE: Enchantability = 10; break;
|
||||
case E_ITEM_DIAMOND_SWORD:
|
||||
case E_ITEM_DIAMOND_PICKAXE:
|
||||
case E_ITEM_DIAMOND_SHOVEL:
|
||||
case E_ITEM_DIAMOND_AXE:
|
||||
case E_ITEM_DIAMOND_HOE: return 10;
|
||||
|
||||
case E_ITEM_GOLD_HELMET: Enchantability = 25; break;
|
||||
case E_ITEM_GOLD_CHESTPLATE: Enchantability = 25; break;
|
||||
case E_ITEM_GOLD_LEGGINGS: Enchantability = 25; break;
|
||||
case E_ITEM_GOLD_BOOTS: Enchantability = 25; break;
|
||||
case E_ITEM_GOLD_HELMET:
|
||||
case E_ITEM_GOLD_CHESTPLATE:
|
||||
case E_ITEM_GOLD_LEGGINGS:
|
||||
case E_ITEM_GOLD_BOOTS: return 25;
|
||||
|
||||
case E_ITEM_GOLD_SWORD: Enchantability = 22; break;
|
||||
case E_ITEM_GOLD_PICKAXE: Enchantability = 22; break;
|
||||
case E_ITEM_GOLD_SHOVEL: Enchantability = 22; break;
|
||||
case E_ITEM_GOLD_AXE: Enchantability = 22; break;
|
||||
case E_ITEM_GOLD_HOE: Enchantability = 22; break;
|
||||
case E_ITEM_GOLD_SWORD:
|
||||
case E_ITEM_GOLD_PICKAXE:
|
||||
case E_ITEM_GOLD_SHOVEL:
|
||||
case E_ITEM_GOLD_AXE:
|
||||
case E_ITEM_GOLD_HOE: return 22;
|
||||
|
||||
case E_ITEM_FISHING_ROD: Enchantability = 1; break;
|
||||
case E_ITEM_BOW: Enchantability = 1; break;
|
||||
case E_ITEM_BOOK: Enchantability = 1; break;
|
||||
case E_ITEM_FISHING_ROD:
|
||||
case E_ITEM_BOW:
|
||||
case E_ITEM_BOOK: return 1;
|
||||
}
|
||||
|
||||
return Enchantability;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool cItem::EnchantByXPLevels(int a_NumXPLevels, MTRand & a_Random)
|
||||
bool cItem::EnchantByXPLevels(unsigned a_NumXPLevels, MTRand & a_Random)
|
||||
{
|
||||
if (!cItem::IsEnchantable(m_ItemType))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int Enchantability = GetEnchantability();
|
||||
const auto Enchantability = GetEnchantability();
|
||||
if (Enchantability == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int ModifiedEnchantmentLevel = a_NumXPLevels + a_Random.RandInt(Enchantability / 4) + a_Random.RandInt(Enchantability / 4) + 1;
|
||||
float RandomBonus = 1.0F + (a_Random.RandReal() + a_Random.RandReal() - 1.0F) * 0.15F;
|
||||
int FinalEnchantmentLevel = static_cast<int>(ModifiedEnchantmentLevel * RandomBonus + 0.5F);
|
||||
const auto ModifiedEnchantmentLevel = a_NumXPLevels + a_Random.RandInt(Enchantability / 4) + a_Random.RandInt(Enchantability / 4) + 1;
|
||||
const auto RandomBonus = 1.0F + (a_Random.RandReal() + a_Random.RandReal() - 1.0F) * 0.15F;
|
||||
const auto FinalEnchantmentLevel = static_cast<unsigned>(ModifiedEnchantmentLevel * RandomBonus + 0.5F);
|
||||
|
||||
cWeightedEnchantments Enchantments;
|
||||
cEnchantments::AddItemEnchantmentWeights(Enchantments, m_ItemType, FinalEnchantmentLevel);
|
||||
|
||||
Reference in New Issue
Block a user