-- ======================================================================= -- Test script for debugging. -- ======================================================================= include "scripting/infrastructure.lua" set_textdomain("tribes") function remove_object(startx, starty) local game = wl.Game() game.map:get_field(startx, starty).immovable:destroy() end function force_flag(plr_number, startx, starty) local game = wl.Game() local player = game.players[plr_number] player:place_flag(game.map:get_field(startx, starty)) end function force_road(startx, starty, cmd) local game = wl.Game() local startflag = game.map:get_field(startx, starty).immovable local player = startflag.owner local roadtype = "normal" if cmd:sub(-1) ~= "|" then cmd = cmd .. "|" end moves = {} for m in cmd:gmatch("%a+[,|]") do moves[#moves+1] = m:sub(1,-2) if(m:sub(-1) == '|') then --moves[#moves+1] = true -- Force the road r = player:place_road(roadtype, startflag, table.unpack(moves)) start = r.end_flag moves = {} end end end function connect_road(startx, starty, targetx, targety) local game = wl.Game() local startflag = game.map:get_field(startx, starty).immovable local targetflag = game.map:get_field(targetx, targety).immovable local player = startflag.owner local roadtype = "normal" local diffx = startx - targetx local diffy = starty - targety local cmd = "l,l" if cmd:sub(-1) ~= "|" then cmd = cmd .. "|" end moves = {} for m in cmd:gmatch("%a+[,|]") do moves[#moves+1] = m:sub(1,-2) if(m:sub(-1) == '|') then --moves[#moves+1] = true -- Force the road r = player:place_road(roadtype, startflag, table.unpack(moves)) start = r.end_flag moves = {} end end end function force_building(plr_number, startx, starty, radius, buildingname) local game = wl.Game() local player = game.players[plr_number] place_building_in_region(player, buildingname, game.map:get_field(startx, starty):region(radius)) end function replace_building(startx, starty, buildingname) local game = wl.Game() local player = game.map:get_field(startx, starty).owner if (game.map:get_field(startx, starty).immovable.descr.type_name == "flag") then remove_object(startx, starty-1) -- Remove existing building remove_object(startx-1, starty-1) -- Remove existing building remove_object(startx, starty-1) -- Remove ashes remove_object(startx-1, starty-1) -- Remove ashes else remove_object(startx, starty) -- Remove existing building remove_object(startx, starty) -- Remove ashes end place_building_in_region(player, buildingname, game.map:get_field(startx, starty):region(1)) -- Place new one end function cheat_ware(plr_number, warename, warecount) local player = wl.Game().players[plr_number] local tribe = player.tribe for i, building in ipairs(tribe.buildings) do -- restock warehouses if building.type_name == "warehouse" then for i, building in ipairs(player:get_buildings(building.name)) do if building:get_wares(warename) < warecount then building:set_wares(warename, warecount) end end end end end function cheat_wares(plr_number) local MAX_UNDEFINED_WARES = 16 local player = wl.Game().players[plr_number] local tribe = player.tribe for i, building in ipairs(tribe.buildings) do -- restock warehouses if building.type_name == "warehouse" then for i, building in ipairs(player:get_buildings(building.name)) do for i, ware in ipairs(tribe.wares) do if building:get_wares(ware.name) < MAX_UNDEFINED_WARES then building:set_wares(ware.name, MAX_UNDEFINED_WARES) end end end end end player:message_box("Cheat", "Ware cheat!") end function cheat_worker(plr_number, workername, workercount) local player = wl.Game().players[plr_number] local tribe = player.tribe for i, building in ipairs(tribe.buildings) do -- restaff warehouses if building.type_name == "warehouse" then for i, building in ipairs(player:get_buildings(building.name)) do if building:get_workers(workername) < workercount then building:set_workers(workername, workercount) end end end end end function cheat_workers(plr_number) local MAX_UNDEFINED_WORKERS = 4 local player = wl.Game().players[plr_number] local tribe = player.tribe for i, building in ipairs(tribe.buildings) do -- restaff warehouses if building.type_name == "warehouse" then for i, building in ipairs(player:get_buildings(building.name)) do for i, worker in ipairs(tribe.workers) do if (building:get_workers(worker.name) < MAX_UNDEFINED_WORKERS) and not (worker.type_name == "soldier") then building:set_workers(worker.name, MAX_UNDEFINED_WORKERS) end end end end end player:message_box("Cheat", "Worker cheat!") end function cheat_soldiers(plr_number) local MAX_UNDEFINED_SOLDIERS = 8 local SOLDIER_STATS_NOVICE = { 0, 0, 0, 0 } local player = wl.Game().players[plr_number] local tribe = player.tribe -- retrieve best soldier stats local soldier_stats = SOLDIER_STATS_NOVICE for i, worker in ipairs(tribe.workers) do if worker.type_name == "soldier" then soldier_stats = { worker.max_health_level, worker.max_attack_level, worker.max_defense_level, worker.max_evade_level } end end for i, building in ipairs(tribe.buildings) do -- restaff warehouses if building.type_name == "warehouse" then for i, building in ipairs(player:get_buildings(building.name)) do for i, worker in ipairs(tribe.workers) do if worker.type_name == "soldier" then building:set_soldiers(soldier_stats, MAX_UNDEFINED_SOLDIERS) else building:set_workers(worker.name, MAX_UNDEFINED_SOLDIERS) end end end end end player:message_box("Cheat", "Soldier cheat!") end