Skip to content

Instantly share code, notes, and snippets.

@nulleqcodes
Last active October 17, 2024 21:32
Show Gist options
  • Save nulleqcodes/ac7164c03be21e3887aa8bee21df14b5 to your computer and use it in GitHub Desktop.
Save nulleqcodes/ac7164c03be21e3887aa8bee21df14b5 to your computer and use it in GitHub Desktop.
---mobdefinition_Inferno Juggernaut---
Prefab :: colossus
Range Behavior :: [[Medium Ranged]]
Abilities :: [[Molten Core]] [[Shrapnel Burst]] [[Seismic Slam]] [[Inferno Wave]] [[Eruption Field]]
Bounding Box :: 0 2.73 2.5 3.0
Speed :: 175
Type :: Boss
Loot :: [[Colossus]]
---ability_Molten Core---
Bullet Definition :: [[moltencore]]
VFX Cast :: trigger:Attack*
Lock Time :: 1.5
Max Range :: 100.0
---bulletdef_moltencore---
sprite CirclePool 3
potency 100
fire 0 relative 0
aoeexplosion
radius 3
timedFill 30
damageEvery 10
wait 30
vfx BombExplosion 3
wait 1
fire moltencorewave
vanish
---bulletdef_moltencorewave---
sprite Custom_7
color 2
potency 50
radial bullets:16 speed:6
wait 90
fire randomexplosion
---bulletdef_randomexplosion---
sprite CirclePool 2
potency 75
fire 0 relative 0
aoeexplosion
radius 2
damageEvery 5
wait 5
vfx SmallBombExplosion 2
wait 1
vanish
---ability_Shrapnel Burst---
Bullet Definition :: [[shrapnelburst]]
VFX Cast :: trigger:RangeAttack*
Lock Time :: 1.0
Max Range :: 100.0
---bulletdef_shrapnelburst---
sprite CirclePool 2
potency 75
fire 0 relative 0
aoeexplosion
radius 2
damageEvery 5
wait 5
vfx SmallBombExplosion 2
wait 1
fire shrapnelwave
vanish
---bulletdef_shrapnelwave---
sprite Custom_10
color 1
potency 25
repeat bullets:24 speed:8 angle:0 maxAngle:360 delay:1 directionType:relative
wait 60
fire randomexplosion
---ability_Seismic Slam---
Bullet Definition :: [[seismicslam]]
VFX Cast :: trigger:Beam
Lock Time :: 2.0
Max Range :: 100.0
---bulletdef_seismicslam---
sprite CirclePool 4
potency 150
fire 0 relative 0
aoeexplosion
radius 4
timedFill 40
damageEvery 20
wait 40
vfx ColossusExplosion 4
wait 1
fire seismicshockwave
vanish
---bulletdef_seismicshockwave---
sprite Basic
color 3
potency 50
repeat bullets:8 angleChange:45 angle:0 directionType:relative
fire shockwaveburst
---bulletdef_shockwaveburst---
sprite Basic
color 3
potency 50
nway speed:10 bullets:3 spread:30 angle:0 directionType:relative
wait 45
fire randomexplosion
wait 45
vanish
---ability_Inferno Wave---
Bullet Definition :: [[infernowave]]
VFX Cast :: trigger:Buff*
Lock Time :: 1.5
Max Range :: 100.0
---bulletdef_infernowave---
sprite Custom_7
color 2
potency 75
repeat bullets:5 speed:3 angle:-30 maxAngle:30 directionType:relative
wait 90
fire explosivebolt
repeat bullets:5 speed:4 angle:-30 maxAngle:30 directionType:relative
wait 75
fire explosivebolt
repeat bullets:5 speed:5 angle:-30 maxAngle:30 directionType:relative
wait 60
fire explosivebolt
---bulletdef_explosivebolt---
sprite CirclePool 1.5
potency 50
fire 0 relative 0
aoeexplosion
radius 1.5
damageEvery 3
wait 3
vfx MiniExplosion 1.5
wait 1
vanish
---ability_Eruption Field---
Bullet Definition :: [[eruptionfield]]
VFX Cast :: trigger:Buff*
Lock Time :: 2.0
Max Range :: 100.0
---bulletdef_eruptionfield---
sprite Basic
potency 0
repeat bullets:10 angle:0 maxAngle:360 delay:10 directionType:absolute speed:12
wait 5
fire randomeruption
vanish
---bulletdef_randomeruption---
sprite CirclePool 2.5
potency 100
fire 0 relative 0
aoeexplosion
radius 2.5
timedFill 30
damageEvery 10
wait 30
vfx BombExplosion 2.5
wait 1
vanish
---script_colossus_Monster---
resetVars := func() {
scriptVars["phase"] = 2
scriptVars["timeSinceMoltenCore"] = 0.0
scriptVars["timeSinceShrapnelBurst"] = 0.0
scriptVars["timeSinceSeismicSlam"] = 0.0
scriptVars["timeSinceInfernoWave"] = 0.0
scriptVars["timeSinceEruptionField"] = 0.0
}
if !isDead {
if is_undefined(scriptVars["phase"]) {
resetVars()
}
if targetEntityId > 0 && castingAction == 0 {
scriptVars["timeSinceMoltenCore"] += delta
scriptVars["timeSinceShrapnelBurst"] += delta
scriptVars["timeSinceSeismicSlam"] += delta
scriptVars["timeSinceInfernoWave"] += delta
scriptVars["timeSinceEruptionField"] += delta
currentHealth := getPoints(myEntityId, "hp", "current")
maxHealth := getPoints(myEntityId, "hp", "max")
if currentHealth < maxHealth * 0.5 && scriptVars["phase"] == 1 {
scriptVars["phase"] = 2
setSpeed(myEntityId, 225)
}
if scriptVars["phase"] == 1 {
if scriptVars["timeSinceMoltenCore"] > 6.0 {
useAbilityAtPosition(myEntityId, "Molten Core", entityPosition(myEntityId))
scriptVars["timeSinceMoltenCore"] = 0.0
} else if scriptVars["timeSinceShrapnelBurst"] > 4.0 {
useAbilityAtTarget(myEntityId, "Shrapnel Burst", targetEntityId, 1.0)
scriptVars["timeSinceShrapnelBurst"] = 0.0
} else if scriptVars["timeSinceEruptionField"] > 8.0 {
useAbilityAtPosition(myEntityId, "Eruption Field", randomPositionInCurrentRoom(myEntityId, 2.0))
scriptVars["timeSinceEruptionField"] = 0.0
}
} else {
if scriptVars["timeSinceMoltenCore"] > 5.0 {
useAbilityAtPosition(myEntityId, "Molten Core", entityPosition(myEntityId))
scriptVars["timeSinceMoltenCore"] = 0.0
} else if scriptVars["timeSinceShrapnelBurst"] > 3.5 {
useAbilityAtTarget(myEntityId, "Shrapnel Burst", targetEntityId, 1.0)
scriptVars["timeSinceShrapnelBurst"] = 0.0
} else if scriptVars["timeSinceSeismicSlam"] > 8.0 {
useAbilityAtPosition(myEntityId, "Seismic Slam", entityPosition(myEntityId))
scriptVars["timeSinceSeismicSlam"] = 0.0
} else if scriptVars["timeSinceInfernoWave"] > 7.0 {
useAbilityAtTarget(myEntityId, "Inferno Wave", targetEntityId, 2.0)
scriptVars["timeSinceInfernoWave"] = 0.0
} else if scriptVars["timeSinceEruptionField"] > 6.0 {
useAbilityAtPosition(myEntityId, "Eruption Field", randomPositionInCurrentRoom(myEntityId, 2.0))
scriptVars["timeSinceEruptionField"] = 0.0
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment