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

Function mixtype

src/potion.c:2121–2209  ·  view source on GitHub ↗

returns the potion type when o1 is dipped in o2 */

Source from the content-addressed store, hash-verified

2119
2120/* returns the potion type when o1 is dipped in o2 */
2121staticfn short
2122mixtype(struct obj *o1, struct obj *o2)
2123{
2124 int o1typ = o1->otyp, o2typ = o2->otyp;
2125
2126 /* cut down on the number of cases below */
2127 if (o1->oclass == POTION_CLASS
2128 && (o2typ == POT_GAIN_LEVEL || o2typ == POT_GAIN_ENERGY
2129 || o2typ == POT_HEALING || o2typ == POT_EXTRA_HEALING
2130 || o2typ == POT_FULL_HEALING || o2typ == POT_ENLIGHTENMENT
2131 || o2typ == POT_FRUIT_JUICE)) {
2132 /* swap o1 and o2 */
2133 o1typ = o2->otyp;
2134 o2typ = o1->otyp;
2135 }
2136
2137 switch (o1typ) {
2138 case POT_HEALING:
2139 if (o2typ == POT_SPEED)
2140 return POT_EXTRA_HEALING;
2141 FALLTHROUGH;
2142 /*FALLTHRU*/
2143 case POT_EXTRA_HEALING:
2144 case POT_FULL_HEALING:
2145 if (o2typ == POT_GAIN_LEVEL || o2typ == POT_GAIN_ENERGY)
2146 return (o1typ == POT_HEALING) ? POT_EXTRA_HEALING
2147 : (o1typ == POT_EXTRA_HEALING) ? POT_FULL_HEALING
2148 : POT_GAIN_ABILITY;
2149 FALLTHROUGH;
2150 /*FALLTHRU*/
2151 case UNICORN_HORN:
2152 switch (o2typ) {
2153 case POT_SICKNESS:
2154 return POT_FRUIT_JUICE;
2155 case POT_HALLUCINATION:
2156 case POT_BLINDNESS:
2157 case POT_CONFUSION:
2158 return POT_WATER;
2159 }
2160 break;
2161 case AMETHYST: /* "a-methyst" == "not intoxicated" */
2162 if (o2typ == POT_BOOZE)
2163 return POT_FRUIT_JUICE;
2164 break;
2165 case POT_GAIN_LEVEL:
2166 case POT_GAIN_ENERGY:
2167 switch (o2typ) {
2168 case POT_CONFUSION:
2169 return (rn2(3) ? POT_BOOZE : POT_ENLIGHTENMENT);
2170 case POT_HEALING:
2171 return POT_EXTRA_HEALING;
2172 case POT_EXTRA_HEALING:
2173 return POT_FULL_HEALING;
2174 case POT_FULL_HEALING:
2175 return POT_GAIN_ABILITY;
2176 case POT_FRUIT_JUICE:
2177 return POT_SEE_INVISIBLE;
2178 case POT_BOOZE:

Callers 1

potion_dipFunction · 0.85

Calls 1

rn2Function · 0.85

Tested by

no test coverage detected