| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //-----------------------------------------------------------------------------
- // Torque
- // Copyright GarageGames, LLC 2013
- //-----------------------------------------------------------------------------
- function LeapToy::createDealsDamageBehavior( %this )
- {
- if (!isObject(DealsDamageBehavior))
- {
- %this.DealsDamageBehavior = new BehaviorTemplate(DealsDamageBehavior);
- %this.DealsDamageBehavior.friendlyName = "Deals Damage Advanced";
- %this.DealsDamageBehavior.behaviorType = "Game";
- %this.DealsDamageBehavior.description = "Set the object to deal damage to TakesDamage objects it collides with";
- %this.DealsDamageBehavior.addBehaviorField(strength, "The amount of damage the object deals", int, 10);
- %this.DealsDamageBehavior.addBehaviorField(deleteOnHit, "Delete the object when it collides", bool, 1);
- %this.DealsDamageBehavior.addBehaviorField(explodeEffect, "The particle effect to play on collision", asset, "", ParticleAsset);
- %this.add(%this.DealsDamageBehavior);
- }
- }
- //-----------------------------------------------------------------------------
- function DealsDamageBehavior::initialize(%this, %strength, %deleteOnHit, %explodeEffect)
- {
- %this.strength = %strength;
- %this.deleteOnHit = %deleteOnHit;
- %this.explodeEffect = %explodeEffect;
- }
- //-----------------------------------------------------------------------------
- function DealsDamageBehavior::onBehaviorAdd(%this)
- {
- %this.owner.collisionCallback = true;
- %this.owner.collisionActiveSend = true;
- }
- //-----------------------------------------------------------------------------
- function DealsDamageBehavior::dealDamage(%this, %amount, %victim)
- {
- %takesDamage = %victim.getBehavior("TakesDamageBehavior");
- if (!isObject(%takesDamage))
- return;
-
- %takesDamage.takeDamage(%amount, %this);
- }
- //-----------------------------------------------------------------------------
- function DealsDamageBehavior::explode(%this, %position)
- {
- if (%this.explodeEffect !$= "")
- {
- %particlePlayer = new ParticlePlayer();
- %particlePlayer.BodyType = static;
- %particlePlayer.SetPosition( %this.owner.getPosition() );
- %particlePlayer.SceneLayer = %this.owner.getSceneLayer();
- %particlePlayer.ParticleInterpolation = true;
- %particlePlayer.Particle = %this.explodeEffect;
- SandboxScene.add(%particlePlayer);
- }
- }
- //-----------------------------------------------------------------------------
- function DealsDamageBehavior::onCollision(%this, %object, %collisionDetails)
- {
- %this.dealDamage(%this.strength, %object);
-
- if (%this.deleteOnHit)
- {
- %this.explode(getWords(%contacts, 0, 1));
- %this.owner.safeDelete();
- }
- }
|