Example #1
0
/**
 * d64tc
 */
dd_bool P_GiveItem(player_t* player, inventoryitemtype_t item)
{
    if(!P_InventoryGive(player - players, item, false))
        return false;

    player->bonusCount = BONUSADD;

    return true;
}
Example #2
0
static void SV_v13_ReadPlayer(player_t* pl)
{
    int i, plrnum = pl - players;
    ddplayer_t* ddpl = pl->plr;
    byte temp[12];

    Reader_ReadInt32(svReader); // mo
    pl->playerState = Reader_ReadInt32(svReader);
    Reader_Read(svReader, temp, 10); // ticcmd_t
    pl->viewZ       = FIX2FLT(Reader_ReadInt32(svReader));
    pl->viewHeight  = FIX2FLT(Reader_ReadInt32(svReader));
    pl->viewHeightDelta = FIX2FLT(Reader_ReadInt32(svReader));
    pl->bob         = FIX2FLT(Reader_ReadInt32(svReader));
    pl->flyHeight   = Reader_ReadInt32(svReader);
    ddpl->lookDir   = Reader_ReadInt32(svReader);
    pl->centering   = Reader_ReadInt32(svReader);
    pl->health      = Reader_ReadInt32(svReader);
    pl->armorPoints = Reader_ReadInt32(svReader);
    pl->armorType   = Reader_ReadInt32(svReader);

    P_InventoryEmpty(plrnum);
    for(i = 0; i < 14; ++i)
    {
        inventoryitemtype_t type = Reader_ReadInt32(svReader);
        int j, count = Reader_ReadInt32(svReader);

        for(j = 0; j < count; ++j)
            P_InventoryGive(plrnum, type, true);
    }

    P_InventorySetReadyItem(plrnum, (inventoryitemtype_t) Reader_ReadInt32(svReader));
    Hu_InventorySelect(plrnum, P_InventoryReadyItem(plrnum));
    Reader_ReadInt32(svReader); // current inventory item count?
    /*pl->inventorySlotNum =*/ Reader_ReadInt32(svReader);

    memset(pl->powers, 0, sizeof(pl->powers));
    pl->powers[PT_INVULNERABILITY] = !!Reader_ReadInt32(svReader);
    pl->powers[PT_INVISIBILITY]    = !!Reader_ReadInt32(svReader);
    pl->powers[PT_ALLMAP]          = !!Reader_ReadInt32(svReader);
    if(pl->powers[PT_ALLMAP])
    {
        ST_RevealAutomap(pl - players, true);
    }
    pl->powers[PT_INFRARED]     = !!Reader_ReadInt32(svReader);
    pl->powers[PT_WEAPONLEVEL2] = !!Reader_ReadInt32(svReader);
    pl->powers[PT_FLIGHT]       = !!Reader_ReadInt32(svReader);
    pl->powers[PT_SHIELD]       = !!Reader_ReadInt32(svReader);
    pl->powers[PT_HEALTH2]      = !!Reader_ReadInt32(svReader);

    memset(pl->keys, 0, sizeof(pl->keys));
    pl->keys[KT_YELLOW] = !!Reader_ReadInt32(svReader);
    pl->keys[KT_GREEN]  = !!Reader_ReadInt32(svReader);
    pl->keys[KT_BLUE]   = !!Reader_ReadInt32(svReader);

    pl->backpack = Reader_ReadInt32(svReader);

    memset(pl->frags, 0, sizeof(pl->frags));
    pl->frags[0] = Reader_ReadInt32(svReader);
    pl->frags[1] = Reader_ReadInt32(svReader);
    pl->frags[2] = Reader_ReadInt32(svReader);
    pl->frags[3] = Reader_ReadInt32(svReader);

    pl->readyWeapon   = Reader_ReadInt32(svReader);
    pl->pendingWeapon = Reader_ReadInt32(svReader);

    // Owned weapons.
    memset(pl->weapons, 0, sizeof(pl->weapons));
    pl->weapons[WT_FIRST  ].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_SECOND ].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_THIRD  ].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_FOURTH ].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_FIFTH  ].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_SIXTH  ].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_SEVENTH].owned = !!Reader_ReadInt32(svReader);
    pl->weapons[WT_EIGHTH ].owned = !!Reader_ReadInt32(svReader);

    memset(pl->ammo, 0, sizeof(pl->ammo));
    pl->ammo[AT_CRYSTAL].owned = Reader_ReadInt32(svReader);
    pl->ammo[AT_ARROW  ].owned = Reader_ReadInt32(svReader);
    pl->ammo[AT_ORB    ].owned = Reader_ReadInt32(svReader);
    pl->ammo[AT_RUNE   ].owned = Reader_ReadInt32(svReader);
    pl->ammo[AT_FIREORB].owned = Reader_ReadInt32(svReader);
    pl->ammo[AT_MSPHERE].owned = Reader_ReadInt32(svReader);
    pl->ammo[AT_CRYSTAL].max = Reader_ReadInt32(svReader);
    pl->ammo[AT_ARROW  ].max = Reader_ReadInt32(svReader);
    pl->ammo[AT_ORB    ].max = Reader_ReadInt32(svReader);
    pl->ammo[AT_RUNE   ].max = Reader_ReadInt32(svReader);
    pl->ammo[AT_FIREORB].max = Reader_ReadInt32(svReader);
    pl->ammo[AT_MSPHERE].max = Reader_ReadInt32(svReader);

    pl->attackDown = Reader_ReadInt32(svReader);
    pl->useDown    = Reader_ReadInt32(svReader);
    pl->cheats     = Reader_ReadInt32(svReader);
    pl->refire     = Reader_ReadInt32(svReader);
    pl->killCount  = Reader_ReadInt32(svReader);
    pl->itemCount  = Reader_ReadInt32(svReader);
    pl->secretCount = Reader_ReadInt32(svReader);
    Reader_ReadInt32(svReader); // message, char*
    pl->damageCount = Reader_ReadInt32(svReader);
    pl->bonusCount = Reader_ReadInt32(svReader);
    pl->flameCount = Reader_ReadInt32(svReader);
    Reader_ReadInt32(svReader); // attacker
    ddpl->extraLight = Reader_ReadInt32(svReader);
    ddpl->fixedColorMap = Reader_ReadInt32(svReader);
    pl->colorMap = Reader_ReadInt32(svReader);
    for(i = 0; i < 2; ++i)
    {
        pspdef_t* psp = &pl->pSprites[i];

        psp->state = INT2PTR(state_t, Reader_ReadInt32(svReader));
        psp->pos[VX] = Reader_ReadInt32(svReader);
        psp->pos[VY] = Reader_ReadInt32(svReader);
        psp->tics = Reader_ReadInt32(svReader);
    }

    pl->didSecret = Reader_ReadInt32(svReader);
    pl->morphTics = Reader_ReadInt32(svReader);
    pl->chickenPeck = Reader_ReadInt32(svReader);
    Reader_ReadInt32(svReader); // rain1
    Reader_ReadInt32(svReader); // rain2
}