Topic on User talk:Hautarche

Jump to navigation Jump to search
Hautarche (talkcontribs)

I got around to playing a mechanitor in 1.5 and noticed that enemy diaboli behave oddly now; they seemed to prioritize using Fire Burst instead of using their Hellsphere Cannon or attempting to close the distance. At first, I thought this was an issue caused by mods.


So I started several Dev Quicktest runs without any mods. In each, I used Dev Mode to place down a diabolus, then I went through various scenarios of pawns attacking them with weapons of different ranges, running past them without attacking them, or outright ignoring them. I then also looked at the ThinkTrees that diaboli use, the AICanTargetNow function of the Fire Burst ability, and so on and so forth...


Anyways, sources for all the information I've edited into the Diabolus page:

- I ordered friendly diaboli to use Fire Burst, watched enemy diaboli use it, and used Dev Mode to force enemy diaboli to use it. In all three instances, their behavior is identical: a three-second warmup during which chemfuel puddles are deposited to random points in 5.9c radius, followed by the deposition of chemfuel puddles into the remaining cells in 5.9c radius and a flame explosion with 5.9c radius. The ability then goes on cooldown for what appears to be 1 hour according to the GUI, but is actually 2700 ticks (1.08 hours) per the XML.

- The code for CompAbilityEffect_FireBurst is just 'GenExplosion.DoExplosion(this.Pawn.Position, this.Pawn.MapHeld, this.Props.radius, DamageDefOf.Flame, this.Pawn, -1, -1f, null, null, null, null, ThingDefOf.Filth_Fuel, 1f, 1, null, false, null, 0f, 1, 1f, false, null, null, null, false, 0.6f, 0f, true, null, 1f, null, null)'. So yes, the damage type is Flame. The two fields after 'this.Pawn' are the damage amount and armor penetration fields, in that order; since the listed damage amount is <0, DoExplosion uses Flame damage's default damage amount, which is 10, and since the listed armor penetration is <0, DoExplosion uses its default armor penetration, which is 0.

- In testing, enemy diaboli start using Fire Burst as soon as someone starts aiming at them, unless they were already using the Hellsphere Cannon. Meanwhile, colonists, pets, and mechanoids can run in close proximity to a diabolus without provoking Fire Burst; instead, it tries using its Hellsphere Cannon or melee attacks. HOWEVER, in the run in which I first noticed odd diabolus behavior, it didn't seem to be this way; that may be due to the following reasons. 1) Some of my colonists have weapons that can attack from >=66c away; 2) Fire Burst's AI usage is governed by AICanTargetNow, which is ultimately called by the diabolus' ThinkTree under whatever ThinkNode gives it JobGiver_AIFightEnemy (or in this case its derivative JobGiver_AIFightEnemies); and 3) this node in the diabolus' ThinkTree has a targetAcquireRadius of 65c. Subsequent testing with mods that enabled me to give colonists weapons with >65c range showed that diaboli will start using Fire Burst if they are not currently using Hellsphere Cannon, and are being aimed at or attacked by a pawn within 65c.

- I actually tried to test the "friendly" claim and see how diaboli from an allied faction use Fire Burst. These diaboli, which I set to various allied or neutral factions, were instead confused about their existence and wandered around aimlessly, not responding to attacks from anything (though their mounted charge turret still shot at hostile pawns nearby). This may be due to how the "Set Faction" Dev Mode tool works, though - I suspect if a mod were to add an allied faction that can field diaboli, and bothers to give them a Lord AI that lets them attack, such friendly diaboli will use Fire Burst the same way enemy diaboli do.

Hautarche (talkcontribs)

After thinking about how AICanTargetNow gets called, and recalling discrepancies between diabolus behavior during testing and non-test gameplay, I ran another set of tests that were identical to the first, with one exception: instead of *spawning* diaboli from scratch, I had a mechanitor summon them, and then I either initiated the test while the diabolus was still preparing to attack or after it started making its way towards my base. This is important because diaboli spawned from the "Spawn Pawn" Dev Tool have a different AI Lord than those that drop in after being summoned by a mechanitor (or as part of the entourage of another mechanoid boss or raid); obviously the latter is the one actually pertinent to players reading the wiki.

This round of testing showed slightly different results. To make a long story short, non-player-controlled diaboli will only use Fire Burst if the ability's AICanTargetNow function says to do so, but that in turn only gets evaluated while the diabolus is fighting enemies. A diabolus that is NOT fighting enemies therefore cannot cast Fire Burst. Diaboli are NOT fighting enemies when wandering around in preparation for an assault, as well as when they are simply pathing towards your colony (or aiming a weapon at random buildings/furniture; this is also not 'fighting enemies'). Diaboli switch to fighting enemies when they are hit by a damaging attack, (sometimes) when anyone in their 'party' is hit by a damaging attack, or when they spend enough time proximate to pawns they COULD fight; you'll know they're in this mode because they path towards your pawns and then start trying to shoot them with the Hellsphere Cannon. Note that the charge blaster turret fires independently of the diabolus and so is not an identifier of the diabolus' current Toil.

All that said, when the diabolus IS fighting enemies, Fire Burst does in fact proc when attacked or even aimed at.

This is why I have submitted an edit-of-my-edit further clarifying how diaboli' fire burst work.

Reply to "Diabolus Fire Burst notes"