#include "config.h"
#include "object.h"
#include "instr.h"
#include "construct.h"
#include "compile.h"
#include "interp.h"
#include "operproto.h"
#include "interface.h"
#include "dbhandle.h"
#include "globals.h"
int s_set_interactive(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=0) return 1;
obj->flags|=INTERACTIVE;
tmp.type=INTEGER;
tmp.value.integer=0;
push(&tmp,rts);
return 0;
}
int s_interactive(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (tmp.value.objptr->flags & INTERACTIVE) {
tmp.type=INTEGER;
tmp.value.integer=1;
} else {
tmp.type=INTEGER;
tmp.value.integer=0;
}
push(&tmp,rts);
return 0;
}
int s_set_priv(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (!(obj->flags & PRIV)) {
tmp.type=INTEGER;
tmp.value.integer=1;
push(&tmp,rts);
return 0;
}
tmp.value.objptr->flags|=PRIV;
tmp.type=INTEGER;
tmp.value.integer=0;
push(&tmp,rts);
return 0;
}
int s_priv(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (tmp.value.objptr->flags & PRIV) {
tmp.type=INTEGER;
tmp.value.integer=1;
} else {
tmp.type=INTEGER;
tmp.value.integer=0;
}
push(&tmp,rts);
return 0;
}
int s_in_editor(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (tmp.value.objptr->flags & IN_EDITOR) {
tmp.type=INTEGER;
tmp.value.integer=1;
} else {
tmp.type=INTEGER;
tmp.value.integer=0;
}
push(&tmp,rts);
return 0;
}
int s_connected(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (tmp.value.objptr->flags & CONNECTED) {
tmp.type=INTEGER;
tmp.value.integer=1;
} else {
tmp.type=INTEGER;
tmp.value.integer=0;
}
push(&tmp,rts);
return 0;
}
int s_prototype(struct object *caller, struct object *obj, struct object
*player, struct var_stack **rts) {
struct var tmp;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=NUM_ARGS) {
clear_var(&tmp);
return 1;
}
if (tmp.value.num!=1) return 1;
if (pop(&tmp,rts,obj)) return 1;
if (tmp.type!=OBJECT) {
clear_var(&tmp);
return 1;
}
if (tmp.value.objptr->flags & PROTOTYPE) {
tmp.type=INTEGER;
tmp.value.integer=1;
} else {
tmp.type=INTEGER;
tmp.value.integer=0;
}
push(&tmp,rts);
return 0;
}