An amazing amount of crashes and other so called ‘code bugs’, are not caused by the code at all, but by bad building, or – to be more precise – bad scripts. Builders who don’t know how to handle scripts can cause an enormous amount of problems. Builders who DO know how to handle scripts can cause an even larger amount, if they manage to slip a ‘cheat script’ past a sloppy check by the Head Builder.

We are all human and we all make mistakes. Sometimes the results of those mistakes can be very amusing, sometimes they can be extremely embarrassing.

So let’s share some of our worst mistakes with the community. At the best you might prevent someone from repeating the same mistake that you did. At the worst the community will get a good laugh at your expense. But hey! – since you chose yourself to share it, it’s not really at your expense, is it?

See, un-like alot of ya'all I am the fool, lol. I didnt even want to do this
mud building stuff, I just kept falling into in some form, shape or fashion.
Since I am a dumbass and a fool, Ive made more mistakes then most
people make rooms (hell ive made alot of rooms).

One of my last moments building an actualy zone before coding.

Id spent several days, working up a 225 room desert, with some cliffs,
a watchtower (al la all along), and a city with a bazarre, and a small sun
temple, compled with mobs and objects were half done.

I decided to start up a test port so I could tinker with some mob procs with
out disturbing the mortals, and so little did I know about coding at the time.
Anywho, as the crow flies, I had not kept a backup of my descriptions, any
what so ever. So After 3 days of tinkering with the mob specs, I shut the
test port down. In doing so, it over wrote the zones on the main port with
all of the old world files from the test port.

Now days, I know what I did wrong, and Ive never done it again, But at
the time I was quite devastated actualy to loose a weeks worth of work.

Since then Ive learned about world file backups, proper libs, backups of
my own desc work when building, and to double check the config file while
initiating any ports.

Even though I tend to be careful, occassionally I will overwrite my or somebody else's fix - I did that just before Christmas, reintroducing a bug I nagged another admin to fix for days. Made me blush, but luckily it wasn't a serious bug and once I noticed it was back, it was easy enough to fix again.

A few years ago me and several other immortals worked on a small project to give one of the older areas a facelift and add more challenge to getting the most coveted unique item in the game. We created a new subarea, with some guards and a boss, and I decided to give the guards an ability to deflect attacks. Oops, I forgot that mobs have a lot more hp than players, and the formula I used made the guards output enough damage to kill a player in one hit, if they used certain spells. That was bad. (But, deep inside, I still think players have no business doing that much damage in the first place!)

I had a few worse slips in QC, when I overlooked a bug in a quest and had to close it again within a few hours of opening it, or when I approved a feature that turned out to be a bad idea from the start. But in retrospect, I think I erred more on the side of caution as an area senior (guess that would be the equivalent of head builder). I was a bit of a control freak, and while it worked out fine with builders who had a lot of drive, pushing them to perfect their areas before opening, it also discouraged quite a few. Live and learn...

Below is one of my own worst gaffes. Not only did I make an extremely bad script that got extensively abused, it also had political consequences that affected a large part of the mud, including me, in a very negative way. Here’s what happened:

Our Prehistoric Dimension is largely based on Ancient Greece and Egypt. Mythology plays a large part in it, and consequently there are lots of Greek Gods around. Now I didn’t want these to be killed easily by any Tom, Dick or Harry, so I put a script on them, which basically makes them take off to Mount Olympus, if they drop to a certain HP. I also thought it would be a cool idea to put a script on one of the Gods, to cast ‘heal’ on any players that worshipped him, and then go to Olympus, to avoid excessive abuse.

The problem was that I was a bit sloppy, and made two major mistakes in the second script. First I set the num arg to 100 instead of 1, which made the mob react to ANY action, not just ‘worship Poseidon’. Second I forgot to make an if-check for actor_in_room.

So one day a player attacked Poseidon, and being a strong player he wore him down to the point where he took off with all his gear. This irritated the player so much that he sent the mob a tell; ‘Fuck you!’. Imagine his surprise and delight when he got a free ‘heal’ in return...

In the way of mortals he nursed this secret for quite a while, sharing it only with the members of his Clan, and swearing them to secrecy and caution. I don’t know for how long they abused the script, but it was for quite some time, and it got them tangible advantages when levelling, because healing potions are both heavy and expensive in our mud. They only used the bug against mobs, not for PK, because a player could have exposed it. They referred to the bug as their ‘Secret Weapon’ and bragged about it openly to other Clans, without giving any details. I even heard about the ‘Weapon’ myself, but put it down to the usual BS between Clans.

Meanwhile a couple of rogue players had entered the Mud, and coming from a similar codebase, they learnt the ropes extremely fast and advanced swiftly in the ranks. They played maniacally for some months, almost around the clock, and always covering each other’s back. When they were sufficiently strong, they went PK and started to gang up on their enemies. And they had plenty of those, because they were a couple of arrogant and vindictive bastards that almost everyone in the mud – including me – disliked intensely.

Then one day they attacked a longtime player who was also the Leader of the above Clan, and being cornered and almost dead, he decided to break the Clan rule and use the ‘Secret Weapon’ against them, not just once, but repeatedly. As a consequence he won the fight, and some hours later I got a log from the two players, stating that an invis imm must have been in the room, casting ‘heal’ on him during the fight. I looked at the log and didn’t believe my eyes. I didn’t want to believe that any of our imms would cheat like that, but I also never had seen anything like it before. I checked the backlogs and found that no imm had been on line at the time of the fight, which was a real relief.

Then I made my next mistake. I showed the log to my longtime player and asked him flat out if he had been abusing a bug during the fight. And of course he lied straight to my face and denied it. And then, partly because I liked him and disliked the two others, I chose to trust him and stuck out my neck. I told the two rogues that no imm had been logged on at the time, and that no known code bug could have caused what the log showed. I even accused them of ‘faking’ the log, (which is not a very hard thing to do). Needless to say, they got extremely pissed.

To days later the rogues figured out how the bug worked, partly by accident this time too. They were in the habit of using the command ‘tell king hi’ to check if a certain mob that they used to powerlevel on was loaded. And Poseidon had the alias ‘King’ too, and happened to be on top of the King list...

So, triumphantly, they demonstrated the bug to me. I had to eat humble pie and apologise publicly about my mistake. I also had to punish the Clan Leader, which was less hard, since I was pretty angry by then. Bug abuse from mortals I can live with, especially when it is caused by my own mistakes. But he had also lied to me, and put me in a very embarrassing position. So I put his char, which was pretty powerful, back down to level 1, which was a normal punishment for 'cheating'.

And as a secondary consequence the Clan was severely weakened, the two rogues got the upper hand and started to systematically kill off the Clan members one by one, as soon as they ventured out of the HQ. In a few weeks time they had all but obliterated the once most powerful Clan in the game, and the members left the Clan, and even the Mud, in droves.

A few of the many minor failures I've made (can't think of any monumental ones just at the moment...);

* Erasing numerous rooms from z1 whilst working on z11 in the OLC, caused by rapidly slamming into linking and deletion commands and forgetting a single, measely 1. Luckily, changes were made and repairs carried out before the admin in charge of z1 noticed.

* Loading up a few hundred suits generic-evil-warrior-armour in the middle of a crowded player hangout due to dumping a painstakingly constructed list of commands into the player-port window, not the builder-port window. Luckily, the loading of objects and the deleting of objects is not something echoed to players when wisinvis. No one seemed to notice that all the furniture in the location was replaced with completely different objects afterwards, either.

* Creating a massive, hideous, terrifying described monster for an event, yet not forgetting to change its statistics from a base human. The players involved that tore it to pieces were somewhat disappointed.

This one is classic, and I probably told it before. But it's a true story and was pretty funny at the time, so I'll take the risk of being repetitive.

A pretty common trick that Builders use to make a mob a bit more challenging is to have it load a helper mob when attacked. The idea is that if you attack the frail old lady, her big, muscular son will jump out from behind the shed and kick your butt. Problem is that you need some sort of check for the number of helpers the first mob will load, or it will keep loading a new one at each tick.

I was pretty new at doing scripts, so I forgot this if-check when I made the annoying, snot-nosed little brat that any player would love to kill, and also had it call out when attacked; 'Daddy, that nasty man/woman abused me!' and load its father.

Luckily my partner and I decided to check the zone before we declared it officially open. So I hit the brat, and the next thing I knew there were 50 enraged fathers in the room beeting the crap out of us and killing us in 3 seconds. And I'll never forget my partners dry remark, when we returned from the dead to collect our stuff;
'Makes one wonder what his mother had been up to.'

The first time I almost crashed the mud was when I was a very newbie wizard, and another immortal was showing me something in my workroom. We have a joker mob in the game, which will take anything it hears and repeat it, adding a bit of its own stuff:

You grin.
Joker exclaims: I hate it when Angie grins!
You say: Oh, give me a break
Joker exclaims: I hate it when Angie says: Oh, give me a break!

Now, not quite intentionally, we managed to clone two of these mobs in the workroom, and get them started with some innocent remark...

Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Joker exclaims: I hate it when Angie grins!

Needless to say, the mud started lagging almost instantly and was on a good way to a crash because of two immortal fools and two NPC jokers. At the very last moment I managed to update the room through the heavy lag, and the day was saved... but it was close.