I have found no more bugs that haven't been found already, and it doesn't look like I will, so here are some suggestions.
activities.cpp:
2022 else if(trouble[t]->get_skill(SKILL_HANDTOHAND)<4)
This decides if the rednecks attack. They can somehow tell if you can fight, but they still rush in when you have an AK47 at your side when a knife is enough to scare them away. They didn't use to.
I suggest changing it to this:
else if(trouble[t]->get_skill(SKILL_HANDTOHAND)<4 && trouble[t]->weapon_is_concealed())
I am assuming here that empty fists are always concealed.
Muraling could use a nerf.
1599 graffiti[s]->activity.arg=-1;
1600 addjuice(*graffiti[s],power,power*20);
1601 change_public_opinion(issue,power);
1602 graffiti[s]->train(SKILL_ART,MAX(10-graffiti[s]->get_skill(SKILL_ART)/2,1));
Here's an idea: Change line 1601 to...
change_public_opinion(issue,power,1,min(power*25,100));
that way it won't affect everyone unless it's "beautiful".
While on the subject of graffiti, here's how it ends:
1637 if(issue==VIEW_LIBERALCRIMESQUAD)
1638 {
1639 change_public_opinion(VIEW_LIBERALCRIMESQUAD,LCSrandom(2),0,65);
1640 change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,!LCSrandom(8),0,65);
1641 public_interest[issue]+=power;
1642 }
1643 else
1644 {
1645 change_public_opinion(VIEW_LIBERALCRIMESQUAD,LCSrandom(2)+1,0,85);
1646 change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,!LCSrandom(4),0,65);
1647 public_interest[issue]+=power;
1648 background_liberal_influence[issue]+=power;
1649 }
The only times where issue is something other than VIEW_LIBERALCRIMESQUAD is when they either start a mural, or finish one. When they start one, power is 0; so the only times lines 1647-1648 do something is when they finish a mural, which already changes the public opinion via change_public_opinion(), something that also affects public_interest and background_liberal_influence. This makes muraling better than other otherwise equally-powerful mood-changing activities.
Edit:
This comment from daily.cpp:
616 case ACTIVITY_MAKE_ARMOR:
617 makearmor(*pool[p],clearformess);
618 // Uncomment this to have people stop making armor after the first day
619 //pool[p]->activity.type=ACTIVITY_NONE;
gave me an idea.
There could be some sort of 'management'-screen where one could decide these things, like with the checkboxes during setup.
a) [ ] - stop making armor after the first day
case ACTIVITY_MAKE_ARMOR:
makearmor(*pool[p],clearformess);
if(a)pool[p]->activity.type=ACTIVITY_NONE;
This could have several other options such as:
b) [ ] - don't do major hacks
if(!b && DIFFICULTY_HEROIC<=hack_skill+static_cast<int>(truehack.size())-1)
c) [ ] - don't make murals
else if(!c && !LCSrandom(MAX(30-graffiti[s]->get_skill(SKILL_ART)*2,5)))
d) [ ] - don't cause trouble on L+ issues
Would need work, but is basically an extra thing in the existing if-clauses.