@Override public boolean invoke( MOB mob, List<String> commands, Physical givenTarget, boolean auto, int asLevel) { if (commands.size() < 1) { mob.tell( L( "You must specify an item to fence, and possibly a ShopKeeper (unless it is implied).")); return false; } commands.add(0, "SELL"); // will be instantly deleted by parseshopkeeper final Environmental shopkeeper = CMLib.english().parseShopkeeper(mob, commands, L("Fence what to whom?")); if (shopkeeper == null) return false; if (commands.size() == 0) { mob.tell(L("Fence what?")); return false; } 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, shopkeeper, this, CMMsg.MSG_SPEAK, auto ? "" : L("<S-NAME> fence(s) stolen loot to <T-NAMESELF>.")); if (mob.location().okMessage(mob, msg)) { mob.location().send(mob, msg); invoker = mob; addBackMap.clear(); mob.addEffect(this); mob.recoverCharStats(); commands.add(0, CMStrings.capitalizeAndLower("SELL")); mob.doCommand(commands, MUDCmdProcessor.METAFLAG_FORCED); commands.add(shopkeeper.name()); mob.delEffect(this); for (Item I : addBackMap.keySet()) { if (mob.isMine(I)) { I.addEffect(addBackMap.get(I)); } } addBackMap.clear(); mob.recoverCharStats(); } } else beneficialWordsFizzle( mob, shopkeeper, L( "<S-NAME> attempt(s) to fence stolen loot to <T-NAMESELF>, but make(s) <T-HIM-HER> too nervous.")); // return whether it worked return success; }
@Override public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) { String cmd = ""; if (commands.size() > 0) cmd = ((String) commands.firstElement()).toUpperCase(); if ((commands.size() < 2) || ((!cmd.equals("BUY") && (!cmd.equals("SELL"))))) { mob.tell( L( "You must specify BUY, SELL, an item, and possibly a ShopKeeper (unless it is implied).")); return false; } final Environmental shopkeeper = CMLib.english() .parseShopkeeper(mob, commands, CMStrings.capitalizeAndLower(cmd) + " what to whom?"); if (shopkeeper == null) return false; if (commands.size() == 0) { mob.tell(L("@x1 what?", CMStrings.capitalizeAndLower(cmd))); return false; } 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, shopkeeper, this, CMMsg.MSG_SPEAK, auto ? "" : L("<S-NAME> haggle(s) with <T-NAMESELF>.")); if (mob.location().okMessage(mob, msg)) { mob.location().send(mob, msg); invoker = mob; mob.addEffect(this); mob.recoverCharStats(); commands.insertElementAt(CMStrings.capitalizeAndLower(cmd), 0); mob.doCommand(commands, Command.METAFLAG_FORCED); commands.addElement(shopkeeper.name()); mob.delEffect(this); mob.recoverCharStats(); } } else beneficialWordsFizzle( mob, shopkeeper, L("<S-NAME> haggle(s) with <T-NAMESELF>, but <S-IS-ARE> unconvincing.")); // return whether it worked return success; }
public boolean execute(MOB mob, Vector commands, int metaFlags) throws java.io.IOException { if (mob.location().numInhabitants() == 1) { mob.tell("You will need to find someone to teach you first."); return false; } if (commands.size() == 1) { mob.tell("Learn what? Enter QUALIFY or TRAIN to see what you can learn."); return false; } commands.removeElementAt(0); String teacherName = ""; if (commands.size() > 1) { teacherName = " " + (String) commands.lastElement(); if (teacherName.length() > 1) { commands.removeElementAt(commands.size() - 1); if ((commands.size() > 1) && (((String) commands.lastElement()).equalsIgnoreCase("FROM"))) commands.removeElementAt(commands.size() - 1); } else teacherName = ""; } String what = CMParms.combine(commands, 0); Vector V = Train.getAllPossibleThingsToTrainFor(); if (V.contains(what.toUpperCase().trim())) { Vector CC = CMParms.makeVector("SAY", "I would like to be trained in " + what); mob.doCommand(CC, metaFlags); if (teacherName.length() > 0) commands.addElement(teacherName.trim()); Command C = CMClass.getCommand("TRAIN"); if (C != null) C.execute(mob, commands, metaFlags); return true; } if (CMClass.findAbility(what + teacherName, mob) != null) { Vector CC = CMParms.makeVector("SAY", "I would like you to teach me " + what); mob.doCommand(CC, metaFlags); return true; } ExpertiseLibrary.ExpertiseDefinition theExpertise = null; Vector V2 = CMLib.expertises().myListableExpertises(mob); for (Enumeration e = V2.elements(); e.hasMoreElements(); ) { ExpertiseLibrary.ExpertiseDefinition def = (ExpertiseLibrary.ExpertiseDefinition) e.nextElement(); if ((def.name.equalsIgnoreCase(what + teacherName) || def.name.equalsIgnoreCase(what)) || (def.name.toLowerCase().startsWith((what + teacherName).toLowerCase()) && (CMath.isRomanNumeral(def.name.substring((what + teacherName).length()).trim()) || CMath.isNumber(def.name.substring((what + teacherName).length()).trim()))) || (def.name.toLowerCase().startsWith((what).toLowerCase()) && (CMath.isRomanNumeral(def.name.substring((what).length()).trim()) || CMath.isNumber(def.name.substring((what).length()).trim())))) { theExpertise = def; break; } } if (theExpertise == null) for (Enumeration e = CMLib.expertises().definitions(); e.hasMoreElements(); ) { ExpertiseLibrary.ExpertiseDefinition def = (ExpertiseLibrary.ExpertiseDefinition) e.nextElement(); if ((def.name.equalsIgnoreCase(what + teacherName) || def.name.equalsIgnoreCase(what))) { theExpertise = def; break; } } if (theExpertise != null) { Vector CC = CMParms.makeVector("SAY", "I would like you to teach me " + theExpertise.name); mob.doCommand(CC, metaFlags); return true; } for (int v = 0; v < V.size(); v++) if (((String) V.elementAt(v)).startsWith(what.toUpperCase().trim())) { Vector CC = CMParms.makeVector("SAY", "I would like to be trained in " + what); mob.doCommand(CC, metaFlags); if (teacherName.length() > 0) commands.addElement(teacherName.trim()); Command C = CMClass.getCommand("TRAIN"); if (C != null) C.execute(mob, commands, metaFlags); return true; } Vector CC = CMParms.makeVector("SAY", "I would like you to teach me " + what + teacherName); mob.doCommand(CC, metaFlags); return false; }