@Override
	public boolean tick(Tickable ticking, int tickID)
	{
		if(!super.tick(ticking, tickID))
			return false;
		if(tickID==Tickable.TICKID_ELECTRONICS)
		{
			if(activated() && owner() instanceof MOB)
			{
				final MOB mob=(MOB)owner();
				final List<Software> software=getSoftware();
				final CMMsg msg2=CMClass.getMsg(mob, null, null, CMMsg.NO_EFFECT,null,CMMsg.MSG_POWERCURRENT,null,CMMsg.NO_EFFECT,null);
				synchronized(software) // this is how software ticks, even tricorder software...
				{
					for(final Software sw : software)
					{
						msg2.setTarget(sw);
						msg2.setValue(1+(this.getActiveMenu().equals(sw.getInternalName())?1:0));
						if(sw.okMessage(mob, msg2))
							sw.executeMsg(mob, msg2);
					}
				}
			}
			forceReadersSeeNew();
			if(--nextPowerCycleCtr<=0)
			{
				nextPowerCycleCtr=POWER_RATE;
				setPowerRemaining(this.powerRemaining()-1);
				if(powerRemaining()<=0)
					deactivateSystem();
			}
		}
		return true;
	}