0.3.9.0473

Add inital support of Ryans Zombies and Demons mod
EPOCH_client_bitePlayer changes:
settings now config based via CfgObjectInteractions
This commit is contained in:
vbawol 2016-05-23 15:01:40 -05:00
parent 6dccae1460
commit a503633b36
46 changed files with 189 additions and 103 deletions

View File

@ -1,3 +1,3 @@
5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|SapperB|Cloak)_F" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F" !="#smokesource" !="SmokeLauncherAmmo"
5 "" !="I_UAV_01_F" !="(I|B|O)_UAV_AI" !"_EPOCH" !="B_65x39_Minigun_Caseless_Red_splash" !="B_762x51_Minigun_Tracer_Yellow_splash" !="B_(Swing|Stick)" !"^SmokeShell" !"^G_40mm_" !"^F_40mm_" !"Sub_F_" !"^F_Signal_" !="mini_Grenade" !="GrenadeHand" !="LaserTarget(C|W|E)" !"^Chemlight_" !="(ClaymoreDirectionalMine|DemoCharge|SatchelCharge)_Remote_Ammo" !="SLAMDirectionalMine_Wire_Ammo" !="(CMflare_Chaff|Sapper_Charge|SapperB_Charge|ATMine_Range)_Ammo" !="APERS(TripMine_Wire|BoundingMine_Range|Mine_Range)_Ammo" !="Epoch_(Sapper|SapperB|Cloak)_F" !="EPOCH_RyanZombie_[1-5]" !="GreatWhite_F" !="groundWeaponHolder" !="WeaponHolderSimulated" !="Epoch_(Male|Female)_F" !"Supply[0-9]" !"Steerable_Parachute_F" !="Epoch_Female_CamoRed_F" !="Land_Cages_F" !="(O|I|B)_UAV_01_backpack_F" !="I_(helipilot|helicrew)_F" !="#smokesource" !="SmokeLauncherAmmo"
5 "_EPOCH" !="(SapperHead|Jack|SolarGen)_SIM_EPOCH" !="Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower)_EPOCH" !="(Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH" !="(Tipi|StorageShelf|Safe|LockBox|FirePlace|FirePlaceOn|PlotPole|SolarGen|Jack|Freezer|Tarp|CinderWallHalf|Bobber)_EPOCH" !="I_(Soldier[1-3]|Soldier)_EPOCH" !="(Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Rabbit|Cabinet)_EPOCH" !="(Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH" !="(Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH" !="Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH" !="(Hesco3|Metal)(_Ghost|_SIM|)_EPOCH" !="(Spike|Metal)_TRAP_SIM_EPOCH" !="(WoodFoundation|Foundation)_EPOCH" !="WoodWall[1-4](_SIM|_Ghost|)_EPOCH"
5 SeaGull

View File

@ -1 +1 @@
5 "" !="[0-9]:[0-9]{1,4}" !" GroundWeaponHolder$" !" WeaponHolderSimulated$" !" Epoch_(Sapper|SapperB|Cloak|Female_CamoRed)_F$" !" (Land_MPS|Bobber|Rabbit)_EPOCH$" !" (Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH$" !" (Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Cabinet|Freezer|Tarp)_EPOCH$" !" (SapperHead|Jack|SolarGen)_SIM_EPOCH$" !" (Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH$" !" Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH$" !" (Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH$" !" (Hesco3|Metal|WoodWall[1-4])_(Ghost|SIM)_EPOCH$" !" (Spike|Metal)_TRAP_SIM_EPOCH$" !" (WoodFoundation|Foundation)_Ghost_EPOCH$" !" I_(Soldier[1-3]|Soldier)_EPOCH$" !" I_(helipilot|helicrew)_F$" !" I_UAV_01_F$" !" (I|B|O)_UAV_AI$" !" I_Boat_Armed_01_minigun_F" !" B_Heli_Transport_01_F" !" Land_Cages_F$"
5 "" !="[0-9]:[0-9]{1,4}" !" GroundWeaponHolder$" !" WeaponHolderSimulated$" !" Epoch_(Sapper|SapperB|Cloak|Female_CamoRed)_F$" !" EPOCH_RyanZombie_[1-5]$" !" (Land_MPS|Bobber|Rabbit)_EPOCH$" !" (Sheep|Goat|Snake|Snake2|Hen|Cock|Fin|Alsatian)_random_EPOCH$" !" (Bed|locker|Filing|Chair|ChairRed|wardrobe|cooker|Couch|Table|Pelican|Fridge|Shelf|ToolRack|Shoebox|Bunk|Cabinet|Freezer|Tarp)_EPOCH$" !" (SapperHead|Jack|SolarGen)_SIM_EPOCH$" !" (Tipi|Workbench|StorageShelf|CinderWallHalf|Foundation|Wood(Floor|LargeWall|Stairs|Ramp|Foundation|Ladder|Tower))_Ghost_EPOCH$" !" Wood(Floor|LargeWall|LargeWallCor|LargeWallDoor|LargeWallDoorL|LargeWallDoorway|Stairs|Stairs2|Ramp|Ladder|Tower)_SIM_EPOCH$" !" (Safe|Workbench|LockBox|CinderWall|CinderWallGarage|CinderWallHalf|PlotPole|Tipi|StorageShelf|Fireplace|TankTrap)_SIM_EPOCH$" !" (Hesco3|Metal|WoodWall[1-4])_(Ghost|SIM)_EPOCH$" !" (Spike|Metal)_TRAP_SIM_EPOCH$" !" (WoodFoundation|Foundation)_Ghost_EPOCH$" !" I_(Soldier[1-3]|Soldier)_EPOCH$" !" I_(helipilot|helicrew)_F$" !" I_UAV_01_F$" !" (I|B|O)_UAV_AI$" !" I_Boat_Armed_01_minigun_F" !" B_Heli_Transport_01_F" !" Land_Cages_F$"

View File

@ -14,7 +14,7 @@
7 attachTo !="EP_light attachTo [player];" !="_bomb attachTo [_unit, [0,0,0],\"Pelvis\"];" !="_dogHolder attachTo [_dog, [-0.2,1.2,0.7]];" !="EPOCH_target attachTo[player];" !="_sapperSmoke attachTo [_sapper,[0,0,-0.4]];"" !="_cage attachTo [_cage2,[0,1.3,0]];"
7 enableCollisionWith
7 hideObject !="_dogHolder hideobject true;" !="_dogHolder hideobject false;" !="player hideobject true;" !="_ship hideobject true;\n_ship hideobjectglobal true;"
7 setvelocity !="setVelocityTarget" !="_bolt setPosATL _pos;\n_bolt setVelocity [0, 0, -10];" !="EPOCH_target setvelocitytransformation" !="_currentTarget setVelocity [0,0,-0.01];" !="_head setVelocity [\n(sin _dir * _speed), \n(cos _dir * _speed)" !="_vel = velocity this; _dir = getDir player; this setVelocity[(_vel select 0)+(sin _dir * 2),(_vel select 1)+(cos _dir * 2),(_vel select 2)];" !="_head setVelocity [random 2,random 2,10];" !="_bobber setVelocity [0,-1,-1];" !="_bobber setVelocity [0,-1,-10];" !="_x setvelocity [0,0,0.1];" !="_veh setVelocity [0,0,0];"
7 setvelocity !="setVelocityTarget" !="_bolt setPosATL _pos;\n_bolt setVelocity [0, 0, -10];" !="EPOCH_target setvelocitytransformation" !="_currentTarget setVelocity [0,0,-0.01];" !="_head setVelocity [\n(sin _dir * _speed), \n(cos _dir * _speed)" !="_vel = velocity this; _dir = getDir player; this setVelocity[(_vel select 0)+(sin _dir * 2),(_vel select 1)+(cos _dir * 2),(_vel select 2)];" !="_head setVelocity [random 2,random 2,10];" !="_bobber setVelocity [0,-1,-1];" !="_bobber setVelocity [0,-1,-10];" !="_x setvelocity [0,0,0.1];" !="_veh setVelocity [0,0,0];" !="_this select 0 setvelocity (_this select 1)"
7 assignAs !="assignAsCargo" !="_unit assignAsGunner _axeCopter;" !="_driver assignAsDriver _axeCopter;" !="axeVIP assignAsDriver vehicle axeVIP;"
7 assignAsCargo !="_x assignAsCargo axeGeneralsBoat;" !="axeVIP assignAsCargo vehicle player;" !="axeVIP assignAsCargo vehicle axeVIP;"
7 allowDamage !="_unit allowDamage false;" !="_unit allowDamage true;" !="player allowDamage true;" !="vehicle player allowDamage true;" !="player allowDamage false;" !="_target allowDamage true;" !="_cargo allowDamage false;"

View File

@ -24,7 +24,8 @@ if(random 100 < 6)then{
if(_doVariable)then{_unitClass call EPOCH_unitSpawnIncrease;};//Assumes Antagonist is required.
_index = EPOCH_spawnIndex find _unitClass;
if (!_doVariable && (count(_trgt nearEntities[_unitClass, 800]) >= (EPOCH_playerSpawnArray select _index))) exitWith{};
_spawnLimit = EPOCH_playerSpawnArray select _index;
if (!_doVariable && (count(_trgt nearEntities[_unitClass, 800]) >= _spawnLimit)) exitWith{};
_nonJammer = ["CfgEpochClient", "nonJammerAI", ["B_Heli_Transport_01_F","PHANTOM","Epoch_Cloak_F"]] call EPOCH_fnc_returnConfigEntryV2;
_nonTrader = ["CfgEpochClient", "nonTraderAI", ["B_Heli_Transport_01_F","PHANTOM","Epoch_Cloak_F","GreatWhite_F"]] call EPOCH_fnc_returnConfigEntryV2;
@ -113,13 +114,31 @@ switch _unitClass do {
case "B_Heli_Transport_01_F": {
[] execFSM "\x\addons\a3_epoch_code\System\Event_Air_Drop.fsm";
};
case "EPOCH_RyanZombie_1": {
_hordeTypes = ["EPOCH_RyanZombie_1","EPOCH_RyanZombie_2","EPOCH_RyanZombie_3","EPOCH_RyanZombie_4","EPOCH_RyanZombie_5"];
_unitClass = selectRandom _hordeTypes;
diag_log format["DEBUG: spawned %1",_unitClass];
_unit = createAgent[_unitClass, _targetPos, [], 256, "FORM"];
_unit call _disableAI;
// climb out of ground
_unit switchMove "AmovPercMstpSnonWnonDnon_SaluteOut";
_unit setmimic "dead";
// load temp brains
[_unit,true] execFSM "\x\addons\a3_epoch_code\System\Zombie_Brain.fsm";
// spawn more up to limit
_id = "EPOCH_RyanZombie_1" spawn EPOCH_unitSpawn;
};
};
if(_doVariable && (!isNull _unit) && (!isNull _trgt))then{
_trgt setVariable ["EPOCH_antagObj", _unit, true];
if!(isNull _bomb)then{
_trgt setVariable ["EPOCH_antagBomb", _bomb, true];
};
_trgt setVariable ["EPOCH_antagObj", _unit, true];
if!(isNull _bomb)then{
_trgt setVariable ["EPOCH_antagBomb", _bomb, true];
};
};
if !(isNull _unit) then {
// send to server

View File

@ -13,15 +13,15 @@
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/environment/EPOCH_client_bitePlayer.sqf
Example:
[cursorTarget,_index] call EPOCH_upgradeBUILD;
_dog call EPOCH_client_bitePlayer;
Parameter(s):
_this: OBJECT - Player
_this: OBJECT - attacker
Returns:
NOTHING
*/
private ["_distance","_toxicChance","_bloodpChance","_fatigueChance","_bleedAmount","_bloodpAmount","_soundEffect","_canSee","_ppEffect","_bleedChance","_soundEffectIndex","_soundEffectGlobal"];
private ["_distance","_toxicChance","_bloodpChance","_fatigueChance","_bleedAmount","_bloodpAmount","_soundEffect","_canSee","_ppEffect","_bleedChance","_soundEffectIndex","_soundEffectGlobal","_animationEffect","_animationEffectGlobal","_cfgObjectInteraction"];
if !(isNull _this && alive _this) then {
_distance = 5;
@ -29,81 +29,48 @@ if !(isNull _this && alive _this) then {
_bleedChance = 1;
_bloodpChance = 0;
_fatigueChance = 0.1;
_bleedAmount = 30;
_bloodpAmount = 2;
_soundEffect = -1;
_soundEffectGlobal = false;
_soundEffect = "";
_soundEffectGlobal = -1;
_animationEffect = "";
_animationEffectGlobal = -1;
_canSee = false;
_ppEffect = 0;
switch (typeOf _this) do {
case "Snake_random_EPOCH": {
_distance = 3;
_toxicChance = 0.2;
_bloodpChance = 1;
_fatigueChance = 0.5;
_bleedAmount = 30;
_bloodpAmount = 3;
_soundEffect = "snake_bite0";
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0;
};
case "Snake2_random_EPOCH": {
_distance = 3;
_toxicChance = 0.1;
_bloodpChance = 1;
_fatigueChance = 0.5;
_bleedAmount = 30;
_bloodpAmount = 3;
_soundEffect = "snake_bite0";
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0;
};
case "GreatWhite_F": {
_distance = 6;
_toxicChance = 0;
_bleedChance = 1;
_bloodpChance = 1;
_fatigueChance = 1;
_bleedAmount = 100;
_bloodpAmount = 3;
_canSee = true;
_ppEffect = 0;
};
case "SmokeShellCustom": {
_distance = 6;
_toxicChance = 1;
_bleedChance = 0;
_bloodpChance = 1;
_fatigueChance = 1;
_bleedAmount = 0;
_bloodpAmount = 3;
_canSee = true;
_ppEffect = 0;
};
case "Epoch_Cloak_F": {
_distance = 30;
_toxicChance = 0;
_bloodpChance = 0.9;
_fatigueChance = 0.5;
_bleedAmount = 66;
_bloodpAmount = 3;
_soundEffect = "cultist_nearby";
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 1;
};
_cfgObjectInteraction = (('CfgObjectInteractions' call EPOCH_returnConfig) >> (typeOf _this));
if (isClass _cfgObjectInteraction) then {
_distance = getNumber (_cfgObjectInteraction >> "distance");
_toxicChance = getNumber (_cfgObjectInteraction >> "toxicChance");
_bloodpChance = getNumber (_cfgObjectInteraction >> "bloodpChance");
_fatigueChance = getNumber (_cfgObjectInteraction >> "fatigueChance");
_bleedAmount = getNumber (_cfgObjectInteraction >> "bleedAmount");
_bloodpAmount = getNumber (_cfgObjectInteraction >> "bloodpAmount");
_soundEffect = selectRandom (getArray (_cfgObjectInteraction >> "soundEffect"));
_soundEffectGlobal = getNumber (_cfgObjectInteraction >> "soundEffectGlobal");
_animationEffect = selectRandom (getArray (_cfgObjectInteraction >> "animationEffect"));
_animationEffectGlobal = getNumber (_cfgObjectInteraction >> "animationEffectGlobal");
_canSee = call compile (getText (_cfgObjectInteraction >> "canSee"));
_ppEffect = getNumber (_cfgObjectInteraction >> "ppEffect");
};
if ((_this distance player) < _distance && _canSee) then {
_soundEffectIndex = EPOCH_sounds find _soundEffect;
if (_soundEffectIndex != -1) then {
_this say3D _soundEffect;
if (_soundEffectGlobal) then {
if (_soundEffectGlobal != -1) then {
[player, _this, _soundEffectIndex, Epoch_personalToken] remoteExec ["EPOCH_server_handle_say3D",2];
};
};
if (_animationEffect != "") then {
_this switchMove _animationEffect;
if (_animationEffectGlobal != -1) then {
[[_this,player], _animationEffectGlobal, Epoch_personalToken] remoteExec ["EPOCH_server_handle_switchMove",2];
};
};
if (random 1 < _toxicChance) then {
EPOCH_playerToxicity = (EPOCH_playerToxicity + (random(100 - EPOCH_playerImmunity))) min 100;
};

View File

@ -108,10 +108,6 @@ switch true do {
if (((player weaponAccessories _muzzle) select 0) != "") then{
_nuisanceLevel = _nuisanceLevel / 2;
};
// force spawn increase once player has become a Nuisance
if (EPOCH_playerNuisance >= 50 && {random EPOCH_droneRndChance < EPOCH_playerNuisance}) then{
(selectRandom ["I_UAV_01_F","Epoch_Sapper_F"]) call EPOCH_unitSpawnIncrease;
};
// Nuisance System 0.1
(EPOCH_customVarLimits select (EPOCH_customVars find "Nuisance")) params [["_playerLimitMax",100],["_playerLimitMin",0]];
EPOCH_playerNuisance = ((EPOCH_playerNuisance + _nuisanceLevel) min _playerLimitMax) max _playerLimitMin;

View File

@ -61,7 +61,7 @@ if (EPOCH_playerEnergy == 0) then {
};
};
_attackers = player nearEntities[["Snake_random_EPOCH", "GreatWhite_F", "Epoch_Cloak_F"], 30];
_attackers = player nearEntities[["Snake_random_EPOCH", "GreatWhite_F", "Epoch_Cloak_F","EPOCH_RyanZombie_1"], 30];
if !(_attackers isEqualTo[]) then {
(_attackers select 0) call EPOCH_client_bitePlayer;
_panic = true;

View File

@ -1,13 +1,15 @@
if ((EPOCH_playerSpawnArray select(EPOCH_spawnIndex find "Epoch_Sapper_F")) <= 0) then{
_sapperChance = 1 + (EPOCH_playerSoiled / 2);
if !(EPOCH_nearestLocations isEqualTo[]) then{
_sapperChance = _sapperChance + 2;
};
// 1% - 55% if soiled (+ 2% if in city) chance to spawn sapper every 10 minutes
if (random _sapperRndChance < _sapperChance) then{
"Epoch_Sapper_F" call EPOCH_unitSpawnIncrease;
_spawnChance = ((EPOCH_playerNuisance + EPOCH_playerSoiled)/2) max 1;
if (random EPOCH_droneRndChance < _spawnChance) then {
"I_UAV_01_F" call EPOCH_unitSpawnIncrease;
};
if (EPOCH_mod_Ryanzombies_Enabled) then {
if (random EPOCH_zombieRndChance < _spawnChance) then {
"EPOCH_RyanZombie_1" call EPOCH_unitSpawnIncrease;
};
};
if (random EPOCH_sapperRndChance < _spawnChance) then {
"Epoch_Sapper_F" call EPOCH_unitSpawnIncrease;
};
_spawnUnits = [];
{

View File

@ -5,7 +5,8 @@ _panic = false;
_prevEnergy = EPOCH_playerEnergy;
// init config data
_sapperRndChance = ["CfgEpochClient", "sapperRngChance", 100] call EPOCH_fnc_returnConfigEntryV2;
EPOCH_sapperRndChance = ["CfgEpochClient", "sapperRngChance", 100] call EPOCH_fnc_returnConfigEntryV2;
EPOCH_zombieRndChance = ["CfgEpochClient", "zombieRndChance", 100] call EPOCH_fnc_returnConfigEntryV2;
EPOCH_droneRndChance = ["CfgEpochClient", "droneRngChance", 100] call EPOCH_fnc_returnConfigEntryV2;
_baseHTLoss = ["CfgEpochClient", "baseHTLoss", 8] call EPOCH_fnc_returnConfigEntryV2;
_energyCostNV = ["CfgEpochClient", "energyCostNV", 3] call EPOCH_fnc_returnConfigEntryV2;
@ -17,6 +18,7 @@ EPOCH_playerIsSwimming = false;
// default data if mismatch
if (count EPOCH_playerSpawnArray != count EPOCH_spawnIndex) then{
EPOCH_playerSpawnArray = [];
{ EPOCH_playerSpawnArray pushBack 0 } forEach EPOCH_spawnIndex;
};

View File

@ -13,6 +13,13 @@
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/init/both_init.sqf
*/
private ["_customVarsInit","_antagonistSpawnDefaults","_spawnLimits","_say3dsounds"];
// detect if Ryan's Zombies and Deamons mod is present
EPOCH_mod_Ryanzombies_Enabled = (parseNumber (getText (configFile >> "CfgPatches" >> "Ryanzombies" >> "version")) >= 4.2);
if (EPOCH_mod_Ryanzombies_Enabled) then {
diag_log "Epoch: Ryanzombies detected";
};
// Init Custom vars
EPOCH_customVars = [];
EPOCH_defaultVars = [];
@ -34,7 +41,8 @@ EPOCH_customVarsDefaults = [
["SpawnArray",[],[]],
["Karma",0,[50000,-50000]],
["Alcohol",0,[100,0]],
["Radiation",0,[100,0]]
["Radiation",0,[100,0]],
["Nuisance",0,[100,0]]
];
_customVarsInit = ["CfgEpochClient", "customVarsDefaults", EPOCH_customVarsDefaults] call EPOCH_fnc_returnConfigEntryV2;
{
@ -54,12 +62,21 @@ _antagonistSpawnDefaults = [
["Epoch_SapperB_F",1],
["I_UAV_01_F",2],
["PHANTOM",1],
["B_Heli_Transport_01_F",1]
["B_Heli_Transport_01_F",1],
["EPOCH_RyanZombie_1",10]
];
_spawnLimits = ["CfgEpochClient", "antagonistSpawnIndex", _antagonistSpawnDefaults] call EPOCH_fnc_returnConfigEntryV2;
{
EPOCH_spawnIndex pushBack (_x select 0);
EPOCH_spawnLimits pushBack (_x select 1);
_x params ["_spawnName","_spawnLimit"];
if (_spawnName isEqualTo "EPOCH_RyanZombie_1") then {
if (EPOCH_mod_Ryanzombies_Enabled) then {
EPOCH_spawnIndex pushBack _spawnName;
EPOCH_spawnLimits pushBack _spawnLimit;
};
} else {
EPOCH_spawnIndex pushBack _spawnName;
EPOCH_spawnLimits pushBack _spawnLimit;
};
} forEach _spawnLimits;
//GroupSize (number) // Price (String)

View File

@ -65,6 +65,8 @@ EPOCH_AirDropChance = getNumber(getMissionConfig "CfgEpochAirDrop" >> "AirDropCh
if(EPOCH_AirDropChance < 0)then{EPOCH_AirDropChance = 101;EPOCH_AirDropCheck = 99999;};
EPOCH_droneRndChance = 100;
EPOCH_sapperRndChance = 100;
EPOCH_zombieRndChance = 100;
// Custom Keys
EPOCH_keysActionPressed = false; //prevents EH spam

View File

@ -31,7 +31,8 @@ class CfgEpochClient
{"Epoch_SapperB_F",1},
{"I_UAV_01_F",2},
{"PHANTOM",1},
{"B_Heli_Transport_01_F",1}
{"B_Heli_Transport_01_F",1},
{"EPOCH_RyanZombie_1",10}
};
customVarsDefaults[] = {
// EPOCH_player + varName, default value, {max,min}

View File

@ -16,4 +16,78 @@ class CfgObjectInteractions {
class C_man_1 : Default {
interactMode = 2;
};
class Snake_random_EPOCH : Default {
distance = 3;
toxicChance = 0.2;
bloodpChance = 1;
fatigueChance = 0.5;
bleedAmount = 30;
bloodpAmount = 3;
soundEffect[] = {"snake_bite0"};
canSee = "!(lineIntersects[eyePos _this, aimPos player, _this, player])";
ppEffect = 0;
};
class Snake2_random_EPOCH : Default {
distance = 3;
toxicChance = 0.1;
bloodpChance = 1;
fatigueChance = 0.5;
bleedAmount = 30;
bloodpAmount = 3;
soundEffect[] = {"snake_bite0"};
canSee = "!(lineIntersects[eyePos _this, aimPos player, _this, player])";
ppEffect = 0;
};
class GreatWhite_F : Default {
distance = 6;
toxicChance = 0;
bleedChance = 1;
bloodpChance = 1;
fatigueChance = 1;
bleedAmount = 100;
bloodpAmount = 3;
canSee = "true";
ppEffect = 0;
};
class SmokeShellCustom : Default {
distance = 6;
toxicChance = 1;
bleedChance = 0;
bloodpChance = 1;
fatigueChance = 1;
bleedAmount = 0;
bloodpAmount = 3;
canSee = "true";
ppEffect = 0;
};
class Epoch_Cloak_F : Default {
distance = 30;
toxicChance = 0;
bloodpChance = 0.9;
fatigueChance = 0.5;
bleedAmount = 66;
bloodpAmount = 3;
soundEffect[] = {"cultist_nearby"};
canSee = "!(lineIntersects[eyePos _this, aimPos player, _this, player])";
ppEffect = 1;
};
class EPOCH_RyanZombie_1 : Default {
distance = 3;
toxicChance = 0.2;
bloodpChance = 1;
fatigueChance = 0.5;
bleedAmount = 30;
bloodpAmount = 3;
soundEffect[] = {"ryanzombiesattack1", "ryanzombiesattack2", "ryanzombiesattack3", "ryanzombiesattack4", "ryanzombiesattack5"};
soundEffectGlobal = 1;
animationEffect[] = {"AwopPercMstpSgthWnonDnon_throw"};
animationEffectGlobal = 3;
canSee = "!(lineIntersects[eyePos _this, aimPos player, _this, player])";
ppEffect = 0;
};
class EPOCH_RyanZombie_2 : EPOCH_RyanZombie_1 {};
class EPOCH_RyanZombie_3 : EPOCH_RyanZombie_1 {};
class EPOCH_RyanZombie_4 : EPOCH_RyanZombie_1 {};
class EPOCH_RyanZombie_5 : EPOCH_RyanZombie_1 {};
};

View File

@ -1 +1 @@
build=465;
build=473;

View File

@ -1 +1 @@
build=465;
build=473;

View File

@ -14,11 +14,15 @@
*/
private["_range", "_move", "_nearBy"];
params ["_target","_moveCase",["_token","",[""]]];
if !([_target, _token] call EPOCH_server_getPToken) exitWith{};
_player = _target;
if (_target isEqualType []) then {
_target params ["_target","_player"];
};
if !([_player, _token] call EPOCH_server_getPToken) exitWith{};
_range = 0;
_move = "";
// TODO configize
// TODO configize
switch (_moveCase) do {
case 1: {
_range = 1000;
@ -28,6 +32,10 @@ switch (_moveCase) do {
_range = 1000;
_move = "epoch_unarmed_jump";
};
case 3: {
_range = 400;
_move = "AwopPercMstpSgthWnonDnon_throw";
}
};
if (_range > 0 && _move != "") then {

View File

@ -37,5 +37,8 @@ if (!isNull _target) then {
case "PHANTOM": {
"PHANTOM" remoteExec ['EPOCH_unitSpawnIncrease',_target];
};
case "EPOCH_RyanZombie_1": {
"EPOCH_RyanZombie_1" remoteExec ['EPOCH_unitSpawnIncrease',_target];
};
};
};

View File

@ -54,17 +54,12 @@ if (isNil "_instanceID") exitWith{
EPOCH_modCUPWeaponsEnabled = (getNumber (configFile >> "CfgPatches" >> "CUP_WheeledVehicles_Core" >> "requiredVersion") > 0);
EPOCH_modCUPVehiclesEnabled = (getNumber (configFile >> "CfgPatches" >> "CUP_Weapons_WeaponsCore" >> "requiredVersion") > 0);
EPOCH_mod_Ryanzombies_Enabled = (parseNumber (getText (configFile >> "CfgPatches" >> "Ryanzombies" >> "version")) >= 4.2);
if (EPOCH_modCUPWeaponsEnabled) then {
diag_log "Epoch: CUP Weapons detected";
};
if (EPOCH_modCUPVehiclesEnabled) then {
diag_log "Epoch: CUP Vehicles detected";
};
if (EPOCH_mod_Ryanzombies_Enabled) then {
diag_log "Epoch: Ryanzombies detected";
};
diag_log "Epoch: Init Variables";
call compile preprocessFileLineNumbers "\epoch_server\init\server_variables.sqf";

View File

@ -1 +1 @@
build=465;
build=473;

View File

@ -1 +1 @@
build=465;
build=473;

View File

@ -1 +1 @@
465
473