JSBool js_proj_melee_spawn_from_position_func(JSContext *cx,JSObject *j_obj,uintN argc,jsval *argv,jsval *rval) { d3pnt pt; obj_type *obj; weapon_type *weap; proj_type *proj; proj_setup_type *proj_setup; proj=proj_get_attach(); if (proj==NULL) return(JS_TRUE); proj_setup=proj_setups_find_uid(proj->proj_setup_uid); if (proj_setup==NULL) return(JS_TRUE); obj=object_find_uid(proj_setup->obj_uid); weap=weapon_find_uid(proj_setup->weap_uid); pt.x=JSVAL_TO_INT(argv[0]); pt.z=JSVAL_TO_INT(argv[1]); pt.y=JSVAL_TO_INT(argv[2]); melee_add(obj,weap,&pt,&proj->ang,&proj_setup->melee,-1); return(JS_TRUE); }
JSValueRef js_proj_hit_get_startTick(JSContextRef cx,JSObjectRef j_obj,JSStringRef name,JSValueRef *exception) { proj_type *proj; proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); return(script_int_to_value(cx,proj->start_tick)); }
JSValueRef js_proj_setting_get_parentObjectId(JSContextRef cx,JSObjectRef j_obj,JSStringRef name,JSValueRef *exception) { proj_type *proj; proj=proj_get_attach(j_obj); if (proj==NULL) return(script_int_to_value(cx,-1)); return(script_int_to_value(cx,proj->obj_idx)); }
JSValueRef js_proj_hit_get_isPlayer(JSContextRef cx,JSObjectRef j_obj,JSStringRef name,JSValueRef *exception) { proj_type *proj; proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); return(script_bool_to_value(cx,proj->contact.obj_idx==server.player_obj_idx)); }
JSValueRef js_proj_hit_get_reflectVector(JSContextRef cx,JSObjectRef j_obj,JSStringRef name,JSValueRef *exception) { d3vct vct; proj_type *proj; proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); projectile_reflect_vector(proj,&vct); return(script_vector_to_value(cx,&vct)); }
JSBool js_proj_motion_angle_get_z(JSContext *cx,JSObject *j_obj,jsval id,jsval *vp) { proj_type *proj; proj=proj_get_attach(); if (proj==NULL) return(JS_TRUE); *vp=script_float_to_value(proj->motion.ang.z); return(JS_TRUE); }
JSValueRef js_proj_setting_get_parentTeam(JSContextRef cx,JSObjectRef j_obj,JSStringRef name,JSValueRef *exception) { proj_type *proj; obj_type *obj; proj=proj_get_attach(j_obj); if (proj==NULL) return(script_int_to_value(cx,-1)); obj=server.obj_list.objs[proj->obj_idx]; if (obj==NULL) return(script_int_to_value(cx,-1)); return(script_int_to_value(cx,obj->team_idx)); }
JSValueRef js_proj_action_destroy_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { proj_type *proj; if (!script_check_param_count(cx,func,argc,0,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); proj->script_dispose=TRUE; return(script_null_to_value(cx)); }
JSValueRef js_proj_action_reflect_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { proj_type *proj; if (!script_check_param_count(cx,func,argc,0,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); projectile_reflect(proj,FALSE); return(script_null_to_value(cx)); }
JSValueRef js_proj_action_rotate_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { proj_type *proj; if (!script_check_param_count(cx,func,argc,1,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); proj->ang.y=proj->motion.ang.y=script_value_to_float(cx,argv[0]); return(script_null_to_value(cx)); }
JSValueRef js_proj_hit_get_materialName(JSContextRef cx,JSObjectRef j_obj,JSStringRef name,JSValueRef *exception) { int hit_type; char hit_name[name_str_len]; proj_type *proj; proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); hit_type=js_get_proj_hit_type(proj); js_get_proj_hit_material_name(proj,hit_type,hit_name); return(script_string_to_value(cx,hit_name)); }
JSValueRef js_proj_action_bounce_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { float min_ymove,reduce; proj_type *proj; if (!script_check_param_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); min_ymove=script_value_to_float(cx,argv[0]); reduce=script_value_to_float(cx,argv[1]); projectile_bounce(proj,min_ymove,reduce,FALSE); return(script_null_to_value(cx)); }
JSValueRef js_proj_action_seek_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { proj_type *proj; obj_type *to_obj; if (!script_check_param_count(cx,func,argc,3,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); to_obj=script_find_obj_from_uid_arg(cx,argv[0],exception); if (to_obj==NULL) return(script_null_to_value(cx)); projectile_seek(proj,to_obj,script_value_to_float(cx,argv[1]),script_value_to_float(cx,argv[2])); return(script_null_to_value(cx)); }
JSValueRef js_proj_setting_get_object_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { int obj_idx; proj_type *proj; obj_type *obj; script_type *script; if (!script_check_param_count(cx,func,argc,0,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); obj_idx=proj->obj_idx; if (obj_idx==-1) return(script_null_to_value(cx)); obj=server.obj_list.objs[obj_idx]; script=js.script_list.scripts[obj->script_idx]; return((JSValueRef)script->obj); }
JSBool js_proj_melee_spawn_from_projectile_bone_func(JSContext *cx,JSObject *j_obj,uintN argc,jsval *argv,jsval *rval) { char err_str[256]; obj_type *obj; weapon_type *weap; proj_type *proj; proj_setup_type *proj_setup; proj=proj_get_attach(); if (proj==NULL) return(JS_TRUE); proj_setup=proj_setups_find_uid(proj->proj_setup_uid); if (proj_setup==NULL) return(JS_TRUE); obj=object_find_uid(proj_setup->obj_uid); weap=weapon_find_uid(proj_setup->weap_uid); if (!melee_script_spawn_projectile_model(js.time.current_tick,obj,weap,proj_setup,proj,err_str)) { JS_ReportError(js.cx,err_str); return(JS_FALSE); } return(JS_TRUE); }
JSValueRef js_proj_action_seek_target_func(JSContextRef cx,JSObjectRef func,JSObjectRef j_obj,size_t argc,const JSValueRef argv[],JSValueRef *exception) { obj_type *to_obj; weapon_type *weap; proj_setup_type *proj_setup; proj_type *proj; if (!script_check_param_count(cx,func,argc,2,exception)) return(script_null_to_value(cx)); proj=proj_get_attach(j_obj); if (proj==NULL) return(script_null_to_value(cx)); weap=weapon_get_attach(j_obj); proj_setup=weap->proj_setup_list.proj_setups[proj->proj_setup_idx]; if (proj_setup==NULL) return(script_null_to_value(cx)); to_obj=server.obj_list.objs[weap->target.obj_idx]; if (to_obj==NULL) return(script_null_to_value(cx)); projectile_seek(proj,to_obj,script_value_to_float(cx,argv[0]),script_value_to_float(cx,argv[1])); return(script_null_to_value(cx)); }