1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-24 17:10:36 +00:00

fixed some shmup-related crashes

This commit is contained in:
Zeno Rogue 2018-11-17 19:26:35 +01:00
parent e7b90fdb05
commit d7a235bc8c
2 changed files with 13 additions and 9 deletions

View File

@ -1197,7 +1197,8 @@ void shootBullet(monster *m) {
} }
void killThePlayer(eMonster m) { void killThePlayer(eMonster m) {
pc[cpid]->dead = true; if(cpid >= 0 && cpid < MAXPLAYER && pc[cpid])
pc[cpid]->dead = true;
} }
monster *playerCrash(monster *who, hyperpoint where) { monster *playerCrash(monster *who, hyperpoint where) {
@ -3293,13 +3294,16 @@ void clearMemory() {
nextmove = 0; nextmove = 0;
nextdragon = 0; nextdragon = 0;
visibleAt = 0; visibleAt = 0;
for(int i=0; i<MAXPLAYER; i++) pc[i] = NULL;
} }
cell *playerpos(int i) { cell *playerpos(int i) {
if(!pc[i]) return NULL;
return pc[i]->base; return pc[i]->base;
} }
bool playerInBoat(int i) { bool playerInBoat(int i) {
if(!pc[i]) return false;
return pc[i]->inBoat; return pc[i]->inBoat;
} }

View File

@ -97,6 +97,12 @@ void initgame() {
DEBB(DF_INIT, (debugfile,"initGame\n")); DEBB(DF_INIT, (debugfile,"initGame\n"));
callhooks(hooks_initgame); callhooks(hooks_initgame);
if(!safety) multi::players = vid.scfg.players;
if(multi::players < 1 || multi::players > MAXPLAYER)
multi::players = 1;
multi::whereto[0].d = MD_UNDECIDED;
multi::cpid = 0;
yendor::init(1); yendor::init(1);
if(safety && safetyseed) { if(safety && safetyseed) {
@ -160,6 +166,8 @@ void initgame() {
yendor::lastchallenge = yendor::challenge; yendor::lastchallenge = yendor::challenge;
if(shmup::on) shmup::init();
yendor::init(2); yendor::init(2);
clear_euland(specialland); clear_euland(specialland);
@ -180,14 +188,6 @@ void initgame() {
for(int i=0; i<numplayers(); i++) sword::angle[i] = PURE ? 10 : 11; for(int i=0; i<numplayers(); i++) sword::angle[i] = PURE ? 10 : 11;
if(!safety) multi::players = vid.scfg.players;
if(multi::players < 1 || multi::players > MAXPLAYER)
multi::players = 1;
multi::whereto[0].d = MD_UNDECIDED;
multi::cpid = 0;
if(shmup::on) shmup::init();
#if CAP_DAILY #if CAP_DAILY
daily::split(); daily::split();
#endif #endif