* [PTBF] Adds blob hallucinations in dark areas
This hallucination looks for dark, unobstructed tiles within view of the
hallucinating target, and gradually expands a blob from one of those
tiles. It also spawns a blob zombie nearby. If the blob zombie knocks
the target down, the target will hallucinate becoming a blob zombie.
* Blob hallucination icon fix/change, add vomit sfx
Blob zombies now appropriately spawn their heads, and as requested in PR
review, the first blob spawned will have a core icon, and will be
accompanied by a vomit sound effect, like actual blobs. Additionally,
the blob zombie will no longer attack the target after already once
knocking them down.
* Apply suggestions from code review
Remove unnecessary nulls
Change return signature of blob_zombie#think to match convention
Set blob_zombie's name in typedef instead of initializer
Declare source_turf in loop body in blob#expand
Add nullchecks and safety check for deleted targets in blob#Destroy
Format blob hallucination colors list
Return qdel hint in blob#Initialize instead of qdeling self
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: asciodev <81930475+asciodev@users.noreply.github.com>
* Prevent blob zombie hallucination name from being overwritten when created
Signed-off-by: asciodev <81930475+asciodev@users.noreply.github.com>
* DM doesn't like parentheses on their own lines apparently
* Enable dynamic blob hallucination expansion count
Co-authored-by: Drsmail <60036448+Drsmail@users.noreply.github.com>
---------
Signed-off-by: asciodev <81930475+asciodev@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: Drsmail <60036448+Drsmail@users.noreply.github.com>
* refactor: Attack chain, initial setup.
* migrate curtain to make dreamchecker happy
* update thurible
* don't call attacked_by separately for legacy attack chain
* remove duplicate proc
* condense similar code, put allowances for legacy code in new procs
* update docs, include diagram source
* add comment on how to update diagram
* fix admonition
* mindflayer updates
* remove commented out code
* clarify all steps
* after_attack should be overridable
* whoops
* retrofit recent changes
* duh, can't restrict this yet because of tool_acts
* i hate ore bags with the fire of a thousand suns
* return correct value for object attack logic
* Various cleanups.
We don't want to attempt to pull stuff out of `/obj/item/attackby`,
because those pieces are part of the related objects' migrations, not
`/obj/item` itself. Attempting to do this causes knockon effects where
things expected to call e.g. `/obj/item/storage/attackby` in the call
chain were not ferried over to the new item interaction code, because
the related objects hadn't actually been migrated over yet.
I've used refactoring /obj/vehicle as the example for migrating
`attackby` methods instead.
* simplify some argument names
* fuck it
* make it do the thing
* Rename CI module call
* Prove that CI works
* improve test output
* aaand fix it again
* fix curtain tool interactions
* fix compile error
* fix compile error
* Better docs, introduce migration plan tool.