Side Relations: Difference between revisions
Jump to navigation
Jump to search
↑ Back to spoiler's top
Lou Montana (talk | contribs) m (Text replacement - "{{Feature|arma3 | " to "{{Feature | arma3 | ") |
Lou Montana (talk | contribs) m (Some wiki formatting) |
||
Line 289: | Line 289: | ||
* You can use the [[setFriend]] command to set relations between any sides (even [[east]] and [[west]]). | * You can use the [[setFriend]] command to set relations between any sides (even [[east]] and [[west]]). | ||
<sqf> | |||
// will make east friendly to west and vice versa | |||
east setFriend [west, 1]; | |||
west setFriend [east, 1]; | |||
</sqf> | |||
=== One way hostility === | === One way hostility === | ||
Using the [[setCaptive]] command allows you to stop enemy units to fire on the target unit. | Using the [[setCaptive]] command allows you to stop enemy units to fire on the target unit. | ||
<sqf>_soldier setCaptive true; // _soldier can shoot at enemy but enemy will not return fire</sqf> | |||
You can re-activate hostility by canceling captive status. | You can re-activate hostility by canceling captive status. | ||
<sqf>_soldier setCaptive]] false; // _soldier will be shot at again by enemy units</sqf> | |||
=== Two way hostility with civilians === | === Two way hostility with civilians === | ||
Line 305: | Line 307: | ||
To make a civilian a potential target to other sides, you can either: | 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 [[sideEnemy|renegade]], meaning an enemy to everyone including other civilians. | * make the civilian a renegade by using the [[addRating]] command. This will make him a [[sideEnemy|renegade]], meaning an enemy to everyone including other civilians. | ||
<sqf>_civilian addRating -10000; // this will cause sides to shoot civilian, but not civilian to shoot back - for that, use setFriend</sqf> | |||
{{Feature | Informative | the [[sideEnemy|renegade]] rating threshold is ''below'' -2000 (e.g -2001, -5000 etc).}} | {{Feature | Informative | the [[sideEnemy|renegade]] rating threshold is ''below'' -2000 (e.g -2001, -5000 etc).}} | ||
* make the civilian [[join]] an enemy group, e.g [[east]]: | * make the civilian [[join]] an enemy group, e.g [[east]]:<sqf> | ||
private _eastGroup = createGroup east; | |||
[_civilian] joinSilent _eastGroup; | |||
</sqf> | |||
=== Set in the editor === | === Set in the editor === | ||
Line 324: | Line 327: | ||
''Code used to generate the tables:'' | ''Code used to generate the tables:'' | ||
<spoiler> | <spoiler> | ||
<sqf> | |||
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; | |||
</sqf> | |||
</spoiler> | |||
[[Category: Scripting Topics]] | [[Category: Scripting Topics]] |
Revision as of 16:31, 14 April 2022
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).
One way hostility
Using the setCaptive command allows you to stop enemy units to fire on the target unit.
You can re-activate hostility by canceling captive status.
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; // this will cause sides to shoot civilian, but not civilian to shoot back - for that, use setFriend
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;