MCPcopy Create free account
hub / github.com/NetHack/NetHack / m_harmless_trap

Function m_harmless_trap

src/trap.c:1105–1187  ·  view source on GitHub ↗

is trap ttmp harmless to monster mtmp? */

Source from the content-addressed store, hash-verified

1103
1104/* is trap ttmp harmless to monster mtmp? */
1105boolean
1106m_harmless_trap(struct monst *mtmp, struct trap *ttmp)
1107{
1108 struct permonst *mdat = mtmp->data;
1109
1110 /* this handles most of the traps, but those are still included
1111 in the switch case below for completeness */
1112 if (!Sokoban && floor_trigger(ttmp->ttyp) && check_in_air(mtmp, 0L))
1113 return TRUE;
1114
1115 switch (ttmp->ttyp) {
1116 case ARROW_TRAP:
1117 break;
1118 case DART_TRAP:
1119 break;
1120 case ROCKTRAP:
1121 break;
1122 case SQKY_BOARD:
1123 break;
1124 case BEAR_TRAP:
1125 if (mdat->msize <= MZ_SMALL || amorphous(mdat)
1126 || is_whirly(mdat) || unsolid(mdat))
1127 return TRUE;
1128 break;
1129 case LANDMINE:
1130 break;
1131 case ROLLING_BOULDER_TRAP:
1132 break;
1133 case SLP_GAS_TRAP:
1134 if (resists_sleep(mtmp) || defended(mtmp, AD_SLEE))
1135 return TRUE;
1136 break;
1137 case RUST_TRAP:
1138 if (mdat != &mons[PM_IRON_GOLEM])
1139 return TRUE;
1140 break;
1141 case FIRE_TRAP:
1142 if (resists_fire(mtmp) || defended(mtmp, AD_FIRE))
1143 return TRUE;
1144 break;
1145 case PIT:
1146 FALLTHROUGH;
1147 /*FALLTHRU*/
1148 case SPIKED_PIT:
1149 FALLTHROUGH;
1150 /*FALLTHRU*/
1151 case HOLE:
1152 FALLTHROUGH;
1153 /*FALLTHRU*/
1154 case TRAPDOOR:
1155 if (is_clinger(mdat) && !Sokoban)
1156 return TRUE;
1157 break;
1158 case TELEP_TRAP:
1159 break;
1160 case LEVEL_TELEP:
1161 break;
1162 case MAGIC_PORTAL:

Callers 1

mfndposFunction · 0.85

Calls 5

floor_triggerFunction · 0.85
check_in_airFunction · 0.85
defendedFunction · 0.85
resists_magmFunction · 0.85
impossibleFunction · 0.70

Tested by

no test coverage detected