Guest User

Untitled

a guest
May 16th, 2025
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.11 KB | None | 0 0
  1. --[[-----------------------------------------------------------------------------------------------
  2. File : sa_upgrade.script
  3. Description : Апгрейд оружия
  4. Copyright : Shadows Addon
  5. Author : Ray Twitty aka Shadows
  6. Date : 30.01.2012
  7. Last edit : 14.01.2019
  8. --]]-----------------------------------------------------------------------------------------------
  9. local upgrade_dialog, talk_dialog
  10. --[[-----------------------------------------------------------------------------------------------
  11. * UPGRADE DIALOG
  12. --]]-----------------------------------------------------------------------------------------------
  13. class "CUIUpgradeListItem" (CUIListItemEx)
  14. function CUIUpgradeListItem:__init(obj, xml) super()
  15. self.st_item_name = xml:InitStatic("list_item_static", self)
  16. self.st_item_name:SetText(get_inventory_item_data(obj, "inv_name"))
  17. --[[if db.actor:is_in_slot(obj) then
  18. self.st_item_name:SetTextColor(255, 100, 230, 100)
  19. end]]
  20. if exist_line(obj:section(), "installed_upgrades") then
  21. self.st_item_name:InitTexture("ui_beltweaponUpd")
  22. end
  23. end
  24. ---------------------------------------------------------------------------------------------------
  25. class "CUIUpgradeDialog" (CUIScriptWnd)
  26. function CUIUpgradeDialog:__init(mechanic, mechanic_data, ini) super()
  27. self:Init(0, 0, 1024, 768)
  28. self.last_id = 0
  29. self.list_ids = {}
  30. self.btn_upgrade_cells = {}
  31. self.st_green_indicators = {}
  32. self.mechanic = mechanic
  33. self.mechanic_data = mechanic_data
  34. self.ini = ini
  35. self.xml = CScriptXmlInit()
  36. self.xml:ParseFile("upgrade.xml")
  37. -- background static
  38. self.st_background = self.xml:InitStatic("main", self)
  39. -- top background static
  40. self.xml:InitStatic("top_background", self)
  41. -- bottom background static
  42. self.xml:InitStatic("bottom_background", self)
  43. -- weight static
  44. self.st_weight = self.xml:InitStatic("weight_static", self.st_background)
  45. self.st_weight:SetText(self:weight_static())
  46. -- items list
  47. self.list_items = self.xml:InitList("items_list", self.st_background)
  48. self.list_items:ShowSelectedItem(true)
  49. self:Register(self.list_items, "items_list")
  50. db.actor:iterate_inventory(
  51. function(dummy, obj)
  52. if obj:is_weapon_magazined()
  53. or obj:is_binoculars()
  54. or read_line(obj:section(), "upgrade_allowed", "bool")
  55. or obj:is_outfit() then
  56. self.list_items:AddItem(CUIUpgradeListItem(obj, self.xml))
  57. table.insert(self.list_ids, obj:id())
  58. end
  59. end
  60. )
  61. self:AddCallback("items_list", ui_events.LIST_ITEM_CLICKED, self.on_list_items, self)
  62. -- repair button
  63. self.btn_repair = self.xml:Init3tButton("repair_button", self.st_background)
  64. self.btn_repair:Enable(false)
  65. self:Register(self.btn_repair, "repair_button")
  66. self:AddCallback("repair_button", ui_events.BUTTON_CLICKED, self.on_button_repair, self)
  67. -- upgrade button
  68. self.btn_upgrade = self.xml:Init3tButton("upgrade_button", self.st_background)
  69. self.btn_upgrade:Enable(false)
  70. self:Register(self.btn_upgrade, "upgrade_button")
  71. self:AddCallback("upgrade_button", ui_events.BUTTON_CLICKED, self.on_button_upgrade, self)
  72. -- exit button
  73. self:Register(self.xml:Init3tButton("exit_button", self), "exit_button")
  74. self:AddCallback("exit_button", ui_events.BUTTON_CLICKED, self.on_button_exit, self)
  75. end
  76. ---------------------------------------------------------------------------------------------------
  77. function CUIUpgradeDialog:on_list_items()
  78. if validate_list(self.list_items) then
  79. self.current_index = self.list_items:GetSelectedItem()
  80. self.current_item = self.list_items:GetItem(self.current_index)
  81. local current_id = self.list_ids[self.current_index + 1]
  82. if self.last_id ~= current_id then
  83. self:update_object_data(level.object_by_id(current_id))
  84. self:update_item_info()
  85. self:hide_upgrade_info()
  86. self:clear_green_indicators()
  87. self:update_upgrade_cells(true)
  88. self.last_id = current_id
  89. end
  90. end
  91. end
  92. ---------------------------------------------------------------------------------------------------
  93. function CUIUpgradeDialog:on_button_repair()
  94. if self.condition >= self.mechanic_data.min_condition then
  95. if db.actor:money() >= self:generate_repair_cost() then
  96. start_message_box("ui_st_repair_item", "alarm", "yes_no", {"sa_upgrade.get_upgrade_dialog():item_repair()"})
  97. else
  98. start_message_box("ui_st_not_enough_money", "red")
  99. end
  100. else
  101. start_message_box("ui_st_repair_critical_condition", "red")
  102. end
  103. end
  104. ---------------------------------------------------------------------------------------------------
  105. function CUIUpgradeDialog:on_button_upgrade()
  106. if self.condition >= self.mechanic_data.upgrade_min_condition then
  107. if db.actor:money() >= self:generate_upgrade_cost() then
  108. start_message_box("ui_st_upgrade_item", "alarm", "yes_no", {"sa_upgrade.get_upgrade_dialog():item_upgrade()"})
  109. else
  110. start_message_box("ui_st_not_enough_money", "red")
  111. end
  112. else
  113. start_message_box("ui_st_upgrade_critical_condition", "red")
  114. end
  115. end
  116. ---------------------------------------------------------------------------------------------------
  117. function CUIUpgradeDialog:on_button_exit(skip_talk)
  118. upgrade_dialog = nil
  119. level.start_stop_menu(self, true)
  120. db.actor:restore_weapon()
  121. if not skip_talk then
  122. db.actor:run_talk_dialog(self.mechanic)
  123. end
  124. db.actor:give_info_portion("ui_upgrade_hide")
  125. end
  126. ---------------------------------------------------------------------------------------------------
  127. function CUIUpgradeDialog:update_item_info()
  128. -- item info static
  129. if not self.st_item_info then
  130. self.st_item_info = self.xml:InitStatic("item_info", self.st_background)
  131. end
  132. -- item image static
  133. if not self.st_item_image then
  134. self.st_item_image = self.xml:InitStatic("item_info:image_static", self.st_item_info)
  135. end
  136. self.st_item_image:InitTexture(read_line(self.section, "image", "string", system_ini(), "$empty"))
  137. -- item name static
  138. if not self.st_item_name then
  139. self.st_item_name = self.xml:InitStatic("item_info:name_static", self.st_item_info)
  140. end
  141. self.st_item_name:SetText(get_inventory_item_data(self.object, "inv_name"))
  142. -- item description scroll view
  143. if not self.sv_item_descr then
  144. self.sv_item_descr = self.xml:InitScrollView("item_info:scroll_view", self.st_item_info)
  145. end
  146. self.sv_item_descr:Clear()
  147. -- item description static
  148. if self.st_item_descr then
  149. self.st_item_descr:DetachFromParent()
  150. end
  151. self.st_item_descr = self.xml:InitStatic("item_info:descr_static", self.sv_item_descr)
  152. self.st_item_descr:SetText(get_inventory_item_data(self.object, "description"))
  153. self.st_item_descr:AdjustHeightToText()
  154. -- item weight static
  155. if not self.st_item_weight then
  156. self.st_item_weight = self.xml:InitStatic("item_info:weight_static", self.st_item_info)
  157. end
  158. self.st_item_weight:SetText(string.format("%s: %.2f kg", game.translate_string("st_weight"), self.object:get_weight()))
  159. -- item cost static
  160. if not self.st_item_cost then
  161. self.st_item_cost = self.xml:InitStatic("item_info:cost_static", self.st_item_info)
  162. end
  163. self.st_item_cost:SetText(game.translate_string("st_base_cost")..": "..self.object:cost().." RU")
  164. -- item condition progress bar
  165. if not self.pb_item_condition then
  166. self.pb_item_condition = self.xml:InitProgressBar("item_info:condition_progress", self.st_item_info)
  167. end
  168. self.pb_item_condition:SetProgressPos(self.condition * 100)
  169. -- item condition static
  170. if not self.st_item_condition then
  171. self.st_item_condition = self.xml:InitStatic("item_info:condition_static", self.st_item_info)
  172. end
  173. -- money static
  174. if not self.st_money then
  175. self.st_money = self.xml:InitStatic("item_info:money_static", self.st_item_info)
  176. end
  177. self.st_money:SetText(game.translate_string("id_mp_money")..": "..db.actor:money().." RU")
  178. -- repair static
  179. if not self.st_repair then
  180. self.st_repair = self.xml:InitStatic("item_info:repair_static", self.st_item_info)
  181. end
  182. if self.condition < 0.99 then
  183. self.st_repair:SetText(game.translate_string("ui_upgr_repair_cost")..": "..self:generate_repair_cost().." RU")
  184. self.btn_repair:Enable(true)
  185. else
  186. self.st_repair:SetTextST("ui_upgr_item_not_need_repair")
  187. self.btn_repair:Enable(false)
  188. end
  189. end
  190. ---------------------------------------------------------------------------------------------------
  191. function CUIUpgradeDialog:update_upgrade_info()
  192. -- upgrade info static
  193. if not self.st_upgrade_info then
  194. self.st_upgrade_info = self.xml:InitStatic("upgrade_info", self.st_background)
  195. end
  196. self.st_upgrade_info:Show(true)
  197. -- upgrade name static
  198. if not self.st_upgrade_name then
  199. self.st_upgrade_name = self.xml:InitStatic("upgrade_info:name_static", self.st_upgrade_info)
  200. end
  201. self.st_upgrade_name:SetTextST(self.upgrade_data.name)
  202. -- upgrade description scroll view
  203. if not self.sv_upgrade_descr then
  204. self.sv_upgrade_descr = self.xml:InitScrollView("upgrade_info:scroll_view", self.st_upgrade_info)
  205. end
  206. self.sv_upgrade_descr:Clear()
  207. -- upgrade description static
  208. if self.st_upgrade_descr then
  209. self.st_upgrade_descr:DetachFromParent()
  210. end
  211. self.st_upgrade_descr = self.xml:InitStatic("upgrade_info:descr_static", self.sv_upgrade_descr)
  212. self.st_upgrade_descr:SetTextST(self.upgrade_data.description)
  213. self.st_upgrade_descr:AdjustHeightToText()
  214. -- upgrade cost static
  215. if not self.st_upgrade_cost then
  216. self.st_upgrade_cost = self.xml:InitStatic("upgrade_info:cost_static", self.st_upgrade_info)
  217. end
  218. self.st_upgrade_cost:SetText(game.translate_string("st_base_cost")..": "..self:generate_upgrade_cost().." RU")
  219. end
  220. ---------------------------------------------------------------------------------------------------
  221. function CUIUpgradeDialog:hide_upgrade_info()
  222. if self.st_upgrade_info then
  223. self.st_upgrade_info:Show(false)
  224. end
  225. self.btn_upgrade:Enable(false)
  226. end
  227. ---------------------------------------------------------------------------------------------------
  228. function CUIUpgradeDialog:add_green_indicator(btn_name)
  229. local btn = self:GetButton(btn_name)
  230. self.st_green_indicator = CUIStatic()
  231. self.st_green_indicator:Init("ui_upgrade_cell_green_upgraded", btn:GetHPos() + 3, btn:GetVPos() + 3, 5, 38)
  232. self.st_background:AttachChild(self.st_green_indicator)
  233. table.insert(self.st_green_indicators, self.st_green_indicator)
  234. end
  235. ---------------------------------------------------------------------------------------------------
  236. function CUIUpgradeDialog:clear_green_indicators()
  237. for k, v in pairs(self.st_green_indicators) do
  238. v:DetachFromParent()
  239. end
  240. clear_table(self.st_green_indicators)
  241. end
  242. ---------------------------------------------------------------------------------------------------
  243. function CUIUpgradeDialog:on_button_upgrade_cell(upgrade_data, enable)
  244. self.upgrade_data = upgrade_data
  245. self:update_upgrade_info()
  246. self.btn_upgrade:Enable(enable)
  247. end
  248. ---------------------------------------------------------------------------------------------------
  249. function CUIUpgradeDialog:item_repair()
  250. db.actor:transfer_money(self:generate_repair_cost(), self.mechanic)
  251. self.object:set_condition(1)
  252. self.condition = 1
  253. self:update_item_info()
  254. end
  255. ---------------------------------------------------------------------------------------------------
  256. function CUIUpgradeDialog:item_upgrade()
  257. db.actor:transfer_money(self:generate_upgrade_cost(), self.mechanic)
  258. self:replace_item(self.upgrade_data.replace_section)
  259. self:add_green_indicator(self.upgrade_data.btn_upgrade_cell_name)
  260. self.btn_upgrade:Enable(false)
  261. end
  262. ---------------------------------------------------------------------------------------------------
  263. function CUIUpgradeDialog:update_upgrade_cells(first_init)
  264. if first_init then
  265. for k, v in pairs(self.btn_upgrade_cells) do
  266. v:DetachFromParent()
  267. end
  268. clear_table(self.btn_upgrade_cells)
  269. if self.upgrade_allowed then
  270. for k, v in pairs(self.upgrades_table) do
  271. self.btn_upgrade_cell = self.xml:Init3tButton(self.upgrade_scheme..":cell_"..k, self.st_background)
  272. self.btn_upgrade_cell:Enable(false)
  273. self:Register(self.btn_upgrade_cell, v)
  274. --self:AddCallback(v, ui_events.BUTTON_DOWN, function() self:on_button_upgrade_cell(self:get_upgrade_data(k, v)) end)
  275. self.btn_upgrade_cells[k] = self.btn_upgrade_cell
  276. end
  277. if self.available_upgrades_table and self.available_upgrades_table[1] ~= "none" then
  278. self:unlock_upgrades(self.available_upgrades_table)
  279. end
  280. if self.installed_upgrades_table then
  281. for k, v in pairs(self.installed_upgrades_table) do
  282. self:add_green_indicator(v)
  283. end
  284. end
  285. end
  286. else
  287. if self.upgrade_allowed then
  288. if self.upgrades_table then
  289. self:lock_upgrades(self.upgrades_table)
  290. end
  291. if self.available_upgrades_table and self.available_upgrades_table[1] ~= "none" then
  292. self:unlock_upgrades(self.available_upgrades_table)
  293. end
  294. end
  295. end
  296. end
  297. ---------------------------------------------------------------------------------------------------
  298. function CUIUpgradeDialog:update_object_data(obj)
  299. self.object = obj
  300. self.section = obj:section()
  301. self.condition = obj:condition()
  302. self.upgrade_allowed = read_line(self.section, "upgrade_allowed", "bool")
  303. if self.upgrade_allowed then
  304. self.upgrades_table = string.split(read_line(self.section, "upgrades", "string"), ",")
  305. self.available_upgrades_table = string.split(read_line(self.section, "available_upgrades", "string"), ",")
  306. self.installed_upgrades_table = string.split(read_line(self.section, "installed_upgrades", "string"), ",")
  307. self.upgrade_scheme = read_line(self.section, "upgrade_scheme", "string")
  308. end
  309. end
  310. ---------------------------------------------------------------------------------------------------
  311. function CUIUpgradeDialog:get_upgrade_data(btn_upgrade_cell_id, btn_upgrade_cell_name)
  312. local upgrade = self.upgrades_table[btn_upgrade_cell_id]
  313. if upgrade then
  314. local upgrade_data = {}
  315. upgrade_data.name = read_line(upgrade, "name", "string", self.ini)
  316. upgrade_data.description = read_line(upgrade, "description", "string", self.ini)
  317. upgrade_data.cost = read_line(upgrade, "cost", "number", self.ini)
  318. upgrade_data.replace_section = read_line(upgrade, "replace_section", "string", self.ini)
  319. upgrade_data.btn_upgrade_cell_name = btn_upgrade_cell_name
  320. return upgrade_data
  321. end
  322. end
  323. ---------------------------------------------------------------------------------------------------
  324. function CUIUpgradeDialog:lock_upgrades(lock_upgrades_table)
  325. for k, v in pairs(lock_upgrades_table) do
  326. self:GetButton(v):Enable(false)
  327. end
  328. end
  329. ---------------------------------------------------------------------------------------------------
  330. function CUIUpgradeDialog:unlock_upgrades(unlock_upgrades_table)
  331. for k, v in pairs(unlock_upgrades_table) do
  332. self:GetButton(v):Enable(true)
  333. end
  334. end
  335. ---------------------------------------------------------------------------------------------------
  336. function CUIUpgradeDialog:weight_static()
  337. local outfit = db.actor:get_current_outfit()
  338. local total_weight = db.actor:get_inventory_weight()
  339. local max_weight = db.actor:get_actor_max_weight()
  340. if outfit then
  341. max_weight = max_weight + get_outfit_data(outfit, "additional_inventory_weight2")
  342. end
  343. if total_weight > max_weight then
  344. return string.format("%s%s %s%.1f %s/ %.1f", "%c[UI_orange]", game.translate_string("ui_inv_weight"), "%c[red]", total_weight, "%c[UI_orange]", max_weight)
  345. else
  346. return string.format("%s%s %.1f / %.1f", "%c[UI_orange]", game.translate_string("ui_inv_weight"), total_weight, max_weight)
  347. end
  348. end
  349. ---------------------------------------------------------------------------------------------------
  350. function CUIUpgradeDialog:generate_repair_cost()
  351. return math.floor((1 - self.condition) * self.object:cost() * self.mechanic_data.markup)
  352. end
  353. ---------------------------------------------------------------------------------------------------
  354. function CUIUpgradeDialog:generate_upgrade_cost()
  355. return math.floor(self.upgrade_data.cost * self.mechanic_data.upgrade_markup)
  356. end
  357. ---------------------------------------------------------------------------------------------------
  358. function CUIUpgradeDialog:replace_item(section)
  359. if self.object:is_weapon() then
  360. if get_weapon_data(self.object, "is_attached_scope") then
  361. spawn_item_in_inv(get_weapon_data(self.object, "scope_name"))
  362. end
  363. if get_weapon_data(self.object, "is_attached_silencer") then
  364. spawn_item_in_inv(get_weapon_data(self.object, "silencer_name"))
  365. end
  366. if get_weapon_data(self.object, "is_attached_grenade_launcher") then
  367. spawn_item_in_inv(get_weapon_data(self.object, "grenade_launcher_name"))
  368. end
  369. self.object:unload_magazine()
  370. end
  371. remove_object(self.object:id())
  372. local obj = spawn_item_in_inv(section)
  373. level.client_spawn_manager():add(obj.id, 0,
  374. function(condition, id, obj)
  375. obj:set_condition(condition)
  376. if obj:is_weapon() then obj:set_ammo_elapsed(0) end
  377. self:update_object_data(obj)
  378. self:update_item_info()
  379. self:update_upgrade_cells()
  380. self.current_item.st_item_name:SetText(get_inventory_item_data(obj, "inv_name"))
  381. self.current_item.st_item_name:InitTexture("ui_beltweaponUpd")
  382. self.list_ids[self.current_index + 1] = id
  383. self.last_id = id
  384. end,
  385. self.condition)
  386. end
  387. ---------------------------------------------------------------------------------------------------
  388. function CUIUpgradeDialog:Update()
  389. CUIScriptWnd.Update(self)
  390. --[[if self.object then
  391. if db.actor:is_in_slot(self.object) then
  392. self.current_item.st_item_name:SetTextColor(255, 100, 230, 100)
  393. else
  394. self.current_item.st_item_name:SetTextColor(255, 216, 186, 140)
  395. end
  396. end]]
  397. self.st_weight:SetText(self:weight_static())
  398. end
  399. ---------------------------------------------------------------------------------------------------
  400. function CUIUpgradeDialog:OnKeyboard(dik, keyboard_action)
  401. CUIScriptWnd.OnKeyboard(self, dik, keyboard_action)
  402. if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
  403. if dik == DIK_keys.DIK_ESCAPE or dik == bind_to_dik(key_bindings.kUSE) then
  404. self:on_button_exit(true)
  405. elseif dik == DIK_keys.DIK_R and self.btn_repair:IsEnabled() then
  406. self:on_button_repair()
  407. elseif dik == DIK_keys.DIK_U and self.btn_upgrade:IsEnabled() then
  408. self:on_button_upgrade()
  409. elseif dik == DIK_keys.MOUSE_1 then
  410. for k, v in pairs(self.btn_upgrade_cells) do
  411. if k and v and cursor_over_window(self, v) then
  412. self:on_button_upgrade_cell(self:get_upgrade_data(k, v:WindowName()), v:IsEnabled())
  413. break
  414. end
  415. end
  416. end
  417. end
  418. return true
  419. end
  420. --[[-----------------------------------------------------------------------------------------------
  421. * TALK DIALOG
  422. --]]-----------------------------------------------------------------------------------------------
  423. class "CUITalkDialog" (CUIScriptWnd)
  424. function CUITalkDialog:__init(obj) super()
  425. self:Init(0, 0, 1024, 768)
  426. self.ini = ini_file("misc\\upgrade_manager.ltx")
  427. self.object = obj
  428. self.profile_name = string.lower(self.object:profile_name())
  429. self.upgrade_mode = false
  430. self.mechanics = read_list("mechanics", self.ini)
  431. self.xml = CScriptXmlInit()
  432. self.xml:ParseFile("talk.xml")
  433. if self.profile_name ~= "osoznanie" then
  434. -- trade button
  435. self.btn_trade = self.xml:Init3tButton("trade_btn", level.get_talk_wnd())
  436. if self:check_mechanic() then
  437. self.btn_trade:SetTextST("ui_st_upgrade")
  438. self.upgrade_mode = true
  439. self:update_preconditions()
  440. end
  441. self:Register(self.btn_trade, "trade_button")
  442. self:AddCallback("trade_button", ui_events.BUTTON_CLICKED, self.on_button_trade, self)
  443. end
  444. end
  445. ---------------------------------------------------------------------------------------------------
  446. function CUITalkDialog:on_button_trade()
  447. if self.upgrade_mode then
  448. upgrade_dialog = CUIUpgradeDialog(self.object, self:get_mechanic_data(), self.ini)
  449. level.start_stop_menu(upgrade_dialog, true)
  450. db.actor:hide_weapon()
  451. db.actor:stop_talk()
  452. db.actor:give_info_portion("ui_upgrade")
  453. else
  454. db.actor:switch_to_trade()
  455. end
  456. end
  457. ---------------------------------------------------------------------------------------------------
  458. function CUITalkDialog:update_preconditions()
  459. if self.upgrade_mode then
  460. self.btn_trade:Enable(self:check_preconditions())
  461. end
  462. end
  463. ---------------------------------------------------------------------------------------------------
  464. function CUITalkDialog:check_mechanic()
  465. for k, v in pairs(self.mechanics) do
  466. if self.profile_name == string.lower(k) then
  467. return true
  468. end
  469. end
  470. end
  471. ---------------------------------------------------------------------------------------------------
  472. function CUITalkDialog:check_preconditions()
  473. local infoportions_precond = read_line(self.profile_name, "infoportions_precond", "string", self.ini)
  474. if infoportions_precond then
  475. local infoportions_table = string.split(infoportions_precond, ",")
  476. for k, v in pairs(infoportions_table) do
  477. if not has_alife_info(v) then
  478. return
  479. end
  480. end
  481. end
  482. return true
  483. end
  484. ---------------------------------------------------------------------------------------------------
  485. function CUITalkDialog:get_mechanic_data()
  486. local mechanic_data = {}
  487. mechanic_data.min_condition = read_line(self.profile_name, "min_condition", "number", self.ini, 0)
  488. mechanic_data.upgrade_min_condition = read_line(self.profile_name, "upgrade_min_condition", "number", self.ini, 0)
  489. mechanic_data.markup = read_line(self.profile_name, "markup", "number", self.ini, 1)
  490. mechanic_data.upgrade_markup = read_line(self.profile_name, "upgrade_markup", "number", self.ini, 1)
  491. return mechanic_data
  492. end
  493. --[[-----------------------------------------------------------------------------------------------
  494. * INIT
  495. --]]-----------------------------------------------------------------------------------------------
  496. function show_hide_menu(info_id)
  497. if info_id == "ui_talk" then
  498. if not talk_dialog then
  499. talk_dialog = CUITalkDialog(level.get_second_talker())
  500. end
  501. elseif info_id == "ui_talk_hide" then
  502. if talk_dialog then
  503. if talk_dialog.btn_trade then
  504. talk_dialog.btn_trade:DetachFromParent()
  505. end
  506. talk_dialog = nil
  507. end
  508. elseif talk_dialog then
  509. talk_dialog:update_preconditions()
  510. end
  511. end
  512. ---------------------------------------------------------------------------------------------------
  513. function get_upgrade_dialog()
  514. return upgrade_dialog
  515. end
  516.  
Advertisement
Add Comment
Please, Sign In to add comment