Side Relations
Jump to navigation
Jump to search
Sides relations
Sides friendship
Helper function: BIS_fnc_sideIsFriendly
Sides enmity
Helper function: BIS_fnc_sideIsEnemy
Change relations
- You can set which sides resistance is friendly/enemy to in the mission editor (click on the Intel box).
- Everyone is friendly toward civilians. Civilians AI have a total impunity and can kill any enemy without retaliation (same as captive units).
- You can use the setFriend command to set relations between any sides (even east and west).
// will make east friendly to west and vice versa east setFriend [west, 1]; west setFriend [east, 1];
One way hostility
Using the setCaptive command allows you to stop enemy units to fire on the target unit.
_soldier setCaptive true; // _soldier can shoot at enemy but enemy will not return fire
You can re-activate hostility by canceling captive status.
_soldier setCaptive false; // _soldier will be shot at again by enemy units
Two way hostility with civilians
To make a civilian a potential target to other sides, you can either:
- make the civilian a renegade by using the addRating command. This will make him a renegade, meaning an enemy to everyone including other civilians.
_civilian addRating -10000; // will cause sides to shoot civilian, but not civilian to shoot back - for that, use setFriend
private _eastGroup = createGroup east; [_civilian] joinSilent _eastGroup;
Set in the editor
- Group your civilians with an east leader
- Delete the east leader on mission load:
- Put
deleteVehicle this
in the officer’s initialization field. - Alternatively, set the probability of presence slider of the officer to zero.
- Put
- On mission start, the east leader will not be here but the civilians will be on the east side.
Code used to generate the tables:
private _func = BIS_fnc_sideIsFriendly; private _sidesAsString = ["east", "west", "resistance", "civilian", "sideAmbientLife", "sideUnknown", "sideEnemy", "sideFriendly", "sideEmpty", "sideLogic"]; private _sideResults = []; { private _sideAsString = _x; private _side = call compile _sideAsString; _sideResults pushBack ([_sideAsString] + (_sidesAsString apply { [_side, call compile _x] call _func })); } forEach _sidesAsString; private _result = "{{| class=""wikitable"" style=""text-align: center""\n|-\n"; { _result = _result + "! [[" + _x +"]]\n"; } forEach _sidesAsString; { private _results = _x; { if (_x isEqualType true) then { if (_x) then { _result = _result + "| {{Icon|checked}}\n"; } else { _result = _result + "| {{Icon|unchecked}}\n"; } } else { _result = _result + ("| [[" + _x + "]]\n"); } } forEach _results; _result = _result + "|-\n"; } forEach _sideResults; _result = _result + "|}"; _result;↑ Back to spoiler's top