AddComponent() now throws a crash message when the comp type arg is not a component. (#76221)

## About The Pull Request
HEY! Did you know that the AddComponent() proc can complete without
throwing errors when the component type argument is actually not a type
or instance of a component? Me neither (until now), but I've recently
discovered that while working on #76219 (Make sure to merge that one
first).

Also adds early return checks to the AddElement and RemoveElement procs.

## Why It's Good For The Game
Silent bugs are awful.

## Changelog
N/A
This commit is contained in:
Ghom
2023-07-01 19:21:07 +01:00
committed by GitHub
parent 920ba8edf6
commit b82567ebd3
2 changed files with 15 additions and 8 deletions
+4
View File
@@ -53,6 +53,8 @@
if(QDELING(src))
CRASH("We just tried to add an element to a qdeleted datum, something is fucked")
var/datum/element/ele = SSdcs.GetElement(arguments)
if(!ele) // We couldn't fetch the element, likely because it was not an element.
return // the crash message has already been sent
arguments[1] = src
if(ele.Attach(arglist(arguments)) == ELEMENT_INCOMPATIBLE)
CRASH("Incompatible element [ele.type] was assigned to a [type]! args: [json_encode(args)]")
@@ -63,6 +65,8 @@
*/
/datum/proc/_RemoveElement(list/arguments)
var/datum/element/ele = SSdcs.GetElement(arguments)
if(!ele) // We couldn't fetch the element, likely because it was not an element.
return // the crash message has already been sent
if(ele.element_flags & ELEMENT_COMPLEX_DETACH)
arguments[1] = src
ele.Detach(arglist(arguments))