Credit Card Fraud was broken for me in the latest version, as were several hacking operations. I looked into the source and made the following change, fixing the problem. I hope this isn't terribly presumptuous of me.
The causes of the crash were unsigned integers in activities.ccp, specifically lines 1198 and 1298. An if statement was incorrectly evaluating to true due to a negative number being treated as unsigned because truehack.size was unsigned. This was enabling illegal vector access. Implementing these changes should stop that from happening. Testing indicates changing both files is necessary.
Index: creature.h
===================================================================
--- creature.h (revision 492)
+++ creature.h (working copy)
@@ -25,20 +25,18 @@
#define GENDER_FEMALE 2
#define GENDER_WHITEMALEPATRIARCH 3
-enum CheckDifficulty
-{
- DIFFICULTY_AUTOMATIC = 1,
- DIFFICULTY_VERYEASY = 3,
- DIFFICULTY_EASY = 5,
- DIFFICULTY_AVERAGE = 7,
- DIFFICULTY_CHALLENGING = 9,
- DIFFICULTY_HARD = 11,
- DIFFICULTY_FORMIDABLE = 13,
- DIFFICULTY_HEROIC = 15,
- DIFFICULTY_SUPERHEROIC = 17,
- DIFFICULTY_IMPOSSIBLE = 19
-};
+const int DIFFICULTY_AUTOMATIC = 1;
+const int DIFFICULTY_VERYEASY = 3;
+const int DIFFICULTY_EASY = 5;
+const int DIFFICULTY_AVERAGE = 7;
+const int DIFFICULTY_CHALLENGING = 9;
+const int DIFFICULTY_HARD = 11;
+const int DIFFICULTY_FORMIDABLE = 13;
+const int DIFFICULTY_HEROIC = 15;
+const int DIFFICULTY_SUPERHEROIC = 17;
+const int DIFFICULTY_IMPOSSIBLE = 19;
+
enum CreatureAttribute
{
ATTRIBUTE_STRENGTH,
Index: activities.cpp
===================================================================
--- activities.cpp (revision 492)
+++ activities.cpp (working copy)
@@ -1195,7 +1195,7 @@
int difficulty = DIFFICULTY_HEROIC;
- if(DIFFICULTY_HEROIC<=hack_skill+truehack.size()-1)
+ if(DIFFICULTY_HEROIC<=hack_skill+((int)truehack.size())-1)
{
if(truehack.size()>1)strcpy(msg,"Your Hackers have ");
else {strcpy(msg,truehack[0]->name);strcat(msg," has ");}
@@ -1295,7 +1295,7 @@
for(int h=0;h<truehack.size();h++)
addjuice(*truehack[h],juiceval,200);
}
- else if(DIFFICULTY_FORMIDABLE<=hack_skill+truehack.size()-1)
+ else if(DIFFICULTY_FORMIDABLE<=hack_skill+((int)truehack.size())-1)
{
int issue=LCSrandom(VIEWNUM-5);
int crime;