For a game that is supposed to have aspects of an RPG, inter-character interaction is somewhat limited. Sure, mercs can like/dislike others, and even refuse to work with them... but that is static. Even sexism, racism and other neat stuff is static. Merc relationships don't evolve.
This feature aims to change that. :doctor:
There are now a couple of events that can cause one merc to change his opinion on other mercs. This can be a negative or a positive change.
As all actions of our mercenaries are fundamentally controlled by the player, some events won't happen unless the player orders/doesn't stop them - like friendly fire. Other events are
as good as inevitable in the course of your campaign. You might even find some events unjustified (mercs blame other mercs for decisions that the player made), but that's just human nature
An opinion-related event can happen once per day. This is necessary, otherwise an event might stack and bring opinions to ludicrous values. However, a merc remembers an event for up to 4 days. This means that a merc can hold a grudge for some time. If Mr. Higgins shoots Ms. Higgins in an accident once, she might forgive him. If this becomes a daily habit, she might get pissed :blackcat:
The opinion impacts can be set in Morale_Settings.ini. Note that the total sum of opinions (base value, sexism/racism/etc., these events) will be cut to be between -25 (HATRED) and +25 (LOVE/BROMANCE).
; if someone else did something to us, our opinion of them is modified
; values between -50 and 0 for bad stuff and 0 and 50 for good stuff
; friendly fire
OPINIONEVENT_FRIENDLYFIRE = -10
; a snitch told the player about our complaining
OPINIONEVENT_SNITCHSOLDMEOUT = -3
; a snitch stopped us from stealing/taking drugs
OPINIONEVENT_SNITCHINTERFERENCE = -5
; someone else is friends with someone we really don't like
OPINIONEVENT_FRIENDSWITHHATED = -4
; someone else got a contract extension before we did, even though we had less time to begin with
OPINIONEVENT_CONTRACTEXTENSION = -2
; we blame our leader for a retreat order
OPINIONEVENT_ORDEREDRETREAT = -6
; someone killed a non-hostile civilian
OPINIONEVENT_CIVKILLER = -8
; someone carries too much and slows down the squad
OPINIONEVENT_SLOWSUSDOWN = -2
; we are hungry and someone else has food and obviously does not share
OPINIONEVENT_NOSHARINGFOOD = -1
; someone else's disability kicked in
OPINIONEVENT_ANNOYINGDISABILITY = -2
; other merc is an addict and consumes drugs
OPINIONEVENT_ADDICT = -6
; other merc is stealing
OPINIONEVENT_THIEF = -5
; we blame our leader for huge battle losses
OPINIONEVENT_WORSTCOMMANDEREVER = -9
; someone else earns a lot more, we feel it's unfair. See also WAGE_ACCEPTANCE_FACTOR in JA2_Options.ini
OPINIONEVENT_RICHGUY = -1
; Someone else has way better gear than we do
OPINIONEVENT_BETTERGEAR = -2
; someone else used our body as a rifle rest
OPINIONEVENT_YOUMOUNTEDAGUNONMYBREASTS = -3
; someone treated our wounds, also counts for doctoring
OPINIONEVENT_BANDAGED = 1
; each time mercs drink alcohol together, this can go either good (67%) or bad (33%).
; Good on good causes super, bad on bad causes worse. Bad and good cancel each other out.
OPINIONEVENT_DRINKBUDDIES_GOOD = 1
OPINIONEVENT_DRINKBUDDIES_SUPER = 4
OPINIONEVENT_DRINKBUDDIES_BAD = -1
OPINIONEVENT_DRINKBUDDIES_WORSE = -4
; sometimes another mercs can interject in an ongoing argument. If it is an IMP, the player can choose what to say
; There is a chance that parties in the argument alter their opinion towards the 'interjector' depending on the statement
; someone argued against/for the other side of the argument
OPINIONEVENT_AGAINST_ENEMY = 1
OPINIONEVENT_FOR_ENEMY = -1
; someone attempted to solve the argument by taking a reasonable stance, and we like/dislike that
OPINIONEVENT_SOLVECONFLICT_REASON_GOOD = 2
OPINIONEVENT_SOLVECONFLICT_REASON_BAD = -2
; someone attempted to solve the argument by taking an aggressive stance, and we like/dislike that
OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_GOOD = 3
OPINIONEVENT_SOLVECONFLICT_AGGRESSIVE_BAD = -3
; someone is sick, and we find that disgusting (whether disease is disgusting can be set in Disease.xml)
OPINIONEVENT_DISEASE_DISGUSTING = -3
[code]; mercs can form dynamic opinions of each other, this in turn will affect their morale
; for more info on what can affect opinions, see Dynamic Opinion Modifiers Settings in Morale_Settings.ini
DYNAMIC_OPINIONS = TRUE
; notify the player of opinon changes in the message log
DYNAMIC_OPINIONS_SHOWCHANGE = TRUE
; if a merc A notices that merc B's mean wage times exp level(B)/exp level (A) times this is greater than their mean wage, he can get a
; negative opinion of merc B
WAGE_ACCEPTANCE_FACTOR = 1.5[/pre]
[/align]
A note fot those interested in to how it's coded:
Merc profiles get a new array - ...[NUM_PROFILES][3]. This holds flagmasks for each other profile and event. Each event has 4 flags - one per day. At the start of a new day, the 'day 4' flags are deleted, and the other flags moved up one day.
This is in profiles, as dynamic opinions are relevant only for your mercs anyway. It is still a significant amount of space needed, but I saw no good way to save more memory. Strictly speaking we only need this for merscs in Arulco, but I'd rather not create some new id system and map that around.
The following events exist (this will likely become more later on):
shoots him: friendly fire can sour even the best relationship.
snitches behind out back: used when a snitch reports on a merc to the player. :digit:
interferes in our business: addicts an thieves don't like it if someone else stops them from doing their thing.
likes the wrong people: If someone is friends with someone we truly hate, we hate him a bit too.
gets a contract: If another merc's contract gets extended even though ours was shorter too begin with, this smells of favouritism. We don't want that, no?
orders retreat: a retreat is shameful. The mercs will likely blame their most senior comrade present (exp level + squadleader trait level)(even though it was the player who gave the order)
massacres the innocent: killing innocent (= non-hostile) civilians does not sit well with some people.
slows us down: if a merc carries too much, he will slow down travel. His squad won't like it.
is an addict: Most people aren't comfortable around addicts, especially if they are opnely reminded of the habit.
is a thief: Stealing does not sit well with many.
is a bad commander: if a lot of allies died in a battle (mercenary and militia), the mercs are likely to blame the most senior comrade present (exp level + squadleader trait level)(even though blaming the player might be more reasonable)
earns way too much: if mercs see someone else earning much more than they would on that level, they get jealous. Only applies to those who get increasing wages to begin with.
has all the good stuff: If other mercenaries have much better gear, this might cause jealousy.
heals us: bandaging/doctoring/surgery is a good thing.
drinks with us: This is the easiest way to improve team relations, and also finally gives us a good reason to organise a huge booze-fest with everybody. If 2 mercs drink alcohol at the same time, this will either improve (67% chance) or worsen (33% chance) their opinions a bit. Good and bad cancel each other out. However, good on good gives us a very good opinion and 'locks' the progress for today (works similar for bad). Basically, if you get the whole team drunk at the same time, they will either like each other more or less - more is more likely.
I feel this is a good ingame justification for using up a lot of alcohol. And it is offset by the cost of the stuff, and the loss of productivity due to hangovers :cheers:
MY CHEST HURTS BECAUSE YOU FIRED A RIFLE FROM IT: 'Nuff said.
someone sided with/against us/our opponent in an argument (dynamic dialogue result)
someone tried to solve conflict reasonably/aggressively, and we like/dislike that (dynamic dialogue result)
we have a disease, which others find disgusting
a doctor cured out disease
someone killed an enemy in a rather spectacular fashion, and we think that's awesome
someone killed an enemy in a rather spectacular fashion, and we are disgusted
someone taught us, and we're grateful for that
we won an important battle. Surely our leader's great strategy was a huge part of that...
someone saved our life: they killed an enemy that was attacking us, while we were wounded.
someone stole OUR kill. Dastardly fragfarmer! This server suxx!
someone took an enemy down with our assistance. We are such a good team.
someone convinced the enemy to surrender. We like that, because we're not some insane psychopath.
This might be nice and all, but how do we know what opinion modifiers apply? Easy... we use the internet!
[url]&feature=youtu.be[/url][/video]
There is a new website - Mercs Love or Dislike You, or MeLoDy - that allows you to see your team's opinions in detail. You can simply select two mercs and the site will display them, all relevant information on their opinions will be shown here.
On another page you can see the relations in your combat squads. The matrix displays both opinions. This allows you to quickly identify whether there might be a morale problem brewing one of your squads. Clicking on an entry will even refer you to the merc comparison again (this is helpful if, say, your team has 64 mercs or so).
This feature is on per default. Turning it off will set the modifier values for all these events to 0, but they'll still be noted internally (they just won't make a difference). The website will still exist.
This has been added to the trunk in r7240 and GameDir r2050. It is savegame compatible. The new GameDir data is required. Using outdated GameDir will herald the return of nazis riding dinosaurs on hoverboards, which you fully deserve if you don't follow installation instructions.
Edit 1: Update: r7297 introduces Dynamic dialogue, which is tied to this feature. It also introduces some new events that are results of dialogue.
Also, events that happened more than 4 days ago are no longer forgotten. Those events are no added to 'longterm opinion memory'. The total sum of dynamic opinions of a day, divided by 5, is added before that day's events are deleted. This simulates that memory fades, but you still somewhat remember things. It is listed as Past Grievances on the MeLoDY ywebsite.
Edit n: Added new events:
we won an important battle. Surely our leader's great strategy was a huge part of that...
someone saved our life: they killed an enemy that was attacking us, while we were wounded.
someone stole OUR kill. Dastardly fragfarmer! This server suxx!
someone took an enemy down with our assistance. We are such a good team.
someone convinced the enemy to surrender. We like that, because we're not some insane psychopath.