# give super-dwarven speed to an unit

$superdwarf_onupdate ||= nil
$superdwarf_ids ||= []

case $script_args[0]
when 'add'
	if u = df.unit_find
		$superdwarf_ids |= [u.id]

		if df.gamemode == :ADVENTURE and not df.respond_to?(:cur_year_tick_advmode)
			onupdate_delay = nil
		else
			onupdate_delay = 1
		end
		$superdwarf_onupdate ||= df.onupdate_register('superdwarf', onupdate_delay) {
			if $superdwarf_ids.empty?
				df.onupdate_unregister($superdwarf_onupdate)
				$superdwarf_onupdate = nil
			else
				$superdwarf_ids.each { |id|
					if u = df.unit_find(id) and not u.flags1.dead
						# faster walk/work
						if u.counters.job_counter > 0
							u.counters.job_counter = 0
						end

						# no sleep
						if u.counters2.sleepiness_timer > 10000
							u.counters2.sleepiness_timer = 1
						end

						# no break
						if b = u.status.misc_traits.find { |t| t.id == :OnBreak }
							b.value = 500_000
						end
					else
						$superdwarf_ids.delete id
					end
				}
			end
		}
	else
		puts "Select a creature using 'v'"
	end

when 'del'
	if u = df.unit_find
		$superdwarf_ids.delete u.id
	else
		puts "Select a creature using 'v'"
	end

when 'clear'
	$superdwarf_ids.clear

when 'list'
	puts "current superdwarves:", $superdwarf_ids.map { |id| df.unit_find(id).name }

else
	puts "Usage:",
		" - superdwarf add: give superspeed to currently selected creature",
		" - superdwarf del: remove superspeed to current creature",
		" - superdwarf clear: remove all superpowers",
		" - superdwarf list: list super-dwarves"
end