MOO-cows Mailing List Archive


Dilemma based on verbcalls...

Ok, its dilemma time...  I previously thought the server was already able to use function calls in the form of #obj:("verbindex")() but recent testing shows even this doesn't work, and I now remember a discussion a long time ago about just this problem.  Because this isn't in the server already, I can imagine that putting it in becomes much more complicated than I originally pictured.  That, coupled with the announcement of beta3, leads me to have next to no hope to having this resolved before the actual release of 1.8.0  :)

That being the case, with the move towards in-db parsing,  what I quite literally have is a situation where
in my environment, $thing has the verb 'l*ook this-none-none", and $room has the two verbs 'l*ook this-none-none' and 'l*ook none none none' in that order.  this lets me do 'look thing', or 'look here' or 'look' without having to hand it off to :here_huh() to figure that all out.  (And remember again this is not the lambdacore, so there is good reason for why I do it this way.  Plus there are other instances I am encountering where I will need to do multiverbs with the same name.)

The server can parse these out, and execute the correct one, but now how do I make #0:do_command() execute the correct one?

I think the best solution was to create a dummy verb and set_verb_code(obj1, verb_code(obj1, "verb")) and call that verb directly.  This would work, but be pretty heavy hitting on the server, especially with big verbs that may suspend and all.  This poses another problem too,  pass() can no longer be used.

Fortunately at the moment, I am cheating by having the second verb set dobj to this, and calling this:look() which re-calls to the first verb, and that verb can pass() with no problem. It's when I need to pass() to the second occurrance of the verb that this will never be able to work correctly, and I just know that this is going to bite me on the ankle sooner or later...

--  -- Site admin for
Chaeon - Site Wiz or K'ryn - Bronze rider,  VirtuaPern Moo
VirtuaPern MOO - telnet port 9999

Home | Subject Index | Thread Index