public override void OnActivate(GameTime gameTime, ArmorPotionFramework.EntityClasses.Player activatedBy) { _currentWaitTime -= gameTime.ElapsedGameTime.Milliseconds; if (_currentWaitTime < 0) { _currentWaitTime = _maxWaitTime; ConeProjectile projectile = new ConeProjectile(activatedBy.World, this, ProjectileTarget.Enemy, EventType.FireEvent, false, 75, CenterEntity(activatedBy), MathHelper.ToRadians((int)activatedBy.CurrentSprite.CurrentAnimation * 90), Math.PI / 4); projectile.AnimatedSprites.Add("Normal", AnimatedSprite); activatedBy.World.Projectiles.Add(projectile); } }
public override void Update(GameTime gameTime) { base.Update(gameTime); if (!_thrown) { double distance = GameMath.Distance(_startingPosition, _position); _position += Velocity; if (distance > _throwDistance) _thrown = true; } else { if (_eventType == EventType.FireEvent || _eventType == EventType.IceEvent) { if (_angle < _beginningAngle + _angleCycle) { double newAngle = _angle += _deltaAngle; if (_eventType == EventType.IceEvent) newAngle = RandomGenerator.Random.NextDouble() * Math.PI * 2; ConeProjectile projectile = new ConeProjectile(World, null, this._target, _eventType, _triggerSecondaryProjectileEvents, _projectileDistance, _position, newAngle, _projectileSpread); projectile.DamageAmount = this.DamageAmount; projectile.AnimatedSprites.Add("Normal", AnimatedSprites["Projectile"].Clone()); World.ProjectilesToAdd.Add(projectile); } else { this._isAlive = false; } } else if (_eventType == EventType.LightningEvent) { AreaOfEffectProjectile projectile = new AreaOfEffectProjectile( World, null, this._target, _eventType, _triggerSecondaryProjectileEvents, new Vector2(_position.X - AnimatedSprites["Projectile"].Width / 2, _position.Y - AnimatedSprites["Projectile"].Height / 2), _aoeLife); projectile.AnimatedSprites.Add("Normal", AnimatedSprites["Projectile"].Clone()); World.ProjectilesToAdd.Add(projectile); this._isAlive = false; } } }