@Override
	public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel)
	{
		if(mob.isInCombat())
		{
			mob.tell(_("You can't star gaze while in combat!"));
			return false;
		}
		if((mob.location().domainType()&Room.INDOORS)>0)
		{
			mob.tell(_("You must be outdoors for this chant to work."));
			return false;
		}
		if(mob.location().domainType()==Room.DOMAIN_OUTDOORS_UNDERWATER)
		{
			mob.tell(_("This magic will not work here."));
			return false;
		}
		if(!mob.location().getArea().getClimateObj().canSeeTheStars(mob.location()))
		{
			mob.tell(_("You can't see the stars right now."));
			return false;
		}

		// now see if it worked
		final boolean success=proficiencyCheck(mob,0,auto);
		if(success)
		{
			// it worked, so build a copy of this ability,
			// and add it to the affects list of the
			// affected MOB.  Then tell everyone else
			// what happened.
			invoker=mob;
			final CMMsg msg=CMClass.getMsg(mob,null,this,somanticCastCode(mob,null,auto),_("^S<S-NAME> begin(s) to gaze at the stars...^?"));
			if(mob.location().okMessage(mob,msg))
			{
				mob.location().send(mob,msg);
				beneficialAffect(mob,mob,asLevel,Ability.TICKS_FOREVER);
				helpProficiency(mob, 0);
			}
		}
		else
			return beneficialVisualFizzle(mob,null,_("<S-NAME> chant(s) to begin star gazing, but lose(s) concentration."));

		// return whether it worked
		return success;
	}