I just figured out a good tweak for regulating player reputation. This tweak makes it so you don't have to donate to the church 50 times just to get a raise in reputation. You can set it to whatever you like but I find this value works well to better regulate reputation level at any given time.
In Program\DIALOGS\russian\Common_Church.c look for the following lines:
case "No donation":
dialog.Text = DLG_TEXT_BASE[40];
Link.l1 = DLG_TEXT_BASE[41];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[42];
Link.l2.go = "exit";
break;
case "donation paid_100":
AddMoneyToCharacter(pchar, -100);
pchar.questTemp.donate = makeint(pchar.questTemp.donate) + 100;
ChangeCharacterReputation(pchar, -20);
dialog.Text = DLG_TEXT_BASE[43];
Link.l1 = DLG_TEXT_BASE[44];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[45];
Link.l2.go = "exit";
AddDialogExitQuest("donation");
break;
case "donation paid_1000":
AddMoneyToCharacter(pchar, -1000);
pchar.questTemp.donate = makeint(pchar.questTemp.donate) + 1000;
dialog.Text = DLG_TEXT_BASE[46];
Link.l1 = DLG_TEXT_BASE[47];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[48];
Link.l2.go = "exit";
AddDialogExitQuest("donation");
break;
case "donation paid_5000":
AddMoneyToCharacter(pchar, -5000);
pchar.questTemp.donate = makeint(pchar.questTemp.donate) + 5000;
ChangeCharacterReputation(pchar, 20);
dialog.Text = DLG_TEXT_BASE[49];
Link.l1 = DLG_TEXT_BASE[50];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[51];
Link.l2.go = "exit";
AddDialogExitQuest("donation");
break;
You will see as denoted by red and green text two new functions added to the donation conditions. This means you get +20 reputation for 5000 gold which is essentially one rank and similarly -20 for donating 100 gold which is minus one rank.
Possibly a better option would be to also increase the donation amount in accordance with how much rep you set it to. Something like AddMoneyToCharacter(pchar, -20000); That way you don't have to enter the dialogue over and over.
In Program\DIALOGS\russian\Common_Church.c look for the following lines:
case "No donation":
dialog.Text = DLG_TEXT_BASE[40];
Link.l1 = DLG_TEXT_BASE[41];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[42];
Link.l2.go = "exit";
break;
case "donation paid_100":
AddMoneyToCharacter(pchar, -100);
pchar.questTemp.donate = makeint(pchar.questTemp.donate) + 100;
ChangeCharacterReputation(pchar, -20);
dialog.Text = DLG_TEXT_BASE[43];
Link.l1 = DLG_TEXT_BASE[44];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[45];
Link.l2.go = "exit";
AddDialogExitQuest("donation");
break;
case "donation paid_1000":
AddMoneyToCharacter(pchar, -1000);
pchar.questTemp.donate = makeint(pchar.questTemp.donate) + 1000;
dialog.Text = DLG_TEXT_BASE[46];
Link.l1 = DLG_TEXT_BASE[47];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[48];
Link.l2.go = "exit";
AddDialogExitQuest("donation");
break;
case "donation paid_5000":
AddMoneyToCharacter(pchar, -5000);
pchar.questTemp.donate = makeint(pchar.questTemp.donate) + 5000;
ChangeCharacterReputation(pchar, 20);
dialog.Text = DLG_TEXT_BASE[49];
Link.l1 = DLG_TEXT_BASE[50];
Link.l1.go = "node_3";
Link.l2 = DLG_TEXT_BASE[51];
Link.l2.go = "exit";
AddDialogExitQuest("donation");
break;
You will see as denoted by red and green text two new functions added to the donation conditions. This means you get +20 reputation for 5000 gold which is essentially one rank and similarly -20 for donating 100 gold which is minus one rank.
Possibly a better option would be to also increase the donation amount in accordance with how much rep you set it to. Something like AddMoneyToCharacter(pchar, -20000); That way you don't have to enter the dialogue over and over.