EvEmu-Project / evemu_Crucible

Emulator for EvE Online's Crucible expansion
https://evemu.dev
180 stars 68 forks source link

Cannot destroy wrecks #194

Open matthew1smith opened 2 years ago

matthew1smith commented 2 years ago

Describe the bug Spawned a Bantam and destroyed it, but error message appears when trying to then destroy the wreck. Error also occurred destroying naturally-spawned rat in belt.

To Reproduce Steps to reproduce the behavior:

  1. Destroy a ship.
  2. Lock wreck as target.
  3. Engage with module (in my case, 150mm Carbide Railgun I x3, unlinked)

Expected behavior Wreck should take damage eventually leading to destruction.

System Details (please complete the following information):

Additional context Server error from container instance: 13:24:52 [SvcCallError] Call Activate threw exception: 13:24:52 [SvcCallError] ObjectEx1: 13:24:52 [SvcCallError] Header: 13:24:52 [SvcCallError] Tuple: 3 elements 13:24:52 [SvcCallError] [ 0] Token: 'ccp_exceptions.UserError' 13:24:52 [SvcCallError] [ 1] Tuple: 2 elements 13:24:52 [SvcCallError] [ 1] [ 0] String: 'CustomError' 13:24:52 [SvcCallError] [ 1] [ 1] Dictionary: 1 entries 13:24:52 [SvcCallError] [ 1] [ 1] [ 0] Key: String: 'error' 13:24:52 [SvcCallError] [ 1] [ 1] [ 0] Value: String: 'You cannot attack the Bantam Wreck.' 13:24:52 [SvcCallError] [ 2] Dictionary: 2 entries 13:24:52 [SvcCallError] [ 2] [ 0] Key: String: 'dict' 13:24:52 [SvcCallError] [ 2] [ 0] Value: Dictionary: 1 entries 13:24:52 [SvcCallError] [ 2] [ 0] Value: [ 0] Key: String: 'error' 13:24:52 [SvcCallError] [ 2] [ 0] Value: [ 0] Value: String: 'You cannot attack the Bantam Wreck.' 13:24:52 [SvcCallError] [ 2] [ 1] Key: String: 'msg' 13:24:52 [SvcCallError] [ 2] [ 1] Value: String: 'CustomError' 13:24:52 [SvcCallError] List: 13:24:52 [SvcCallError] Empty 13:24:52 [SvcCallError] Dict: 13:24:52 [SvcCallError] Empty

jdhirst commented 2 years ago

Interesting, that should definitely be possible, I think there is some check in TargetMgr which may be catching here. I suggest having a look there to see where that message comes from. Maybe simply adding an exception for a wreck may be an idea, however it could have been added for a reason (maybe we crash when blowing up a wreck, not sure)

matthew1smith commented 2 years ago

Unfortunately, my Linux box is not yet operational as I'll need to wait until the weekend to begin experimenting. All I can do for now is test rather than debug. Sorry. If/when I can start hunting and debugging, can update. Otherwise, if anyone else wants to take a gander, they can feel free. :)

beelitzs commented 2 years ago

Seems that there's a couple of things here. Firstly, the ActiveModule superclass is throwing this error intentionally as is explicitly checks if the target is a wreck when activating an offensive module. (ActiveModule.cpp :359) Secondly, if you disable the explicit checks in the code and try to destroy one it still wont be enough as it seems that wrecks are invulnerable and will not take damage at all. This behavior (both the offensive module activation & the invulnerability) is also present with jet cans.