DSH-Nibbler
Well-Known Member
TOP half
Code:
private["_aispawnpos","_wpradius","_wpnum","_numunits","_unitType","_globalFaction","_baseSkill","_potentialSkill","_gearSet","_aiunit","_aigroup","_sniperSkin","_sniperRifle","_sniperAmmo","_sniperAmmoCount","_sniperGear","_sniperWeapons","_gunnerSkin","_gunnerRifle","_gunnerAmmo","_gunnerAmmoCount","_gunnerGear","_gunnerWeapons","_militiaSkin","_militiaRifle","_militiaAmmo","_militiaAmmoCount","_militiaGear","_militiaWeapons"];
_aispawnpos =_this select 0;
_wpradius = _this select 1;
_wpnum = _this select 2;
_numunits = _this select 3;
_unitType = _this select 4;
_globalFaction = _this select 5;
_baseSkill = _this select 6;
_potentialSkill = _this select 7;
_gearSet = _this select 8;
respawnTime = _this select 9;
_xpos = _aispawnpos select 0;
_ypos = _aispawnpos select 1;
_skillRemainder = _potentialSkill - _baseSkill;
_aiSkills = ["aimingAccuracy","aimingShake","aimingSpeed","endurance","spotDistance","spotTime","courage","reloadSpeed","commanding","general"];
aispawnpos = _aispawnpos;
wpradius = _wpradius;
wpnum = _wpnum;
numunits = _numunits;
unitType = _unitType;
globalFaction = _globalFaction;
baseSkill = _baseSkill;
potentialSkill = _potentialSkill;
gearSet = _gearSet;
// to add more gear sets, just add another case, and copy and paste the variables from one of the other cases into it, and then reference it in the init.
switch (_gearSet) do {
case 0 : {
_sniperSkin = "BAF_Soldier_Sniper_MTP";
_sniperRifle = "BAF_AS50_scoped";
_sniperAmmo = "5RND_127x99_as50";
_sniperAmmoCount = 10;
_sniperGear = ["ItemBandage"];
_sniperWeapons = ["ItemMatchbox"];
_gunnerSkin = "BAF_Soldier_MTP";
_gunnerRifle = "Mk_48_DZ";
_gunnerAmmo = "100Rnd_762x51_M240";
_gunnerAmmoCount = 10;
_gunnerGear = ["ItemBandage"];
_gunnerWeapons = ["ItemMatchbox"];
_militiaSkin = "BAF_Soldier_L_MTP";
_militiaRifle = "BAF_L85A2_RIS_CWS";
_militiaAmmo = "30Rnd_556x45_StanagSD";
_militiaAmmoCount = 10;
_militiaGear = ["ItemBandage"]; // Additional gear (does not include tools or guns)
_militiaWeapons = ["ItemMatchbox"]; //Additional Guns and Tools
};
case 1 : {
_sniperSkin = "Citizen3";
_sniperRifle = "LeeEnfield";
_sniperAmmo = "10x_303";
_sniperAmmoCount = 3;
_sniperGear = ["ItemBandage"];
_sniperWeapons = ["ItemMatchbox"];
_gunnerSkin = "Worker1";
_gunnerRifle = "Winchester1866";
_gunnerAmmo = "15Rnd_W1866_Slug";
_gunnerAmmoCount = 3;
_gunnerGear = ["ItemBandage"];
_gunnerWeapons = ["ItemMatchbox"];
_militiaSkin = "Villager1";
_militiaRifle = "revolver_EP1";
_militiaAmmo = "6Rnd_45ACP";
_militiaAmmoCount = 3;
_militiaGear = ["ItemBandage"]; // Additional gear (does not include tools or guns)
_militiaWeapons = ["ItemMatchbox"]; //Additional Guns and Tools
};
};
if (_unitType == 0) then {
_rndLOut=floor(random 2)+1;
_unitType = _rndLout;
};
switch (_globalFaction) do {
case 0 : {_aigroup = createGroup resistance;};
case 1 : {_aigroup = createGroup east;};
case 2 : {_aigroup = createGroup west;};
};
diag_log format["globalFaction is %1",globalFaction];
for [{ x=1 },{ x < _numunits+1 },{ x = x + 1; }] do {
_unitpos = [_xpos+x,_ypos+x,0];
switch (_unitType) do {
case 1 : {
_ailoadout=[_sniperRifle,_sniperAmmo];
_sniperSkin createUnit [_unitpos, _aigroup, "_aiunit=this;",1,"Private"];
_aiunit enableAI "TARGET";
_aiunit enableAI "AUTOTARGET";
_aiunit enableAI "MOVE";
_aiunit enableAI "ANIM";
_aiunit enableAI "FSM";
_aiunit allowDammage true;
_aiunit setCombatMode "RED";
_aiunit setBehaviour "COMBAT";
_aiunit addMPEventHandler["MPKilled",{null=_this+[aispawnpos,wpradius,wpnum,1,1,globalFaction,baseSkill,potentialSkill,gearSet,respawnTime] execVM "scripts\unit_killed.sqf";}];
//clear default weapons / ammo
removeAllWeapons _aiunit;
removeAllItems _aiunit;
//add weapon
_aiwep = _ailoadout select 0;
_aiammo = _ailoadout select 1;
_aiunit addMagazine _aiammo;
_aiunit addweapon _aiwep;
//add mags
for [{z = 0},{z < _sniperAmmoCount},{z = z + 1}] do {
_aiunit addMagazine _aiammo;
};
//add gear
_gearCount = count _sniperGear;
for [{z = 0},{z < _gearCount},{z = z + 1}] do {
_currentItem = _sniperGear select z;
_aiunit addMagazine _currentItem;
};
//add weapons and tools
_weaponCount = count _sniperWeapons;
for [{z = 0},{z < _weaponCount},{z = z + 1}] do {
_currentItem = _sniperWeapons select z;
_aiunit addWeapon _currentItem;
};
//set skills
for [{z = 0},{z < 10},{z = z + 1}] do {
_totalSkill = (floor(random _skillRemainder)+_baseSkill)/10;
_aiunit setSkill [_aiSkills select z,_totalSkill];
};
};
case 2 : {
_ailoadout=[_gunnerRifle,_gunnerAmmo];
_gunnerSkin createUnit [_unitpos, _aigroup, "_aiunit=this;",1,"Private"];
_aiunit enableAI "TARGET";
_aiunit enableAI "AUTOTARGET";
_aiunit enableAI "MOVE";
_aiunit enableAI "ANIM";
_aiunit enableAI "FSM";
_aiunit allowDammage true;
_aiunit setCombatMode "RED";
_aiunit setBehaviour "COMBAT";
_aiunit addMPEventHandler["MPKilled",{null=_this+[aispawnpos,wpradius,wpnum,1,2,globalFaction,baseSkill,potentialSkill,gearSet,respawnTime] execVM "scripts\unit_killed.sqf";}];
//clear default weapons / ammo
removeAllWeapons _aiunit;
removeAllItems _aiunit;
//add weapon
_aiwep = _ailoadout select 0;
_aiammo = _ailoadout select 1;
_aiunit addMagazine _aiammo;
_aiunit addweapon _aiwep;
//add mags
for [{z = 0},{z < _gunnerAmmoCount},{z = z + 1}] do {
_aiunit addMagazine _aiammo;
};
//add gear
_gearCount = count _gunnerGear;
for [{z = 0},{z < _gearCount},{z = z + 1}] do {
_currentItem = _gunnerGear select z;
_aiunit addMagazine _currentItem;
};
//add weapons and tools
_weaponCount = count _gunnerWeapons;
for [{z = 0},{z < _weaponCount},{z = z + 1}] do {
_currentItem = _gunnerWeapons select z;
_aiunit addWeapon _currentItem;
};
//set skills
for [{z = 0},{z < 10},{z = z + 1}] do {
_totalSkill = (floor(random _skillRemainder)+_baseSkill)/10;
_aiunit setSkill [_aiSkills select z,_totalSkill];
};
};
case 3 : {
_ailoadout=[_militiaRifle,_militiaAmmo];
_militiaSkin createUnit [_unitpos, _aigroup, "_aiunit=this;",1,"Private"];
_aiunit enableAI "TARGET";
_aiunit enableAI "AUTOTARGET";
_aiunit enableAI "MOVE";
_aiunit enableAI "ANIM";
_aiunit enableAI "FSM";
_aiunit allowDammage true;
_aiunit setCombatMode "RED";
_aiunit setBehaviour "COMBAT";
_aiunit addMPEventHandler["MPKilled",{null=_this+[aispawnpos,wpradius,wpnum,1,3,globalFaction,baseSkill,potentialSkill,gearSet,respawnTime] execVM "scripts\unit_killed.sqf";}];