-
Notifications
You must be signed in to change notification settings - Fork 92
/
Copy pathobject_speak.sqf
52 lines (45 loc) · 1.42 KB
/
object_speak.sqf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private ["_type","_local","_unit"];
_unit = _this select 0;
_type = _this select 1;
_chance = _this select 2;
_dis = switch true do {
case (count _this > 4): {_this select 4};
case (_type in ["shout","hit","attack","scream","breath"]): {100};
default {40};
};
_local = false;
if (count _this > 3) then { _local = _this select 3; };
if (!_local) then {
// we override _local according to number of players inside _dis radius
_local = { _unit distance _x < _dis; } count playableUnits <= 1;
};
//diag_log(format["%1 dis:%2 local:%3", __FILE__, _dis, _local]);
_num = switch (_type) do {
default {0};
case "cough": {2};
case "chase": {14};
case "spotted": {13};
case "hit": {6};
case "attack": {13};
case "idle": {35};
case "scream": {4};
case "fracture": {1};
case "eat": {3};
case "cook": {2};
case "panic": {1};
case "open_backpack": {4};
case "open_inventory": {4};
};
_isWoman = getText(configFile >> "cfgVehicles" >> (typeOf _unit) >> "TextPlural") == "Women";
if (_isWoman and (_type in ["scream","panic"])) then {
_type = _type + "_w";
};
if ((round(random _chance) == _chance) or (_chance == 0)) then {
_rnd = round(random _num);
_sound = "z_" + _type + "_" + str(_rnd);
if (_local) then {
_unit say [_sound, _dis];
} else {
[nil,_unit,rSAY,[_sound, _dis]] call RE;
};
};