WARNING: this widget is completely untested, it won't necessarily work, use at your own risk
Code: Select all
function widget:GetInfo()
  return {
    name      = "commands",
    desc      = "Adds useful commands for play",
    author    = "BD",
    date      = "-",
    license   = "WTFPL",
    layer     = 0,
    enabled   = true  --  loaded by default?
  }
end
--ctrl+a ctrl+d
function JeenodeCmd()
	for _,unitID in ipairs(Spring.GetAllUnits()) do
		Spring.GiveOrderToUnit(unitID, CMD.SELFD, {}, {})
	end
end
--kamikaze all units to first found enemy com
function MurtagonCmd()
	local coms = {[UnitDefNames.armcom.id]=true,[UnitDefNames.corcom.id]=true}
	local enemycom
	for _,unitID in ipairs(Spring.GetAllUnits()) do
		if not Spring.IsUnitAllied(unitID) and coms[Spring.GetUnitDefID(unitID)] then 
			enemycom = unitID
			break
		end
	end
	if enemycom then
		for _,unitID in ipairs(Spring.GetAllUnits()) do
			Spring.GiveOrderToUnit(unitID, CMD.ATTACK, {enemycom}, {})
		end
	end
end
 
--spam whole map with fus
function FightlessCmd()
	for _,unitDefID in ipairs({UnitDefNames.aafus.id,UnitDefNames.cafus.id,UnitDefNames.armfus.id,UnitDefNames.corfus.id}) do
		for _,unitID in ipairs(Spring.GetAllUnits()) do
			for x=0, Game.mapSizeX, UnitDefs[unitDefID].xsize do
				for z=0, Game.mapSizeZ, UnitDefs[unitDefID].zsize do
					Spring.GiveOrderToUnit(unitID, -unitDefID,{x,0,z}, {})
				end
			end
		end
	end
end
--all in guard to air lab with fighters on repeat
function FlorisCmd()
	local airlabs = {UnitDefNames.armaap.id,UnitDefNames.armap.id,UnitDefNames.coraap.id,UnitDefNames.corap.id}
	local airlab
	for _,unitID in ipairs(Spring.GetAllUnits()) do
		if Spring.IsUnitAllied(unitID) and airlabs[Spring.GetUnitDefID(unitID)] then 
			airlab = unitID
			break
		end
	end
	if airlab then
		for _,unitID in ipairs(Spring.GetAllUnits()) do
			Spring.GiveOrderToUnit(unitID, CMD.GUARD, {airlab}, {})
		end
		Spring.GiveOrderToUnit(airlab,-UnitDefNames.corveng.id, {}, {})
		Spring.GiveOrderToUnit(airlab, -UnitDefNames.armfig.id, {}, {})
		Spring.GiveOrderToUnit(airlab, -UnitDefNames.armhawk.id, {}, {})
		Spring.GiveOrderToUnit(airlab, -UnitDefNames.corvamp.id, {}, {})
		Spring.GiveOrderToUnit(airlab,CMD.REPEAT,{1},{})
	end
end
--split map in half with HLT wall
function BobbelCmd()
	for _,unitDefID in ipairs({UnitDefNames.corgaat.id,UnitDefNames.armhlt.id}) do
		for _,unitID in ipairs(Spring.GetAllUnits()) do
			for x=0, Game.mapSizeX, UnitDefs[unitDefID].xsize do
				Spring.GiveOrderToUnit(unitID, -unitDefID,{x,0,Game.mapSizeZ/2}, {})
			end
			for z=0, Game.mapSizeZ, UnitDefs[unitDefID].zsize do
				Spring.GiveOrderToUnit(unitID, -unitDefID,{Game.mapSizeX/2,0,z}, {})
			end
		end
	end
end
--combomb first enemy com
function GasmaskCmd()
	local coms = {[UnitDefNames.armcom.id]=true,[UnitDefNames.corcom.id]=true}
	local enemycom
	local allycom
	for _,unitID in ipairs(Spring.GetAllUnits()) do
		if not Spring.IsUnitAllied(unitID) and coms[Spring.GetUnitDefID(unitID)] then 
			enemycom = unitID
		end
		if Spring.IsUnitAllied(unitID) and coms[Spring.GetUnitDefID(unitID)] then
			allycom = unitID 
		end
	end
	if enemycom and allycom then
		Spring.GiveOrderToUnit(allycom, CMD.MANUALFIRE, {enemycom}, {})
	end
end
--omg .D
function TarellinaCmd()
	for i=1,10 do
		local rand = math.rand()
		if rand < 0.3 then
			Spring.SendCommands({"say omg"})
		elseif rand > 0.3 and rand < 0.6 then
			Spring.SendCommands({"say .D"})
		else
			Spring.SendCommands({"say omg .D"})
		end
	end
end
--this command does absolutely nothing
function 7777zCmd()
end
--random commands to random units!
function AgilityCmd()
	for _,unitID in ipairs(Spring.GetAllUnits()) do
		Spring.GiveOrderToUnit(unitID, math.rand()*800-400, {math.rand()*Game.mapSizeZ,0,math.rand()*Game.mapSizeZ}, {})
	end
end
function widget:Initialize()
	widgetHandler:AddAction("jeenode",  JeenodeCmd)
	widgetHandler:AddAction("murtagon",  MurtagonCmd)
	widgetHandler:AddAction("fightless",  FightlessCmd)
	widgetHandler:AddAction("floris",  FlorisCmd)
	widgetHandler:AddAction("bobbel",  BobbelCmd)
	widgetHandler:AddAction("gasmask",  GasmaskCmd)
	widgetHandler:AddAction("tarellina",  TarellinaCmd)
	widgetHandler:AddAction("7777z",  7777zCmd)
	widgetHandler:AddAction("agility",  AgilityCmd)
end
