ID:869626
 
Descriptive Problem Summary:
Whenever I place more than 13 mobs on the map, the game won't run at all. It just opens up the Options and Message box says "Connecting to..." forever.

It appears to be caused by using ..() in New(), which is understandable, as it first calls New() atom, then new() mob, then new() npc, but, even if the New() proc for npc's only contains ..(), which is the default behavior, nothing happens.

This didn't happen before I updated BYOND, so I'm assuming it's a BYOND problem.

If it matters, I also have multiple .dmm files with different dimensions.
FYI:
  • ..() goes from child to parent. That is, NPC.New() is first. A ..() in NPC.New() calls mob.New(), and a ..() in mob.New() calls atom/movable/New(), etc.
  • Multiple .dmm files are stacked alphabetically into one map's Z levels at runtime, with the dimensions of the largest Z level.

If you re-install an older version, does the problem go away?
It doesn't go away when I re-install older versions.

And, I knew those FYI's, when I said it first calls New() atom, I meant it goes all the way back to atom/New() from the child, and etc... before executing the actual code for mob/npc/New().

I'm not sure what causes the problem though. Even if I remove the New() code for everything mob/npc inherits from, having New() ..() still causes it to break.

EDIT: I found the cause, but I still don't see why this should cause a problem. There's a variable that all mobs have (it was a test variable) that spawns a new object, but the object shouldn't cause a problem, it doesn't do anything substantial. It's just a test weapon with a few additional variables, an image variable, and a name.

If I remove
mob/var/weapon = new/weapon/testWeapon

it works fine.
In response to Ill Im
Clearly, something's happening with /weapon/testWeapon. You can't just say there's nothing special about it if it's the only cause of your problem.
I've moved this to Developer Help. The problem sounds like an infinite loop in your code, not a bug. If you have turned off world.loop_checks, turn that back on; it should only be used for temporary diagnostic purposes.

An infinite loop should then print out to world.log when it's detected. If you're running in Dream Daemon, just look at the output window or set up the logging before you start the world. If you run in DS, the log output will appear in Options & Messages. That should be coming up for you if the skin doesn't load, but if you get the main window instead you can open it via the taskbar menu or (with the default skin) by hitting F1.