mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
0.3.7.011
This commit is contained in:
parent
b8dac3481e
commit
f7f5d25af4
@ -14,9 +14,13 @@
|
||||
[ADDED-WIP] Tin Bars (ItemTinBar,ItemTinBar10oz).
|
||||
[ADDED-WIP] Plywood sheets in small and large stacks (ItemPlywood,ItemPlywoodPack).
|
||||
[Changed] Change all publicVariableServer calls to use remoteExec calls for better performance.
|
||||
[Fixed] Incorrectly being able to sell/buy items from a dead trader.
|
||||
[Fixed] Snakes now require line of sight to bite player.
|
||||
[Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly.
|
||||
[Fixed] Boss Sapper incorrectly cleaned up before detonation.
|
||||
**Server**
|
||||
[Added] Setting to control random magazine ammo counts in loot spawner. CfgEpochClient -> randomizeMagazineAmmoCount (default: true)
|
||||
[Changed] Earthquakes with mineral veins spawn chances increased with less players.
|
||||
[Changed] Driver or passengers of a driverless can now control vehicle locks. Also only the owner can control locks from outside of a occupied vehicle.
|
||||
[Changed] Commented out Halloween masks from loot tables.
|
||||
[Updated] New Battleye remoteExec.txt for added remoteExec calls.
|
||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, sapperAlt">*/
|
||||
/*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, sapperAlt">*/
|
||||
/*%FSM<HEAD>*/
|
||||
/*
|
||||
item0[] = {"sapper",0,250,-225.000000,-325.000000,-125.000000,-275.000000,0.000000,"sapper"};
|
||||
@ -35,12 +35,12 @@ item30[] = {"stalking",4,218,-50.000000,50.000000,50.000000,100.000000,5.000000,
|
||||
item31[] = {"Wait_random",4,218,-225.000000,-200.000000,-125.000000,-150.000000,10.000000,"Wait random"};
|
||||
item32[] = {"groan",4,218,200.000000,375.000000,300.000000,425.000000,5.000000,"groan"};
|
||||
item33[] = {"detonate",4,218,125.000000,-350.000000,225.000000,-300.000000,70.000000,"detonate"};
|
||||
item34[] = {"end",1,250,975.000000,0.000000,1075.000000,50.000000,0.000000,"end"};
|
||||
item35[] = {"Wait_to_delete",4,218,975.000000,150.000000,1075.000000,200.000000,10.000000,"Wait to delete"};
|
||||
item34[] = {"end",1,250,1050.000000,-25.000000,1150.000000,25.000000,0.000000,"end"};
|
||||
item35[] = {"Wait_to_delete",4,218,1050.000000,125.000000,1150.000000,175.000000,10.000000,"Wait to delete"};
|
||||
item36[] = {"handle_dispose",2,250,525.000000,125.000000,625.000000,175.000000,0.000000,"handle dispose"};
|
||||
item37[] = {"Wait_1_5_sec",4,218,650.000000,300.000000,750.000000,350.000000,0.000000,"Wait" \n "1.5 sec"};
|
||||
item38[] = {"do_boom",2,4346,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"};
|
||||
item39[] = {"_",8,218,800.000000,300.000000,850.000000,325.000000,0.000000,""};
|
||||
item37[] = {"Wait_1_5_sec",4,218,525.000000,350.000000,625.000000,400.000000,0.000000,"Wait" \n "1.5 sec"};
|
||||
item38[] = {"do_boom",2,250,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"};
|
||||
item39[] = {"_",8,218,800.000000,225.000000,875.000000,275.000000,0.000000,""};
|
||||
item40[] = {"do_groan",2,250,225.000000,500.000000,325.000000,550.000000,0.000000,"do groan"};
|
||||
item41[] = {"do_stalk",2,250,-200.000000,50.000000,-100.000000,100.000000,0.000000,"do stalk"};
|
||||
item42[] = {"do_loiter_big",2,250,350.000000,500.000000,450.000000,550.000000,0.000000,"do loiter big"};
|
||||
@ -63,7 +63,9 @@ item58[] = {"feeling",4,218,775.000000,-50.000000,875.000000,0.000000,50.000000,
|
||||
item59[] = {"charging",4,218,-50.000000,225.000000,50.000000,275.000000,5.000000,"charging"};
|
||||
item60[] = {"stalk",4,218,375.000000,-275.000000,475.000000,-225.000000,20.000000,"stalk"};
|
||||
item61[] = {"not_shot",4,218,900.000000,125.000000,1000.000000,175.000000,10.000000,"not shot"};
|
||||
item62[] = {"finished_boom",2,250,900.000000,225.000000,1000.000000,275.000000,0.000000,"finished boom"};
|
||||
item62[] = {"finished_boom",2,250,900.000000,300.000000,1000.000000,350.000000,0.000000,"finished boom"};
|
||||
item63[] = {"Wait_for_Explosi",4,218,650.000000,350.000000,750.000000,400.000000,0.000000,"Wait for Explosion"};
|
||||
item64[] = {"Remove_corpse",2,4346,775.000000,300.000000,875.000000,350.000000,0.000000,"Remove corpse"};
|
||||
link0[] = {0,31};
|
||||
link1[] = {1,2};
|
||||
link2[] = {2,3};
|
||||
@ -126,7 +128,7 @@ link58[] = {35,34};
|
||||
link59[] = {36,57};
|
||||
link60[] = {36,61};
|
||||
link61[] = {37,38};
|
||||
link62[] = {38,39};
|
||||
link62[] = {38,63};
|
||||
link63[] = {39,62};
|
||||
link64[] = {40,6};
|
||||
link65[] = {41,30};
|
||||
@ -154,8 +156,10 @@ link86[] = {59,4};
|
||||
link87[] = {60,2};
|
||||
link88[] = {61,62};
|
||||
link89[] = {62,35};
|
||||
globals[] = {25.000000,1,0,0,16777215,640,480,1,248,6316128,1,-343.543304,1069.998291,679.913574,-353.385406,1000,731,1};
|
||||
window[] = {2,-1,-1,-1,-1,542,56,1081,17,3,1018};
|
||||
link90[] = {63,64};
|
||||
link91[] = {64,39};
|
||||
globals[] = {25.000000,1,0,0,16777215,640,480,1,253,6316128,1,-209.204178,1204.337524,679.913574,-353.385406,1000,880,1};
|
||||
window[] = {2,-1,-1,-1,-1,655,130,1155,130,3,1018};
|
||||
*//*%FSM</HEAD>*/
|
||||
class FSM
|
||||
{
|
||||
@ -1040,25 +1044,19 @@ class FSM
|
||||
class do_boom
|
||||
{
|
||||
name = "do_boom";
|
||||
init = /*%FSM<STATEINIT""">*/"" \n
|
||||
"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
|
||||
"" \n
|
||||
"_sBomb = objNull;" \n
|
||||
"" \n
|
||||
"deleteVehicle _sapper;" \n
|
||||
"" \n
|
||||
init = /*%FSM<STATEINIT""">*/"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
|
||||
"_doneBoom = true;" \n
|
||||
""/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
/*%FSM<LINK "Wait_for_Explosi">*/
|
||||
class Wait_for_Explosi
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="finished_boom";
|
||||
to="Remove_corpse";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/"isNull(_sBomb)"/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
@ -1409,11 +1407,32 @@ class FSM
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
/*%FSM<STATE "Remove_corpse">*/
|
||||
class Remove_corpse
|
||||
{
|
||||
name = "Remove_corpse";
|
||||
init = /*%FSM<STATEINIT""">*/"deleteVehicle _sapper;"/*%FSM</STATEINIT""">*/;
|
||||
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
|
||||
class Links
|
||||
{
|
||||
/*%FSM<LINK "_">*/
|
||||
class _
|
||||
{
|
||||
priority = 0.000000;
|
||||
to="finished_boom";
|
||||
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
|
||||
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
|
||||
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
|
||||
};
|
||||
/*%FSM</LINK>*/
|
||||
};
|
||||
};
|
||||
/*%FSM</STATE>*/
|
||||
};
|
||||
initState="sapper";
|
||||
finalStates[] =
|
||||
{
|
||||
"end"
|
||||
"end",
|
||||
};
|
||||
};
|
||||
/*%FSM</COMPILE>*/
|
||||
/*%FSM</COMPILE>*/
|
@ -101,21 +101,20 @@ _unifiedInteract = {
|
||||
|
||||
switch _interactOption do {
|
||||
case 0: {
|
||||
_magCount = getNumber (_config >> "count");
|
||||
_magazineSizeMax = getNumber (_config >> "count");
|
||||
// allow repack for all magazines with greater than 1 bullet
|
||||
if (_magCount > 1) then {
|
||||
if (_magazineSizeMax > 1) then {
|
||||
|
||||
_ammoTotal = 0;
|
||||
_magazineSize = 0;
|
||||
_magazinesAmmoFull = magazinesAmmoFull player;
|
||||
{
|
||||
if (_item isEqualTo (_x select 0)) then {
|
||||
_ammoTotal = _ammoTotal + (_x select 1);
|
||||
if (!(_x select 2)) then {
|
||||
_magazineSize = _magazineSize + (_x select 1);
|
||||
};
|
||||
};
|
||||
} forEach _magazinesAmmoFull;
|
||||
|
||||
_magazineSize = _ammoTotal;
|
||||
_magazineSizeMax = _magCount;
|
||||
|
||||
// remove all
|
||||
player removeMagazines _item;
|
||||
|
||||
@ -123,12 +122,14 @@ switch _interactOption do {
|
||||
for "_i" from 1 to floor (_magazineSize / _magazineSizeMax) do
|
||||
{
|
||||
player addMagazine [_item, _magazineSizeMax];
|
||||
//diag_log format ["DEBUG: added full mag %1", _magazineSizeMax];
|
||||
};
|
||||
// Add last non full magazine
|
||||
if ((_magazineSize % _magazineSizeMax) > 0) then {
|
||||
player addMagazine [_item, floor (_magazineSize % _magazineSizeMax)];
|
||||
//diag_log format ["DEBUG: added remainder %1", floor (_magazineSize % _magazineSizeMax)];
|
||||
};
|
||||
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Ammo Repacked</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
|
||||
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Ammo Repacked</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
|
||||
};
|
||||
};
|
||||
case 1: _unifiedInteract; // Eat 1
|
||||
|
@ -53,7 +53,7 @@ if (!isNull EPOCH_currentTarget && vehicle player == player) then {
|
||||
case 0: {
|
||||
_stability = 100 - round(damage _currentTarget * 100);
|
||||
_icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa";
|
||||
_text = "Press (Inventory)";
|
||||
_text = "";
|
||||
|
||||
if (_stability < 50) then {
|
||||
_color = [1, 0.5, 0, 0.7];
|
||||
|
@ -46,7 +46,7 @@ if !(isNull _this && alive _this) then {
|
||||
_bleedAmount = 30;
|
||||
_bloodpAmount = 3;
|
||||
_soundEffect = "snake_bite0";
|
||||
_canSee = true;
|
||||
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
|
||||
_ppEffect = 0;
|
||||
};
|
||||
case "Snake2_random_EPOCH": {
|
||||
@ -57,7 +57,7 @@ if !(isNull _this && alive _this) then {
|
||||
_bleedAmount = 30;
|
||||
_bloodpAmount = 3;
|
||||
_soundEffect = "snake_bite0";
|
||||
_canSee = true;
|
||||
_canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
|
||||
_ppEffect = 0;
|
||||
};
|
||||
case "GreatWhite_F": {
|
||||
|
@ -21,32 +21,6 @@ if (isNull _target) then {
|
||||
};
|
||||
|
||||
if (!isNull _target) then {
|
||||
|
||||
if (alive _target) then {
|
||||
/*
|
||||
if ((_target isKindOf "LandVehicle") || (_target isKindOf "Air") || (_target isKindOf "Ship") || (_target isKindOf "Tank")) then {
|
||||
_dialog = "InteractVehicle";
|
||||
};
|
||||
|
||||
if (_ctrl) then {
|
||||
if (_target isKindOf "Constructions_static_F" || _target isKindOf "Constructions_foundation_F") then {
|
||||
_dialog = "InteractBaseBuilding";
|
||||
};
|
||||
};
|
||||
*/
|
||||
/*
|
||||
if (_target isKindOf "Man") then {
|
||||
if (_target != player) then {
|
||||
if (!isPlayer _target) then {
|
||||
if ((_target getVariable["AI_SLOT", -1]) != -1) then {
|
||||
_dialog = "InteractNPC";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
if (_forceGear) then {
|
||||
player action ["Gear", _target];
|
||||
_handled = true;
|
||||
@ -57,4 +31,4 @@ if (!isNull _target) then {
|
||||
};
|
||||
};
|
||||
};
|
||||
_handled
|
||||
_handled
|
||||
|
@ -1,3 +1,5 @@
|
||||
private["_ok"];
|
||||
if (isNull _this) exitWith {};
|
||||
if !(alive _this) exitWith {};
|
||||
_ok = createdialog "MissionSelect";
|
||||
if (!_ok) exitWith {};
|
||||
if (!_ok) exitWith {};
|
||||
|
@ -1,14 +1,16 @@
|
||||
private ["_index","_type","_config","_name","_picture","_qty","_items","_qtys","_ok","_vehicles","_aiItems","_target","_slot"];
|
||||
_target = cursorTarget;
|
||||
_slot = _target getVariable ["AI_SLOT",-1];
|
||||
if (_slot != -1) then {
|
||||
EPOCH_lastNPCtradeTarget = _target;
|
||||
closeDialog 0;
|
||||
_ok = createdialog "TradeNPCMenu";
|
||||
if (!_ok) exitWith {};
|
||||
9992 cutRsc["EpochGameUI2", "PLAIN", 2, false];
|
||||
((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto];
|
||||
{lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"];
|
||||
lbSetCurSel[42100, 0];
|
||||
lbSetCurSel[42101, 0];
|
||||
};
|
||||
if (alive _target) then {
|
||||
_slot = _target getVariable ["AI_SLOT",-1];
|
||||
if (_slot != -1) then {
|
||||
EPOCH_lastNPCtradeTarget = _target;
|
||||
closeDialog 0;
|
||||
_ok = createdialog "TradeNPCMenu";
|
||||
if (!_ok) exitWith {};
|
||||
9992 cutRsc["EpochGameUI2", "PLAIN", 2, false];
|
||||
((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto];
|
||||
{lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"];
|
||||
lbSetCurSel[42100, 0];
|
||||
lbSetCurSel[42101, 0];
|
||||
};
|
||||
};
|
||||
|
@ -25,9 +25,9 @@ private["_item", "_currQty", "_tradeType", "_itemWorth", "_aiItems", "_itemClass
|
||||
|
||||
if (!isNil "EPOCH_TRADE_COMPLETE") exitWith {};
|
||||
if (!isNil "EPOCH_TRADE_STARTED") exitWith{};
|
||||
if (!isNull _this) exitWith{};
|
||||
|
||||
if (!isNull _this) then {
|
||||
|
||||
if (alive _this) then {
|
||||
|
||||
_config = 'CfgPricing' call EPOCH_returnConfig;
|
||||
|
||||
|
@ -24,8 +24,8 @@ class CfgActionMenu
|
||||
dyna_distance = "(player distance dyna_cursorTarget) < 5";
|
||||
|
||||
dyna_buildMode = "([10] call EPOCH_fnc_cursorTarget) call EPOCH_checkBuild;";
|
||||
dyna_isVehicle = "if !(isNull dyna_cursorTarget && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'LandVehicle') || (dyna_cursorTarget isKindOf 'Air') || (dyna_cursorTarget isKindOf 'Ship') || (dyna_cursorTarget isKindOf 'Tank'))} else {false}";
|
||||
dyna_isTrader = "if !(isNull dyna_cursorTarget && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (!isPlayer dyna_cursorTarget) && ((dyna_cursorTarget getVariable['AI_SLOT', -1]) != -1))} else {false}";
|
||||
dyna_isVehicle = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'LandVehicle') || (dyna_cursorTarget isKindOf 'Air') || (dyna_cursorTarget isKindOf 'Ship') || (dyna_cursorTarget isKindOf 'Tank'))} else {false}";
|
||||
dyna_isTrader = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (!isPlayer dyna_cursorTarget) && ((dyna_cursorTarget getVariable['AI_SLOT', -1]) != -1))} else {false}";
|
||||
dyna_locked = "locked dyna_cursorTarget in [2,3]";
|
||||
dyna_lockedInVehicle = "locked vehicle player in [2,3]";
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -513,6 +513,13 @@ class Epoch_Sapper_F: Epoch_Sapper_base_F
|
||||
};
|
||||
};
|
||||
};
|
||||
class Epoch_SapperG_F : Epoch_Sapper_F {
|
||||
scope = 2;
|
||||
displayName = "Sapper (Toxic)";
|
||||
moves = "CfgMovesMaleSdr3";
|
||||
hiddenSelections[] = {"camo","remains"};
|
||||
hiddenSelectionsTextures[] = {"x\addons\a3_epoch_assets\textures\sapper\sapper_green_eco.paa",""};
|
||||
};
|
||||
class Epoch_SapperB_F : Epoch_Sapper_base_F
|
||||
{
|
||||
scope = 2;
|
||||
|
@ -115,10 +115,10 @@ class CfgAnimationSourceSounds
|
||||
|
||||
class CfgCommands
|
||||
{
|
||||
// allowedHTMLLoadURIs[] += // think this adds to an existing array
|
||||
allowedHTMLLoadURIs[] =
|
||||
// allowedHTMLLoadURIs[] += // think this adds to an existing array?
|
||||
allowedHTMLLoadURIs[] +=
|
||||
{
|
||||
"https://raw.githubusercontent.com/epochmodteam/epoch/test/changelog.html" //there are some issues with capitalization used in github links
|
||||
"http://epochmod.com*"
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -6,19 +6,23 @@
|
||||
Improvements and or bugfixes and other contributions are welcome via the github:
|
||||
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_settings/EpochEvents/Earthquake.sqf
|
||||
*/
|
||||
private ["_marker","_minerals","_randomIndex","_item","_plyrsNearEpicenter","_position"];
|
||||
private ["_marker","_minerals","_randomIndex","_item","_plyrsNearEpicenter","_position","_chance"];
|
||||
_position = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 1000, 0] call BIS_fnc_findSafePos;
|
||||
if ((count _position) == 2) then{
|
||||
_plyrsNearEpicenter = _position nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 1000];
|
||||
if !(_plyrsNearEpicenter isEqualTo[]) then{
|
||||
|
||||
if ((random 1) > 0.5) then{
|
||||
// decrease chance with more players
|
||||
_chance = linearConversion [1, 100, (count allPlayers), 0, 0.5, true];
|
||||
if ((random 1) > _chance) then {
|
||||
// send earthquake to each player in zone
|
||||
{
|
||||
[["earthQuake", _position], (owner _x)] call EPOCH_sendPublicVariableClient;
|
||||
}forEach _plyrsNearEpicenter;
|
||||
|
||||
_minerals = ["MineralDepositCopper_EPOCH", "MineralDepositGold_EPOCH", "MineralDepositSilver_EPOCH"];
|
||||
_randomIndex = floor(random(count _minerals));
|
||||
|
||||
_item = createVehicle[(_minerals select _randomIndex), _position, [], 0.0, "CAN_COLLIDE"];
|
||||
if (EPOCH_showEarthQuakes) then{
|
||||
_marker = createMarker[str(_position), _position];
|
||||
|
Loading…
Reference in New Issue
Block a user