Only two years behind the curve, I am now grappling with the issues raised in this thread:
The technical solutions were not quite right for adv3, the library apparently has “side” handling for inventory verbs. Meaning the only way I could get it to work was this:
gameMain : GameMainDef
initialPlayerChar = me
allVerbsAllowAll = nil // eliminates 'ALL' except for inventory verbs
"No matter where you go, here you are.\b";
"<ABOUTBOX><CENTER>Fugue for Take-Spammers\b
"<.p>Well I hope you learned something";
// Then modify the remaining verbs, leaving DROP alone
modify TakeAction actionAllowsAll = nil;
modify TakeFromAction actionAllowsAll = nil;
modify PutInAction actionAllowsAll = nil;
modify PutOnAction actionAllowsAll = nil;
But, much like cloning or gene editing, the more interesting conversation is not ‘How do we…?’ but ‘SHOULD we?’
As an author, I rebel at the idea that players can strip away my finely tuned film of mimesis and reduce every location to a cold list of implementeds (thereby exposing my laziness!). As a player though? I don’t need or want that, but what about the TADS community in general? Is X ALL a much-beloved sacred cow, or even a necessary crutch? How do ya’ll feel about that capability?
More than a crutch, X ALL is an artifact of an ancient time when inventory management was part of a game’s challenge, which is not really a “thing” these days.
I would prefer if all X ALL (excepting DROP ALL, perhaps) was disallowed by default, but could be readily enabled by a game author.
I’ve seen X ALL not play well with implied actions and other edge cases. As I recall, I did something similar to the OP’s code in According to Cain because I grew tired of debugging all the little problems X ALL introduced.
Since inventory-heavy games do come along from time to time (Jim Aiken’s most recent, for example), I don’t think X ALL should be dropped altogether, though.
EDIT: By X ALL, I should have made it clear I meant <cmd> ALL, not a shortcut for EXAMINE ALL.
As a player I do often use TAKE ALL, DROP ALL, PUT ALL IN X, TAKE ALL FROM X (EXCEPT FOR X) for dealing with fiddly inventory stuff, and I’d miss it if it was gone. But Jim is right in that it’s only really an issue in games with lots of portable items and inventory juggling.
I guess I haven’t really thought about it before. I knew in the back of my mind that TAKE ALL was a command that could be used, but I never felt the need to use it, so I don’t know if it’s a thing in Inform 7 or Adv3 or Adv3Lite. On that note, I don’t think I’ve been testing stuff with this command in mind. I wonder if I’m missing potential bugs…
I really enjoy examining the scenery and will always inspect each item before picking it up. I’ve never really had a desire to TAKE ALL, because if I’m in a turn-based environment, I’ll take advantage of the opportunity to do things carefully and with intent, unlike my frantic actions in, say, Doom 2.
DROP ALL, however, is absolutely something I will do. I will kick open the door to my hut, arms absolutely overflowing with a pile of trinkets and treasures, each carefully examined. Waddling indoors, I will then dump it all onto the floor to add to my growing collection. If you hand me an IF game with more than 10 pickups, rest assured that I will go full-magpie and pile everything into a location that I’ve arbitrarily chosen to be “my home base”.
I feel like I need to do some investigation of TAKE ALL, at least from a potential bugfixing perspective.
Yup, I think the Infocom parser even let you do this? I don’t know the ins and outs of TADS as well as I do Inform, but I would be kinda surprised if it couldn’t handle this.
Yeah, I’m the same – sometimes this is about inventory limits and fiddling with containers, sometimes it’s a from a need to investigate the behavior of certain objects, sometimes it’s just unloading the accumulated cruft of a long-ish game. But I think if you allow DROP ALL, TAKE ALL should be included as a corollary to that because otherwise you’ve enabled the player to create a bunch of drudge-work for themselves, which isn’t very friendly.
I definitely hear the fear that players will just waddle through the game hoovering up everything without trying to understand their surroundings, though. There are ways around this – in Inform, it’s pretty easy to write a rule saying ALL doesn’t include anything the player hasn’t handled, so TAKE ALL only work for stuff the player’s already had in their inventory, for example. It’s just important to make sure you’re communicating this to the player so they’re not stymied by thinking they tried to take something when they didn’t.
(Of course, there’s also the devil’s advocate position that if a player wants to ruin their fun by typing TAKE ALL all day, well, that’s their prerogative. I can see the logic for that too, actually!)
Yes, should work in TADS and Inform, I think. Certainly works in ADRIFT (the last thing I tested was a huge ADRIFT game with some awkward inventory stuff like a rowing boat where you had to drop everything you were carrying to row the boat, but you did need to be carrying the oars. DROP ALL EXCEPT OARS was handy. Of course, DROP ALL, GET OARS will also work!). GET ALL EXCEPT RATTLESNAKE is useful if you’ve stashed all your trinkets in one place and want to scoop them all up - but you don’t want to pick up that rattlesnake.
A fun testing thing to do is to go into each location and GET ALL. Depending on how thorough the author has been in defining objects vs scenery, you may get some surprising results and end up carrying the moon, a mature oak forest, and a herd of wild cattle around with you. Happens more often than you’d think.
I’m pretty sure that’s actually already been done, in World’s ApartWorlds Apart - Details, a very old and very classic TADS2 game (that, inevitably, I started but never finished). Just goes to show there are no original ideas in fiction…
(With apologies to @jjmcc for derailing your thread!)
So if I understand correctly one can make things scenery which can be mentioned / examined but not being picked up. Although I find the “That’s hardly portable.” reply (at least for Inform7) a bit bland. How much more fun would it be to have a reaction like this instead:
(the moon: Sorry, it is not available for pick up by a casual adventurer.
But maybe I can interest you in the Eiffel Tower instead?
I offer 30% discount, today only!)
(My apologies for derailing this thread as well but I could not resist the temptation. Still having fun trying to make the parser see the light.)
No, no, this is the thread! I think I threw some chaff in the air choosing TAKE as my villain. X ALL is much more intrusive at the end of the day. That one may as well be “Just how much work DID you put in, author?”
While not aligned with my own playstyle, I guess I see how the inventory ALLs make more sense than initially perceived.
And I do find @DeusIrae’s “Let skaters skate” a reasonable counterpoint. What I have to reconcile is how do I wrestle my inner perfectionist to not sweat those guys. Or, more in line with my personality, pull my hair out trying to make it make sense.
Yeah the “let skaters skate” argument is really good, even though it might be difficult as an author.
The only counterpoint I have to that is skating should not be done with rusty equipment in a deathtrap of a skatepark. I wouldn’t ban the use of TAKE ALL in a game, but I would like place some limits, nuances, and quality-of-life algorithms on it to prevent the player from grabbing a venomous snake, along with other items. If the player is going to use TAKE ALL, I’m not gonna create head-desk results where the player is grumbling “no, not the snake, you infernal game!!”
The only reason why the snake would be grabbed is if the player entered in > TAKE SNAKE specifically.
EDIT: Honestly, I’m still trying to figure out why I was under the assumption that Inform 7 and TADS both didn’t allow TAKE ALL. This is giving me a lot to think about. I might make a custom extension for nuanced TAKE ALL handling…
Lol, you are a much better person than me. I could see including the venomous snake for no other game reason than to zap those damn x-all-stans as a not-so-passive aggressive punishment. And cackling madly with every tack of the keyboard as I do!
In games where I have an unlimited and overstashed inventory, I routinely DROP ALL and then selectively pick the stuff I think I’m going to need for the puzzle at hand back up. It helps my clarity of mind when I type INVENTORY and I get a short list of things I need. When the task is done, TAKE ALL gets me back on my way.
Of course, this can sometimes break stuff if the game automatically transports you to your bedroom with “all” your normal stuff after you’ve solved the puzzle, irrevocably locks the room with the puzzle behind you and leaves that one game-essential item in the now-locked room.
Anyway, I like TAKE ALL, even if it occasionally means picking up a rattlesnake.