mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-29 15:32:24 +00:00
- the rest of the owner stuff.
This commit is contained in:
parent
fe35c4121a
commit
756f11f746
15 changed files with 107 additions and 86 deletions
|
@ -633,7 +633,7 @@ void castspell(PLAYER& plr, DWHActor* actor) {
|
|||
else
|
||||
spawned.zvel = (short)(((plr.z + (48 << 8) - spawned.z) << 7) / discrim);
|
||||
|
||||
spawned.owner = (short)actor->GetSpriteIndex();
|
||||
spawnedactor->SetOwner(actor);
|
||||
spawned.clipdist = 16;
|
||||
spawned.lotag = 512;
|
||||
spawned.hitag = 0;
|
||||
|
|
|
@ -379,7 +379,7 @@ static void goblinWar(PLAYER& plr, DWHActor* actor)
|
|||
if (dist < olddist) {
|
||||
found = true;
|
||||
olddist = dist;
|
||||
spr.owner = itActor->GetSpriteIndex();
|
||||
actor->SetOwner(itActor);
|
||||
spr.ang = getangle(spk.x - spr.x, spk.y - spr.y);
|
||||
spr.extra = 1;
|
||||
}
|
||||
|
@ -403,7 +403,9 @@ static void goblinWar(PLAYER& plr, DWHActor* actor)
|
|||
}
|
||||
case 1: // chase
|
||||
{
|
||||
auto owneractor = &whActors[spr.owner];
|
||||
auto owneractor = actor->GetOwner();
|
||||
assert(owneractor);
|
||||
if (!owneractor) break;
|
||||
auto ownerspr = owneractor->s();
|
||||
|
||||
auto moveStat = aimove(actor);
|
||||
|
@ -415,8 +417,7 @@ static void goblinWar(PLAYER& plr, DWHActor* actor)
|
|||
spr.lotag = 60;
|
||||
}
|
||||
else if (moveStat.type == kHitSprite) {
|
||||
int sprnum = moveStat.actor->GetSpriteIndex();
|
||||
if (sprnum != spr.owner) {
|
||||
if (moveStat.actor != owneractor) {
|
||||
spr.extra = 3;
|
||||
spr.ang = (short)((spr.ang + (krand() & 256 - 128)) & 2047);
|
||||
spr.lotag = 60;
|
||||
|
@ -440,7 +441,9 @@ static void goblinWar(PLAYER& plr, DWHActor* actor)
|
|||
}
|
||||
case 2: // attack
|
||||
{
|
||||
auto owneractor = &whActors[spr.owner];
|
||||
auto owneractor = actor->GetOwner();
|
||||
assert(owneractor);
|
||||
if (!owneractor) break;
|
||||
auto& ownerspr = owneractor->s();
|
||||
if (checkdist(actor, ownerspr.x, ownerspr.y, ownerspr.z)) {
|
||||
if ((krand() & 1) != 0) {
|
||||
|
@ -594,7 +597,7 @@ void premapGoblin(DWHActor* actor) {
|
|||
if (spr.pal != 0)
|
||||
spr.xrepeat = 30;
|
||||
spr.extra = 0;
|
||||
spr.owner = 0;
|
||||
actor->SetOwner(nullptr);
|
||||
spr.hitag = ohitag;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -801,7 +801,7 @@ void deaddude(short sn) {
|
|||
spawned.pal = 0;
|
||||
spawned.xrepeat = spr.xrepeat;
|
||||
spawned.yrepeat = spr.yrepeat;
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.lotag = 0;
|
||||
spawned.hitag = 0;
|
||||
spawned.backuploc();
|
||||
|
|
|
@ -21,7 +21,7 @@ static void facerat(PLAYER& plr, DWHActor* actor)
|
|||
|
||||
spr.ang = getangle(plr.x - spr.x, plr.y - spr.y);
|
||||
spr.ang = (short) (((krand() & 512 - 256) + spr.ang + 1024) & 2047); // NEW
|
||||
spr.owner = plr.actor()->s().owner;
|
||||
actor->SetPlayerOwner(plr.playerNum());
|
||||
SetNewStatus(actor, FLEE);
|
||||
}
|
||||
|
||||
|
@ -53,13 +53,13 @@ static void fleerat(PLAYER& plr, DWHActor* actor)
|
|||
|
||||
if (moveStat.type == kHitSprite) {
|
||||
SPRITE& sp = moveStat.actor->s();
|
||||
spr.owner = moveStat.actor->GetSpriteIndex();
|
||||
actor->SetOwner(moveStat.actor);
|
||||
spr.ang = getangle(sp.x - spr.x, sp.y - spr.y);
|
||||
spr.ang = (short)(((krand() & 512 - 256) + spr.ang + 1024) & 2047);
|
||||
}
|
||||
|
||||
if (abs(plr.x - spr.x) <= 1024 && abs(plr.y - spr.y) <= 1024) {
|
||||
spr.owner = plr.actor()->s().owner;
|
||||
actor->SetPlayerOwner(plr.playerNum());
|
||||
SetNewStatus(actor, FACE);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
BEGIN_WH_NS
|
||||
|
||||
void analyzesprites(PLAYER& plr, int dasmoothratio,spritetype* tsprite, int& spritesortcnt)
|
||||
void analyzesprites(PLAYER& plr, int dasmoothratio,tspritetype* tsprite, int& spritesortcnt)
|
||||
{
|
||||
int k;
|
||||
tspritelistcnt = spritesortcnt;
|
||||
|
|
|
@ -354,7 +354,7 @@ void InitItems()
|
|||
break;
|
||||
case 6:
|
||||
for (j = 0; j < 8; j++)
|
||||
explosion(actor->GetSpriteIndex(), spr.x, spr.y, spr.z, spr.owner);
|
||||
explosion(actor->GetSpriteIndex(), spr.x, spr.y, spr.z, 0);
|
||||
spritesound(S_EXPLODE, actor);
|
||||
DeleteActor(actor);
|
||||
break;
|
||||
|
|
|
@ -25,6 +25,7 @@ struct PLAYER {
|
|||
short spritenum;
|
||||
DWHActor* actor() { return &whActors[spritenum]; }
|
||||
sectortype* Sector() { return &::sector[sector]; }
|
||||
int playerNum();
|
||||
boolean keytoggle;
|
||||
int flags;
|
||||
int weapon[MAXWEAPONS], preenchantedweapon[MAXWEAPONS];
|
||||
|
|
|
@ -1720,7 +1720,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = 0;
|
||||
spawned.yvel = 0;
|
||||
spawned.zvel = 0;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 32;
|
||||
spawned.hitag = 0;
|
||||
spawned.backuploc();
|
||||
|
@ -1743,7 +1743,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = 0;
|
||||
spawned.yvel = 0;
|
||||
spawned.zvel = 0;
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.lotag = 1200;
|
||||
spawned.hitag = 0;
|
||||
spawned.backuploc();
|
||||
|
@ -1771,7 +1771,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = 0;
|
||||
spawned.yvel = 0;
|
||||
spawned.zvel = 0;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 32;
|
||||
spawned.hitag = 0;
|
||||
movesprite(spawnedactor, (bcos(spawned.ang) * TICSPERFRAME) << 3,
|
||||
|
@ -1978,7 +1978,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
} else {
|
||||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
}
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 1024;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -2005,7 +2005,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = (short) ((krand() & 256) - 128);
|
||||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 1024;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -2034,7 +2034,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
// spawned.zvel=((krand()&256)-128);
|
||||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 1024;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -2075,7 +2075,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = (short) ((krand() & 256) - 128);
|
||||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 1024;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -2102,7 +2102,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = (short) ((krand() & 256) - 128);
|
||||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 1024;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -2129,7 +2129,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.xvel = (short) ((krand() & 256) - 128);
|
||||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = (short) ((krand() & 256) - 128);
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 1024;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -2168,7 +2168,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
}
|
||||
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 256;
|
||||
spawned.hitag = 0;
|
||||
spawned.clipdist = 48;
|
||||
|
@ -2209,7 +2209,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
spawned.zvel = plr.horizon.horiz.asq16() >> 12;
|
||||
}
|
||||
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 256;
|
||||
spawned.hitag = 0;
|
||||
spawned.clipdist = 64;
|
||||
|
@ -2259,7 +2259,7 @@ void shootgun(PLAYER& plr, float ang, int guntype) {
|
|||
case WILLOWTYPE:
|
||||
if (cansee(plr.x, plr.y, plr.z, plr.sector, spk.x, spk.y,
|
||||
spk.z - (tileHeight(spk.picnum) << 7), spk.sectnum))
|
||||
if ((isWh2() && spk.owner != plr.actor()->s().owner)
|
||||
if ((isWh2() && itActor->GetPlayerOwner() != plr.playerNum())
|
||||
|| checkmedusadist(j, plr.x, plr.y, plr.z, 12))
|
||||
nukespell(plr, j);
|
||||
break;
|
||||
|
|
|
@ -209,6 +209,10 @@ void spikeanimation(PLAYER& plr);
|
|||
// whplr
|
||||
|
||||
extern PLAYER player[MAXPLAYERS];
|
||||
inline int PLAYER::playerNum()
|
||||
{
|
||||
return int(this - player);
|
||||
}
|
||||
extern PLOCATION gPrevPlayerLoc[MAXPLAYERS];
|
||||
extern short monsterangle[MAXSPRITESONSCREEN], monsterlist[MAXSPRITESONSCREEN];
|
||||
extern int shootgunzvel;
|
||||
|
|
|
@ -49,11 +49,6 @@ public:
|
|||
s().owner = other->s().owner;
|
||||
}
|
||||
|
||||
bool CompareOwner(DWHActor* other)
|
||||
{
|
||||
return s().owner == other->s().owner;
|
||||
}
|
||||
|
||||
int GetSpriteIndex() const
|
||||
{
|
||||
return index;
|
||||
|
|
|
@ -267,7 +267,7 @@ void animateobjs(PLAYER& plr) {
|
|||
spawned.pal = 0;
|
||||
spawned.xrepeat = spr.xrepeat;
|
||||
spawned.yrepeat = spr.yrepeat;
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.lotag = 40;
|
||||
spawned.hitag = 0;
|
||||
spawned.detail = GONZOTYPE;
|
||||
|
@ -784,7 +784,7 @@ void animateobjs(PLAYER& plr) {
|
|||
|
||||
if (moveStat.type == kHitSprite) { // Bullet hit a sprite
|
||||
|
||||
if (spr.owner != moveStat.actor->GetSpriteIndex()) {
|
||||
if (actor->GetOwner() != moveStat.actor) {
|
||||
hitdamage = damageactor(plr, moveStat.actor, actor);
|
||||
if (hitdamage) {
|
||||
SetNewStatus(actor, BROKENVASE);
|
||||
|
@ -971,7 +971,7 @@ void animateobjs(PLAYER& plr) {
|
|||
}
|
||||
|
||||
if (moveStat.type != kHitNone && spr.picnum == MONSTERBALL)
|
||||
if (actor->CompareOwner(plr.actor())) {
|
||||
if (actor->GetPlayerOwner() == plr.playerNum()) {
|
||||
explosion2(i, spr.x, spr.y, spr.z, i);
|
||||
} else {
|
||||
explosion(i, spr.x, spr.y, spr.z, i);
|
||||
|
@ -990,7 +990,7 @@ void animateobjs(PLAYER& plr) {
|
|||
} else if (moveStat.type == kHitWall) { // hit a wall
|
||||
|
||||
if (spr.picnum == MONSTERBALL) {
|
||||
if (actor->CompareOwner(plr.actor()))
|
||||
if (actor->GetPlayerOwner() == plr.playerNum())
|
||||
explosion2(i, spr.x, spr.y, spr.z, i);
|
||||
else
|
||||
explosion(i, spr.x, spr.y, spr.z, i);
|
||||
|
@ -1009,13 +1009,13 @@ void animateobjs(PLAYER& plr) {
|
|||
|
||||
if (moveStat.type == kHitSprite) { // Bullet hit a sprite
|
||||
if (spr.picnum == MONSTERBALL) {
|
||||
if (actor->CompareOwner(plr.actor()))
|
||||
if (actor->GetPlayerOwner() == plr.playerNum())
|
||||
explosion2(i, spr.x, spr.y, spr.z, i);
|
||||
else
|
||||
explosion(i, spr.x, spr.y, spr.z, i);
|
||||
}
|
||||
|
||||
if (spr.owner != moveStat.actor->GetSpriteIndex())
|
||||
if (actor->GetOwner() != moveStat.actor)
|
||||
hitdamage = damageactor(plr, moveStat.actor, actor);
|
||||
if (hitdamage) {
|
||||
DeleteActor(actor);
|
||||
|
@ -1345,7 +1345,7 @@ void animateobjs(PLAYER& plr) {
|
|||
spawned.xrepeat = spr.xrepeat;
|
||||
spawned.yrepeat = spr.yrepeat;
|
||||
|
||||
spawned.owner = spr.owner;
|
||||
spawnedactor->CopyOwner(actor);
|
||||
spawned.lotag = 256;
|
||||
spawned.hitag = 0;
|
||||
spawned.backuploc();
|
||||
|
@ -1379,7 +1379,7 @@ void animateobjs(PLAYER& plr) {
|
|||
int dz = abs((spr.z >> 8) - (tspr.z >> 8)); // z distance to sprite
|
||||
int dh = tileHeight(tspr.picnum) >> 1; // height of sprite
|
||||
if (dx + dy < PICKDISTANCE && dz - dh <= getPickHeight()) {
|
||||
if (tspr.owner == 4096) {
|
||||
if (sectactor->GetPlayerOwner() == 0) {
|
||||
// strcpy(displaybuf,"hit player");
|
||||
} else {
|
||||
switch (tspr.detail) {
|
||||
|
|
|
@ -813,7 +813,7 @@ void makeasplash(int picnum, PLAYER& plr) {
|
|||
spawned.pal = 0;
|
||||
spawned.xrepeat = 64;
|
||||
spawned.yrepeat = 64;
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.clipdist = 16;
|
||||
spawned.lotag = 8;
|
||||
spawned.hitag = 0;
|
||||
|
@ -861,7 +861,7 @@ void makemonstersplash(int picnum, int i) {
|
|||
spawned.xrepeat = 64;
|
||||
spawned.yrepeat = 64;
|
||||
}
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.clipdist = 16;
|
||||
spawned.lotag = 8;
|
||||
spawned.hitag = 0;
|
||||
|
@ -892,22 +892,24 @@ void makemonstersplash(int picnum, int i) {
|
|||
}
|
||||
|
||||
void bats(PLAYER& plr, int k) {
|
||||
auto spawnedactor = InsertActor(sprite[k].sectnum, FLOCK);
|
||||
auto actor = &whActors[k];
|
||||
auto& spr = actor->s();
|
||||
auto spawnedactor = InsertActor(spr.sectnum, FLOCK);
|
||||
auto& spawned = spawnedactor->s();
|
||||
|
||||
spawned.x = sprite[k].x;
|
||||
spawned.y = sprite[k].y;
|
||||
spawned.z = sprite[k].z;
|
||||
spawned.x = spr.x;
|
||||
spawned.y = spr.y;
|
||||
spawned.z = spr.z;
|
||||
spawned.cstat = 0;
|
||||
spawned.picnum = BAT;
|
||||
spawned.shade = 0;
|
||||
spawned.xrepeat = 64;
|
||||
spawned.yrepeat = 64;
|
||||
spawned.ang = (short) ((sprite[k].ang + (krand() & 128 - 256)) & 2047);
|
||||
spawned.owner = (short) k;
|
||||
spawned.ang = (short) ((spr.ang + (krand() & 128 - 256)) & 2047);
|
||||
spawnedactor->SetOwner(actor);
|
||||
spawned.clipdist = 16;
|
||||
spawned.lotag = 128;
|
||||
spawned.hitag = (short) k;
|
||||
spawned.hitag = (short) k; // see: flying in circles
|
||||
spawned.extra = 0;
|
||||
spawned.backuploc();
|
||||
|
||||
|
@ -998,14 +1000,16 @@ void lavadryland() {
|
|||
}
|
||||
|
||||
void warpfxsprite(int s) {
|
||||
auto actor = &whActors[s];
|
||||
auto& spr = actor->s();
|
||||
PLAYER& plr = player[pyrn];
|
||||
|
||||
auto spawnedactor = InsertActor(sprite[s].sectnum, WARPFX);
|
||||
auto spawnedactor = InsertActor(spr.sectnum, WARPFX);
|
||||
auto& spawned = spawnedactor->s();
|
||||
|
||||
spawned.x = sprite[s].x;
|
||||
spawned.y = sprite[s].y;
|
||||
spawned.z = sprite[s].z - (32 << 8);
|
||||
spawned.x = spr.x;
|
||||
spawned.y = spr.y;
|
||||
spawned.z = spr.z - (32 << 8);
|
||||
|
||||
spawned.cstat = 0;
|
||||
|
||||
|
@ -1015,7 +1019,7 @@ void warpfxsprite(int s) {
|
|||
daang = plr.angle.ang.asbuild();
|
||||
spawned.ang = daang;
|
||||
} else {
|
||||
daang = sprite[s].ang;
|
||||
daang = spr.ang;
|
||||
spawned.ang = daang;
|
||||
}
|
||||
|
||||
|
@ -1028,7 +1032,7 @@ void warpfxsprite(int s) {
|
|||
spawned.xvel = (short) ((krand() & 256) - 128);
|
||||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = (short) ((krand() & 256) - 128);
|
||||
spawned.owner = (short) s;
|
||||
spawnedactor->SetOwner(actor);
|
||||
spawned.lotag = 12;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
@ -1121,7 +1125,7 @@ void makesparks(short i, int type) {
|
|||
spawned.xrepeat = 24;
|
||||
spawned.yrepeat = 24;
|
||||
spawned.ang = (short) ((krand() % 2047) & 2047);
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.clipdist = 16;
|
||||
spawned.lotag = (short) (krand() % 100);
|
||||
spawned.hitag = 0;
|
||||
|
@ -1132,20 +1136,22 @@ void makesparks(short i, int type) {
|
|||
}
|
||||
|
||||
void shards(int i, int type) {
|
||||
auto spawnedactor = InsertActor(sprite[i].sectnum, SHARDOFGLASS);
|
||||
auto actor = &whActors[i];
|
||||
auto& spr = actor->s();
|
||||
auto spawnedactor = InsertActor(spr.sectnum, SHARDOFGLASS);
|
||||
auto& spawned = spawnedactor->s();
|
||||
|
||||
spawned.x = sprite[i].x + (((krand() % 512) - 256) << 2);
|
||||
spawned.y = sprite[i].y + (((krand() % 512) - 256) << 2);
|
||||
spawned.z = sprite[i].z - (getPlayerHeight() << 8) + (((krand() % 48) - 16) << 7);
|
||||
spawned.x = spr.x + (((krand() % 512) - 256) << 2);
|
||||
spawned.y = spr.y + (((krand() % 512) - 256) << 2);
|
||||
spawned.z = spr.z - (getPlayerHeight() << 8) + (((krand() % 48) - 16) << 7);
|
||||
spawned.zvel = (short) (krand() % 256);
|
||||
spawned.cstat = 0;
|
||||
spawned.picnum = (short) (SHARD + (krand() % 3));
|
||||
spawned.shade = 0;
|
||||
spawned.xrepeat = 64;
|
||||
spawned.yrepeat = 64;
|
||||
spawned.ang = (short) (sprite[i].ang + ((krand() % 512) - 256) & 2047);
|
||||
spawned.owner = (short) i;
|
||||
spawned.ang = (short) (spr.ang + ((krand() % 512) - 256) & 2047);
|
||||
spawnedactor->SetOwner(actor);
|
||||
spawned.clipdist = 16;
|
||||
spawned.lotag = (short) (120 + (krand() % 100));
|
||||
spawned.hitag = 0;
|
||||
|
|
|
@ -774,9 +774,11 @@ boolean prepareboard(const char* fname) {
|
|||
|
||||
if (justteleported) { // next level
|
||||
plr.hvel = 0;
|
||||
plr.spritenum = insertsprite(plr.sector, (short) 0);
|
||||
auto pactor = InsertActor(plr.sector, (short)0);
|
||||
auto& pspr = pactor->s();
|
||||
|
||||
plr.spritenum = pactor->GetSpriteIndex();
|
||||
plr.oldsector = plr.sector;
|
||||
auto& pspr = plr.actor()->s();
|
||||
|
||||
pspr.x = plr.x;
|
||||
pspr.y = plr.y;
|
||||
|
@ -790,7 +792,7 @@ boolean prepareboard(const char* fname) {
|
|||
pspr.xvel = 0;
|
||||
pspr.yvel = 0;
|
||||
pspr.zvel = 0;
|
||||
pspr.owner = (short) (4096 + myconnectindex);
|
||||
pactor->SetPlayerOwner(myconnectindex);
|
||||
pspr.lotag = 0;
|
||||
pspr.hitag = 0;
|
||||
pspr.pal = (short) (isWh2() ? 10 : 1);
|
||||
|
|
|
@ -127,7 +127,7 @@ void processobjs(PLAYER& plr) {
|
|||
if(isItemSprite(actor->GetSpriteIndex()))
|
||||
items[(tspr.detail & 0xFF) - ITEMSBASE].pickup(plr, actor);
|
||||
|
||||
if (tspr.picnum >= EXPLOSTART && tspr.picnum <= EXPLOEND && tspr.owner != plr.actor()->s().owner)
|
||||
if (tspr.picnum >= EXPLOSTART && tspr.picnum <= EXPLOEND && actor->GetPlayerOwner() != plr.playerNum())
|
||||
if (plr.manatime < 1)
|
||||
addhealth(plr, -1);
|
||||
}
|
||||
|
@ -836,7 +836,7 @@ void newstatus(short sn, int seq) {
|
|||
break;
|
||||
case DEMONTYPE:
|
||||
spritesound(S_GUARDIANDIE, actor);
|
||||
explosion(sn, spr.x, spr.y, spr.z, spr.owner);
|
||||
explosion(sn, spr.x, spr.y, spr.z, 0);
|
||||
addscore(aiGetPlayerTarget(actor), 1500);
|
||||
DeleteActor(actor);
|
||||
kills++;
|
||||
|
@ -930,7 +930,7 @@ void newstatus(short sn, int seq) {
|
|||
case GUARDIANTYPE:
|
||||
spritesound(S_GUARDIANDIE, actor);
|
||||
for (int j = 0; j < 4; j++)
|
||||
explosion(sn, spr.x, spr.y, spr.z, spr.owner);
|
||||
explosion(sn, spr.x, spr.y, spr.z, 0);
|
||||
DeleteActor(actor);
|
||||
addscore(aiGetPlayerTarget(actor), 1500);
|
||||
kills++;
|
||||
|
@ -1372,12 +1372,14 @@ void newstatus(short sn, int seq) {
|
|||
}
|
||||
|
||||
void makeafire(int i, int firetype) {
|
||||
auto spawnedactor = InsertActor(sprite[i].sectnum, FIRE);
|
||||
auto actor = &whActors[i];
|
||||
auto& spr = actor->s();
|
||||
auto spawnedactor = InsertActor(spr.sectnum, FIRE);
|
||||
auto& spawned = spawnedactor->s();
|
||||
|
||||
spawned.x = sprite[i].x + (krand() & 1024) - 512;
|
||||
spawned.y = sprite[i].y + (krand() & 1024) - 512;
|
||||
spawned.z = sprite[i].z;
|
||||
spawned.x = spr.x + (krand() & 1024) - 512;
|
||||
spawned.y = spr.y + (krand() & 1024) - 512;
|
||||
spawned.z = spr.z;
|
||||
|
||||
spawned.cstat = 0;
|
||||
spawned.xrepeat = 64;
|
||||
|
@ -1386,7 +1388,8 @@ void makeafire(int i, int firetype) {
|
|||
spawned.shade = 0;
|
||||
|
||||
spawned.clipdist = 64;
|
||||
spawned.owner = sprite[i].owner;
|
||||
|
||||
spawnedactor->CopyOwner(actor);
|
||||
spawned.lotag = 2047;
|
||||
spawned.hitag = 0;
|
||||
ChangeActorStat(spawnedactor, FIRE);
|
||||
|
@ -1394,7 +1397,10 @@ void makeafire(int i, int firetype) {
|
|||
}
|
||||
|
||||
void explosion(int i, int x, int y, int z, int ownr) {
|
||||
auto spawnedactor = InsertActor(sprite[i].sectnum, EXPLO);
|
||||
auto actor = &whActors[i];
|
||||
auto& spr = actor->s();
|
||||
|
||||
auto spawnedactor = InsertActor(spr.sectnum, EXPLO);
|
||||
auto& spawned = spawnedactor->s();
|
||||
|
||||
boolean isWH2 = isWh2();
|
||||
|
@ -1418,7 +1424,7 @@ void explosion(int i, int x, int y, int z, int ownr) {
|
|||
spawned.xvel = (short) ((krand() & 511) - 256);
|
||||
spawned.yvel = (short) ((krand() & 511) - 256);
|
||||
spawned.zvel = (short) ((krand() & 511) - 256);
|
||||
spawned.owner = sprite[i].owner;
|
||||
spawnedactor->CopyOwner(actor);
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
if(!isWH2) {
|
||||
|
@ -1432,7 +1438,9 @@ void explosion(int i, int x, int y, int z, int ownr) {
|
|||
}
|
||||
|
||||
void explosion2(int i, int x, int y, int z, int ownr) {
|
||||
auto spawnedactor = InsertActor(sprite[i].sectnum, EXPLO);
|
||||
auto actor = &whActors[i];
|
||||
auto& spr = actor->s();
|
||||
auto spawnedactor = InsertActor(spr.sectnum, EXPLO);
|
||||
auto& spawned = spawnedactor->s();
|
||||
|
||||
boolean isWH2 = isWh2();
|
||||
|
@ -1457,7 +1465,7 @@ void explosion2(int i, int x, int y, int z, int ownr) {
|
|||
spawned.xvel = (short) ((krand() & 256) - 128);
|
||||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = (short) ((krand() & 256) - 128);
|
||||
spawned.owner = sprite[i].owner;
|
||||
spawnedactor->CopyOwner(actor);
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
||||
|
@ -1494,7 +1502,7 @@ void trailingsmoke(DWHActor* actor, boolean ball) {
|
|||
}
|
||||
spawned.pal = 0;
|
||||
|
||||
spawned.owner = spr.owner;
|
||||
spawnedactor->CopyOwner(actor);
|
||||
spawned.lotag = 256;
|
||||
spawned.hitag = 0;
|
||||
spawned.backuploc();
|
||||
|
@ -1523,8 +1531,8 @@ void icecubes(int i, int x, int y, int z, int ownr) {
|
|||
spawned.zvel = (short) ((krand() & 1023) - 512);
|
||||
|
||||
spawned.pal = 6;
|
||||
spawned.owner = spr.owner;
|
||||
|
||||
spawnedactor->CopyOwner(actor);
|
||||
|
||||
if(isWh2())
|
||||
spawned.lotag = 2048;
|
||||
else spawned.lotag = 999;
|
||||
|
@ -1537,10 +1545,11 @@ boolean damageactor(PLAYER& plr, DWHActor* hitactor, DWHActor* actor)
|
|||
{
|
||||
auto& spr = actor->s();
|
||||
auto& hitspr = hitactor->s();
|
||||
if (hitactor == plr.actor() && actor->CompareOwner(plr.actor()))
|
||||
if (hitactor == plr.actor() && actor->GetPlayerOwner() == plr.playerNum())
|
||||
return false;
|
||||
|
||||
if (hitactor == plr.actor() && spr.owner != plr.actor()->s().owner) {
|
||||
if (hitactor == plr.actor() && actor->GetPlayerOwner() != plr.playerNum())
|
||||
{
|
||||
if (plr.invincibletime > 0 || plr.godMode) {
|
||||
DeleteActor(actor);
|
||||
return false;
|
||||
|
@ -1609,7 +1618,7 @@ boolean damageactor(PLAYER& plr, DWHActor* hitactor, DWHActor* actor)
|
|||
}
|
||||
|
||||
if (hitactor == plr.actor() && !netgame) // Les 08/11/95
|
||||
if (spr.owner != hitactor->GetSpriteIndex()) {
|
||||
if (actor->GetOwner() != hitactor) {
|
||||
|
||||
// final int DEMONTYPE = 1; XXX
|
||||
// final int DRAGONTYPE = 3;
|
||||
|
@ -1834,7 +1843,7 @@ void trowajavlin(int s) {
|
|||
spawned.yvel = (short) ((krand() & 256) - 128);
|
||||
spawned.zvel = (short) ((krand() & 256) - 128);
|
||||
|
||||
spawned.owner = 0;
|
||||
spawnedactor->SetOwner(nullptr);
|
||||
spawned.lotag = 0;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
|
|
@ -90,8 +90,9 @@ void initplayersprite(PLAYER& plr) {
|
|||
plr.height = getPlayerHeight();
|
||||
plr.z = plr.Sector()->floorz - (plr.height << 8);
|
||||
|
||||
plr.spritenum = (short) insertsprite(plr.sector, (short) 0);
|
||||
auto& spr = sprite[plr.spritenum];
|
||||
auto pactor = InsertActor(plr.sector, (short)0);
|
||||
plr.spritenum = pactor->GetSpriteIndex();
|
||||
auto& spr = pactor->s();
|
||||
|
||||
plr.onsomething = 1;
|
||||
|
||||
|
@ -107,7 +108,7 @@ void initplayersprite(PLAYER& plr) {
|
|||
spr.xvel = 0;
|
||||
spr.yvel = 0;
|
||||
spr.zvel = 0;
|
||||
spr.owner = (short) (4096 + myconnectindex);
|
||||
pactor->SetPlayerOwner(myconnectindex);
|
||||
spr.lotag = 0;
|
||||
spr.hitag = 0;
|
||||
spr.pal = (short) (isWh2() ? 10 : 1);
|
||||
|
@ -427,7 +428,7 @@ void chunksofmeat(PLAYER& plr, DWHActor* hitActor, int hitx, int hity, int hitz,
|
|||
spawned.zvel = (short) ((krand() & 1023) - 512);
|
||||
if (newchunk == 1)
|
||||
spawned.zvel <<= 1;
|
||||
spawnedactor->CopyOwner(plr.actor());
|
||||
spawnedactor->SetPlayerOwner(plr.playerNum());
|
||||
spawned.lotag = 512;
|
||||
spawned.hitag = 0;
|
||||
spawned.pal = 0;
|
||||
|
|
Loading…
Reference in a new issue