Skip to content

Instantly share code, notes, and snippets.

@nulleqcodes
Last active October 17, 2024 23:29
Show Gist options
  • Save nulleqcodes/a70f84830f0e0c2dbf09891698c726be to your computer and use it in GitHub Desktop.
Save nulleqcodes/a70f84830f0e0c2dbf09891698c726be to your computer and use it in GitHub Desktop.
Playing Around Four
---mobdefinition_Fusion Nexus---
Prefab :: colossus
Range Behavior :: [[Medium Ranged]]
Abilities :: [[Fusion Beam]] [[Nexus Pulse]] [[Dispersal Wave]] [[Convergence Field]] [[Polarity Shift]]
Bounding Box :: 0 2.73 2.5 3.0
Speed :: 175
Type :: Boss
Loot :: [[FusionNexus]]
---ability_Fusion Beam---
Bullet Definition :: [[fusionbeam]]
VFX Cast :: trigger:Beam
Lock Time :: 1.5
Max Range :: 100.0
---bulletdef_fusionbeam---
sprite Laser_14
color 5
potency 150
fire 230 relative 0
piercing 100
sprite Basic
color 5
potency 50
repeat bullets:10 speed:8 angle:-20 maxAngle:20 delay:3 directionType:relative
wait 60
vanish
---ability_Nexus Pulse---
Bullet Definition :: [[nexuspulse]]
VFX Cast :: trigger:Attack*
Lock Time :: 1.0
Max Range :: 100.0
---bulletdef_nexuspulse---
sprite CirclePool 5
potency 100
fire 0 relative 0
aoeexplosion
radius 5
timedFill 30
damageEvery 10
wait 30
vfx ColossusExplosion 5
wait 1
vanish
sprite Basic
color 2
potency 75
radial bullets:36 speed:6
wait 90
vanish
---ability_Dispersal Wave---
Bullet Definition :: [[dispersalwave]]
VFX Cast :: trigger:RangeAttack*
Lock Time :: 1.0
---bulletdef_dispersalwave---
sprite Basic
color 1
potency 50
repeat bullets:5 speed:3 angle:-60 maxAngle:60 directionType:relative
wait 90
vanish
wait 5
repeat bullets:5 speed:4 angle:-60 maxAngle:60 directionType:relative
wait 75
vanish
wait 5
repeat bullets:5 speed:5 angle:-60 maxAngle:60 directionType:relative
wait 60
vanish
---ability_Convergence Field---
Bullet Definition :: [[convergencefield]]
VFX Cast :: trigger:Buff*
Lock Time :: 2.0
Max Range :: 100.0
---bulletdef_convergencefield---
sprite CirclePool 4
potency -50
fire 0 relative 0
aoepool
radius 4
damageEvery 30
damageFriendly
wait 300
vanish
sprite Basic
color 3
potency 25
repeat bullets:36 speed:2 angle:0 maxAngle:360 delay:5
wait 290
vanish
---ability_Polarity Shift---
Bullet Definition :: [[polarityshift]]
VFX Cast :: trigger:Buff*
Lock Time :: 1.5
Max Range :: 100.0
---bulletdef_polarityshift---
sprite CirclePool 6
potency 0
fire 0 relative 0
aoeexplosion
radius 6
timedFill 60
wait 60
fire polarityburstout
vanish
---bulletdef_polarityburstout---
sprite Basic
color 4
potency 100
radial bullets:36 speed:8
wait 60
vanish
wait 5
sprite Basic
color 4
potency 100
radial bullets:36 speed:6
wait 60
vanish
wait 5
sprite Basic
color 4
potency 100
radial bullets:36 speed:4
wait 60
vanish
---script_colossus_Monster---
resetVars := func() {
scriptVars["phase"] = 1
scriptVars["timeSinceFusionBeam"] = 0.0
scriptVars["timeSinceNexusPulse"] = 0.0
scriptVars["timeSinceDispersalWave"] = 0.0
scriptVars["timeSinceConvergenceField"] = 0.0
scriptVars["timeSincePolarityShift"] = 0.0
scriptVars["convergenceActive"] = false
scriptVars["convergenceTimer"] = 0.0
}
if !isDead {
if is_undefined(scriptVars["phase"]) {
resetVars()
}
if targetEntityId > 0 && castingAction == 0 {
scriptVars["timeSinceFusionBeam"] += delta
scriptVars["timeSinceNexusPulse"] += delta
scriptVars["timeSinceDispersalWave"] += delta
scriptVars["timeSinceConvergenceField"] += delta
scriptVars["timeSincePolarityShift"] += 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["convergenceActive"] {
scriptVars["convergenceTimer"] += delta
if scriptVars["convergenceTimer"] >= 10.0 {
scriptVars["convergenceActive"] = false
scriptVars["convergenceTimer"] = 0.0
}
}
if scriptVars["phase"] == 1 {
if scriptVars["timeSinceFusionBeam"] > 6.0 {
useAbilityAtTarget(myEntityId, "Fusion Beam", targetEntityId, 1.0)
scriptVars["timeSinceFusionBeam"] = 0.0
} else if scriptVars["timeSinceNexusPulse"] > 8.0 {
useAbilityAtPosition(myEntityId, "Nexus Pulse", entityPosition(myEntityId))
scriptVars["timeSinceNexusPulse"] = 0.0
} else if scriptVars["timeSinceDispersalWave"] > 5.0 && !scriptVars["convergenceActive"] {
useAbilityAtTarget(myEntityId, "Dispersal Wave", targetEntityId, 1.5)
scriptVars["timeSinceDispersalWave"] = 0.0
} else if scriptVars["timeSinceConvergenceField"] > 15.0 {
useAbilityAtPosition(myEntityId, "Convergence Field", randomPositionInCurrentRoom(myEntityId, 4.0))
scriptVars["timeSinceConvergenceField"] = 0.0
scriptVars["convergenceActive"] = true
scriptVars["convergenceTimer"] = 0.0
}
} else {
if scriptVars["timeSinceFusionBeam"] > 5.0 {
useAbilityAtTarget(myEntityId, "Fusion Beam", targetEntityId, 1.0)
scriptVars["timeSinceFusionBeam"] = 0.0
} else if scriptVars["timeSinceNexusPulse"] > 7.0 {
useAbilityAtPosition(myEntityId, "Nexus Pulse", entityPosition(myEntityId))
scriptVars["timeSinceNexusPulse"] = 0.0
} else if scriptVars["timeSinceDispersalWave"] > 4.0 && !scriptVars["convergenceActive"] {
useAbilityAtTarget(myEntityId, "Dispersal Wave", targetEntityId, 1.5)
scriptVars["timeSinceDispersalWave"] = 0.0
} else if scriptVars["timeSinceConvergenceField"] > 12.0 {
useAbilityAtPosition(myEntityId, "Convergence Field", randomPositionInCurrentRoom(myEntityId, 4.0))
scriptVars["timeSinceConvergenceField"] = 0.0
scriptVars["convergenceActive"] = true
scriptVars["convergenceTimer"] = 0.0
} else if scriptVars["timeSincePolarityShift"] > 20.0 {
useAbilityAtPosition(myEntityId, "Polarity Shift", entityPosition(myEntityId))
scriptVars["timeSincePolarityShift"] = 0.0
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment