mud/lib/secure/sefun/get_livings.c
2020-09-06 05:43:07 -07:00

62 lines
1.8 KiB
C

/* /secure/sefun/get_livings.c
* From the Frontiers LPC Library
* an ugly hack to return an array of living things.
* Give it an integer argument to return interactives only
* Created by Cratylus 23JAN2005
* Version: @(#) getlivings.c 1.1@(#)
*/
varargs object array get_livings(object ob,int foo){
object *stuff,*lstuff,*istuff;
int i;
if(!ob) return ({});
stuff=all_inventory(ob);
lstuff = ({});
for(i=0;i<sizeof(stuff);i++){
if(living(stuff[i]) && !sizeof(lstuff)) lstuff = ({stuff[i]});
if(living(stuff[i]) && sizeof(lstuff) > 0 &&
member_array(stuff[i],lstuff) == -1) lstuff += ({stuff[i]});
}
if(foo == 1){
istuff=({});
for(i=0;i<sizeof(lstuff);i++){
if( interactive(lstuff[i]) && !sizeof(istuff) ) istuff = ({lstuff[i]});
if( interactive(lstuff[i]) && sizeof(istuff)> 0 &&
member_array(lstuff[i],istuff) == -1) istuff+= ({lstuff[i]});
}
if(sizeof(istuff) > 0) return istuff;
if(!sizeof(istuff)) return 0;
}
if(foo == 2){
istuff=({});
for(i=0;i<sizeof(lstuff);i++){
if( !interactive(lstuff[i]) && !sizeof(istuff) ) istuff = ({lstuff[i]});
if( !interactive(lstuff[i]) && sizeof(istuff)> 0 &&
member_array(lstuff[i],istuff) == -1) istuff+= ({lstuff[i]});
}
if(sizeof(istuff) > 0) return istuff;
if(!sizeof(istuff)) return 0;
}
if(sizeof(lstuff) > 0) return lstuff;
if(!sizeof(lstuff)) return 0;
}
varargs object get_random_living(object room, int foo){
object *livings;
if(!foo) foo = 0;
livings = get_livings(room, foo);
foo = random(sizeof(livings));
return livings[foo];
}