示例#1
0
 public static Item buildPlant(MOB mob, Room room) {
   Item newItem = CMClass.getItem("GenItem");
   newItem.setMaterial(RawMaterial.RESOURCE_GREENS);
   switch (CMLib.dice().roll(1, 5, 0)) {
     case 1:
       newItem.setName("some happy flowers");
       newItem.setDisplayText("some happy flowers are growing here.");
       newItem.setDescription("Happy flowers with little red and yellow blooms.");
       break;
     case 2:
       newItem.setName("some happy weeds");
       newItem.setDisplayText("some happy weeds are growing here.");
       newItem.setDescription("Long stalked little plants with tiny bulbs on top.");
       break;
     case 3:
       newItem.setName("a pretty fern");
       newItem.setDisplayText("a pretty fern is growing here.");
       newItem.setDescription("Like a tiny bush, this dark green plant is lovely.");
       break;
     case 4:
       newItem.setName("a patch of sunflowers");
       newItem.setDisplayText("a patch of sunflowers is growing here.");
       newItem.setDescription("Happy flowers with little yellow blooms.");
       break;
     case 5:
       newItem.setName("a patch of bluebonnets");
       newItem.setDisplayText("a patch of bluebonnets is growing here.");
       newItem.setDescription("Happy flowers with little blue and purple blooms.");
       break;
   }
   Chant_SummonPlants newChant = new Chant_SummonPlants();
   newItem.basePhyStats().setLevel(10 + (10 * newChant.getX1Level(mob)));
   newItem.basePhyStats().setWeight(1);
   newItem.setSecretIdentity(mob.Name());
   newItem.setMiscText(newItem.text());
   room.addItem(newItem);
   newItem.setExpirationDate(0);
   room.showHappens(CMMsg.MSG_OK_ACTION, "Suddenly, " + newItem.name() + " sprout(s) up here.");
   newChant.PlantsLocation = room;
   newChant.littlePlants = newItem;
   if (CMLib.law().doesOwnThisProperty(mob, room)) {
     newChant.setInvoker(mob);
     newChant.setMiscText(mob.Name());
     newItem.addNonUninvokableEffect(newChant);
   } else newChant.beneficialAffect(mob, newItem, 0, (newChant.adjustedLevel(mob, 0) * 240) + 450);
   room.recoverPhyStats();
   return newItem;
 }
示例#2
0
 @Override
 public void unInvoke() {
   if ((canBeUninvoked()) && (plantsLocationR != null) && (oldMaterial >= 0))
     plantsLocationR.setResource(oldMaterial);
   super.unInvoke();
 }
示例#3
0
  public boolean invoke(
      MOB mob, Vector commands, Environmental givenTarget, boolean auto, int asLevel) {

    if (commands.size() < 1) {
      mob.tell("Create overgrowth where?");
      return false;
    }

    String areaName = CMParms.combine(commands, 0).trim().toUpperCase();
    Room anyRoom = null;
    Room newRoom = null;
    try {
      Vector rooms = CMLib.map().findRooms(CMLib.map().rooms(), mob, areaName, true, 10);
      for (Enumeration r = rooms.elements(); r.hasMoreElements(); ) {
        Room R = (Room) r.nextElement();
        anyRoom = R;
        if ((R.domainType() & Room.INDOORS) == 0) {
          newRoom = R;
          break;
        }
      }
    } catch (NoSuchElementException e) {
    }

    if (newRoom == null) {
      if (anyRoom == null)
        mob.tell("You don't know of an place called '" + CMParms.combine(commands, 0) + "'.");
      else mob.tell("There IS such a place, but its not outdoors, so your magic would fail.");
      return false;
    }

    if (!super.invoke(mob, commands, givenTarget, auto, asLevel)) return false;

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

    if (success) {
      CMMsg msg =
          CMClass.getMsg(
              mob,
              null,
              this,
              verbalCastCode(mob, null, auto),
              "^S<S-NAME> chant(s) about a far away place.^?");
      if (mob.location().okMessage(mob, msg)) {
        mob.location().send(mob, msg);
        Item newItem = null;
        if (newRoom.domainType() == Room.DOMAIN_INDOORS_CAVE)
          newItem = Chant_SummonFungus.buildFungus(mob, newRoom);
        else if ((newRoom.domainType() == Room.DOMAIN_OUTDOORS_UNDERWATER)
            || (newRoom.domainType() == Room.DOMAIN_OUTDOORS_WATERSURFACE))
          newItem = Chant_SummonSeaweed.buildSeaweed(mob, newRoom);
        else if ((newRoom.domainType() == Room.DOMAIN_INDOORS_STONE)
            || (newRoom.domainType() == Room.DOMAIN_INDOORS_WOOD))
          newItem = Chant_SummonHouseplant.buildHouseplant(mob, newRoom);
        else newItem = Chant_SummonPlants.buildPlant(mob, newRoom);
        mob.tell("You feel a distant connection with " + newItem.name());
      }
    } else
      beneficialWordsFizzle(
          mob, null, "<S-NAME> chant(s) about a far away place, but the magic fades.");

    // return whether it worked
    return success;
  }