11 Oct, 2009, Tonitrus wrote in the 21st comment:
Votes: 0
On the subject of emotions and inflicting emotions on your players, it's not as hard as you might think.

I was playing an rp/pk mud one day and I attacked an Illusionist Illithid or something. Upon getting my ass kicked I resorted to my well-honed pk instinct of panic, run away, and cry. But running one room away isn't enough, naturally, so I am typing in movement directions as fast as possible, but no matter what I do I can't get more than one room away from this stupid mob. AND he pursues. I think it probably took me less than a minute to figure out what was happening, I doubt it even took me 30 seconds, but for those 30 seconds I was absolutely terrified and confused.

What was happening? He cast misdirection on me. It replaced my all room descs with the same message about being in the "Heart of Somethingorother"

Another mud I played on had a mob in a room called The Eight Gates, and pretty much all the directions you could run would teleport you to another part of the game. So I was fighting him one day, didn't know the mob, and we were all dying, so I fled as much and as fast as I could. I was popping up all over the game, and could see the room I landed in, but no matter where I went, he was hitting me. (he was silently transing me back and attacking)

That still scares me when I think about it.

There's always ways to screw with your players.
11 Oct, 2009, flumpy wrote in the 22nd comment:
Votes: 0
KaVir said:
flumpy said:
I think keeping descriptions reasonably short works well, as in GW2 otherwise you tie yourself up in hard logic which isn't nice to look at.

Some of the GW2 descriptions can actually get quite long, but (much like the approach I discussed for generating character descriptions) I've found the easiest way it to assemble them from a series of sections. The method I use for this is as follows:

Section 1: Viewer's position (standing, walking, flying, etc), season and terrain.

Section 2: Time and terrain.

Section 3: Weather and terrain.

Section 4: Optional hand-written area description (season and day/night specific).

Each of the above usually consists of a single sentence, but can consist of more, and sometimes result in fairly lengthy descriptions such as:

You are walking through Whispering Wood, the leaves on the trees a mottled brown from the onset of autumn. Many leaves have already fallen to the ground, and they crunch beneath your boots with every step. The sun is beginning to rise on the eastern horizon, its red glow barely visible through the tall trees. Flashes of lightning and the rumble of thunder fill the night air, framed against the backdrop of incessant rain which falls through the tree branches overhead before pattering on the ground. Your cloak flaps wildly in the wind, providing little protection against the pouring rain. The trees in this part of the forest are tall and sturdy, their great trunks towering high above you.


KaVir, as always, your ideas are pure inspiration. This kind of separation is truly a good way to do this sort of thing I will have to squirrel it away in my mind and implement it in GroovyMud when I have a chance.
11 Oct, 2009, David Haley wrote in the 23rd comment:
Votes: 0
For the bitwise arithmetic, you need to make sure it starts with DIR_NORTH. If you counter 'i' starts at zero, you do this:
flag = 1 << (DIR_NORTH + i)

Is DIR_NORTH already 1 for you?

You're right that macros can do funny things if you're not careful, unless they're carefully crafted. Still, I would suspect that IS_SET probably does the right thing; what does your copy expand to?

Still, if it gets sufficiently complex, you might as well leave it with the double counter and simply put in a comment.
12 Oct, 2009, ATT_Turan wrote in the 24th comment:
Votes: 0
David Haley said:
For the bitwise arithmetic, you need to make sure it starts with DIR_NORTH. If you counter 'i' starts at zero, you do this:
flag = 1 << (DIR_NORTH + i)

Is DIR_NORTH already 1 for you?

You're right that macros can do funny things if you're not careful, unless they're carefully crafted. Still, I would suspect that IS_SET probably does the right thing; what does your copy expand to?

Still, if it gets sufficiently complex, you might as well leave it with the double counter and simply put in a comment.


The line I was looking to change currently reads:
if (!IS_SET(similar_exits, i))

where i is doubled each iteration through the loop, such that it equals 1, then 2, then 4, then 8. I tried to change this by making i start at 0 (which is DIR_NORTH) and increment to 3 (which is DIR_WEST) and making the above statement read as:
if (!IS_SET(similar_exits, 1<<(i+1)))

but it did not correctly evaluate. My IS_SET macro is simply (thing) & (other_thing), so I tried writing that out inside my if check as this:
if (!(similar_exits & (1<<(i+1))))

but it still didn't correctly evaluate, so I just left it the way it is. I figured that since this works and is not overly inefficient, I could spend the time doing research on bitwise arithmetic writing additional functionality into the descriptions.
20.0/24