MOD WORKSHOP - DIALOGUE
This section contain lots of info and tips on how you can modify certain objects in the game. There's plenty of other reasons why you want to modify this game. Probably you find the game too tough to handle so you want to modify the game to make it easier. You might also find that certain dialogue in the game are too offensive to read so you want to change it to more appropriate tone. You might also want to personalize this game to higher level by including your portrait or voice on the game. So get ready to work. It can be tough but the reward is well worth the effort.
Asides from combat, dialogue represent the big stuff in this game as you'll spend most of your time reading lots of dialogue lines from your operatives, non player characters and even enemies. I can't please anybody so it is possible you might stumble upon offensive dialogue lines that disgusts you. You like the game but this dialogue line might ruin your playing mood.
So you might be thinking if you can somehow be able to modify the dialogue line to something more appropriate tone. Of course, you can. But first you need to get yourself some hex editor. Take some time to learn how to use it before you can proceed.
But before you do any modification, always remember to backup the file you want to modify. The easiest way to do is to copy the file from data folder to interface folder. That way if you screw up the file, you can always copy back the file from interface folder to data folder.
Dialogue Type
There are 3 type of dialogues in this game:
1) Operative Dialogue is the dialogue said by your operative when they face certain type of situation. You'll spend most of your time reading ( or try to ignore ) these dialogue. The dialogue text can be found at hireNPCX.dat file on data folder.
2) Non Player Character ( NPC ) Dialogue is the dialogue said by NPC when your operative talk to them. If your operative talk to important NPC, Talk Panel will be shown of which your operative can ask about something and it's up to the NPC to reply. This stuff is a little bit complicated because the dialogue text is scattered troughout NPCTalkX.dat and missionX.dat on data folder. If your operative talk to generic NPC, floating dialogue text will be shown above them. The dialogue text can be found at NPCBubbleX.dat file on data folder.
3) Automatic Dialogue is the dialogue said by NPC and enemy among themselves. To be able to read this dialogue, your operative must get very close to them. The dialogue text can be found at globalNPCX.dat file on data folder.
hireNPCX.dat
hireNPCX.dat which can be found on data folder contain details of every operative in the game. The file is basically a collection of records. Each record represent an operative. For each record, there are several details. Although there's plenty of details, for the purpose of modifying dialogue, you are only interested to modify confirmOrderText, refuseOrderText, depressedText, seeEnemyText, killEnemyText, bleedText, improveSkillText, tiredText, likedPersonText, dislikedPersonText, greetText, sayGoodbyeText or congratulationText.
int num;
int ID; //don't mess up this detail!
char firstName[ 16 ];
char nickName[ 8 ];
char familyName[ 16 ];
int age; //increasing it will increase all skills
int creature; //1 for normal human, 2 for cyborg,
//3 for mutant
int race; //1 for Intellect, 2 for Talent,
//3 for Peace
//4 for Faith, 5 for Chaos, 6 for Might
int gender; //1 for male, 2 for female
int specialGene; //only useful in future campaign
int healthProblem; //only useful in future campaign
int skinColour; //1 for light brown, 2 for normal brown
//3 for dark brown, 4 for pink,
//5 for gray, 6 for burn
int hairColour; //1 for black, 2 for light brown
//3 for dark brown, 4 for dark red
int clothType; //1 fot jacketpant, 2 for coatpant
//3 for robe( not available )
int clothColour[ 3 ]; //red green blue component of cloth col
int pantColour[ 3 ]; //red green blue component of pant col
int personality; //1 for friendly, 2 for optimistic,
//3 for calm, 4 for individualistic,
//5 for pessimistic, 6 for aggressive,
//7 for psychopathic
int careerPath; //11 for assault, 33 for covert,
//52 for explosive, 132 for medical,
//193 for sniper, 200 for tactical
int dailyServiceRate; //don't set to 0 for hire operative
int totalServiceDay; //don't set to 360 for hire operative
int availability; //1 for available, 2 for squad,
//3 for injured, 4 for missing,
//5 for killed
int arrivalMap;
int arrivalDay;
int recoverMinute;
int recoverHour;
int recoverDay;
int totalKills;
int meleeWeaponXP;
int throwingXP;
int unarmedXP;
int sneakXP;
int speechXP;
int tradeXP;
int specialist1; //always set this to 4 - markmanship
int specialist2; //15 for explosive, 17 for lockpicking
//18 for medical, 19 for mechanical
//33 for leadership
int specialist1XP;
int specialist2XP;
int torsoSlot[ 2 ];
int legSlot[ 2 ];
int likedPerson; //refer to ID details of operative
int dislikedPerson; //refer to ID details of operative
char confirmOrderText[ 20 ];
char refuseOrderText[ 48 ];
char depressedText[ 64 ];
char seeEnemyText[ 64 ];
char killEnemyText[ 64 ];
char bleedText[ 64 ];
char improveSkillText[ 64 ];
char tiredText[ 64 ];
char likedPersonText[ 64 ];
char dislikedPersonText[ 64 ];
char greetText[ 64 ];
char sayGoodbyeText[ 64 ];
char congratulationText[ 64 ];
NPCTalkX.dat
NPCTalkX.dat which can be found on data folder contain details of important NPC greet, introduction and trade related dialogue. The file is basically a collection of records. Each record represent one NPC. For each record, there are several details. For the purpose of modifying dialogue, you are only interested to modify greetText, introduceText1 or introduceText2.
If the NPC is trader, you might want to modify whatISellText1, whatISellText2, iNoMoneyText, youNoMoneyText, iNoBuyText, takeYourItemText or endTradeText.
int num;
int ID; //don't mess up this detail!
int trade; //if set to 1, there's option to
//buy/sell in Talk Panel
int cabinetElevation; //the game need elevation, tileY and
int cabinetY[ 3 ]; //tileX data to find buy, sell and
int cabinetX[ 3 ]; //repair cabinet for each trader
int buyItemMin; //you can force doctor to buy rifle!
int buyItemMax; //refer to item ID details
int startHour; //info purpose only, setting to midnight
int endHour; //won't make the difference
int missionNum[ 2 ]; //refer to specific record in
//missionX.dat, useful for non-trader NPC
char nickName[ 8 ];
char greetText[ 64 ];
char introduceText1[ 64 ];
char introduceText2[ 64 ];
char whatISellText1[ 64 ];
char whatISellText2[ 64 ];
char iNoMoneyText[ 64 ];
char youNoMoneyText[ 64 ];
char iNoBuyText[ 64 ];
char takeYourItemText[ 64 ];
char endTradeText[ 64 ];
missionX.dat
missionX.dat which can be found on data folder contain details of every mision in the game including dialogue by NPC when operative ask about the mission. The file is basically a collection of records. Each record represent a mission. For each record, there are several details. Although there's plenty of details, for the purpose of modifying dialogue, you are only interested to modify sourceText1, sourceText2, sourceText3, sourceText4, targetText1, targetText2, unfinishText or finishText.
int num;
int type; //1 for prisoner rescue, 2 for destroy
//cult/group,3 for raid, 4 for strategic
//assault, 5 for supply line assault
char code[ 32 ]; //mission title
char sourceName[ 16 ]; //name of NPC who gives the mission
char target1Name[ 16 ]; //name of NPC whose need to be rescued/killed
char target2Name[ 16 ]; //currently only Command Server makes sense
char sourceText1[ 64 ]; //what NPC will say if operative ask about
char sourceText2[ 64 ]; //the mission
char sourceText3[ 64 ];
char sourceText4[ 64 ];
char targetText1[ 64 ]; //what target NPC will say if operative ask
char targetText2[ 64 ]; //about the mission, mostly sarcastic/
//offensive
char unfinishText[ 64 ]; //what source NPC will say if operative
//tell mission is unfinished, can be funny
char finishText[ 64 ]; //what source NPC will say if operative
//tell the mission is finished
int sourceNPC; //NPC ID detail of source NPC
int targetSector; //game level which contain the mission
int targetNPC; //NPC ID detail of target NPC
int targetObject; //currently this points to command server
int status; //1 for unfinished, 2 for finished
int objective[ 4 ]; //1 for completed objective
int machineDestroyed; //written by game if all machine are destroyed
int enemyDead; //written by game if all enemy are dead
int stuffUnlocked; //written by game if all locked cabinet/door
//are unlocked
int allianceControl; //written by game if mission is finished
int credits; //written by game if mission is finished
int currentSecond;
int totalSecond; //how many seconds spent on the game level
//to finish the mission, used for score
//calculation
int score; //written by game if mission is finished
NPCBubbleX.dat
NPCBubbleX.dat which can be found on data folder contain details of generic NPC dialogue response when operative talks to them. The file is basically a collection of records. Each record represent one NPC. For each record, there are only a few details. For the purpose of modifying dialogue, you are only interested to modify talkBubble1 or talkBubble2.
int num; int ID; //don't mess up this detail! char talkBubble1[ 64 ]; char talkBubble2[ 64 ]; char funnyBubble1[ 64 ]; //a surprise package char funnyBubble2[ 64 ]; //a surprise package
globalNPCX.dat
The huge globalNPCX.dat which can be found on data folder contain details of every NPC and enemy in the game. The file is basically a collection of records. Each record represent NPC or enemy. For each record, there are several details. Although there's plenty of details, for the purpose of modifying dialogue, you are only interested to modify chat.
int num;
int ID; //don't mess up the detail!
int startTileMap; //which game level to put the NPC
int startElevation;
int startTileY;
int startTileX;
int direction; //starting direction, 1 for north, 2 for NE,
//3 for east, 4 for SE, 5 for south,
//6 for SW, 7 for west, 8 for NW
int aggression; //1 for pacifist AI, 2 for aggressive AI
int preservation; //1 for coward AI, 2 for survival AI,
//3 for warrior AI
int combatTactics; //1 for rush claw AI, 2 for stealth claw AI
//3 for rush missile AI, 4 for stealth
//missile AI
char nickName[ 8 ]; //the game won't show the name, pal!
char chat[ 64 ];
int age; //increasing it will increase all skills
int creature; //1 for normal human, 2 for cyborg,
//3 for mutant
int race; //1 for Intellect, 2 for Talent, 3 for Peace
//4 for Faith, 5 for Chaos, 6 for Might
int gender; //1 for male, 2 for female
int skinColour; //1 for light brown, 2 for normal brown
//3 for dark brown, 4 for pink, 5 for gray
//6 for burn
int hairColour; //1 for black, 2 for light brown
//3 for dark brown, 4 for dark red
int clothType; //1 fot jacketpant, 2 for coatpant
//3 for robe( not available )
int clothColour[ 3 ]; //red green blue component of cloth colour
int pantColour[ 3 ]; //red green blue component of pant colour
int careerPath; //31 for chief, 32 for councillor,
//34 for cultist, 40 for doctor,
//51 for elite soldier
//53 for explosive soldier, 60 for fanatic
//70 for gangster, 71 for guerilla
//90 for infantry soldier, 120 for leader
//131 for medical soldier, 133 for miner
//135 for machine, 160 for worker
//165 for prisoner, 190 for scientist,
//191 for guard, 194 for commander,
//201 for tailor,204 for tycoon,
//230 for weapon specialist
int dead;
int currentHealthPoint;
int headSlot[ 2 ];
int faceSlot[ 2 ];
int earSlot[ 2 ];
int torsoSlot[ 2 ];
int handSlot[ 8 ];
int legSlot[ 2 ];
int pouchSlot[ 4 ][ 4 ];