Я бы упростил вот так вот:
Код:
case WEAPON_SHOTGUN:
{
int PATR;
int DMG;
if(m_pPlayer->m_Score > 19 && m_pPlayer->m_Score < 40) {
PATR = 6;
DMG = 25;
}
else if(m_pPlayer->m_Score > 39 && m_pPlayer->m_Score < 60) {
PATR = 7;
DMG = 30;
}
else if(m_pPlayer->m_Score > 59) {
PATR = 8;
DMG = 50;
}
else {
PATR = 5;
DMG = 3;
}
float start = 0.0f;
if (PATR%2==0) start = (-PATR/2 + 0.5)*70*0.001;
else start = (-(PATR-1)/2)*70*0.001;
for (float i = 0; i < PATR; i+=1.0f) {
float a = start+GetAngle(Direction)+i*70*0.001;
float speed = 1.0f;
float v = 1-fabs((i*70*0.001f+start)/start);
if (0) speed = mix((float)750*0.001f, 1.0f, v);
CProjectile *pProj = new CProjectile(GameWorld(), WEAPON_SHOTGUN,
m_pPlayer->GetCID(),
ProjStartPos,
vec2(cos(a), sin(a))*speed+vec2(0, -0*0.001f),
(int)(Server()->TickSpeed()*GameServer()->Tuning()->m_GunLifetime),
DMG, 0, 0, -1, WEAPON_SHOTGUN);
// pack the Projectile and send it to the client Directly
CNetObj_Projectile p;
pProj->FillInfo(&p);
CMsgPacker Msg(NETMSGTYPE_SV_EXTRAPROJECTILE);
Msg.AddInt(1);
for(unsigned i = 0; i < sizeof(CNetObj_Projectile)/sizeof(int); i++)
Msg.AddInt(((int *)&p)[i]);
Server()->SendMsg(&Msg, 0, m_pPlayer->GetCID());
}
GameServer()->CreateSound(m_Pos, SOUND_SHOTGUN_FIRE);
} break;
Ну короче по очкам тут выдается, чтобы не исправлять в нескольких местах. Или просто задать:
int PATR = 5;
int DMG = 3;
а if(***) стереть, и все будет норм, по несколько раз не будешь исправлять