-- monkeypatchable inv upgrades to effect repair cost -- inv upgrades ini_parts = itms_manager.ini_parts function section_has_parts(sec) local psec = ini_sys:r_string_ex(sec,"parent_section") or sec local parts = ini_parts:r_string_ex("con_parts_list", psec) return parts ~= nil end -- mp meeeee function how_much_repair( item_name, item_condition ) local cost = ini_sys:r_u32(item_name, "cost") local class = ini_sys:r_string_ex(item_name, "class") local cof = game_difficulties.get_eco_factor("repair") or 1.67 --return math.floor( cost * factor * math.pow(1 - item_condition , 1.63) ) return math.floor( cost * (1 - item_condition) * cof ) -- CoP formula end function inventory_upgrades.can_afford_repair_item( item_name, item_condition ) local price = how_much_repair( item_name, item_condition ) if db.actor:money() < price then return false end return true end function inventory_upgrades.question_repair_item( item_name, item_condition, can, mechanic ) --( string, float, bool, string ) if(item_name=="pri_a17_gauss_rifle") then return game.translate_string("st_gauss_cannot_be_repaired") end if can then local price = how_much_repair( item_name, item_condition ) if db.actor:money() < price then return game.translate_string("st_upgr_cost")..": "..price.." RU\\n"..game.translate_string("ui_inv_not_enought_money")..": "..price-db.actor:money().." RU" end return game.translate_string("st_upgr_cost").." "..price.." RU. "..game.translate_string("ui_st_inv_repair").."?" end return nil end function inventory_upgrades.effect_repair_item( item_name, item_condition) local price = how_much_repair( item_name, item_condition ) db.actor:give_money(-price) if (ui_options.get("gameplay/general/mechanic_feature") ~= true) then return end local item local function itr(actor,itm) if (itm and itm:section() == item_name and itm:condition() == item_condition) then item = itm return true end return false end db.actor:iterate_inventory(itr,db.actor) if (item) then local cls = item:clsid() if (cls == "WP_BINOC") then return end local victim = get_speaker() if (victim) then local damage_factor = 1.0 - clamp(item_condition, 0.0, 1.0) inventory_upgrades.lend_item_for_repair(item,victim:section(),6000*damage_factor) end end end local repair_id OnRepair = ui_inventory.UIInventory.RMode_OnRepair function ui_inventory.UIInventory:RMode_OnRepair() self:Print(nil, "RMode_OnRepair") if (not self.upgr.id) then return end local obj = level.object_by_id(self.upgr.id) if (not obj) then return end repair_id = self.upgr.id OnRepair(self) end RepairYes = ui_inventory.UIInventory.RMode_RepairYes function ui_inventory.UIInventory:RMode_RepairYes() RepairYes(self) repair_id = nil end function get_repair_id() return repair_id end