Jump to content

[Bug] Mobs fall through the floor on aggro


Auntie Mangos

Recommended Posts

MaNGOS/0.17.0 (Revision 10450) for MacOSX_x64 (little-endian)

Using script library: ScriptDev2 (for MaNGOS 10449+) Revision [1816] 2010-09-06 14:46:47 (Unix)

Using World DB: YTDB_0.13.9_R563_MaNGOS_R10434_SD2_R1815_ACID_R305_RuDB_R38.3

Using creature EventAI: ACID 3.0.5 - Full Release for Mangos (3.3.5a Client)

How it SHOULD work:

1. Approach mob

2. Aggro mob, either by proximity or by attacking

3. Mob runs to your location and begins attacking

How it DOES work:

1. Approach mob

2. Aggro mob, either by proximity or by attacking

3. Mob falls through the floor to the ground level

I'm not sure this is as clear as it should be, but basically everything works fine on solid ground. However, once you start climbing buildings, things get a little hairy. For example, in the blood elf starting zone, I go to Falthrien Academy, which is a tower. When I climb up the tower, I target an Arcane Wraith. The Wraith turns to attack me, but falls through the floor down onto the ground below. Then I have to jump off the tower to kill and loot the wraith.

I think someone else was having this same problem, but they weren't able to articulate it very well:

http://getmangos.eu/community/viewtopic.php?id=15213

Any ideas? Is this a bug in mangos, or is it more likely that I've screwed something up?

Thanks a lot!

/edit: if it helps, I have vmaps installed and enabled. Here's the vmaps configuration section from my configuration file:

# Enable/Disable VMmap support for line of sight and height calculation
# Default: 1 (true)
#        : 0 (false)
vmap.enableLOS = 1
vmap.enableHeight = 1
# Map id that will be ignored by VMap
# List of ids with delimiter ','
# If more then one id is defined and spaces are included, the string has to be enclosed by "
#vmap.ignoreMapIds = "369,0,1,530"
vmap.ignoreMapIds = "369"
# These spells are ignored for LoS calculation
# List of ids with delimiter ','
vmap.ignoreSpellIds = "7720"

Link to comment
Share on other sites

  • 40 years later...

ok, I walked up to the top of the 1st ramp in the academy, typed .gps, and this is what I got:

You are OUTdoor
Map: 530 (Outland) Zone: 3430 (Eversong Woods) Area: 3431 (Sunstrider Isle) Phase 1
X: 10188.397461 Y:-6071.665527 Z: 25.486187 Orientation: 0.095491
grid[51.20]cell[0,4] InstanceID: 0
GroundZ: -1.431286 FloorZ: -1.431286 Have height data (Map: 1 VMap: 1)
Liquid level: 0.000000, ground: -1.431286, type: 2, status: 1 

So it seems like my floorZ is off. It should be equal to my character Z, and instead its equal to my ground Z, which explains the error I'm seeing. It's weird though, because .gps also says that it has height data and vmaps are enabled. Could this be a configuration issue, or do I need to re-extract my vmaps?

Thanks!

Link to comment
Share on other sites

Chalk this up to my stupidity. Somehow my edits to the mangos .conf file weren't getting saved, so vmaps weren't actually enabled.

One error leads to another, however. Now that I have vmaps enabled, I've discovered that I have the wrong version of the vmaps. Of course, there's no native mac vmaps installer, so I'm installing wine right now to take a crack at the windows one. I'll keep you updated to see if I'm actually able to extract the correct files.

Anyone here successfully extracted and assembled vmaps on OS X? How did you do it? Did you use wine, crossover, or something else?

Thanks!

Link to comment
Share on other sites

This patch can solve problem when vmap is disable .

diff --git a/src/game/TargetedMovementGenerator.cpp b/src/game/TargetedMovementGenerator.cpp
index 29877ac..0836290 100644
--- a/src/game/TargetedMovementGenerator.cpp
+++ b/src/game/TargetedMovementGenerator.cpp
@@ -77,8 +77,9 @@ void TargetedMovementGeneratorMedium<T,D>::_setTargetLocation(T &owner)

    // Just a temp hack, GetContactPoint/GetClosePoint in above code use UpdateGroundPositionZ (in GetNearPoint)
    // and then has the wrong z to use when creature try follow unit in the air.
-    if (owner.GetTypeId() == TYPEID_UNIT && ((Creature*)&owner)->canFly())
-        z = i_target->GetPositionZ();
+    if (owner.GetTypeId() == TYPEID_UNIT)
+        if ( ((Creature*)&owner)->canFly() || owner.GetPositionZ() > z+1.0f )
+            z = i_target->GetPositionZ();

    Traveller<T> traveller(owner);
    i_destinationHolder.SetDestination(traveller, x, y, z);

side effect hack : Units can move to flyer target from overhead :ph34r:

can solve this with check target is flyer or not but i think not important problem ;)

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use