Jump to content
Sign in to follow this  
nichevo

[SP] Operation Hog Cove (Altis)

Recommended Posts

Operation Hog Cove

Single-player infantry-only combat in fields and urban environments.

Five small squads launch an amphibious assault on Molos.

Operation_Hog_Cove_002.jpg

Mission Features

  • Requires no addons.
  • Randomised enemy placement and numbers. Shouldn't play out the same way twice.
  • Randomised appearances for friend and foe. Soldiers aren't clones; they wear different uniform variants.
  • Ability to join any squad, or strike out on your own.
  • Randomised time of day: dawn, sunrise, midday, sunset and moonlit night. Visibility is high enough to not require night-vision.
  • Optional objective: make do with your 'standard issue' rifle and basic equipment, plus whatever you can scavenge from the field. A weapons cache is available for those who would rather kit up.

Feedback

Played the mission? I'd appreciate some feedback so I can learn what does and doesn't work in ArmA 3.

Download

See Also

For more of my missions, please click here.

Edited by nichevo
added Armaholic mirror

Share this post


Link to post
Share on other sites

Updated the mission after ArmA came out of Beta. (More info.)

The download links above have (and will) be edited to show which have the latest version.

Share this post


Link to post
Share on other sites

Quick question for my own mission making, how did you randomize BLUFOR soldier experiences? Is this something you put in the init line? Thanks

Share this post


Link to post
Share on other sites
how did you randomize BLUFOR soldier experiences? Is this something you put in the init line?

You're talking about their appearance right? You're correct. :) In the init line for every BLUFOR infantry unit (including the player), I put the following:

nul = [this] execvm "init_blufor.sqf";

ExecVM tells the game to run a script called init_blufor.sqf. I'll paste the script at the bottom of this post. The script file must exist in the mission folder. If you're new to scripts, maybe this guide will help, it's for ArmA 2 but seems mostly correct.

I always use a script like this to randomise soldiers. In this mission I didn't randomise their weapons very much; they always have the MX. But random weapons is certainly possible by expanding the script.

In this mission I actually have another script called init_blufor_medic.sqf because the medic needed different gear (a medikit). You might consider doing the same: different scripts for riflemen, machine-gunners, officers, snipers, AT soldiers etc.

_target = _this select 0;

// Skill:
if(_target != player) then
{
_maxSkill = 0.8;
_minSkill = 0.2;
_target setSkill  (random (_maxSkill - _minSkill)) + _minSkill;
};

// Remove equipment:
removeUniform _target;
removeHeadgear _target;
removeVest _target;
removeBackpack _target;
removeAllWeapons _target;
_target unassignitem "NVGoggles"; 
_target removeItem "NVGoggles"; 

// Possible uniforms:
_uniformArray = [];
_uniformArray = _uniformArray + ["U_B_CombatUniform_mcam"];
_uniformArray = _uniformArray + ["U_B_CombatUniform_mcam"];
_uniformArray = _uniformArray + ["U_B_CombatUniform_mcam_vest"];
_uniformArray = _uniformArray + ["U_B_CombatUniform_mcam_tshirt"];
_uniformArray = _uniformArray + ["U_B_CombatUniform_mcam_worn"];
_target addUniform (_uniformArray select (floor random count _uniformArray));

// Possible vests:
_vestProb = 1.0;
_vestArray = [];
_vestArray = _vestArray + ["V_BandollierB_cbr"];
_vestArray = _vestArray + ["V_BandollierB_khk"];
_vestArray = _vestArray + ["V_BandollierB_oli"];
_vestArray = _vestArray + ["V_BandollierB_rgr"];
_vestArray = _vestArray + ["V_Chestrig_khk"];
_vestArray = _vestArray + ["V_Chestrig_oli"];
_vestArray = _vestArray + ["V_TacVest_blk"];
_vestArray = _vestArray + ["V_TacVest_brn"];
_vestArray = _vestArray + ["V_TacVest_camo"];
_vestArray = _vestArray + ["V_TacVest_khk"];
_vestArray = _vestArray + ["V_TacVest_oli"];
if(random 1.0 < _vestProb) then
{
_target addVest (_vestArray select (floor random count _vestArray));
};

// Possible hats:
_hatProb = 0.8;
_hatArray = [];
if (_target == leader group _target AND _target != player) then 
{ 
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_mcamo"];
_hatArray = _hatArray + ["H_MilCap_gry"];
_hatArray = _hatArray + ["H_MilCap_gry"];
_hatArray = _hatArray + ["H_MilCap_gry"];
_hatArray = _hatArray + ["H_MilCap_dgtl"];
_hatArray = _hatArray + ["H_MilCap_dgtl"];
_hatArray = _hatArray + ["H_MilCap_dgtl"];
_hatArray = _hatArray + ["H_Booniehat_dgtl"];
_hatArray = _hatArray + ["H_Booniehat_tan"];
_hatArray = _hatArray + ["H_Booniehat_mcamo"];
_hatArray = _hatArray + ["H_Cap_blk"];
_hatArray = _hatArray + ["H_Cap_blk_CMMG"];
_hatArray = _hatArray + ["H_Cap_blk_ION"];
_hatArray = _hatArray + ["H_Cap_blk_Raven"];
_hatArray = _hatArray + ["H_Cap_brn_SPECOPS"];
_hatArray = _hatArray + ["H_Cap_grn_BI"];
_hatArray = _hatArray + ["H_Cap_grn"];
_hatArray = _hatArray + ["H_Cap_tan"];
_hatArray = _hatArray + ["H_Cap_tan_specops_US"];	
} 
else 
{ 
_hatArray = _hatArray + ["H_HelmetB"];
_hatArray = _hatArray + ["H_HelmetB"];
_hatArray = _hatArray + ["H_HelmetB"];
_hatArray = _hatArray + ["H_HelmetB"];
_hatArray = _hatArray + ["H_HelmetB_light"];
_hatArray = _hatArray + ["H_HelmetB_light"];
_hatArray = _hatArray + ["H_HelmetB_light"];
_hatArray = _hatArray + ["H_HelmetB_light"];
_hatArray = _hatArray + ["H_HelmetB_paint"];
_hatArray = _hatArray + ["H_HelmetB_paint"];
_hatArray = _hatArray + ["H_HelmetB_paint"];
_hatArray = _hatArray + ["H_HelmetB_paint"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetB_plain_mcamo"];
_hatArray = _hatArray + ["H_HelmetSpecB"];
_hatArray = _hatArray + ["H_HelmetSpecB"];
_hatArray = _hatArray + ["H_HelmetSpecB"];
_hatArray = _hatArray + ["H_HelmetSpecB"];
_hatArray = _hatArray + ["H_Watchcap_blk"];
_hatArray = _hatArray + ["H_Watchcap_blk"];
_hatArray = _hatArray + ["H_Booniehat_dgtl"];
_hatArray = _hatArray + ["H_Booniehat_tan"];
_hatArray = _hatArray + ["H_Booniehat_mcamo"];
_hatArray = _hatArray + ["H_Cap_blk"];
_hatArray = _hatArray + ["H_Cap_blk_CMMG"];
_hatArray = _hatArray + ["H_Cap_blk_ION"];
_hatArray = _hatArray + ["H_Cap_blk_Raven"];
_hatArray = _hatArray + ["H_Cap_brn_SPECOPS"];
_hatArray = _hatArray + ["H_Cap_tan"];
_hatArray = _hatArray + ["H_Cap_tan_specops_US"];
};
if(random 1.0 < _hatProb) then
{
_target addHeadgear (_hatArray select (floor random count _hatArray));
};

// Equipment:
for [{_i=0}, {_i<8+(random 2)}, {_i=_i+1}] do
{
   _target addmagazine "30Rnd_65x39_caseless_mag_Tracer";
};
for [{_i=0}, {_i<random 4}, {_i=_i+1}] do
{
_target addmagazine "HandGrenade";
};
for [{_i=0}, {_i<random 4}, {_i=_i+1}] do
{
   _target additem "FirstAidKit";
};

// A weapon:
_target addweapon "arifle_MX_F";

// Possible optics:
_opticsProb = 0.05;
_opticsArray = [];
_opticsArray = _opticsArray + ["optic_Arco"];
_opticsArray = _opticsArray + ["optic_Hamr"];
_opticsArray = _opticsArray + ["optic_Aco"];
_opticsArray = _opticsArray + ["optic_ACO_grn"];
_opticsArray = _opticsArray + ["optic_Holosight"]; 
if(random 1.0 < _opticsProb) then
{
_target addPrimaryWeaponItem (_opticsArray select (floor random count _opticsArray));
};

// Possible weapon accessories:
_accProb = 0.5;
_accArray = [];
_accArray = _accArray + ["acc_flashlight"];
_primaryWeapon = primaryWeapon _target;
if(random 1.0 < _accProb) then
{
_target addPrimaryWeaponItem (_accArray select (floor random count _accArray));
};

Share this post


Link to post
Share on other sites

aaand.... removed from Steam workshop, saved to HDD. I need this even without the cloud.

Good mission. I did found that there is a performance issue on my machine. Though it might be my 2007 hardware, I hope a bit of optimisation is possible.

Also, a bit of entrenchment, and maybe some civillian presence would be nice... You know.

Edited by Codarl

Share this post


Link to post
Share on other sites
Good mission.

Just saw your reply. Cheers. :)

Also, a bit of entrenchment, and maybe some civillian presence would be nice... You know.

You aren't wrong, but as this was my first ArmA 3 mission, KISS was foremost on my mind.

Share this post


Link to post
Share on other sites

Great mission, it is a real showcase what Arma 3 is about - the new lighting, cunning enemy close range AI - I enjoyed this hard urban battle very much!

Share this post


Link to post
Share on other sites

Very nice mission, its very tough and challenging but I really enjoyed it. Congrats on the pcgamer mention too, thats how I found the mission

a few notes:

-All of the friendly ai dont really take cover other than going prone when they take fire. Often times they just rush up the road then get cut down when they run too far into enemy fire. This results in all of the friendly squads getting wiped out extremely fast.

-the only request I would have would be to make some of the soldiers playable for additional players so the mission could be coop (maybe anywhere from coop 2-4 to coop 10)

Share this post


Link to post
Share on other sites

Is it ok to send me Pbo file so i can learn from it, please?

 

found it! 

thanks.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×