@Override public boolean mayICraft(final Item I) { if (I == null) return false; if (!super.mayBeCrafted(I)) return false; if (((I.material() & RawMaterial.MATERIAL_MASK) != RawMaterial.MATERIAL_METAL) && ((I.material() & RawMaterial.MATERIAL_MASK) != RawMaterial.MATERIAL_MITHRIL)) return false; if (CMLib.flags().isDeadlyOrMaliciousEffect(I)) return false; if (isANativeItem(I.Name()) && (!(I instanceof Armor)) && (!(I instanceof Weapon))) return true; if (I instanceof Rideable) { final Rideable R = (Rideable) I; final int rideType = R.rideBasis(); switch (rideType) { case Rideable.RIDEABLE_LADDER: case Rideable.RIDEABLE_SLEEP: case Rideable.RIDEABLE_SIT: case Rideable.RIDEABLE_TABLE: return true; default: return false; } } if (I instanceof DoorKey) return true; if (I instanceof Shield) return false; if (I instanceof Weapon) return false; if (I instanceof Light) return true; if (I instanceof Armor) return false; if (I instanceof Container) return true; if ((I instanceof Drink) && (!(I instanceof Potion))) return true; if (I instanceof FalseLimb) return true; if (I.rawProperLocationBitmap() == Wearable.WORN_HELD) return true; return (isANativeItem(I.Name())); }
@Override public boolean mayICraft(final Item I) { if (I == null) return false; if (!super.mayBeCrafted(I)) return false; if ((I.material() & RawMaterial.MATERIAL_MASK) != RawMaterial.MATERIAL_LEATHER) return false; if (CMLib.flags().isDeadlyOrMaliciousEffect(I)) return false; if (I.basePhyStats().level() < 31) return (isANativeItem(I.Name())); if (I instanceof Armor) { final long noWearLocations = Wearable.WORN_LEFT_FINGER | Wearable.WORN_RIGHT_FINGER | Wearable.WORN_EARS; if ((I.rawProperLocationBitmap() & noWearLocations) > 0) return (isANativeItem(I.Name())); return true; } if (I instanceof Rideable) { final Rideable R = (Rideable) I; final int rideType = R.rideBasis(); switch (rideType) { case Rideable.RIDEABLE_SLEEP: case Rideable.RIDEABLE_SIT: case Rideable.RIDEABLE_TABLE: return true; default: return false; } } if (I instanceof Shield) return true; if (I instanceof Weapon) { final Weapon W = (Weapon) I; if (((W instanceof AmmunitionWeapon) && ((AmmunitionWeapon) W).requiresAmmunition()) || (W.weaponClassification() == Weapon.CLASS_FLAILED)) return true; return (isANativeItem(I.Name())); } if (I instanceof Container) return true; if ((I instanceof Drink) && (!(I instanceof Potion))) return true; if (I instanceof FalseLimb) return true; if (I.rawProperLocationBitmap() == Wearable.WORN_HELD) return true; return (isANativeItem(I.Name())); }