mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
305 lines
15 KiB
Lua
305 lines
15 KiB
Lua
effects = {}
|
|
effects.shooterName = "TestInfantry"
|
|
effects.napalmCounter = 1
|
|
|
|
effects.fireCounter = 1
|
|
|
|
function effects.notify(message, displayFor)
|
|
trigger.action.outText(message, displayFor, false)
|
|
end
|
|
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
----NAPALM
|
|
|
|
|
|
function effects.napalmSingle ()
|
|
unit = Unit.getByName(effects.shooterName)
|
|
local unitPos = unit:getPosition().p
|
|
vec3 = mist.utils.makeVec3GL(unitPos)
|
|
effects.spawnNapalm (vec3)
|
|
end
|
|
|
|
|
|
function effects.spawnNapalm (vec3)
|
|
|
|
napeName = "napalmStrike" .. effects.napalmCounter
|
|
effects.napalmCounter = effects.napalmCounter + 1
|
|
mist.dynAddStatic(
|
|
{
|
|
country = 20,
|
|
category = 'Fortifications',
|
|
hidden = true,
|
|
name = napeName,
|
|
type ="Fuel tank",
|
|
x = vec3.x,
|
|
y = vec3.z,
|
|
heading = 0,
|
|
} -- end of function
|
|
)
|
|
timer.scheduleFunction(effects.explode,vec3, timer.getTime() + 0.1)
|
|
timer.scheduleFunction(effects.napalam_death,napeName, timer.getTime() + 0.12)
|
|
end
|
|
|
|
function effects.explode(vec3)
|
|
trigger.action.explosion(vec3, 10)
|
|
end
|
|
|
|
function effects.napalam_death(staticName) --yes i know bad pun, removes the fuel tank after a set time
|
|
StaticObject.getByName(staticName):destroy()
|
|
end
|
|
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
----Basic smoke or fire that despawns
|
|
function effects.smokeFire ()
|
|
unit = Unit.getByName(effects.shooterName)
|
|
local unitPos = unit:getPosition().p
|
|
vec3 = mist.utils.makeVec3GL(unitPos)
|
|
effects.createFire (vec3, 2)
|
|
-- 1 = small smoke and fire
|
|
-- 2 = medium smoke and fire
|
|
-- 3 = large smoke and fire
|
|
-- 4 = huge smoke and fire
|
|
-- 5 = small smoke
|
|
-- 6 = medium smoke
|
|
-- 7 = large smoke
|
|
-- 8 = huge smoke
|
|
end
|
|
|
|
function effects.createFire (vec3, size)
|
|
smokeName = "smokeName" .. effects.fireCounter
|
|
effects.fireCounter = effects.fireCounter + 1
|
|
trigger.action.effectSmokeBig(vec3 , size , 1, smokeName)
|
|
trigger.action.explosion(vec3, 1) -- looks wierd to spawn in on flat land without this
|
|
timer.scheduleFunction(effects.removeFire,smokeName, timer.getTime() + 20) --you could set a timer, or if selected give option to despawn later
|
|
end
|
|
|
|
function effects.removeFire (smokeName)
|
|
trigger.action.effectSmokeStop(smokeName)
|
|
end
|
|
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
----White phosporus secondaries extra effect, like round cooking off
|
|
--if you up the number going pop to somewhere in the 200-400 region with a white phosporus impact it would look mental cool
|
|
function effects.secondaries ()
|
|
unit = Unit.getByName(effects.shooterName)
|
|
local unitPos = unit:getPosition().p
|
|
vec3 = mist.utils.makeVec3GL(unitPos)
|
|
--trigger.action.smoke(vec3 , 2 )
|
|
for i = 1,math.random(3,10) do
|
|
angle = mist.utils.toRadian((math.random(1,360)))
|
|
local randVec = mist.utils.makeVec3GL((mist.getRandPointInCircle(vec3 ,5 , 1 ,0 ,360)))
|
|
trigger.action.signalFlare(randVec , 2 , angle )
|
|
end
|
|
|
|
end
|
|
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
----Depth Charges
|
|
-- these also make, on land, good dust clouds for a bomb hit in a sandy area?
|
|
-- local surface = land.getSurfaceType(mist.utils.makeVec2(unitPos)) -- optional check for water, value 3 or 2
|
|
|
|
function effects.depthCharge ()
|
|
local unit = Unit.getByName(effects.shooterName)
|
|
local unitPos = unit:getPosition().p
|
|
|
|
vec3 = mist.utils.makeVec3GL(unitPos)
|
|
vec3.y = vec3.y - 1000
|
|
bang = vec3
|
|
distance = 20
|
|
explosionSize = 2
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
bang = mist.getRandPointInCircle(vec3 , distance ,1,359,0)
|
|
trigger.action.explosion(mist.utils.makeVec3GL(bang),explosionSize)
|
|
timer.scheduleFunction(effects.depthChargeMain,vec3, timer.getTime() + 5)
|
|
end
|
|
|
|
|
|
|
|
function effects.depthChargeMain (vec3)
|
|
explosionSize = 250
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
vec3.x = vec3.x
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
vec3.x = vec3.x - 10
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
vec3.z = vec3.z
|
|
trigger.action.explosion(vec3,explosionSize)
|
|
vec3.z = vec3.z - 10
|
|
end
|
|
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
--------------------------------------------
|
|
----Normal small explosion
|
|
|
|
function effects.normalSmallExplosion (vec3)
|
|
unit = Unit.getByName(effects.shooterName)
|
|
local unitPos = unit:getPosition().p
|
|
vec3 = mist.utils.makeVec3GL(unitPos)
|
|
trigger.action.explosion(vec3,10)
|
|
end
|
|
|
|
|
|
|
|
do
|
|
longRangeShots = missionCommands.addSubMenu("Effects")
|
|
missionCommands.addCommand ("Napalm", longRangeShots, effects.napalmSingle)
|
|
missionCommands.addCommand ("Fire or smoke", longRangeShots, effects.smokeFire)
|
|
missionCommands.addCommand ("Secondary explosions", longRangeShots, effects.secondaries)
|
|
missionCommands.addCommand ("Depth Charge", longRangeShots, effects.depthCharge)
|
|
missionCommands.addCommand ("A regular explosion", longRangeShots, effects.normalSmallExplosion)
|
|
end
|
|
|
|
effects.notify("effects.lua ran", 2) |