mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-01 05:20:43 +00:00
- Regenerates.
MP only so not really relevant - the code looked broken anyway.
This commit is contained in:
parent
2f511b3cff
commit
1591d6fbdb
4 changed files with 29 additions and 69 deletions
|
@ -162,13 +162,9 @@ void FillItems(short nPlayer);
|
||||||
void UseItem(short nPlayer, short nItem);
|
void UseItem(short nPlayer, short nItem);
|
||||||
void UseCurItem(short nPlayer);
|
void UseCurItem(short nPlayer);
|
||||||
int GrabItem(short nPlayer, short nItem);
|
int GrabItem(short nPlayer, short nItem);
|
||||||
void DropMagic(short nSprite);
|
void DropMagic(DExhumedActor* actor);
|
||||||
inline void DropMagic(DExhumedActor* actor)
|
|
||||||
{
|
|
||||||
DropMagic(actor->GetSpriteIndex());
|
|
||||||
}
|
|
||||||
void InitItems();
|
void InitItems();
|
||||||
void StartRegenerate(short nSprite);
|
void StartRegenerate(DExhumedActor* nSprite);
|
||||||
void DoRegenerates();
|
void DoRegenerates();
|
||||||
|
|
||||||
// lavadude
|
// lavadude
|
||||||
|
|
|
@ -105,16 +105,14 @@ short x/y repeat
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
short nRegenerates;
|
TArray<DExhumedActor*> Regenerates;
|
||||||
short nFirstRegenerate;
|
|
||||||
short nMagicCount;
|
short nMagicCount;
|
||||||
|
|
||||||
void SerializeItems(FSerializer& arc)
|
void SerializeItems(FSerializer& arc)
|
||||||
{
|
{
|
||||||
if (arc.BeginObject("items"))
|
if (arc.BeginObject("items"))
|
||||||
{
|
{
|
||||||
arc("regenerates", nRegenerates)
|
arc("regenerates", Regenerates)
|
||||||
("first", nFirstRegenerate)
|
|
||||||
("magiccount", nMagicCount)
|
("magiccount", nMagicCount)
|
||||||
.EndObject();
|
.EndObject();
|
||||||
}
|
}
|
||||||
|
@ -330,9 +328,9 @@ int GrabItem(short nPlayer, short nItem)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DropMagic(short nSprite)
|
void DropMagic(DExhumedActor* pActor)
|
||||||
{
|
{
|
||||||
auto pSprite = &sprite[nSprite];
|
auto pSprite = &pActor->s();
|
||||||
|
|
||||||
if (lFinaleStart) {
|
if (lFinaleStart) {
|
||||||
return;
|
return;
|
||||||
|
@ -364,59 +362,30 @@ void DropMagic(short nSprite)
|
||||||
|
|
||||||
void InitItems()
|
void InitItems()
|
||||||
{
|
{
|
||||||
nRegenerates = 0;
|
Regenerates.Clear();
|
||||||
nFirstRegenerate = -1;
|
|
||||||
nMagicCount = 0;
|
nMagicCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void StartRegenerate(short nSprite)
|
void StartRegenerate(DExhumedActor* pActor)
|
||||||
{
|
{
|
||||||
spritetype *pSprite = &sprite[nSprite];
|
spritetype *pSprite = &pActor->s();
|
||||||
|
|
||||||
int edi = -1;
|
DExhumedActor* pCurr = nullptr;
|
||||||
|
|
||||||
int nReg = nFirstRegenerate;
|
auto pos = Regenerates.Find(pActor);
|
||||||
|
if (pos >= Regenerates.Size())
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
// for (int i = 0; i < nRegenerates; i++)
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
if (i >= nRegenerates)
|
|
||||||
{
|
{
|
||||||
// ?? CHECKME
|
// ?? CHECKME
|
||||||
pSprite->xvel = pSprite->xrepeat;
|
pSprite->xvel = pSprite->xrepeat;
|
||||||
pSprite->zvel = pSprite->shade;
|
pSprite->zvel = pSprite->shade;
|
||||||
pSprite->yvel = pSprite->pal;
|
pSprite->yvel = pSprite->pal;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (nReg != nSprite)
|
Regenerates.Delete(pos);
|
||||||
{
|
|
||||||
edi = nReg;
|
|
||||||
nReg = sprite[nReg].ang;
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (edi == -1)
|
|
||||||
{
|
|
||||||
nFirstRegenerate = pSprite->ang;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sprite[edi].ang = pSprite->ang;
|
|
||||||
}
|
|
||||||
|
|
||||||
nRegenerates--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pSprite->extra = 1350;
|
pSprite->extra = 1350;
|
||||||
pSprite->ang = nFirstRegenerate;
|
|
||||||
|
|
||||||
if (!(currentLevel->gameflags & LEVEL_EX_MULTI))
|
if (!(currentLevel->gameflags & LEVEL_EX_MULTI))
|
||||||
{
|
{
|
||||||
|
@ -428,17 +397,15 @@ void StartRegenerate(short nSprite)
|
||||||
pSprite->yrepeat = 1;
|
pSprite->yrepeat = 1;
|
||||||
pSprite->pal = 1;
|
pSprite->pal = 1;
|
||||||
|
|
||||||
nRegenerates++;
|
Regenerates.Push(pActor);
|
||||||
nFirstRegenerate = nSprite;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoRegenerates()
|
void DoRegenerates()
|
||||||
{
|
{
|
||||||
int nSprite = nFirstRegenerate;
|
for(unsigned i = 0; i < Regenerates.Size(); i++)
|
||||||
auto pSprite = &sprite[nSprite];
|
|
||||||
|
|
||||||
for (int i = nRegenerates; i > 0; i--, nSprite = pSprite->ang)
|
|
||||||
{
|
{
|
||||||
|
auto pActor = Regenerates[i];
|
||||||
|
auto pSprite = &pActor->s();
|
||||||
if (pSprite->extra > 0)
|
if (pSprite->extra > 0)
|
||||||
{
|
{
|
||||||
pSprite->extra--;
|
pSprite->extra--;
|
||||||
|
@ -446,7 +413,7 @@ void DoRegenerates()
|
||||||
if (pSprite->extra <= 0)
|
if (pSprite->extra <= 0)
|
||||||
{
|
{
|
||||||
BuildAnim(nullptr, 38, 0, pSprite->x, pSprite->y, pSprite->z, pSprite->sectnum, 64, 4);
|
BuildAnim(nullptr, 38, 0, pSprite->x, pSprite->y, pSprite->z, pSprite->sectnum, 64, 4);
|
||||||
D3PlayFX(StaticSound[kSoundTorchOn], nSprite);
|
D3PlayFX(StaticSound[kSoundTorchOn], pActor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
continue;
|
continue;
|
||||||
|
@ -468,7 +435,6 @@ void DoRegenerates()
|
||||||
pSprite->pal = (uint8_t)pSprite->yvel;
|
pSprite->pal = (uint8_t)pSprite->yvel;
|
||||||
pSprite->yvel = pSprite->zvel; // setting to 0
|
pSprite->yvel = pSprite->zvel; // setting to 0
|
||||||
pSprite->xvel = pSprite->zvel; // setting to 0
|
pSprite->xvel = pSprite->zvel; // setting to 0
|
||||||
nRegenerates--;
|
|
||||||
|
|
||||||
if (pSprite->statnum == kStatExplodeTrigger) {
|
if (pSprite->statnum == kStatExplodeTrigger) {
|
||||||
pSprite->cstat = 0x101;
|
pSprite->cstat = 0x101;
|
||||||
|
@ -476,10 +442,8 @@ void DoRegenerates()
|
||||||
else {
|
else {
|
||||||
pSprite->cstat = 0;
|
pSprite->cstat = 0;
|
||||||
}
|
}
|
||||||
|
Regenerates.Delete(i);
|
||||||
if (nRegenerates == 0) {
|
i--;
|
||||||
nFirstRegenerate = -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
END_PS_NS
|
END_PS_NS
|
||||||
|
|
|
@ -2143,7 +2143,7 @@ void AIObject::Tick(RunListEvent* ev)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StartRegenerate(nSprite);
|
StartRegenerate(pActor);
|
||||||
pObject->nHealth = 120;
|
pObject->nHealth = 120;
|
||||||
|
|
||||||
pSprite->x = sprite[pObject->field_10].x;
|
pSprite->x = sprite[pObject->field_10].x;
|
||||||
|
|
|
@ -1404,7 +1404,7 @@ sectdone:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StartRegenerate(nValB);
|
StartRegenerate(pActorB);
|
||||||
}
|
}
|
||||||
do_default_b:
|
do_default_b:
|
||||||
// loc_1BA74
|
// loc_1BA74
|
||||||
|
|
Loading…
Reference in a new issue