Skip to content

Instantly share code, notes, and snippets.

@nulleqcodes
Last active October 11, 2024 16:50
Show Gist options
  • Save nulleqcodes/9eb96afd05c29a4008dc0d7ea85a83db to your computer and use it in GitHub Desktop.
Save nulleqcodes/9eb96afd05c29a4008dc0d7ea85a83db to your computer and use it in GitHub Desktop.
Wyld Land Colossus
---mobdefinition_Destructor---
Prefab :: colossus
Range Behavior :: [[Medium Ranged]]
Abilities :: [[Colossus Spin]] [[Colossus Slam]] [[Colossus Shoot]] [[Colossus Explosion]]
Bounding Box :: 0 2.73 2.5 3.0
Type :: Boss
Loot :: [[Colossus]]
---ability_Colossus Spin---
Bullet Definition :: [[colossusspin]]
VFX Charging :: trigger:SpinAttack*
Lock Time :: 0.5
Cast Time :: 0.5
---bulletdef_colossusspin---
potency 100
shake SmallExplosion
radial bullets:36 speed:6
wait 10
radial bullets:24 speed:7
---ability_Colossus Slam---
Bullet Definition :: [[colossuscircle]]
Max Range :: 100.0
VFX Charging :: trigger:Attack*
Cast Time :: 0.2
Lock Time :: 1.0
---bulletdef_colossuscircle---
sprite CirclePool 2
potency 250
fire 0 relative 0
aoeexplosion
radius 2
timedFill 40
damageEvery 40
wait 40
vfx ColossusExplosion 5
wait 1
vanish
wait 40
sprite Basic
potency 100
radial bullets:24 speed:6
---ability_Colossus Shoot---
Bullet Definition :: [[colossusshoot]]
VFX Charging :: trigger:RangeAttack*
Cast Time :: 1.0
Lock Time :: 0.5
---bulletdef_colossusshoot---
potency 100
nway speed:5 bullets:10 spread:40 angle:0 directionType:relative
wait 10
nway speed:7 bullets:7 spread:25 angle:0 directionType:relative
---ability_Colossus Explosion---
Bullet Definition :: [[colossuscircle]]
Max Range :: 100.0
VFX Cast :: trigger:Buff*
---bulletdef_colossuscircle---
sprite CirclePool 2
potency 250
fire 0 relative 0
aoeexplosion
radius 2
timedFill 40
damageEvery 40
wait 40
vfx ColossusExplosion 5
wait 1
vanish
wait 40
sprite Basic
potency 100
radial bullets:24 speed:6
---script_colossus_Monster---
resetVars := func() {
scriptVars["timeSinceSpin"] = 0.0
scriptVars["timeSinceBuff"] = 10.0
scriptVars["timeSinceBuffSpawn"] = 0.0
scriptVars["timeSinceSlam"] = 0.0
scriptVars["timeSinceShoot"] = 0.0
}
doSlam := func() {
currentNearby := getNearbyEntities(myEntityId)
for i := 0; i < len(currentNearby); i++ {
if isEnemyOfEntity(myEntityId, currentNearby[i].id) {
useAbilityAtPosition(myEntityId, "Colossus Slam", currentNearby[i].position)
}
}
}
if !isDead {
if is_undefined(scriptVars["timeSinceSpin"]) {
resetVars()
}
if targetEntityId > 0 {
scriptVars["timeSinceSpin"] += delta
scriptVars["timeSinceBuff"] += delta
scriptVars["timeSinceBuffSpawn"] += delta
scriptVars["timeSinceSlam"] += delta
scriptVars["timeSinceShoot"] += delta
if castingAction == 0 {
if scriptVars["timeSinceBuff"] < 10.0 {
if scriptVars["timeSinceBuffSpawn"] > 1.0 {
scriptVars["timeSinceBuffSpawn"] = 0.0
//Todo: pick random locations
useAbilityAtPosition(myEntityId, "Colossus Explosion", randomPositionInCurrentRoom(myEntityId, 2.0))
useAbilityAtPosition(myEntityId, "Colossus Explosion", randomPositionInCurrentRoom(myEntityId, 2.0))
doSlam()
}
} else if scriptVars["timeSinceSlam"] > 10.0 {
scriptVars["timeSinceSlam"] = 0.0
doSlam()
} else if scriptVars["timeSinceBuff"] > 30.0 {
scriptVars["timeSinceBuff"] = 0.0
} else if scriptVars["timeSinceShoot"] > 1.5 {
scriptVars["timeSinceShoot"] = 0.0
useAbilityAtTarget(myEntityId, "Colossus Shoot", randomTargetEntityId(myEntityId, 100.0), 2.0)
}
if scriptVars["timeSinceSpin"] > 6.0 {
scriptVars["timeSinceSpin"] = 0.0
useAbilityAtPosition(myEntityId, "Colossus Spin", entityPosition(myEntityId))
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment