DeltaV-Station / Delta-v

A fork of Space Station 14, embracing a mixture of classic SS13 chaos and experimentation only possible with the new engine
https://delta-v.org
GNU Affero General Public License v3.0
62 stars 266 forks source link

Syndicate and generic radio implant together prevent talking on syndicate radio #1343

Open pissdemon opened 3 months ago

pissdemon commented 3 months ago

Description

Can't talk on Syndicate radio channel anymore after implanting a generic radio implanter.

Reproduction

  1. Implant Syndicate radio implanter
  2. Check whether radio works receiving and transmitting
  3. Implant generic radio implanter
  4. Add key to generic radio implant
  5. Try talking on Syndicate radio

Expected result: Both work implants work, receiving and transmitting Actual result (as reported): Generic works receiving and transmitting, Syndie works receiving but not transmitting

I haven't tried reproducing it yet but the steps above should repro it.

Screenshots Not necessary

Additional context

Looking into it I missed the edge case when implementing them. HasRadioImplantComponent only stores info about a single implant and that comp's implant info is used when you try to transmit on the radio (iirc). Since it stores info about just one implant, when you implant a new radio implant over a previous one it overwrites the HasRadioImplantComponent's Implant field with the new radio implant EntityUid, so the old one is "forgotten" about and you can't transmit on it anymore.

deltanedas commented 3 months ago

List<EntityUid> Implants = new(); gameplay

pissdemon commented 3 months ago

Yeah, that's how that needs to get solved