mirror of
https://github.com/ZDoom/Raze.git
synced 2025-04-03 06:20:56 +00:00
- do not use auto to make local copies of TObjPtr's.
This will just copy the object without performing the read barrier on the source data which is not what we want here. For these assignments the type must be explicit.
This commit is contained in:
parent
38c8f2a3b8
commit
138690d34e
9 changed files with 62 additions and 58 deletions
|
@ -185,7 +185,8 @@ class TObjPtr
|
|||
};
|
||||
public:
|
||||
TObjPtr() = default;
|
||||
TObjPtr(const TObjPtr<T> &q) = default;
|
||||
|
||||
TObjPtr(const TObjPtr<T> &q) = delete;
|
||||
|
||||
TObjPtr(T q) noexcept
|
||||
: pp(q)
|
||||
|
|
|
@ -5992,7 +5992,7 @@ static void actCheckExplosion()
|
|||
for (int i = 0; i < gPhysSpritesCount; i++)
|
||||
{
|
||||
if (gPhysSpritesList[i] == nullptr) continue;
|
||||
auto physactor = gPhysSpritesList[i];
|
||||
DBloodActor* physactor = gPhysSpritesList[i];
|
||||
spritetype* pDebris = &physactor->s();
|
||||
if (!pDebris->insector() || (pDebris->flags & kHitagFree) != 0) continue;
|
||||
|
||||
|
|
|
@ -1340,9 +1340,9 @@ void nnExtProcessSuperSprites()
|
|||
for (int a = connecthead; a != -1; a = connectpoint2[a])
|
||||
{
|
||||
pPlayer = &gPlayer[a];
|
||||
auto pact = pPlayer->actor;
|
||||
DBloodActor* pact = pPlayer->actor;
|
||||
|
||||
if (pact->hit.hit.type == kHitSprite && pact->hit.hit.actor() == debrisactor)
|
||||
if (pact && pact->hit.hit.type == kHitSprite && pact->hit.hit.actor() == debrisactor)
|
||||
{
|
||||
int nSpeed = approxDist(pact->xvel, pact->yvel);
|
||||
nSpeed = ClipLow(nSpeed - MulScale(nSpeed, mass, 6), 0x9000 - (mass << 3));
|
||||
|
@ -1582,7 +1582,7 @@ int debrisGetFreeIndex(void)
|
|||
|
||||
void debrisConcuss(DBloodActor* owneractor, int listIndex, int x, int y, int z, int dmg)
|
||||
{
|
||||
auto actor = gPhysSpritesList[listIndex];
|
||||
DBloodActor* actor = gPhysSpritesList[listIndex];
|
||||
if (actor != nullptr && actor->hasX())
|
||||
{
|
||||
spritetype* pSprite = &actor->s();
|
||||
|
@ -1652,7 +1652,7 @@ void debrisBubble(DBloodActor* actor)
|
|||
|
||||
void debrisMove(int listIndex)
|
||||
{
|
||||
auto actor = gPhysSpritesList[listIndex];
|
||||
DBloodActor* actor = gPhysSpritesList[listIndex];
|
||||
XSPRITE* pXSprite = &actor->x();
|
||||
spritetype* pSprite = &actor->s();
|
||||
auto pSector = pSprite->sector();
|
||||
|
@ -4324,21 +4324,21 @@ bool condCheckDude(DBloodActor* aCond, int cmpOp, bool PUSH)
|
|||
case kDudeModernCustomBurning:
|
||||
switch (cond) {
|
||||
case 20: // life leech is thrown?
|
||||
{
|
||||
auto act = objActor->genDudeExtra.pLifeLeech;
|
||||
if (!act) return false;
|
||||
{
|
||||
DBloodActor* act = objActor->genDudeExtra.pLifeLeech;
|
||||
if (!act) return false;
|
||||
else if (PUSH) condPush(aCond, act);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
case 21: // life leech is destroyed?
|
||||
{
|
||||
auto act = objActor->genDudeExtra.pLifeLeech;
|
||||
if (!act) return false;
|
||||
if (objActor->GetSpecialOwner()) return true;
|
||||
{
|
||||
DBloodActor* act = objActor->genDudeExtra.pLifeLeech;
|
||||
if (!act) return false;
|
||||
if (objActor->GetSpecialOwner()) return true;
|
||||
else if (PUSH) condPush(aCond, act);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
case 22: // are required amount of dudes is summoned?
|
||||
return condCmp(objActor->genDudeExtra.slaveCount, arg1, arg2, cmpOp);
|
||||
|
@ -8400,9 +8400,9 @@ DBloodActor* aiPatrolSearchTargets(DBloodActor* actor)
|
|||
|
||||
if (hearDist)
|
||||
{
|
||||
auto act = pPlayer->actor;
|
||||
DBloodActor* act = pPlayer->actor;
|
||||
itCanHear = (!deaf && (nDist < hearDist || hearChance > 0));
|
||||
if (itCanHear && nDist < feelDist && (act->xvel || act->yvel || act->zvel))
|
||||
if (act && itCanHear && nDist < feelDist && (act->xvel || act->yvel || act->zvel))
|
||||
hearChance += ClipLow(mulscale8(1, ClipLow(((feelDist - nDist) + (abs(act->xvel) + abs(act->yvel) + abs(act->zvel))) >> 6, 0)), 0);
|
||||
}
|
||||
|
||||
|
|
|
@ -753,7 +753,7 @@ void playerStart(int nPlayer, int bNewLevel)
|
|||
XSPRITE* pXCtrl = &iactor->x();
|
||||
if (pXCtrl->data1 == pPlayer->nPlayer + 1)
|
||||
{
|
||||
auto SpriteOld = iactor->prevmarker;
|
||||
DBloodActor* SpriteOld = iactor->prevmarker;
|
||||
trPlayerCtrlLink(iactor, pPlayer, (SpriteOld == nullptr)); // this modifies iactor's prevmarker field!
|
||||
if (SpriteOld)
|
||||
condUpdateObjectIndex(SpriteOld, iactor->prevmarker);
|
||||
|
@ -1355,7 +1355,7 @@ void ProcessInput(PLAYER *pPlayer)
|
|||
pPlayer->horizon.resetadjustment();
|
||||
pPlayer->angle.resetadjustment();
|
||||
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
spritetype *pSprite = pPlayer->pSprite;
|
||||
XSPRITE *pXSprite = pPlayer->pXSprite;
|
||||
POSTURE *pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
|
@ -1373,7 +1373,7 @@ void ProcessInput(PLAYER *pPlayer)
|
|||
if (pXSprite->health == 0)
|
||||
{
|
||||
bool bSeqStat = playerSeqPlaying(pPlayer, 16);
|
||||
auto fragger = pPlayer->fragger;
|
||||
DBloodActor* fragger = pPlayer->fragger;
|
||||
if (fragger)
|
||||
{
|
||||
pPlayer->angle.addadjustment(getincanglebam(pPlayer->angle.ang, bvectangbam(fragger->s().x - pSprite->x, fragger->s().y - pSprite->y)));
|
||||
|
@ -1577,14 +1577,14 @@ void ProcessInput(PLAYER *pPlayer)
|
|||
pPlayer->handTime = ClipLow(pPlayer->handTime-4*(6-gGameOptions.nDifficulty), 0);
|
||||
if (pPlayer->handTime <= 0 && pPlayer->hand)
|
||||
{
|
||||
auto pactor = pPlayer->actor;
|
||||
DBloodActor* pactor = pPlayer->actor;
|
||||
auto spawned = actSpawnDude(pactor, kDudeHand, pPlayer->pSprite->clipdist<<1, 0);
|
||||
if (spawned)
|
||||
{
|
||||
spritetype* pSprite2 = &spawned->s();
|
||||
spritetype* pSprite2 = &spawned->s();
|
||||
pSprite2->ang = (pPlayer->pSprite->ang + 1024) & 2047;
|
||||
int x = bcos(pPlayer->pSprite->ang);
|
||||
int y = bsin(pPlayer->pSprite->ang);
|
||||
int x = bcos(pPlayer->pSprite->ang);
|
||||
int y = bsin(pPlayer->pSprite->ang);
|
||||
spawned->xvel = pPlayer->actor->xvel + MulScale(0x155555, x, 14);
|
||||
spawned->yvel = pPlayer->actor->yvel + MulScale(0x155555, y, 14);
|
||||
spawned->zvel = pPlayer->actor->zvel;
|
||||
|
@ -1660,7 +1660,7 @@ void ProcessInput(PLAYER *pPlayer)
|
|||
|
||||
void playerProcess(PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
spritetype *pSprite = pPlayer->pSprite;
|
||||
XSPRITE *pXSprite = pPlayer->pXSprite;
|
||||
POSTURE* pPosture = &pPlayer->pPosture[pPlayer->lifeMode][pPlayer->posture];
|
||||
|
@ -1902,7 +1902,7 @@ int playerDamageArmor(PLAYER *pPlayer, DAMAGE_TYPE nType, int nDamage)
|
|||
|
||||
void flagDropped(PLAYER *pPlayer, int a2)
|
||||
{
|
||||
auto playeractor = pPlayer->actor;
|
||||
DBloodActor* playeractor = pPlayer->actor;
|
||||
DBloodActor* actor;
|
||||
char buffer[80];
|
||||
switch (a2)
|
||||
|
@ -1938,7 +1938,7 @@ int playerDamageSprite(DBloodActor* source, PLAYER *pPlayer, DAMAGE_TYPE nDamage
|
|||
|
||||
spritetype *pSprite = pPlayer->pSprite;
|
||||
XSPRITE *pXSprite = pPlayer->pXSprite;
|
||||
auto pActor = pPlayer->actor;
|
||||
DBloodActor* pActor = pPlayer->actor;
|
||||
DUDEINFO *pDudeInfo = getDudeInfo(pSprite->type);
|
||||
int nDeathSeqID = -1;
|
||||
int nKneelingPlayer = -1;
|
||||
|
@ -2104,7 +2104,7 @@ int UseAmmo(PLAYER *pPlayer, int nAmmoType, int nDec)
|
|||
|
||||
void voodooTarget(PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
int v4 = pPlayer->aim.dz;
|
||||
int dz = pPlayer->zWeapon-pPlayer->pSprite->z;
|
||||
if (UseAmmo(pPlayer, 9, 0) < 8)
|
||||
|
|
|
@ -204,7 +204,7 @@ void QAV::Draw(double x, double y, int ticks, int stat, int shade, int palnum, b
|
|||
|
||||
void QAV::Play(int start, int end, int nCallback, PLAYER *pData)
|
||||
{
|
||||
auto pActor = pData ? pData->actor : nullptr;
|
||||
auto pActor = pData ? pData->actor.Get() : nullptr;
|
||||
assert(ticksPerFrame > 0);
|
||||
int frame;
|
||||
int ticks;
|
||||
|
|
|
@ -173,7 +173,7 @@ static bool BannedUnderwater(int nWeapon)
|
|||
return nWeapon == kWeapSpraycan || nWeapon == kWeapDynamite;
|
||||
}
|
||||
|
||||
static bool CheckWeaponAmmo(PLAYER *pPlayer, int weapon, int ammotype, int count)
|
||||
static bool CheckWeaponAmmo(const PLAYER *pPlayer, int weapon, int ammotype, int count)
|
||||
{
|
||||
if (gInfiniteAmmo)
|
||||
return 1;
|
||||
|
@ -186,7 +186,7 @@ static bool CheckWeaponAmmo(PLAYER *pPlayer, int weapon, int ammotype, int count
|
|||
return pPlayer->ammoCount[ammotype] >= count;
|
||||
}
|
||||
|
||||
static bool CheckAmmo(PLAYER *pPlayer, int ammotype, int count)
|
||||
static bool CheckAmmo(const PLAYER *pPlayer, int ammotype, int count)
|
||||
{
|
||||
if (gInfiniteAmmo)
|
||||
return 1;
|
||||
|
@ -199,7 +199,7 @@ static bool CheckAmmo(PLAYER *pPlayer, int ammotype, int count)
|
|||
return pPlayer->ammoCount[ammotype] >= count;
|
||||
}
|
||||
|
||||
static bool checkAmmo2(PLAYER *pPlayer, int ammotype, int amount)
|
||||
static bool checkAmmo2(const PLAYER *pPlayer, int ammotype, int amount)
|
||||
{
|
||||
if (gInfiniteAmmo)
|
||||
return 1;
|
||||
|
@ -1059,7 +1059,7 @@ void WeaponUpdateState(PLAYER *pPlayer)
|
|||
|
||||
void FirePitchfork(int, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
Aim *aim = &pPlayer->aim;
|
||||
int r1 = Random2(2000);
|
||||
int r2 = Random2(2000);
|
||||
|
@ -1216,7 +1216,7 @@ enum { kMaxShotgunBarrels = 4 };
|
|||
|
||||
void FireShotgun(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxShotgunBarrels);
|
||||
if (nTrigger == 1)
|
||||
{
|
||||
|
@ -1263,7 +1263,7 @@ void EjectShell(int, PLAYER *pPlayer)
|
|||
|
||||
void FireTommy(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
Aim *aim = &pPlayer->aim;
|
||||
sfxPlay3DSound(pPlayer->actor, 431, -1, 0);
|
||||
switch (nTrigger)
|
||||
|
@ -1302,7 +1302,7 @@ enum { kMaxSpread = 14 };
|
|||
|
||||
void FireSpread(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxSpread);
|
||||
Aim *aim = &pPlayer->aim;
|
||||
int angle = (getangle(aim->dx, aim->dy)+((112*(nTrigger-1))/14-56))&2047;
|
||||
|
@ -1324,7 +1324,7 @@ void FireSpread(int nTrigger, PLAYER *pPlayer)
|
|||
|
||||
void AltFireSpread(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxSpread);
|
||||
Aim *aim = &pPlayer->aim;
|
||||
int angle = (getangle(aim->dx, aim->dy)+((112*(nTrigger-1))/14-56))&2047;
|
||||
|
@ -1354,7 +1354,7 @@ void AltFireSpread(int nTrigger, PLAYER *pPlayer)
|
|||
|
||||
void AltFireSpread2(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
assert(nTrigger > 0 && nTrigger <= kMaxSpread);
|
||||
Aim *aim = &pPlayer->aim;
|
||||
int angle = (getangle(aim->dx, aim->dy)+((112*(nTrigger-1))/14-56))&2047;
|
||||
|
@ -1447,15 +1447,15 @@ void AltFireFlare(int nTrigger, PLAYER *pPlayer)
|
|||
void FireVoodoo(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
nTrigger--;
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
spritetype *pSprite = pPlayer->pSprite;
|
||||
if (nTrigger == 4)
|
||||
{
|
||||
actDamageSprite(actor, actor, kDamageBullet, 1<<4);
|
||||
return;
|
||||
}
|
||||
assert(pPlayer->voodooTarget != nullptr);
|
||||
auto targetactor = pPlayer->voodooTarget;
|
||||
DBloodActor* targetactor = pPlayer->voodooTarget;
|
||||
if (!targetactor) return;
|
||||
spritetype *pTarget = &targetactor->s();
|
||||
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, pTarget))
|
||||
return;
|
||||
|
@ -1505,7 +1505,7 @@ void FireVoodoo(int nTrigger, PLAYER *pPlayer)
|
|||
|
||||
void AltFireVoodoo(int nTrigger, PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
if (nTrigger == 2) {
|
||||
|
||||
// by NoOne: trying to simulate v1.0x voodoo here.
|
||||
|
@ -1516,7 +1516,8 @@ void AltFireVoodoo(int nTrigger, PLAYER *pPlayer)
|
|||
{
|
||||
for (int i = 0; i < pPlayer->aimTargetsCount; i++)
|
||||
{
|
||||
auto targetactor = pPlayer->aimTargets[i];
|
||||
DBloodActor* targetactor = pPlayer->aimTargets[i];
|
||||
if (!targetactor) continue;
|
||||
spritetype* pTarget = &targetactor->s();
|
||||
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, pTarget))
|
||||
continue;
|
||||
|
@ -1552,7 +1553,8 @@ void AltFireVoodoo(int nTrigger, PLAYER *pPlayer)
|
|||
int v4 = pPlayer->ammoCount[9] - (pPlayer->ammoCount[9] / nCount) * nCount;
|
||||
for (int i = 0; i < pPlayer->aimTargetsCount; i++)
|
||||
{
|
||||
auto targetactor = pPlayer->aimTargets[i];
|
||||
DBloodActor* targetactor = pPlayer->aimTargets[i];
|
||||
if (!targetactor) continue;
|
||||
spritetype* pTarget = &targetactor->s();
|
||||
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, pTarget))
|
||||
continue;
|
||||
|
@ -1706,7 +1708,7 @@ void FireLifeLeech(int nTrigger, PLAYER *pPlayer)
|
|||
int r1 = Random2(2000);
|
||||
int r2 = Random2(2000);
|
||||
int r3 = Random2(1000);
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
auto missileActor = playerFireMissile(pPlayer, 0, pPlayer->aim.dx+r1, pPlayer->aim.dy+r2, pPlayer->aim.dz+r3, 315);
|
||||
if (missileActor)
|
||||
{
|
||||
|
@ -1722,7 +1724,7 @@ void FireLifeLeech(int nTrigger, PLAYER *pPlayer)
|
|||
|
||||
void AltFireLifeLeech(int , PLAYER *pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
sfxPlay3DSound(pPlayer->actor, 455, 2, 0);
|
||||
auto missile = playerFireThing(pPlayer, 0, -4730, kThingDroppedLifeLeech, 0x19999);
|
||||
if (missile)
|
||||
|
@ -1758,7 +1760,7 @@ void AltFireLifeLeech(int , PLAYER *pPlayer)
|
|||
|
||||
void FireBeast(int , PLAYER * pPlayer)
|
||||
{
|
||||
auto actor = pPlayer->actor;
|
||||
DBloodActor* actor = pPlayer->actor;
|
||||
int r1 = Random2(2000);
|
||||
int r2 = Random2(2000);
|
||||
int r3 = Random2(2000);
|
||||
|
@ -1792,7 +1794,7 @@ int WeaponUpgrade(PLAYER *pPlayer, int newWeapon)
|
|||
int OrderNext[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 1 };
|
||||
int OrderPrev[] = { 12, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1 };
|
||||
|
||||
static int WeaponFindNext(PLAYER *pPlayer, int *a2, int bDir)
|
||||
static int WeaponFindNext(const PLAYER *pPlayer, int *a2, int bDir)
|
||||
{
|
||||
int weapon = pPlayer->curWeapon;
|
||||
do
|
||||
|
@ -1825,7 +1827,7 @@ static int WeaponFindNext(PLAYER *pPlayer, int *a2, int bDir)
|
|||
return weapon;
|
||||
}
|
||||
|
||||
static int WeaponFindLoaded(PLAYER *pPlayer, int *a2)
|
||||
static int WeaponFindLoaded(const PLAYER *pPlayer, int *a2)
|
||||
{
|
||||
int v4 = 1;
|
||||
int v14 = 0;
|
||||
|
@ -2246,18 +2248,19 @@ void WeaponProcess(PLAYER *pPlayer) {
|
|||
{
|
||||
if (prevNewWeaponVal == WeaponSel_Next || prevNewWeaponVal == WeaponSel_Prev) // if player switched weapons
|
||||
{
|
||||
PLAYER tmpPlayer = *pPlayer;
|
||||
tmpPlayer.curWeapon = pPlayer->newWeapon; // set current banned weapon to curweapon so WeaponFindNext() can find the next weapon
|
||||
int saveweapon = pPlayer->curWeapon;
|
||||
pPlayer->curWeapon = pPlayer->newWeapon; // set current banned weapon to curweapon so WeaponFindNext() can find the next weapon
|
||||
for (int i = 0; i < 3; i++) // attempt twice to find a new weapon
|
||||
{
|
||||
tmpPlayer.curWeapon = WeaponFindNext(&tmpPlayer, NULL, (char)(prevNewWeaponVal == WeaponSel_Next));
|
||||
if (!BannedUnderwater(tmpPlayer.curWeapon)) // if new weapon is not a banned weapon, set to new current weapon
|
||||
pPlayer->curWeapon = WeaponFindNext(pPlayer, NULL, (char)(prevNewWeaponVal == WeaponSel_Next));
|
||||
if (!BannedUnderwater(pPlayer->curWeapon)) // if new weapon is not a banned weapon, set to new current weapon
|
||||
{
|
||||
pPlayer->newWeapon = tmpPlayer.curWeapon;
|
||||
pPlayer->newWeapon = pPlayer->curWeapon;
|
||||
pPlayer->weaponMode[pPlayer->newWeapon] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pPlayer->curWeapon = saveweapon;
|
||||
}
|
||||
}
|
||||
if (pPlayer->newWeapon == kWeapDynamite)
|
||||
|
|
|
@ -5162,7 +5162,7 @@ void alterang(int ang, DDukeActor* actor, int playernum)
|
|||
s->ang = WindDir;
|
||||
else if (ang & seekplayer)
|
||||
{
|
||||
auto holoduke = !isRR()? ps[playernum].holoduke_on : nullptr;
|
||||
DDukeActor* holoduke = !isRR()? ps[playernum].holoduke_on.Get() : nullptr;
|
||||
|
||||
// NOTE: looks like 'Owner' is set to target sprite ID...
|
||||
|
||||
|
|
|
@ -1461,7 +1461,7 @@ static bool movefireball(DDukeActor* actor)
|
|||
if (actor->temp_data[0] >= 1 && actor->temp_data[0] < 6)
|
||||
{
|
||||
float siz = 1.0f - (actor->temp_data[0] * 0.2f);
|
||||
auto trail = actor->temp_actor;
|
||||
DDukeActor* trail = actor->temp_actor;
|
||||
auto ball = spawn(actor, FIREBALL);
|
||||
if (ball)
|
||||
{
|
||||
|
@ -2474,7 +2474,7 @@ static void greenslime(DDukeActor *actor)
|
|||
|
||||
if (t[0] == -2) //On top of somebody (an enemy)
|
||||
{
|
||||
auto s5 = actor->temp_actor;
|
||||
DDukeActor* s5 = actor->temp_actor;
|
||||
makeitfall(actor);
|
||||
if (s5)
|
||||
{
|
||||
|
|
|
@ -1090,7 +1090,7 @@ static void chickenarrow(DDukeActor* actor)
|
|||
spawn(actor, MONEY);
|
||||
}
|
||||
}
|
||||
auto ts = actor->seek_actor;
|
||||
DDukeActor* ts = actor->seek_actor;
|
||||
if (!ts) return;
|
||||
|
||||
if (ts->s->extra <= 0)
|
||||
|
|
Loading…
Reference in a new issue