Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[UPSTREAM UPDATE] 09.01.2025 #2

Open
wants to merge 47 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
daf386e
The tabs (linters fixed)
MosleyTheMalO Jan 5, 2025
ae7de1e
deprecated content fixed
MosleyTheMalO Jan 5, 2025
7075db2
makes the menu work
MosleyTheMalO Jan 7, 2025
8b68a77
fix linters
MosleyTheMalO Jan 7, 2025
1f849b1
I mean, we refractored the whole file anyways
MosleyTheMalO Jan 7, 2025
32a5849
fixes
MosleyTheMalO Jan 8, 2025
c8696de
Update belly.dm
MosleyTheMalO Jan 8, 2025
e870888
Update CharacterPrefsTab.tsx
MosleyTheMalO Jan 8, 2025
489a4dc
You might find usages of useLocalState. This should be considered dep…
MosleyTheMalO Jan 8, 2025
b581588
Update InteractionsTab.tsx
MosleyTheMalO Jan 8, 2025
d1d94ec
ok
MosleyTheMalO Jan 8, 2025
1d8f343
Implements shared particle holders, re-adds slimed status particles u…
SmArtKar Nov 20, 2024
75e037e
Converts most common particle sources to use our new pooling system (…
SmArtKar Nov 21, 2024
97150ea
Fix coffee maker smoke particles not deleting (#88111)
timothymtorres Nov 23, 2024
1245187
Fix fireplace particles runtimes (#88114)
timothymtorres Nov 23, 2024
8fab55a
Reset this back to TG once fish infusion comes
StrangeWeirdKitten Jan 7, 2025
f5a98eb
Memory 2.0: The flickering light removal (#2856)
StrangeWeirdKitten Jan 8, 2025
ffd40ff
Automatic changelog for PR #2856 [ci skip]
Bubberbot Jan 8, 2025
52a0d2a
Unfucks Biodome disposals (#2862)
TealSeer Jan 8, 2025
8a03d1c
Automatic changelog for PR #2862 [ci skip]
Bubberbot Jan 8, 2025
3a74a6c
Security Kepi Caps (#2855)
Kajortoq Jan 8, 2025
1055391
Automatic changelog for PR #2855 [ci skip]
Bubberbot Jan 8, 2025
260be13
adds 'cyclops sclera' marking, a marking that makes the cyclopian eye…
zeroisthebiggay Jan 8, 2025
fef1c4d
Automatic changelog for PR #2804 [ci skip]
Bubberbot Jan 8, 2025
5b9d27e
Buffs ERP on Moonstation (Adds a bucket, five wood, and tinyfan to th…
StrangeWeirdKitten Jan 8, 2025
2255603
Automatic changelog for PR #2864 [ci skip]
Bubberbot Jan 8, 2025
2840d23
Sends a station announcement when a heretic is 1 sacrifice away from …
Odairu Jan 8, 2025
6c20d30
Automatic changelog for PR #2854 [ci skip]
Bubberbot Jan 8, 2025
85d7a70
Bubberstation automatic changelog compile [ci skip]
actions-user Jan 8, 2025
c693ce7
Bubberstation automatic changelog compile [ci skip]
Bubberbot Jan 8, 2025
9cdaee9
Fix Biodome's SM waste and cabling so engineers stop going crazy (#2867)
lessthnthree Jan 9, 2025
ee677a3
Automatic changelog for PR #2867 [ci skip]
Bubberbot Jan 9, 2025
49fd39f
Bubberstation automatic changelog compile [ci skip]
Bubberbot Jan 9, 2025
0f4faa5
Remove Saliith plushie and pinpointer definitions from the codebase
MosleyTheMalO Jan 9, 2025
348626e
Merge pull request #78 from SPLURT-Station/fix-error
MosleyTheMalO Jan 9, 2025
6ab566a
Automatic changelog for PR #78 [ci skip]
github-actions[bot] Jan 9, 2025
fd45e89
Merge branch 'master' into erp-interactions-and-related
MosleyTheMalO Jan 9, 2025
cc5fe1e
interaction verb
MosleyTheMalO Jan 9, 2025
d7c1f80
Categories toggle + removes debug checks
MosleyTheMalO Jan 9, 2025
58caf53
Merge remote-tracking branch 'upstream/master' into upstream-updates
MosleyTheMalO Jan 9, 2025
6b97f6a
Merge pull request #79 from SPLURT-Station/upstream-updates
MosleyTheMalO Jan 9, 2025
5ab8a99
Merge branch 'master' into erp-interactions-and-related
MosleyTheMalO Jan 9, 2025
7712958
Merge branch 'master' into erp-interactions-and-related
MosleyTheMalO Jan 9, 2025
a265217
Merge pull request #74 from SPLURT-Station/erp-interactions-and-related
MosleyTheMalO Jan 9, 2025
5007f3c
Automatic changelog for PR #74 [ci skip]
github-actions[bot] Jan 9, 2025
7d8b018
Merge remote-tracking branch 'upstream/master' into upstream_update
Phoenix4O4 Jan 9, 2025
6549849
temp fix
Phoenix4O4 Jan 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,221 changes: 620 additions & 601 deletions _maps/map_files/biodome/biodome.dmm

Large diffs are not rendered by default.

5 changes: 0 additions & 5 deletions code/controllers/subsystem/explosions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -454,11 +454,6 @@ ADMIN_VERB(check_bomb_impacts, R_DEBUG, "Check Bomb Impact", "See what the effec
if(EXPLODE_LIGHT)
SSexplosions.lowturf += explode

//SKYRAT EDIT ADDITION
for(var/obj/machinery/light/iterating_light in explode)
iterating_light.start_flickering()
//SKYRAT EDIT END

if(prob(40) && dist < flame_range && !isspaceturf(explode) && !explode.density)
flameturf += explode

Expand Down
16 changes: 13 additions & 3 deletions code/datums/components/acid.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
var/turf_acid_ignores_mobs = FALSE
/// The ambient sound of acid eating away at the parent [/atom].
var/datum/looping_sound/acid/sizzle
/// Particle holder for acid particles (sick)
/// Particle holder for acid particles (sick). Still utilized over shared holders because they're movable-only
var/obj/effect/abstract/particle_holder/particle_effect
/// Particle type we're using for cleaning up our shared holder
var/particle_type
/// The proc used to handle the parent [/atom] when processing. TODO: Unify damage and resistance flags so that this doesn't need to exist!
var/datum/callback/process_effect

Expand Down Expand Up @@ -68,8 +70,13 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e

sizzle = new(atom_parent, TRUE)
if(acid_particles)
// acid particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB)
if (ismovable(parent))
var/atom/movable/movable_parent = parent
movable_parent.add_shared_particles(acid_particles, "[acid_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
particle_type = acid_particles
else
// acid particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
particle_effect = new(atom_parent, acid_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB)
START_PROCESSING(SSacid, src)

/datum/component/acid/Destroy(force)
Expand All @@ -78,6 +85,9 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
QDEL_NULL(sizzle)
if(particle_effect)
QDEL_NULL(particle_effect)
if (ismovable(parent) && particle_type)
var/atom/movable/movable_parent = parent
movable_parent.remove_shared_particles("[particle_type]_[isitem(parent)]")
process_effect = null
return ..()

Expand Down
18 changes: 14 additions & 4 deletions code/datums/components/burning.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e
/datum/component/burning
/// Fire overlay appearance we apply
var/fire_overlay
/// Particle holder for fire particles, if any
/// Particle holder for fire particles, if any. Still utilized over shared holders because they're movable-only
var/obj/effect/abstract/particle_holder/particle_effect
/// Particle type we're using for cleaning up our shared holder
var/particle_type

/datum/component/burning/Initialize(fire_overlay = GLOB.fire_overlay, fire_particles = /particles/smoke/burning)
if(!isatom(parent))
Expand All @@ -25,16 +27,24 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e
return

src.fire_overlay = fire_overlay
if(fire_particles)
// burning particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
particle_effect = new(atom_parent, fire_particles, isitem(atom_parent) ? NONE : PARTICLE_ATTACH_MOB)
if (fire_particles)
if(ismovable(parent))
var/atom/movable/movable_parent = parent
// burning particles look pretty bad when they stack on mobs, so that behavior is not wanted for items
movable_parent.add_shared_particles(fire_particles, "[fire_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
particle_type = fire_particles
else
particle_effect = new(atom_parent, fire_particles)
START_PROCESSING(SSburning, src)

/datum/component/burning/Destroy(force)
STOP_PROCESSING(SSburning, src)
fire_overlay = null
if(particle_effect)
QDEL_NULL(particle_effect)
if (ismovable(parent) && particle_type)
var/atom/movable/movable_parent = parent
movable_parent.remove_shared_particles("[particle_type]_[isitem(parent)]")
return ..()

/datum/component/burning/RegisterWithParent()
Expand Down
25 changes: 11 additions & 14 deletions code/datums/components/food/decomposition.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@
var/produce_ants = FALSE
/// Stink particle type, if we are supposed to create stink particles
var/stink_particles
/// Stink particle holder
var/obj/effect/abstract/particle_holder/particle_effect

/datum/component/decomposition/Initialize(mapload, decomp_req_handle, decomp_flags = NONE, decomp_result, ant_attracting = FALSE, custom_time = 0, stink_particles = /particles/stink)
if(!ismovable(parent) || !HAS_TRAIT(parent, TRAIT_GERM_SENSITIVE))
Expand All @@ -52,9 +50,11 @@
src.stink_particles = stink_particles

/datum/component/decomposition/Destroy()
. = ..()
if(particle_effect)
QDEL_NULL(particle_effect)
remove_timer()
if (stink_particles)
var/atom/movable/movable_parent = parent
movable_parent.remove_shared_particles("[stink_particles]_[isitem(parent)]")
return ..()

/datum/component/decomposition/RegisterWithParent()
RegisterSignal(parent, COMSIG_ATOM_GERM_EXPOSED, PROC_REF(start_timer))
Expand All @@ -78,17 +78,13 @@
// If all other checks fail, then begin decomposition.
decomp_timerid = addtimer(CALLBACK(src, PROC_REF(decompose)), time_remaining, TIMER_STOPPABLE | TIMER_UNIQUE)

// Also start the stinking timer, if have stink particles and aren't stinking yet
if(!stink_particles || particle_effect)
// Also start the stinking timer, if have stink particles
if(!stink_particles)
return

var/stink_time = max(0, time_remaining - (original_time * 0.5))
stink_timerid = addtimer(CALLBACK(src, PROC_REF(stink_up)), stink_time, TIMER_STOPPABLE | TIMER_UNIQUE)

/datum/component/decomposition/Destroy()
remove_timer()
return ..()

/// Returns the time remaining in decomp, either from our potential timer or our own value, whichever is more useful
/datum/component/decomposition/proc/get_time()
if(!decomp_timerid)
Expand All @@ -108,11 +104,12 @@

/datum/component/decomposition/proc/stink_up()
stink_timerid = null
// Neither should happen, but to be sure
if(particle_effect || !stink_particles)
// Shouldn't happen, but to be sure
if(!stink_particles)
return
// we don't want stink lines on mobs (even though it'd be quite funny)
particle_effect = new(parent, stink_particles, isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)
var/atom/movable/movable_parent = parent
movable_parent.add_shared_particles(stink_particles, "[stink_particles]_[isitem(parent)]", isitem(parent) ? NONE : PARTICLE_ATTACH_MOB)

/datum/component/decomposition/proc/decompose()
decomp_timerid = null
Expand Down
17 changes: 10 additions & 7 deletions code/datums/proximity_monitor/fields/gravity.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
alpha = 200
/// our emissive appearance
var/mutable_appearance/emissive
var/particles/particle_type

/obj/gravity_fluff_field/Initialize(mapload, strength)
. = ..()
Expand All @@ -89,20 +90,22 @@
QUEUE_SMOOTH_NEIGHBORS(src)
switch(strength)
if(2 to INFINITY)
particles = new /particles/grav_field_down/strong()
particle_type = /particles/grav_field_down/strong
if(1 to 2)
particles = new /particles/grav_field_down()
particle_type = /particles/grav_field_down
if(0 to 1)
particles = new /particles/grav_field_float()
particle_type = /particles/grav_field_float
if(-INFINITY to -1)
particles = new /particles/grav_field_up()
color = particles.color
particle_type = /particles/grav_field_up
if (particle_type)
add_shared_particles(/particles/grav_field_down/strong)
color = particle_type::color
RegisterSignal(src, COMSIG_ATOM_SMOOTHED_ICON, PROC_REF(smoothed))

/obj/gravity_fluff_field/Destroy(force)
. = ..()
QDEL_NULL(particles)
remove_shared_particles(particle_type)
emissive = null
return ..()

/obj/gravity_fluff_field/proc/smoothed(datum/source)
SIGNAL_HANDLER
Expand Down
14 changes: 7 additions & 7 deletions code/datums/status_effects/debuffs/cursed.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
/datum/status_effect/grouped/cursed/Destroy()
UnregisterSignal(SSdcs, COMSIG_GLOB_CURSED_SLOT_MACHINE_WON)
branded_hand = null
if (smoke_path)
owner.remove_shared_particles(smoke_path)
return ..()

/// Checks the number of curses we have and returns information back to the slot machine. `max_curse_amount` is set by the slot machine itself.
Expand Down Expand Up @@ -123,7 +125,6 @@
span_notice("The smoke slowly clears from [owner.name]..."),
span_notice("Your skin finally settles down and your throat no longer feels as dry... The brand disappearing confirms that the curse has been lifted."),
)
QDEL_NULL(particle_effect)
qdel(src)

/// If our owner's stat changes, rapidly surge the damage chance.
Expand All @@ -140,10 +141,8 @@
/datum/status_effect/grouped/cursed/proc/on_death(mob/living/source, gibbed)
SIGNAL_HANDLER

if(gibbed)
return

QDEL_NULL(particle_effect)
if(!gibbed && smoke_path)
owner.remove_shared_particles(smoke_path)

/datum/status_effect/grouped/cursed/update_particles()
var/particle_path = /particles/smoke/steam/mild
Expand All @@ -156,9 +155,10 @@
if(smoke_path == particle_path)
return

QDEL_NULL(particle_effect)
if (smoke_path)
owner.remove_shared_particles(smoke_path)
owner.add_shared_particles(particle_path)
smoke_path = particle_path
particle_effect = new(owner, particle_path)

/datum/status_effect/grouped/cursed/tick(seconds_between_ticks)
if(curse_count <= 1)
Expand Down
92 changes: 83 additions & 9 deletions code/datums/status_effects/debuffs/fire_stacks.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
/////////// BUBBER EDIT THIS WILL BE FORCED TO CONFLICT READ THIS
/*
RESET THIS FILE BACK TO TG ONCE YOU GET FISH INFUSION
RESET THIS FILE BACK TO TG ONCE YOU GET FISH INFUSION
RESET THIS FILE BACK TO TG ONCE YOU GET FISH INFUSION
RESET THIS FILE BACK TO TG ONCE YOU GET FISH INFUSION

*/
/datum/status_effect/fire_handler
duration = -1
alert_type = null
Expand Down Expand Up @@ -135,6 +143,8 @@
var/obj/effect/dummy/lighting_obj/moblight
/// Type of mob light emitter we use when on fire
var/moblight_type = /obj/effect/dummy/lighting_obj/moblight/fire
/// Cached particle type
var/cached_state

/datum/status_effect/fire_handler/fire_stacks/get_examine_text()
if(owner.on_fire)
Expand All @@ -153,6 +163,8 @@

/datum/status_effect/fire_handler/fire_stacks/on_remove()
UnregisterSignal(owner, COMSIG_ATOM_TOUCHED_SPARKS)
if (cached_state)
owner.remove_shared_particles(cached_state)

/datum/status_effect/fire_handler/fire_stacks/tick(seconds_between_ticks)
if(stacks <= 0)
Expand All @@ -177,15 +189,23 @@
deal_damage(seconds_between_ticks)

/datum/status_effect/fire_handler/fire_stacks/update_particles()
if(on_fire)
if(!particle_effect)
particle_effect = new(owner, /particles/embers)
if(stacks > MOB_BIG_FIRE_STACK_THRESHOLD)
particle_effect.particles.spawning = 5
else
particle_effect.particles.spawning = 1
else if(particle_effect)
QDEL_NULL(particle_effect)
if (!on_fire)
if (cached_state)
owner.remove_shared_particles(cached_state)
cached_state = null
return

var/particle_type = /particles/embers/minor
if(stacks > MOB_BIG_FIRE_STACK_THRESHOLD)
particle_type = /particles/embers

if (cached_state == particle_type)
return

if (cached_state)
owner.remove_shared_particles(cached_state)
owner.add_shared_particles(particle_type)
cached_state = particle_type

/**
* Proc that handles damage dealing and all special effects
Expand Down Expand Up @@ -295,6 +315,59 @@

overlays |= created_overlay

/*
/datum/status_effect/fire_handler/wet_stacks
id = "wet_stacks"

enemy_types = list(/datum/status_effect/fire_handler/fire_stacks)
stack_modifier = -1
/// If the mob has the TRAIT_SLIPPERY_WHEN_WET trait, the mob gets this component while it's wet
//var/datum/component/slippery/slipperiness - BUBBER EDIT - REQUIRES FISH INFUSION

/datum/status_effect/fire_handler/wet_stacks/on_apply()
. = ..()
RegisterSignals(owner, list(SIGNAL_ADDTRAIT(TRAIT_WET_FOR_LONGER), SIGNAL_REMOVETRAIT(TRAIT_WET_FOR_LONGER)), PROC_REF(update_wet_stack_modifier))
update_wet_stack_modifier()
RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_SLIPPERY_WHEN_WET), PROC_REF(become_slippery))
RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_SLIPPERY_WHEN_WET), PROC_REF(no_longer_slippery))
if(HAS_TRAIT(owner, TRAIT_SLIPPERY_WHEN_WET))
become_slippery()
ADD_TRAIT(owner, TRAIT_IS_WET, TRAIT_STATUS_EFFECT(id))
owner.add_shared_particles(/particles/droplets)

/datum/status_effect/fire_handler/wet_stacks/on_remove()
. = ..()
REMOVE_TRAIT(owner, TRAIT_IS_WET, TRAIT_STATUS_EFFECT(id))
if(HAS_TRAIT(owner, TRAIT_SLIPPERY_WHEN_WET))
no_longer_slippery()
owner.remove_shared_particles(/particles/droplets)

/datum/status_effect/fire_handler/wet_stacks/proc/update_wet_stack_modifier()
SIGNAL_HANDLER
stack_modifier = HAS_TRAIT(owner, TRAIT_WET_FOR_LONGER) ? -3.5 : -1

/datum/status_effect/fire_handler/wet_stacks/proc/become_slippery()
SIGNAL_HANDLER
slipperiness = owner.AddComponent(/datum/component/slippery, 5 SECONDS, lube_flags = SLIPPERY_WHEN_LYING_DOWN)
ADD_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))

/datum/status_effect/fire_handler/wet_stacks/proc/no_longer_slippery()
SIGNAL_HANDLER
QDEL_NULL(slipperiness)
REMOVE_TRAIT(owner, TRAIT_NO_SLIP_WATER, TRAIT_STATUS_EFFECT(id))

/datum/status_effect/fire_handler/wet_stacks/get_examine_text()
return "[owner.p_They()] look[owner.p_s()] a little soaked."

/datum/status_effect/fire_handler/wet_stacks/tick(seconds_between_ticks)
adjust_stacks(-0.5 * seconds_between_ticks)
if(stacks <= 0)
qdel(src)

/datum/status_effect/fire_handler/wet_stacks/check_basic_mob_immunity(mob/living/basic/basic_owner)
return !(basic_owner.basic_mob_flags & IMMUNE_TO_GETTING_WET)

BUBBER EDIT RESET THIS TG BACK TO MASTER ONCE YOU GET FISH INFUSION*/
/datum/status_effect/fire_handler/wet_stacks
id = "wet_stacks"

Expand All @@ -316,3 +389,4 @@

/datum/status_effect/fire_handler/wet_stacks/check_basic_mob_immunity(mob/living/basic/basic_owner)
return !(basic_owner.basic_mob_flags & IMMUNE_TO_GETTING_WET)
/// BUBBER EDIT END
7 changes: 3 additions & 4 deletions code/datums/status_effects/debuffs/slime/slime_food.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@
RegisterSignal(owner, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_feeder_deleted))
RegisterSignal(owner, COMSIG_SLIME_DRAINED, PROC_REF(on_drained))
RegisterSignal(owner, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))

return ..()

/datum/status_effect/slime_food/on_remove()
feeder = null

///Handles the source of the pheromones getting deleted, or the owner getting washed
/datum/status_effect/slime_food/proc/on_feeder_deleted(datum/source)
SIGNAL_HANDLER
Expand Down Expand Up @@ -51,6 +53,3 @@
draining_slime.befriend(feeder)
new /obj/effect/temp_visual/heart(draining_slime.loc)
qdel(src)

/datum/status_effect/slime_food/on_remove()
feeder = null
8 changes: 8 additions & 0 deletions code/datums/status_effects/debuffs/slime/slimed.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,14 @@
to_chat(owner, span_userdanger("You have been covered in a thick layer of slime! Find a way to wash it off!"))
return ..()

/datum/status_effect/slimed/on_remove()
owner.remove_shared_particles(rainbow ? "slimed_rainbow" : "slimed_[slime_color]")

/datum/status_effect/slimed/update_particles()
var/obj/effect/abstract/shared_particle_holder/holder = owner.add_shared_particles(rainbow ? /particles/slime/rainbow : /particles/slime, rainbow ? "slimed_rainbow" : "slimed_[slime_color]")
if (!rainbow)
holder.particles.color = "[slime_color]a0"

/datum/status_effect/slimed/proc/remove_stacks(stacks_to_remove = 1)
slime_stacks -= stacks_to_remove // lose 1 stack per second
if(slime_stacks <= 0)
Expand Down
Loading
Loading