Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
 }
Exemplo n.º 3
0
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();
	}
}