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

Function itemactions_pushkeys

src/iactions.c:139–274  ·  view source on GitHub ↗

set up a command to execute on a specific item next */

Source from the content-addressed store, hash-verified

137
138/* set up a command to execute on a specific item next */
139staticfn void
140itemactions_pushkeys(struct obj *otmp, int act)
141{
142 switch (act) {
143 default:
144 impossible("Unknown item action %d", act);
145 break;
146 case IA_NONE:
147 break;
148 case IA_UNWIELD:
149 cmdq_add_ec(CQ_CANNED, (otmp == uwep) ? dowield
150 : (otmp == uswapwep) ? remarm_swapwep
151 : (otmp == uquiver) ? dowieldquiver
152 : donull); /* can't happen */
153 cmdq_add_key(CQ_CANNED, HANDS_SYM);
154 break;
155 case IA_APPLY_OBJ:
156 cmdq_add_ec(CQ_CANNED, doapply);
157 cmdq_add_key(CQ_CANNED, otmp->invlet);
158 break;
159 case IA_DIP_OBJ:
160 /* #altdip instead of normal #dip - takes potion to dip into
161 first (the inventory item instigating this) and item to
162 be dipped second, also ignores floor features such as
163 fountain/sink so we don't need to force m-prefix here */
164 cmdq_add_ec(CQ_CANNED, dip_into);
165 cmdq_add_key(CQ_CANNED, otmp->invlet);
166 break;
167 case IA_NAME_OBJ:
168 case IA_NAME_OTYP:
169 cmdq_add_ec(CQ_CANNED, docallcmd);
170 cmdq_add_key(CQ_CANNED, (act == IA_NAME_OBJ) ? 'i' : 'o');
171 cmdq_add_key(CQ_CANNED, otmp->invlet);
172 break;
173 case IA_DROP_OBJ:
174 cmdq_add_ec(CQ_CANNED, dodrop);
175 cmdq_add_key(CQ_CANNED, otmp->invlet);
176 break;
177 case IA_EAT_OBJ:
178 /* start with m-prefix; for #eat, it means ignore floor food
179 if present and eat food from invent */
180 cmdq_add_ec(CQ_CANNED, do_reqmenu);
181 cmdq_add_ec(CQ_CANNED, doeat);
182 cmdq_add_key(CQ_CANNED, otmp->invlet);
183 break;
184 case IA_ENGRAVE_OBJ:
185 cmdq_add_ec(CQ_CANNED, doengrave);
186 cmdq_add_key(CQ_CANNED, otmp->invlet);
187 break;
188 case IA_FIRE_OBJ:
189 cmdq_add_ec(CQ_CANNED, dofire);
190 break;
191 case IA_ADJUST_OBJ:
192 cmdq_add_ec(CQ_CANNED, doorganize); /* #adjust */
193 cmdq_add_key(CQ_CANNED, otmp->invlet);
194 break;
195 case IA_ADJUST_STACK:
196 cmdq_add_ec(CQ_CANNED, adjust_split); /* #altadjust */

Callers 1

itemactionsFunction · 0.85

Calls 3

cmdq_add_ecFunction · 0.85
cmdq_add_keyFunction · 0.85
impossibleFunction · 0.70

Tested by

no test coverage detected