diff --git a/source/games/whaven/src/ai.cpp b/source/games/whaven/src/ai.cpp index 9e9613f2f..9b3ea6a72 100644 --- a/source/games/whaven/src/ai.cpp +++ b/source/games/whaven/src/ai.cpp @@ -995,23 +995,25 @@ boolean checksight(PLAYER& plr, DWHActor* actor) { return false; } -void monsterweapon(int i) { +void monsterweapon(DWHActor* actor) { - if (sprite[i].shade > 20) + auto& spr = actor->s(); + + if (spr.shade > 20) return; - if (sprite[i].picnum == SKELETONDEAD || sprite[i].picnum == KOBOLDDEAD) + if (spr.picnum == SKELETONDEAD || spr.picnum == KOBOLDDEAD) return; if ((krand() % 100) < 75) return; - auto spawnedactor = InsertActor(sprite[i].sectnum, (short)0); + auto spawnedactor = InsertActor(spr.sectnum, (short)0); auto& weap = spawnedactor->s(); - weap.x = sprite[i].x; - weap.y = sprite[i].y; - weap.z = sprite[i].z - (24 << 8); + weap.x = spr.x; + weap.y = spr.y; + weap.z = spr.z - (24 << 8); weap.shade = -15; weap.cstat = 0; weap.cstat &= ~3; @@ -1024,7 +1026,7 @@ void monsterweapon(int i) { weap.xrepeat = 25; weap.yrepeat = 20; - switch (sprite[i].picnum) { + switch (spr.picnum) { case NEWGUYDEAD: weap.xrepeat = 25; weap.yrepeat = 20; @@ -1119,11 +1121,11 @@ void monsterweapon(int i) { weap.detail = GOBWEAPONTYPE; break; default: - if (sprite[i].picnum == GRONDEAD) { + if (spr.picnum == GRONDEAD) { if (netgame) { - weap.x = sprite[i].x; - weap.y = sprite[i].y; - weap.z = sprite[i].z - (24 << 8); + weap.x = spr.x; + weap.y = spr.y; + weap.z = spr.z - (24 << 8); weap.shade = -15; weap.cstat = 0; weap.cstat &= ~3; diff --git a/source/games/whaven/src/ai.h b/source/games/whaven/src/ai.h index 29f38e71e..99bf0aaa1 100644 --- a/source/games/whaven/src/ai.h +++ b/source/games/whaven/src/ai.h @@ -134,7 +134,7 @@ boolean checkdist(PLAYER& plr, DWHActor* actor); boolean checkdist(DWHActor* actor, int x, int y, int z); extern int checksight_ang; boolean checksight(PLAYER& plr, DWHActor* actor); -void monsterweapon(int i); +void monsterweapon(DWHActor*); PLAYER* aiGetPlayerTarget(short i); boolean actoruse(short i); diff --git a/source/games/whaven/src/whobj.cpp b/source/games/whaven/src/whobj.cpp index 0e0112f65..a1af0ac98 100644 --- a/source/games/whaven/src/whobj.cpp +++ b/source/games/whaven/src/whobj.cpp @@ -1127,7 +1127,7 @@ void newstatus(short sn, int seq) { ChangeActorStat(actor, DEAD); if(isWh2()) { addscore(aiGetPlayerTarget(sn), 70); - monsterweapon(sn); + monsterweapon(actor); } } else if(spr.picnum == FISH || spr.picnum == RAT) { spr.cstat &= ~3; @@ -1155,7 +1155,7 @@ void newstatus(short sn, int seq) { } else { addscore(aiGetPlayerTarget(sn), 200); } - monsterweapon(sn); + monsterweapon(actor); } else { switch (spr.picnum) { case GONZOBSHDEAD: @@ -1171,7 +1171,7 @@ void newstatus(short sn, int seq) { } else { ChangeActorStat(actor, DEAD); if (spr.shade < 25) - monsterweapon(sn); + monsterweapon(actor); } addscore(aiGetPlayerTarget(sn), 85); break; @@ -1186,7 +1186,7 @@ void newstatus(short sn, int seq) { deaddude(sn); } else { ChangeActorStat(actor, DEAD); - monsterweapon(sn); + monsterweapon(actor); } addscore(aiGetPlayerTarget(sn), 55); break; @@ -1201,7 +1201,7 @@ void newstatus(short sn, int seq) { deaddude(sn); } else { ChangeActorStat(actor, DEAD); - monsterweapon(sn); + monsterweapon(actor); } addscore(aiGetPlayerTarget(sn), 105); break; @@ -1216,7 +1216,7 @@ void newstatus(short sn, int seq) { deaddude(sn); } else { ChangeActorStat(actor, DEAD); - monsterweapon(sn); + monsterweapon(actor); } addscore(aiGetPlayerTarget(sn), 100); break; @@ -1227,7 +1227,7 @@ void newstatus(short sn, int seq) { spr.picnum = NEWGUYDEAD; spr.cstat &= ~3; ChangeActorStat(actor, DEAD); - monsterweapon(sn); + monsterweapon(actor); addscore(aiGetPlayerTarget(sn), 50); break; case GONZOGSHDEAD: @@ -1243,7 +1243,7 @@ void newstatus(short sn, int seq) { deaddude(sn); } else { ChangeActorStat(actor, DEAD); - monsterweapon(sn); + monsterweapon(actor); } addscore(aiGetPlayerTarget(sn), 110); break; @@ -1265,7 +1265,7 @@ void newstatus(short sn, int seq) { spr.cstat &= ~3; ChangeActorStat(actor, DEAD); addscore(aiGetPlayerTarget(sn), 115); - monsterweapon(sn); + monsterweapon(actor); break; case KOBOLDDEAD: spr.picnum = KOBOLDDEAD; @@ -1286,7 +1286,7 @@ void newstatus(short sn, int seq) { ChangeActorStat(actor, DEAD); addscore(aiGetPlayerTarget(sn), isWh2() ? 70 : 50); if(isWh2()) - monsterweapon(sn); + monsterweapon(actor); break; case FREDDEAD: spr.picnum = FREDDEAD; @@ -1300,7 +1300,7 @@ void newstatus(short sn, int seq) { ChangeActorStat(actor, DEAD); addscore(aiGetPlayerTarget(sn), 25); if ((rand() % 100) > 60) - monsterweapon(sn); + monsterweapon(actor); break; case MINOTAURDEAD: spr.picnum = MINOTAURDEAD; @@ -1308,7 +1308,7 @@ void newstatus(short sn, int seq) { ChangeActorStat(actor, DEAD); addscore(aiGetPlayerTarget(sn), isWh2() ? 95 : 70); if ((rand() % 100) > 60) - monsterweapon(sn); + monsterweapon(actor); break; case SPIDERDEAD: spr.picnum = SPIDERDEAD;