mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-29 13:00:43 +00:00
- iterate linearly over sector effectors.
Apparently they aren't all properly linked into the required statnums. Fixes #179
This commit is contained in:
parent
50beb113ff
commit
f9a776e71c
3 changed files with 8 additions and 7 deletions
|
@ -119,7 +119,7 @@ static void shootmelee(DDukeActor *actor, int p, int sx, int sy, int sz, int sa,
|
||||||
if (isRRRA() && ((sector[hitsect].lotag == 160 && zvel > 0) || (sector[hitsect].lotag == 161 && zvel < 0))
|
if (isRRRA() && ((sector[hitsect].lotag == 160 && zvel > 0) || (sector[hitsect].lotag == 161 && zvel < 0))
|
||||||
&& hitsprt == nullptr && hitwall == -1)
|
&& hitsprt == nullptr && hitwall == -1)
|
||||||
{
|
{
|
||||||
DukeSpriteIterator its;
|
DukeLinearSpriteIterator its;
|
||||||
while (auto effector = its.Next())
|
while (auto effector = its.Next())
|
||||||
{
|
{
|
||||||
// shouldn't this only check STAT_EFFECTOR?
|
// shouldn't this only check STAT_EFFECTOR?
|
||||||
|
@ -276,7 +276,7 @@ static void shootweapon(DDukeActor* actor, int p, int sx, int sy, int sz, int sa
|
||||||
if (isRRRA() && (((sector[hitsect].lotag == 160 && zvel > 0) || (sector[hitsect].lotag == 161 && zvel < 0))
|
if (isRRRA() && (((sector[hitsect].lotag == 160 && zvel > 0) || (sector[hitsect].lotag == 161 && zvel < 0))
|
||||||
&& hitsprt == nullptr && hitwall == -1))
|
&& hitsprt == nullptr && hitwall == -1))
|
||||||
{
|
{
|
||||||
DukeSpriteIterator its;
|
DukeLinearSpriteIterator its;
|
||||||
while (auto effector = its.Next())
|
while (auto effector = its.Next())
|
||||||
{
|
{
|
||||||
// shouldn't this only check STAT_EFFECTOR?
|
// shouldn't this only check STAT_EFFECTOR?
|
||||||
|
|
|
@ -786,7 +786,7 @@ bool checkhitswitch_r(int snum, int ww, DDukeActor* act)
|
||||||
DDukeActor* switches[3];
|
DDukeActor* switches[3];
|
||||||
int switchcount = 0, j;
|
int switchcount = 0, j;
|
||||||
S_PlaySound3D(SWITCH_ON, act, &v);
|
S_PlaySound3D(SWITCH_ON, act, &v);
|
||||||
DukeSpriteIterator it;
|
DukeLinearSpriteIterator it;
|
||||||
while (auto actt = it.Next())
|
while (auto actt = it.Next())
|
||||||
{
|
{
|
||||||
int jpn = actt->s.picnum;
|
int jpn = actt->s.picnum;
|
||||||
|
|
|
@ -640,12 +640,13 @@ void spawneffector(DDukeActor* actor)
|
||||||
break;
|
break;
|
||||||
case SE_7_TELEPORT: // Transporters!!!!
|
case SE_7_TELEPORT: // Transporters!!!!
|
||||||
case SE_23_ONE_WAY_TELEPORT:// XPTR END
|
case SE_23_ONE_WAY_TELEPORT:// XPTR END
|
||||||
if (sp->lotag != 23)
|
if (sp->lotag != SE_23_ONE_WAY_TELEPORT)
|
||||||
{
|
{
|
||||||
DukeSpriteIterator it;
|
DukeLinearSpriteIterator it;
|
||||||
while (auto act2 = it.Next())
|
while (auto act2 = it.Next())
|
||||||
{
|
{
|
||||||
if (act2->s.statnum < MAXSTATUS && act2->s.picnum == SECTOREFFECTOR && (act2->s.lotag == 7 || act2->s.lotag == 23) && actor != act2 && act2->s.hitag == sp->hitag)
|
if (act2->s.statnum < MAXSTATUS && act2->s.picnum == SECTOREFFECTOR && (act2->s.lotag == SE_7_TELEPORT || act2->s.lotag == SE_23_ONE_WAY_TELEPORT) &&
|
||||||
|
actor != act2 && act2->s.hitag == sp->hitag)
|
||||||
{
|
{
|
||||||
actor->SetOwner(act2);
|
actor->SetOwner(act2);
|
||||||
break;
|
break;
|
||||||
|
@ -964,7 +965,7 @@ void spawneffector(DDukeActor* actor)
|
||||||
sector[sect].hitag = ActorToScriptIndex(actor);
|
sector[sect].hitag = ActorToScriptIndex(actor);
|
||||||
}
|
}
|
||||||
|
|
||||||
DukeSpriteIterator it;
|
DukeLinearSpriteIterator it;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
while (auto act2 = it.Next())
|
while (auto act2 = it.Next())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue