Author: KC Grimes
Script: Grimes Simple Revive
Created with user-friendliness and quality assurance in mind, Grimes Simple Revive is a Revive script for Arma 3 that sets itself apart from other Revive Scripts due to the fact that it is exceptionally organized and simplified for ease-of-use by mission editors of all levels, while still offering unique features. Although this script contains a variety of features on top of its original action-based Revive System, all features, in addition to already having default values set, are organized by relevancy in a simple way that allows editors to adapt this script to their mission, including enabling/disabling features as desired.
Singleplayer (SP), Multiplayer (MP), PvP/TvT/COOP, Save/Load, Dedicated Server, & Join-In-Progress (JIP) Support
For SP, consider running your SP mission as an MP Host. This allows for the use of parameters anyway, allowing you to make your mission more diverse!
Minimal setup required; quick and easy installation
Integrated parameter validation system to ensure the script is being utilized effectively
Revive your teammates, whether they are players or AI, including in water
Drag & Carry players and AI, whether they are your teammates or not
Load incapacitated teammates into vehicles, and Unload them at your destination
AI will operate in a guard-rescuer pair to realistically navigate to and revive teammates (even when vehicles are involved)
AI inclusion is by side and requires no extra work, and individual exclusions from the script can be made by name
Integrate with your respawn settings: works with all respawn types, including the highly recommended Respawn Menu for respawn point selection
The BIS Revive Mode must be Disabled
Available Mobile Respawn Vehicle (MRV) and Squad Leader Respawn systems which include optional markers
Utilization of BI functions and dialogs wherever possible to be as stock and fast as possible
Available immersive options such as black screen and muting ACRE2/TFAR while incapacitated
Available “unit tags” that mark friendly players and AI on your HUD
Available Spectator Mode for use when lives run out
Available pre-placed custom execution lines to run your own scripts within this one
Loads of other large and small features! Check out the parameters for more details.
This package includes an application of the script as part of an example mission.
This README is intended to provide detailed information as to the purpose, function, FAQs, and minor troubleshooting for this script in addition to installation, uninstallation, and maintenance tips. For further information or specifics in the code, the user should read the comments to the code within the script files.
Kent “KC” Grimes of Austin, Texas, United States is the author of the Grimes Simple Revive script. The script was made in order to provide mission makers a user-friendly means of utilizing a revive system.
The purpose of this script is to provide a way for the mission maker to easily implement the revive and spawning abilities into gameplay in order to make their mission unique.
BI Forums Topic: https://forums.bohemia.net/forums/topic/167673-grimes-simple-revive-script/
At this time, there is no “installer” for the script, and it is instead a simple series of actions and file moves.
1. Obtain the script files
a. Armaholic: http://www.armaholic.com/page.php?id=25662
b. github: https://github.com/kcgrimes/grimes-simple-revive/releases
c. Steam Workshop: http://steamcommunity.com/sharedfiles/filedetails/?id=1349229256
2. Extract the “Grimes_Simple_Revive.stratis” folder and place it somewhere on your computer that is easily accessible, such as Desktop or your MP Missions folder.
3. In the folder that contains your mission.sqm (ie, “my_mission.stratis”), do the following:
a. If you haven’t already created a description.ext file, simply copy the provided one into your mission folder. If you already have your own description.ext, simply copy and paste the following line into it. Note: If you already have a defines.hpp or similarly purposed file, you may need to check for conflicts.
b. If you haven’t already created an init.sqf file, simply copy the provided one into your mission folder. If you already have your own init.sqf, simply copy and paste the following line into it. Note: This line must go towards the top, specifically before any suspension statements (waitUntil, sleep, etc.).
 execVM "G_Revive_init.sqf";
c. Copy and Paste the G_Revive_init.sqf file and the G_Revive folder into your mission folder.
4. That is all that is required for the file implementation! Depending on your settings, you will still need make some edits in the in-game editor.
a. If using respawn, adjust the editor-based respawn settings as you desire, and remember to create markers named “respawn_west_0”, “respawn_west_1”, etc. for the desired side if necessary.
b. If using the Mobile Respawn Vehicle (MRV), be sure to name your vehicle in the Name field when you double-click on the vehicle in the editor.
////Editable parameters, sorted by category and relevance - Please adjust values to suit your application.
G_Briefing = true; //true = information, how to, and credits will be displayed on ingame briefing screen. Can be used in conjunction with your own briefing. false = disabled.
G_Revive_System = true; //Whether the revive system will be used or not. true = enabled, false = disabled.
G_Revive_AI_Incapacitated = [WEST, EAST, RESISTANCE, CIVILIAN]; //Array of sides of AI that will utilize revive system
G_Revive_Unit_Exclusion = ; //Array of variable names of units to exclude from the revive system
G_Revive_bleedoutTime = 300; //Amount of time (in seconds) unit is available to be revived, before being forced to respawn. If -1, no time limit.
G_Allow_GiveUp = true; //Allow player to force death while incapacitated. true = enabled, false = disabled.
G_Revive_DownsPerLife = 0; //Number of times unit can go Incapacitated in single life. 0 = Unlimited, integer > 0 = limit of downs per life.
G_Revive_addonRadio_muteTransmit = false; //Mute radio transmissions in addons ACRE2 or TFAR while incapacitated. true = enabled, false = disabled.
G_Revive_addonRadio_muteReceive = false; //Mute radio reception in addons ACRE2 or TFAR while incapacitated. true = enabled, false = disabled.
G_Revive_Can_Revive = ; //Classnames of units that can revive. Wrap in quotes, separate by commas. If empty, all can revive.
G_Revive_actionTime = 10; //Time (in seconds) required for reviver to complete revive action
G_Revive_Requirement = 0; //1 or greater = number of FAKs (single use) or Medikit (unlimited use) needed to revive (and treat still). 0 = Those items only needed to treat, not revive (stock).
G_Revive_Black_Screen = false; //true = While Incapacitated/waiting for revive, screen stays black. false = Screen goes black at death then fades back in, with surroundings visible.
G_Revive_Action_Color = "#FFCC00"; //HTML color code that will be the color of the Revive, Drag, Carry, and Load/Unload action text. Default is Orange.
G_Revive_Load_Types = ["Car","Tank","Helicopter","Plane","Ship"]; //Array of strings of kinds of vehicles that incapacitated units can be loaded into
G_Eject_Occupants = false; //If killed while in a vehicle, the revivable unit is ejected from the vehicle. True = enabled, false = disabled.
G_Explosion_Eject_Occupants = true; //Once the wreck of an exploded vehicle comes to a stop (air or land), the occupants will be ejected and revivable. True to enable, false to disable (units will bypass revive and be forced to respawn).
G_Revive_Reward = 0; //0 = No lives rewarded for revive. 1 and up = number of lives rewarded for reviving. (CAN be a decimal)
G_TK_Penalty = 0; //Amount of lives a Team Killer loses per team kill. Note, must be negative to be negative result (Ex. Value of -2 means 2 lives lost per TK) (CAN be a decimal)
G_Revive_Messages = 1; //Chat messages upon incapacitation and revive. 0 = None. 1 = Friendly only. 2 = All.
G_End_When_Side_Down = true; //true = When all units friendly to a side are incapacitated and/or unable to respawn the server will end the mission, false = server will not handle ending mission for side
G_Respawn_Button = true; //true = Respawn Button enabled, false = Respawn button disabled
G_Respawn_Time = 10; //Amount of time (in seconds) dead unit must wait before being able to respawn (overrides description.ext setting)
G_Num_Respawns = 3; //Number of lives/respawns available to players (must be integer). -1 = unlimited, 0 and up are actual values.
G_Spectator = true; //Upon expending all lives, the player will be put into a spectator camera. If false, mission ends only for that specific player.
G_Squad_Leader_Spawn = true; //Allows spawning on squad leader. Spawn in squad leader's stance. true = enabled, false = disabled.
G_Squad_Leader_Marker = true; //Displays marker on map indicating squad leader's position. true = enabled, false = disabled.
G_Squad_Leader_Mkr_Type = "respawn_inf"; //Shape of marker
G_Squad_Leader_Mkr_Color = "ColorBlack"; //Color of marker
G_Squad_Leader_Mkr_Text = "Squad Leader"; //Text beside marker
G_Squad_Leader_Mkr_Refresh = 1; //Time (in seconds) between refreshes in marker location. Must be a number greater than 0.
G_AI_Fixed_Spawn = true; //Upon respawn, the AI will spawn at the marker defined below for their respective side, as opposed to respawning at random if multiple markers exist
G_AI_Fixed_Spawn_WEST = "respawn_west_0";
G_AI_Fixed_Spawn_EAST = "respawn_east_0";
G_AI_Fixed_Spawn_IND = "respawn_guerrila_0";
G_AI_Fixed_Spawn_CIV = "";
//Mobile Respawn Vehicle
//Note - To enable, simply add the editor-placed vehicle's name into the appropriate array depending on the intended side. It will not be wrapped in quotes. So, it will be vehname and not "vehname". If multiple vehicles, separate by commas.
G_Mobile_Respawn_WEST = [MobileRespawnWEST];
G_Mobile_Respawn_EAST = [MobileRespawnEAST];
G_Mobile_Respawn_IND = [MobileRespawnIND];
G_Mobile_Respawn_CIV = ;
G_Mobile_Respawn_Locked = true; //Lock enemy MRVs so MRVs can only be accessed by their own team. true = enabled, false = disabled.
G_Mobile_Respawn_Movable = false; //true = Deployed mobile respawn can be moved while remaining deployed, false = Deployed mobile respawn is immobile.
G_Mobile_Respawn_Wreck = 10; //Time (in seconds) after mobile respawn is destroyed before the wreck is deleted
G_Mobile_Respawn_RespTimer = 20; //Time (in seconds) for mobile respawn to respawn at starting position/direction
G_Mobile_Respawn_Marker = true; //Displays marker on map indicating MRV's position. true = enabled, false = disabled.
G_Mobile_Respawn_Mkr_Type = "respawn_motor"; //Shape of marker
G_Mobile_Respawn_Mkr_Color = "ColorBlack"; //Color of marker
G_Mobile_Respawn_Mkr_Text = "MRV"; //Text beside marker
G_Mobile_Respawn_Mkr_Refresh = 1; //Time (in seconds) between refreshes in marker location. Must be a number greater than 0.
G_Mobile_Respawn_Mkr_Display = false; //Whether or not marker is always visible (true = marker always visible, false = marker only visible when MRV is deployed
G_Unit_Tag = true; //Refers to unit "name tags" that display over unit's head on HUD. Only friendlies visible. true = enabled, false = disabled.
G_Unit_Tag_Display = 0; //0 = Press defined key to have names visible for defined time, 1 = Cursor over unit to have name displayed, 2 = Names always displayed
G_Unit_Tag_Display_Key = 219; //Only used if Display 0 is that value above. Key number. Default is the Left Windows Key. See key codes for more options.
G_Unit_Tag_Display_Time = 2; //Only used if Display 0 is that value above. Time (in seconds) names display when key pressed
G_Unit_Tag_Distance = 75; //Distance from player that marker will begin to appear
G_Unit_Tag_ShowDistance = true; //Distance is displayed next to player's name
G_Unit_Tag_Color = [1,1,1]; //RGB settings for the tag color of non-squad members. Alpha is normally the 4th number, but that is handled in the script via a distance formula.
G_Unit_Tag_SquadColor = [1,1,0.1]; //RGB settings for the tag color of squad members. Alpha is normally the 4th number, but that is handled in the script via a distance formula.
//Note - By default they will execute on AI as well. Read comment to side.
G_Custom_Exec_1 = ""; //File executed when unit is set Incapacitated (NOT "killed"). _incapacitatedUnit = _this select 0, and is local.
G_Custom_Exec_2 = ""; //File executed when unit is killed (not revivable; unit is officially killed). _killedUnit = _this select 0, and is local.
G_Custom_Exec_3 = ""; //File executed when unit respawns after being killed. _respawnedUnit = _this select 0, and is local.
G_Custom_Exec_4 = ""; //File executed when MRV respawns after being destroyed. Newly spawned MRV = _this select 0, and is local.
G_Custom_Exec_5 = ""; //File executed when unit is revived. _revivedUnit = _this select 0, and is local. _rescuer = _this select 1.
This README is intended to provide detailed information as to the purpose, function, FAQs, and minor troubleshooting for this script in addition to installation, uninstallation, and maintenance tips. For further information or specifics in the code, the user should read the comments to the code within the script files. Any further questions or comments can be directed to the author.
Grimes Simple Revive Issue Tracker on github
Intended to execute the Revive and Unit Tags systems (if enabled) on units that lack these systems, particularly units created post-init.
Parameter: Array - List of units to be cycled through init; or use Object - Unit to be cycled through init
Ex: [_unit1, _unit2] spawn G_fnc_initNewAI;
Ex: _unit1 spawn G_fnc_initNewAI;
A means of forcing a revive-enabled unit into the incapacitated state.
Parameter: Object - Revive-enabled unit
Ex: _unit1 spawn G_fnc_enterIncapacitatedState;
A means of forcing a revive-enabled unit out of the incapcitated state and back to their feet.
Parameter: Object - Revive-enabled unit
Ex: _unit1 spawn G_fnc_exitIncapacitatedState;
All significant commits (changes) to this project will be associated with an issue in the Issue Tracker. This does not include minor documentation, formatting, readability, or otherwise cleanup-oriented changes. All issues resulting in a commit will be assigned to a Milestone, and the Milestones will be used as a reliable changelog, while the commit history will be comprehensive. Some issues may be related to changes within the same Milestone, and some fixes for bugs caused in the same Milestone may not be associated to an issue but instead the commit they are addressing.
Grimes Simple Revive hosted on Armaholic
Grimes Simple Revive hosted on github
Grimes Simple Revive hosted on Steam Workshop
Link to Full Sample Mission
COOP 5 First Light
Grimes Simple Revive Script Overview on twitch.tv - Note: This video is from v0.5, and may include/not include certain features. The gist is there though.