That's the problem with using 'GetNationRelation(PERSONAL_NATION, mNation)' as the check rather than 'GetRMRelation(GetMainCharacter(), mNation)'. The former is for nations and determines whether their ships shoot at each other (hostile), whether one will hate you if you attack the other (allied) or whether they just leave each other alone (neutral). The latter deals in detail with how they view you. So if you want to distinguish between "Wary" and "Hostile", that's the one to use.
Very true. Maybe it would indeed be better to use nested if-statements based on the 'float relation points'.
When does PERSONAL_NATION become RELATION_FRIEND to another nation?
Come to think of it, I'm not sure if it ever does. I'd have to check nations.c to be sure.
If it doesn't, would you reckon it makes sense to change it so that it DOES if you are personally Friendly with that nation (eg.
GetRMRelation returns 0.0 or higher)?
I had the same idea, and was going to post a slightly modified version of the one I posted earlier, replacing 'rel = REL_NEUTRAL;' with 'rel = GetNationRelation(pNation, mNation);'.
As you want the 'float points' and not the 'int relation', you would need this:
Code:
RelationToRMRelation(GetNationRelation(pNation, mNation))
That is functionally equivalent to:
Code:
rel = RelationToRMRelation(GetFlagRMRelation(mNation));
Because 'pNation' is equal to
GetCurrentFlag() , I used that second one in my rewrite to make it clearer that it is based on FLAG.
-60 is borderline and is the default hostile setting if your nation is at war with theirs, even if you personally haven't done anything. You're not massively hostile at -61.
Perhaps define a new value at, say, -90.
[...]
If your relation is MASSIVELY hostile, i.e. less than -90, then they're actively looking for you.
I wasn't saying that you're "massively hostile at -61".
What I propose is a gradual change: At "60" you are only just barely hostile and -119 is where you are truly massively hostile.
That is why I figure that
GetDetectionChance should return 0.0 at "60" and 1.0 at "-119".
This only occurred to me today, so the version I wrote yesterday doesn't actually do that yet.
Should be a relatively simple change though.
The only realistic use for 'GetDetectionChance' is for enemy ships and forts.
I was wondering about that... If we do add that, maybe it should affect only navy ships and not merchant ones?
But then, as I said, you're either a Pirate or you've been attacking their ships legally under a LoM, earning fame, and becoming more visible for the normal 'GetChanceDetectFalseFlag' anyway.
That is true. Though I imagine it would be possible to be famous without being massively hostile or you might be massively hostile without a huge fame.
Meanwhile, traders aren't actively looking for you, it's not their job, and they can't see your flag anyway from inside their shops. So they only need to check against fame, i.e. 'GetChanceDetectFalseFlag'.
I was thinking about "an increased number of (unseen) Wanted posters".
This is along the lines of the simple "dangerous" locations I implemented many years ago for
@Bartolomeu o Portugues' storyline.
He added REAL "Wanted" posters there with Bartolomeu's portrait on them and there may be instant hostility in those areas because people are on the lookout for you.
What I would somehow like to do is to implement that as a more general gameplay element that isn't linked to just one storyline.
I figure that being more hostile could function as some sort of "negative fame"/notoriety.
So even if you're not famous for positive reasons (eg. your money or your actions as indicated by Fame), stories about your hostile actions do still go round.
Moreso if you are more hostile.
Implementing such logic here and there would also help to make a difference between "-60" and "-119" because right now that doesn't mean anything.
Hostile = hostile, which doesn't sound entirely right to me....