7676import mekhq .campaign .universe .PlanetarySystem ;
7777import mekhq .campaign .universe .RandomFactionGenerator ;
7878import mekhq .campaign .universe .Systems ;
79+ import mekhq .campaign .universe .factionStanding .FactionStandingUtilities ;
80+ import mekhq .campaign .universe .factionStanding .FactionStandings ;
7981
8082/**
8183 * Contract offers that are generated monthly under AtB rules.
@@ -785,7 +787,7 @@ private void setContractClauses(AtBContract contract, int unitRatingMod, Campaig
785787
786788 if (Factions .getInstance ().getFaction (contract .getEnemyCode ()).isClan () &&
787789 !Factions .getInstance ().getFaction (contract .getEmployerCode ()).isClan ()) {
788- for (int i = 0 ; i < 4 ; i ++) {
790+ for (int i = 0 ; i < mods . mods . length ; i ++) {
789791 if (i == CLAUSE_SALVAGE ) {
790792 mods .mods [i ] -= 2 ;
791793 } else {
@@ -802,10 +804,19 @@ private void setContractClauses(AtBContract contract, int unitRatingMod, Campaig
802804 }
803805 }
804806
807+ if (campaign .getCampaignOptions ().isUseFactionStandingNegotiationSafe ()) {
808+ FactionStandings standings = campaign .getFactionStandings ();
809+ double regard = standings .getRegardForFaction (contract .getEmployerCode (), true );
810+ int negotiationModifier = FactionStandingUtilities .getNegotiationModifier (regard );
811+ for (int i = 0 ; i < mods .mods .length ; i ++) {
812+ mods .mods [i ] += negotiationModifier ;
813+ }
814+ }
815+
805816 int [][] missionMods = { { 1 , 0 , 1 , 0 }, { 0 , 1 , -1 , -3 }, { -3 , 0 , 2 , 1 }, { -2 , 1 , -1 , -1 }, { -2 , 0 , 2 , 3 },
806817 { -1 , 1 , 1 , 1 }, { -2 , 3 , -2 , -1 }, { 2 , 2 , -1 , -1 }, { 0 , 2 , 2 , 1 }, { -1 , 0 , 1 , 2 },
807818 { -1 , -2 , 1 , -1 }, { -1 , -1 , 2 , 1 } };
808- for (int i = 0 ; i < 4 ; i ++) {
819+ for (int i = 0 ; i < mods . mods . length ; i ++) {
809820 mods .mods [i ] += missionMods [contract .getContractType ().ordinal ()][i ];
810821 }
811822
0 commit comments