Files
Bubberstation/code/datums
SyncIt21 fa7e4c9e0b _GetInverseTypeList() correctly returns all parent types (#77784)
## About The Pull Request

Fixes #77774
Fixes #77795

There is a problem with `/datum/component/proc/_GetInverseTypeList()`


e3a835b960/code/datums/components/_component.dm (L238-L245)

Notice after we store the parent type here

e3a835b960/code/datums/components/_component.dm (L241)

The value is lost inside our while loop here, we go to `current_type`
parent value before even adding it to the return list

e3a835b960/code/datums/components/_component.dm (L244)

And by the time we do add it to the list the parent type is lost and we
have the grand parent value instead

e3a835b960/code/datums/components/_component.dm (L245)

To test this call this proc with the value
`datum/component/plumbing/simple_supply`

**Expected result.**
`datum/component/plumbing/simple_supply` <----- The type of param passed
`datum/component/plumbing` <--------------------- The parent type of
param passed

**Actual result**
![Screenshot
(292)](https://github.com/tgstation/tgstation/assets/110812394/06603de6-109f-49bc-b9f2-22cd68dba560)


This crashes everything plumbing related.

The solution is simple just flip the while loop i.e. first add the
current value to the list then move to its parent type
```
while (current_type != /datum/component)
  . += current_type  <-----add parent value
  current_type = type2parent(current_type) <----then move up
```

So you get the correct list here
![Screenshot
(293)](https://github.com/tgstation/tgstation/assets/110812394/b3286ea3-4eb6-454b-ae84-b0b16390de86)


Broken by #77615 

## Changelog
🆑
fix: plumbing ducts connects to other plumbing machinery again
/🆑
2023-08-21 17:48:13 +03:00
..
2023-08-16 13:05:29 -06:00
2023-05-07 22:45:20 +00:00
2023-08-06 03:37:03 +00:00
2023-07-01 15:36:26 +01:00