MCPcopy Index your code
hub / github.com/NetHack/NetHack / dropz

Function dropz

src/do.c:806–843  ·  view source on GitHub ↗

dropz - really put dropped object at its destination... */

Source from the content-addressed store, hash-verified

804
805/* dropz - really put dropped object at its destination... */
806void
807dropz(struct obj *obj, boolean with_impact)
808{
809 if (obj == uwep)
810 setuwep((struct obj *) 0);
811 if (obj == uquiver)
812 setuqwep((struct obj *) 0);
813 if (obj == uswapwep)
814 setuswapwep((struct obj *) 0);
815
816 if (u.uswallow) {
817 /* hero has dropped an item while inside an engulfer */
818 if (obj != uball) { /* mon doesn't pick up ball */
819 /* moving shop item into engulfer's inventory treated as theft */
820 if (is_unpaid(obj))
821 (void) stolen_value(obj, u.ux, u.uy, TRUE, FALSE);
822 /* add to engulfer's inventory if not immediately eaten */
823 if (!engulfer_digests_food(obj))
824 (void) mpickobj(u.ustuck, obj);
825 }
826 } else {
827 if (flooreffects(obj, u.ux, u.uy, "drop"))
828 return;
829 place_object(obj, u.ux, u.uy);
830 if (with_impact)
831 container_impact_dmg(obj, u.ux, u.uy);
832 impact_disturbs_zombies(obj, with_impact);
833 if (obj == uball)
834 drop_ball(u.ux, u.uy);
835 else if (svl.level.flags.has_shop)
836 sellobj(obj, u.ux, u.uy);
837 stackobj(obj);
838 if (Blind && Levitation)
839 map_object(obj, 0);
840 newsym(u.ux, u.uy); /* remap location under self */
841 }
842 encumber_msg();
843}
844
845/* when swallowed, move dropped object from OBJ_FREE to u.ustuck's inventory;
846 for purple worm, immediately eat any corpse, glob, or special meat item

Callers 2

dropyFunction · 0.85
hitfloorFunction · 0.85

Calls 15

setuwepFunction · 0.85
setuqwepFunction · 0.85
setuswapwepFunction · 0.85
is_unpaidFunction · 0.85
stolen_valueFunction · 0.85
engulfer_digests_foodFunction · 0.85
mpickobjFunction · 0.85
flooreffectsFunction · 0.85
place_objectFunction · 0.85
container_impact_dmgFunction · 0.85
impact_disturbs_zombiesFunction · 0.85
drop_ballFunction · 0.85

Tested by

no test coverage detected