def register_zuls_aegis(): _register_ability() register_buff_effect(BUFF_TYPE_STUNNED, StunnedFromAegis) item_type = ItemType.ZULS_AEGIS effect = ItemEffect() register_custom_effect_item( item_type=item_type, item_level=7, ui_icon_sprite=UiIconSprite.ITEM_ZULS_AEGIS, sprite=Sprite.ITEM_ZULS_AEGIS, image_file_path="resources/graphics/item_zuls_aegis.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Zul's Aegis", custom_effect=effect, stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [3]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [6]), StatModifierInterval(HeroStat.DAMAGE, [0.12]), StatModifierInterval(HeroStat.MANA_ON_KILL, [1]) ], custom_description=[ "On block: stun attacker for " + "{:.1f}".format(STUN_DURATION / 1000) + "s", "Active: " + ABILITY_DESCRIPTION ], is_unique=True, active_ability_type=ABILITY_TYPE)
def register_royal_sword_item(): register_randomized_stat_modifying_item( item_type=ItemType.ROYAL_SWORD, item_level=5, ui_icon_sprite=UiIconSprite.ITEM_ROYAL_SWORD, sprite=Sprite.ITEM_ROYAL_SWORD, image_file_path="resources/graphics/item_royal_sword.png", item_equipment_category=ItemEquipmentCategory.MAIN_HAND, name="Royal sword", stat_modifier_intervals=[StatModifierInterval(HeroStat.PHYSICAL_DAMAGE, interval(0.25, 0.35, 0.01)), StatModifierInterval(HeroStat.ARMOR, [1])] )
def register_skull_sword_item(): item_type = ItemType.SKULL_SWORD register_randomized_stat_modifying_item( item_type=item_type, item_level=8, ui_icon_sprite=UiIconSprite.ITEM_SKULL_SWORD, sprite=Sprite.ITEM_SKULL_SWORD, image_file_path="resources/graphics/item_skull_sword.png", item_equipment_category=ItemEquipmentCategory.MAIN_HAND, name="Skull sword", stat_modifier_intervals=[StatModifierInterval(HeroStat.PHYSICAL_DAMAGE, interval(0.4, 0.5, 0.01)), StatModifierInterval(HeroStat.LIFE_STEAL, interval(0.10, 0.15, 0.01))] )
def register_sun_shield_item(): item_type = ItemType.SUN_SHIELD register_randomized_stat_modifying_item( item_type=item_type, item_level=8, ui_icon_sprite=UiIconSprite.ITEM_SUN_SHIELD, sprite=Sprite.ITEM_SUN_SHIELD, image_file_path="resources/graphics/item_sun_shield.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Sun shield", stat_modifier_intervals=[StatModifierInterval(HeroStat.ARMOR, [3]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [15, 16, 17, 18])] )
def register_fire_gauntlet_item(): item_type = ItemType.FIRE_GAUNTLET register_randomized_stat_modifying_item( item_type=item_type, item_level=6, ui_icon_sprite=UiIconSprite.ITEM_FIRE_GAUNTLET, sprite=Sprite.ITEM_FIRE_GAUNTLET, image_file_path="resources/graphics/item_fire_gauntlet.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Fire gauntlet", stat_modifier_intervals=[StatModifierInterval(HeroStat.DAMAGE, interval(0.15, 0.2, 0.01)), StatModifierInterval(HeroStat.HEALTH_REGEN, interval(0.2, 0.4, 0.1))] )
def register_wooden_shield(): register_randomized_stat_modifying_item( item_type=ItemType.WOODEN_SHIELD, item_level=1, ui_icon_sprite=UiIconSprite.ITEM_WOODEN_SHIELD, sprite=Sprite.ITEM_WOODEN_SHIELD, image_file_path="resources/graphics/item_wooden_shield.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Wooden shield", stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [1]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [3]) ])
def register_staff_of_fire_item(): register_randomized_stat_modifying_item( item_type=ItemType.STAFF_OF_FIRE, ui_icon_sprite=UiIconSprite.ITEM_STAFF_OF_FIRE, sprite=Sprite.ITEM_STAFF_OF_FIRE, image_file_path="resources/graphics/item_staff_of_fire.png", item_equipment_category=ItemEquipmentCategory.MAIN_HAND, name="Staff of the Phoenix", stat_modifier_intervals=[ StatModifierInterval(HeroStat.MAGIC_DAMAGE, [0.25]), StatModifierInterval(HeroStat.MAX_MANA, [10]), StatModifierInterval(HeroStat.LIFE_ON_KILL, [1]) ], is_unique=True)
def register_blessed_shield_item(): register_custom_effect_item( item_type=ITEM_TYPE, item_level=3, ui_icon_sprite=UiIconSprite.ITEM_BLESSED_SHIELD, sprite=Sprite.ITEM_BLESSED_SHIELD, image_file_path="resources/graphics/item_blessed_shield.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Blessed shield", custom_description=["On block: gain " + str(HEALING_AMOUNT) + " health"], stat_modifier_intervals=[StatModifierInterval(HeroStat.ARMOR, [2]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [5, 6, 7])], custom_effect=ItemEffect() )
def register_noble_defender(): item_type = ItemType.NOBLE_DEFENDER register_randomized_stat_modifying_item( item_type=item_type, item_level=6, ui_icon_sprite=UiIconSprite.ITEM_NOBLE_DEFENDER, sprite=Sprite.ITEM_NOBLE_DEFENDER, image_file_path="resources/graphics/item_noble_defender.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Lion shield", stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [4]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [8, 9, 10]), StatModifierInterval(HeroStat.BLOCK_CHANCE, [0.04, 0.05]) ])
def register_lich_armor_item(): register_randomized_stat_modifying_item( item_type=ItemType.LICH_ARMOR, item_level=7, ui_icon_sprite=UiIconSprite.ITEM_LICH_ARMOR, sprite=Sprite.ITEM_LICH_ARMOR, image_file_path="resources/graphics/item_lich_armor.png", item_equipment_category=ItemEquipmentCategory.CHEST, name="Lich armor", stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [1]), StatModifierInterval(HeroStat.MAX_MANA, [40]), StatModifierInterval(HeroStat.MAGIC_RESIST_CHANCE, [0.05]) ], is_unique=True)
def register_lich_armor_item(): _register_ability() register_custom_effect_item( item_type=ItemType.LICH_ARMOR, item_level=8, ui_icon_sprite=UiIconSprite.ITEM_LICH_ARMOR, sprite=Sprite.ITEM_LICH_ARMOR, image_file_path="resources/graphics/item_lich_armor.png", item_equipment_category=ItemEquipmentCategory.CHEST, name=ITEM_NAME, custom_description=["25% of damage taken is instead drained from your mana", "Active: " + ABILITY_DESCRIPTION], custom_effect=ItemEffect(), stat_modifier_intervals=[StatModifierInterval(HeroStat.MAX_MANA, [30]), StatModifierInterval(HeroStat.MAGIC_RESIST_CHANCE, [0.05])], is_unique=True, active_ability_type=ABILITY_TYPE )
def register_thiefs_mask_item(): register_custom_effect_item( item_type=ItemType.THIEFS_MASK, ui_icon_sprite=UiIconSprite.ITEM_THIEFS_MASK, sprite=Sprite.ITEM_THIEFS_MASK, image_file_path="resources/graphics/item_thiefs_mask.png", item_equipment_category=ItemEquipmentCategory.HEAD, name="Mask of Thieves", custom_description=[ "On dodge: gain " + str(MANA_ON_DODGE_AMOUNT) + " mana" ], custom_effect=ItemEffect(), stat_modifier_intervals=[ StatModifierInterval(HeroStat.DODGE_CHANCE, [0.09]), StatModifierInterval(HeroStat.DAMAGE, [0.12]), StatModifierInterval(HeroStat.MANA_REGEN, [0.05]) ], is_unique=True)
def register_leather_cowl_item(): register_randomized_stat_modifying_item( item_type=ItemType.LEATHER_COWL, item_level=1, ui_icon_sprite=UiIconSprite.ITEM_LEATHER_COWL, sprite=Sprite.ITEM_LEATHER_COWL, image_file_path="resources/graphics/item_leather_cowl.png", item_equipment_category=ItemEquipmentCategory.HEAD, name="Leather cowl", stat_modifier_intervals=[StatModifierInterval(HeroStat.ARMOR, [1])])
def register_skull_shield_item(): item_type = ItemType.SKULL_SHIELD register_custom_effect_item( item_type=item_type, item_level=5, ui_icon_sprite=UiIconSprite.ITEM_SKULL_SHIELD, sprite=Sprite.ITEM_SKULL_SHIELD, image_file_path="resources/graphics/item_skull_shield.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Skull shield", custom_description=[ "On block: deal " + str(DAMAGE_AMOUNT) + " magic damage to attacker" ], stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [2]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [6, 7, 8]) ], custom_effect=(ItemEffect()))
def register_practice_sword_item(): register_randomized_stat_modifying_item( item_type=ItemType.PRACTICE_SWORD, ui_icon_sprite=UiIconSprite.ITEM_PRACTICE_SWORD, sprite=Sprite.ITEM_PRACTICE_SWORD, image_file_path="resources/graphics/item_practice_sword.png", item_equipment_category=ItemEquipmentCategory.MAIN_HAND, name="Practice sword", stat_modifier_intervals=[ StatModifierInterval(HeroStat.PHYSICAL_DAMAGE, [0.03]) ])
def register_winged_helmet_item(): _register_buff() _register_ability() register_custom_effect_item( item_type=ItemType.WINGED_HELMET, ui_icon_sprite=UiIconSprite.ITEM_WINGED_HELMET, sprite=Sprite.ITEM_WINGED_HELMET, image_file_path="resources/graphics/item_winged_helmet.png", item_equipment_category=ItemEquipmentCategory.HEAD, name=ITEM_NAME, stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [3]), StatModifierInterval(HeroStat.MOVEMENT_SPEED, [0.18]) ], custom_effect=AbstractItemEffect(), custom_description=["Active: " + ABILITY_DESCRIPTION], item_level=6, is_unique=True, active_ability_type=ABILITY_TYPE)
def register_warlords_armor_item(): register_randomized_stat_modifying_item( item_type=ItemType.WARLORDS_ARMOR, item_level=7, ui_icon_sprite=UiIconSprite.ITEM_WARLORDS_ARMOR, sprite=Sprite.ITEM_WARLORDS_ARMOR, image_file_path="resources/graphics/item_warlords_armor.png", item_equipment_category=ItemEquipmentCategory.CHEST, name="Warlord's armor", stat_modifier_intervals=[StatModifierInterval(HeroStat.ARMOR, [4])], )
def register_candle_item(): _register_buff() _register_ability() register_custom_effect_item( item_type=ItemType.CANDLE, ui_icon_sprite=UiIconSprite.ITEM_CANDLE, sprite=Sprite.ITEM_CANDLE, image_file_path="resources/graphics/item_candle.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name=ITEM_NAME, stat_modifier_intervals=[ StatModifierInterval(HeroStat.MAGIC_RESIST_CHANCE, [0.12]), StatModifierInterval(HeroStat.MAX_MANA, [10]), StatModifierInterval(HeroStat.MANA_REGEN, [0.1]) ], custom_effect=AbstractItemEffect(), custom_description=["Active: " + ABILITY_DESCRIPTION], item_level=3, is_unique=True, active_ability_type=ABILITY_TYPE)
def register_whip_item(): _register_buff() _register_ability() register_custom_effect_item( item_type=ItemType.WHIP, ui_icon_sprite=UiIconSprite.ITEM_WHIP, sprite=Sprite.ITEM_WHIP, image_file_path="resources/graphics/item_whip.png", item_equipment_category=ItemEquipmentCategory.MAIN_HAND, name=ITEM_NAME, stat_modifier_intervals=[ StatModifierInterval(HeroStat.PHYSICAL_DAMAGE, [0.18]), StatModifierInterval(HeroStat.LIFE_STEAL, [0.07]), StatModifierInterval(HeroStat.LIFE_ON_KILL, [1]) ], custom_effect=AbstractItemEffect(), custom_description=["Active: " + ABILITY_DESCRIPTION], item_level=5, is_unique=True, active_ability_type=ABILITY_TYPE)
def register_blood_amulet(): _register_buff() item_type = ItemType.BLOOD_AMULET register_custom_effect_item( item_type=item_type, item_level=4, ui_icon_sprite=UiIconSprite.ITEM_BLOOD_AMULET, sprite=Sprite.ITEM_BLOOD_AMULET, image_file_path="resources/graphics/item_blood_amulet.png", item_equipment_category=ItemEquipmentCategory.NECK, name=ITEM_NAME, custom_effect=ItemEffect(), stat_modifier_intervals=[StatModifierInterval(HeroStat.HEALTH_REGEN, [0.2]), StatModifierInterval(HeroStat.MAX_MANA, [7]), StatModifierInterval(HeroStat.MAX_HEALTH, [9])], custom_description=[str(int(PROC_CHANCE * 100)) + "% on kill: gain +" + str( int(BUFF_LIFE_STEAL_BONUS * 100)) + "% lifesteal and " + str( int(BUFF_DAMAGE * 100)) + " attack power for " + "{:.0f}".format(DURATION / 1000) + "s."], is_unique=True )
def register_messengers_hat_item(): register_randomized_stat_modifying_item( item_type=ItemType.MESSENGERS_HAT, item_level=4, ui_icon_sprite=UiIconSprite.ITEM_MESSENGERS_HAT, sprite=Sprite.ITEM_MESSENGERS_HAT, image_file_path="resources/graphics/item_messengers_hat.png", item_equipment_category=ItemEquipmentCategory.HEAD, name="Messenger hat", stat_modifier_intervals=[ StatModifierInterval(HeroStat.MOVEMENT_SPEED, [0.2]) ])
def register_noble_defender(): item_type = ItemType.NOBLE_DEFENDER register_custom_effect_item( item_type=item_type, item_level=6, ui_icon_sprite=UiIconSprite.ITEM_NOBLE_DEFENDER, sprite=Sprite.ITEM_NOBLE_DEFENDER, image_file_path="resources/graphics/item_noble_defender.png", item_equipment_category=ItemEquipmentCategory.OFF_HAND, name="Noble defender", custom_description=[ "When you are attacked, your movement speed is slowed by {:.0f}". format(SLOW_AMOUNT * 100) + "% for " + "{:.1f}".format(SLOW_DURATION / 1000) + "s" ], stat_modifier_intervals=[ StatModifierInterval(HeroStat.ARMOR, [4]), StatModifierInterval(HeroStat.BLOCK_AMOUNT, [8, 9, 10]) ], custom_effect=ItemEffect()) register_buff_effect(BUFF_TYPE_SLOWED, SlowedFromNobleDefender)
def register_wizards_cowl(): item_type = ItemType.WIZARDS_COWL register_randomized_stat_modifying_item( item_type=item_type, item_level=5, ui_icon_sprite=UiIconSprite.ITEM_WIZARDS_COWL, sprite=Sprite.ITEM_WIZARDS_COWL, image_file_path="resources/graphics/item_wizards_cowl.png", item_equipment_category=ItemEquipmentCategory.HEAD, name="Wizard cowl", stat_modifier_intervals=[ StatModifierInterval(HeroStat.MANA_ON_KILL, [2, 3]) ], )
def register_cleaver_item(): register_custom_effect_item( item_type=ITEM_TYPE, item_level=7, ui_icon_sprite=UiIconSprite.ITEM_CLEAVER, sprite=Sprite.ITEM_CLEAVER, image_file_path="resources/graphics/item_cleaver.png", item_equipment_category=ItemEquipmentCategory.MAIN_HAND, name="The Cleaver", custom_effect=ItemEffect(), custom_description=[str( int(PROC_CHANCE * 100)) + "% on hit: cause enemy to bleed, taking " + str(TOTAL_DAMAGE) + \ " physical damage over " + "{:.0f}".format(BUFF_DURATION / 1000) + "s"], stat_modifier_intervals=[StatModifierInterval(HeroStat.PHYSICAL_DAMAGE, [0.41])], is_unique=True ) register_buff_effect(BUFF_TYPE, BuffEffect)
def register_necklace_of_suffering_item(): register_custom_effect_item( item_type=ITEM_TYPE, item_level=6, ui_icon_sprite=UiIconSprite.ITEM_NECKLACE_OF_SUFFERING, sprite=Sprite.ITEM_NECKLACE_OF_SUFFERING, image_file_path="resources/graphics/item_necklace_of_suffering.png", item_equipment_category=ItemEquipmentCategory.NECK, name="Necklace of Domination", custom_description=[ "Any time you lose health, gain +" + str(int(BUFF_DAMAGE * 100)) + "% damage for " + "{:.0f}".format(BUFF_DURATION / 1000) + "s" ], custom_effect=ItemEffect(), stat_modifier_intervals=[StatModifierInterval(HeroStat.DAMAGE, [0.1])], is_unique=True) register_buff_effect(BUFF_TYPE, BuffEffect)