Sunday, July 16, 2006

Changes ftw

Forgot to update last night.

Ok, here's the deal. I've fixed a disgusting number of bugs, removed grammatical inconsistencies, added respawning to mobs, added respawning to players, updated command stacking, added command repetition, tweaked item interaction extensively so that it's more intuitive and English, added 'all' and numerical values to the interactions, added (filled) containers to the ItemScript, modularized npcsets and itemsets (previously unique to worlds), and various other cute changes.

Yay!

Tuesday, July 11, 2006

And He's Back

Was just on a one week vacation to the Outer Banks with a good friend of mine. Consequently, I'm now hooked on Lost, but that's neither here nor there. So, hopefully this explains the week-long silence, and I just wanted to announce that I'm back from the beach and ready to rock once more!

Next on my plate is respawn timers!

Friday, June 30, 2006

Tweaks and Such

Well, I didn't make much groundbreaking progress today, but I did make some interesting changes and clean up some code. First and foremost, the 'describe' function of Mobiles is now much more efficient, opting for string formatting instead of concatenation. In theory this is better, heh. Similary I removed all 'bold' formatting from the descriptions, because I found them silly. Furthermore, I added an endurance indicator to the list of things displayed in the primary description. It ranges from being borderline conscious to being perfectly well-rested. That's it for Mobiles.

In terms of Containers, I did a little tweaking such that an indicator of how 'full' it is is appended to the end of the description. This functions like desc/desc2 in Mobiles, only it's not a separate paragraph. This trend will continue for indicators such as 'size' for other Items.

Hurray, magical!

Corpses, etc

I'm tired, so this will be a rather summative update. Bags now work after much tweaking to internal mechanics, and basic corpse functionality has been added. Dead mobs/players will spawn a corpse that is filled with their equipment and inventory, and it will decay in 30 seconds unless otherwise specified. Trying to log out with a corpse in the inventory will result in it disintegrating.

The end.

Monday, June 26, 2006

Containers

At long last, I do think I've hammered out all the bugs. They were incredibly stupid bugs too - modifying item IDs after they were assigned, adding items to the inventory twice, the like. Whatever, containers should WORK. I added two new tickets and reopened another one though, because I'm apparently masochistic. Death needs to be implemented (correctly, with corpses and respawning), being able to put and get variable numbers of items should work, and templating needs to work with containers.

Fin.

Friday, June 23, 2006

Zomg, change!

That's right!
Today, I made several huge changes.
Well, more additions, I guess.

First and most importantly - bags and other containers now completely work! In theory!

  • Containers are correctly stored in the database, theoretically.
  • Containers are correctly pulled from the database, in theory.
  • Containers can now have items put in them and retrieved from them, supposedly.
  • Containers can now be looked inside of, hypothetically.
  • Bags can be opened and closed, if all's gone well.

The only problem is that all of these changes are completely untested, as I have yet to make functionality for scripting bags! Zing!

In addition, from a code standpoint, I added more niceness. The 'player' plugin was split into another 'items' plugin, for code that deals with, well, items. Eventually some commands from 'client' will move there as well. I also added 'put' to the help doc, and cleaned up a little code. In terms of functionality, I moved a lot of code from Door back to Openable, where it was belong, tidied some stuff up, and added a Bag class that extends both Openable and Container (in reverse order). Pity Ruby can't do that. Take that Barnett, multiple inheritance wins. In addition to all this, I added obj_type filters to Container and EquipmentModel, which Room has had for a long time.

Finally, I removed all hope from 'open' and 'close' every functioning on other players. No longer can you open or close other peoples' bags with these commands... yet. I intend to add a Subtlety skill called 'target' that will allow for such features.

Over and out.

Monday, June 19, 2006

A Lull

So, there's been a distinctive of updates over the weekend.

I could make excuses (and I will later), but here's what I accomplished since the last post -

Item inheritance has been tidied up. That's about it. Templates can now be defined, which pass their traits to items. Additionally, templated items can pass their traits down to subitems. Sadly, my progress stops there.

Now for my rationalization!

Friday through Saturday I was busy partitioning my drive and setting up Ubuntu linux. Sunday, I worked all day, just like every week.

So there we have it!

Now I just need to work on making my wireless work on linux.

I mean, making PyMUD work. =]

Saturday, June 17, 2006

Item Inheritance

As per Andrew's request, I started working on item inheritance today. That is, making item 'templates' that can pass their attributes onto subitems, to save time scripting.

It didn't work out as well as planned, so I reopened the ticket and tried again.

Attempt 2 is splendid, but still requires cleaning up. I'll finish it, commit it, and document it here tomorrow. :)

Thursday, June 15, 2006

0.8 Completed!

Huzzah! Three cheers!

Our first milestone has been reached and closed a whole 3 weeks early! The rate of progress is truly getting frightening.

So, let's take a look at today's accomplishments.

A new 'users' component was added, with the class UserManager. Now, UserManager is a truly magical entity. It depends on very little other than the existence of the World and Database services, and as such, will be completely reloadable when the time comes to implement... reloadability, heh. Right now it houses all database interactions for logging and logging out, as a web of callbacks. As a coorelary to adding this new component, I tweaked client.py and dialogues.py to use it, in the process abstracting out all database calls.

Now, here's where things get FUN.

Since I had little else to do today, I went ahead and implemented storing and retrieving items from the newer database tables. That is to say, when you log in, your inventory and equipment tables are scanned and loaded in as new items based on unique codes that are assigned when you log out. Theoretically, even nesting items into bags works, though this requires extensive testing.

As another neat aside, I implemented a new 'load' attribute to items on NPCs. The value is a float, which is the percent chance to load an item. Rarer items should always come first in the list, and will close the possibility of other, more common items loading instead.

Cool, eh?

Wednesday, June 14, 2006

Wonderful Accomplishments

Aha!

Today, James and I did something absolutely wonderful with the database!
Well, fine, it was mostly James.

But, the point is that we moved to twisted.enterprise for great asynchronous database power! No more of that convoluted pymud.database stuff.

However, the new component is still far too fluid for my liking, as we plan on adding many new features, so I'm hestitant to start storing things in my new SQL tables in the database. Instead, this evening I worked on making Items more useful.

I did! They work!
Now, Items (as well as Races, NPCs, and Modifiers) can directly tweak various things such as attack damage, dodge chance, hit chance, crit chance, hp, mp, ep, etc! This is good!
In addition to this, I added a new Dice class to lib that allows for random numbers applying to stats. Though primarily geared towards attack damage, I foresee many possible uses.

To make use of the new Item possibilities, I went ahead and added a means of connecting Items to NPCS. With the new equipment and inventory tags, you can directly append Items to them! My future plans include allowing random chances associated with a given Item showing up, for rarity purposes.

Over and out for tonight.

Tuesday, June 13, 2006

Initial Post!

Hm, so.

I really should have made this blog back in November, so that progress could be readily tracked, but eh. We'll just have to start with a well developed pre-release!

Today, I managed to finish AI (moved it around in the source) for Combat, as well as the ScriptManager and action scripts in general. What this means is that once my content team gets write access to src/pymud/scripts, we can start making spells and abilities! And having them work! FABULOUS!

In addition, tonight James worked at revamping the current (disgusting) database component to use twisted.enterprise.adbapi, or that is to say, an asynchronous 'real' component as opposed to the hack we have now. This will allow us to easily implement future database changes, such as the upcoming persistence of equipment and inventory into special database tables.

Good night, and I'll tell you all how much I rocked the database tomorrow!