The following ash code dropped in choice.ash parses and tracks the various characteristic of your current planet. Posting here to hopefully save someone time building regexes. Haven't tested with multiple environmental hazards yet, or in the response right when you first choose the planet; will verify those tomorrow.
Code:
buffer spaceterminal(buffer page) {
string trim( string text ) {
while( text.starts_with(" ") ) text = text.substring(1);
while( text.ends_with(" ") ) text = text.substring(0, text.length() - 1);
return text;
}
matcher m = "<td>Current planet: Planet Name: ([^<]+)<br>".create_matcher(page);
if( m.find() ) {
print("Planet name: " + m.group(1));
set_property("_spacegatePlanetName", m.group(1).trim());
}
m = "<br>Coordinates: ([^<]+)<br>".create_matcher(page);
if( m.find() ) {
print("Coordinates: " + m.group(1));
set_property("_spacegateCoordinates", m.group(1).trim());
}
m = "<br><p>Environmental Hazards:<Br>(.*)<br>Plant Life:".create_matcher(page);
if( m.find() ) {
string hazards = m.group(1).replace_string(" ","").replace_string("<br>","|").trim();
print("Hazards: " + hazards);
set_property("_spacegateHazards", hazards);
}
m = "<br>Plant Life: (<font color=\\w+>)?([^<]+)(</font>)?(<font color=\w+>(\\(hostile\\))</font>)?<br>".create_matcher(page);
if( m.find() ) {
if( m.group(3) != "" )
set_property("_spacegatePlantLife", m.group(2) + m.group(5));
else
set_property("_spacegatePlantLife", m.group(2).trim());
print("Plant Life: " + get_property("_spacegatePlantLife") );
}
m = "<br>Animal Life: (<font color=\\w+>)?([^<]+)(</font>)?(<font color=\w+>(\\(hostile\\))</font>)?<br>".create_matcher(page);
if( m.find() ) {
if( m.group(3) != "" )
set_property("_spacegateAnimalLife", m.group(2) + m.group(5));
else
set_property("_spacegateAnimalLife", m.group(2).trim());
print("Animal Life: " + get_property("_spacegateAnimalLife") );
}
m = "<br>Intelligent Life: (<font color=\\w+>)?([^<]+)(</font>)?(<font color=\w+>(\\(hostile\\))</font>)?<br>".create_matcher(page);
if( m.find() ) {
if( m.group(3) != "" )
set_property("_spacegateIntelligentLife", m.group(2) + m.group(5));
else
set_property("_spacegateIntelligentLife", m.group(2).trim());
print("Intelligent Life: " + get_property("_spacegateIntelligentLife") );
}
m = "<b>Spant</b>".create_matcher(page);
if( m.find() ) {
print("Spant chemical signature detected");
set_property("_spacegateSpant", true);
} else {
print("No spant chemical signature detected");
set_property("_spacegateSpant", false);
}
m = "<b>Murderbot</b>".create_matcher(page);
if( m.find() ) {
print("Murderbot chemical signature detected");
set_property("_spacegateMurderbot", true);
} else {
print("No Murderbot chemical signature detected");
set_property("_spacegateMurderbot", false);
}
m = "<br>ALERT: ANCIENT RUINS DETECTED<br>".create_matcher(page);
if( m.find() ) {
print("Ancient ruins detected");
set_property("_spacegateRuins", true);
} else {
print("No ancient ruins detected");
set_property("_spacegateRuins", false);
}
m = "<p>Spacegate Energy remaining: <b><font size=\\+2>(\\d+) </font>".create_matcher(page);
if( m.find() ) {
print("Spacegate turns left: " + m.group(1));
set_property("_spacegateTurnsLeft", m.group(1));
} else {
print("No spacegate turns left?");
set_property("_spacegateTurnsLeft", "0");
}
return page;
}
edit: Prior regexes didn't account for (hostile) entities as I hadn't seen them yet, fixed now.
edit 2: Prior regexes didn't work for the different font coloring for "anomalous", fixed now.. again..