Category Archives: Areas/Zones

New Editor Builds

For this build, version 0.59, the name has been changed from “Basternae Editor” to “ModernMUD Editor”. This is because I’m in the process of open-sourcing the codebase, and the editor will work not only for Basternae, but any MUD based on the same codebase.

Other than the name change, there are a few stability fixes, and probably some new bugs. Download links for Windows and OSX/Linux are on the right side of the blog. Enjoy!

Sniktiorg’s Zones

Sniktiorg, one of the most creative and prolific zone creators in the world of MUDs, has granted Basternae 3 permission to use his areas. Woohoo!

I’ll attach them as I get them converted to the new format and figure out where in the world they should go.

Another Editor Update

In the process or editing roads on the surface map to set each section of road to the right tile (east-west, corner pieces, t-intersections, etc.) I found that the editor needed some updates to accommodate the tile system.

I’ve released version 0.57 of the editor today, with map terrain editing (not useful for regular zone editors), faster room grid drawing, and better coloration for the room grid. The download link is on the right sidebar.

Road editing is about 1/3 done so far and won’t be uploaded to the server until it’s done.

Editor Version 0.56 Update

Working on a zone always results in editor improvements, so here’s what we get this release:

* Changed the error window shown for “Check Area” to a scrollable list so all errors can be seen.
* When items in the list of errors found by “Check Area” are double-clicked, the object, room, or mob will open in the edit window so you can change whatever the area check complained about.
* The map window is now refreshed when “apply” is clicked in the room editor so we see the room change color when the terrain type changes.
* The map window is now cleared if there was an area loaded when File –> New is used to create a new area.
* Added a “New” button to the exit edit dialog so new empty rooms with reciprocal exits can be created from the exit editor.  This will be easier than creating both rooms and manually creating an exit in each room pointing to the other.
* Added more content to the help file.

Grey Elf Hometown Layout Finished

I have the general layout of the Grey Elf hometown finished now. There’s a lot of work still to do — room descriptions, shops, mobs, objects, etc., but the layout is done and the repopulation points have been set.

Here’s what it looks like:

Editor Version 0.55 Update

I spent a little while working on the Grey Elf hometown today. That sort of thing always results in editor changes. Version 0.55 was released today with these two changes:

* Added the “Check Area” command to the tools menu. Right now it only checks for missing descriptions on rooms, objects, and mobs.
* Added instrument type selection for the edit values screen when editing instrument objects.

Zone Format XML Schema

I used the Microsoft XSD.exe tool to generate an XML schema file from the zone classes. That probably means nothing to most readers of this blog, but here’s the .XSD for the Basternae 3 zone format:

Basternae 3 Zone Format XSD

No reason really, just in case someone might be an XML tinkerer and wants to try running it through some of their tools, or if some masochist wants to browse it. I’m pretty sure there are some tools out there that will generate a data editor based on an XSD file format, but I’ve never had my hands on one. I have heard that Java and Eclipse have some pretty good XML tools.

More Zones Attached To The Map

These zones have been attached to the world map:

L’ristrizzen (Drow Elf HT)
Ixxillian (Enslaver HT)
Malch’hor Ganl (Goblin HT)
Autumnglen (Centaur HT)
Plateau of the Temple
Court of the Muse

Editor Version 0.54 Update

Using the editor has inspired a fresh new batch of improvements. Here they are:

Mob Editing

* New mobs now default to having memory.
* Fixed a navigation bug with creating new mobs.
* Fixed a problem that would prevent setting mob sex.
* Added a clone button for ease of creating similar mobs.

Room Editing

* Added the ability to delete room exits from the exit editing screen.
* Increased the size of the title and description text boxes on the room edit dialog.
* Added a clone button for ease of creating similar rooms. This does not clone exit data because things could get confusing very quickly if it did.

Object Editing

* Added a clone button for ease of creating similar objects.
* Added a language selector for objects of type note in the value editing screen.
* Added a flag editor for container flags on objects of type quiver or container in the value editing screen.

Map View

* Added ‘shift map’ buttons to move the location of the room graphi in the map view north, south, east, or west in case it doesn’t all fit on the screen. Since the map view starts at the first room found, puts it in the middle of the screen, and draws the rest of the rooms from there, it may be necessary to shift the map to see what you are looking for.
* Now resizes properly when you click the ‘maximize’ button on the main window.

Walkthrough Mode

* Added ‘look <mob>’ command that shows you the description and any items equipped or carryied by a mob in the current room.
* Added ‘look <object>’ command that shows you the description of an object in the current room.
* Text input and output controls now resize properly when you click the ‘maximize’ button on the main window.
* Text output control now resizes properly when you drag the window size larger or smaller.
* Added the equip command in walkthrough mode. It lets you load an object and equip it on a mob in the current room. This generates an “equip” reset so the object will be loaded and equipped at boot time.
* Added the give command in walkthrough mode that lets you load an object and give to to a mob in the current room. This adds a “give” reset so the mob will be given the object at boot time.

Other

* Added word wrap to the description preview in the extra description edit window.
* Removed the “not implemented yet” message from the renumber command. It worked, but would still display that message, wrongly giving the impression that it didn’t work.

You can get it here.

Zones Converted and Connected

Nauraki was actually the first one to give zone permissions when the Basternae 3 project started, but the converter wasn’t working well enough to convert them way back then. These zones by Nauraki have been converted:

The Plateau of the Temple
Court of the Muse
L’Ristrizzen (Drow Elf HT)
Phiadnae Flats

The Village of Shadowfall by Zaeru has also been converted.

I’ve started connecting zones to the surface and underground maps. Here’s what’s connected so far:

Village of Stoneward
Cavern of the Worms
Ice Tunnel Shaft
Thannik’Tzil (Thri-Kreen HT)
Kobold Village (Kobold HT)
The Minotaur Stronghold
Sarmiz’Duul
The Buffalo Tribe (Barbarian HT)
Kragthor (Ogre HT)
Phiadnae Flats (Minotaur HT)

That leaves a little over two dozen more that are approved and converted that need to be connected.

None of these zones have zone markers on the map. I’m not sure whether I want to place zone markers — it might be more fun to leave them off and force exploration. The number/strength of reasons for and against zone markers are about even, so that’s something to be decided later. My guess is that hometowns will be marked and other zones won’t.

None of the hometowns have player spawn points set yet, so everyone still starts in the Kobold village. Once all of the zones we have area attached I’ll worry about adding repops.

Connecting Rooms Made Easy

In Bast1 and Bast2, when a zone was added, one had to edit both zones, adding an exit to each room. When a zone was moved or connected in a different direction, the old exits had to be deleted and replaced with exits in the new direction.

This wasn’t too bad, but I always found it annoying having to edit *two* files. Worse yet, if you weren’t very familiar with a zone it could result in poking around a bit before you found what exit connected where.

This could also create “hanging” exit data when one zone was unload or disconnected from another without deleting both exits. Many of the Bast2 zones have exits pointing to the old map even though those room numbers don’t exist. This doesn’t break anything, but it’s ugly data.

Well, the “old way” of connecting zones still works on Basternae3, but I’ve also added a very simple way of connecting zones. It’s a ZoneConnections text file in the area directory that gets loaded. It has nothing more complex than:

First Zone’s Room Number, Exit Direction, Second Zone’s Room Number.

So, for example, one line reads
“200,south,1200”

This means that when the MUD boots and it loads that line of the file, it creates an exit leading from room 200 south to room 1200, and also creates an exit in the opposite direction, leading north from room 1200 to room 200.

If either of those two zones does not exist or is not loaded, the exit is not created.

This is a fun little solution that makes it way easier to connect zones to the world map, so you’ll see zones on the map pretty soon.

Editor Version 0.53 Update

This editor update is mainly about making it easier to edit load commands and object values.

Here are the changes:

Reset Editing

* Object, room, mob, equipment slot, door state, and direction selector buttons have been added to the reset editing screen to make it easier to choose values.

Object Editing

* Added select buttons for weapon damage kind and weapon type to the object value screen for weapon.
* Added totem type (sphere) selector to values screen for totems.
* Added target room selector to values screen for teleports.
* Added liquid type selector to values screen for drink containers.
* Added room and exit direction selectro to values screen for switches.

Walkthrough Mode
* The purge command has been implemented in walkthrough mode (clears objects and mobs from the room).
* The load command has been implemented in walkthrough mode (lets you load an object or mob into the room).

Other
* Added more info to the help file.

As always, save early and often if you’re working on a serious zone project, and let me know any glitches or suggestions for improvement.

You can download the new version of the editor here.

Client Version 0.17 – Attack of the Programmer Art

This update adds worldmap support.

Here are some examples:

Map Window Screenshot 1

Plains between the southeastern swamp and the blast crater.

Map Window Screenshot 2

On the road in the western forest.

Map Window Screenshot 3

Underground near the river crossing.

Map Window Screenshot 4

East of the mountains where the desert runs north into tundra and then glacier.

Map Window Screenshot 1 in Wintin

As a reference image, here’s the first map location in WinTin.Net

I guess the first three aren’t too bad aside from some tile banding and edge mismatches, but the fourth one looks like hell. I could do better if I spent more time on creating the tiles, but there’s probably a pretty solid limit to what I can do. If you’d like to try your hand at replacing some of the uglier tiles, you’re certainly welcome to.

If you download and install the client, there’s a “tiles” directory that contains the graphics for the map tiles, the equipment screen background, and the health/move meters. They’re loaded at startup, so if you replace any of the images with those of the same name and dimensions, they’ll be used instead.

This doesn’t do much good yet since no zones are attached to the map yet, but they will be soon.

You can download it here.

EDIT: I tried the client on Fedora 12 and it gave some library mismatch errors, so I created a static build. The new Linux build was created on Ubuntu 9 and ran fine for me on a clean install of Fedora 12. Let me know your results if you try it.

Zones From Dubar

We’ve kind of hit the jackpot here. Dubar, one of the most prolific zone writers in the history of MUDdom, gave permission to use his zones. Here’s what I’ve converted:

Air Plane Load Grid
The Buffalo Tribe (Barbarian HT)
The Granite Spire
Autumnglen (Centaur HT)
The Fields of Elysian
The Goblin Camp
Gagga’Jobo Caves
Malch’hor Ganl (Goblin HT)
The Market of In’Goboda
The Outer Goblin Outpost
The Stables of Malch’hor Ganl
The Tunnels of Goober
Ice Tunnel Shaft
The Mik’Mak Caverns
The Forest of Neeble
Kragthor (Ogre HT)
The Mountains of Tentro

That’s a mighty fine haul, and they all converted without any issues. Now we need to figure out where to connect them. Thanks Dubar. 🙂

Version 0.52 Editor Update

The one we’ve all been waiting for — the editor version with custom action editing.

Changes include:

* Added ‘edit custom actions’ button to objects and mobs that lets you add triggers and scripts.
* Updated help files to include screen shots and more info for some topics, and updated the zone guide section of the help.

You can download it here.

Custom Action Editing

I’ve got custom action editing working in the zone editor now.  Here’s an example:

Custom action editor screen

To create an action, you select items from the drop down list to build a sentence describing the trigger and the resulting action.

After you have an trigger added, you can add additional actions by selecting the item in the list and clicking “add subaction”.  You can see examples of this in the screenshot.

There are also “find” buttons that help you locate the various items you can use as arguments.  Even though you can just type values into the text boxes, this can be handy when you want to make sure you have the right item or have gotten the spelling right on the spell to cast.

This will be available for mobs and objects in the next release of the zone editor.

Custom Actions: Our Version of Scripting

Some MUDs, including Basternae 2 and those derived from the Envy family tree, support MobProgs.

Some MUDs, inlcluding Basternae 2 and those derived from the Diku/Envy family tree, used custom C code (“spec_fun” code) to add special abilities to mobs and objects.

MobProgs are useful, but they can be a pain to edit because they’re pretty “scripty” and most editors don’t have any data validation.

Special functions require the direct attention of a programmer for things that aren’t necessarily complex enough that they should require code.

What I’ve come up with for Basternae 3 is something I call “Custom Actions”. They can be applied to mobs, objects, races files, and class files. It’s sort of an action template definition that will be easy to edit using the Basternae Editor’s GUI (when I finish it). The general idea is that there are triggers with one or more actions that can be associated with them.

Editing will be done using a sort of “Mad Libs” style interface. You’ll build descriptions of triggers and actions using buttons and drop-downs. For instance:

“When the mobile is attacked”:

“Say” “Tough luck, buddy, I brought my posse with me.”
“Wait” “two seconds”
“Create mob” “8192”
“Create mob” “8193”
“Create mob” “8194”
“Wait” “one second”
“Say” “Now you’re gonna get it!”

“When in combat”:

“Cast spell” “fireball” “4% chance”

“When a player tries to leave the room in direction” “north”:

“Prevent action”
“Say” “You’re not invited to this party.”

“When room contains object” “23” (a corpse):

“Destroy object” “23”
“Echo” “The ravenous bugblatter beast devours another corpse.”
“Wait” “3 seconds”
“Interpret command” “burp”

Here’s a list of the triggers and actions I’ve come up with for the first version:

———-

Each trigger has a percent chance of executing.  Each trigger also has a data field that may or may not be used depending on the type.

Trigger Types

Action: When someone uses the command

Value contains the command name.

Combat: When in combat

Value is not used.

Death: When killled or destroyed

Value is not used.

Engage: When combat is initiated

Value is not used.

Entry: When entering a room

Value is not used.

Exit: When exiting a room

Value is not used.

ObjectInRoom: When room contains the object

Value is the index number of the object to react to.

PlayerEntry: When a player enters the room

Value is not used.

PlayerExit: When a player leaves the room

Value is optional and is the direction to pay attention to.  Blank means watch all directions.

Random: A random chance

Value is not used.

ReceiveItem: When receiving an item

Value is optional and is the index number of the object to react to.

ReceiveMoney: When receiving money

Value is optional and is the minimum amount of money needed.

Speech: When someone says

Value is the word or phrase to react to.

Action Types

Each action has a data field that may or may not be used depending on the type.

Attack: Attack the player who caused the trigger to fire.

Value is not used.

CastSpell: Cast the spell

Value is the name of the spell to cast.

CreateMobile: Creates a mobile

Value is the index number of the mobile to create.

CreateObject: Creates an object

Value is the index number of the object to create.

DestroyObject: Destroys the object

Value is the index number of the object to destroy.  First the room is checked, then the mobile’s inventory.

Delay: Wait for this many seconds

Value is the number of seconds to wait.

Echo: Echo text to the room

Value is the message to be printed to the room.

GiveObject: Give player an object

Value is the object index number to give to the player who caused the trigger to fire.

InterpretCommand: Interpret the command

Value is the command line to be interpreted, i.e. “kick troll” or “jump”.

Move: Move in direction

Value is the direction to move in.

PreventAction: Prevent the action (only works with action and player exit triggers).

Value is not used.

Say: Say something.

Value is the phrase to be said.

Teleport: Teleport to another room

Value is the room index number to teleport to.

TeleportPlayer: Teleport the player who activated the trigger to another room

Value is the room index number to teleport the player to.

TeleportAll: Teleport all players in the room to another room

Value is the room index number to teleport the player to.

UseSkill: Use the skill

Value is the skill specified, i.e. “hide” or “kick”.

ZoneEcho: Echo text to the zone

Value is the text to be shown to everyone in the zone.

Destroy: Destroy self

Value is not used.

———-

One of the good things about the way it’s been coded is that triggers and action types can be added very easily.  The actual in-game implementation of it has yet to be done, but that should be easy enough.

If you think of anything that you could imagine doing in a zone that these commands won’t allow you do do, let me know, either as a comment on this post, or email me if you want to chat in more detail.  My name is xangis and I use Yahoo for my email.

Version 0.51 Editor Update

Here’s another editor update:

Object Editing Changes

* Added spell editing to certain types of objects (wands, staves, potions, scrolls, etc.)  The spell can be selected from a drop down list, or typed in manually for custom spells that aren’t in the editor.  That means you can declare spells that don’t exist yet and when they’re added to the game they’ll work.

Object Spell Editor Screenshot

* Default object template is now carryable and usable by anyone.

* Added some text labels to the object edit dialog.

* Changed object item type to a drop down list — no typing nonexistant object types into the box anymore.

* Fixed a crash bug with certain item types (drink container and missile weapon).

* Changed affect edit box to only allow selecting items in the drop down list — no keying in affect types that don’t exist.

* Value edit window now reflects currently selected object type even if the object hasn’t been saved yet.

Area Settings Editing Changes

* Changed justice type to only allow selecting items in the drop down list — no keying in justice types that don’t exist.

Here’s a link to the download.