mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-22 17:01:08 +00:00
- consolidated checkhitdefault functions.
This commit is contained in:
parent
6fd4368592
commit
bfcceccc98
8 changed files with 144 additions and 239 deletions
|
@ -324,16 +324,16 @@ void movetransports_d(void)
|
|||
|
||||
if (act->spr.pal == 0)
|
||||
{
|
||||
auto k = spawn(Owner, DukeTransporterBeamClass);
|
||||
if (k) S_PlayActorSound(TELEPORTER, k);
|
||||
auto beam = spawn(Owner, DukeTransporterBeamClass);
|
||||
if (beam) S_PlayActorSound(TELEPORTER, beam);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (!(sectlotag == 1 && ps[p].on_ground == 1)) break;
|
||||
else if (!(sectlotag == ST_1_ABOVE_WATER && ps[p].on_ground == 1)) break;
|
||||
|
||||
if (onfloorz == 0 && abs(act->spr.pos.Z - ps[p].GetActor()->getOffsetZ()) < 24)
|
||||
if (onfloorz == 0 && fabs(act->spr.pos.Z - ps[p].GetActor()->getOffsetZ()) < 24)
|
||||
if ((ps[p].jetpack_on == 0) || (ps[p].jetpack_on && (PlayerInput(p, SB_JUMP) || ps[p].sync.uvel > 0)) ||
|
||||
(ps[p].jetpack_on && (PlayerInput(p, SB_CROUCH) || ps[p].sync.uvel < 0)))
|
||||
{
|
||||
|
@ -426,7 +426,7 @@ void movetransports_d(void)
|
|||
if ((krand() & 255) < 32)
|
||||
spawn(act2, DukeWaterSplashClass);
|
||||
|
||||
if (sectlotag == 1)
|
||||
if (sectlotag == ST_1_ABOVE_WATER)
|
||||
for (int l = 0; l < 9; l++)
|
||||
{
|
||||
auto q = spawn(ps[p].GetActor(), DukeWaterBubbleClass);
|
||||
|
|
|
@ -236,37 +236,34 @@ int ifhitbyweapon_r(DDukeActor *actor)
|
|||
void movetransports_r(void)
|
||||
{
|
||||
uint8_t warpdir = 0;
|
||||
int k, p, sectlotag;
|
||||
int onfloorz;
|
||||
|
||||
//Transporters
|
||||
|
||||
DukeStatIterator iti(STAT_TRANSPORT);
|
||||
while (auto act = iti.Next())
|
||||
{
|
||||
auto sectp = act->sector();
|
||||
sectlotag = sectp->lotag;
|
||||
|
||||
auto Owner = act->GetOwner();
|
||||
if (Owner == act || Owner == nullptr)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
onfloorz = act->temp_data[4];
|
||||
auto sectp = act->sector();
|
||||
int sectlotag = sectp->lotag;
|
||||
int onfloorz = act->temp_data[4];
|
||||
|
||||
if (act->counter > 0) act->counter--;
|
||||
|
||||
DukeSectIterator itj(act->sector());
|
||||
while (auto act2 = itj.Next())
|
||||
while (auto act2 = itj.Next())
|
||||
{
|
||||
switch (act2->spr.statnum)
|
||||
{
|
||||
case STAT_PLAYER: // Player
|
||||
case STAT_PLAYER:
|
||||
|
||||
if (act2->GetOwner())
|
||||
{
|
||||
p = act2->PlayerIndex();
|
||||
int p = act2->PlayerIndex();
|
||||
|
||||
ps[p].on_warping_sector = 1;
|
||||
|
||||
|
@ -277,12 +274,12 @@ void movetransports_r(void)
|
|||
spawn(act, DukeTransporterBeamClass);
|
||||
S_PlayActorSound(TELEPORTER, act);
|
||||
|
||||
for (k = connecthead; k >= 0; k = connectpoint2[k])
|
||||
if (ps[k].cursector == Owner->sector())
|
||||
{
|
||||
ps[k].frag_ps = p;
|
||||
ps[k].GetActor()->spr.extra = 0;
|
||||
}
|
||||
for (int k = connecthead; k >= 0; k = connectpoint2[k])
|
||||
if (ps[k].cursector == Owner->sector())
|
||||
{
|
||||
ps[k].frag_ps = p;
|
||||
ps[k].GetActor()->spr.extra = 0;
|
||||
}
|
||||
|
||||
ps[p].GetActor()->PrevAngles.Yaw = ps[p].GetActor()->spr.Angles.Yaw = Owner->spr.Angles.Yaw;
|
||||
|
||||
|
@ -326,7 +323,7 @@ void movetransports_r(void)
|
|||
break;
|
||||
}
|
||||
|
||||
k = 0;
|
||||
int k = 0;
|
||||
|
||||
if (ud.mapflags & MFLAG_ALLSECTORTYPES)
|
||||
{
|
||||
|
@ -370,7 +367,7 @@ void movetransports_r(void)
|
|||
{
|
||||
FX_StopAllSounds();
|
||||
}
|
||||
S_PlayActorSound(DUKE_GASP, ps[p].GetActor());
|
||||
S_PlayActorSound(DUKE_GASP, act2);
|
||||
|
||||
ps[p].GetActor()->spr.pos.Z = Owner->sector()->floorz - 7 + gs.playerheight;
|
||||
ps[p].GetActor()->backupz();
|
||||
|
@ -381,14 +378,14 @@ void movetransports_r(void)
|
|||
ps[p].GetActor()->spr.pos.XY() += Owner->spr.pos.XY() - act->spr.pos.XY();
|
||||
ps[p].GetActor()->backupvec2();
|
||||
|
||||
if (Owner->GetOwner() != Owner)
|
||||
if (!Owner || Owner->GetOwner() != Owner)
|
||||
ps[p].transporter_hold = -2;
|
||||
ps[p].setCursector(Owner->sector());
|
||||
|
||||
ChangeActorSect(act2, Owner->sector());
|
||||
|
||||
if ((krand() & 255) < 32)
|
||||
spawn(ps[p].GetActor(), DukeWaterSplashClass);
|
||||
spawn(act2, DukeWaterSplashClass);
|
||||
}
|
||||
else if (k == 2)
|
||||
{
|
||||
|
@ -405,6 +402,8 @@ void movetransports_r(void)
|
|||
break;
|
||||
|
||||
case STAT_ACTOR:
|
||||
if ((act2->flags3 & SFLAG3_DONTDIVEALIVE) && act2->spr.extra > 0) continue;
|
||||
[[fallthrough]];
|
||||
case STAT_PROJECTILE:
|
||||
case STAT_MISC:
|
||||
case STAT_DUMMYPLAYER:
|
||||
|
|
|
@ -39,8 +39,6 @@ bool checkaccessswitch_d(int snum, int pal, DDukeActor *act, walltype* w);
|
|||
bool checkaccessswitch_r(int snum, int pal, DDukeActor* act, walltype* w);
|
||||
void activatebysector_d(sectortype* sect, DDukeActor* j);
|
||||
void activatebysector_r(sectortype* sect, DDukeActor* j);
|
||||
void checkhitdefault_d(DDukeActor* i, DDukeActor* sn);
|
||||
void checkhitdefault_r(DDukeActor* i, DDukeActor* sn);
|
||||
void checksectors_d(int snum);
|
||||
void checksectors_r(int snum);
|
||||
|
||||
|
@ -81,7 +79,6 @@ void SetDispatcher()
|
|||
initactorflags_d,
|
||||
checkaccessswitch_d,
|
||||
activatebysector_d,
|
||||
checkhitdefault_d,
|
||||
checksectors_d,
|
||||
|
||||
addweapon_d,
|
||||
|
@ -105,7 +102,6 @@ void SetDispatcher()
|
|||
initactorflags_r,
|
||||
checkaccessswitch_r,
|
||||
activatebysector_r,
|
||||
checkhitdefault_r,
|
||||
checksectors_r,
|
||||
|
||||
addweapon_r,
|
||||
|
|
|
@ -77,7 +77,6 @@ struct Dispatcher
|
|||
void (*initactorflags)();
|
||||
bool (*checkaccessswitch)(int snum, int switchpal, DDukeActor* act, walltype* w);
|
||||
void (*activatebysector)(sectortype* sect, DDukeActor* j);
|
||||
void (*checkhitdefault)(DDukeActor* i, DDukeActor* sn);
|
||||
void (*checksectors)(int low);
|
||||
|
||||
void (*addweapon)(player_struct *p, int weapon, bool wswitch);
|
||||
|
|
|
@ -1376,6 +1376,125 @@ bool checkhitceiling(sectortype* sectp)
|
|||
return false;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void checkhitdefault(DDukeActor* targ, DDukeActor* proj)
|
||||
{
|
||||
if ((targ->spr.cstat & CSTAT_SPRITE_ALIGNMENT_WALL) && targ->spr.hitag == 0 && targ->spr.lotag == 0 && targ->spr.statnum == STAT_DEFAULT)
|
||||
return;
|
||||
|
||||
if (((proj->flags3 & SFLAG3_CANHURTSHOOTER) || proj->GetOwner() != targ) && targ->spr.statnum != STAT_PROJECTILE)
|
||||
{
|
||||
if (badguy(targ))
|
||||
{
|
||||
if (targ->spr.scale.X < targ->FloatVar(NAME_minhitscale))
|
||||
return;
|
||||
|
||||
if (proj->flags4 & SFLAG4_DOUBLEHITDAMAGE) proj->spr.extra <<= 1;
|
||||
|
||||
if (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS))
|
||||
{
|
||||
auto spawned = spawn(proj, DukeJibs6Class);
|
||||
if (spawned)
|
||||
{
|
||||
if (proj->spr.pal == 6)
|
||||
spawned->spr.pal = 6;
|
||||
spawned->spr.pos.Z += 4;
|
||||
spawned->vel.X = 1;
|
||||
spawned->spr.scale = DVector2(0.375, 0.375);
|
||||
spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2);
|
||||
}
|
||||
}
|
||||
|
||||
auto Owner = proj->GetOwner();
|
||||
|
||||
if (Owner && Owner->isPlayer() && !(targ->flags3 & SFLAG3_NOSHOTGUNBLOOD))
|
||||
if (ps[Owner->PlayerIndex()].curr_weapon == SHOTGUN_WEAPON)
|
||||
{
|
||||
shoot(targ, DukeBloodSplat3Class);
|
||||
shoot(targ, DukeBloodSplat1Class);
|
||||
shoot(targ, DukeBloodSplat2Class);
|
||||
shoot(targ, DukeBloodSplat4Class);
|
||||
}
|
||||
|
||||
if (!(targ->flags2 & SFLAG2_NODAMAGEPUSH))
|
||||
{
|
||||
if ((targ->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
|
||||
targ->spr.Angles.Yaw = proj->spr.Angles.Yaw + DAngle180;
|
||||
|
||||
targ->vel.X = -proj->spr.extra * 0.25;
|
||||
auto sp = targ->sector();
|
||||
pushmove(targ->spr.pos, &sp, 8, 4, 4, CLIPMASK0);
|
||||
if (sp != targ->sector() && sp != nullptr)
|
||||
ChangeActorSect(targ, sp);
|
||||
}
|
||||
|
||||
if (targ->spr.statnum == STAT_ZOMBIEACTOR)
|
||||
{
|
||||
ChangeActorStat(targ, STAT_ACTOR);
|
||||
targ->timetosleep = SLEEPTIME;
|
||||
}
|
||||
if (!shrinkersizecheck(proj->GetClass(), targ)) return;
|
||||
}
|
||||
|
||||
if (targ->spr.statnum != STAT_ZOMBIEACTOR)
|
||||
{
|
||||
if ((proj->flags2 & SFLAG2_FREEZEDAMAGE) && ((targ->isPlayer() && targ->spr.pal == 1) || (gs.freezerhurtowner == 0 && proj->GetOwner() == targ)))
|
||||
return;
|
||||
|
||||
auto hitpic = static_cast<PClassActor*>(proj->GetClass());
|
||||
auto Owner = proj->GetOwner();
|
||||
if (Owner && Owner->isPlayer())
|
||||
{
|
||||
if (targ->isPlayer() && ud.coop != 0 && ud.ffire == 0)
|
||||
return;
|
||||
|
||||
auto tOwner = targ->GetOwner();
|
||||
if (hitpic == DukeFireballClass && tOwner && tOwner->GetClass() != DukeFireballClass) // hack alert! Even with damage types this special check needs to stay.
|
||||
hitpic = DukeFlamethrowerFlameClass;
|
||||
}
|
||||
|
||||
targ->attackertype = hitpic;
|
||||
targ->hitextra += proj->spr.extra;
|
||||
if (!(targ->flags4 & SFLAG4_NODAMAGETURN))
|
||||
targ->hitang = proj->spr.Angles.Yaw;
|
||||
targ->SetHitOwner(Owner);
|
||||
}
|
||||
|
||||
if (targ->spr.statnum == STAT_PLAYER)
|
||||
{
|
||||
auto p = targ->PlayerIndex();
|
||||
if (ps[p].newOwner != nullptr)
|
||||
{
|
||||
ps[p].newOwner = nullptr;
|
||||
ps[p].GetActor()->restoreloc();
|
||||
|
||||
updatesector(ps[p].GetActor()->getPosWithOffsetZ(), &ps[p].cursector);
|
||||
|
||||
DukeStatIterator it(STAT_ACTOR);
|
||||
while (auto itActor = it.Next())
|
||||
{
|
||||
if (itActor->flags2 & SFLAG2_CAMERA) itActor->spr.yint = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!shrinkersizecheck(proj->GetClass(), targ))
|
||||
return;
|
||||
|
||||
auto hitowner = targ->GetHitOwner();
|
||||
if (!hitowner || !hitowner->isPlayer())
|
||||
if (ud.player_skill >= 3)
|
||||
proj->spr.extra += (proj->spr.extra >> 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
|
|
@ -152,123 +152,6 @@ void checkplayerhurt_d(player_struct* p, const Collision& coll)
|
|||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void checkhitdefault_d(DDukeActor* targ, DDukeActor* proj)
|
||||
{
|
||||
if ((targ->spr.cstat & CSTAT_SPRITE_ALIGNMENT_WALL) && targ->spr.hitag == 0 && targ->spr.lotag == 0 && targ->spr.statnum == STAT_DEFAULT)
|
||||
return;
|
||||
|
||||
if (((proj->flags3 & SFLAG3_CANHURTSHOOTER) || proj->GetOwner() != targ) && targ->spr.statnum != STAT_PROJECTILE)
|
||||
{
|
||||
if (badguy(targ))
|
||||
{
|
||||
if (targ->spr.scale.X < targ->FloatVar(NAME_minhitscale))
|
||||
return;
|
||||
|
||||
if (proj->flags4 & SFLAG4_DOUBLEHITDAMAGE) proj->spr.extra <<= 1;
|
||||
|
||||
if (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS))
|
||||
{
|
||||
auto spawned = spawn(proj, DukeJibs6Class);
|
||||
if (spawned)
|
||||
{
|
||||
if (proj->spr.pal == 6)
|
||||
spawned->spr.pal = 6;
|
||||
spawned->spr.pos.Z += 4;
|
||||
spawned->vel.X = 1;
|
||||
spawned->spr.scale = DVector2(0.375, 0.375);
|
||||
spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2);
|
||||
}
|
||||
}
|
||||
|
||||
auto Owner = proj->GetOwner();
|
||||
|
||||
if (Owner && Owner->isPlayer() && !(targ->flags3 & SFLAG3_NOSHOTGUNBLOOD))
|
||||
if (ps[Owner->PlayerIndex()].curr_weapon == SHOTGUN_WEAPON)
|
||||
{
|
||||
shoot(targ, DukeBloodSplat3Class);
|
||||
shoot(targ, DukeBloodSplat1Class);
|
||||
shoot(targ, DukeBloodSplat2Class);
|
||||
shoot(targ, DukeBloodSplat4Class);
|
||||
}
|
||||
|
||||
if (!(targ->flags2 & SFLAG2_NODAMAGEPUSH)) // RR does not have this.
|
||||
{
|
||||
if ((targ->spr.cstat & CSTAT_SPRITE_ALIGNMENT_MASK) == 0)
|
||||
targ->spr.Angles.Yaw = proj->spr.Angles.Yaw + DAngle180;
|
||||
|
||||
targ->vel.X = -proj->spr.extra * 0.25;
|
||||
auto sp = targ->sector();
|
||||
pushmove(targ->spr.pos, &sp, 8, 4, 4, CLIPMASK0);
|
||||
if (sp != targ->sector() && sp != nullptr)
|
||||
ChangeActorSect(targ, sp);
|
||||
}
|
||||
|
||||
if (targ->spr.statnum == STAT_ZOMBIEACTOR)
|
||||
{
|
||||
ChangeActorStat(targ, STAT_ACTOR);
|
||||
targ->timetosleep = SLEEPTIME;
|
||||
}
|
||||
if (!shrinkersizecheck(proj->GetClass(), targ)) return;
|
||||
}
|
||||
|
||||
if (targ->spr.statnum != STAT_ZOMBIEACTOR)
|
||||
{
|
||||
if ((proj->flags2 & SFLAG2_FREEZEDAMAGE) && ((targ->isPlayer() && targ->spr.pal == 1) || (gs.freezerhurtowner == 0 && proj->GetOwner() == targ)))
|
||||
return;
|
||||
|
||||
auto hitpic = static_cast<PClassActor*>(proj->GetClass());
|
||||
auto Owner = proj->GetOwner();
|
||||
if (Owner && Owner->isPlayer())
|
||||
{
|
||||
if (targ->isPlayer() && ud.coop != 0 && ud.ffire == 0)
|
||||
return;
|
||||
|
||||
auto tOwner = targ->GetOwner();
|
||||
if (hitpic == DukeFireballClass && tOwner && tOwner->GetClass() != DukeFireballClass) // hack alert! Even with damage types this special check needs to stay.
|
||||
hitpic = DukeFlamethrowerFlameClass;
|
||||
}
|
||||
|
||||
targ->attackertype = hitpic;
|
||||
targ->hitextra += proj->spr.extra;
|
||||
targ->hitang = proj->spr.Angles.Yaw;
|
||||
targ->SetHitOwner(Owner);
|
||||
}
|
||||
|
||||
if (targ->spr.statnum == STAT_PLAYER)
|
||||
{
|
||||
auto p = targ->PlayerIndex();
|
||||
if (ps[p].newOwner != nullptr)
|
||||
{
|
||||
ps[p].newOwner = nullptr;
|
||||
ps[p].GetActor()->restoreloc();
|
||||
|
||||
updatesector(ps[p].GetActor()->getPosWithOffsetZ(), &ps[p].cursector);
|
||||
|
||||
DukeStatIterator it(STAT_ACTOR);
|
||||
while (auto itActor = it.Next())
|
||||
{
|
||||
if (itActor->flags2 & SFLAG2_CAMERA) itActor->spr.yint = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!shrinkersizecheck(proj->GetClass(), targ))
|
||||
return;
|
||||
|
||||
auto hitowner = targ->GetHitOwner();
|
||||
if (!hitowner || !hitowner->isPlayer())
|
||||
if (ud.player_skill >= 3)
|
||||
proj->spr.extra += (proj->spr.extra >> 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// taken out of checksectors to eliminate some gotos.
|
||||
|
|
|
@ -158,92 +158,6 @@ void checkplayerhurt_r(player_struct* p, const Collision &coll)
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void checkhitdefault_r(DDukeActor* targ, DDukeActor* proj)
|
||||
{
|
||||
if ((targ->spr.cstat & CSTAT_SPRITE_ALIGNMENT_WALL) && targ->spr.hitag == 0 && targ->spr.lotag == 0 && targ->spr.statnum == 0)
|
||||
return;
|
||||
|
||||
if (((proj->flags3 & SFLAG3_CANHURTSHOOTER) || proj->GetOwner() != targ) && targ->spr.statnum != STAT_PROJECTILE)
|
||||
{
|
||||
if (badguy(targ) == 1)
|
||||
{
|
||||
if (proj->flags4 & SFLAG4_DOUBLEHITDAMAGE) proj->spr.extra <<= 1;
|
||||
|
||||
if (!(targ->flags3 & SFLAG3_NOHITJIBS) && !(proj->flags3 & SFLAG3_NOHITJIBS))
|
||||
{
|
||||
auto spawned = spawn(proj, DukeJibs6Class);
|
||||
if (spawned)
|
||||
{
|
||||
if (proj->spr.pal == 6)
|
||||
spawned->spr.pal = 6;
|
||||
spawned->spr.pos.Z += 4;
|
||||
spawned->vel.X = 1;
|
||||
spawned->spr.scale = DVector2(0.375, 0.375);
|
||||
spawned->spr.Angles.Yaw = DAngle22_5 / 4 - randomAngle(22.5 / 2);
|
||||
}
|
||||
}
|
||||
|
||||
auto Owner = proj->GetOwner();
|
||||
|
||||
if (Owner && Owner->isPlayer() && !(targ->flags3 & SFLAG3_NOSHOTGUNBLOOD))
|
||||
if (ps[Owner->PlayerIndex()].curr_weapon == SHOTGUN_WEAPON)
|
||||
{
|
||||
shoot(targ, DukeBloodSplat3Class);
|
||||
shoot(targ, DukeBloodSplat1Class);
|
||||
shoot(targ, DukeBloodSplat2Class);
|
||||
shoot(targ, DukeBloodSplat4Class);
|
||||
}
|
||||
|
||||
if (targ->spr.statnum == STAT_ZOMBIEACTOR)
|
||||
{
|
||||
ChangeActorStat(targ, STAT_ACTOR);
|
||||
targ->timetosleep = SLEEPTIME;
|
||||
}
|
||||
}
|
||||
|
||||
if (targ->spr.statnum != STAT_ZOMBIEACTOR)
|
||||
{
|
||||
if ((proj->flags2 & SFLAG2_FREEZEDAMAGE) && ((targ->isPlayer() && targ->spr.pal == 1) || (gs.freezerhurtowner == 0 && proj->GetOwner() == targ)))
|
||||
return;
|
||||
|
||||
targ->attackertype = static_cast<PClassActor*>(proj->GetClass());
|
||||
targ->hitextra += proj->spr.extra;
|
||||
if (!(targ->flags4 & SFLAG4_NODAMAGETURN))
|
||||
targ->hitang = proj->spr.Angles.Yaw;
|
||||
targ->SetHitOwner(proj->GetOwner());
|
||||
}
|
||||
|
||||
if (targ->spr.statnum == STAT_PLAYER)
|
||||
{
|
||||
auto p = targ->PlayerIndex();
|
||||
if (ps[p].newOwner != nullptr)
|
||||
{
|
||||
ps[p].newOwner = nullptr;
|
||||
ps[p].GetActor()->restoreloc();
|
||||
|
||||
updatesector(ps[p].GetActor()->getPosWithOffsetZ(), &ps[p].cursector);
|
||||
|
||||
DukeStatIterator it(STAT_EFFECTOR);
|
||||
while (auto act = it.Next())
|
||||
{
|
||||
if ((act->flags2 & SFLAG2_CAMERA)) act->spr.yint = 0;
|
||||
}
|
||||
}
|
||||
auto Owner = targ->GetHitOwner();
|
||||
if (!Owner || !Owner->isPlayer())
|
||||
if (ud.player_skill >= 3)
|
||||
proj->spr.extra += (proj->spr.extra >> 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void checksectors_r(int snum)
|
||||
{
|
||||
player_struct* p;
|
||||
|
|
|
@ -575,16 +575,11 @@ DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, detonate, DukeActor_detonate)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void DukeActor_checkhitdefault(DDukeActor* origin, DDukeActor* proj)
|
||||
{
|
||||
fi.checkhitdefault(origin, proj);
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, checkhitdefault, DukeActor_checkhitdefault)
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(DDukeActor, checkhitdefault, checkhitdefault)
|
||||
{
|
||||
PARAM_SELF_PROLOGUE(DDukeActor);
|
||||
PARAM_OBJECT(proj, DDukeActor);
|
||||
DukeActor_checkhitdefault(self, proj);
|
||||
checkhitdefault(self, proj);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue