98 lines
3.1 KiB
Plaintext
98 lines
3.1 KiB
Plaintext
|
/*
|
||
|
DZMSAIKilled.sqf by Vampire
|
||
|
This function is called when an AI Unit is killed.
|
||
|
It handles the humanity allocation and body cleanup.
|
||
|
Updated for DZMS 2.0 by JasonTM
|
||
|
*/
|
||
|
|
||
|
local _unit = _this select 0;
|
||
|
local _player = _this select 1;
|
||
|
local _array = _unit getVariable ["DZMSAI" + dayz_serverKey, nil];
|
||
|
local _mission = _array select 0;
|
||
|
local _aiType = _array select 1;
|
||
|
|
||
|
if (typeName(DZMSMissionData select _mission) == "ARRAY") then {
|
||
|
DZMSMissionData select _mission set [0, ((DZMSMissionData select _mission) select 0) - 1];
|
||
|
};
|
||
|
|
||
|
//If the killer is a player, lets handle the humanity
|
||
|
if (isPlayer _player) then {
|
||
|
|
||
|
//diag_log text format ["[DZMS]: Debug: Unit killed by %1 at %2", _player, mapGridPosition _unit];
|
||
|
|
||
|
//Lets grab some info
|
||
|
local _humanity = _player getVariable ["humanity",0];
|
||
|
local _banditkills = _player getVariable ["banditKills",0];
|
||
|
local _humankills = _player getVariable["humanKills",0];
|
||
|
|
||
|
//If the player gets humanity per config, lets give it
|
||
|
if (DZMSMissHumanity) then {
|
||
|
if (_aiType == "Bandit") then {
|
||
|
_player setVariable ["humanity",(_humanity + DZMSBanditHumanity),true];
|
||
|
} else {
|
||
|
_player setVariable ["humanity",(_humanity - DZMSHeroHumanity),true];
|
||
|
};
|
||
|
|
||
|
if (DZMSKillFeed) then {
|
||
|
local _humanityReward = if (_aiType == "Hero") then {format["-%1 Humanity",DZMSHeroHumanity];} else {format["+%1 Humanity",DZMSBanditHumanity];};
|
||
|
local _aiColor = if (_aiType == "Hero") then {"#3333ff";} else {"#ff0000";};
|
||
|
local _params = [_aiColor,"0.50","#FFFFFF",-.4,.2,2,0.5];
|
||
|
|
||
|
RemoteMessage = ["ai_killfeed", [_aiType," AI Kill",_humanityReward],_params];
|
||
|
(owner _player) publicVariableClient "RemoteMessage";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
//If this counts as a bandit or hero kill, lets give it
|
||
|
if (DZMSCntKills) then {
|
||
|
if (_aiType == "Bandit") then {
|
||
|
_player setVariable ["banditKills",(_banditkills + 1),true];
|
||
|
} else {
|
||
|
_player setVariable ["humanKills",(_humankills + 1),true];
|
||
|
};
|
||
|
};
|
||
|
|
||
|
// If ZSC installed and DZMSAICheckWallet enabled, add money to AI wallets
|
||
|
if (DZMSAICheckWallet && Z_singleCurrency) then {
|
||
|
local _cash = round(random 10) * 500; // adds money to AI wallets in 500x increments.
|
||
|
_unit setVariable["cashMoney",_cash ,true];
|
||
|
};
|
||
|
|
||
|
//Lets inform the nearby AI of roughly the players position
|
||
|
//This makes the AI turn and react instead of laying around
|
||
|
{
|
||
|
if (((position _x) distance (position _unit)) <= 300) then {
|
||
|
_x reveal [_player, 4.0];
|
||
|
}
|
||
|
} forEach allUnits;
|
||
|
|
||
|
} else {
|
||
|
|
||
|
//diag_log text format ["[DZMS]: Debug: Unit killed by %1 at %2", _player, mapGridPosition _unit];
|
||
|
|
||
|
if (DZMSRunGear) then {
|
||
|
//Since a player ran them over, or they died from unknown causes
|
||
|
//Lets strip their gear
|
||
|
if (!isNull (unitBackpack _unit)) then {removeBackpack _unit;};
|
||
|
removeAllWeapons _unit;
|
||
|
{
|
||
|
_unit removeMagazine _x
|
||
|
} forEach magazines _unit;
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
if (DZMSCleanDeath) exitWith {
|
||
|
_unit call sched_co_deleteVehicle;
|
||
|
};
|
||
|
|
||
|
_unit setVariable ["bodyName","NPC",false]; // Corpse will be deleted by sched_corpses function according to DZE_NPC_CleanUp_Time
|
||
|
|
||
|
if (DZMSUseNVG) then {
|
||
|
_unit removeWeapon "NVGoggles";
|
||
|
};
|
||
|
|
||
|
if (DZMSUseRPG && {"RPG7V" in (weapons _unit)}) then {
|
||
|
_unit removeWeapon "RPG7V";
|
||
|
_unit removeMagazines "PG7V";
|
||
|
};
|