Jump to content

BangL

Members
  • Posts

    2
  • Joined

  • Last visited

Everything posted by BangL

  1. Description With this mod, automated mining ships (with captains) will continue with regular asteroids, when there are no resource asteroids left. Client/Server The modded code is performed server-side, and therefore it could be used for single-player and server-owners! If you use this mod as mutli-player client, it won't have any affect. Installation 1. Open up data\scripts\entity\ai\mine.lua 2. Below this line: local noAsteroidsLeft = false add this line: local noResourcesLeft = false 2. Replace the whole function AIMine.findMinedAsteroid() with this modded version: -- check the sector for an asteroid that can be mined -- if there is one, assign minedAsteroid function AIMine.findMinedAsteroid() local ship = Entity() local sector = Sector() local faction = Faction(ship.factionIndex) local x, y = sector:getCoordinates() local coords = tostring(x) .. ":" .. tostring(y) local mineables local nearest local dist minedAsteroid = nil -- Start with resources if noResourcesLeft == false then mineables = {sector:getEntitiesByComponent(ComponentType.MineableMaterial)} nearest = math.huge for _, a in pairs(mineables) do if a.type == EntityType.Asteroid and (a.isObviouslyMineable or ship:hasScript("systems/miningsystem.lua")) then local material = a:getLowestMineableMaterial() local resources = a:getMineableResources() if resources ~= nil and resources > 0 and material ~= nil then -- only try to mine asteroids that are mineable by the available mining lasers if material.value <= miningMaterial + 1 then local dist = distance2(a.translationf, ship.translationf) if dist < nearest then nearest = dist minedAsteroid = a end end end end end if minedAsteroid then noResourcesLeft = false broadcastInvokeClientFunction("setMinedAsteroid", minedAsteroid.index) else if noResourcesLeft == false then noResourcesLeft = true if faction then faction:sendChatMessage(ship.name or "", ChatMessageType.Error, "Your mining ship in sector %s can't find any more asteroids. Progressing with normal asteroids."%_T, coords) faction:sendChatMessage(ship.name or "", ChatMessageType.Normal, "Sir, we can't find any more asteroids in \\s(%s)! Progressing with normal asteroids."%_T, coords) end end end end -- Continue with regular asteroids if noResourcesLeft == true and noAsteroidsLeft == false then mineables = {sector:getEntitiesByType(EntityType.Asteroid)} nearest = math.huge for _, a in pairs(mineables) do if a.type == EntityType.Asteroid then dist = distance2(a.translationf, ship.translationf) if dist < nearest then nearest = dist minedAsteroid = a end end end if minedAsteroid then noAsteroidsLeft = false broadcastInvokeClientFunction("setMinedAsteroid", minedAsteroid.index) else if noAsteroidsLeft == false then noAsteroidsLeft = true if faction then faction:sendChatMessage(ship.name or "", ChatMessageType.Error, "Your mining ship in sector %s can't find any more asteroids."%_T, coords) faction:sendChatMessage(ship.name or "", ChatMessageType.Normal, "Sir, we can't find any more asteroids in \\s(%s)!"%_T, coords) end ShipAI():setPassive() end end end end Enjoy! Version/Changes This version is the very first release of this script. No changes have been made yet. Tested on: v0.21.4 r15002
  2. you dont need this mod from 0.20.x on. renaming ships is already integrated in the game now, which made this mod obsolete.
×
×
  • Create New...