示例#1
0
static void Add_WallScroller(int64_t dx, int64_t dy, const line_t *l,
                             int control, int accel)
{
    fixed_t x = D_abs(l->dx), y = D_abs(l->dy), d;
    if(y > x)
        d = x, x = y, y = d;
    d = FixedDiv(x,
                 finesine[(tantoangle[FixedDiv(y,x)>>DBITS]+ANG90) >> ANGLETOFINESHIFT]);

    x = (int)((dy * -l->dy - dx * l->dx) / d);  // killough 10/98:
    y = (int)((dy *  l->dx - dx * l->dy) / d);  // Use 64-bit arithmetic
    Add_Scroller(ScrollThinker::sc_side, x, y, control, *l->sidenum, accel);
}
示例#2
0
//
// EV_SectorHticScrollEastLavaDamage
//
// Augments DOOM's "strobe hurt/death slime"
// * Heretic: 4
//
static void EV_SectorHticScrollEastLavaDamage(sector_t *sector)
{
   P_SpawnStrobeFlash(sector, FASTDARK, STROBEBRIGHT, 0);

   // custom damage parameters:
   sector->damage       = 5;
   sector->damagemask   = 16;
   sector->damagemod    = MOD_LAVA;
   sector->damageflags |= SDMG_TERRAINHIT;

   // heretic current pusher type:
   sector->hticPushType  = SECTOR_HTIC_CURRENT;
   sector->hticPushAngle = 0;
   sector->hticPushForce = 2048*28;
   
   // scrolls to the east:
   Add_Scroller(ScrollThinker::sc_floor, (-FRACUNIT/2) * 8, 0, -1, eindex(sector - sectors), 0);
}
示例#3
0
//
// EV_setupHereticScroller
//
// Setup a Heretic scrolling effect.
//
static void EV_setupHereticScroller(sector_t *sector, int force)
{
   Add_Scroller(ScrollThinker::sc_floor, (-FRACUNIT/2) << force,
                0, -1, eindex(sector-sectors), 0);
}