void swat_crossing_people(void) { OBJECT *odog,*owagon; void *dogani,*wagonani; current_proc->pdata.p_otherguy=current_proc->pa8; process_sleep(0x50); /* create dog */ get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND); // get ptr to anim table dogani=current_proc->pa9; current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9)); // get ptr to frame gso_dmawnz(odog,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0); alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,odog); odog->oxpos.u.intpos=worldtlx.u.intpos-SCX(0x30); odog->oxvel.pos=SCX(0x30000); odog->oypos.u.intpos=ground_y-SCY(0x20); odog->ozval=100; insert_object(odog,&objlst); /* create wagon */ get_char_ani(ANIM_TABLE2,ANIM_F3_FRIEND); // get ptr to anim table wagonani=current_proc->pa9; current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9)); // get ptr to frame gso_dmawnz(owagon,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0); alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,owagon); match_ani_points(odog,owagon); // match to two multi_adjust_xy(owagon,-66,-25); // lineup wagon with dog owagon->oxvel.pos=SCX(0x30000); // set speed to match dog owagon->ozval=200; insert_object(owagon,&objlst); /* cross */ do { process_sleep(3); /* update dog */ current_proc->pa8=odog; current_proc->pa9=dogani; frame_a9(odog); dogani=current_proc->pa9; /* update wagon */ current_proc->pa8=owagon; current_proc->pa9=wagonani; frame_a9(owagon); wagonani=current_proc->pa9; } while (abs(worldtlx.u.intpos-odog->oxpos.u.intpos)<700); delobjp(odog); delobjp(owagon); process_suicide(); }
void create_baiters(void) { BAITPOS *pa10; OBJECT *obj; pa10=baiter_pos_list; /* cb_1 */ do { if (pa10->b_ypos<0) return; gso_dmawnz_ns(obj,(ADDRESS)pa10->b_frame,hidden_anims,0); alloc_cache(pa10->b_frame,&hidden_anims,obj); (short)obj->ochar=pa10->b_xpos; (short)obj->oid=pa10->b_ypos; set_xy_coordinates(obj,pa10->b_xpos+wave_x_position,pa10->b_ypos+wave_y_position); insert_object(obj,&objlst); CREATE(PID_PONG_SPEED,baiter_enemy); pa10++; } while(1); }
void ce4b(void) { OBJECT *obj; XYTYPE temp; gso_dmawnz(obj,(ADDRESS)&expld1,hidden_anims,0); alloc_cache(&expld1,&hidden_anims,obj); temp.yx=(LONG)current_proc->pa9; set_xy_coordinates(obj,temp.u.xpos+2,temp.u.ypos+5); insert_object(obj,&objlst); process_sleep(2); set_xy_coordinates(obj,temp.u.xpos+2,temp.u.ypos+5); animate(SINGLE_ANI,&expld2,obj->oflags); process_sleep(2); animate(SINGLE_ANI,&expld3,obj->oflags); process_sleep(2); animate(SINGLE_ANI,&expld4,obj->oflags); process_sleep(2); animate(SINGLE_ANI,&expld5,obj->oflags); process_sleep(2); delobj(obj); process_suicide(); }
void rhb3(void) { insert_object(current_proc->pa8,&objlst); current_proc->pa9=a_decap_spray; framew(3); blood_death(current_proc->pa8); }
/****************************************************************************** Function: void face_punch_blood(void) By: David Schwartz Date: Mar 1995 Parameters: current_proc->a11 - dude to bloody Returns: None Description: hit in the face blood ******************************************************************************/ void face_punch_blood(void) { current_proc->a11=(ADDRESS)current_proc->pa8; if (random()>0) { (long)current_proc->a0=1; // xvel range (long)current_proc->a1=SCX(0x30000); // xvel min (long)current_proc->a2=SCY(0x20000); // yvel range (long)current_proc->a3=SCY(0x20000); // yvel min current_proc->a4=SCY(0x0010)<<16|(-SCX(0x10)); current_proc->a5=0x00040002; spawn_drip_neg; } /* face3 */ get_tg_blood; lineup_1pwm(current_proc->pa8,(OBJECT *)current_proc->a11); flip_single(current_proc->pa8); current_proc->a0=((OBJECT*)current_proc->a11)->ochar; if (current_proc->a0==FT_JAX) multi_adjust_xy(current_proc->pa8,SCX(0xc),SCY(0x15)); else multi_adjust_xy(current_proc->pa8,SCX(0x8),SCY(0x10)); (current_proc->pa8)->oyvel.pos=-SCY(0x8000); set_proj_vel(current_proc->pa8,SCX(0x10000),-1); insert_object(current_proc->pa8,&objlst); current_proc->pa9=a_face_blood; framew(3); blood_death(current_proc->pa8); }
void Model_Impl::Load(CL_DomDocument &doc, const char *geometry_name, std::vector<CL_Collada_Image> &library_images) { CL_Collada object; object = CL_Collada(doc, library_images); insert_object(object, geometry_name, library_images, CL_Angle(89.53f, cl_degrees)); update_vbo = true; }
void sp1m1(OBJECT *pa0) { set_xy_coordinates(current_proc->pa8,pa0->oxpos.u.intpos+SCX(4),pa0->oypos.u.intpos); insert_object(current_proc->pa8,&objlst); (current_proc->pa8)->oyvel.u.intpos=-5; missile_count++; return; }
void tdrip2(void) { insert_object(current_proc->pa8,&objlst); current_proc->a0=(current_proc->pdata.p_store6>>16) & 0xffff; current_proc->pa9=drip_ani_table[current_proc->pdata.p_store6 & 0xffff]; current_proc->a10=SCY(0x4000); drip_fall_2(); }
NTSTATUS SERVICECALL NtCreateDirectoryObject(OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes) { POBJECT_DIRECTORY Directory; HANDLE hDirectory; OBJECT_ATTRIBUTES obj_attr; UNICODE_STRING obj_name; KPROCESSOR_MODE PreviousMode = KernelMode; NTSTATUS Status = STATUS_SUCCESS; if ((ULONG)ObjectAttributes < TASK_SIZE) { if ((copy_from_user(&obj_attr, ObjectAttributes, sizeof(OBJECT_ATTRIBUTES)))) return STATUS_NO_MEMORY; if ((copy_from_user(&obj_name, ObjectAttributes->ObjectName, sizeof(UNICODE_STRING)))) return STATUS_NO_MEMORY; } else { obj_attr = *ObjectAttributes; obj_name = *ObjectAttributes->ObjectName; } obj_attr.ObjectName = &obj_name; *DirectoryHandle = NULL; Status = create_object(PreviousMode, dir_object_type, &obj_attr, PreviousMode, NULL, sizeof(OBJECT_DIRECTORY), 0, 0, (PVOID*)&Directory); if (NT_SUCCESS(Status)) { Status = insert_object((PVOID)Directory, NULL, DesiredAccess, 0, NULL, &hDirectory); deref_object(Directory); if (NT_SUCCESS(Status)) { if ((ULONG)DirectoryHandle < TASK_SIZE) { if (copy_to_user(DirectoryHandle, &hDirectory, sizeof(HANDLE))) return STATUS_NO_MEMORY; } else *DirectoryHandle = hDirectory; } } return Status; } /* end NtCreateDirectoryObject */
void create_player_1_ship(void) { OBJECT *obj; gso_dmawnz(obj,(ADDRESS)&ship1,hidden_anims,0); alloc_cache(&ship1,&hidden_anims,obj); set_xy_coordinates(obj,SCX(0x50),SCY(0xe0)); player_1_ship=obj; insert_object(obj,&objlst); return; }
void drip_entry(void) { (current_proc->pa8)->oyvel.pos=-(randu(SCY(0x40000))+SCY(0x30000)); flip_single(current_proc->pa8); insert_object(current_proc->pa8,&objlst); current_proc->a0=8; current_proc->pa9=a_drip; (long)current_proc->a10=SCY(0x6000); blood_fall_splat_12_die(); }
OBJECT *make_a_spike(void) { OBJECT *obj; gso_dmawnz(obj,(ADDRESS)EJBSPIKE,bell_anims,0); alloc_cache((OIMGTBL *)EJBSPIKE,&bell_anims,obj); obj->oxpos.u.intpos=(short)current_proc->a3; obj->oypos.u.intpos=SCY(0xa80)+12; (short)current_proc->a3+=SCX(15); // spike spacing insert_object(obj,&objlst); return(obj); }
OBJECT *makestar(void) { OBJECT *obj; gso_dmawnz(obj,(ADDRESS)&star,hidden_anims,0); alloc_cache(&star,&hidden_anims,obj); obj->ozval=-100; obj->oxpos.u.intpos=randu(SCX(400))-1; obj->oypos.u.intpos=randu(SCY(254))-1; insert_object(obj,&objlst); obj->oyvel.pos=randu(SCY(0x20000))+SCY(0x20000); return(obj); }
void hatb2(void) { (current_proc->pa8)->oyvel.pos=srandarc(SCY(0x10000)); set_proj_vel(current_proc->pa8,SCX(0x10000)+randu(SCX(0x20000)),-1); flip_single(current_proc->pa8); insert_object(current_proc->pa8,&objlst); current_proc->pa9=a_bigger; framew(6); blood_death(current_proc->pa8); }
void wall_dragon_proc(void) { current_proc->a10=(ADDRESS)current_proc->pa8; //current_proc->pa9=a_wall_dragon; get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND); gmo_proc((current_proc->pa8)->oheap); lineup_a0_onto_a1(current_proc->pa8,(OBJECT *)current_proc->a10); multi_adjust_xy(current_proc->pa8,0,-SCY(0x30)); insert_object(current_proc->pa8,&objlst); mframew_5; process_sleep(0x20); mframew_4; process_suicide(); }
/****************************************************************************** Function: void temple_calla(void) By: David Schwartz Date: Feb 1995 Parameters: None Returns: None Description: setup the bridge background ******************************************************************************/ void temple_calla(void) { OBJECT *obj; alloc_vram_perm_bg_list((ADDRESS *)temple_perm_list,&temple_anims); current_proc->a10=10; (long)current_proc->a11=-1; do { /* candd */ gso_dmawnz(obj,(ADDRESS)KANDLE1,temple_anims,0); obj->oxpos.u.intpos=(short)current_proc->a11+8+2; obj->oypos.u.intpos=0xb2+6; //+36; alloc_cache(KANDLE1,temple_anims,obj); insert_object(obj,&baklst6); /* flame */ (OBJECT *)current_proc->pa9=obj; gso_dmawnz(obj,(ADDRESS)wik1,temple_anims,0); alloc_cache(wik1,temple_anims,current_proc->pa8); insert_object(current_proc->pa8,&baklst6); obj->oxpos.u.intpos=((OBJECT *)current_proc->pa9)->oxpos.u.intpos+SCX(7); obj->oypos.u.intpos=((OBJECT *)current_proc->pa9)->oypos.u.intpos-SCY(12); CREATE(PID_BANI,candle_flame); (long)current_proc->a11+=SCX(0x96); } while(--current_proc->a10>0); create_dumb_animators(tony_candle_table,&temple_anims); return; }
/****************************************************************************** Function: void face_blood(void) By: David Schwartz Date: Mar 1995 Parameters: current_proc->a11 - dude to bloody Returns: None Description: hit in the face hard blood ******************************************************************************/ void face_blood(void) { get_jt_blood; lineup_with_a11_offset(SCX(0x0000),-SCY(0x0010)); insert_object(current_proc->pa8,&objlst); (current_proc->pa8)->oyvel.pos=-randu(SCY(0x12000)); set_proj_vel(current_proc->pa8,-(SCX(0x30000)+randu(SCX(0x20000))),-1); current_proc->pa9=a_bigger; framew(6); blood_death(current_proc->pa8); }
void dinger_proc(void) { ochar_sound(0x21); current_proc->a10=(ADDRESS)current_proc->pa8; //current_proc->pa9=a_dinger; //gmo_proc(&friendship_anims); get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND); gmo_proc((current_proc->pa8)->oheap); lineup_a0_onto_a1(current_proc->pa8,(OBJECT *)current_proc->a10); insert_object(current_proc->pa8,&objlst); mframew_4; process_sleep(0x40); mframew_4; process_suicide(); }
void flr2(OIMGTBL *pa5) { OBJECT *obj; gso_dmawnz(obj,(ADDRESS)pa5,bell_anims,0); alloc_cache(pa5,&bell_anims,obj); if (current_proc->a3) flip_single(obj); /* flr3 */ obj->oypos.u.intpos=(short)current_proc->a7; obj->oxpos.u.intpos=(short)current_proc->a6; obj->ozval=1000; (short)current_proc->a6+=obj->osize.u.xpos; insert_object(obj,&baklst8); return; }
void f_indian(void) { OBJECT *obj,*ta8; void *animframe; //current_proc->pa9=a_ind_friend; get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND); other_ochar_sound(4,FT_ST); mframew_5; process_sleep(0x20); ta8=current_proc->pa8; current_proc->a10=(ADDRESS)current_proc->pa8; current_proc->a0=(ADDRESS)current_proc->pa9; animframe=(void*)get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND); // get mk2game frame ptr current_proc->pa9=(void*)current_proc->a0; animframe=(void*)COMPUTE_ADDR(ta8->oheap,GET_LONG(animframe)); gso_dmawnz(obj,(ADDRESS)animframe,ta8->oheap,0); alloc_cache((OIMGTBL*)animframe,ta8->oheap,obj); lineup_1pwm(obj,(OBJECT *)current_proc->a10); multi_adjust_xy(obj,-(SCX(0x70)),-SCY(0x100)); insert_object(obj,&objlst); gravity_ani_ysize(SCY(0x20000),SCY(0x6000)); shake_n_sound(); if ( random()<0 ) { p7_centered(txt_raiden1,160,SCY(0xf0)-14); p7_centered(txt_raiden2,160,SCY(0xf0)); } else { p7_centered(txt_kano,160,SCY(0xf0)); } current_proc->pa8=ta8; process_sleep(0x60); death_blow_complete(); wait_forever(); }
void boomb1(void) { (OBJECT *)current_proc->a11=current_proc->pa8; get_jt_blood; a11_blood_lineup(SCX(0x0),SCY(0x20)); (current_proc->pa8)->oyvel.pos=srandarc(SCY(0x10000)); set_proj_vel(current_proc->pa8,SCX(0x10000)+randu(SCX(0x20000)),-1); flip_single(current_proc->pa8); insert_object(current_proc->pa8,&objlst); current_proc->pa9=a_bigger; framew(6); blood_death(current_proc->pa8); }
void start_enemy_missile(void) { OBJECT *obj=current_proc->pa8; if ( missile_count<(BOXPRIM_SIZE-7) ) { make_solid_object(0x001c,3,6); set_xy_coordinates(current_proc->pa8,obj->oxpos.u.intpos+SCX(4),obj->oypos.u.intpos); insert_object(current_proc->pa8,&objlst); (current_proc->pa8)->oyvel.u.intpos=2; CREATE(PID_PONG_SPEED,watch_enemy_missile); current_proc->pa8=obj; missile_count++; } return; }
void boomerang_drip(void) { (OBJECT *)current_proc->a11=current_proc->pa8; get_jt_blood; a11_blood_lineup(SCX(0x0),SCY(0x50)); set_proj_vel(current_proc->pa8,SCX(0x20000)+randu(SCX(0x60000)),-1); (current_proc->pa8)->oyvel.pos=-(randu(SCY(0x40000))+SCY(0x30000)); flip_single(current_proc->pa8); insert_object(current_proc->pa8,&objlst); current_proc->a0=8; current_proc->pa9=a_drip; (long)current_proc->a10=SCY(0x6000); blood_fall_splat_12_die(); }
void hat_proc(void) { OBJECT *obj; current_proc->a10=(ADDRESS)current_proc->pa8; //gso_dmawnz(obj,(ADDRESS)&FETCHHAT2,friendship_anims,0); //alloc_cache(&FETCHHAT2,&friendship_anims,obj); get_char_ani(ANIM_TABLE2,ANIM_F3_FRIEND); // get ptr to anim table current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9)); // get ptr to frame gso_dmawnz(obj,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0); alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,obj); lineup_a0_onto_a1(obj,(OBJECT *)current_proc->a10); multi_adjust_xy(obj,SCX(0x50),SCY(0x10)); insert_object(obj,&objlst); obj->oyvel.pos=-SCY(0x40000); set_proj_vel(obj,SCX(0xa0000),2); process_suicide(); }
obj_rnum add_object(struct obj_data *newobj, obj_vnum ovnum) { int found = NOTHING; zone_rnum rznum = real_zone_by_thing(ovnum); /* * Write object to internal tables. */ if ((newobj->item_number = real_object(ovnum)) != NOTHING) { copy_object(&obj_proto[newobj->item_number], newobj); update_objects(&obj_proto[newobj->item_number]); add_to_save_list(zone_table[rznum].number, SL_OBJ); return newobj->item_number; } found = insert_object(newobj, ovnum); adjust_objects(found); add_to_save_list(zone_table[rznum].number, SL_OBJ); return (found); }
void cute_lil_doggy(void) { OBJECT *obj; current_proc->a10=(ADDRESS)current_proc->pa8; get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND); // get ptr to anim table current_proc->pa9=COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9)); // get ptr to frame gso_dmawnz(obj,(ADDRESS)current_proc->pa9,(current_proc->pa8)->oheap,0); alloc_cache((OIMGTBL *)current_proc->pa9,(current_proc->pa8)->oheap,obj); if (((OBJECT *)current_proc->a10)->oflags & M_FLIPH) { obj->oxpos.u.intpos=SCRRGT+SCX(0x30)+SCX(0x30)+worldtlx.u.intpos-SCX(0x30); obj->oxvel.pos=-SCX(0x60000); flip_single(obj); } else { obj->oxpos.u.intpos=worldtlx.u.intpos-SCX(0x30); obj->oxvel.pos=SCX(0x60000); } /* cute3 */ obj->oypos.u.intpos=ground_y-SCY(0x20); obj->ozval=100; insert_object(obj,&objlst); //current_proc->pa9=a_dog; get_char_ani(ANIM_TABLE2,ANIM_F2_FRIEND); init_anirate(3); do { next_anirate(); process_sleep(1); } while (abs(worldtlx.u.intpos-obj->oxpos.u.intpos)<700); stop_a8(obj); wait_forever(); }
void pop_up_my_toy(void) { ADDRESS animframe; OBJECT *obj; tsound(0x92); shake_a11(6,6); takeover_him(r_scared_of_monkey); animframe=(ADDRESS)COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9)); gso_dmawnz(obj,(ADDRESS)animframe,(current_proc->pa8)->oheap,0); alloc_cache((OIMGTBL *)animframe,(current_proc->pa8)->oheap,obj); obj->ozval=100; lineup_1pwm(obj,(OBJECT*)current_proc->a11); insert_object(obj,&objlst); framew(4); process_sleep(0x30); death_blow_complete(); wait_forever(); }
void sonya_flower_proc(void) { ADDRESS animframe; OBJECT *obj; process_sleep(20+randu(10)); get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND); animframe=(ADDRESS)COMPUTE_ADDR((current_proc->pa8)->oheap,GET_LONG(current_proc->pa9)); gso_dmawnz_ns(obj,(ADDRESS)animframe,(current_proc->pa8)->oheap,0); alloc_cache((OIMGTBL *)animframe,(current_proc->pa8)->oheap,obj); obj->oxpos.u.intpos=randu(SCRRGT); ground_a8(); obj->oypos.u.intpos+=randu(SCY(5)); a8_front_plus_1(obj); insert_object(obj,&objlst); get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND); framew(3+randu(6)); process_suicide(); }
//extern OIMGTBL *ostrich1; void f_shang(void) { OBJECT *obj=current_proc->pa8; void *animframe; CREATE(PID_BANI,end_friend_proc); tsound(0x8c); create_fx(FX_INVISO_POOF); process_sleep(8); set_inviso(current_proc->pa8); current_proc->a10=(ADDRESS)current_proc->pa8; get_char_ani(ANIM_TABLE2,ANIM_F1_FRIEND); animframe=(void*)COMPUTE_ADDR(obj->oheap,GET_LONG(current_proc->pa9)); gso_dmawnz(obj,(ADDRESS)animframe,obj->oheap,0); alloc_cache((OIMGTBL *)animframe,obj->oheap,obj); obj->oxpos.u.intpos=((OBJECT*)current_proc->a10)->oxpos.u.intpos; obj->oypos.u.intpos=ground_y-SCY(0x20); insert_object(obj,&objlst); process_sleep(0x40); bounce(); bounce(); obj->oxvel.pos=SCX(0x30000); /* shang4 */ current_proc->a10=5; do { bounce(); } while(--current_proc->a10>0 ); stop_a8(current_proc->pa8); wait_forever(); }
CURRINT_REPOSITORY_TEMPL_ Guard<Obj,wait_m>& RepositoryBase<CURRINT_REPOSITORY_T_> // ::create_object (const Par& param) { Guard<Obj,wait_m>* res = nullptr; Obj* obj = 0; // <NB> cinfo.objectId is empty at the first call to // param ObjectCreationInfo cinfo; cinfo.repository = this; { RLOCK (objectsM); const ObjId objId = allocate_new_object_id_internal (cinfo, param); toString (objId, cinfo.objectId); // dynamic cast for use with inherited parameters // <NB> this must be called inside the lock to allow // query repo data structures from create_derivation obj = dynamic_cast<Obj*> (param.create_derivation (cinfo)); SCHECK (obj); res = &insert_object (objId, obj); } LOG_TRACE(log, "Object " << *obj << " is created."); if (cinfo.objectCreated) cinfo.objectCreated->set(); // <NB> after inserting into repo // and unlocking assert(res); return *res; }