Add a script that clones the currently selected military uniform.
To be precise, it applies to the entity uniform templates, not uniforms for specific squad positions.develop
							parent
							
								
									827dd121d8
								
							
						
					
					
						commit
						dde0f194e8
					
				| @ -0,0 +1,48 @@ | |||||||
|  | -- Clone the current uniform template in the military screen. | ||||||
|  | 
 | ||||||
|  | local utils = require 'utils' | ||||||
|  | local gui = require 'gui' | ||||||
|  | 
 | ||||||
|  | local entity = df.global.ui.main.fortress_entity | ||||||
|  | 
 | ||||||
|  | local args = {...} | ||||||
|  | local vs = dfhack.gui.getCurViewscreen() | ||||||
|  | local vstype = df.viewscreen_layer_militaryst | ||||||
|  | if not vstype:is_instance(vs) then | ||||||
|  |     qerror('Call this from the military screen') | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | local slist = vs.layer_objects[0] | ||||||
|  | 
 | ||||||
|  | if vs.page == vstype.T_page.Uniforms | ||||||
|  | and slist.active and slist.num_entries > 0 | ||||||
|  | and not vs.equip.in_name_uniform | ||||||
|  | then | ||||||
|  |     local idx = slist.num_entries | ||||||
|  | 
 | ||||||
|  |     if #vs.equip.uniforms ~= idx or #entity.uniforms ~= idx then | ||||||
|  |         error('Uniform vector length mismatch') | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     local uniform = vs.equip.uniforms[slist:getListCursor()] | ||||||
|  | 
 | ||||||
|  |     local ucopy = uniform:new() | ||||||
|  |     ucopy.id = entity.next_uniform_id | ||||||
|  |     ucopy.name = ucopy.name..'(Copy)' | ||||||
|  | 
 | ||||||
|  |     for k,v in ipairs(ucopy.uniform_item_info) do | ||||||
|  |         for k2,v2 in ipairs(v) do | ||||||
|  |             v[k2] = v2:new() | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     entity.next_uniform_id = entity.next_uniform_id + 1 | ||||||
|  |     entity.uniforms:insert('#',ucopy) | ||||||
|  |     vs.equip.uniforms:insert('#',ucopy) | ||||||
|  | 
 | ||||||
|  |     slist.num_entries = idx+1 | ||||||
|  |     slist.cursor = idx-1 | ||||||
|  |     gui.simulateInput(vs, 'STANDARDSCROLL_DOWN') | ||||||
|  | else | ||||||
|  |     qerror('Call this with a uniform selected on the Uniforms page of military screen') | ||||||
|  | end | ||||||
		Loading…
	
		Reference in New Issue