float Sniper::Shot(Game_Manager* gm_, Unit* User_, int team_, const coord_def& start_, const coord_def& pos_, float focus_) { float angle_ = GetAngleToTarget(start_, pos_); if(UseBullet(1)) { for(int i = 0;i<bunch;i++) { float focus2_ = rand_float(-focus_, focus_,"Sniper::Shot focus"); if(User_->GetSniper()) focus2_ = 0; float speed2_ = shot_speed*GetShotSpeedApply()*rand_float(0.8f, 1.2f, "Sniper::Shot speed"); float damage_ = damage*GetDamegeApply()*(User_?User_->GetAtkApply():1.0f); gm_->shot_list.push_back(new Shot_sniper(&tex_gun, User_, damage_, sniper, GetPower(), GetMaxPower(), team_, start_, angle_+focus2_, GetDistance(), 50)); } if (gm_->isPlayerCanHear(GetPos())) { if(GetType() == WT_SILENCE || User_->GetSilencer() != 1.0f) PlaySE(se_silencesnipergun); else PlaySE(se_snipergun); } gm_->Noise(team_,start_,GetNoise() * User_->GetSilencer()); return burst_speed*(1.0f/(GetBurstSpeedApply()*(User_?User_->GetAtkSpdApply():1.0f))); } return -1; }
float Fire2::Shot(Game_Manager* gm_, Unit* User_, int team_, const coord_def& start_, const coord_def& pos_, float focus_) { float angle_ = GetAngleToTarget(start_, pos_); if(UseBullet(1)) { float focus2_ = rand_float(-focus_, focus_,"Fire2::Shot focus"); float speed2_ = shot_speed*GetShotSpeedApply(); float damage_ = damage*GetDamegeApply()*(User_?User_->GetAtkApply():1.0f); gm_->shot_list.push_back(new Shot_refle_fire(&tex_fire, User_, damage_, fire_time, fire_damage, (int)GetDistance(), team_, start_, angle_+focus2_, speed2_, bounce)); gm_->Noise(team_,start_,GetNoise() * User_->GetSilencer()); return burst_speed*(1.0f/(GetBurstSpeedApply()*(User_?User_->GetAtkSpdApply():1.0f))); } return -1; }
float Bazooka::Shot(Game_Manager* gm_, Unit* User_, int team_, const coord_def& start_, const coord_def& pos_, float focus_) { float angle_ = GetAngleToTarget(start_, pos_); if(UseBullet(1)) { for(int i = 0;i<bunch;i++) { float focus2_ = rand_float(-focus_, focus_, "Bazooka::Shot focus"); float speed2_ = shot_speed*GetShotSpeedApply(); float damage_ = damage*GetDamegeApply()*(User_?User_->GetAtkApply():1.0f); gm_->shot_list.push_back(new Shot_missile(&tex_missile, User_, damage_, GetPower(), GetMaxPower(), range, team_, start_, angle_+focus2_, speed2_, guided_range, guided_power, GetDistance())); } if (gm_->isPlayerCanHear(GetPos())) { PlaySE(se_rocket, false); } gm_->Noise(team_,start_,GetNoise() * User_->GetSilencer()); return burst_speed*(1.0f/(GetBurstSpeedApply()*(User_?User_->GetAtkSpdApply():1.0f))); } return -1; }
void cHeiGenClassic::GenHeightMap(int a_ChunkX, int a_ChunkZ, cChunkDef::HeightMap & a_HeightMap) { for (int z = 0; z < cChunkDef::Width; z++) { const float zz = (float)(a_ChunkZ * cChunkDef::Width + z); for (int x = 0; x < cChunkDef::Width; x++) { const float xx = (float)(a_ChunkX * cChunkDef::Width + x); int hei = 64 + (int)(GetNoise(xx * 0.05f, zz * 0.05f) * 16); if (hei < 10) { hei = 10; } if (hei > 250) { hei = 250; } cChunkDef::SetHeight(a_HeightMap, x, z, hei); } // for x } // for z }