Add 3 more lua scripts.
							parent
							
								
									c97e3bca0c
								
							
						
					
					
						commit
						6ca5a03008
					
				| @ -0,0 +1,16 @@ | ||||
| -- Deletes ALL items not held by units, buildings or jobs. | ||||
| -- | ||||
| -- Intended solely for lag investigation. | ||||
| 
 | ||||
| local count = 0 | ||||
| 
 | ||||
| for _,v in ipairs(df.global.world.items.all) do | ||||
|     if not (v.flags.in_building or v.flags.construction or v.flags.in_job | ||||
|             or dfhack.items.getGeneralRef(v,df.general_ref_type.UNIT_HOLDER))  then | ||||
|         count = count + 1 | ||||
|         v.flags.forbid = true | ||||
|         v.flags.garbage_collect = true | ||||
|     end | ||||
| end | ||||
| 
 | ||||
| print('Deletion requested: '..count) | ||||
| @ -0,0 +1,29 @@ | ||||
| -- Remove uninteresting dead units from the unit list. | ||||
| 
 | ||||
| local units = df.global.world.units.active | ||||
| local dwarf_race = df.global.ui.race_id | ||||
| local dwarf_civ = df.global.ui.civ_id | ||||
| local count = 0 | ||||
| 
 | ||||
| for i=#units-1,0,-1 do | ||||
|     local unit = units[i] | ||||
|     local flags1 = unit.flags1 | ||||
|     local flags2 = unit.flags2 | ||||
|     if flags1.dead and unit.race ~= dwarf_race then | ||||
|         local remove = false | ||||
|         if flags2.slaughter then | ||||
|             remove = true | ||||
|         elseif not unit.name.has_name then | ||||
|             remove = true | ||||
|         elseif unit.civ_id ~= dwarf_civ and | ||||
|                not (flags1.merchant or flags1.diplomat) then | ||||
|             remove = true | ||||
|         end | ||||
|         if remove then | ||||
|             count = count + 1 | ||||
|             units:erase(i) | ||||
|         end | ||||
|     end | ||||
| end | ||||
| 
 | ||||
| print('Units removed from active: '..count) | ||||
| @ -0,0 +1,49 @@ | ||||
| -- Reset item temperature to the value of their tile. | ||||
| 
 | ||||
| local count = 0 | ||||
| local types = {} | ||||
| 
 | ||||
| local function update_temp(item,btemp) | ||||
|     if item.temperature ~= btemp then | ||||
|         count = count + 1 | ||||
|         local tid = item:getType() | ||||
|         types[tid] = (types[tid] or 0) + 1 | ||||
|     end | ||||
|     item.temperature = btemp | ||||
|     item.temperature_fraction = 0 | ||||
| 
 | ||||
|     if item.contaminants then | ||||
|         for _,c in ipairs(item.contaminants) do | ||||
|             c.temperature = btemp | ||||
|             c.temperature_fraction = 0 | ||||
|         end | ||||
|     end | ||||
| 
 | ||||
|     for _,sub in ipairs(dfhack.items.getContainedItems(item)) do | ||||
|         update_temp(sub,btemp) | ||||
|     end | ||||
| 
 | ||||
|     item:checkTemperatureDamage() | ||||
| end | ||||
| 
 | ||||
| local last_frame = df.global.world.frame_counter-1 | ||||
| 
 | ||||
| for _,item in ipairs(df.global.world.items.all) do | ||||
|     if item.flags.on_ground and df.item_actual:is_instance(item) and | ||||
|        item.temp_updated_frame == last_frame then | ||||
|         local pos = item.pos | ||||
|         local block = dfhack.maps.getTileBlock(pos) | ||||
|         if block then | ||||
|             update_temp(item, block.temperature_1[pos.x%16][pos.y%16]) | ||||
|         end | ||||
|     end | ||||
| end | ||||
| 
 | ||||
| print('Items updated: '..count) | ||||
| 
 | ||||
| local tlist = {} | ||||
| for k,_ in pairs(types) do tlist[#tlist+1] = k end | ||||
| table.sort(tlist, function(a,b) return types[a] > types[b] end) | ||||
| for _,k in ipairs(tlist) do | ||||
|     print('    '..df.item_type[k]..':', types[k]) | ||||
| end | ||||
		Loading…
	
		Reference in New Issue