There are two key factors in making looting fun—we shouldn’t trample these in our attempt to remove randomness:
The first is Variability. In the case of very low variability, loot becomes routine and uninteresting. The potential for rare or unique items is limited by either the number of rare or unique NPCs in the game world or the number of high-skill crafters. High variability can lead to overpowered or useless loot being the majority of what is dropped; this can spell havoc for power growth schemes and leads to looting becoming a very cheap, high pay-off slot machine.
The second is Appropriateness, which can be split into two factors: appropriateness for the player doing the looting and appropriateness for NPC being looted. Players get excited when they find loot that is appropriate for their character—here we encounter the first kind of appropriateness. Loot that offers an upgrade from the character’s current equipment (without breaking power growth balance) or that offers a different kind of ability to the character is viewed as appropriate. Loot should also be appropriate to the NPC carrying it—a bear should drop a bear pelt, not a sword.
So how do we remove the role of chance from loot and what does that do for us?
An easy and very intuitive way to handle NPC equipment and possessions: give each item a 1 in X chance of being on a given NPC or NPC type, then specify an offset value for each (this value can be anything as long as the offsets are different). Start a spawn counter for each NPC type and give the NPC each item when spawn_counter + offset is divisible by the X above. X can be modified depending on the kind of players that have been hunting the NPCs (if the NPCs are intelligent enough to make such a modification)—perhaps a camp of human bandits will start spawning with more fire-resistant gear if a player has been ravaging them with fireballs for the past half-hour.
At first, this approach seems sufficient, but we’ve made assumptions that aren’t necessarily true in an MMO. Looting isn’t an entirely blind process. The player might know loot rates and so kill off a lot of creatures that drop certain items, greatly unbalancing the totals of important items available for future players to loot off of mobs. Also, there may be some mechanic that allows the player to see what kind of loot the NPC is holding (for instance, if the NPC has a giant glowing sword, a player would be more likely to go after the NPC because of the higher reward). The counter-based solution is good for generating your starting NPC population’s loot, but the system has no awareness of what’s already in the world. If players only kill off the NPCs they know have certain items, the drop rate will stray because the existing population has drop rates that are effectively significantly lower. To counteract this, the system needs to keep track of the loot currently on NPCs in the world and spawn NPCs with or without the loot in order to keep the distribution on or near target. This certain doesn’t need to manifest itself in unique mobs respawning instantly after they’re killed, though; I mainly imagine this solution applied to make keep quests doable without excess grinding.
We can also use the way combat resolves to modify the loot enemies will drop. When different kinds of attacks land on the opponent, they can lead to different effects on the opponent’s equipment. A fireball would burn away cloth armor or melt metal armor, for instance, leaving nothing worth taking in the former case or only some metal scraps in the latter case. The more times the opponent is hit by standard weapons, the poorer condition his armor is going to be in. You can imagine a myriad of attack-item reactions that can lead to loot being lost or transformed. Suddenly, spells that debilitate the opponent without affecting their belongings will be a crucial tool in a mage’s arsenal and allow them to be more than just glass cannon DPS.
If we implement these two policies, we not only increase the role of player decision-making in what loot is dropped (and also encourage a diversity of effect types in order to preserve or destroy certain items), we also prevent the ever-annoying problem where the random number generator gives you a fifty percent chance of getting that quest item, but the coin keeps landing on tails instead of the needed heads. We certainly don’t have to compromise any variability or appropriateness in the process.