This does look nice and the particle effects are nice, without grinding my low-end PC into the ground (you wisely used a smaller number of large particles). It has great potential and the fact that it doesn't rely on an addon, unlike a previous napalm release I've seen, is a considerable boon!
1) I tried this, but neither attached mission worked at all. Checking through the code, you have placed barrels that have this in the init:
if (alive this) then { [this] execVM "Napalm.sqf"; }
Since barrels aren't ever alive, this script will never get run. The script worked fine when I changed that to:
nil = [this] execVM "Napalm.sqf";
2) Forcing the AI to run (nice panic effect ;P) is fine using doMove in careless mode, but it doesn't work for players. To make anyone, player or AI, run like madmen, you could force them into a sprint animation, then they'll not even bother running around obstacles ;P The rolling animation, as it is now, works fine for players and AI and is a nice touch.
3) Every time you create a new bomb, you empty the list of people burning (burnarray = [];), but you should only create the array when it doesn't already exist, in order to stop individuals getting set on fire more than once:
if (isNil "burnarray") then
{
burnarray = [];
};
4) You create an invisible helipad in order to have an object for your particles to be attached to. Using a gameLogic ("logic") makes more sense, since no helicopters will try to land on it ;P
5) Your code isn't indented, which makes it very hard to read. One of the advantages of the SQF syntax is that it is supposed to be indented to aid readability (for you, the author, even more than for other people).
while {_a < 60} do
{
if (_a < 40) then
{
_ouch = nearestObjects [_obj,["ALL"],35];
};
// ...etc...
};
becomes the vastly more readable:
while {_a < 60} do
{
if (_a < 40) then
{
_ouch = nearestObjects [_obj,["ALL"],35];
};
// ...etc...
};
It especially makes it easier to track whether you have matching {}s! Still, it is a stylistic thing, not a practical fault, but it is a very good habit to get into.
6) You do want to be creating the particles on every machine that has a player to see them "if (not (isNull player)) then { ... }", but some of the other effects you only want doing once on one machine. E.g. at the moment, you are creating one LGB per server/player, not just one in the game. The easiest way to deal with this is to just do it on the server with "if (isServer) then { ... }".