Reputation
Reputation ( original game ) - in Program\Characters\CharacterUtilite.c
Reputation ( New Horizons build 14 ) - in Program/Characters/CharacterUtilite.c
this gives:-
Reputation range
1-14 Horror of the High Seas - Femme Fatale
15-24 Bloody Terror - Scarlet
25-34 Swindler - Vixen
35-44 Rascal - Floozy
45-54 Neutral - Damsel
55-64 Bloke - Lass
65-74 Matey - Maiden
75-84 Dashing - Lady
85-89(max) Hero - Heroine
PcharRepPhrase
PcharRepPhrase - ( original game & New Horizons Build 14 ) unchanged
in Program\Dialog_func.c
This means that at the moment if a player has a reputation below 41 they will get a different dialog text ( & possibly link ) than a player with a higher reputation
For example in Sylvie Bondies_dialog.c
leading to EITHER
OR
The problem is that in New Horizons the player can have the same reputation ( Rascal - Floozy) and get a different outcome depending on where they are in the ( Rascal - Floozy) reputation band (35-44) - above or below 41.
This means they have no idea why they are getting different outcomes because their F2>Character screen will show the same reputation of ( Rascal - Floozy).
The value of 41 for the PcharRepPhrase function appears unchanged since the original game when it was the lowest value for the Neutral Reputation.
To make the PcharRepPhrase function work as originally intended, the value in New Horzons should be changed to 45.
So that the different outcomes happen when the player's reputation drops from Neutral (Damsel) to Rascal (Floozy). And thus the player sees that they get different outcomes when their reputation drops.
Am I talking sense here or have I misunderstood something?
I am not sure about the string GetReputationName(int reputation) code in Build 14. - Is my assumption about the reputation bands correct?
Thanks

Reputation ( original game ) - in Program\Characters\CharacterUtilite.c
Code:
// table service
string GetReputationName(int reputation)
{
if(reputation<11)
return ReputationTable[REPUTATIONT_HORROR];
if(reputation<21)
return ReputationTable[REPUTATIONT_BASTARD];
if(reputation<31)
return ReputationTable[REPUTATIONT_SWINDLER];
if(reputation<41)
return ReputationTable[REPUTATIONT_RASCAL];
if(reputation<51)
return ReputationTable[REPUTATIONT_NEUTRAL];
if(reputation<61)
return ReputationTable[REPUTATIONT_PLAIN];
if(reputation<71)
return ReputationTable[REPUTATIONT_GOOD];
if(reputation<81)
return ReputationTable[REPUTATIONT_VERYGOOD];
if(reputation<90)
return ReputationTable[REPUTATIONT_HERO];
return "";
}
Reputation ( New Horizons build 14 ) - in Program/Characters/CharacterUtilite.c
Code:
string GetReputationName(int reputation)
{
// KK -->
int delta = roundup(makefloat(REPUTATION_MAX - REPUTATION_MIN + 1) / makefloat(REPUTATION_TABLE_SIZE));
int rep = makeint(makefloat(reputation) / makefloat(delta) - 0.5); // GR: Add -0.5
if (rep < 0) rep = 0; // GR: Needed because reputation < 5 will give rep < 0
return ReputationTable[rep];
// <-- KK
}
this gives:-
Reputation range
1-14 Horror of the High Seas - Femme Fatale
15-24 Bloody Terror - Scarlet
25-34 Swindler - Vixen
35-44 Rascal - Floozy
45-54 Neutral - Damsel
55-64 Bloke - Lass
65-74 Matey - Maiden
75-84 Dashing - Lady
85-89(max) Hero - Heroine
PcharRepPhrase
PcharRepPhrase - ( original game & New Horizons Build 14 ) unchanged
in Program\Dialog_func.c
Code:
string PCharRepPhrase (string Var1, string Var2)
{
ref pchar = GetMainCharacter();
if(makeint(pchar.reputation) < 41)
{
return Var2;
}
else
{
return Var1;
}
}
This means that at the moment if a player has a reputation below 41 they will get a different dialog text ( & possibly link ) than a player with a higher reputation
For example in Sylvie Bondies_dialog.c
Code:
case "goddaughter_denied":
Dialog.snd = "voice\SYBO001\SYBO013";
dialog.text = DLG_TEXT[63];
link.l1 = pcharrepphrase(DLG_TEXT[64], DLG_TEXT[65]);
link.l1.go = pcharrepphrase("goddaughter_denied_1", "goddaughter_denied_2");
break;
leading to EITHER
Code:
case "goddaughter_denied_1":
Dialog.snd = "voice\SYBO001\SYBO014";
dialog.text = DLG_TEXT[66] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + DLG_TEXT[67] + GetMyName(&Characters[GetCharacterIndex(DLG_TEXT[68])]) + DLG_TEXT[69];
link.l1 = DLG_TEXT[70];
link.l1.go = "goddaughter_denied_confirm";
link.l2 = DLG_TEXT[71];
link.l2.go = "goddaughter";
break;
OR
Code:
case "goddaughter_denied_2":
Dialog.snd = "voice\SYBO001\SYBO016";
dialog.text = DLG_TEXT[75] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + DLG_TEXT[76];
link.l1 = DLG_TEXT[77];
link.l1.go = "goddaughter_denied_confirm_1";
break;
The problem is that in New Horizons the player can have the same reputation ( Rascal - Floozy) and get a different outcome depending on where they are in the ( Rascal - Floozy) reputation band (35-44) - above or below 41.
This means they have no idea why they are getting different outcomes because their F2>Character screen will show the same reputation of ( Rascal - Floozy).
The value of 41 for the PcharRepPhrase function appears unchanged since the original game when it was the lowest value for the Neutral Reputation.
To make the PcharRepPhrase function work as originally intended, the value in New Horzons should be changed to 45.
So that the different outcomes happen when the player's reputation drops from Neutral (Damsel) to Rascal (Floozy). And thus the player sees that they get different outcomes when their reputation drops.
Am I talking sense here or have I misunderstood something?
I am not sure about the string GetReputationName(int reputation) code in Build 14. - Is my assumption about the reputation bands correct?
Thanks
