protected override void CastAbility() { base.CastAbility(); // Fire bullet GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Bullet"), shooter.getMousePosition(), Quaternion.identity); // Set damage DamageOnHit dmg = go.GetComponent <DamageOnHit>(); dmg.damageOnHit = damage; dmg.destroyOnGround = true; dmg.destroyOnAnyCollision = true; // Set speed of bullet Vector3 velocity = speed * Vector3.Normalize(shooter.runner.transform.position - shooter.getMousePosition()); if (!angledBullets) { velocity.y = 0; } go.rigidbody2D.velocity = velocity; // Rotate to look towards player //go.transform.rotation = Quaternion.LookRotation(go.rigidbody2D.velocity); }
public override void OnSpellAdd(ModularSpell addedSpell) { // save onCast actions IOnCastAction[] totalOnCastActions = addedSpell.onCastActions.Clone() as IOnCastAction[]; //modify damage of AllOnHitActions foreach (IOnHitAction onHitAction in addedSpell.AllOnHitActions) { if (onHitAction.GetType() == typeof(DamageOnHit)) { DamageOnHit damageAction = onHitAction as DamageOnHit; damageAction.damage *= damageMultiplier; } } addedSpell.onCastActions = new IOnCastAction[1]; // create new multiple cast action RepeatCastOnCast castRepeater = new RepeatCastOnCast(); castRepeater.nRepeats = nCasts; castRepeater.timeBetweenCasts = timeBetweenCasts; // add old onCast actions to it castRepeater.OnCastActions = totalOnCastActions; castRepeater.Init(addedSpell); addedSpell.onCastActions[0] = castRepeater; }
protected override void CastAbility() { base.CastAbility(); // Mine GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Mine"), shooter.getMousePosition(), Quaternion.identity); // Set damage DamageOnHit dmg = go.GetComponent <DamageOnHit>(); dmg.damageOnHit = damage; dmg.explosionScaleFactor = 4f; }
protected override void Initialize() { base.Initialize(); DamageOnHit doh = GetComponent <DamageOnHit>(); doh.onHitOccured += GainExperience; targetSelectors.Add(new TargetSelection()); //immediate hit object TargetSelectionOnCollision targetSelection = GetComponent <TargetSelectionOnCollision>(); targetSelection.Selectors = targetSelectors; targetSelection.Effects = impactEffects; targetSelection.onHitOccured += GainExperience; targetSelection.CollisionLayer = collisionLayer; }
protected override void CastAbility() { base.CastAbility(); // Fire bullet GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Dog"), shooter.getMousePosition(), Quaternion.identity); // Set damage DamageOnHit dmg = go.GetComponent <DamageOnHit>(); dmg.damageOnHit = damage; // Set speed of bullet EnemyWalking walking = go.GetComponent <EnemyWalking>(); walking.speed = 5; }
protected override void CastAbility() { base.CastAbility(); // Create a blast of shrapnel fountaining upwards for (int x = 0; x < numberOfShrapnel; x++) { GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Shrapnel"), shooter.getMousePosition(), Quaternion.identity); // Set damage DamageOnHit dmg = go.GetComponent <DamageOnHit>(); dmg.damageOnHit = damage; dmg.destroyOnGround = true; // Set velocity upwards with a random X component go.rigidbody2D.velocity = new Vector2(randomNumber(-300, 300, 100), randomNumber(400, 600, 100)); } }
// Update is called once per frame void OnTriggerEnter2D(Collider2D c) { dmgScript = c.GetComponent <DamageOnHit> (); teamScript = c.GetComponent <CommonVars> (); if (dmgScript == null || teamScript == null) { return; } if (teamScript.team == Team.Neutral || team == teamScript.team) { return; } if (!isDead) { rigidBodyHurt(dmgScript.damage, c.transform); } }