protected override void UpdateControl(float tpf) { if (counting) { respawningTime -= tpf; if (respawningTime <= 0) { counting = false; me.ToggleControls(true); if (hpControl != null) { hpControl.RefillHp(); } me.Visible = true; ModuleDamageControl control = me.GetControlOfType <ModuleDamageControl>() as ModuleDamageControl; if (control == null) { return; } control.Vulnerable = false; me.AddControl(new DelayedActionInvokingControl(2, true, new Action(() => control.Vulnerable = true))); } else { BlinkObject(tpf); } } }
public virtual void DoCollideWith(ISceneObject other, float tpf) { if (!CanCollideWithObject(other)) { return; } if (other is Asteroid) { bullet.DoRemoveMe(); if (!bullet.Owner.IsCurrentPlayerOrBot()) { return; } HitAsteroid(other as IDestroyable); addHitStat(); } else if (other is MiningModule) { ModuleDamageControl control = other.GetControlOfType <ModuleDamageControl>(); if (!control.Vulnerable) { return; } (other as IDestroyable).TakeDamage(bullet.Damage, bullet); bullet.DoRemoveMe(); addHitStat(); } else if (other is IDestroyable) { bullet.DoRemoveMe(); (other as IDestroyable).TakeDamage(bullet.Damage, bullet); bullet.Owner.AddScoreAndShow(ScoreDefines.CANNON_HIT); addHitStat(); } }