public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) { MOB target = this.getTarget(mob, commands, givenTarget); if (target == null) return false; if (!super.invoke(mob, commands, givenTarget, auto, asLevel)) return false; int levelDiff = target.phyStats().level() - (mob.phyStats().level() + (2 * getXLEVELLevel(mob))); if (levelDiff < 0) levelDiff = 0; boolean success = proficiencyCheck(mob, -(levelDiff * 25), auto); Item Bread = null; Item BreadContainer = null; for (int i = 0; i < target.numItems(); i++) { Item I = target.getItem(i); if ((I != null) && (I instanceof Food)) { if (I.container() != null) { Bread = I; BreadContainer = I.container(); } else { Bread = I; BreadContainer = null; break; } } } if ((Bread != null) && (BreadContainer != null)) CMLib.commands().postGet(target, BreadContainer, Bread, false); if (Bread == null) { ShopKeeper SK = CMLib.coffeeShops().getShopKeeper(target); if (SK != null) { for (Iterator<Environmental> i = SK.getShop().getStoreInventory(); i.hasNext(); ) { Environmental E2 = (Environmental) i.next(); if ((E2 != null) && (E2 instanceof Food)) { Bread = (Item) E2.copyOf(); target.addItem(Bread); break; } } } } if ((success) && (Bread != null)) { // 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. CMMsg msg = CMClass.getMsg( mob, target, this, verbalCastCode(mob, target, auto), "^S<S-NAME> " + prayWord(mob) + " for <T-NAMESELF> to provide <S-HIS-HER> daily bread!^?"); CMMsg msg2 = CMClass.getMsg( mob, target, this, CMMsg.MSK_CAST_MALICIOUS_VERBAL | CMMsg.TYP_MIND | (auto ? CMMsg.MASK_ALWAYS : 0), null); if ((mob.location().okMessage(mob, msg)) && (mob.location().okMessage(mob, msg2))) { mob.location().send(mob, msg); mob.location().send(mob, msg2); if ((msg.value() <= 0) && (msg2.value() <= 0)) { msg = CMClass.getMsg( target, mob, Bread, CMMsg.MSG_GIVE, "<S-NAME> gladly donate(s) <O-NAME> to <T-NAMESELF>."); if (mob.location().okMessage(mob, msg)) mob.location().send(mob, msg); } } } else maliciousFizzle( mob, target, auto ? "" : "<S-NAME> " + prayWord(mob) + " for <T-NAMESELF> to provide <S-HIS-HER> daily bread, but nothing happens."); // return whether it worked return success; }
public boolean invoke(MOB mob, Vector commands, Physical givenTarget, boolean auto, int asLevel) { String s = CMParms.combine(commands, 0); StringBuffer buf = new StringBuffer("Seed types known:\n\r"); int material = 0; String foundShortName = null; int col = 0; List<Integer> codes = RawMaterial.CODES.COMPOSE_RESOURCES(RawMaterial.MATERIAL_VEGETATION); for (Integer code : codes) { if (!CMParms.contains(Chant_SummonSeed.NON_SEEDS, code)) { String str = RawMaterial.CODES.NAME(code.intValue()); if (str.toUpperCase().equalsIgnoreCase(s)) { material = code.intValue(); foundShortName = CMStrings.capitalizeAndLower(str); break; } if (col == 4) { buf.append("\n\r"); col = 0; } col++; buf.append(CMStrings.padRight(CMStrings.capitalizeAndLower(str), 15)); } } if (s.equalsIgnoreCase("list")) { mob.tell(buf.toString() + "\n\r\n\r"); return true; } if (s.length() == 0) { mob.tell("Summon what kind of seed? Try LIST as a parameter..."); return false; } if (foundShortName == null) { mob.tell("'" + s + "' is an unknown type of vegetation."); return false; } if (!super.invoke(mob, commands, givenTarget, auto, asLevel)) return false; // now see if it worked boolean success = proficiencyCheck(mob, 0, auto); if (success) { CMMsg msg = CMClass.getMsg( mob, null, this, verbalCastCode(mob, null, auto), auto ? "" : "^S<S-NAME> chant(s) to <S-HIS-HER> hands.^?"); if (mob.location().okMessage(mob, msg)) { mob.location().send(mob, msg); for (int i = 2; i < (2 + (adjustedLevel(mob, asLevel) / 4)); i++) { Item newItem = CMClass.getBasicItem("GenResource"); String name = foundShortName.toLowerCase(); if (name.endsWith("ies")) name = name.substring(0, name.length() - 3) + "y"; if (name.endsWith("s")) name = name.substring(0, name.length() - 1); newItem.setName(CMLib.english().startWithAorAn(name + " seed")); newItem.setDisplayText(newItem.name() + " is here."); newItem.setDescription(""); newItem.setMaterial(material); newItem.basePhyStats().setWeight(0); newItem.recoverPhyStats(); newItem.setMiscText(newItem.text()); mob.addItem(newItem); } mob.location().showHappens(CMMsg.MSG_OK_ACTION, "Some seeds appear!"); mob.location().recoverPhyStats(); } } else return beneficialWordsFizzle( mob, null, "<S-NAME> chant(s) to <S-HIS-HER> hands, but nothing happens."); // return whether it worked return success; }