diff --git a/src/deh_tables.c b/src/deh_tables.c index 8ef973c8d..b7432fd3f 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -1599,6 +1599,7 @@ struct int_const_s const INT_CONST[] = { {"KIF_DARKBG",KIF_DARKBG}, {"KIF_COLPATCH2PLAYER",KIF_COLPATCH2PLAYER}, {"KIF_HIDEFROMROULETTE",KIF_HIDEFROMROULETTE}, + {"KIF_HYUCANTSTEAL",KIF_HYUCANTSTEAL}, // kartresultflags_e {"KRF_INDIRECTITEM",KRF_INDIRECTITEM}, diff --git a/src/k_items.c b/src/k_items.c index 7c39eff70..92037aa1d 100644 --- a/src/k_items.c +++ b/src/k_items.c @@ -1779,8 +1779,14 @@ static void K_DoHyudoroSteal(player_t *player) && !(players[i].itemflags & IF_ITEMOUT) && !players[i].itemblink)) { - playerswappable[numplayers] = i; - numplayers++; + kartitemflags_e flags = K_GetItemFlags(players[i].itemtype); + + // I'd have liked for this to be a result-based thing, but that'd need a rework in of itself. + if ((flags & KIF_HYUCANTSTEAL) != KIF_HYUCANTSTEAL) + { + playerswappable[numplayers] = i; + numplayers++; + } } } diff --git a/src/k_items.h b/src/k_items.h index 231dd835b..9e445b2e3 100644 --- a/src/k_items.h +++ b/src/k_items.h @@ -84,6 +84,7 @@ typedef enum KIF_DARKBG = 1<<3, // use dark item roulette BG KIF_COLPATCH2PLAYER = 1<<4, // colourize patch to player KIF_HIDEFROMROULETTE = 1<<5, // don't show this item in the roulette (inversion of xItem's showInRoulette item flag) + KIF_HYUCANTSTEAL = 1<<7, // Prevents the item from being stolen by a Hyudoro } ATTRPACK kartitemflags_e; // result flags relevant to the roulette