|  |  | @ -803,6 +803,19 @@ end | 
			
		
	
		
		
			
				
					
					|  |  |  | -- cur_year_tick |  |  |  | -- cur_year_tick | 
			
		
	
		
		
			
				
					
					|  |  |  | -- |  |  |  | -- | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | function stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if is_known 'd_init' then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         local f = df.global.d_init.flags4 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if f.AUTOSAVE_SEASONAL or f.AUTOSAVE_YEARLY then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.AUTOSAVE_SEASONAL = false | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             f.AUTOSAVE_YEARLY = false | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             print('Disabled seasonal and yearly autosave.') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         dfhack.printerr('Could not disable autosave!') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | local function find_cur_year_tick() |  |  |  | local function find_cur_year_tick() | 
			
		
	
		
		
			
				
					
					|  |  |  |     local zone |  |  |  |     local zone | 
			
		
	
		
		
			
				
					
					|  |  |  |     if os_type == 'windows' then |  |  |  |     if os_type == 'windows' then | 
			
		
	
	
		
		
			
				
					|  |  | @ -815,6 +828,8 @@ local function find_cur_year_tick() | 
			
		
	
		
		
			
				
					
					|  |  |  |         return |  |  |  |         return | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     local addr = zone:find_counter([[ |  |  |  |     local addr = zone:find_counter([[ | 
			
		
	
		
		
			
				
					
					|  |  |  | Searching for cur_year_tick. Please exit to main dwarfmode |  |  |  | Searching for cur_year_tick. Please exit to main dwarfmode | 
			
		
	
		
		
			
				
					
					|  |  |  | menu, then do as instructed below:]], |  |  |  | menu, then do as instructed below:]], | 
			
		
	
	
		
		
			
				
					|  |  | @ -824,6 +839,79 @@ menu, then do as instructed below:]], | 
			
		
	
		
		
			
				
					
					|  |  |  |     ms.found_offset('cur_year_tick', addr) |  |  |  |     ms.found_offset('cur_year_tick', addr) | 
			
		
	
		
		
			
				
					
					|  |  |  | end |  |  |  | end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | -- | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | -- cur_season_tick | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | -- | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | function step_n_frames(cnt) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     local world = df.global.world | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     local ctick = world.frame_counter | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     local more = '' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     while world.frame_counter-ctick < cnt do | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         print("  Please step the game "..(cnt-world.frame_counter+ctick)..more.." frames.") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         more = ' more' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if not utils.prompt_yes_no('  Done?', true) then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return nil | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     return world.frame_counter-ctick | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | local function find_cur_season_tick() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if not (is_known 'cur_year_tick') then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         dfhack.printerr('Cannot search for cur_season_tick - prerequisites missing.') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     local addr = searcher:find_interactive([[ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | Searching for cur_season_tick. Please exit to main dwarfmode | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | menu, then do as instructed below:]], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         'int32_t', | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         function(ccursor) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if ccursor > 0 then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if not step_n_frames(10) then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     return false | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return true, math.floor(((df.global.cur_year_tick+10)%100800)/10) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ms.found_offset('cur_season_tick', addr) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | -- | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | -- cur_season | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | -- | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | local function find_cur_season() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     if not (is_known 'cur_year_tick' and is_known 'cur_season_tick') then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         dfhack.printerr('Cannot search for cur_season - prerequisites missing.') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     local addr = searcher:find_interactive([[ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | Searching for cur_season. Please exit to main dwarfmode | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | menu, then do as instructed below:]], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         'int8_t', | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         function(ccursor) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if ccursor > 0 then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 local cst = df.global.cur_season_tick | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 df.global.cur_season_tick = 10079 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 df.global.cur_year_tick = df.global.cur_year_tick + (10079-cst)*10 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if not step_n_frames(10) then | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     return false | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             return true, math.floor((df.global.cur_year_tick+10)/100800)%4 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ms.found_offset('cur_season', addr) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | -- |  |  |  | -- | 
			
		
	
		
		
			
				
					
					|  |  |  | -- process_jobs |  |  |  | -- process_jobs | 
			
		
	
		
		
			
				
					
					|  |  |  | -- |  |  |  | -- | 
			
		
	
	
		
		
			
				
					|  |  | @ -839,6 +927,8 @@ end | 
			
		
	
		
		
			
				
					
					|  |  |  | local function find_process_jobs() |  |  |  | local function find_process_jobs() | 
			
		
	
		
		
			
				
					
					|  |  |  |     local zone = get_process_zone() or searcher |  |  |  |     local zone = get_process_zone() or searcher | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     local addr = zone:find_menu_cursor([[ |  |  |  |     local addr = zone:find_menu_cursor([[ | 
			
		
	
		
		
			
				
					
					|  |  |  | Searching for process_jobs. Please do as instructed below:]], |  |  |  | Searching for process_jobs. Please do as instructed below:]], | 
			
		
	
		
		
			
				
					
					|  |  |  |         'int8_t', |  |  |  |         'int8_t', | 
			
		
	
	
		
		
			
				
					|  |  | @ -856,6 +946,8 @@ end | 
			
		
	
		
		
			
				
					
					|  |  |  | local function find_process_dig() |  |  |  | local function find_process_dig() | 
			
		
	
		
		
			
				
					
					|  |  |  |     local zone = get_process_zone() or searcher |  |  |  |     local zone = get_process_zone() or searcher | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     local addr = zone:find_menu_cursor([[ |  |  |  |     local addr = zone:find_menu_cursor([[ | 
			
		
	
		
		
			
				
					
					|  |  |  | Searching for process_dig. Please do as instructed below:]], |  |  |  | Searching for process_dig. Please do as instructed below:]], | 
			
		
	
		
		
			
				
					
					|  |  |  |         'int8_t', |  |  |  |         'int8_t', | 
			
		
	
	
		
		
			
				
					|  |  | @ -879,6 +971,8 @@ local function find_pause_state() | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |     zone = zone or searcher |  |  |  |     zone = zone or searcher | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     stop_autosave() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     local addr = zone:find_menu_cursor([[ |  |  |  |     local addr = zone:find_menu_cursor([[ | 
			
		
	
		
		
			
				
					
					|  |  |  | Searching for pause_state. Please do as instructed below:]], |  |  |  | Searching for pause_state. Please do as instructed below:]], | 
			
		
	
		
		
			
				
					
					|  |  |  |         'int8_t', |  |  |  |         'int8_t', | 
			
		
	
	
		
		
			
				
					|  |  | @ -930,6 +1024,8 @@ print('\nUnpausing globals:\n') | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | exec_finder(find_cur_year, 'cur_year') |  |  |  | exec_finder(find_cur_year, 'cur_year') | 
			
		
	
		
		
			
				
					
					|  |  |  | exec_finder(find_cur_year_tick, 'cur_year_tick') |  |  |  | exec_finder(find_cur_year_tick, 'cur_year_tick') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | exec_finder(find_cur_season_tick, 'cur_season_tick') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | exec_finder(find_cur_season, 'cur_season') | 
			
		
	
		
		
			
				
					
					|  |  |  | exec_finder(find_process_jobs, 'process_jobs') |  |  |  | exec_finder(find_process_jobs, 'process_jobs') | 
			
		
	
		
		
			
				
					
					|  |  |  | exec_finder(find_process_dig, 'process_dig') |  |  |  | exec_finder(find_process_dig, 'process_dig') | 
			
		
	
		
		
			
				
					
					|  |  |  | exec_finder(find_pause_state, 'pause_state') |  |  |  | exec_finder(find_pause_state, 'pause_state') | 
			
		
	
	
		
		
			
				
					|  |  | 
 |