diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index c9282c49..686e30d2 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -1022,6 +1022,8 @@ void timeupdate(int milliscur, int millismax) conoutf("game has ended!"); consolescores(); showscores(true); + player1->type = ENT_CAMERA; // for intermission VP - reset to ENT_PLAYER in startmap + gotovantagepoint(); exechook(HOOK_SP_MP, "start_intermission", ""); } else @@ -1153,6 +1155,7 @@ VARP(showmodedescriptions, 0, 1, 1); void startmap(const char *name, bool reset, bool norespawn) // called just after a map load { + player1->type = ENT_PLAYER; // intermission VP requires ENT_CAMERA extern bool canceldownloads; canceldownloads = false; copystring(clientmap, name); diff --git a/source/src/entities.cpp b/source/src/entities.cpp index 3c90234f..d266edb8 100644 --- a/source/src/entities.cpp +++ b/source/src/entities.cpp @@ -136,41 +136,46 @@ void renderentarrow(const entity &e, const vec &dir, float radius, GLfloat color switch(entarrowstyle) { case 0: // 4seg cone at tip - glBegin(GL_TRIANGLE_FAN); - glVertex3fv(target.v); - loopi(5) { - vec p(spoke); - p.rotate(PI2 * i / 4.0f, dir); - p.add(arrowbase); - glVertex3fv(p.v); + glBegin(GL_TRIANGLE_FAN); + glVertex3fv(target.v); + loopi(5) + { + vec p(spoke); + p.rotate(PI2 * i / 4.0f, dir); + p.add(arrowbase); + glVertex3fv(p.v); + } + glEnd(); + } - glEnd(); break; case 1: // 4 rotated & tinted tips - float rothead[] = {0,PI/2,PI/4,3*PI/4}; - glBegin(GL_TRIANGLES); - loopi(4) { - glVertex3fv(target.v); - vec p1(spoke); - vec p2(spoke.mul(-1)); - if(i>0) + float rothead[] = {0,PI/2,PI/4,3*PI/4}; + glBegin(GL_TRIANGLES); + loopi(4) { - p1.rotate(rothead[i],dir); - p2.rotate(rothead[i],dir); + glVertex3fv(target.v); + vec p1(spoke); + vec p2(spoke.mul(-1)); + if(i>0) + { + p1.rotate(rothead[i],dir); + p2.rotate(rothead[i],dir); + } + if(i==2) + { + float csf = (((color[1]+color[2]+color[3])/3.0f)>0.5f)?.75f:1.25f; + glColor4f( csf*color[0], csf*color[1], csf*color[2], color[3]>0.5f?(color[3]/2.0f):(color[3]*2.0f) ); + } + p1.add(arrowbase); + glVertex3fv(p1.v); + p2.add(arrowbase); + glVertex3fv(p2.v); } - if(i==2) - { - float csf = (((color[1]+color[2]+color[3])/3.0f)>0.5f)?.75f:1.25f; - glColor4f( csf*color[0], csf*color[1], csf*color[2], color[3]>0.5f?(color[3]/2.0f):(color[3]*2.0f) ); - } - p1.add(arrowbase); - glVertex3fv(p1.v); - p2.add(arrowbase); - glVertex3fv(p2.v); + glEnd(); } - glEnd(); break; default: break; } diff --git a/source/src/protos.h b/source/src/protos.h index 2fc2db3f..f6cca351 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -863,6 +863,7 @@ extern uchar *readmap(const char *name, int *size, int *revision); extern uchar *readmcfggz(const char *name, int *size, int *sizegz); extern void rlencodecubes(vector &f, sqr *s, int len, bool preservesolids); extern bool rldecodecubes(ucharbuf &f, sqr *s, int len, int version, bool silent); +extern bool gotovantagepoint(); extern void clearheaderextras(); extern void automapconfig(); extern void flagmapconfigchange(); @@ -1202,7 +1203,7 @@ struct servercommandline } else { - ssk = a; + ssk = a; } } break;