62 lines
1.8 KiB
C
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];
|
|
}
|
|
|
|
|
|
|
|
|
|
|