Merge pull request #839 from briankinney/rule-based-faction-thresholds

Rule based faction thresholds
This commit is contained in:
Michael Cook (mackal) 2019-04-13 16:01:29 -04:00 committed by GitHub
commit 6e1f317c60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 12 deletions

View File

@ -18,6 +18,7 @@
#include "faction.h" #include "faction.h"
#include "races.h" #include "races.h"
#include "rulesys.h"
const char *FactionValueToString(FACTION_VALUE fv) const char *FactionValueToString(FACTION_VALUE fv)
{ {
@ -59,35 +60,32 @@ FACTION_VALUE CalculateFaction(FactionMods* fm, int32 tmpCharacter_value)
if (fm) { if (fm) {
character_value += fm->base + fm->class_mod + fm->race_mod + fm->deity_mod; character_value += fm->base + fm->class_mod + fm->race_mod + fm->deity_mod;
} }
if (character_value >= 1100) { if (character_value >= RuleI(Faction, AllyFactionMinimum)) {
return FACTION_ALLY; return FACTION_ALLY;
} }
if (character_value >= 750 && character_value <= 1099) { if (character_value >= RuleI(Faction, WarmlyFactionMinimum)) {
return FACTION_WARMLY; return FACTION_WARMLY;
} }
if (character_value >= 500 && character_value <= 749) { if (character_value >= RuleI(Faction, KindlyFactionMinimum)) {
return FACTION_KINDLY; return FACTION_KINDLY;
} }
if (character_value >= 100 && character_value <= 499) { if (character_value >= RuleI(Faction, AmiablyFactionMinimum)) {
return FACTION_AMIABLE; return FACTION_AMIABLE;
} }
if (character_value >= 0 && character_value <= 99) { if (character_value >= RuleI(Faction, IndifferentlyFactionMinimum)) {
return FACTION_INDIFFERENT; return FACTION_INDIFFERENT;
} }
if (character_value >= -100 && character_value <= -1) { if (character_value >= RuleI(Faction, ApprehensivelyFactionMinimum)) {
return FACTION_APPREHENSIVE; return FACTION_APPREHENSIVE;
} }
if (character_value >= -500 && character_value <= -101) { if (character_value >= RuleI(Faction, DubiouslyFactionMinimum)) {
return FACTION_DUBIOUS; return FACTION_DUBIOUS;
} }
if (character_value >= -750 && character_value <= -501) { if (character_value >= RuleI(Faction, ThreateninglyFactionMinimum)) {
return FACTION_THREATENLY; return FACTION_THREATENLY;
} }
if (character_value <= -751) {
return FACTION_SCOWLS; return FACTION_SCOWLS;
} }
return FACTION_INDIFFERENT;
}
// this function should check if some races have more than one race define // this function should check if some races have more than one race define
bool IsOfEqualRace(int r1, int r2) bool IsOfEqualRace(int r1, int r2)

View File

@ -758,6 +758,17 @@ RULE_BOOL(Bugs, UseOldReportingMethod, true) // Forces the use of the old bug re
RULE_BOOL(Bugs, DumpTargetEntity, false) // Dumps the target entity, if one is provided RULE_BOOL(Bugs, DumpTargetEntity, false) // Dumps the target entity, if one is provided
RULE_CATEGORY_END() RULE_CATEGORY_END()
RULE_CATEGORY(Faction)
RULE_INT(Faction, AllyFactionMinimum, 1100)
RULE_INT(Faction, WarmlyFactionMinimum, 750)
RULE_INT(Faction, KindlyFactionMinimum, 500)
RULE_INT(Faction, AmiablyFactionMinimum, 100)
RULE_INT(Faction, IndifferentlyFactionMinimum, 0)
RULE_INT(Faction, ApprehensivelyFactionMinimum, -100)
RULE_INT(Faction, DubiouslyFactionMinimum, -500)
RULE_INT(Faction, ThreateninglyFactionMinimum, -750)
RULE_CATEGORY_END()
#undef RULE_CATEGORY #undef RULE_CATEGORY
#undef RULE_INT #undef RULE_INT
#undef RULE_REAL #undef RULE_REAL

View File

@ -0,0 +1,11 @@
-- Supplied for convenient configuration of faction thresholds to the values that were in place prior to 2019-03-01 update
INSERT INTO rule_values VALUES
(0, "Faction:AllyFactionMinimum", 1101),
(0, "Faction:WarmlyFactionMinimum", 701),
(0, "Faction:KindlyFactionMinimu", 401),
(0, "Faction:AmiablyFactionMinimum", 101),
(0, "Faction:IndifferentlyFactionMinimum", 0)
(0, "Faction:ApprehensivelyFactionMinimum", -100)
(0, "Faction:DubiouslyFactionMinimum", -700)
(0, "Faction:ThreateninglyFactionMinimum", -999)
;