Re: weights of nested containers
- Posted by "Lucius L. Hilley III" <L3Euphoria at bellsouth.net> Feb 17, 2004
- 562 views
I've done this, only I was trying to push things. I have it worked out in code. I'll send it to you as soon as I find it. Lucius L. Hilley III - Unkmar ----- Original Message ----- From: "Michelle Rogers" <michellerogers at bellsouth.net> To: <EUforum at topica.com> Sent: Monday, February 16, 2004 05:46 PM Subject: weights of nested containers I am writing a mud progam in Euphoria. Currently I have each character with a certain amount of strength. Depending on their strength, they can pick up a certain amount of weight. They can even pick up other characters, if they are strong enough to pick up the weight of the other character. The way I currently do this is that the weight of the person being picked up is evaluated. If they are too heavy, a message is given. If they are not too heavy, the person picks them up. However, here's the problem, what if you are trying to pick up a person, who is carrying a person, who is carrying a person, who is carrying a person, etc..etc.. I cannot get a logic in my head that would allow you to go through an unspecificed number of "carriers" and check the weight of everything they are carrying. This COULD be solved by just saying you can't carry someone who is carrying someone else....However, I will have the problem again, when I have to deal with things like....a backpack that contains a pouch, that contains a bag...etc..etc... Can someone help me figure out a logic for this. There is a variable on every object in the mud that I call a "roomin" variable. I started it to tell which room a player or object was in. However, each "thing" in the mud has a unique id. So, I've changed it so that the "roomin" variable doesn't have to point to a room. This is how you can be carried by another player. Instead of your "roomin" variable having the id number of a room, it has the id number of the person carrying you. So, in theory, you are "inside" the person carrying you (according to the data structure, anyway) So, here's how it would work. To know if someone is carrying someone, I have to check all players and see if their "roomin" variable is the id of the person I am checking. That's easy enough and I can add the weights of ...let's call them the "first generation of people being carried". However, it's when I start to check the roomin variables of everyone to see if they are carried by the first generation carriers, that I start to run into problems. Sure, I can do that. It's basically the same thing. But, how do I tell the code to keep checking until I've gotten to the end of everyone who's being carried (i.e. the "last generation" of people being carried)? hmm...as I actually typed out an explanation..I'm getting a sort of a hazy idea..so I may figure this out..but I'm still going to post the message, just in case. Michelle Rogers TOPICA - Start your own email discussion group. FREE!