Xeno69 / Domination

Domination - A MP mission for Arma 3
83 stars 36 forks source link

sometimes cannot capture a tower #183

Closed longtimegamer closed 4 years ago

longtimegamer commented 4 years ago

Depending on where the randomized capture tower is spawned the defending AI can be "embedded" in a rock or under a structure. The position is usually hidden from the players and the enemy AI is in a location where the bot cannot be killed (such as safely hidden inside a rock). The only way to kill the hidden bot is for an admin to intervene with Zeus and kill the bot with lightning. Then the capture can proceed as normal.

Unfortunately this has been the number one reason for the Domination mission to require administrator intervention. I think most people just restart their server but if they login as admin and look around in Zeus there is usually a bot like I described above.

This is a bug in the Arma engine but I wanted to explore a fix in the Domination code since BIS won't fix bugs. I was considering adding a check when the tower is created (not too close to rocks or buildings perhaps) or check each location before calling createUnit is called. I haven't attempted to fix anything yet but I might have time this month. I wanted to solicit your opinion first. Any ideas on how to fix this?

longtimegamer commented 4 years ago

I'm also not clear how this happens. I thought the spawned units are "dropped" into place from a few meters above the ground. Perhaps this only occurs when there are hillsides and the angle allows the units to be created colliding with the rock and then fall into the empty space inside the rock...

Xeno69 commented 4 years ago

A3 vanilla or 3rd party mod/addon island?

longtimegamer commented 4 years ago

A3 vanilla. I have seen it happen on Altis and Malden. It is usually caused by rocks but I have also seen is occur with other empty map objects such as inside the foundations of a bridge or lying prone in a space under a building. If there are any hollow objects near the tower then there is a chance to create an enemy bot inside of it.

Xeno69 commented 4 years ago

I have replaced the mchelper function which setpos units in the air with _one_unit setVehiclePosition [getPosWorld _one_unit, [], 0, "CAN_COLLIDE"];

Let's see if that fixes it.

longtimegamer commented 4 years ago

Ok. I will test.

longtimegamer commented 4 years ago

I didn't reproduce the issue in a test but I haven't seen the bug since your patch. I think this issue is fixed. I will re-open if the issue occurs again.