the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 77 lines 1.8 kB view raw
1#include "stdafx.h" 2#include "net.minecraft.world.item.h" 3#include "net.minecraft.world.item.enchantment.h" 4#include "net.minecraft.world.entity.h" 5#include "net.minecraft.world.damagesource.h" 6#include "ThornsEnchantment.h" 7 8const float ThornsEnchantment::CHANCE_PER_LEVEl = 0.15f; 9 10ThornsEnchantment::ThornsEnchantment(int id, int freq) : Enchantment(id, freq, EnchantmentCategory::armor_torso) 11{ 12 setDescriptionId(IDS_ENCHANTMENT_THORNS); 13} 14 15int ThornsEnchantment::getMinCost(int level) 16{ 17 return 10 + 20 * (level - 1); 18} 19 20int ThornsEnchantment::getMaxCost(int level) 21{ 22 return Enchantment::getMinCost(level) + 50; 23} 24 25int ThornsEnchantment::getMaxLevel() 26{ 27 return 3; 28} 29 30bool ThornsEnchantment::canEnchant(shared_ptr<ItemInstance> item) 31{ 32 ArmorItem *armor = dynamic_cast<ArmorItem *>(item->getItem()); 33 if (armor) return true; 34 return Enchantment::canEnchant(item); 35} 36 37bool ThornsEnchantment::shouldHit(int level, Random *random) 38{ 39 if (level <= 0) return false; 40 return random->nextFloat() < CHANCE_PER_LEVEl * level; 41} 42 43int ThornsEnchantment::getDamage(int level, Random *random) 44{ 45 if (level > 10) 46 { 47 return level - 10; 48 } 49 else 50 { 51 return 1 + random->nextInt(4); 52 } 53} 54 55void ThornsEnchantment::doThornsAfterAttack(shared_ptr<Entity> source, shared_ptr<LivingEntity> target, Random *random) 56{ 57 int level = EnchantmentHelper::getArmorThorns(target); 58 shared_ptr<ItemInstance> item = EnchantmentHelper::getRandomItemWith(Enchantment::thorns, target); 59 60 if (shouldHit(level, random)) 61 { 62 source->hurt(DamageSource::thorns(target), getDamage(level, random)); 63 source->playSound(eSoundType_DAMAGE_THORNS, .5f, 1.0f); 64 65 if (item != NULL) 66 { 67 item->hurtAndBreak(3, target); 68 } 69 } 70 else 71 { 72 if (item != NULL) 73 { 74 item->hurtAndBreak(1, target); 75 } 76 } 77}