- rotator.cpp, slidor.cpp and a few single ones elsewhere.

This commit is contained in:
Christoph Oelckers 2021-12-24 22:19:22 +01:00
parent 8e8f59caa1
commit 967385a87c
9 changed files with 55 additions and 73 deletions

View file

@ -628,7 +628,7 @@ int DoCoolgMatchPlayerZ(DSWActor* actor)
// actor does a sine wave about u->sz - this is the z mid point // actor does a sine wave about u->sz - this is the z mid point
zdiff = (ActorMid(u->targetActor)) - u->sz; zdiff = (ActorZOfMiddle(u->targetActor)) - u->sz;
// check z diff of the player and the sprite // check z diff of the player and the sprite
zdist = Z(20 + RandomRange(100)); // put a random amount zdist = Z(20 + RandomRange(100)); // put a random amount

View file

@ -2214,9 +2214,7 @@ inline int ActorSizeY(DSWActor* sp)
inline int Facing(DSWActor* actor1, DSWActor* actor2) inline int Facing(DSWActor* actor1, DSWActor* actor2)
{ {
auto sp1 = &actor1->s(); return (abs(getincangle(getangle(actor1->spr.pos.X - actor2->spr.pos.X, actor1->spr.pos.Y - actor2->spr.pos.Y), actor2->spr.ang)) < 512);
auto sp2 = &actor2->s();
return (abs(getincangle(getangle((sp1)->pos.X - (sp2)->pos.X, (sp1)->pos.Y - (sp2)->pos.Y), (sp2)->ang)) < 512);
} }
// Given a z height and sprite return the correct y repeat value // Given a z height and sprite return the correct y repeat value

View file

@ -566,14 +566,13 @@ int DoCheckSwarm(DSWActor* actor)
SWStatIterator it(STAT_ENEMY); SWStatIterator it(STAT_ENEMY);
while (auto itActor = it.Next()) while (auto itActor = it.Next())
{ {
tsp = &itActor->s();
tu = itActor->u(); tu = itActor->u();
if (!tu) continue; if (!tu) continue;
if (tsp->hitag != TAG_SWARMSPOT || tsp->lotag != 2) continue; if (itActor->spr.hitag != TAG_SWARMSPOT || itActor->spr.lotag != 2) continue;
DISTANCE(actor->spr.pos.X, actor->spr.pos.Y, tsp->pos.X, tsp->pos.Y, dist, a, b, c); DISTANCE(actor->spr.pos.X, actor->spr.pos.Y, itActor->spr.pos.X, itActor->spr.pos.Y, dist, a, b, c);
if (dist < pdist && u->ID == tu->ID) // Only flock to your own kind if (dist < pdist && u->ID == tu->ID) // Only flock to your own kind
{ {

View file

@ -285,7 +285,7 @@ void UseInventoryRepairKit(PLAYERp pp)
void UseInventoryCloak(PLAYERp pp) void UseInventoryCloak(PLAYERp pp)
{ {
SPRITEp sp = &pp->Actor()->s(); DSWActor* plActor = pp->actor;
if (pp->InventoryActive[pp->InventoryNum]) if (pp->InventoryActive[pp->InventoryNum])
{ {
@ -300,18 +300,17 @@ void UseInventoryCloak(PLAYERp pp)
// on/off // on/off
PlayerUpdateInventory(pp, pp->InventoryNum); PlayerUpdateInventory(pp, pp->InventoryNum);
SET(sp->cstat, CSTAT_SPRITE_TRANSLUCENT); SET(plActor->spr.cstat, CSTAT_SPRITE_TRANSLUCENT);
sp->shade = 100; plActor->spr.shade = 100;
PlaySound(DIGI_GASPOP, pp, v3df_none); PlaySound(DIGI_GASPOP, pp, v3df_none);
//if(RandomRange(1000) > 950)
if (pp == Player+myconnectindex) if (pp == Player+myconnectindex)
PlayerSound(DIGI_IAMSHADOW, v3df_follow|v3df_dontpan,pp); PlayerSound(DIGI_IAMSHADOW, v3df_follow|v3df_dontpan,pp);
} }
void StopInventoryCloak(PLAYERp pp, short InventoryNum) void StopInventoryCloak(PLAYERp pp, short InventoryNum)
{ {
SPRITEp sp = &pp->Actor()->s(); DSWActor* plActor = pp->actor;
pp->InventoryActive[InventoryNum] = false; pp->InventoryActive[InventoryNum] = false;
@ -325,8 +324,8 @@ void StopInventoryCloak(PLAYERp pp, short InventoryNum)
// on/off // on/off
PlayerUpdateInventory(pp, InventoryNum); PlayerUpdateInventory(pp, InventoryNum);
RESET(sp->cstat, CSTAT_SPRITE_TRANSLUCENT); RESET(plActor->spr.cstat, CSTAT_SPRITE_TRANSLUCENT);
sp->shade = 0; plActor->spr.shade = 0;
PlaySound(DIGI_GASPOP, pp, v3df_none); PlaySound(DIGI_GASPOP, pp, v3df_none);
} }

View file

@ -2188,8 +2188,8 @@ int DoCarryFlagNoDet(DSWActor* actor)
} }
// if in score box, score. // if in score box, score.
if (ap->sector()->hitag == 9000 && ap->sector()->lotag == ap->pal if (attached->spr.sector()->hitag == 9000 && attached->spr.sector()->lotag == attached->spr.pal
&& ap->pal != actor->spr.pal) && attached->spr.pal != actor->spr.pal)
{ {
if (u->flagOwnerActor != nullptr) if (u->flagOwnerActor != nullptr)
{ {
@ -2200,7 +2200,7 @@ int DoCarryFlagNoDet(DSWActor* actor)
if (!TEST_BOOL1(fp)) if (!TEST_BOOL1(fp))
{ {
PlaySound(DIGI_BIGITEM, u->attachActor, v3df_none); PlaySound(DIGI_BIGITEM, u->attachActor, v3df_none);
DoFlagScore(ap->pal); DoFlagScore(attached->spr.pal);
if (SP_TAG5(fp) > 0) if (SP_TAG5(fp) > 0)
{ {
fu->filler++; fu->filler++;

View file

@ -153,7 +153,7 @@ int DoToiletGirl(DSWActor* actor)
bool ICanSee = false; bool ICanSee = false;
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorMid(u->targetActor),u->targetActor->spr.sector()); ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorZOfMiddle(u->targetActor),u->targetActor->spr.sector());
if (u->FlagOwner != 1) if (u->FlagOwner != 1)
{ {
@ -385,7 +385,7 @@ int DoWashGirl(DSWActor* actor)
bool ICanSee = false; bool ICanSee = false;
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorMid(u->targetActor),u->targetActor->spr.sector()); ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorZOfMiddle(u->targetActor),u->targetActor->spr.sector());
if (RandomRange(1000) > 980 && u->ShellNum <= 0) if (RandomRange(1000) > 980 && u->ShellNum <= 0)
{ {
@ -1234,7 +1234,7 @@ int DoCarGirl(DSWActor* actor)
bool ICanSee = false; bool ICanSee = false;
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorMid(u->targetActor),u->targetActor->spr.sector()); ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorZOfMiddle(u->targetActor),u->targetActor->spr.sector());
if (u->FlagOwner == 1) if (u->FlagOwner == 1)
{ {
@ -1445,7 +1445,7 @@ int DoMechanicGirl(DSWActor* actor)
bool ICanSee = false; bool ICanSee = false;
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorMid(u->targetActor),u->targetActor->spr.sector()); ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorZOfMiddle(u->targetActor),u->targetActor->spr.sector());
if (u->FlagOwner == 1) if (u->FlagOwner == 1)
{ {
@ -1658,7 +1658,7 @@ int DoSailorGirl(DSWActor* actor)
bool ICanSee = false; bool ICanSee = false;
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorMid(u->targetActor),u->targetActor->spr.sector()); ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorZOfMiddle(u->targetActor),u->targetActor->spr.sector());
if (u->FlagOwner == 1) if (u->FlagOwner == 1)
{ {
@ -1862,7 +1862,7 @@ int DoPruneGirl(DSWActor* actor)
bool ICanSee = false; bool ICanSee = false;
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorMid(u->targetActor),u->targetActor->spr.sector()); ICanSee = FAFcansee(actor->spr.pos.X,actor->spr.pos.Y,ActorZOfMiddle(actor),actor->spr.sector(),u->targetActor->spr.pos.X,u->targetActor->spr.pos.Y,ActorZOfMiddle(u->targetActor),u->targetActor->spr.sector());
if (u->FlagOwner == 1) if (u->FlagOwner == 1)
{ {

View file

@ -74,15 +74,12 @@ void ReverseRotator(DSWActor* actor)
bool RotatorSwitch(short match, short setting) bool RotatorSwitch(short match, short setting)
{ {
SPRITEp sp;
bool found = false; bool found = false;
SWStatIterator it(STAT_DEFAULT); SWStatIterator it(STAT_DEFAULT);
while (auto actor = it.Next()) while (auto actor = it.Next())
{ {
sp = &actor->s(); if (actor->spr.lotag == TAG_SPRITE_SWITCH_VATOR && actor->spr.hitag == match)
if (sp->lotag == TAG_SPRITE_SWITCH_VATOR && sp->hitag == match)
{ {
found = true; found = true;
AnimateSwitch(actor, setting); AnimateSwitch(actor, setting);
@ -95,7 +92,6 @@ bool RotatorSwitch(short match, short setting)
void SetRotatorActive(DSWActor* actor) void SetRotatorActive(DSWActor* actor)
{ {
USERp u = actor->u(); USERp u = actor->u();
SPRITEp sp = &actor->s();
ROTATORp r; ROTATORp r;
r = u->rotator.Data(); r = u->rotator.Data();
@ -230,9 +226,7 @@ bool TestRotatorMatchActive(short match)
void DoRotatorSetInterp(DSWActor* actor) void DoRotatorSetInterp(DSWActor* actor)
{ {
SPRITEp sp = &actor->s(); for(auto& wal : wallsofsector(actor->spr.sector()))
for(auto& wal : wallsofsector(sp->sector()))
{ {
StartInterpolation(&wal, Interp_Wall_X); StartInterpolation(&wal, Interp_Wall_X);
StartInterpolation(&wal, Interp_Wall_Y); StartInterpolation(&wal, Interp_Wall_Y);
@ -248,8 +242,7 @@ void DoRotatorSetInterp(DSWActor* actor)
void DoRotatorStopInterp(DSWActor* actor) void DoRotatorStopInterp(DSWActor* actor)
{ {
SPRITEp sp = &actor->s(); for (auto& wal : wallsofsector(actor->spr.sector()))
for (auto& wal : wallsofsector(sp->sector()))
{ {
StopInterpolation(&wal, Interp_Wall_X); StopInterpolation(&wal, Interp_Wall_X);
StopInterpolation(&wal, Interp_Wall_Y); StopInterpolation(&wal, Interp_Wall_Y);
@ -266,7 +259,6 @@ void DoRotatorStopInterp(DSWActor* actor)
int DoRotator(DSWActor* actor) int DoRotator(DSWActor* actor)
{ {
USERp u = actor->u(); USERp u = actor->u();
SPRITEp sp = &actor->s();
ROTATORp r; ROTATORp r;
short ndx,w,startwall,endwall; short ndx,w,startwall,endwall;
SPRITEp pivot = nullptr; SPRITEp pivot = nullptr;
@ -311,8 +303,8 @@ int DoRotator(DSWActor* actor)
r->vel = -r->vel; r->vel = -r->vel;
SetRotatorInactive(actor); SetRotatorInactive(actor);
if (SP_TAG6(sp)) if (SP_TAG6(actor))
DoMatchEverything(nullptr, SP_TAG6(sp), -1); DoMatchEverything(nullptr, SP_TAG6(actor), -1);
// wait a bit and close it // wait a bit and close it
if (u->WaitTics) if (u->WaitTics)
@ -338,11 +330,11 @@ int DoRotator(DSWActor* actor)
//RotatorSwitch(match, OFF); //RotatorSwitch(match, OFF);
} }
if (SP_TAG6(sp) && TEST_BOOL5(sp)) if (SP_TAG6(actor) && TEST_BOOL5(actor))
DoMatchEverything(nullptr, SP_TAG6(sp), -1); DoMatchEverything(nullptr, SP_TAG6(actor), -1);
} }
if (TEST_BOOL2(sp)) if (TEST_BOOL2(actor))
kill = true; kill = true;
} }
@ -351,9 +343,9 @@ int DoRotator(DSWActor* actor)
while (auto itActor = it.Next()) while (auto itActor = it.Next())
{ {
auto itsp = &itActor->s(); auto itsp = &itActor->s();
if (itsp->lotag == sp->lotag) if (itsp->lotag == actor->spr.lotag)
{ {
dist = Distance(sp->pos.X, sp->pos.Y, itsp->pos.X, itsp->pos.Y); dist = Distance(actor->spr.pos.X, actor->spr.pos.Y, itsp->pos.X, itsp->pos.Y);
if (dist < closest) if (dist < closest)
{ {
closest = dist; closest = dist;
@ -367,7 +359,7 @@ int DoRotator(DSWActor* actor)
// move points // move points
ndx = 0; ndx = 0;
for(auto& wal : wallsofsector(sp->sector())) for(auto& wal : wallsofsector(actor->spr.sector()))
{ {
vec2_t const orig = { r->origX[ndx], r->origY[ndx] }; vec2_t const orig = { r->origX[ndx], r->origY[ndx] };
rotatepoint(pivot->pos.vec2, orig, r->pos, &nxy); rotatepoint(pivot->pos.vec2, orig, r->pos, &nxy);

View file

@ -70,15 +70,12 @@ void ReverseSlidor(DSWActor* actor)
bool SlidorSwitch(short match, short setting) bool SlidorSwitch(short match, short setting)
{ {
SPRITEp sp;
bool found = false; bool found = false;
SWStatIterator it(STAT_DEFAULT); SWStatIterator it(STAT_DEFAULT);
while (auto actor = it.Next()) while (auto actor = it.Next())
{ {
sp = &actor->s(); if (actor->spr.lotag == TAG_SPRITE_SWITCH_VATOR && actor->spr.hitag == match)
if (sp->lotag == TAG_SPRITE_SWITCH_VATOR && sp->hitag == match)
{ {
found = true; found = true;
AnimateSwitch(actor, setting); AnimateSwitch(actor, setting);
@ -91,7 +88,6 @@ bool SlidorSwitch(short match, short setting)
void SetSlidorActive(DSWActor* actor) void SetSlidorActive(DSWActor* actor)
{ {
USERp u = actor->u(); USERp u = actor->u();
SPRITEp sp = &actor->s();
ROTATORp r; ROTATORp r;
r = u->rotator.Data(); r = u->rotator.Data();
@ -222,11 +218,11 @@ bool TestSlidorMatchActive(short match)
void DoSlidorInterp(DSWActor* actor, INTERP_FUNC interp_func) void DoSlidorInterp(DSWActor* actor, INTERP_FUNC interp_func)
{ {
auto sp = actor->spr.sector(); auto sect = actor->spr.sector();
// this code is just weird. // this code is just weird.
auto startWall = sp->firstWall(); auto startWall = sect->firstWall();
auto endWall = sp->lastWall(); auto endWall = sect->lastWall();
auto wal = startWall; auto wal = startWall;
do do
{ {
@ -274,11 +270,11 @@ void DoSlidorInterp(DSWActor* actor, INTERP_FUNC interp_func)
int DoSlidorMoveWalls(DSWActor* actor, int amt) int DoSlidorMoveWalls(DSWActor* actor, int amt)
{ {
auto sp = actor->spr.sector(); auto sect = actor->spr.sector();
// this code is just weird. // this code is just weird.
auto startWall = sp->firstWall(); auto startWall = sect->firstWall();
auto endWall = sp->lastWall(); auto endWall = sect->lastWall();
auto wal = startWall; auto wal = startWall;
walltype* pwal; walltype* pwal;
@ -394,10 +390,9 @@ int DoSlidorMoveWalls(DSWActor* actor, int amt)
int DoSlidorInstantClose(DSWActor* actor) int DoSlidorInstantClose(DSWActor* actor)
{ {
SPRITEp sp = &actor->s();
int diff; int diff;
auto startwall = sp->sector()->firstWall(); auto startwall = actor->spr.sector()->firstWall();
auto wal = startwall; auto wal = startwall;
do do
@ -405,22 +400,22 @@ int DoSlidorInstantClose(DSWActor* actor)
switch (wal->lotag) switch (wal->lotag)
{ {
case TAG_WALL_SLIDOR_LEFT: case TAG_WALL_SLIDOR_LEFT:
diff = wal->pos.X - sp->pos.X; diff = wal->pos.X - actor->spr.pos.X;
DoSlidorMoveWalls(actor, diff); DoSlidorMoveWalls(actor, diff);
break; break;
case TAG_WALL_SLIDOR_RIGHT: case TAG_WALL_SLIDOR_RIGHT:
diff = wal->pos.X - sp->pos.X; diff = wal->pos.X - actor->spr.pos.X;
DoSlidorMoveWalls(actor, -diff); DoSlidorMoveWalls(actor, -diff);
break; break;
case TAG_WALL_SLIDOR_UP: case TAG_WALL_SLIDOR_UP:
diff = wal->pos.Y - sp->pos.Y; diff = wal->pos.Y - actor->spr.pos.Y;
DoSlidorMoveWalls(actor, diff); DoSlidorMoveWalls(actor, diff);
break; break;
case TAG_WALL_SLIDOR_DOWN: case TAG_WALL_SLIDOR_DOWN:
diff = wal->pos.Y - sp->pos.Y; diff = wal->pos.Y - actor->spr.pos.Y;
DoSlidorMoveWalls(actor, -diff); DoSlidorMoveWalls(actor, -diff);
break; break;
} }
@ -436,7 +431,6 @@ int DoSlidorInstantClose(DSWActor* actor)
int DoSlidor(DSWActor* actor) int DoSlidor(DSWActor* actor)
{ {
USERp u = actor->u(); USERp u = actor->u();
SPRITEp sp = &actor->s();
ROTATORp r; ROTATORp r;
int old_pos; int old_pos;
bool kill = false; bool kill = false;
@ -480,8 +474,8 @@ int DoSlidor(DSWActor* actor)
r->vel = -r->vel; r->vel = -r->vel;
SetSlidorInactive(actor); SetSlidorInactive(actor);
if (SP_TAG6(sp) && !TEST_BOOL8(sp)) if (SP_TAG6(actor) && !TEST_BOOL8(actor))
DoMatchEverything(nullptr, SP_TAG6(sp), -1); DoMatchEverything(nullptr, SP_TAG6(actor), -1);
// wait a bit and close it // wait a bit and close it
if (u->WaitTics) if (u->WaitTics)
@ -500,7 +494,7 @@ int DoSlidor(DSWActor* actor)
r->tgt = r->open_dest; r->tgt = r->open_dest;
SetSlidorInactive(actor); SetSlidorInactive(actor);
RESET_BOOL8(sp); RESET_BOOL8(actor);
// set Owner swith back to OFF // set Owner swith back to OFF
// only if ALL vators are inactive // only if ALL vators are inactive
@ -509,22 +503,22 @@ int DoSlidor(DSWActor* actor)
//SlidorSwitch(match, OFF); //SlidorSwitch(match, OFF);
} }
if (SP_TAG6(sp) && TEST_BOOL8(sp)) if (SP_TAG6(actor) && TEST_BOOL8(actor))
DoMatchEverything(nullptr, SP_TAG6(sp), -1); DoMatchEverything(nullptr, SP_TAG6(actor), -1);
} }
if (TEST_BOOL2(sp)) if (TEST_BOOL2(actor))
kill = true; kill = true;
} }
else else
{ {
// if heading for the OFF (original) position and should NOT CRUSH // if heading for the OFF (original) position and should NOT CRUSH
if (TEST_BOOL3(sp) && r->tgt == 0) if (TEST_BOOL3(actor) && r->tgt == 0)
{ {
USERp bu; USERp bu;
bool found = false; bool found = false;
SWSectIterator it(sp->sector()); SWSectIterator it(actor->spr.sector());
while (auto itActor = it.Next()) while (auto itActor = it.Next())
{ {
bu = itActor->u(); bu = itActor->u();
@ -533,7 +527,7 @@ int DoSlidor(DSWActor* actor)
{ {
// found something blocking so reverse to ON position // found something blocking so reverse to ON position
ReverseSlidor(actor); ReverseSlidor(actor);
SET_BOOL8(sp); // tell vator that something blocking door SET_BOOL8(actor); // tell vator that something blocking door
found = true; found = true;
break; break;
} }
@ -548,8 +542,8 @@ int DoSlidor(DSWActor* actor)
{ {
pp = Player + pnum; pp = Player + pnum;
if (pp->lo_sectp == sp->sector() || if (pp->lo_sectp == actor->spr.sector() ||
pp->hi_sectp == sp->sector()) pp->hi_sectp == actor->spr.sector())
{ {
ReverseSlidor(actor); ReverseSlidor(actor);

View file

@ -12814,7 +12814,7 @@ int InitMiniSumoClap(DSWActor* actor)
{ {
if (SpriteOverlapZ(actor, targetActor, Z(20))) if (SpriteOverlapZ(actor, targetActor, Z(20)))
{ {
if (FAFcansee(tsp->pos.X, tsp->pos.Y, ActorMid(targetActor), tsp->sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector())) if (FAFcansee(tsp->pos.X, tsp->pos.Y, ActorZOfMiddle(targetActor), tsp->sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector()))
{ {
PlaySound(DIGI_CGTHIGHBONE, actor, v3df_follow | v3df_dontpan); PlaySound(DIGI_CGTHIGHBONE, actor, v3df_follow | v3df_dontpan);
DoDamage(targetActor, actor); DoDamage(targetActor, actor);
@ -12823,7 +12823,7 @@ int InitMiniSumoClap(DSWActor* actor)
} }
else if (dist < CloseRangeDist(targetActor, actor, reach)) else if (dist < CloseRangeDist(targetActor, actor, reach))
{ {
if (FAFcansee(tsp->pos.X, tsp->pos.Y, ActorMid(targetActor), tsp->sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector())) if (FAFcansee(tsp->pos.X, tsp->pos.Y, ActorZOfMiddle(targetActor), tsp->sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector()))
{ {
PlaySound(DIGI_30MMEXPLODE, actor, v3df_none); PlaySound(DIGI_30MMEXPLODE, actor, v3df_none);
SpawnFireballFlames(actor, targetActor); SpawnFireballFlames(actor, targetActor);