mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-01 20:42:08 +00:00
* Implements Cardinal Smoothing Support, Misc Smoothing Cleanup (#84402) ## About The Pull Request [Implements a new cardinal only bitmask smoothing mode](d565564918) The icon cutter supports generating cardinal only dmis, we should support using them. This is fairly trivial, just involves skipping a step to handle diagonals. While I'm here, makes adding new smoothing modes easier by creating a "using smoothing" group define [Removes undef for smoothing junctions](4c0a4d6e34) It is useful to be able to reference these in the general codebase, they should not be considered scoped to just icon smoothing [Fixes a copypasta issue breaking burn states for asteroid snow](a41b31dbe2) [Removes SMOOTH_BROKEN_TURF and SMOOTH_BURNT_TURF](8a9a340728) Bitflags should not be this specific, this should be a var on /turf/open, so that's what I'm making it. ## Why It's Good For The Game Upstreams a bit of wallening work, cleans up the codebase some ## Changelog 🆑 fix: Some varieties of snow now visually melt properly again when burned /🆑 * Implements Cardinal Smoothing Support, Misc Smoothing Cleanup --------- Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
79 lines
2.5 KiB
Plaintext
79 lines
2.5 KiB
Plaintext
/// Inert structures, such as girders, machine frames, and crates/lockers.
|
|
/obj/structure
|
|
icon = 'icons/obj/structures.dmi'
|
|
pressure_resistance = 8
|
|
max_integrity = 300
|
|
interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
|
|
layer = BELOW_OBJ_LAYER
|
|
flags_ricochet = RICOCHET_HARD
|
|
receive_ricochet_chance_mod = 0.6
|
|
pass_flags_self = PASSSTRUCTURE
|
|
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
|
armor_type = /datum/armor/obj_structure
|
|
burning_particles = /particles/smoke/burning
|
|
var/broken = FALSE
|
|
|
|
/datum/armor/obj_structure
|
|
fire = 50
|
|
acid = 50
|
|
|
|
/obj/structure/Initialize(mapload)
|
|
. = ..()
|
|
if(smoothing_flags & USES_SMOOTHING)
|
|
QUEUE_SMOOTH(src)
|
|
QUEUE_SMOOTH_NEIGHBORS(src)
|
|
if(smoothing_flags & SMOOTH_CORNERS)
|
|
icon_state = ""
|
|
GLOB.cameranet.updateVisibility(src)
|
|
|
|
/obj/structure/Destroy(force)
|
|
GLOB.cameranet.updateVisibility(src)
|
|
if(smoothing_flags & USES_SMOOTHING)
|
|
QUEUE_SMOOTH_NEIGHBORS(src)
|
|
return ..()
|
|
|
|
/obj/structure/ui_act(action, params)
|
|
add_fingerprint(usr)
|
|
return ..()
|
|
|
|
/obj/structure/examine(mob/user)
|
|
. = ..()
|
|
if(!(resistance_flags & INDESTRUCTIBLE))
|
|
if(resistance_flags & ON_FIRE)
|
|
. += span_warning("It's on fire!")
|
|
if(broken)
|
|
. += span_notice("It appears to be broken.")
|
|
var/examine_status = examine_status(user)
|
|
if(examine_status)
|
|
. += examine_status
|
|
|
|
/obj/structure/proc/examine_status(mob/user) //An overridable proc, mostly for falsewalls.
|
|
var/healthpercent = (atom_integrity/max_integrity) * 100
|
|
switch(healthpercent)
|
|
if(50 to 99)
|
|
return "It looks slightly damaged."
|
|
if(25 to 50)
|
|
return "It appears heavily damaged."
|
|
if(0 to 25)
|
|
if(!broken)
|
|
return span_warning("It's falling apart!")
|
|
|
|
/obj/structure/rust_heretic_act()
|
|
take_damage(500, BRUTE, "melee", 1)
|
|
|
|
/obj/structure/zap_act(power, zap_flags)
|
|
if(zap_flags & ZAP_OBJ_DAMAGE)
|
|
take_damage(power * 2.5e-4, BURN, "energy")
|
|
power -= power * 5e-4 //walls take a lot out of ya
|
|
. = ..()
|
|
|
|
/obj/structure/animate_atom_living(mob/living/owner)
|
|
new /mob/living/simple_animal/hostile/mimic/copy(drop_location(), src, owner)
|
|
|
|
/// For when a mob comes flying through the window, smash it and damage the mob
|
|
/obj/structure/proc/smash_and_injure(mob/living/flying_mob, atom/oldloc, direction)
|
|
flying_mob.balloon_alert_to_viewers("smashed through!")
|
|
flying_mob.apply_damage(damage = rand(5, 15), damagetype = BRUTE, wound_bonus = 15, bare_wound_bonus = 25, sharpness = SHARP_EDGED, attack_direction = get_dir(src, oldloc))
|
|
new /obj/effect/decal/cleanable/glass(get_step(flying_mob, flying_mob.dir))
|
|
deconstruct(disassembled = FALSE)
|