@Override public Trap setTrap(MOB mob, Physical P, int trapBonus, int qualifyingClassLevel, boolean perm) { if (P == null) return null; final Trap T = (Trap) copyOf(); T.setInvoker(mob); P.addEffect(T); CMLib.threads() .startTickDown( T, Tickable.TICKID_TRAP_DESTRUCTION, CMProps.getIntVar(CMProps.Int.TICKSPERMUDDAY) + (2 * getXLEVELLevel(mob))); return T; }
@Override public boolean invoke( MOB mob, List<String> commands, Physical target, boolean auto, int asLevel) { if (!auto) return false; final Physical P = target; if (P == null) return false; if ((P instanceof Item) && (room == null)) return false; if (P.fetchEffect("Falling") == null) { final Falling F = new Falling(); F.setProficiency(proficiency()); F.invoker = null; if (P instanceof MOB) F.invoker = (MOB) P; else F.invoker = CMClass.getMOB("StdMOB"); F.setSavable(false); F.makeLongLasting(); P.addEffect(F); if (!(P instanceof MOB)) CMLib.threads().startTickDown(F, Tickable.TICKID_MOB, 1); P.recoverPhyStats(); } return true; }