@Override
	public boolean tick(final Tickable ticking, final int tickID)
	{
		if(amDestroyed()) return false;

		if(usage<=0){ destroy(); return false;}

		if(tickID==Tickable.TICKID_EXIT_REOPEN)
		{
			if(defaultsClosed())
				isOpen=false;
			if(defaultsLocked())
			{
				isOpen=false;
				isLocked=true;
			}
			return false;
		}
		else
		if(tickID==Tickable.TICKID_EXIT_BEHAVIOR)
		{
			eachBehavior(new EachApplicable<Behavior>(){ @Override
			public final void apply(final Behavior B)
			{
				B.tick(ticking, tickID);
			} });
			eachScript(new EachApplicable<ScriptingEngine>(){ @Override
			public final void apply(final ScriptingEngine S)
			{
				S.tick(ticking, tickID);
			} });
			return !amDestroyed();
		}
		else
		{
			eachEffect(new EachApplicable<Ability>(){ @Override
			public final void apply(final Ability A)
			{
				if(!A.tick(ticking,tickID))
					A.unInvoke();
			}});
			return true;
		}
	}