Burning and acid components fixes and improvements (#74803)

## About The Pull Request

Generally cleans up code on both components.
Moves burn proc back to /obj level, I'm not sure why I moved it to /atom
level, it was unnecessary.
Acid component generalized so it can be used on any atom that uses
atom_integrity.
Fixes a bug where objects that stopped burning didn't update their burn
overlay properly due to bad removal logic and leftover code.
Standardizes examine messages on burning items by just slapping an
examine signal registration on the component.
Adds fire particles to items thanks to Lemon's PR:
https://github.com/tgstation/tgstation/pull/74524

## Why It's Good For The Game

Particles look cool

![image](https://user-images.githubusercontent.com/82850673/232605615-6e3bc804-bc68-4f09-8615-5e5946acbc10.png)

![image](https://user-images.githubusercontent.com/82850673/232664951-e0474331-495f-4717-8b0f-a647aedc4d9f.png)

Bugfixes are good
Code improvements are good

## Changelog

🆑
add: Burning items now get (small) smoke particles. Sick.
fix: Burning objects now clear their burning overlay properly.
qol: Examining burning objects will always tell you that they are
burning.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
This commit is contained in:
ChungusGamer666
2023-04-23 20:50:58 -03:00
committed by GitHub
parent 652ef28e3c
commit b093b12e03
14 changed files with 122 additions and 109 deletions
+5 -5
View File
@@ -146,13 +146,13 @@
var/mob/living/burn_victim = burn_target
burn_victim.adjust_fire_stacks(BONFIRE_FIRE_STACK_STRENGTH * 0.5 * seconds_per_tick)
burn_victim.ignite_mob()
else if(isobj(burn_target))
var/obj/burned_object = burn_target
if(grill && isitem(burned_object))
var/obj/item/grilled_item = burned_object
else
var/atom/movable/burned_movable = burn_target
if(grill && isitem(burned_movable))
var/obj/item/grilled_item = burned_movable
SEND_SIGNAL(grilled_item, COMSIG_ITEM_GRILL_PROCESS, src, seconds_per_tick) //Not a big fan, maybe make this use fire_act() in the future.
continue
burned_object.fire_act(1000, 250 * seconds_per_tick)
burned_movable.fire_act(1000, 250 * seconds_per_tick)
/obj/structure/bonfire/process(seconds_per_tick)
if(!check_oxygen())