static int encounter(int theme){ struct character *foe; int ret,i,num=NUM_CHAR_SLOTS; int plvl=0; for(i=0;i<NUM_CHAR_SLOTS;i++){ if(pdata.chars[i]==NULL || pdata.chars[i]->battleready==BATTLE_UNAVAILABLE) num--; else if(plvl<(ret=character_level(pdata.chars[i]))) plvl=ret; } gen_random_map(theme); foe=malloc(num*sizeof(*foe)); for(i=0;i<num;i++){ create_character(foe+i); set_level(foe+i,get_random(plvl-(plvl/8),plvl)); foe[i].jp=pdata.d_level*100; spend_jp_random(foe+i); } ret=start_battle(pdata.chars,foe,num); if(ret){ for(i=0;i<NUM_CHAR_SLOTS;i++) if(pdata.chars[i]->battleready==BATTLE_READY) jp_reward(pdata.chars[i]); } free(foe); return ret; }
object_info_ptr create_object( kernel::system* csys, create_msg const& msg) { if(msg.object_kind & ok_vehicle) return create_vehicle(csys, msg); else if ( msg.object_kind == ok_flock_of_birds) return create_flock_of_birds(csys, msg); else if ( msg.object_kind ==ok_human) return create_character(csys, msg); else if ( msg.object_kind == ok_helicopter) return create_helicopter_phl(csys, msg); else if ( msg.object_kind == ok_rocket_flare) return create_rocket_flare(csys, msg); else if( msg.object_kind == ok_camera) return create_camera(csys, msg); else return create_aircraft(csys, msg); //create_aircraft_phl(csys, msg); // FIXME вместо чекера можно создать какой-нибудь более дурной объект }
void create_game(){ int i,j; pdata.d_level=1; for(i=0;i<NUM_CHAR_SLOTS;i++)pdata.chars[i]=NULL; for(i=0;i<numchar;i++){ pdata.chars[i]=malloc(sizeof(**pdata.chars)); create_character(pdata.chars[i]); for(j=0;names[i][j];j++) pdata.chars[i]->name[j]=names[i][j]; pdata.chars[i]->name[4]=0; if(i<2){ pdata.chars[i]->battleready=BATTLE_READY; set_level(pdata.chars[i],1); } else pdata.chars[i]->battleready=BATTLE_UNAVAILABLE; } for(i=0;i<NUM_ITEMS;i++){ pdata.inventory[i].count=0; pdata.inventory[i].index=EQ_INDEX(9,0,0); } }