- ActorStdMissile + ActorDamageSlide

# Conflicts:
#	source/games/sw/src/weapon.cpp
This commit is contained in:
Christoph Oelckers 2021-11-05 23:16:39 +01:00
parent 2c39177c07
commit 93ad08a167

View file

@ -5300,23 +5300,22 @@ ActorPainPlasma(short SpriteNum)
return false; return false;
} }
int int ActorStdMissile(DSWActor* actor, DSWActor* weapActor)
ActorStdMissile(short SpriteNum, short Weapon)
{ {
SPRITEp sp = &sprite[SpriteNum]; assert(weapActor != nullptr);
USERp u = User[SpriteNum].Data(); SPRITEp sp = &actor->s();
SPRITEp wp = &sprite[Weapon]; USERp u = actor->u();
USERp wu = User[Weapon].Data(); SPRITEp wp = &weapActor->s();
USERp wu = weapActor->u();
ASSERT(Weapon >= 0);
// Attack the player that is attacking you // Attack the player that is attacking you
// Only if hes still alive // Only if hes still alive
if (wp->owner >= 0) auto own = GetOwner(weapActor);
if (own && own->hasU())
{ {
if (User[wp->owner]->PlayerP && sp->owner != wp->owner) if (own->u()->PlayerP && GetOwner(actor) != own)
{ {
u->targetActor = &swActors[wp->owner]; u->targetActor = own;
} }
} }
@ -5332,10 +5331,9 @@ ActorStdMissile(short SpriteNum, short Weapon)
return 0; return 0;
} }
int
ActorDamageSlide(int SpriteNum, int damage, int ang) int ActorDamageSlide(DSWActor* actor, int damage, int ang)
{ {
auto actor = &swActors[SpriteNum];
USERp u = actor->u(); USERp u = actor->u();
int slide_vel,slide_dec; int slide_vel,slide_dec;
@ -6120,8 +6118,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
MONO_PRINT("Star Hit Actor"); MONO_PRINT("Star Hit Actor");
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6153,8 +6151,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6184,8 +6182,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6215,8 +6213,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6253,8 +6251,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
switch (u->ID) switch (u->ID)
{ {
@ -6302,8 +6300,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6349,7 +6347,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
} }
SetSuicide(weapActor); SetSuicide(weapActor);
@ -6376,7 +6374,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
} }
SetSuicide(weapActor); SetSuicide(weapActor);
@ -6401,7 +6399,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
} }
if (wu->Radius == NUKE_RADIUS) if (wu->Radius == NUKE_RADIUS)
@ -6446,8 +6444,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage>>1, wp->ang); ActorDamageSlide(actor, damage>>1, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6475,7 +6473,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
} }
if (wu->Radius == NUKE_RADIUS) if (wu->Radius == NUKE_RADIUS)
@ -6505,7 +6503,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6538,7 +6536,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6569,7 +6567,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6604,7 +6602,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6637,7 +6635,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6676,7 +6674,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
if (OwnerIs(weapActor, SUMO_RUN_R0)) break; if (OwnerIs(weapActor, SUMO_RUN_R0)) break;
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6710,7 +6708,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
break; break;
@ -6753,7 +6751,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
else else
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6782,8 +6780,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6908,7 +6906,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorDamageSlide(SpriteNum, damage, ANG2SPRITE(sp, wp)); ActorDamageSlide(actor, damage, ANG2SPRITE(sp, wp));
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6939,8 +6937,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -6974,8 +6972,8 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorDamageSlide(SpriteNum, damage, wp->ang); ActorDamageSlide(actor, damage, wp->ang);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -7056,7 +7054,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
if (u->ID == SKULL_R0 || u->ID == BETTY_R0) if (u->ID == SKULL_R0 || u->ID == BETTY_R0)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
SetSuicide(weapActor); SetSuicide(weapActor);
break; break;
@ -7098,7 +7096,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorPain(SpriteNum); ActorPain(SpriteNum);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
ActorChooseDeath(actor, weapActor); ActorChooseDeath(actor, weapActor);
} }
@ -7129,7 +7127,7 @@ int DoDamage(DSWActor* actor, DSWActor* weapActor)
else else
{ {
ActorHealth(SpriteNum, damage); ActorHealth(SpriteNum, damage);
ActorStdMissile(SpriteNum, Weapon); ActorStdMissile(actor, weapActor);
#if 0 #if 0
if (ActorChooseDeath(SpriteNum, Weapon)) if (ActorChooseDeath(SpriteNum, Weapon))
{ {