local ____lualib = require("lualib_bundle") local __TS__Class = ____lualib.__TS__Class local __TS__ClassExtends = ____lualib.__TS__ClassExtends local __TS__Decorate = ____lualib.__TS__Decorate local ____exports = {} local ____modifier_general_hunger = require("abilities.modifiers.modifier_general_hunger") local modifier_buff_food_slot = ____modifier_general_hunger.modifier_buff_food_slot local modifier_general_hunger = ____modifier_general_hunger.modifier_general_hunger local BUFF_FOOD_MAX_SLOTS = ____modifier_general_hunger.BUFF_FOOD_MAX_SLOTS local getBuffFoodSlotCount = ____modifier_general_hunger.getBuffFoodSlotCount local ____dota_ts_adapter = require("lib.dota_ts_adapter") local BaseItem = ____dota_ts_adapter.BaseItem local BaseModifier = ____dota_ts_adapter.BaseModifier local registerAbility = ____dota_ts_adapter.registerAbility local registerModifier = ____dota_ts_adapter.registerModifier --- Сэндвич — бафф-еда: увеличивает размер, броню, урон, но замедляет ____exports.item_sandwich = __TS__Class() local item_sandwich = ____exports.item_sandwich item_sandwich.name = "item_sandwich" item_sandwich.____file_path = "scripts/vscripts/items/util_items/item_sandwich.lua" __TS__ClassExtends(item_sandwich, BaseItem) function item_sandwich.prototype.CastFilterResultTarget(self, target) if IsServer() then if not target:IsRealHero() then return UF_FAIL_CUSTOM end if getBuffFoodSlotCount(nil, target) >= BUFF_FOOD_MAX_SLOTS then return UF_FAIL_CUSTOM end if self:GetCurrentCharges() < self:GetInitialCharges() then return UF_FAIL_CUSTOM end return UF_SUCCESS end return UF_SUCCESS end function item_sandwich.prototype.GetCustomCastErrorTarget(self, target) if IsServer() then if not target:IsRealHero() then return "#dota_hud_error_cheese_bad_target" end if getBuffFoodSlotCount(nil, target) >= BUFF_FOOD_MAX_SLOTS then return "#dota_hud_error_ability_not_ready" end if self:GetCurrentCharges() < self:GetInitialCharges() then return "#dota_hud_error_havent_charges" end end return "" end function item_sandwich.prototype.OnSpellStart(self) local target = self:GetCursorTarget() local item = self if not target then return end target:EmitSound("DOTA_Item.Cheese.Activate") if target:IsRealHero() then local buffDuration = self:GetSpecialValueFor("buff_duration") local bonusDamage = self:GetSpecialValueFor("bonus_damage") local bonusArmor = self:GetSpecialValueFor("bonus_armor") local moveSpeedSlowPct = self:GetSpecialValueFor("move_speed_slow_pct") local modelScale = self:GetSpecialValueFor("model_scale") local hungerModifier = target:AddNewModifier( self:GetCaster(), self, modifier_general_hunger.name, {} ) target:AddNewModifier( self:GetCaster(), self, modifier_buff_food_slot.name, {duration = buffDuration} ) target:AddNewModifier( self:GetCaster(), self, ____exports.modifier_item_sandwich_buff.name, { duration = buffDuration, bonus_damage = bonusDamage, bonus_armor = bonusArmor, move_speed_slow_pct = moveSpeedSlowPct, model_scale = modelScale } ) if hungerModifier then local hunger_bonus = self:GetSpecialValueFor("hunger_bonus") do local i = 0 while i < hunger_bonus do hungerModifier:IncrementStackCount() i = i + 1 end end end if item:GetCurrentCharges() <= item:GetInitialCharges() then UTIL_Remove(item) return end item:SetCurrentCharges(item:GetCurrentCharges() - item:GetInitialCharges()) end end item_sandwich = __TS__Decorate( item_sandwich, item_sandwich, {registerAbility(nil)}, {kind = "class", name = "item_sandwich"} ) ____exports.item_sandwich = item_sandwich ____exports.modifier_item_sandwich_buff = __TS__Class() local modifier_item_sandwich_buff = ____exports.modifier_item_sandwich_buff modifier_item_sandwich_buff.name = "modifier_item_sandwich_buff" modifier_item_sandwich_buff.____file_path = "scripts/vscripts/items/util_items/item_sandwich.lua" __TS__ClassExtends(modifier_item_sandwich_buff, BaseModifier) function modifier_item_sandwich_buff.prototype.____constructor(self, ...) BaseModifier.prototype.____constructor(self, ...) self.bonusDamage = 0 self.bonusArmor = 0 self.moveSpeedSlowPct = 0 self.modelScale = 0 end function modifier_item_sandwich_buff.prototype.IsHidden(self) return false end function modifier_item_sandwich_buff.prototype.IsPurgable(self) return true end function modifier_item_sandwich_buff.prototype.IsDebuff(self) return false end function modifier_item_sandwich_buff.prototype.GetAttributes(self) return MODIFIER_ATTRIBUTE_MULTIPLE end function modifier_item_sandwich_buff.prototype.GetTexture(self) return "../items/utils/sandwich" end function modifier_item_sandwich_buff.prototype.DeclareFunctions(self) return {MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE, MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS, MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE, MODIFIER_PROPERTY_MODEL_SCALE} end function modifier_item_sandwich_buff.prototype.OnCreated(self, params) if (params and params.bonus_damage) ~= nil then self.bonusDamage = params.bonus_damage end if (params and params.bonus_armor) ~= nil then self.bonusArmor = params.bonus_armor end if (params and params.move_speed_slow_pct) ~= nil then self.moveSpeedSlowPct = params.move_speed_slow_pct end if (params and params.model_scale) ~= nil then self.modelScale = params.model_scale end local ability = self:GetAbility() if ability then if self.bonusDamage == 0 then self.bonusDamage = ability:GetSpecialValueFor("bonus_damage") end if self.bonusArmor == 0 then self.bonusArmor = ability:GetSpecialValueFor("bonus_armor") end if self.moveSpeedSlowPct == 0 then self.moveSpeedSlowPct = ability:GetSpecialValueFor("move_speed_slow_pct") end if self.modelScale == 0 then self.modelScale = ability:GetSpecialValueFor("model_scale") end end end function modifier_item_sandwich_buff.prototype.GetModifierPreAttack_BonusDamage(self) return self.bonusDamage end function modifier_item_sandwich_buff.prototype.GetModifierPhysicalArmorBonus(self) return self.bonusArmor end function modifier_item_sandwich_buff.prototype.GetModifierMoveSpeedBonus_Percentage(self) return -self.moveSpeedSlowPct end function modifier_item_sandwich_buff.prototype.GetModifierModelScale(self) return self.modelScale end modifier_item_sandwich_buff = __TS__Decorate( modifier_item_sandwich_buff, modifier_item_sandwich_buff, {registerModifier(nil)}, {kind = "class", name = "modifier_item_sandwich_buff"} ) ____exports.modifier_item_sandwich_buff = modifier_item_sandwich_buff return ____exports