|
|
|
@ -299,10 +299,17 @@ int32_t processJob(color_ostream& out, int32_t jobId) {
|
|
|
|
|
//add each syndrome to the guy who did the job
|
|
|
|
|
df::syndrome* syndrome = inorganic->material.syndrome[b];
|
|
|
|
|
//check that the syndrome applies to that guy
|
|
|
|
|
bool applies = syndrome->syn_affected_class.size() == 0;
|
|
|
|
|
if ( applies ) {
|
|
|
|
|
//out.print("No syn_affected_class.\n");
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* If there is no affected class or affected creature, then anybody who isn't immune is fair game.
|
|
|
|
|
*
|
|
|
|
|
* Otherwise, it works like this:
|
|
|
|
|
* add all the affected class creatures
|
|
|
|
|
* remove all the immune class creatures
|
|
|
|
|
* add all the affected creatures
|
|
|
|
|
* remove all the immune creatures
|
|
|
|
|
* you're affected if and only if you're in the remaining list after all of that
|
|
|
|
|
**/
|
|
|
|
|
bool applies = syndrome->syn_affected_class.size() == 0 && syndrome->syn_affected_creature_1.size() == 0;
|
|
|
|
|
for ( size_t c = 0; c < syndrome->syn_affected_class.size(); c++ ) {
|
|
|
|
|
if ( applies )
|
|
|
|
|
break;
|
|
|
|
@ -313,11 +320,6 @@ int32_t processJob(color_ostream& out, int32_t jobId) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( syndrome->syn_affected_creature_1.size() != 0 ) {
|
|
|
|
|
applies = false;
|
|
|
|
|
} else {
|
|
|
|
|
//out.print("No syn_affected_creature.\n");
|
|
|
|
|
}
|
|
|
|
|
for ( size_t c = 0; c < syndrome->syn_immune_class.size(); c++ ) {
|
|
|
|
|
if ( !applies )
|
|
|
|
|
break;
|
|
|
|
@ -342,10 +344,6 @@ int32_t processJob(color_ostream& out, int32_t jobId) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( !applies ) {
|
|
|
|
|
//out.print("Not in syn_affected_creature.\n");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
for ( size_t c = 0; c < syndrome->syn_immune_creature_1.size(); c++ ) {
|
|
|
|
|
if ( creature_name != *syndrome->syn_immune_creature_1[c] )
|
|
|
|
|
continue;
|
|
|
|
@ -356,7 +354,6 @@ int32_t processJob(color_ostream& out, int32_t jobId) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ( !applies ) {
|
|
|
|
|
//out.print("Creature is immune.\n");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if ( giveSyndrome(out, workerId, syndrome) < 0 )
|
|
|
|
|