@@ -1304,32 +1304,35 @@ void P_PlayerInCompatibleSector(player_t* player)
1304
1304
{
1305
1305
switch ((sector->special & DAMAGE_MASK) >> DAMAGE_SHIFT)
1306
1306
{
1307
- case 0 : // Kill player unless invuln or rad suit
1308
- if (!player->powers [pw_invulnerability] && !player->powers [pw_ironfeet])
1307
+ case 0 : // Kill player unless invuln or rad suit or IDDQD
1308
+ if (!player->powers [pw_invulnerability] && !player->powers [pw_ironfeet] && !(player-> cheats & CF_GODMODE) )
1309
1309
{
1310
- P_DamageMobj (player->mo , NULL , NULL , 10000 , MOD_UNKNOWN);
1310
+ P_DamageMobj (player->mo , NULL , NULL , 999 , MOD_UNKNOWN); // 999 so BUDDHA can survive
1311
1311
}
1312
1312
break ;
1313
- case 1 : // Kill player with no scruples
1314
- P_DamageMobj (player->mo , NULL , NULL , 10000 , MOD_UNKNOWN);
1313
+ case 1 : // Kill player with no scruples unless IDDQD
1314
+ if (!(player->cheats & CF_GODMODE))
1315
+ {
1316
+ P_DamageMobj (player->mo , NULL , NULL , 10000 , MOD_UNKNOWN);
1317
+ }
1315
1318
break ;
1316
1319
case 2 : // Kill all players and exit. There's no delay here so it may confuse
1317
- // some players.
1320
+ // some players. Do NOT kill players with IDDQD.
1318
1321
if (serverside)
1319
1322
{
1320
1323
if (sv_allowexit)
1321
1324
{
1322
1325
for (Players::iterator it = ::players.begin ();
1323
1326
it != ::players.end (); ++it)
1324
1327
{
1325
- if (player->ingame () && player->health > 0 )
1328
+ if (player->ingame () && player->health > 0 && !(player-> cheats & CF_GODMODE) )
1326
1329
{
1327
1330
P_DamageMobj ((*it).mo , NULL , NULL , 10000 , MOD_EXIT);
1328
1331
}
1329
1332
}
1330
1333
G_ExitLevel (0 , 1 );
1331
1334
}
1332
- else
1335
+ else if (!(player-> cheats & CF_GODMODE)) // Do NOT kill players with IDDQD.
1333
1336
{
1334
1337
P_DamageMobj (
1335
1338
player->mo , NULL , NULL , 10000 ,
@@ -1339,22 +1342,22 @@ void P_PlayerInCompatibleSector(player_t* player)
1339
1342
}
1340
1343
break ;
1341
1344
case 3 : // Kill all players and secret exit. There's no delay here so it may
1342
- // confuse some players.
1345
+ // confuse some players. Do NOT kill players with IDDQD.
1343
1346
if (serverside)
1344
1347
{
1345
1348
if (sv_allowexit)
1346
1349
{
1347
1350
for (Players::iterator it = ::players.begin ();
1348
1351
it != ::players.end (); ++it)
1349
1352
{
1350
- if (player->ingame () && player->health > 0 )
1353
+ if (player->ingame () && player->health > 0 && !(player-> cheats & CF_GODMODE) )
1351
1354
{
1352
1355
P_DamageMobj ((*it).mo , NULL , NULL , 10000 , MOD_EXIT);
1353
1356
}
1354
1357
}
1355
1358
G_SecretExitLevel (0 , 1 );
1356
1359
}
1357
- else
1360
+ else if (!(player-> cheats & CF_GODMODE)) // Do NOT kill players with IDDQD.
1358
1361
{
1359
1362
P_DamageMobj (
1360
1363
player->mo , NULL , NULL , 10000 ,
@@ -1365,7 +1368,7 @@ void P_PlayerInCompatibleSector(player_t* player)
1365
1368
break ;
1366
1369
}
1367
1370
}
1368
- else
1371
+ else if (!(player-> cheats & CF_GODMODE)) // Do NOT damage players with IDDQD.
1369
1372
{
1370
1373
P_ApplyGeneralizedSectorDamage (player, (sector->special & DAMAGE_MASK) >>
1371
1374
DAMAGE_SHIFT);
0 commit comments