⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m_cheat.c

📁 The source code of Doom legacy for windows
💻 C
📖 第 1 页 / 共 3 页
字号:
        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('e'),        0, 0xff, 0};// Get an artifact final stagestatic byte CheatArtifact3Seq[] ={        CHEAT_ENCRYPT('g'),        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('e'),        0, 0, 0xff};// Warp to new levelstatic byte CheatWarpSeq[] ={        CHEAT_ENCRYPT('e'),        CHEAT_ENCRYPT('n'),        CHEAT_ENCRYPT('g'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('g'),        CHEAT_ENCRYPT('e'),        0, 0, 0xff, 0};// Save a screenshotstatic byte CheatChickenSeq[] ={        CHEAT_ENCRYPT('c'),        CHEAT_ENCRYPT('o'),        CHEAT_ENCRYPT('c'),        CHEAT_ENCRYPT('k'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('d'),        CHEAT_ENCRYPT('o'),        CHEAT_ENCRYPT('o'),        CHEAT_ENCRYPT('d'),        CHEAT_ENCRYPT('l'),        CHEAT_ENCRYPT('e'),        CHEAT_ENCRYPT('d'),        CHEAT_ENCRYPT('o'),        CHEAT_ENCRYPT('o'),        0xff, 0};// Kill all monstersstatic byte CheatMassacreSeq[] ={        CHEAT_ENCRYPT('m'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('s'),        CHEAT_ENCRYPT('s'),        CHEAT_ENCRYPT('a'),        CHEAT_ENCRYPT('c'),        CHEAT_ENCRYPT('r'),        CHEAT_ENCRYPT('e'),        0xff, 0};static byte CheatIDKFASeq[] ={        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('d'),        CHEAT_ENCRYPT('k'),        CHEAT_ENCRYPT('f'),        CHEAT_ENCRYPT('a'),        0xff, 0};static byte CheatIDDQDSeq[] ={        CHEAT_ENCRYPT('i'),        CHEAT_ENCRYPT('d'),        CHEAT_ENCRYPT('d'),        CHEAT_ENCRYPT('q'),        CHEAT_ENCRYPT('d'),        0xff, 0};static Cheat_t Cheats[] ={    { CheatGodFunc, CheatGodSeq, NULL, {0, 0}, 0 },    { CheatNoClipFunc, CheatNoClipSeq, NULL, {0, 0}, 0 },    { CheatWeaponsFunc, CheatWeaponsSeq, NULL, {0, 0}, 0 },    { CheatPowerFunc, CheatPowerSeq, NULL, {0, 0}, 0 },    { CheatHealthFunc, CheatHealthSeq, NULL, {0, 0}, 0 },    { CheatKeysFunc, CheatKeysSeq, NULL, {0, 0}, 0 },//      { CheatSoundFunc, CheatSoundSeq, NULL, 0, 0, 0 },    { CheatTickerFunc, CheatTickerSeq, NULL, {0, 0}, 0 },    { CheatArtifact1Func, CheatArtifact1Seq, NULL, {0, 0}, 0 },    { CheatArtifact2Func, CheatArtifact2Seq, NULL, {0, 0}, 0 },    { CheatArtifact3Func, CheatArtifact3Seq, NULL, {0, 0}, 0 },    { CheatWarpFunc, CheatWarpSeq, NULL, {0, 0}, 0 },    { CheatChickenFunc, CheatChickenSeq, NULL, {0, 0}, 0 },    { CheatMassacreFunc, CheatMassacreSeq, NULL, {0, 0}, 0 },    { CheatIDKFAFunc, CheatIDKFASeq, NULL, {0, 0}, 0 },    { CheatIDDQDFunc, CheatIDDQDSeq, NULL, {0, 0}, 0 },    { NULL, NULL, NULL, {0, 0}, 0 } // Terminator};//--------------------------------------------------------------------------//// FUNC HandleCheats//// Returns true if the caller should eat the key.////--------------------------------------------------------------------------static boolean HandleCheats(byte key){        int i;        boolean eat;        if(netgame || gameskill == sk_nightmare)        { // Can't cheat in a net-game, or in nightmare mode                return(false);        }        if(players[consoleplayer].health <= 0)        { // Dead players can't cheat                return(false);        }        eat = false;        for(i = 0; Cheats[i].func != NULL; i++)        {                if(CheatAddKey(&Cheats[i], key, &eat))                {                        Cheats[i].func(&players[consoleplayer], &Cheats[i]);                        S_StartSound(NULL, sfx_dorcls);                }        }        return(eat);}//--------------------------------------------------------------------------//// FUNC CheatAddkey//// Returns true if the added key completed the cheat, false otherwise.////--------------------------------------------------------------------------static boolean CheatAddKey(Cheat_t *cheat, byte key, boolean *eat){        if(!cheat->pos)        {                cheat->pos = cheat->sequence;                cheat->currentArg = 0;        }        if(*cheat->pos == 0)        {                *eat = true;                cheat->args[cheat->currentArg++] = key;                cheat->pos++;        }        else if( cheat_xlate_table[key] == *cheat->pos)        {                cheat->pos++;        }        else        {                cheat->pos = cheat->sequence;                cheat->currentArg = 0;        }        if(*cheat->pos == 0xff)        {                cheat->pos = cheat->sequence;                cheat->currentArg = 0;                return(true);        }        return(false);}//--------------------------------------------------------------------------//// CHEAT FUNCTIONS////--------------------------------------------------------------------------static void CheatGodFunc(player_t *player, Cheat_t *cheat){        player->cheats ^= CF_GODMODE;        if(player->cheats&CF_GODMODE)        {                P_SetMessage(player, TXT_CHEATGODON, false);        }        else        {                P_SetMessage(player, TXT_CHEATGODOFF, false);        }        st_recalc = true;}static void CheatNoClipFunc(player_t *player, Cheat_t *cheat){        player->cheats ^= CF_NOCLIP;        if(player->cheats&CF_NOCLIP)        {                P_SetMessage(player, TXT_CHEATNOCLIPON, false);        }        else        {                P_SetMessage(player, TXT_CHEATNOCLIPOFF, false);        }}static void CheatWeaponsFunc(player_t *player, Cheat_t *cheat){        int i;        //extern boolean *WeaponInShareware;        player->armorpoints = 200;        player->armortype = 2;        if(!player->backpack)        {                for(i = 0; i < NUMAMMO; i++)                {                        player->maxammo[i] *= 2;                }                player->backpack = true;        }        for(i = 0; i < NUMWEAPONS-1; i++)        {                player->weaponowned[i] = true;        }        if(shareware)        {                player->weaponowned[wp_skullrod] = false;                player->weaponowned[wp_phoenixrod] = false;                player->weaponowned[wp_mace] = false;        }        for(i = 0; i < NUMAMMO; i++)        {                player->ammo[i] = player->maxammo[i];        }        P_SetMessage(player, TXT_CHEATWEAPONS, false);}static void CheatPowerFunc(player_t *player, Cheat_t *cheat){        if(player->powers[pw_weaponlevel2])        {                player->powers[pw_weaponlevel2] = 0;                P_SetMessage(player, TXT_CHEATPOWEROFF, false);        }        else        {                P_UseArtifact(player, arti_tomeofpower);                P_SetMessage(player, TXT_CHEATPOWERON, false);        }}static void CheatHealthFunc(player_t *player, Cheat_t *cheat){        if(player->chickenTics)        {                player->health = player->mo->health = MAXCHICKENHEALTH;        }        else        {                player->health = player->mo->health = MAXHEALTH;        }        P_SetMessage(player, TXT_CHEATHEALTH, false);}static void CheatKeysFunc(player_t *player, Cheat_t *cheat){        extern int playerkeys;        player->cards |= it_allkeys;        playerkeys = 7; // Key refresh flags        P_SetMessage(player, TXT_CHEATKEYS, false);}static void CheatTickerFunc(player_t *player, Cheat_t *cheat){        cv_ticrate.value = !cv_ticrate.value;        if(cv_ticrate.value)        {                P_SetMessage(player, TXT_CHEATTICKERON, false);        }        else        {                P_SetMessage(player, TXT_CHEATTICKEROFF, false);        }}static void CheatArtifact1Func(player_t *player, Cheat_t *cheat){        P_SetMessage(player, TXT_CHEATARTIFACTS1, false);}static void CheatArtifact2Func(player_t *player, Cheat_t *cheat){        P_SetMessage(player, TXT_CHEATARTIFACTS2, false);}static void CheatArtifact3Func(player_t *player, Cheat_t *cheat){        int i;        int j;        artitype_t type;        int count;        type = cheat->args[0]-'a'+1;        count = cheat->args[1]-'0';        if(type == 26 && count == 0)        { // All artifacts                for(i = arti_none+1; i < NUMARTIFACTS; i++)                {                        if(shareware && (i == arti_superhealth                                || i == arti_teleport))                        {                                continue;                        }                        for(j = 0; j < 16; j++)                        {                                P_GiveArtifact(player, i, NULL);                        }                }                P_SetMessage(player, TXT_CHEATARTIFACTS3, false);        }        else if(type > arti_none && type < NUMARTIFACTS                && count > 0 && count < 10)        {                if(shareware && (type == arti_superhealth || type == arti_teleport))                {                        P_SetMessage(player, TXT_CHEATARTIFACTSFAIL, false);                        return;                }                for(i = 0; i < count; i++)                {                        P_GiveArtifact(player, type, NULL);                }                P_SetMessage(player, TXT_CHEATARTIFACTS3, false);        }        else        { // Bad input                P_SetMessage(player, TXT_CHEATARTIFACTSFAIL, false);        }}static void CheatWarpFunc(player_t *player, Cheat_t *cheat){        int episode;        int map;        char *mapname;        episode = cheat->args[0]-'0';        map = cheat->args[1]-'0';        mapname = G_BuildMapName(episode, map);        if( W_CheckNumForName( mapname )>0 )        {                G_DeferedInitNew(gameskill, mapname, false);                P_SetMessage(player, TXT_CHEATWARP, false);        }}static void CheatChickenFunc(player_t *player, Cheat_t *cheat){        extern boolean P_UndoPlayerChicken(player_t *player);        if(player->chickenTics)        {                if(P_UndoPlayerChicken(player))                {                        P_SetMessage(player, TXT_CHEATCHICKENOFF, false);                }        }        else if(P_ChickenMorphPlayer(player))        {                P_SetMessage(player, TXT_CHEATCHICKENON, false);        }}static void CheatMassacreFunc(player_t *player, Cheat_t *cheat){        P_Massacre();        P_SetMessage(player, TXT_CHEATMASSACRE, false);}static void CheatIDKFAFunc(player_t *player, Cheat_t *cheat){        int i;        if(player->chickenTics)        {                return;        }        for(i = 1; i < 8; i++)        {                player->weaponowned[i] = false;        }        player->pendingweapon = wp_staff;        P_SetMessage(player, TXT_CHEATIDKFA, true);}static void CheatIDDQDFunc(player_t *player, Cheat_t *cheat){        P_DamageMobj(player->mo, NULL, player->mo, 10000);        P_SetMessage(player, TXT_CHEATIDDQD, true);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -