Page 1 of 1

Scripting 10 - Listening on explosions

Posted: Sat Jul 27, 2019 2:06 pm
by Gurt
Scripting 10 - Listening on explosions

Scripting in SFD assumes you have a fair knowledge of C#.

The following code demonstrates how to listen on triggered explosions in v.1.3.0.

Code: Select all

Events.ExplosionHitCallback m_explosionHitEvent = null;
         
 public void OnStartup() {
	m_explosionHitEvent = Events.ExplosionHitCallback.Start(OnExplosionHit);
 }
 public void OnExplosionHit(ExplosionData explosion, ExplosionHitArg[] args) {
	// explosion triggered
	for(int i = 0; i < args.Length; i ++) {
	   switch (args[i].HitType) {
		case ExplosionHitType.Damage:
			Game.WriteToConsole(string.Format("Explosion {0} hit {1} {2} for {3} damage", explosion.InstanceID, (args[i].IsPlayer ? "player" : "object"), args[i].ObjectID, args[i].Damage));
			break;
		case ExplosionHitType.Shockwave:
			Game.WriteToConsole(string.Format("Explosion {0} pushed {1} {2}", explosion.InstanceID, (args[i].IsPlayer ? "player" : "object"), args[i].ObjectID));
			break;
		case ExplosionHitType.None:
			Game.WriteToConsole(string.Format("Explosion {0} overlapped {1} {2}", explosion.InstanceID, (args[i].IsPlayer ? "player" : "object"), args[i].ObjectID));
			break;
	   }
	}
 }
 

Note: If you only want to listen on player damage you could use the PlayerDamageCallback event instead. See viewtopic.php?f=22&t=3771

ScriptAPI Implementation
► Show Spoiler