diff --git a/Dreadnought.xml b/Dreadnought.xml
index 3edadf9..0680a89 100644
--- a/Dreadnought.xml
+++ b/Dreadnought.xml
@@ -40,7 +40,7 @@ disableTrigger("Autopilot")
send("config shipsight 1", false)
send("config aethermap on", false)
-local reset = dreadnought.pilot.reset()
+local reset = dreadnought.reset.pilot()
dreadnought.aetherbeastsTotal = reset.aetherbeastsTotal
dreadnought.currentModule = matches[2]
dreadnought.pilot = reset.pilot
@@ -72,7 +72,7 @@ disableTrigger("Autopilot")
send("config shipsight 0", false)
send("config aethermap off", false)
-local reset = dreadnought.pilot.reset()
+local reset = dreadnought.reset.pilot()
dreadnought.aetherbeastsTotal = reset.aetherbeastsTotal
dreadnought.currentModule = reset.currentModule
dreadnought.pilot = reset.pilot
@@ -730,67 +730,19 @@ dmsg("The empathic grid is set up and ready for your control.")#000000
-
- Damaged
-
- 0
- 0
- 0
-
-
- #ff0000
- #ffff00
-
- #000000
- #000000
-
- concussive shock rips through the hull.$
- swiftly shears through her hull.$
- rips apart her hull.$
- shreds deep rends through her hull.$
- ^Violet sparks fly through the air and
- ^\(Ship\): \w+ says, \"Repair.\"$
- cries out as bolts of jagged energy strike out from the ruptured fabric of aetherspace here.$
-
-
- 1
- 1
- 1
- 1
- 1
- 1
- 1
-
-
-
- Repairing
-
- 0
- 0
- 0
-
-
- #ff0000
- #ffff00
-
- #000000
- #000000
-
- ^You send a surge of strength through the empathic grid
-
-
- 1
-
-
Repaired
-
+ if action.name == "hull" then
+ dreadnought.heap.extract(dreadnought.actions)
+ else
+ break
+ end
+end
0
0
0
@@ -810,7 +762,7 @@ action.postCommand()
- Repair
+ Modules
dreadnought.empath.slivvensFound = 0
dreadnought.empath.flags.checkSlivven = false
-end
+end
+
+dreadnought.repairShip(dreadnought.actions)
0
0
0
@@ -909,12 +863,11 @@ end
Repairing
+end
0
0
0
@@ -926,10 +879,16 @@ action.postCommand()
#000000
#000000
- ^Crackling energy surges to (?:\w+\s){2}(\w+), (\w+) healing it\.$
+ You send a surge of strength through the empathic grid
As you attempt to operate the empathic grid, it sputters and gyrates without producing a noticeable result.
+ The empathic grid is not yet ready to be used again.
+ ^Crackling energy surges to (?:a|an) \w+ (\w+), fully healing it\.$
+ The empathic grid is not yet ready to be used again.
+ 2
+ 3
+ 3
1
3
@@ -1053,10 +1012,10 @@ action.postCommand()
- Aetherbeast Dead
+ Target Destroyed
0
0
@@ -1098,6 +1057,8 @@ end
dreadnought.action("planarbond", 1, "grid planarbond"))
dreadnought.heap.insert(dreadnought.actions,
dreadnought.action("covey", 1, "grid covey"))
+
+ dreadnought.repairShip(dreadnought.actions)
end
0
0
@@ -1110,7 +1071,7 @@ end
#000000
#000000
- ^(?:\w+\s?)+ launches into the aetherways\.$
+ ^[\w\'\s]+ launches into the aetherways\.$
1
@@ -1136,7 +1097,7 @@ action.postCommand()
#000000
#000000
- ^You point out to (?:\w+\s?)+ that \w+ has a covey\.$
+ ^You point out to [\w\'\s]+ that she has a covey\.$
1
@@ -1162,7 +1123,7 @@ action.postCommand()
#000000
#000000
- ^You direct (?:\w+\s?)+ to form a deep planar bond with the crew, rooting each of them to the distant aetherwaves\.$
+ ^You direct [\w\'\s]+ to form a deep planar bond with the crew, rooting each of them to the distant aetherwaves\.$
1
@@ -1171,7 +1132,8 @@ action.postCommand()
Slivven Check
-
0
0
@@ -1192,6 +1154,36 @@ send("grid modules", false)
1
+
+ Prompt
+
+ 0
+ 0
+ 0
+
+
+ #ff0000
+ #ffff00
+
+ #000000
+ #000000
+
+ ^\[(\d+)\-hull, \d+\-power, \w+ damage, \d+\-will \*x?\*\]$
+
+
+ 1
+
+
Combateer
@@ -1358,20 +1350,20 @@ dreadnought.fireTurret(dreadnought.actions)
Targeting
0
@@ -1396,7 +1388,7 @@ end
Target Acquired
#000000
#000000
- ^You tune the weapon module to target (?:a|an) (?:\w+\-?\s?)+\.$
+ ^You tune the weapon module to target (?:a|an) [\w\-\s]+\.$
No such creature is close enough for a battle turret to get a targeting lock.
@@ -1557,10 +1549,10 @@ end
- Beast Dies
+ Target Destroyed
0
@@ -1584,7 +1576,7 @@ end
No Target
#000000
A battle turret is not targeting anything.
+ No such creature is close enough for a battle turret to get a targeting lock.
3
+ 3
@@ -2125,7 +2119,7 @@ end
1
-
+
Gags
0
@@ -2471,8 +2465,9 @@ end
Grid Modules
-
- grid modules
+
+
^gm$
@@ -2505,6 +2500,7 @@ dreadnought.repairShip(dreadnought.actions)
Reset
Set Target
-
end
local exch = function(h, x, y)
+ assert(type(h) == "table")
assert(type(x) == "number")
assert(type(y) == "number")
@@ -2707,28 +2706,25 @@ local exch = function(h, x, y)
end
local sink = function(h, parentIndex)
- local N = h.size
-
- while (parentIndex*2) <= N do
+ while (parentIndex*2) < h.size do
local childIndex = parentIndex * 2
- if childIndex < N and lowerPriority(h.elements[childIndex],
+ if childIndex < h.size and lowerPriority(h.elements[childIndex],
h.elements[childIndex+1]) then
childIndex = childIndex + 1
end
- if not lowerPriority(h.elements[parentIndex], h.elements[childIndex]) then
- break
- else
+ if lowerPriority(h.elements[parentIndex], h.elements[childIndex]) then
exch(h, parentIndex, childIndex)
parentIndex = childIndex
+ else
+ break
end
end
end
local swim = function(h, childIndex)
- while childIndex > 1 and lowerPriority(h.elements[math.floor(childIndex/2)],
- h.elements[childIndex]) do
+ while childIndex > 1 and lowerPriority(h.elements[math.floor(childIndex / 2)], h.elements[childIndex]) do
local parentIndex = math.floor(childIndex / 2)
exch(h, childIndex, parentIndex)
childIndex = parentIndex
@@ -2752,7 +2748,11 @@ dreadnought.heap = {
extract = function(h)
exch(h, 1, h.size)
- h.size = h.size - 1
+
+ if h.size > 0 then
+ h.size = h.size - 1
+ end
+
local ret = table.remove(h.elements)
sink(h, 1)
@@ -2785,20 +2785,26 @@ dreadnought.heap = {
local cmd -- The command to execute the given action command
if type(command) == "string" then
cmd = function()
- send(command, false)
- dreadnought.locked = true
+ if dreadnought.balance and not dreadnought.locked then
+ send(command, false)
+ dreadnought.locked = true
+ end
end
elseif type(command) == "table" then
cmd = function()
- for _,v in ipairs(command) do
- send(v, false)
+ if dreadnought.balance and not dreadnought.locked then
+ for _,v in ipairs(command) do
+ send(v, false)
+ end
+ dreadnought.locked = true
end
- dreadnought.locked = true
end
else
cmd = function()
- command()
- dreadnought.locked = true
+ if dreadnought.balance and not dreadnought.locked then
+ command()
+ dreadnought.locked = true
+ end
end
end
@@ -2809,11 +2815,16 @@ dreadnought.heap = {
postCommand = postCommand
}
- setmetatable(action, {
+ local mt = {
__lt = function(a, b)
- return a.priority < b.priority
+ return a.priority > b.priority
+ end,
+
+ __le = function(a, b)
+ return a.priority >= b.priority
end
- })
+ }
+ setmetatable(action, mt)
return action
end
@@ -2945,6 +2956,11 @@ end
Empath
checkSlivven = false
},
- slivvensFound = 0
+ slivvensFound = 0,
+ inspectedModule = ""
}
function dreadnought.reset.empath()
- sendGMCP([[Char.Skills.Get {"group":"aethercraft"}]])
- send("\n")
- deleteLineP()
-
return {
aetherbeastsTotal = 0,
currentModule = "",
actions = dreadnought.heap.new(),
empath = {
+ hull = {
+ current = 0,
+ max = 0
+ },
+
modules = {
chair = "",
grid = "",
@@ -2983,13 +3001,14 @@ function dreadnought.reset.empath()
cube = ""
},
- skills = {},
+ skills = dreadnought.empath.skills,
flags = {
checkSlivven = false
},
- slivvensFound = 0
+ slivvensFound = 0,
+ inspectedModule = ""
}
}
end
@@ -3022,7 +3041,7 @@ function dreadnought.reset.combateer()
actions = dreadnought.heap.new(),
combateer = {
- skills = {},
+ skills = dreadnought.combateer.skills,
flags = {
canVortex = false
}
@@ -3081,6 +3100,7 @@ end
Astralsight = true,
Purser = true,
Scan = true,
+ FirstMate = true,
Resonance = true
}
diff --git a/README.md b/README.md
index 6cc5c3b..9185054 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@ An automated aetherhunting system for Lusternia, written in Lua for the Mudlet c
Installation
----------
+0. Make sure that the GMCP is enabled before installing. You can double-check by clicking on the `Settings` button within Mudlet, and within the `General` tab there is a checkbox to "Enable GMCP". If not checked off, check that box, click "Save", then restart Mudlet.
1. Click on the green button above labeled `Clone or download`. From the dropdown that appears, click `Download ZIP`.
2. Extract the zip file somewhere on your computer (such as your Downloads folder).
3. Open Mudlet. On the Menu Bar, click on `Package Manager`.