@Override
	public void runtimeRegisterEffect(PhysicalAgent affected, String abilityID, String parms, boolean give)
	{
		if(affected==null)
			return;
		runtimeRegisterObject(affected);
		final Vector<Object> V=new Vector<Object>();
		V.addElement(affected);
		Ability A4=affected.fetchEffect(abilityID);
		if(A4!=null)
		{
			V.addElement(A4);
			V.addElement(A4.text());
			if(give)
			{
				A4.makeLongLasting();
				A4.setMiscText(parms);
			}
			else
				affected.delEffect(A4);
		}
		else
		if(!give)
			return;
		else
		{
			A4=CMClass.getAbility(abilityID);
			if(A4==null)
				return;
			V.addElement(A4);
			A4.setMiscText(parms);
			if(affected instanceof MOB)
				A4.startTickDown((MOB)affected,affected,99999);
			else
				A4.startTickDown(null,affected,99999);
			A4.makeLongLasting();
		}
		synchronized(questState)
		{
			questState.addons.addElement(V,Integer.valueOf(questState.preserveState));
		}
	}