mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 20:42:11 +00:00
- splash functions.
This commit is contained in:
parent
cf8aaf7ff2
commit
e3e9e4030e
3 changed files with 28 additions and 33 deletions
|
@ -2150,7 +2150,7 @@ int PlayerInitChemBomb(PLAYERp pp); // jweapon.c
|
|||
int PlayerInitFlashBomb(PLAYERp pp); // jweapon.c
|
||||
int PlayerInitCaltrops(PLAYERp pp); // jweapon.c
|
||||
int InitPhosphorus(int16_t SpriteNum); // jweapon.c
|
||||
void SpawnFloorSplash(short SpriteNum); // jweapon.c
|
||||
void SpawnFloorSplash(DSWActor*); // jweapon.c
|
||||
|
||||
int SaveGame(short save_num); // save.c
|
||||
int LoadGame(short save_num); // save.c
|
||||
|
|
|
@ -256,12 +256,10 @@ STATE s_BloodSprayDrip[] =
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
int
|
||||
DoWallBloodDrip(DSWActor* actor)
|
||||
int DoWallBloodDrip(DSWActor* actor)
|
||||
{
|
||||
USER* u = actor->u();
|
||||
int SpriteNum = u->SpriteNum;
|
||||
SPRITEp sp = &sprite[SpriteNum];
|
||||
SPRITEp sp = &actor->s();
|
||||
|
||||
//sp->z += (300+RandomRange(2300)) >> 1;
|
||||
|
||||
|
@ -289,7 +287,7 @@ DoWallBloodDrip(DSWActor* actor)
|
|||
if (sp->z >= u->loz)
|
||||
{
|
||||
sp->z = u->loz;
|
||||
SpawnFloorSplash(SpriteNum);
|
||||
SpawnFloorSplash(actor);
|
||||
KillActor(actor);
|
||||
return 0;
|
||||
}
|
||||
|
@ -298,19 +296,18 @@ DoWallBloodDrip(DSWActor* actor)
|
|||
}
|
||||
|
||||
void
|
||||
SpawnMidSplash(short SpriteNum)
|
||||
SpawnMidSplash(DSWActor* actor)
|
||||
{
|
||||
SPRITEp sp = &sprite[SpriteNum];
|
||||
USERp u = User[SpriteNum].Data();
|
||||
SPRITEp sp = &actor->s();
|
||||
USERp u = actor->u();
|
||||
SPRITEp np;
|
||||
USERp nu;
|
||||
short New;
|
||||
|
||||
New = SpawnSprite(STAT_MISSILE, GOREDrip, s_GoreSplash, sp->sectnum,
|
||||
auto actorNew = SpawnActor(STAT_MISSILE, GOREDrip, s_GoreSplash, sp->sectnum,
|
||||
sp->x, sp->y, SPRITEp_MID(sp), sp->ang, 0);
|
||||
|
||||
np = &sprite[New];
|
||||
nu = User[New].Data();
|
||||
np = &actorNew->s();
|
||||
nu = actorNew->u();
|
||||
|
||||
np->shade = -12;
|
||||
np->xrepeat = 70-RandomRange(20);
|
||||
|
@ -330,20 +327,18 @@ SpawnMidSplash(short SpriteNum)
|
|||
SET(nu->Flags, SPR_UNDERWATER);
|
||||
}
|
||||
|
||||
void
|
||||
SpawnFloorSplash(short SpriteNum)
|
||||
void SpawnFloorSplash(DSWActor* actor)
|
||||
{
|
||||
SPRITEp sp = &sprite[SpriteNum];
|
||||
USERp u = User[SpriteNum].Data();
|
||||
SPRITEp sp = &actor->s();
|
||||
USERp u = actor->u();
|
||||
SPRITEp np;
|
||||
USERp nu;
|
||||
short New;
|
||||
|
||||
New = SpawnSprite(STAT_MISSILE, GOREDrip, s_GoreFloorSplash, sp->sectnum,
|
||||
auto actorNew = SpawnActor(STAT_MISSILE, GOREDrip, s_GoreFloorSplash, sp->sectnum,
|
||||
sp->x, sp->y, sp->z, sp->ang, 0);
|
||||
|
||||
np = &sprite[New];
|
||||
nu = User[New].Data();
|
||||
np = &actorNew->s();
|
||||
nu = actorNew->u();
|
||||
|
||||
np->shade = -12;
|
||||
np->xrepeat = 70-RandomRange(20);
|
||||
|
@ -395,7 +390,7 @@ DoBloodSpray(DSWActor* actor)
|
|||
if (sp->z >= fz)
|
||||
{
|
||||
sp->z = fz;
|
||||
SpawnFloorSplash(Weapon);
|
||||
SpawnFloorSplash(actor);
|
||||
KillActor(actor);
|
||||
return true;
|
||||
}
|
||||
|
@ -425,7 +420,7 @@ DoBloodSpray(DSWActor* actor)
|
|||
if (TEST(hsp->cstat, CSTAT_SPRITE_ALIGNMENT_WALL))
|
||||
{
|
||||
wall_ang = NORM_ANGLE(hsp->ang);
|
||||
SpawnMidSplash(Weapon);
|
||||
SpawnMidSplash(actor);
|
||||
QueueWallBlood(Weapon, hsp->ang);
|
||||
WallBounce(Weapon, wall_ang);
|
||||
ScaleSpriteVector(Weapon, 32000);
|
||||
|
@ -433,7 +428,7 @@ DoBloodSpray(DSWActor* actor)
|
|||
else
|
||||
{
|
||||
u->xchange = u->ychange = 0;
|
||||
SpawnMidSplash(Weapon);
|
||||
SpawnMidSplash(actor);
|
||||
QueueWallBlood(Weapon, hsp->ang);
|
||||
KillActor(actor);
|
||||
return true;
|
||||
|
@ -463,7 +458,7 @@ DoBloodSpray(DSWActor* actor)
|
|||
nw = wall[hit_wall].point2;
|
||||
wall_ang = NORM_ANGLE(getangle(wall[nw].x - wph->x, wall[nw].y - wph->y) + 512);
|
||||
|
||||
SpawnMidSplash(Weapon);
|
||||
SpawnMidSplash(actor);
|
||||
wb = QueueWallBlood(Weapon, NORM_ANGLE(wall_ang+1024));
|
||||
|
||||
if (wb < 0)
|
||||
|
@ -522,7 +517,7 @@ DoBloodSpray(DSWActor* actor)
|
|||
#if 0
|
||||
if (!TEST(u->Flags, SPR_BOUNCE))
|
||||
{
|
||||
SpawnFloorSplash(Weapon);
|
||||
SpawnFloorSplash(actor);
|
||||
SET(u->Flags, SPR_BOUNCE);
|
||||
SetCollision(u, 0);
|
||||
u->Counter = 0;
|
||||
|
@ -534,7 +529,7 @@ DoBloodSpray(DSWActor* actor)
|
|||
#endif
|
||||
{
|
||||
u->xchange = u->ychange = 0;
|
||||
SpawnFloorSplash(Weapon);
|
||||
SpawnFloorSplash(actor);
|
||||
KillActor(actor);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ bool TestDontStickSector(short hit_sect);
|
|||
ANIMATOR SpawnShrapX;
|
||||
bool WeaponMoveHit(short SpriteNum);
|
||||
int HelpMissileLateral(int16_t Weapon, int dist);
|
||||
void SpawnMidSplash(short SpriteNum);
|
||||
void SpawnMidSplash(DSWActor* actor);
|
||||
|
||||
int SopDamage(SECTOR_OBJECTp sop,short amt);
|
||||
int SopCheckKill(SECTOR_OBJECTp sop);
|
||||
|
@ -6467,7 +6467,7 @@ DoDamage(short SpriteNum, short Weapon)
|
|||
if (RandomRange(1000) > 900)
|
||||
InitBloodSpray(SpriteNum,false,105);
|
||||
if (RandomRange(1000) > 900)
|
||||
SpawnMidSplash(SpriteNum);
|
||||
SpawnMidSplash(actor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -6517,7 +6517,7 @@ DoDamage(short SpriteNum, short Weapon)
|
|||
break;
|
||||
default:
|
||||
if (RandomRange(1000) > 950)
|
||||
SpawnMidSplash(SpriteNum);
|
||||
SpawnMidSplash(actor);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -21036,7 +21036,7 @@ ShrapKillSprite(short SpriteNum)
|
|||
case GORE_Lung:
|
||||
if (RandomRange(1000) > 500) break;
|
||||
sp->clipdist = SPRITEp_SIZE_X(sp);
|
||||
SpawnFloorSplash(SpriteNum);
|
||||
SpawnFloorSplash(actor);
|
||||
if (RandomRange(1000) < 500)
|
||||
PlaySound(DIGI_GIBS1, sp, v3df_none);
|
||||
else
|
||||
|
@ -21058,7 +21058,7 @@ ShrapKillSprite(short SpriteNum)
|
|||
case GORE_Liver:
|
||||
if (RandomRange(1000) > 500) break;
|
||||
sp->clipdist = SPRITEp_SIZE_X(sp);
|
||||
SpawnFloorSplash(SpriteNum);
|
||||
SpawnFloorSplash(actor);
|
||||
if (RandomRange(1000) < 500)
|
||||
PlaySound(DIGI_GIBS1, sp, v3df_none);
|
||||
else
|
||||
|
@ -21080,7 +21080,7 @@ ShrapKillSprite(short SpriteNum)
|
|||
case GORE_SkullCap:
|
||||
if (RandomRange(1000) > 500) break;
|
||||
sp->clipdist = SPRITEp_SIZE_X(sp);
|
||||
SpawnFloorSplash(SpriteNum);
|
||||
SpawnFloorSplash(actor);
|
||||
if (rnd_num > 683)
|
||||
{
|
||||
QueueGeneric(SpriteNum,930);
|
||||
|
|
Loading…
Reference in a new issue