@Override
	public boolean invoke(MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel)
	{
		if((commands.size()==0)||(CMath.s_int(CMParms.combine(commands,0))==0))
		{
			mob.tell(L("You must specify how big of a pile of gold to create."));
			return false;
		}
		final int amount=CMath.s_int(CMParms.combine(commands,0));
		if(!super.invoke(mob,commands,givenTarget,auto,asLevel))
			return false;

		final boolean success=proficiencyCheck(mob,0,auto);

		if(success)
		{
			final CMMsg msg=CMClass.getMsg(mob,null,this,somanticCastCode(mob,null,auto),auto?"":L("^S<S-NAME> wave(s) <S-HIS-HER> arms around dramatically.^?"));
			if(mob.location().okMessage(mob,msg))
			{
				mob.location().send(mob,msg);
				final Item gold=CMClass.getItem("GenItem");
				switch(amount)
				{
				case 1:
					gold.setName(L("a gold coin"));
					gold.setDisplayText(L("a gold coin sits here"));
					break;
				case 2:
					gold.setName(L("two gold coins"));
					gold.setDisplayText(L("two gold coins sit here"));
					break;
				default:
					gold.setName(L("a pile of @x1 gold coins",""+amount));
					gold.setDisplayText(L("@x1 sit here",gold.name()));
					break;
				}
				gold.basePhyStats().setWeight(0);
				gold.basePhyStats().setDisposition(gold.basePhyStats().disposition()|PhyStats.IS_BONUS);
				gold.recoverPhyStats();
				mob.addItem(gold);
				mob.location().show(mob,null,gold,CMMsg.MSG_OK_ACTION,L("Suddenly, <S-NAME> hold(s) <O-NAME>."));
				destroyOnNextTick=false;
				beneficialAffect(mob,gold,asLevel,0);
			}
		}
		else
			beneficialVisualFizzle(mob,null,L("<S-NAME> wave(s) <S-HIS-HER> arms around dramatically, but fizzle(s) the spell."));


		// return whether it worked
		return success;
	}