mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 17:01:51 +00:00
- some more.
This commit is contained in:
parent
0d5ea0f314
commit
b848a9c980
2 changed files with 30 additions and 37 deletions
|
@ -1267,18 +1267,17 @@ int ActionScan(PLAYER *pPlayer, HitInfo* out)
|
|||
auto hitactor = gHitInfo.actor();
|
||||
if (!hitactor || !hitactor->hasX()) return -1;
|
||||
out->hitActor = hitactor;
|
||||
XSPRITE* pXSprite = &hitactor->x();
|
||||
if (hitactor->spr.statnum == kStatThing)
|
||||
{
|
||||
if (hitactor->spr.type == kThingDroppedLifeLeech)
|
||||
{
|
||||
if (gGameOptions.nGameType > 1 && findDroppedLeech(pPlayer, hitactor))
|
||||
return -1;
|
||||
pXSprite->data4 = pPlayer->nPlayer;
|
||||
pXSprite->isTriggered = 0;
|
||||
hitactor->xspr.data4 = pPlayer->nPlayer;
|
||||
hitactor->xspr.isTriggered = 0;
|
||||
}
|
||||
}
|
||||
if (pXSprite->Push)
|
||||
if (hitactor->xspr.Push)
|
||||
return 3;
|
||||
if (hitactor->spr.statnum == kStatDude)
|
||||
{
|
||||
|
@ -1290,7 +1289,7 @@ int ActionScan(PLAYER *pPlayer, HitInfo* out)
|
|||
hitactor->yvel += MulScale(y, t2, 16);
|
||||
hitactor->zvel += MulScale(z, t2, 16);
|
||||
}
|
||||
if (pXSprite->Push && !pXSprite->state && !pXSprite->isTriggered)
|
||||
if (hitactor->xspr.Push && !hitactor->xspr.state && !hitactor->xspr.isTriggered)
|
||||
trTriggerSprite(hitactor, kCmdSpritePush);
|
||||
}
|
||||
break;
|
||||
|
@ -1570,7 +1569,6 @@ void ProcessInput(PLAYER *pPlayer)
|
|||
case 3:
|
||||
{
|
||||
auto act = result.actor();
|
||||
XSPRITE *pXSprite = &act->x();
|
||||
int key = actor->xspr.key;
|
||||
if (actor->xspr.locked && pPlayer == gMe && actor->xspr.lockMsg)
|
||||
trTextOver(actor->xspr.lockMsg);
|
||||
|
@ -1671,7 +1669,6 @@ void ProcessInput(PLAYER *pPlayer)
|
|||
void playerProcess(PLAYER *pPlayer)
|
||||
{
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
XSPRITE *pXSprite = pPlayer->pXSprite;
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
powerupProcess(pPlayer);
|
||||
int top, bottom;
|
||||
|
@ -1724,7 +1721,7 @@ void playerProcess(PLAYER *pPlayer)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (pXSprite->height < 256)
|
||||
if (actor->xspr.height < 256)
|
||||
{
|
||||
bool running = pPlayer->isRunning && !cl_bloodvanillabobbing;
|
||||
pPlayer->bobAmp = (pPlayer->bobAmp+pPosture->pace[running]*4) & 2047;
|
||||
|
@ -1752,9 +1749,9 @@ void playerProcess(PLAYER *pPlayer)
|
|||
pPlayer->painEffect = ClipLow(pPlayer->painEffect-4, 0);
|
||||
pPlayer->blindEffect = ClipLow(pPlayer->blindEffect-4, 0);
|
||||
pPlayer->pickupEffect = ClipLow(pPlayer->pickupEffect-4, 0);
|
||||
if (pPlayer == gMe && gMe->pXSprite->health == 0)
|
||||
if (pPlayer == gMe && gMe->actor->xspr.health == 0)
|
||||
pPlayer->hand = 0;
|
||||
if (!pXSprite->health)
|
||||
if (!actor->xspr.health)
|
||||
return;
|
||||
pPlayer->isUnderwater = 0;
|
||||
if (pPlayer->posture == 1)
|
||||
|
@ -1945,13 +1942,12 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage
|
|||
nDamage = playerDamageArmor(pPlayer, nDamageType, nDamage);
|
||||
pPlayer->painEffect = ClipHigh(pPlayer->painEffect+(nDamage>>3), 600);
|
||||
|
||||
XSPRITE *pXSprite = pPlayer->pXSprite;
|
||||
DBloodActor* pActor = pPlayer->actor;
|
||||
DUDEINFO *pDudeInfo = getDudeInfo(pActor->spr.type);
|
||||
int nDeathSeqID = -1;
|
||||
int nKneelingPlayer = -1;
|
||||
bool va = playerSeqPlaying(pPlayer, 16);
|
||||
if (!pXSprite->health)
|
||||
if (!pActor->xspr.health)
|
||||
{
|
||||
if (va)
|
||||
{
|
||||
|
@ -1985,15 +1981,15 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage
|
|||
}
|
||||
else
|
||||
{
|
||||
int nHealth = pXSprite->health-nDamage;
|
||||
pXSprite->health = ClipLow(nHealth, 0);
|
||||
if (pXSprite->health > 0 && pXSprite->health < 16)
|
||||
int nHealth = pActor->xspr.health-nDamage;
|
||||
pActor->xspr.health = ClipLow(nHealth, 0);
|
||||
if (pActor->xspr.health > 0 && pActor->xspr.health < 16)
|
||||
{
|
||||
nDamageType = kDamageBullet;
|
||||
pXSprite->health = 0;
|
||||
pActor->xspr.health = 0;
|
||||
nHealth = -25;
|
||||
}
|
||||
if (pXSprite->health > 0)
|
||||
if (pActor->xspr.health > 0)
|
||||
{
|
||||
DAMAGEINFO *pDamageInfo = &damageInfo[nDamageType];
|
||||
int nSound;
|
||||
|
@ -2001,7 +1997,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage
|
|||
nSound = pDamageInfo->Kills[0];
|
||||
else
|
||||
nSound = pDamageInfo->Kills[Random(3)];
|
||||
if (nDamageType == kDamageDrown && pXSprite->medium == kMediumWater && !pPlayer->hand)
|
||||
if (nDamageType == kDamageDrown && pActor->xspr.medium == kMediumWater && !pPlayer->hand)
|
||||
nSound = 714;
|
||||
sfxPlay3DSound(pPlayer->actor, nSound, 0, 6);
|
||||
return nDamage;
|
||||
|
@ -2071,21 +2067,21 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage
|
|||
|
||||
#ifdef NOONE_EXTENSIONS
|
||||
// allow drop items and keys in multiplayer
|
||||
if (gModernMap && gGameOptions.nGameType != 0 && pPlayer->pXSprite->health <= 0) {
|
||||
if (gModernMap && gGameOptions.nGameType != 0 && pPlayer->actor->xspr.health <= 0) {
|
||||
|
||||
DBloodActor* pItem = nullptr;
|
||||
if (pPlayer->pXSprite->dropMsg && (pItem = actDropItem(pActor, pPlayer->pXSprite->dropMsg)) != NULL)
|
||||
if (pPlayer->actor->xspr.dropMsg && (pItem = actDropItem(pActor, pPlayer->actor->xspr.dropMsg)) != NULL)
|
||||
evPostActor(pItem, 500, kCallbackRemove);
|
||||
|
||||
if (pPlayer->pXSprite->key) {
|
||||
if (pPlayer->actor->xspr.key) {
|
||||
|
||||
int i; // if all players have this key, don't drop it
|
||||
for (i = connecthead; i >= 0; i = connectpoint2[i]) {
|
||||
if (!gPlayer[i].hasKey[pPlayer->pXSprite->key])
|
||||
if (!gPlayer[i].hasKey[pPlayer->actor->xspr.key])
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == 0 && (pItem = actDropKey(pActor, (pPlayer->pXSprite->key + kItemKeyBase) - 1)) != NULL)
|
||||
if (i == 0 && (pItem = actDropKey(pActor, (pPlayer->actor->xspr.key + kItemKeyBase) - 1)) != NULL)
|
||||
evPostActor(pItem, 500, kCallbackRemove);
|
||||
|
||||
}
|
||||
|
|
|
@ -1682,9 +1682,8 @@ void AltFireNapalm(int , PLAYER *pPlayer)
|
|||
auto missile = playerFireThing(pPlayer, 0, -4730, kThingNapalmBall, nSpeed);
|
||||
if (missile)
|
||||
{
|
||||
XSPRITE *pXSprite = &missile->x();
|
||||
pXSprite->data4 = ClipHigh(pPlayer->ammoCount[4], 12);
|
||||
UseAmmo(pPlayer, 4, pXSprite->data4);
|
||||
missile->xspr.data4 = ClipHigh(pPlayer->ammoCount[4], 12);
|
||||
UseAmmo(pPlayer, 4, missile->xspr.data4);
|
||||
seqSpawn(22, missile, -1);
|
||||
actBurnSprite(pPlayer->actor, missile, 600);
|
||||
evPostActor(missile, 0, kCallbackFXFlameLick);
|
||||
|
@ -1723,27 +1722,26 @@ void AltFireLifeLeech(int , PLAYER *pPlayer)
|
|||
if (missile)
|
||||
{
|
||||
missile->spr.cstat |= CSTAT_SPRITE_BLOOD_BIT1;
|
||||
XSPRITE *pXSprite = &missile->x();
|
||||
pXSprite->Push = 1;
|
||||
pXSprite->Proximity = 1;
|
||||
pXSprite->DudeLockout = 1;
|
||||
pXSprite->data4 = ClipHigh(pPlayer->ammoCount[4], 12);
|
||||
pXSprite->stateTimer = 1;
|
||||
missile->xspr.Push = 1;
|
||||
missile->xspr.Proximity = 1;
|
||||
missile->xspr.DudeLockout = 1;
|
||||
missile->xspr.data4 = ClipHigh(pPlayer->ammoCount[4], 12);
|
||||
missile->xspr.stateTimer = 1;
|
||||
evPostActor(missile, 120, kCallbackLeechStateTimer);
|
||||
if (gGameOptions.nGameType <= 1)
|
||||
{
|
||||
int nAmmo = pPlayer->ammoCount[8];
|
||||
if (nAmmo < 25 && pPlayer->pXSprite->health > unsigned((25-nAmmo)<<4))
|
||||
if (nAmmo < 25 && pPlayer->missile->xspr.health > unsigned((25-nAmmo)<<4))
|
||||
{
|
||||
actDamageSprite(actor, actor, kDamageSpirit, ((25-nAmmo)<<4));
|
||||
nAmmo = 25;
|
||||
}
|
||||
pXSprite->data3 = nAmmo;
|
||||
missile->xspr.data3 = nAmmo;
|
||||
UseAmmo(pPlayer, 8, nAmmo);
|
||||
}
|
||||
else
|
||||
{
|
||||
pXSprite->data3 = pPlayer->ammoCount[8];
|
||||
missile->xspr.data3 = pPlayer->ammoCount[8];
|
||||
pPlayer->ammoCount[8] = 0;
|
||||
}
|
||||
pPlayer->hasWeapon[9] = 0;
|
||||
|
@ -2690,8 +2688,7 @@ void teslaHit(DBloodActor *missileactor, int a2)
|
|||
continue;
|
||||
if (CheckSector(sectorMap, hitactor) && CheckProximity(hitactor, x, y, z, pSector, nDist))
|
||||
{
|
||||
XSPRITE *pXSprite = &hitactor->x();
|
||||
if (!pXSprite->locked)
|
||||
if (!hitactor->xspr.locked)
|
||||
{
|
||||
int dx = missileactor->spr.pos.X - hitactor->spr.pos.X;
|
||||
int dy = missileactor->spr.pos.Y - hitactor->spr.pos.Y;
|
||||
|
|
Loading…
Reference in a new issue