int disarm() { int percy = random(100); percy += (3*(attkr->query_level() - TP->query_level())); switch(percy) { case -1000..10 : drop(); break; case 11..40 : unwield(); break; default : write("You fail to disarm your foe.\n"); break; } TP->set("power_delay", 5); return 1; }
int drop() { if (weap->query("dest_at_die") || weap->query("prevent_drop") || weap->query("prevent_get")){ unwield(); return 1; } weap->move(environment(attkr)); write("Your disarm forces your enemy to drop their weapon!\n"); say(TPN+" disarms "+POSS+" foe!\n"); TP->set("power_delay", 5); return 1; }
void vanish(object *obj, short rm, object *pack) { if (obj->quantity > 1) { obj->quantity--; } else { if (obj->in_use_flags & BEING_WIELDED) { unwield(obj); } else if (obj->in_use_flags & BEING_WORN) { unwear(obj); } else if (obj->in_use_flags & ON_EITHER_HAND) { un_put_on(obj); } take_from_pack(obj, pack); free_object(obj); } if (rm) { reg_move(); } }