The Arena mode is very fun, but unfortunately my runs keep crashing and corrupting at round 10-20. I've tried every compatibility and crash-mitigation I can find but no success. Don't think I have the energy to keep restarting runs. Would have been nice to make it to the end-game. Oh well!
I'm sorry. On what settings are you playing? I suggest to lower your settings and try again. If the crashes still persists You can try to run the game on windowed mode with a lower resolution.
You can try to play with a lower difficulty for example hard instead of insane, this means that less npc will spawn at the beginning. You can change the difficulty later after you are over the 20 round.
There is also a standalone mod for Arena that includes arena only. https://www.nexusmods.com/darkmessiahofmightandmagic/mods/82
With absolutely everything on Low and the resolution set to a nostalgic 1024x768 I've been able to get to round 25ish but it's now crashing during fights before I can finish the round. Usually when a sword-hit connects or something ragdolls.
Yeah I remember it crashing all the time in 2006 when I played it for the first time, haha. I'll keep playing around with settings and saves. Thanks for the mod, and the help, really awesome work, I'm having a blast.
1) MITIGATING CRASHES The Arena tends to crash when loading a save that is at around the round-25 mark or beyond. It isn't guaranteed but usually does, meaning if you die or the game crashes, all saves are corrupted and you must start a new run. The warrior/archer builds seem to crash the least, and a mage build (especially with use of the soul reaver mana draining staff) seems to crash the most. Seems most crashes are tied to magic use, so buying a Menelag or wizard or Leanna to help you in battle may also raise crashing likelihood drastically.
2) SPRINT ATTACK STOPS WORKING Thanks to vanilla Dark Messiah bugginess, sometimes your power strike (sprinting + charged attack) can glitch and not execute when it should have (especially with sword and shield). If you get this bug, simply grab onto a ledge somewhere in the shop and have Sareth vault himself up onto it. This resets the player state somehow and makes the sprint + power-attack ability function again.
3) FAULTY RECYCLING Some items do not give their coins back when recycled, such as bows and certain shields. Always save before throwing something away or buying something. You never know if it'll be a reversible decision or not. Though, given issue 1 listed above, this should be done sooner rather than later. Try to settle on a build you want early on. Once you pass that invisible threshold where all saves begin auto-crashing-to-desktop when loaded, you're officially playing hardcore whether you like it or not.
4) UNNOTED INSANE DIFFICULTY DETAIL Insane is the only difficulty where you DO NOT receive an auto-heal and full mana replenishing at the end of each round, meaning you must spend coins to replenish yourself instead via the replenish upgrade directly behind you when you teleport home after a round. It is not a bug, it's just present to make you prove you're an epic gamer.
5) CYCLOPS ARE ADRENALINE FARMS When a cyclops has its eye stabbed, it can be attacked for the entire duration of its dying animation before it ragdolls. During this time, it provides TONS of adrenaline, so whenever you stab a cyclops, quickly do a jump-attack and hit him in his thighs before he ragdolls to gain what is usually a full adrenaline rush from a single hit (depending on weapon damage, of course).
6) OP NAGA SWORDS The naga sword you can buy for 7 coins actually has faster attack speeds across the board, which to my understanding is just vanilla Dark Messiah combat mechanics, meaning even a sprinting shield+power-attack is performed much more quickly, which can have significant differences in combat as npcs tend to go flying if they receive a large chunk of damage too quickly before ragdolling. The superior naga sword, while it does not share the same attack speed increase as its lower tier, has been given a ridiculous damage buff because wc3neverdies is a massive goober, so he made the superior naga sword do literally the same base damage as the dragonclaw sword, despite dragonclaw being 45 coins and superior naga being just 12. This means naga swords are your meta as a warrior build to quickly begin farming coins thanks to the huge bang for very little buck provided by naga swords.
7) ALTERED HEALING/SANCTUARY SPELLS The healing spell now requires 15 mana to perform, so if you have nothing invested in mage skills, you can only heal yourself one single time in a round. The sanctuary shield spell has been significantly nerfed. It now lasts just 5 seconds, and costs 60 mana to cast, meaning even at the max 130 mana, you can only cast it twice without accruing more mana mid-combat somehow. These changes apply for the entire game, so the single-player campaign also has these new spell balance changes as well.
8) PLAYER UPGRADES RESET ON RESTART Certain upgrades in the secret shop modify console variables in order to provide their functionality. However, if the game restarts due to a crash or a different play session and that savegame is loaded up, those console variables will be reset to their defaults and will need to either be manually set back to what their upgrades should be, or the next level for that upgrade will need to be purchased to set it correctly.
Mana regen upgrade uses "mm_player_time_to_add_mana" and reduces it by 0.1 each purchase. kick reduction upgrade uses "mm_player_stamina_needed_for_kick" and reduces it by 0.25 each purchase sprint stamina reduction upgrade is currently non-functional but is supposed to use "mm_player_stamina_megasprint_cost_per_second" and reduce it by 0.20 each purchase gravity reduction upgrade uses "sv_gravity" and reduces it by 20 each purchase and adrenaline drain reduction upgrade uses "mm_player_time_to_remove_adrenaline" and raises it by 10 each purchase
You can check and figure out how many purchases of a single upgrade you have already bought by looking at the upgrades roster just right of the arena entrance at main spawn, though, be aware, it doesn't exactly display everything correctly, such as adrenaline and gravity% upgrades. You'll have to know how much they each go up by for each purchase to know how many were purchased at a glance.
Despite the rough edges and unfinished nature of this mod it's still a huge blast, arena mode is awesome, just a shame it can't really go beyond 100 waves without starting to crash repeatedly (specifically with waves that have undead leannas mostly for some reason) because the base game was so rushed and buggy. Even with the community fixes, polishing a turd only goes so far, but at least the bulk of arena can be enjoyed before it becomes too unstable.
I found myself reinstalling dark messiah just because I wanted to play around with this arena mode again. I do think you should come back and hunker down and make it even better. It has huge potential, and what it already achieves rivals or in some cases bests what the vanilla game's best combat encounters have to offer. If you decide to return to this project and try to finish it and make it beautiful and fully fledged, here's a list of bugs and recommendations I think would be worth looking into as you think on what could be improved in the experience.
===
Issues: - Using drag-and-drop to drop an arena coin into a basket doesn't count the coin, and worse still, the coin is unobtainable once it falls into the basket. Players who are used to drag-and-drop to remove an item from their inventory might try this first, note that it does nothing, but be further confused by the fact the coin cannot then be retrieved, leading them to think perhaps it counted but has no indicator. If this is unfixable, perhaps some sort of failsafe where at the beginning of each new round, all loose coins not in the reward bin are teleported to the reward bin with the rest of the reward coins from that round so players can at least get their money back if coins fall anywhere unreachable.
- The enemy doors on the opposite side of the arena can squash the player to death. If the player is doing a finishing move on an enemy in just the wrong spot and that enemy is the final one in the round, they may not have enough time to get out of the way by the time the animation finishes, resulting in a potentially unfair death right after winning the round.
- Bone dragons usually do not aggro onto the player nor their purchased mercs after spawning in, and require being attacked first to trigger their a.i. behaviors. Paokai doesn't seem to suffer from this though, which is weird. Positional issue in the arena maybe?
- The player can fall into their own purchased pit and not die, soft-locking them. Pit should kill the player, or there should be a player clip brush over the pit so npcs can still fall in but a player can walk right over it.
- Enemy count can sometimes be incorrectly predicted by the map logic, allowing for enemies to still be alive when the round ends, or for the round to never end even though no more enemies remain. I suspect this is caused by cyclops somehow. Either with how they pause before dying from an eye stab, or the functionality of picking up living npcs to throw around, which may or may not kill said npc but could potentially throw them out of bounds where they are then deleted, or perhaps cyclops are friendly-fire squashing enemies in groups all at once so quickly that the map logic cannot keep up and has small chances to lose count? Not sure what could be causing it but I'm assuming you did the counter with OnEndTouch trigger brushes, and both times when I had a round end too early or never end with all enemies dead, it was a round with cyclops present who were the last enemies remaining.
===
Feature Tweak/Addition Recommendations: - Add a new buyable status tweak to the secret shop that lowers gravity in small increments in parallel to player speed mod. If too many player speed mods are purchased, the player's jump becomes so fast that they land back on the ground before they have time to ready a jump+power-strike attack animation. Being able to lower your gravity with coin purchases can counteract this, and can also enable players to dodge cyclops attacks easier and jump up to reach their eye even if they are standing perfectly upright. sv_gravity does require sv_cheats to be on, but seeing as dark messiah is buggy, and arena mode is singleplayer anyway, I doubt anyone would care. May as well just have the map turn on cheats with an OnMapSpawn output for a logic_auto talking to a point_servercommand entity. Anyone opening the console in this game is already interested in cheating.
- Cap max present enemies in the arena to a certain threshold, and if more enemies must be defeated before the round is over (for 100+ rounds), have those enemies spawn in halfway through the fight. This can help prevent situations like the cyclops + goblin horde round that can drag the player's framerate down considerably. 15 sounds like a decent number to still allow the "oh s#*!" moments when the player sees they are up against a small army.
- Add a counter or indicator that shows how many of a stackable purchase has already been purchased (such as the player speed mod in the secret shop)
- Heavily nerf price for xana demon form upgrade OR take it out of the secret shop entirely and place it out in the regular shop OR substantially buff the entire ability by modifying the xana armor and weapon items such that it isn't useless by the time it is acquired. The rope bow is already 50+ coins, so by the time the secret shop is unlocked, the player will have gear that is leaps and bounds better than xana form anyway.
- Add a trash can for players to dump items they no longer need or want in their inventory. Sometimes pulling out your shield will auto-equip a shortsword even if you have a dragonbone sword in your hotbar, so players wanting to dump old items to prevent such instances is likely to happen often.
- Various items need coin price rebalancing. For example: - The dragonbone bow is 65 coins despite the freeze bow one tier down from it only being 9 coins, as opposed to the dragonbone sword that is 75 with its predecessor purchase being 40 for the souldrinker which is a smoother and more balanced price incline. - The player should be forced to start with garbage shields and slowly upgrade until they never need to buy new shields again, therefor, the Earthfire shield should be exponentially more expensive from just 10 coins as it has infinite durability and only needs to be purchased once. Lightning shield should be even more exponentially expensive than its 25 coin price (perhaps about as expensive as dragonbone sword around 75?) as it's not only indestructible but can shock-stun enemies that hit it, enabling the player to send them flying with extreme push force on a counterattack due to how power-attacks behave when performed on electro-stunned targets (thus granting the potential ability to kill Aratrok with fall damage using only 1 block and 1 single power attack). - Rings should be moderately more expensive as they are a one-time purchase that buffs numerous other traits or items. - Sanctuary scrolls should be more expensive since they are literally an invincibility button you can place on your hotbar, allowing you to cheese the perfect no-damage bonus with relative ease. In general, the coin prices should be extremely cheap for all weapons early to mid-game in combat value (no more than 1-12 coins) and items that have late-game to end-game combat value should have their price increases suddenly skyrocket. This will encourage players to play around and experiment with different weapon types early on without feeling like they wasted any coins doing so, and then by the time they have some riches, they are willing to dedicate their funds to a specific tree of weapons they want to climb until they have the best one possible. For swords and sword-like weapons such as hammer, axe, and pickaxe, the price ranges would look something like 1, 1, 2, 2, 3, 4, 7, 10, 15, 25, 40, 75, so the price scaling shoots up the closer to the end of the vanilla game the weapon is meant for.
- Nerf Sanctuary duration to 7 and buff its mana requirement to 60 (so that it can only be used twice in a row for a mage with the mana ring, arcane robs, and all mana pool upgrades). It's the most broken spell in the game anyway. An invincibility button takes most of the fun and challenge out of the combat. Should sanctuary be cast, it should render the player with little to no mana remaining for any other magic, and should not last so long that it can guarantee you win a fight against multiple opponents before the shield goes away. I recommend also setting its adrenaline_add keyvalue in the spells.txt file to -20, so using the invincibility spell literally sucks dry all your adrenaline, meaning you may choose safety or power, but not both. This would give sanctuary much more strategy in how it's used, and also make sanctuary scrolls far more valuable as they circumvent mana cost.
- If allies are not healed at the end of a round, heal them just like the player and indicate to the player this happened. If allies ARE already healed at the end of a round with the current map version, provide some sort of indicator, perhaps a game_text entity that displays some green text on the screen that flashes saying "ALLIES HEALED UP" if allies are present in the arena at the end of a round so the player does not have to stand near them and use the heal spell out of paranoia that they might be about to die after a round.
- Add the magic mushroom as a purchasable item in the shop, but obviously have it be the most expensive of any available potions.
- Bosses like cyclops, paokai/bone dragon, spider queen, or Arantir should reward more than 1 coin when killed, as they are a milestone slay the same way reaching 10 rounds is a milestone of progress that gives 10 skillpoints instead of just 1. (This should be achievable with a filter_activator_class entity since these npcs are all a different class.)
- Arena shop needs a tutorial button that displays text on the player's screen explaining to them how to use their coins, and what the numbers above items mean so new players have no need to waste some of their first coins experimenting with the purchase baskets before realizing the top is price and the bottom is pending investment. When I first played, I thought the top left number was the price, the top right was a 'rounds beaten' requirement before the item could be purchased, and I had no clue what the bottom two 0's were but suspected they maybe involved skills I needed to invest in.
- Add other player modifier purchasables similar to player speed mod by utilizing available game console variables executed through a point_servercommand entity in hammer. For example: - "mm_player_stamina_megasprint_cost_per_second" is a cvar that, despite its name, actually just controls how fast stamina recharges. It is 2 by default, but setting it to 1 allows for roughly triple sprinting before exhaustion, and it can be adjusted with decimals not just integers, so you could allow players to slowly upgrade how much they can sprint before growing tired in increments just like how the speed mod purchase works. Setting it below 1, however, means the stamina recharges faster than sprinting can drain it, resulting in infinite stamina for kicks and sprinting (but not breathing underwater, as remaining breath is a different value that for some reason uses the same stamina meter art on the hud when you submerge). - "mm_player_stamina_needed_for_kick" is 3.0 by default, and lowering it allows the player to kick npcs (not objects or walls, which does not take stamina anyway) more times before becoming exhausted. Could maybe use this in conjunction with a tweak to a .qct file somewhere that makes kicks do more damage, and thus allow players the satisfaction to literally kick Aratrok to death standing over him so he cannot begin his get-up animation. - "player_time_to_remove_adrenaline" is 20.0 by default and represents how many seconds must go by before a bit of your adrenaline degrades away. Setting it to 9000 means it will take 9000 seconds for your adrenaline to degrade, meaning your adrenaline will basically never degrade and you can retain an adrenaline rush achieved at the end of one round and carry its benefits into the beginning of another. - "mm_player_add_adrenaline" is a command that, oddly enough, does NOT require sv_cheats set to 1, and does what it says; adds adrenaline. You could have a purchasable that maxes out player adrenaline and can be purchased an infinite amount of times if a player is rich and wants to start a round with a free adrenaline rush, perhaps to 1-shot a bone dragon/paokai, or an Arantir they are anticipating. It should be quite expensive though, so that earning adrenaline in combat is always the cheaper option. - "mm_player_time_to_add_mana" is 1 by default, but setting it to 0.7 seems to be double the natural mana recharge rate (as opposed to a mathematically assumed 0.5). You could use this to offer permanent upgrades in mana regeneration speed, which stack on with the existing skillpoint mana regen ability and 25% mana recharge boost from wizard/arcane robes the player can also acquire. Setting it to 0 does not provide infinite mana, though, but it does make mana regenerate by several points a second, so the upgrade could max out at 0 for players wanting to be a full mage build.
- Add alternate ways into the arena that enable players wanting to practice stealth to engage a round with ambush tactics. Perhaps a sewer tunnel that leads up behind where the enemies spawn, or lets out inside a watch tower to the side of the arena allowing for stealth bow usage from above? (would need a staircase to allow enemies to pathfind up to the player in the tower for response-attack, though)
===
Thanks again so much for making this cool mod. I used to really get a kick out of this game as a kid, and I got stars in my eyes when I saw this mod, and they stayed in my eyes the entire time I was playing around with all the new content you've provided here.
Thank you for playing the mod and for taking the time to write such a detailed post with feedback and lot of suggestions.
It has been a while, but I still check this page sometimes and comments like this increase my motivation to keep updating the mod.
I still want to finish this mod since I had many ideas I really liked that didn't made it the final release. It's just I have much less time now, but I will try.
There is a co op mod in the works that as I understood it will give modders more control over the game so let's see.
As for the feedback.
- Drag and Drop There is a description in the coin items that tells how to use it, the coins should be pickable with telekinesis if it is in the chest or falls on the ground, I also remember that while testing it worked as long as the player looks forward.
- Arena Doors OH this never happened during testing to me, I'll fix it for sure.
- Bone dragons aggro I didn't notice that, but I don't know how to fix it, all the npc are ordered to attack at the start of the round, so yes it's probably a spatial issue.
- Player Pit fall The pit should kill the player. At least it was my intention when I made it. But yes this also needs to be fixed.
- Enemy Count Yes, I looked into it but couldn't figure out how to fix it. The enemy logic is different. All enemies spawn in the closed room behind the doors, when the spawn they add 1 to a math counter, and then there is a OnDeath trigger in the Npc entity that subtract 1 to the same Math counter, when it reaches 0 the round is considered finished. I'll try to understand what is causing the issue.
Tweak Additions
- Gravity modifier this is cool, I'll add it. I already enabled cheats with point_servercommand entity in the arena and also in the single player adventure :D It allows doing more stuff.
-Max Enemies Cap yes it's true, I thought that since it's an old game I could push the limits a bit higher.
- Counter for speed yes I wanted to do it but it's one of the things I left unfinished.
-Xana yea this is true, i'll see what I can do to balance it.
-Trashcan Well if item will be destroyed it may be give back the coins to the player. Yes it's a nice addition.
--Balance-- The reason behind the increased price for dragon weapons is that those deal a lot of increased damage to undead, and in the game most enemies are undead so the value of the weapon is increased especially in later rounds when there are a lot of undeads.
- Shields That is true, earthfire and lightning shields should cose more.
-Sanctuary Yes this also sound good, but If i modify the spell it also modify it in single player or vanilla campaign. I can also tweak the cost in the arena.
-Heal Allies Nice suggestion, this might also be done. I dont remember if you can have more that one at a time of the same type but if you do it may allow to have too many allies.
-Magic mushroom yes. I forgot to add it.
- Bosses skillspoint Yes, but skills point are giver per round, not per kill, I'll probably have to change the rounds and add "Bosses" round on 10th round to give more points.
-Coins tutorial Yes, the coins system is tricky, but it was the only way to create such a game mode. I remember trying to create something with just math counters but it wasn't working well, I don't remember why. But yes, a tutorial is needed.
-Other modifiers Yes, all these suggestions are great.
- Stealth Well the stealth is a problem in the arena. At first I tought that was basically useless. I had this idea of adding wall in the arena, kinda like the pit or the spikes, so the arena would modify during one play run. Sewer tunnels sound great also.
Some things about the mod. The arena map is almost full, in hammer it exceeds all settings and parameters, The map itself is really small, all the structure around is a skymap in the skybox. The map has no lights to save on resources (this is another problem for stealth) There are a lot of triggers and logic entities, much more than any other map in the game. All the logic are made with entities, the round counter, enemy counter, the coin system to buy items is made by 3 or more entities each item.
It is possible to add more things but i'm afraid that it will make it even more unstable.
For the arena I had a lot of other ideas.
One was a custom arena map where the player decides the next wave to fight, it would have been unlocked after completing the 100 round of the normal arena. There was a room with all the possible npc to spawn, obviously the reward would change with the power of the wave, stronger enemies, bigger reward. I also had this idea to add malus modifiers, like less movement speed, less damage, or starth the round at half health, more maluses more coins at the end of the round.
I also had ideas for some challenges maps with different objectives and gameplay, platforms, combat, puzzles, the game allows for a lot of possibilities.
- Drag and drop Ah, that's why. Yeah, the names and descriptions were broken for me because I had Ultimate Edition installed and did not apply the fix you mentioned in a previous comment on this post, so I just played it anyway.
- Bone dragon aggro You might try putting the output that orders dragons to attack into the logic multiple times on a 0.5 second delay, so that if for some reason the bone dragon cannot receive A.I. orders after spawning in until X amount of time, it'll catch the following attack orders instead. Could be that bone dragons spawn in, then their A.I. has some sort of start-up process, and THEN they can accept a.i. orders, but perhaps your attack order happens too fast so it just needs a couple additional attack orders shortly after the bone dragon has spawned in to be sure at least one will go through? Could be some weird nonsense like that, wouldn't surprise me.
- Player pit fall It may have been that I fell into the pit with my sanctuary shield active, and when I dropped below the wooden cylinder brush, there was no death trigger down there and I was soft-locked. To make a death trigger that can punch through Sanctuary, you'd need to directly wrangle the player's health. Try a trigger_multiple that has OnStartTouch !activator sethealth 0 so that even with sanctuary active where no damage can be taken (such as from a trigger_hurt) the entity that touches that trigger will have its health forced to 0 anyway. That might be the fix you want if you already have a trigger_hurt down there that didn't account for sanctuary-protected players.
-Enemy count If you cannot find the problem easily (my guess is, sometimes npcs spawn in too quickly and are not given the OnDeath output to their entity that then fires upon death) then what you could do is just make a checking system that loops itself during rounds. I believe you can build this with 2 logic_timers and a trigger_multiple encompassing the fighting space from the ground up to the sky ceiling. From there, just have it check every 5 seconds if there's enemies inside this trigger, if it finds any, it resets itself and tries again in 5 seconds. If it finds none, it force-ends the round.
- Trashcan Oooh, a REFUND bin. That's an even better idea! That would let people re-spec their investments if they wanted to switch from swordsman to archer in the middle of the game. Yeah, do that if you can!
- Sanctuary I mean that sounds fine to me. Sanctuary is broken in the vanilla game too, so the rebalance is needed across the board, not just for arena mode if you ask me.
- Heal allies No, it only allows one of each type, which is good, otherwise players could buy 30 menelags and 20 leannas and then the game would crash when the round tried to spawn in any more npcs to fight.
- Bosses skillpoints I was talking about coin rewards, not skillpoint rewards, sorry. I only mentioned skillpoints as a comparison to better explain why I think bosses should give more coins for the same reason reaching 10 rounds gives more skillpoints, so bosses output more coins to spend on gear.
You say the map is already nearing hammer limits, which is very odd to me given how small and simple it looks geometrically. If you don't mean MAX_MAP_PLANES errors in the compile log that prevent it from compiling (which is caused by too many brushes, be them hint/skip, trigger, or regular textured world brushes) then I'm confused what limits you are talking about.
the entdata% limit in hammer can actually be surpassed as much as you want. I've made maps that have had 400%+ entdata in the compile log and they work fine. The only issue you need to worry about is edicts, which is a type of dynamic entity. prop_static is not an edit, but prop_dynamic is. I believe ambient_generic is an edict, but map logic-related entities like logic_auto or math_counter or logic_relay or info_target should not be edicts, meaning you can have as many of those as you want. The only concern with having tons and tons and tons of map logic entities is if they are all in constant looping use, which can end up bloating the game's ability to receive inputs from the player, but this isn't something that should concern you, because the logic entities for the coin shop are not in use until the player drops coins into a basket, and the logic entities used for spawning enemies are not in use until a round begins, etc etc. All your map logic systems are not operating constantly, they instead only operate their functions once and when no other complex map logic is simultaneously firing. So if you are worried about too many entities for the map to compile, don't be. Your only concern is the edict limit, which, if reached, hard-crashes the game with a specific error called "No free edicts" so you'll know for a fact too many edict entities was the cause of the crash instead of base game vanilla buggyness. light entities are not edicts either. While they do have a limit, the limit is literally like 8000 static light entities, and I assure you you'll never need that many lights in a map so small. light_dynamic, however, IS an edict entity, and lots of dynamic lights can drag performance down, so don't use moving lights if you can help it. Making a regular "light" entity be toggleable with its flags, however, can turn it into an edict entity because now it has dynamic properties to enable it to turn on and off with a button, or if you use any fancy light display effects that make it flicker or strobe or fade in and out, but again I doubt you'd need a lot of those anyway, so if you add lights it shouldn't cause you any problems in terms of engine limitations (unless Arcane Studios made weird downgrades to the source engine when developing Dark Messiah that I just don't know about).
Malus modifiers sound awesome, intentionally limiting yourself so you can earn coins faster. This would definitely be most valuable early on when players want to try to rush into better gear, so if you do add this, be sure to make it accessible immediately. Don't put it in the secret shop or anything, but maybe have certain malus bonuses only unlock after enough rounds have been unlocked? Just so they cannot be exploited to allow for 10 coins of rewards for fighting 2 necro guards on round 2 or anything.
The challenge areas sound interesting, but to be honest, I think platforming or environment puzzles would be a bit of a waste because they'd only ever be played once. The reason arena mode is so fun is because it has replayability with all the different weapons you can try and builds you can create to fight with. If you were going to do a new challenge mode, I recommend making it Town Defense. Make a few simple houses in a big open field, have the houses function as shops where the player can buy things such as gear, skillpoints, or even other town structures like archer towers, catapults that can be triggered, or walls that can hold enemies at bay (walls would have to simply break after an enemy was near them for long enough though, since enemies probably can't be commanded to attack a func_physbox or func_breakable brush entity directly). Then, the player fends off waves of enemies that spawn out in the field and come running over to attack the town. The goal is to keep the enemies out of the town for as many waves as possible. If enemies are inside the town, then the town takes damage to a central building for every second an enemy is present in the town. Buildings can be repaired with reward coins so the player can recover from a particularly bad attack they weren't prepared enough for. If the central town building is destroyed, the player is instantly killed and the town goes up in flames, allowing for the player to reload and try that wave again with a different approach. To start a wave, maybe the player rings a bell in town square, and a siege horn plays to signify the coming wave? At the end of each wave the player can upgrade/repair the town, or upgrade/heal themselves. No free healing, instead the player must visit an infirmary or something and pay to have their wounds healed? This would ensure health regen has more value as a purchased skillpoint mechanic (though you might want some fast-forward buttons that use the host_timescale command so the player doesn't have to sit around waiting for health/mana to regen before starting the next wave).
Something like that which has just as much replayability and diverse mechanics as arena mode would be the only thing I think you should work on as an entirely separate challenge mode. Building up a little town in a field and fighting off hordes of attacks sounds super fun, and you can get very creative with the waves. Wave 3 could be a slow moving horde of zombies, giving the player ample time to figure out if they want to buy a catapult on the fly that can explode the majority of the horde in a single go. Wave 10 could be a small scouting party of necro guards being lead by a death knight captain. Wave 15 could be a wild cyclops that would have physics boulders spawn in around the field for him to kick toward the town. Could even have a basic sewer tunnel where during later waves, some enemies come up through the sewer tunnel, and if the player isn't watching or hasn't purchased a lock for the sewer gate so it cannot be broken through immediately, then suddenly the wave can have a neat flanking mechanic where surprise enemies come up from underneath the town instead of out from the front field.
- Bone Dragon Aggro I'll try if i can, but I think that it might be related to the fact that the bone dragon is just a different npc type, like Arantir. Arantir can't die and has a lot of scripted behaviors used in the final battle of the vanilla game. But let's see.
- Pitfall Yes, the trigger setting health to zero is a better solution.
- Enemy Count Yes, maybe the eniemes are spawned too fast.
-Trashcan Yeah this is really good, I don't know how I didn't think of it before.
-Sanctuary Yep
- Heal Allies Yes, maybe allies can be healed for coins?
- Bosses Ahh I see, It make sense.
Malus modifiers I'll add them.
Balancing
To balance the mod is really difficult, but' I'll try my best.
- entData% Before creating this mod I had zero experience with the source engine, I don't know advanced stuff like this. But if you tell me it's not gonna be a problem then I'll try. There are already a lot of logic entities, really a lot.
These are all great ideas, but the amount of time required to make them is really too much for me. I can finish the mod by completing the adventure mode (one or two levels and it's done) and updating the arena but for more content I don't know.
You will need to set up hammer editor, I followed this guide in the steam page https://steamcommunity.com/sharedfiles/filedetails/?id=740822264
Be aware that it's made on the source engine created by valve so you'll need to learn how the engine works.
To make this mod I followed many tutorials on how to use source engine, I remember only TopHatWhaffle on youtube while writing this but there are many more.
If you want to make mods for DM you must be very calm and patient and forebearing.
Also the game was not meant for modding upon release, so the editor is not very stable, there a few bugs and crashes.
All of this must not scare you, It's still kinda easy, especially if you have experience with mods before.
I wish you the best luck! It would be nice to see some other mods that add more content to the game :)
Very neat, may I ask if this works with the "Unlimited Edition mod" if this is installed on top of it? Guessing it wont haha but just figured I'd ask, many thanks, cheers and great work!
108 comments
On what settings are you playing?
I suggest to lower your settings and try again.
If the crashes still persists You can try to run the game on windowed mode with a lower resolution.
You can try to play with a lower difficulty for example hard instead of insane, this means that less npc will spawn at the beginning.
You can change the difficulty later after you are over the 20 round.
There is also a standalone mod for Arena that includes arena only.
https://www.nexusmods.com/darkmessiahofmightandmagic/mods/82
Let me know if any of these tips helped.
It's strange that you can't reload. There is an autosave at the end of every round. You can try to do a manual save instead.
1) MITIGATING CRASHES
The Arena tends to crash when loading a save that is at around the round-25 mark or beyond. It isn't guaranteed but usually does, meaning if you die or the game crashes, all saves are corrupted and you must start a new run. The warrior/archer builds seem to crash the least, and a mage build (especially with use of the soul reaver mana draining staff) seems to crash the most. Seems most crashes are tied to magic use, so buying a Menelag or wizard or Leanna to help you in battle may also raise crashing likelihood drastically.
2) SPRINT ATTACK STOPS WORKING
Thanks to vanilla Dark Messiah bugginess, sometimes your power strike (sprinting + charged attack) can glitch and not execute when it should have (especially with sword and shield). If you get this bug, simply grab onto a ledge somewhere in the shop and have Sareth vault himself up onto it. This resets the player state somehow and makes the sprint + power-attack ability function again.
3) FAULTY RECYCLING
Some items do not give their coins back when recycled, such as bows and certain shields. Always save before throwing something away or buying something. You never know if it'll be a reversible decision or not. Though, given issue 1 listed above, this should be done sooner rather than later. Try to settle on a build you want early on. Once you pass that invisible threshold where all saves begin auto-crashing-to-desktop when loaded, you're officially playing hardcore whether you like it or not.
4) UNNOTED INSANE DIFFICULTY DETAIL
Insane is the only difficulty where you DO NOT receive an auto-heal and full mana replenishing at the end of each round, meaning you must spend coins to replenish yourself instead via the replenish upgrade directly behind you when you teleport home after a round. It is not a bug, it's just present to make you prove you're an epic gamer.
5) CYCLOPS ARE ADRENALINE FARMS
When a cyclops has its eye stabbed, it can be attacked for the entire duration of its dying animation before it ragdolls. During this time, it provides TONS of adrenaline, so whenever you stab a cyclops, quickly do a jump-attack and hit him in his thighs before he ragdolls to gain what is usually a full adrenaline rush from a single hit (depending on weapon damage, of course).
6) OP NAGA SWORDS
The naga sword you can buy for 7 coins actually has faster attack speeds across the board, which to my understanding is just vanilla Dark Messiah combat mechanics, meaning even a sprinting shield+power-attack is performed much more quickly, which can have significant differences in combat as npcs tend to go flying if they receive a large chunk of damage too quickly before ragdolling.
The superior naga sword, while it does not share the same attack speed increase as its lower tier, has been given a ridiculous damage buff because wc3neverdies is a massive goober, so he made the superior naga sword do literally the same base damage as the dragonclaw sword, despite dragonclaw being 45 coins and superior naga being just 12. This means naga swords are your meta as a warrior build to quickly begin farming coins thanks to the huge bang for very little buck provided by naga swords.
7) ALTERED HEALING/SANCTUARY SPELLS
The healing spell now requires 15 mana to perform, so if you have nothing invested in mage skills, you can only heal yourself one single time in a round.
The sanctuary shield spell has been significantly nerfed. It now lasts just 5 seconds, and costs 60 mana to cast, meaning even at the max 130 mana, you can only cast it twice without accruing more mana mid-combat somehow.
These changes apply for the entire game, so the single-player campaign also has these new spell balance changes as well.
8) PLAYER UPGRADES RESET ON RESTART
Certain upgrades in the secret shop modify console variables in order to provide their functionality. However, if the game restarts due to a crash or a different play session and that savegame is loaded up, those console variables will be reset to their defaults and will need to either be manually set back to what their upgrades should be, or the next level for that upgrade will need to be purchased to set it correctly.
Mana regen upgrade uses "mm_player_time_to_add_mana" and reduces it by 0.1 each purchase.
kick reduction upgrade uses "mm_player_stamina_needed_for_kick" and reduces it by 0.25 each purchase
sprint stamina reduction upgrade is currently non-functional but is supposed to use "mm_player_stamina_megasprint_cost_per_second" and reduce it by 0.20 each purchase
gravity reduction upgrade uses "sv_gravity" and reduces it by 20 each purchase
and adrenaline drain reduction upgrade uses "mm_player_time_to_remove_adrenaline" and raises it by 10 each purchase
You can check and figure out how many purchases of a single upgrade you have already bought by looking at the upgrades roster just right of the arena entrance at main spawn, though, be aware, it doesn't exactly display everything correctly, such as adrenaline and gravity% upgrades. You'll have to know how much they each go up by for each purchase to know how many were purchased at a glance.
Also I'll be sharing the .vmf inside the mod so people can open the map and make all the changes they want.
Edit
Fixed the recycle issues.
Also added the vmf
(Dark Messiah unlimited edition: https://steamcommunity.com/sharedfiles/filedetails/?id=739039320 )
I found myself reinstalling dark messiah just because I wanted to play around with this arena mode again. I do think you should come back and hunker down and make it even better. It has huge potential, and what it already achieves rivals or in some cases bests what the vanilla game's best combat encounters have to offer. If you decide to return to this project and try to finish it and make it beautiful and fully fledged, here's a list of bugs and recommendations I think would be worth looking into as you think on what could be improved in the experience.
===
Issues:
- Using drag-and-drop to drop an arena coin into a basket doesn't count the coin, and worse still, the coin is unobtainable once it falls into the basket. Players who are used to drag-and-drop to remove an item from their inventory might try this first, note that it does nothing, but be further confused by the fact the coin cannot then be retrieved, leading them to think perhaps it counted but has no indicator. If this is unfixable, perhaps some sort of failsafe where at the beginning of each new round, all loose coins not in the reward bin are teleported to the reward bin with the rest of the reward coins from that round so players can at least get their money back if coins fall anywhere unreachable.
- The enemy doors on the opposite side of the arena can squash the player to death. If the player is doing a finishing move on an enemy in just the wrong spot and that enemy is the final one in the round, they may not have enough time to get out of the way by the time the animation finishes, resulting in a potentially unfair death right after winning the round.
- Bone dragons usually do not aggro onto the player nor their purchased mercs after spawning in, and require being attacked first to trigger their a.i. behaviors. Paokai doesn't seem to suffer from this though, which is weird. Positional issue in the arena maybe?
- The player can fall into their own purchased pit and not die, soft-locking them. Pit should kill the player, or there should be a player clip brush over the pit so npcs can still fall in but a player can walk right over it.
- Enemy count can sometimes be incorrectly predicted by the map logic, allowing for enemies to still be alive when the round ends, or for the round to never end even though no more enemies remain. I suspect this is caused by cyclops somehow. Either with how they pause before dying from an eye stab, or the functionality of picking up living npcs to throw around, which may or may not kill said npc but could potentially throw them out of bounds where they are then deleted, or perhaps cyclops are friendly-fire squashing enemies in groups all at once so quickly that the map logic cannot keep up and has small chances to lose count? Not sure what could be causing it but I'm assuming you did the counter with OnEndTouch trigger brushes, and both times when I had a round end too early or never end with all enemies dead, it was a round with cyclops present who were the last enemies remaining.
===
Feature Tweak/Addition Recommendations:
- Add a new buyable status tweak to the secret shop that lowers gravity in small increments in parallel to player speed mod. If too many player speed mods are purchased, the player's jump becomes so fast that they land back on the ground before they have time to ready a jump+power-strike attack animation. Being able to lower your gravity with coin purchases can counteract this, and can also enable players to dodge cyclops attacks easier and jump up to reach their eye even if they are standing perfectly upright. sv_gravity does require sv_cheats to be on, but seeing as dark messiah is buggy, and arena mode is singleplayer anyway, I doubt anyone would care. May as well just have the map turn on cheats with an OnMapSpawn output for a logic_auto talking to a point_servercommand entity. Anyone opening the console in this game is already interested in cheating.
- Cap max present enemies in the arena to a certain threshold, and if more enemies must be defeated before the round is over (for 100+ rounds), have those enemies spawn in halfway through the fight. This can help prevent situations like the cyclops + goblin horde round that can drag the player's framerate down considerably. 15 sounds like a decent number to still allow the "oh s#*!" moments when the player sees they are up against a small army.
- Add a counter or indicator that shows how many of a stackable purchase has already been purchased (such as the player speed mod in the secret shop)
- Heavily nerf price for xana demon form upgrade OR take it out of the secret shop entirely and place it out in the regular shop OR substantially buff the entire ability by modifying the xana armor and weapon items such that it isn't useless by the time it is acquired. The rope bow is already 50+ coins, so by the time the secret shop is unlocked, the player will have gear that is leaps and bounds better than xana form anyway.
- Add a trash can for players to dump items they no longer need or want in their inventory. Sometimes pulling out your shield will auto-equip a shortsword even if you have a dragonbone sword in your hotbar, so players wanting to dump old items to prevent such instances is likely to happen often.
- Various items need coin price rebalancing. For example:
- The dragonbone bow is 65 coins despite the freeze bow one tier down from it only being 9 coins, as opposed to the dragonbone sword that is 75 with its predecessor purchase being 40 for the souldrinker which is a smoother and more balanced price incline.
- The player should be forced to start with garbage shields and slowly upgrade until they never need to buy new shields again, therefor, the Earthfire shield should be exponentially more expensive from just 10 coins as it has infinite durability and only needs to be purchased once. Lightning shield should be even more exponentially expensive than its 25 coin price (perhaps about as expensive as dragonbone sword around 75?) as it's not only indestructible but can shock-stun enemies that hit it, enabling the player to send them flying with extreme push force on a counterattack due to how power-attacks behave when performed on electro-stunned targets (thus granting the potential ability to kill Aratrok with fall damage using only 1 block and 1 single power attack).
- Rings should be moderately more expensive as they are a one-time purchase that buffs numerous other traits or items.
- Sanctuary scrolls should be more expensive since they are literally an invincibility button you can place on your hotbar, allowing you to cheese the perfect no-damage bonus with relative ease.
In general, the coin prices should be extremely cheap for all weapons early to mid-game in combat value (no more than 1-12 coins) and items that have late-game to end-game combat value should have their price increases suddenly skyrocket. This will encourage players to play around and experiment with different weapon types early on without feeling like they wasted any coins doing so, and then by the time they have some riches, they are willing to dedicate their funds to a specific tree of weapons they want to climb until they have the best one possible. For swords and sword-like weapons such as hammer, axe, and pickaxe, the price ranges would look something like 1, 1, 2, 2, 3, 4, 7, 10, 15, 25, 40, 75, so the price scaling shoots up the closer to the end of the vanilla game the weapon is meant for.
- Nerf Sanctuary duration to 7 and buff its mana requirement to 60 (so that it can only be used twice in a row for a mage with the mana ring, arcane robs, and all mana pool upgrades). It's the most broken spell in the game anyway. An invincibility button takes most of the fun and challenge out of the combat. Should sanctuary be cast, it should render the player with little to no mana remaining for any other magic, and should not last so long that it can guarantee you win a fight against multiple opponents before the shield goes away. I recommend also setting its adrenaline_add keyvalue in the spells.txt file to -20, so using the invincibility spell literally sucks dry all your adrenaline, meaning you may choose safety or power, but not both. This would give sanctuary much more strategy in how it's used, and also make sanctuary scrolls far more valuable as they circumvent mana cost.
- If allies are not healed at the end of a round, heal them just like the player and indicate to the player this happened. If allies ARE already healed at the end of a round with the current map version, provide some sort of indicator, perhaps a game_text entity that displays some green text on the screen that flashes saying "ALLIES HEALED UP" if allies are present in the arena at the end of a round so the player does not have to stand near them and use the heal spell out of paranoia that they might be about to die after a round.
- Add the magic mushroom as a purchasable item in the shop, but obviously have it be the most expensive of any available potions.
- Bosses like cyclops, paokai/bone dragon, spider queen, or Arantir should reward more than 1 coin when killed, as they are a milestone slay the same way reaching 10 rounds is a milestone of progress that gives 10 skillpoints instead of just 1. (This should be achievable with a filter_activator_class entity since these npcs are all a different class.)
- Arena shop needs a tutorial button that displays text on the player's screen explaining to them how to use their coins, and what the numbers above items mean so new players have no need to waste some of their first coins experimenting with the purchase baskets before realizing the top is price and the bottom is pending investment. When I first played, I thought the top left number was the price, the top right was a 'rounds beaten' requirement before the item could be purchased, and I had no clue what the bottom two 0's were but suspected they maybe involved skills I needed to invest in.
- Add other player modifier purchasables similar to player speed mod by utilizing available game console variables executed through a point_servercommand entity in hammer. For example:
- "mm_player_stamina_megasprint_cost_per_second" is a cvar that, despite its name, actually just controls how fast stamina recharges. It is 2 by default, but setting it to 1 allows for roughly triple sprinting before exhaustion, and it can be adjusted with decimals not just integers, so you could allow players to slowly upgrade how much they can sprint before growing tired in increments just like how the speed mod purchase works. Setting it below 1, however, means the stamina recharges faster than sprinting can drain it, resulting in infinite stamina for kicks and sprinting (but not breathing underwater, as remaining breath is a different value that for some reason uses the same stamina meter art on the hud when you submerge).
- "mm_player_stamina_needed_for_kick" is 3.0 by default, and lowering it allows the player to kick npcs (not objects or walls, which does not take stamina anyway) more times before becoming exhausted. Could maybe use this in conjunction with a tweak to a .qct file somewhere that makes kicks do more damage, and thus allow players the satisfaction to literally kick Aratrok to death standing over him so he cannot begin his get-up animation.
- "player_time_to_remove_adrenaline" is 20.0 by default and represents how many seconds must go by before a bit of your adrenaline degrades away. Setting it to 9000 means it will take 9000 seconds for your adrenaline to degrade, meaning your adrenaline will basically never degrade and you can retain an adrenaline rush achieved at the end of one round and carry its benefits into the beginning of another.
- "mm_player_add_adrenaline" is a command that, oddly enough, does NOT require sv_cheats set to 1, and does what it says; adds adrenaline. You could have a purchasable that maxes out player adrenaline and can be purchased an infinite amount of times if a player is rich and wants to start a round with a free adrenaline rush, perhaps to 1-shot a bone dragon/paokai, or an Arantir they are anticipating. It should be quite expensive though, so that earning adrenaline in combat is always the cheaper option.
- "mm_player_time_to_add_mana" is 1 by default, but setting it to 0.7 seems to be double the natural mana recharge rate (as opposed to a mathematically assumed 0.5). You could use this to offer permanent upgrades in mana regeneration speed, which stack on with the existing skillpoint mana regen ability and 25% mana recharge boost from wizard/arcane robes the player can also acquire. Setting it to 0 does not provide infinite mana, though, but it does make mana regenerate by several points a second, so the upgrade could max out at 0 for players wanting to be a full mage build.
- Add alternate ways into the arena that enable players wanting to practice stealth to engage a round with ambush tactics. Perhaps a sewer tunnel that leads up behind where the enemies spawn, or lets out inside a watch tower to the side of the arena allowing for stealth bow usage from above? (would need a staircase to allow enemies to pathfind up to the player in the tower for response-attack, though)
===
Thanks again so much for making this cool mod. I used to really get a kick out of this game as a kid, and I got stars in my eyes when I saw this mod, and they stayed in my eyes the entire time I was playing around with all the new content you've provided here.
Thank you for playing the mod and for taking the time to write such a detailed post with feedback and lot of suggestions.
It has been a while, but I still check this page sometimes and comments like this increase my motivation to keep updating the mod.
I still want to finish this mod since I had many ideas I really liked that didn't made it the final release. It's just I have much less time now, but I will try.
There is a co op mod in the works that as I understood it will give modders more control over the game so let's see.
As for the feedback.
- Drag and Drop
There is a description in the coin items that tells how to use it, the coins should be pickable with telekinesis if it is in the chest or falls on the ground, I also remember that while testing it worked as long as the player looks forward.
- Arena Doors
OH this never happened during testing to me, I'll fix it for sure.
- Bone dragons aggro
I didn't notice that, but I don't know how to fix it, all the npc are ordered to attack at the start of the round, so yes it's probably a spatial issue.
- Player Pit fall
The pit should kill the player. At least it was my intention when I made it. But yes this also needs to be fixed.
- Enemy Count
Yes, I looked into it but couldn't figure out how to fix it.
The enemy logic is different. All enemies spawn in the closed room behind the doors, when the spawn they add 1 to a math counter, and then there is a OnDeath trigger in the Npc entity that subtract 1 to the same Math counter, when it reaches 0 the round is considered finished.
I'll try to understand what is causing the issue.
Tweak Additions
- Gravity modifier
this is cool, I'll add it.
I already enabled cheats with point_servercommand entity in the arena and also in the single player adventure :D
It allows doing more stuff.
-Max Enemies Cap
yes it's true, I thought that since it's an old game I could push the limits a bit higher.
- Counter for speed
yes I wanted to do it but it's one of the things I left unfinished.
-Xana
yea this is true, i'll see what I can do to balance it.
-Trashcan
Well if item will be destroyed it may be give back the coins to the player. Yes it's a nice addition.
--Balance--
The reason behind the increased price for dragon weapons is that those deal a lot of increased damage to undead, and in the game most enemies are undead so the value of the weapon is increased especially in later rounds when there are a lot of undeads.
- Shields
That is true, earthfire and lightning shields should cose more.
-Sanctuary
Yes this also sound good, but If i modify the spell it also modify it in single player or vanilla campaign. I can also tweak the cost in the arena.
-Heal Allies
Nice suggestion, this might also be done. I dont remember if you can have more that one at a time of the same type but if you do it may allow to have too many allies.
-Magic mushroom
yes. I forgot to add it.
- Bosses skillspoint
Yes, but skills point are giver per round, not per kill, I'll probably have to change the rounds and add "Bosses" round on 10th round to give more points.
-Coins tutorial
Yes, the coins system is tricky, but it was the only way to create such a game mode. I remember trying to create something with just math counters but it wasn't working well, I don't remember why.
But yes, a tutorial is needed.
-Other modifiers
Yes, all these suggestions are great.
- Stealth
Well the stealth is a problem in the arena. At first I tought that was basically useless. I had this idea of adding wall in the arena, kinda like the pit or the spikes, so the arena would modify during one play run.
Sewer tunnels sound great also.
Some things about the mod.
The arena map is almost full, in hammer it exceeds all settings and parameters, The map itself is really small, all the structure around is a skymap in the skybox. The map has no lights to save on resources
(this is another problem for stealth)
There are a lot of triggers and logic entities, much more than any other map in the game. All the logic are made with entities, the round counter, enemy counter, the coin system to buy items is made by 3 or more entities each item.
It is possible to add more things but i'm afraid that it will make it even more unstable.
For the arena I had a lot of other ideas.
One was a custom arena map where the player decides the next wave to fight, it would have been unlocked after completing the 100 round of the normal arena. There was a room with all the possible npc to spawn, obviously the reward would change with the power of the wave, stronger enemies, bigger reward.
I also had this idea to add malus modifiers, like less movement speed, less damage, or starth the round at half health, more maluses more coins at the end of the round.
I also had ideas for some challenges maps with different objectives and gameplay, platforms, combat, puzzles, the game allows for a lot of possibilities.
Thank you again
Ah, that's why. Yeah, the names and descriptions were broken for me because I had Ultimate Edition installed and did not apply the fix you mentioned in a previous comment on this post, so I just played it anyway.
- Bone dragon aggro
You might try putting the output that orders dragons to attack into the logic multiple times on a 0.5 second delay, so that if for some reason the bone dragon cannot receive A.I. orders after spawning in until X amount of time, it'll catch the following attack orders instead. Could be that bone dragons spawn in, then their A.I. has some sort of start-up process, and THEN they can accept a.i. orders, but perhaps your attack order happens too fast so it just needs a couple additional attack orders shortly after the bone dragon has spawned in to be sure at least one will go through? Could be some weird nonsense like that, wouldn't surprise me.
- Player pit fall
It may have been that I fell into the pit with my sanctuary shield active, and when I dropped below the wooden cylinder brush, there was no death trigger down there and I was soft-locked. To make a death trigger that can punch through Sanctuary, you'd need to directly wrangle the player's health. Try a trigger_multiple that has OnStartTouch !activator sethealth 0 so that even with sanctuary active where no damage can be taken (such as from a trigger_hurt) the entity that touches that trigger will have its health forced to 0 anyway. That might be the fix you want if you already have a trigger_hurt down there that didn't account for sanctuary-protected players.
-Enemy count
If you cannot find the problem easily (my guess is, sometimes npcs spawn in too quickly and are not given the OnDeath output to their entity that then fires upon death) then what you could do is just make a checking system that loops itself during rounds. I believe you can build this with 2 logic_timers and a trigger_multiple encompassing the fighting space from the ground up to the sky ceiling. From there, just have it check every 5 seconds if there's enemies inside this trigger, if it finds any, it resets itself and tries again in 5 seconds. If it finds none, it force-ends the round.
- Trashcan
Oooh, a REFUND bin. That's an even better idea! That would let people re-spec their investments if they wanted to switch from swordsman to archer in the middle of the game. Yeah, do that if you can!
- Sanctuary
I mean that sounds fine to me. Sanctuary is broken in the vanilla game too, so the rebalance is needed across the board, not just for arena mode if you ask me.
- Heal allies
No, it only allows one of each type, which is good, otherwise players could buy 30 menelags and 20 leannas and then the game would crash when the round tried to spawn in any more npcs to fight.
- Bosses skillpoints
I was talking about coin rewards, not skillpoint rewards, sorry. I only mentioned skillpoints as a comparison to better explain why I think bosses should give more coins for the same reason reaching 10 rounds gives more skillpoints, so bosses output more coins to spend on gear.
You say the map is already nearing hammer limits, which is very odd to me given how small and simple it looks geometrically. If you don't mean MAX_MAP_PLANES errors in the compile log that prevent it from compiling (which is caused by too many brushes, be them hint/skip, trigger, or regular textured world brushes) then I'm confused what limits you are talking about.
the entdata% limit in hammer can actually be surpassed as much as you want. I've made maps that have had 400%+ entdata in the compile log and they work fine. The only issue you need to worry about is edicts, which is a type of dynamic entity. prop_static is not an edit, but prop_dynamic is. I believe ambient_generic is an edict, but map logic-related entities like logic_auto or math_counter or logic_relay or info_target should not be edicts, meaning you can have as many of those as you want.
The only concern with having tons and tons and tons of map logic entities is if they are all in constant looping use, which can end up bloating the game's ability to receive inputs from the player, but this isn't something that should concern you, because the logic entities for the coin shop are not in use until the player drops coins into a basket, and the logic entities used for spawning enemies are not in use until a round begins, etc etc. All your map logic systems are not operating constantly, they instead only operate their functions once and when no other complex map logic is simultaneously firing. So if you are worried about too many entities for the map to compile, don't be. Your only concern is the edict limit, which, if reached, hard-crashes the game with a specific error called "No free edicts" so you'll know for a fact too many edict entities was the cause of the crash instead of base game vanilla buggyness.
light entities are not edicts either. While they do have a limit, the limit is literally like 8000 static light entities, and I assure you you'll never need that many lights in a map so small. light_dynamic, however, IS an edict entity, and lots of dynamic lights can drag performance down, so don't use moving lights if you can help it.
Making a regular "light" entity be toggleable with its flags, however, can turn it into an edict entity because now it has dynamic properties to enable it to turn on and off with a button, or if you use any fancy light display effects that make it flicker or strobe or fade in and out, but again I doubt you'd need a lot of those anyway, so if you add lights it shouldn't cause you any problems in terms of engine limitations (unless Arcane Studios made weird downgrades to the source engine when developing Dark Messiah that I just don't know about).
Malus modifiers sound awesome, intentionally limiting yourself so you can earn coins faster. This would definitely be most valuable early on when players want to try to rush into better gear, so if you do add this, be sure to make it accessible immediately. Don't put it in the secret shop or anything, but maybe have certain malus bonuses only unlock after enough rounds have been unlocked? Just so they cannot be exploited to allow for 10 coins of rewards for fighting 2 necro guards on round 2 or anything.
The challenge areas sound interesting, but to be honest, I think platforming or environment puzzles would be a bit of a waste because they'd only ever be played once. The reason arena mode is so fun is because it has replayability with all the different weapons you can try and builds you can create to fight with.
If you were going to do a new challenge mode, I recommend making it Town Defense. Make a few simple houses in a big open field, have the houses function as shops where the player can buy things such as gear, skillpoints, or even other town structures like archer towers, catapults that can be triggered, or walls that can hold enemies at bay (walls would have to simply break after an enemy was near them for long enough though, since enemies probably can't be commanded to attack a func_physbox or func_breakable brush entity directly).
Then, the player fends off waves of enemies that spawn out in the field and come running over to attack the town. The goal is to keep the enemies out of the town for as many waves as possible. If enemies are inside the town, then the town takes damage to a central building for every second an enemy is present in the town. Buildings can be repaired with reward coins so the player can recover from a particularly bad attack they weren't prepared enough for. If the central town building is destroyed, the player is instantly killed and the town goes up in flames, allowing for the player to reload and try that wave again with a different approach.
To start a wave, maybe the player rings a bell in town square, and a siege horn plays to signify the coming wave? At the end of each wave the player can upgrade/repair the town, or upgrade/heal themselves. No free healing, instead the player must visit an infirmary or something and pay to have their wounds healed? This would ensure health regen has more value as a purchased skillpoint mechanic (though you might want some fast-forward buttons that use the host_timescale command so the player doesn't have to sit around waiting for health/mana to regen before starting the next wave).
Something like that which has just as much replayability and diverse mechanics as arena mode would be the only thing I think you should work on as an entirely separate challenge mode. Building up a little town in a field and fighting off hordes of attacks sounds super fun, and you can get very creative with the waves. Wave 3 could be a slow moving horde of zombies, giving the player ample time to figure out if they want to buy a catapult on the fly that can explode the majority of the horde in a single go. Wave 10 could be a small scouting party of necro guards being lead by a death knight captain. Wave 15 could be a wild cyclops that would have physics boulders spawn in around the field for him to kick toward the town. Could even have a basic sewer tunnel where during later waves, some enemies come up through the sewer tunnel, and if the player isn't watching or hasn't purchased a lock for the sewer gate so it cannot be broken through immediately, then suddenly the wave can have a neat flanking mechanic where surprise enemies come up from underneath the town instead of out from the front field.
I'll try if i can, but I think that it might be related to the fact that the bone dragon is just a different npc type, like Arantir. Arantir can't die and has a lot of scripted behaviors used in the final battle of the vanilla game.
But let's see.
- Pitfall
Yes, the trigger setting health to zero is a better solution.
- Enemy Count
Yes, maybe the eniemes are spawned too fast.
-Trashcan
Yeah this is really good, I don't know how I didn't think of it before.
-Sanctuary
Yep
- Heal Allies
Yes, maybe allies can be healed for coins?
- Bosses
Ahh I see, It make sense.
Malus modifiers
I'll add them.
Balancing
To balance the mod is really difficult, but' I'll try my best.
- entData%
Before creating this mod I had zero experience with the source engine, I don't know advanced stuff like this. But if you tell me it's not gonna be a problem then I'll try.
There are already a lot of logic entities, really a lot.
These are all great ideas, but the amount of time required to make them is really too much for me. I can finish the mod by completing the adventure mode (one or two levels and it's done) and updating the arena but for more content I don't know.
Thank you again for the feedback and suggestions
apologies for the late response.
You will need to set up hammer editor, I followed this guide in the steam page
https://steamcommunity.com/sharedfiles/filedetails/?id=740822264
Be aware that it's made on the source engine created by valve so you'll need to learn how the engine works.
To make this mod I followed many tutorials on how to use source engine, I remember only TopHatWhaffle on youtube while writing this but there are many more.
If you want to make mods for DM you must be very calm and patient and forebearing.
Also the game was not meant for modding upon release, so the editor is not very stable, there a few bugs and crashes.
All of this must not scare you, It's still kinda easy, especially if you have experience with mods before.
I wish you the best luck!
It would be nice to see some other mods that add more content to the game :)
Ah, I saw it does in the readme file, nice!
Yes it works with the unlimited edition but it requires additional set up steps to make it work.