mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
Add files via upload
Cool effects, WP, secondary explosions, normal explosions and smoke etc nuff said
This commit is contained in:
parent
0f2d9feba5
commit
8ad25a32c0
305
scripts/coolEffects.lua
Normal file
305
scripts/coolEffects.lua
Normal file
@ -0,0 +1,305 @@
|
||||
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)
|
||||
Loading…
x
Reference in New Issue
Block a user