returns the potion type when o1 is dipped in o2 */
| 2119 | |
| 2120 | /* returns the potion type when o1 is dipped in o2 */ |
| 2121 | staticfn short |
| 2122 | mixtype(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: |