[22:09:45] Dominus: Marzo, I think I solved the problem that activating usecode eggs by placing stuff did not work in the original gump mode (gumps pause game) https://github.com/exult/exult/issues/153
[22:10:45] Dominus: do you think that makes sense?
[22:15:52] Marzo: I think that the original closed gumps from usecode
[22:16:27] Dominus: I'm not so sure from my tests
[22:16:28] Marzo: I think that the major diference is that there are some usecode script opcodes that the original used to implement eggs, but which Exult does not implement
[22:17:23] Dominus: does the egg or the usecode determine whether it is the correct item?
[22:17:42] Marzo: The egg calls an usecode function when it triggers
[22:18:02] Marzo: And the usecode function determines if it is the correct item
[22:18:13] Dominus: because in the original placing a wrong item already closes the gump
[22:19:11] Dominus: good test is the final blackgate scene: placing anything on the pillars where you are supposed to place cube, sphere, pyramid will close the gumps
[22:19:45] Dominus: also picking up a wrong item from those pillars will again close gumps
[22:20:32] Dominus: so it may seem that the original also closed gumps on activating the eggs
[22:21:30] Dominus: Though closing the gumps *only* when the correct item is placed, determined by usecode, would be nicer
[22:28:25] Marzo: I can confirm that eggs that have "something on" criteria have a special case to force-close gumps when something is placed near them
[22:28:35] Marzo: And it must be an object, not an NPC
[22:30:08] Dominus: so at first glance something like const Shape_info &info = ShapeID::get_info(mshape);
[22:30:08] Dominus: if (info.is_npc())
[22:30:38] Marzo: Why bother, let usecode decide
[22:31:16] Marzo: It would be better to maybe keep gumps open if they don't pause the game, though
[22:32:25] Dominus: hmm, you got a point. Stuff like an NPC being triggered to say something will clsoe the gump then anyway but you can place multiple things without having your gump being closed
[22:36:28] Dominus: so how do I make usecode decide whether NPC or not?
[22:42:29] Marzo: Usecode already does by checking for specific shapes
[22:42:38] Marzo: So no need to worry about it at all
[22:49:29] Dominus: But when I place an NPC in Exult (with that close gump code) it closes the gump, while the original does not
[22:49:47] Dominus: (though that can only happen with hackmover)
[23:01:51] Dominus: Marzo, so if (!obj->get_info().is_npc() && !gumpman->gumps_dont_pause_game()) would work, but should I even bother for obvious cheating (placing an NPC)?
[23:02:21] Marzo: As I said, don't bother with the NPC check
[23:02:41] Marzo: It did not matter in the original, and it is a limitation that is not worth emulating anyway
[23:03:30] Dominus: alright, then I'll commit with the limitation to !gumps_don't_pause_game only.
[23:03:42] Dominus: Thanks a lot for your help... again :)
[23:20:15] github-actions: exult/refs/heads/master a7839f3c06f9502a69ba4807595981ec2862f00f https://github.com/exult/exult/actions/runs/1855466799 The Linux build succeeded.
[23:21:24] github-actions: exult/refs/heads/master a7839f3c06f9502a69ba4807595981ec2862f00f https://github.com/exult/exult/actions/runs/1855466796 The Windows build succeeded.
[23:23:54] github-actions: exult/refs/heads/master a7839f3c06f9502a69ba4807595981ec2862f00f https://github.com/exult/exult/actions/runs/1855466802 The Mac OSX build succeeded.