mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-11 07:04:01 +01:00
Flammable Items, Abstractness, and hypnosis (#19267)
* Laser Eyes * Update dna.dm * Mecha * Update positive_genes.dm * These * These 2 * yeh * Rest of these * Update turf.dm * Update food.dm * Some moar * mooove * Update vorestation.dme * Update burning.dm * firesuit * flags * HYPNOCOLOR * xd * no filter * dc * Update ore_bag.dm * Update misc.dm * Update misc.dm
This commit is contained in:
@@ -151,7 +151,7 @@
|
||||
icon_state = "mecha_honker"
|
||||
energy_drain = 200
|
||||
equip_cooldown = 150
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
|
||||
can_attach(obj/mecha/combat/honker/M as obj)
|
||||
if(!istype(M))
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
if("Power")
|
||||
to_chat(user, span_boldwarning("Your wish is granted, but at a terrible cost..."))
|
||||
to_chat(user, span_warning("The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart."))
|
||||
if (!(LASER in user.mutations))
|
||||
user.mutations.Add(LASER)
|
||||
if (!(LASER_EYES in user.mutations))
|
||||
user.mutations.Add(LASER_EYES)
|
||||
to_chat(user, span_notice("You feel pressure building behind your eyes."))
|
||||
if (!(COLD_RESISTANCE in user.mutations))
|
||||
user.mutations.Add(COLD_RESISTANCE)
|
||||
|
||||
@@ -157,7 +157,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
return TRUE
|
||||
|
||||
// Deconstruct into a pipe item.
|
||||
/obj/machinery/atmospherics/proc/deconstruct()
|
||||
/obj/machinery/atmospherics/atom_deconstruct()
|
||||
if(QDELETED(src))
|
||||
return
|
||||
if(construction_type)
|
||||
@@ -258,7 +258,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/datum/gas_mixture/int_air = return_air()
|
||||
var/datum/gas_mixture/env_air = our_turf.return_air()
|
||||
var/internal_pressure = int_air.return_pressure()-env_air.return_pressure()
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
// Release pressure
|
||||
playsound(our_turf, 'sound/effects/bang.ogg', 70, 0, 0)
|
||||
playsound(our_turf, 'sound/effects/clang2.ogg', 70, 0, 0)
|
||||
|
||||
@@ -292,7 +292,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
#undef REGULATE_NONE
|
||||
#undef REGULATE_INPUT
|
||||
|
||||
@@ -253,7 +253,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/binary/pump/click_alt(mob/user)
|
||||
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
|
||||
|
||||
@@ -292,7 +292,7 @@ Thus, the two variables affect pump operation are set in New():
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/binary/volume_pump/proc/multitool_act(var/obj/item/W as obj, var/mob/user as mob)
|
||||
if(!overclocked)
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + "unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/omni/attack_hand(user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -165,4 +165,4 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
// Housekeeping and pipe network stuff below
|
||||
/obj/machinery/atmospherics/trinary/get_neighbor_nodes_for_init()
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/mirrored
|
||||
icon_state = "map_tvalvem0"
|
||||
|
||||
@@ -88,4 +88,4 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/click_ctrl(mob/user)
|
||||
if (volume_rate == ATMOS_DEFAULT_VOLUME_PUMP + 500 || use_power == USE_POWER_OFF)
|
||||
|
||||
@@ -442,7 +442,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/proc/multitool_act(obj/item/W, mob/user)
|
||||
var/list/options = list(
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
span_infoplain(span_bold("\The [user]") + " unfastens \the [src]."), \
|
||||
span_notice("You have unfastened \the [src]."), \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/valve/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
span_hear("You hear a ratchet."))
|
||||
if(unsafe_wrenching)
|
||||
unsafe_pressure_release(user, internal_pressure)
|
||||
deconstruct()
|
||||
atom_deconstruct()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/change_color(var/new_color)
|
||||
//only pass valid pipe colors please ~otherwise your pipe will turn invisible
|
||||
|
||||
@@ -1,6 +1,26 @@
|
||||
/// 33554431 (2^24 - 1) is the maximum value our bitflags can reach.
|
||||
#define MAX_BITFLAG_DIGITS 8
|
||||
|
||||
//Fire and Acid stuff, for resistance_flags
|
||||
#define LAVA_PROOF (1<<0)
|
||||
/// 100% immune to fire damage (but not necessarily to lava or heat)
|
||||
#define FIRE_PROOF (1<<1)
|
||||
/// atom is flammable and can have the burning component
|
||||
#define FLAMMABLE (1<<2)
|
||||
/// currently burning
|
||||
#define ON_FIRE (1<<3)
|
||||
/// acid can't even appear on it, let alone melt it.
|
||||
#define UNACIDABLE (1<<4)
|
||||
/// acid stuck on it doesn't melt it.
|
||||
#define ACID_PROOF (1<<5)
|
||||
/// doesn't take damage
|
||||
#define INDESTRUCTIBLE (1<<6)
|
||||
/// can't be frozen
|
||||
#define FREEZE_PROOF (1<<7)
|
||||
/// can't be shuttle crushed.
|
||||
#define SHUTTLE_CRUSH_PROOF (1<<8)
|
||||
/// can't be destroyed by bombs
|
||||
#define BOMB_PROOF (1<<9)
|
||||
///Object will protect itself.
|
||||
#define EMP_PROTECT_SELF (1<<0)
|
||||
///Object will protect its contents from being EMPed.
|
||||
|
||||
@@ -100,3 +100,6 @@
|
||||
#define TANK_MAX_RELEASE_PRESSURE (3*ONE_ATMOSPHERE)
|
||||
#define TANK_DEFAULT_RELEASE_PRESSURE ONE_ATMOSPHERE
|
||||
#define MAX_ATMOS_TEMPERATURE 1e30 //Without having a max temp, you can get .inf temps
|
||||
|
||||
///Minimum temperature for items on fire
|
||||
#define BURNING_ITEM_MINIMUM_TEMPERATURE (150+T0C)
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
//We will round to this value in damage calculations.
|
||||
#define DAMAGE_PRECISION 0.1
|
||||
|
||||
//Damage flag defines //
|
||||
|
||||
/// Involves corrosive substances.
|
||||
#define ACID "acid"
|
||||
/// Involved in checking whether a disease can infect or spread. Also involved in xeno neurotoxin.
|
||||
#define BIO "bio"
|
||||
/// Involves a shockwave, usually from an explosion.
|
||||
#define BOMB "bomb"
|
||||
/// Involves a solid projectile.
|
||||
#define BULLET "bullet"
|
||||
/// Involves being eaten
|
||||
#define CONSUME "consume"
|
||||
/// Involves an EMP or energy-based projectile.
|
||||
#define ENERGY "energy"
|
||||
/// Involves fire or temperature extremes.
|
||||
#define FIRE "fire"
|
||||
/// Involves a laser.
|
||||
#define LASER "laser"
|
||||
/// Involves a melee attack or a thrown object.
|
||||
#define MELEE "melee"
|
||||
/// Involved in checking the likelihood of applying a wound to a mob.
|
||||
#define WOUND "wound"
|
||||
|
||||
/// Calculates the new armour value after armour penetration. Can return negative values, and those must be caught.
|
||||
#define PENETRATE_ARMOUR(armour, penetration) (penetration >= 100 ? 0 : 100 * (armour - penetration) / (100 - penetration))
|
||||
@@ -11,7 +11,7 @@
|
||||
#define FAT 6
|
||||
#define HUSK 7
|
||||
#define NOCLONE 8
|
||||
#define LASER 9 // Harm intent - click anywhere to shoot lasers from eyes.
|
||||
#define LASER_EYES 9 // Harm intent - click anywhere to shoot lasers from eyes.
|
||||
#define HEAL 10 // Healing people with hands.
|
||||
#define FLASHPROOF 11 // Flashproof eyes.
|
||||
|
||||
|
||||
@@ -50,6 +50,13 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define INFINITE_AIR (1<<6) // Provides an infinite air supply.
|
||||
#define NOSTRIP (1<<7) // Items that should never get stripped
|
||||
#define DROPDEL (1<<8) // Items that delete upon being dropped
|
||||
/**
|
||||
* for all things that are technically items but don't want to be treated as such, given on a case-by-case basis
|
||||
* examples of use are hand items, omni-toolsets, non-limb limbs (hand eater, mounted chainsaw, many null rods), borg modules, bodyparts, organs, etc.
|
||||
* This is used for general exclusion, such as preventing insertions into other items
|
||||
* Basically, these aren't "real" items. <= wow thanks for the fucking insight sherlock
|
||||
*/
|
||||
#define ABSTRACT (1<<9)
|
||||
|
||||
// Flags for pass_flags. - Used in /atom/var/pass_flags
|
||||
#define PASSTABLE (1<<0)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#define MECHA_PROC_DAMAGE 2
|
||||
#define MECHA_PROC_INT_TEMP 4
|
||||
|
||||
#define MELEE 1
|
||||
#define MECH_MELEE 1
|
||||
#define RANGED 2
|
||||
|
||||
#define MECH_FACTION_NT "nano"
|
||||
|
||||
@@ -1,3 +1,35 @@
|
||||
// Flags for the obj_flags var on /obj
|
||||
/// Object has been affected by a cryptographic sequencer (EMAG) disabling it or causing other malicious effects
|
||||
#define EMAGGED (1<<0)
|
||||
/// Can this be bludgeoned by items
|
||||
#define CAN_BE_HIT (1<<1)
|
||||
/// Admin possession yes/no
|
||||
#define DANGEROUS_POSSESSION (1<<2)
|
||||
/// Can you customize the description/name of the thing
|
||||
#define UNIQUE_RENAME (1<<3)
|
||||
/// If it can be renamed, is its description excluded
|
||||
#define RENAME_NO_DESC (1<<4)
|
||||
/// Should this object block z falling from loc
|
||||
#define BLOCK_Z_OUT_DOWN (1<<5)
|
||||
/// Should this object block z uprise from loc
|
||||
#define BLOCK_Z_OUT_UP (1<<6)
|
||||
/// Should this object block z falling from above
|
||||
#define BLOCK_Z_IN_DOWN (1<<7)
|
||||
/// Should this object block z uprise from below
|
||||
#define BLOCK_Z_IN_UP (1<<8)
|
||||
/// Does this object prevent things from being built on it
|
||||
#define BLOCKS_CONSTRUCTION (1<<9)
|
||||
/// Does this object prevent same-direction things from being built on it
|
||||
#define BLOCKS_CONSTRUCTION_DIR (1<<10)
|
||||
/// Can we ignore density when building on this object (for example, directional windows and grilles)
|
||||
#define IGNORE_DENSITY (1<<11)
|
||||
/// Can this object conduct electricity
|
||||
#define CONDUCTS_ELECTRICITY (1<<12)
|
||||
/// Atoms don't spawn anything when deconstructed (they just vanish)
|
||||
#define NO_DEBRIS_AFTER_DECONSTRUCTION (1<<13)
|
||||
/// Flag which tells an object to hang onto an support atom on late initialize. Usefull only during mapload and supported by some atoms only
|
||||
#define MOUNT_ON_LATE_INITIALIZE (1<<14)
|
||||
|
||||
/// Flags for specifically what kind of items to get in get_equipped_items
|
||||
#define INCLUDE_POCKETS (1<<0)
|
||||
#define INCLUDE_ACCESSORIES (1<<1)
|
||||
|
||||
@@ -163,6 +163,8 @@
|
||||
#define span_lightpurple(str) ("<span class='lightpurple'>" + str + "</span>")
|
||||
#define span_darkpink(str) ("<span class='darkpink'>" + str + "</span>")
|
||||
#define span_rose(str) ("<span class='rose'>" + str + "</span>")
|
||||
#define span_hypnophrase(str) ("<span class='hypnophrase'>" + str + "</span>")
|
||||
|
||||
|
||||
/* System and Debug */
|
||||
// System filter
|
||||
|
||||
@@ -131,6 +131,7 @@
|
||||
#define FIRE_PRIORITY_CHARSETUP 25
|
||||
#define FIRE_PRIORITY_AIRFLOW 30
|
||||
#define FIRE_PRIORITY_AIR 35
|
||||
#define FIRE_PRIORITY_BURNING 40
|
||||
#define FIRE_PRIORITY_OBJ 40
|
||||
#define FIRE_PRIORITY_PROCESS 45
|
||||
#define FIRE_PRIORITY_THROWING 45
|
||||
|
||||
@@ -57,6 +57,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
|
||||
#define TRAIT_ELECTROVORE_OBLIGATE "electrovore_obligate"
|
||||
// adds wet stacks when licking someone
|
||||
#define TRAIT_SLOBBER "slobber"
|
||||
/// Trait from being under the floor in some manner
|
||||
#define TRAIT_UNDERFLOOR "underfloor"
|
||||
#define TRAIT_RESISTHEAT "resist_heat"
|
||||
/// For when you want to be able to touch hot things, but still want fire to be an issue.
|
||||
#define TRAIT_RESISTHEATHANDS "resist_heat_handsonly"
|
||||
// Owner will be considered a tiny mob for some interactions, such as airlocks not opening unless they have a client, or being vacuumed up by the vacpack
|
||||
#define TRAIT_AMBIENT_PEST_MOB "ambient_pest_mob"
|
||||
///Trait given by /datum/component/germ_sensitive
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
*/
|
||||
/mob/proc/RangedAttack(var/atom/A, var/params)
|
||||
if(!mutations.len) return
|
||||
if((LASER in mutations) && a_intent == I_HURT)
|
||||
if((LASER_EYES in mutations) && a_intent == I_HURT)
|
||||
LaserEyes(A) // moved into a proc below
|
||||
else if(has_telegrip())
|
||||
if(get_dist(src, A) > TK_MAXRANGE)
|
||||
|
||||
@@ -2,9 +2,6 @@
|
||||
/atom/proc/attack_generic(mob/user as mob)
|
||||
return 0
|
||||
|
||||
/atom/proc/take_damage(var/damage)
|
||||
return 0
|
||||
|
||||
/*
|
||||
Humans:
|
||||
Adds an exception for gloves, to allow special glove types like the ninja ones.
|
||||
@@ -47,7 +44,7 @@
|
||||
if(!gloves && !mutations.len && !spitting)
|
||||
return
|
||||
var/obj/item/clothing/gloves/G = gloves
|
||||
if((LASER in mutations) && a_intent == I_HURT)
|
||||
if((LASER_EYES in mutations) && a_intent == I_HURT)
|
||||
LaserEyes(A) // moved into a proc below
|
||||
|
||||
else if(istype(G) && G.Touch(A,0)) // for magic gloves
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/// The subsystem used to tick [/datum/component/burning] instances.
|
||||
PROCESSING_SUBSYSTEM_DEF(burning)
|
||||
name = "Burning"
|
||||
priority = FIRE_PRIORITY_BURNING
|
||||
flags = SS_NO_INIT|SS_BACKGROUND
|
||||
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
|
||||
@@ -0,0 +1,115 @@
|
||||
GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/effects/fire.dmi', "fire", appearance_flags = RESET_COLOR|KEEP_APART))
|
||||
|
||||
/**
|
||||
* Component representing an atom being on fire.
|
||||
* Should not be used on mobs, they use the fire stacks status effects.
|
||||
* Can only be used on atoms that use the integrity system.
|
||||
*/
|
||||
/datum/component/burning
|
||||
/// Fire overlay appearance we apply
|
||||
var/fire_overlay
|
||||
/// 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))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
var/atom/atom_parent = parent
|
||||
if(!atom_parent.uses_integrity)
|
||||
stack_trace("Tried to add /datum/component/burning to an atom ([atom_parent.type]) that does not use atom_integrity!")
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
|
||||
// only flammable atoms should have this component, but it's not really an error if we try to apply this to a non flammable one
|
||||
if(!(atom_parent.resistance_flags & FLAMMABLE) || (atom_parent.resistance_flags & FIRE_PROOF))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
src.fire_overlay = fire_overlay
|
||||
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()
|
||||
RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand))
|
||||
RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_update_overlays))
|
||||
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine))
|
||||
RegisterSignal(parent, COMSIG_ATOM_EXTINGUISH, PROC_REF(on_extinguish))
|
||||
var/atom/atom_parent = parent
|
||||
atom_parent.resistance_flags |= ON_FIRE
|
||||
atom_parent.update_icon()
|
||||
|
||||
/datum/component/burning/UnregisterFromParent()
|
||||
UnregisterSignal(parent, list(
|
||||
COMSIG_ATOM_ATTACK_HAND,
|
||||
COMSIG_ATOM_UPDATE_OVERLAYS,
|
||||
COMSIG_ATOM_EXAMINE,
|
||||
COMSIG_ATOM_EXTINGUISH,
|
||||
))
|
||||
var/atom/atom_parent = parent
|
||||
if(!QDELETED(atom_parent))
|
||||
atom_parent.resistance_flags &= ~ON_FIRE
|
||||
atom_parent.update_icon()
|
||||
|
||||
/datum/component/burning/process(seconds_per_tick)
|
||||
var/atom/atom_parent = parent
|
||||
// Check if the parent somehow became fireproof, remove component if so
|
||||
if(atom_parent.resistance_flags & FIRE_PROOF)
|
||||
atom_parent.extinguish()
|
||||
return
|
||||
atom_parent.take_damage(10 * seconds_per_tick, BURN, FIRE, FALSE)
|
||||
|
||||
/// Alerts any examiners that the parent is on fire (even though it should be rather obvious)
|
||||
/datum/component/burning/proc/on_examine(atom/source, mob/user, list/examine_list)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
examine_list += span_danger("[source.p_Theyre()] burning!")
|
||||
|
||||
/// Handles searing the hand of anyone who tries to touch parent without protection.
|
||||
/datum/component/burning/proc/on_attack_hand(atom/source, mob/living/carbon/user)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(!iscarbon(user) || user.can_touch_burning(source))
|
||||
to_chat(user, span_notice("You put out the fire on [source]."))
|
||||
source.extinguish()
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
|
||||
user.apply_damage(5, BURN, user.get_active_hand())
|
||||
to_chat(user, span_userdanger("You burn your hand on [source]!"))
|
||||
user.emote("scream")
|
||||
playsound(source, 'sound/items/weapons/sear.ogg', 50, TRUE)
|
||||
return COMPONENT_CANCEL_ATTACK_CHAIN
|
||||
|
||||
/// Maintains the burning overlay on the parent atom
|
||||
/datum/component/burning/proc/on_update_overlays(atom/source, list/overlays)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
//most likely means the component is being removed
|
||||
if(!(source.resistance_flags & ON_FIRE))
|
||||
return
|
||||
|
||||
if(fire_overlay)
|
||||
overlays += fire_overlay
|
||||
|
||||
/// Deletes the component when the atom gets extinguished
|
||||
/datum/component/burning/proc/on_extinguish(atom/source, list/overlays)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
qdel(src)
|
||||
@@ -73,6 +73,7 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throw_speed = 4
|
||||
throw_range = 5
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/disk
|
||||
name = "disk"
|
||||
@@ -86,6 +87,7 @@
|
||||
icon_state = "nucleardisk"
|
||||
item_state = "card-id"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF
|
||||
|
||||
/*
|
||||
/obj/item/game_kit
|
||||
@@ -109,6 +111,7 @@
|
||||
var/obj/item/gift = null
|
||||
item_state = "gift"
|
||||
w_class = ITEMSIZE_LARGE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/*/obj/item/syndicate_uplink
|
||||
name = "station bounced radio"
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
/atom
|
||||
///any atom that uses integrity and can be damaged must set this to true, otherwise the integrity procs will throw an error
|
||||
var/uses_integrity = FALSE
|
||||
|
||||
VAR_PRIVATE/atom_integrity //defaults to max_integrity
|
||||
var/max_integrity = 500
|
||||
var/integrity_failure = 0 //0 if we have no special broken behavior, otherwise is a percentage of at what point the atom breaks. 0.5 being 50%
|
||||
///Damage under this value will be completely ignored
|
||||
var/damage_deflection = 0
|
||||
|
||||
var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF
|
||||
|
||||
/// The essential proc to call when an atom must receive damage of any kind.
|
||||
/atom/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration = 0)
|
||||
if(!uses_integrity)
|
||||
CRASH("[src] had /atom/proc/take_damage() called on it without it being a type that has uses_integrity = TRUE!")
|
||||
if(QDELETED(src))
|
||||
CRASH("[src] taking damage after deletion")
|
||||
if(atom_integrity <= 0)
|
||||
CRASH("[src] taking damage while having <= 0 integrity")
|
||||
if(sound_effect)
|
||||
play_attack_sound(damage_amount, damage_type, damage_flag)
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
return
|
||||
damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration)
|
||||
if(damage_amount < DAMAGE_PRECISION)
|
||||
return
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_TAKE_DAMAGE, damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration) & COMPONENT_NO_TAKE_DAMAGE)
|
||||
return
|
||||
|
||||
. = damage_amount
|
||||
|
||||
var/previous_atom_integrity = atom_integrity
|
||||
|
||||
update_integrity(atom_integrity - damage_amount)
|
||||
|
||||
var/integrity_failure_amount = integrity_failure * max_integrity
|
||||
|
||||
//BREAKING FIRST
|
||||
if(integrity_failure && previous_atom_integrity > integrity_failure_amount && atom_integrity <= integrity_failure_amount)
|
||||
atom_break(damage_flag)
|
||||
|
||||
//DESTROYING SECOND
|
||||
if(atom_integrity <= 0 && previous_atom_integrity > 0)
|
||||
atom_destruction(damage_flag)
|
||||
|
||||
///the sound played when the atom is damaged.
|
||||
/atom/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
switch(damage_type)
|
||||
if(BRUTE)
|
||||
if(damage_amount)
|
||||
playsound(src, 'sound/items/weapons/smash.ogg', 50, TRUE)
|
||||
else
|
||||
playsound(src, 'sound/items/weapons/tap.ogg', 50, TRUE)
|
||||
if(BURN)
|
||||
playsound(src.loc, 'sound/items/tools/welder.ogg', 100, TRUE)
|
||||
|
||||
/// Handles the integrity of an atom changing. This must be called instead of changing integrity directly.
|
||||
/atom/proc/update_integrity(new_value)
|
||||
SHOULD_NOT_OVERRIDE(TRUE)
|
||||
if(!uses_integrity)
|
||||
CRASH("/atom/proc/update_integrity() was called on [src] when it doesn't use integrity!")
|
||||
var/old_value = atom_integrity
|
||||
new_value = max(0, new_value)
|
||||
if(atom_integrity == new_value)
|
||||
return
|
||||
atom_integrity = new_value
|
||||
on_update_integrity(old_value, new_value)
|
||||
return new_value
|
||||
|
||||
/// Handle updates to your atom's integrity
|
||||
/atom/proc/on_update_integrity(old_value, new_value)
|
||||
SHOULD_NOT_SLEEP(TRUE)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_INTEGRITY_CHANGED, old_value, new_value)
|
||||
|
||||
/// Called after the atom takes damage and integrity is below integrity_failure level
|
||||
/atom/proc/atom_break(damage_flag)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_BREAK, damage_flag)
|
||||
|
||||
/// Called when integrity is repaired above the breaking point having been broken before
|
||||
/atom/proc/atom_fix()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_FIX)
|
||||
|
||||
///what happens when the atom's integrity reaches zero.
|
||||
/atom/proc/atom_destruction(damage_flag)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_DESTRUCTION, damage_flag)
|
||||
|
||||
///returns the damage value of the attack after processing the atom's various armor protections
|
||||
///Damage_flag can be any of the following: "melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0
|
||||
///MELEE, BULLET, LASER, ENERGY, BOMB, BIO, and "rad"
|
||||
/atom/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0)
|
||||
if(!uses_integrity)
|
||||
CRASH("/atom/proc/run_atom_armor was called on [src] without being implemented as a type that uses integrity!")
|
||||
if(damage_flag == MELEE && damage_amount < damage_deflection)
|
||||
return 0
|
||||
if(damage_type != BRUTE && damage_type != BURN)
|
||||
return 0
|
||||
var/armor_protection = 0
|
||||
if(isitem(src)) //Only items have armor until we get armor datums.
|
||||
var/obj/item/item_to_check = src
|
||||
if(damage_flag)
|
||||
armor_protection = item_to_check.armor[damage_flag]
|
||||
if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor.
|
||||
armor_protection = clamp(PENETRATE_ARMOUR(armor_protection, armour_penetration), min(armor_protection, 0), 100)
|
||||
return round(damage_amount * (100 - armor_protection) * 0.01, DAMAGE_PRECISION)
|
||||
@@ -130,6 +130,9 @@
|
||||
if(color)
|
||||
add_atom_colour(color, FIXED_COLOUR_PRIORITY)
|
||||
|
||||
if(uses_integrity)
|
||||
atom_integrity = max_integrity
|
||||
|
||||
/*
|
||||
if (light_system == COMPLEX_LIGHT && light_power && light_range)
|
||||
update_light()
|
||||
|
||||
@@ -109,6 +109,9 @@
|
||||
new /obj/structure/simple_door/wood(loc)
|
||||
..()
|
||||
|
||||
/obj/structure/simple_door/wood
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/structure/simple_door/wood/cultify()
|
||||
return
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
var/static/list/cutout_types
|
||||
var/static/list/painters = list(/obj/item/reagent_containers/glass/paint, /obj/item/floor_painter)//, /obj/item/closet_painter)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/structure/barricade/cutout/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -473,7 +473,7 @@ Class Procs:
|
||||
A.update_desc()
|
||||
A.update_icon()
|
||||
M.loc = null
|
||||
M.deconstruct(src)
|
||||
M.atom_deconstruct(TRUE, src)
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if("Power")
|
||||
to_chat(user, span_boldwarning("Your wish is granted, but at a terrible cost..."))
|
||||
to_chat(user, span_warning("The Wish Granter punishes you for your selfishness, claiming your soul."))
|
||||
if (!(LASER in user.mutations))
|
||||
if (!(LASER_EYES in user.mutations))
|
||||
user.mutations.Add(LASER)
|
||||
to_chat(user, span_notice("You feel pressure building behind your eyes."))
|
||||
if (!(COLD_RESISTANCE in user.mutations))
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
var/integrity
|
||||
var/integrity_danger_mod = 0.5 // Multiplier for comparison to max_integrity before problems start.
|
||||
var/max_integrity = 100
|
||||
max_integrity = 100
|
||||
|
||||
var/step_delay = 0
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/equip_ready = TRUE
|
||||
var/energy_drain = 0
|
||||
var/obj/mecha/chassis = null
|
||||
var/range = MELEE //bitflags
|
||||
var/range = MECH_MELEE //bitflags
|
||||
/// Bitflag. Used by exosuit fabricator to assign sub-categories based on which exosuits can equip this.
|
||||
var/mech_flags = NONE
|
||||
var/salvageable = TRUE
|
||||
@@ -117,7 +117,7 @@
|
||||
return range&RANGED
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/is_melee()
|
||||
return range&MELEE
|
||||
return range&MECH_MELEE
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/proc/enable_special_checks(atom/target)
|
||||
if(ispath(required_type))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
origin_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3)
|
||||
equip_cooldown = 10
|
||||
energy_drain = 100
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
var/atom/movable/locked
|
||||
var/mode = 1 //1 - gravsling 2 - gravpush
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "mecha_exting"
|
||||
equip_cooldown = 5
|
||||
energy_drain = 0
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
required_type = list(/obj/mecha/working)
|
||||
var/spray_particles = 5
|
||||
var/spray_amount = 5 //units of liquid per particle. 5 is enough to wet the floor - it's a big fire extinguisher, so should be fine
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
origin_tech = list(TECH_PHORON = 2, TECH_POWER = 2, TECH_ENGINEERING = 1)
|
||||
equip_cooldown = 10
|
||||
energy_drain = 0
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
var/coeff = 100
|
||||
var/obj/item/stack/material/fuel
|
||||
var/fuel_type = /obj/item/stack/material/phoron
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3)
|
||||
equip_cooldown = 3
|
||||
energy_drain = 30
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
equip_type = EQUIP_UTILITY
|
||||
ready_sound = 'sound/effects/spray.ogg'
|
||||
required_type = list(/obj/mecha/working/ripley)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2, TECH_POWER = 2)
|
||||
equip_cooldown = 5
|
||||
energy_drain = 30
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
equip_type = EQUIP_SPECIAL
|
||||
ready_sound = 'sound/items/goggles_charge.ogg'
|
||||
required_type = list(/obj/mecha/working/ripley)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "mecha_passenger"
|
||||
origin_tech = list(TECH_ENGINEERING = 1, TECH_BIO = 1)
|
||||
energy_drain = 10
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
equip_cooldown = 20
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/door_locked = 1
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2, TECH_POWER = 2)
|
||||
equip_cooldown = 3
|
||||
energy_drain = 15
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
equip_type = EQUIP_UTILITY
|
||||
ready_sound = 'sound/items/Ratchet.ogg'
|
||||
required_type = list(/obj/mecha/working/ripley)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4)
|
||||
equip_cooldown = 10
|
||||
energy_drain = 250
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
equip_type = EQUIP_SPECIAL
|
||||
var/obj/item/rcd/electric/mounted/mecha/my_rcd = null
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "sleeper_0"
|
||||
origin_tech = list(TECH_DATA = 2, TECH_BIO = 3)
|
||||
energy_drain = 20
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
equip_cooldown = 30
|
||||
mech_flags = EXOSUIT_MODULE_MEDICAL
|
||||
var/mob/living/carbon/human/occupant = null
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
energy_drain = 10
|
||||
var/mode = 0 //0 - fire syringe, 1 - analyze reagents.
|
||||
var/datum/global_iterator/mech_synth/synth
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
equip_cooldown = 10
|
||||
origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_MAGNET = 4, TECH_DATA = 3)
|
||||
required_type = list(/obj/mecha/medical)
|
||||
@@ -280,7 +280,7 @@
|
||||
desc = "A small shoulder-mounted dronebay containing a rapid response drone capable of moderately stabilizing a patient near the exosuit."
|
||||
icon_state = "mecha_dronebay"
|
||||
origin_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_BIO = 5, TECH_DATA = 4)
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
equip_cooldown = 3 SECONDS
|
||||
required_type = list(/obj/mecha/medical)
|
||||
|
||||
@@ -496,7 +496,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 5, TECH_BIO = 5)
|
||||
equip_cooldown = 5 SECONDS
|
||||
energy_drain = 100
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
equip_type = EQUIP_UTILITY
|
||||
ready_sound = 'sound/weapons/flash.ogg'
|
||||
required_type = list(/obj/mecha/medical)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 4, TECH_PHORON = 2)
|
||||
equip_cooldown = 3
|
||||
energy_drain = 15
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
equip_type = EQUIP_UTILITY
|
||||
ready_sound = 'sound/items/Ratchet.ogg'
|
||||
required_type = list(/obj/mecha/working/ripley)
|
||||
@@ -27,8 +27,8 @@
|
||||
..()
|
||||
|
||||
if(enable_special)
|
||||
range = MELEE|RANGED
|
||||
range = MECH_MELEE|RANGED
|
||||
my_tool.reach = 7
|
||||
else
|
||||
range = MELEE
|
||||
range = MECH_MELEE
|
||||
my_tool.reach = 1
|
||||
|
||||
@@ -6,6 +6,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
*/
|
||||
/obj/effect
|
||||
light_on = TRUE
|
||||
uses_integrity = FALSE
|
||||
|
||||
/obj/effect/effect
|
||||
name = "effect"
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
A.anchored = TRUE
|
||||
A.state = 2
|
||||
A.update_icon()
|
||||
M.deconstruct(src)
|
||||
M.atom_deconstruct(TRUE, src)
|
||||
qdel(src)
|
||||
else
|
||||
src.attack_hand(user)
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
drop_sound = 'sound/items/drop/herb.ogg'
|
||||
pickup_sound = 'sound/items/pickup/herb.ogg'
|
||||
craftable = TRUE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Wood
|
||||
@@ -102,6 +103,7 @@
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/wooden.ogg'
|
||||
pickup_sound = 'sound/items/pickup/wooden.ogg'
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/stack/tile/wood/alt
|
||||
name = "wood floor tile"
|
||||
@@ -396,6 +398,7 @@
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/cloth.ogg'
|
||||
pickup_sound = 'sound/items/pickup/cloth.ogg'
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/stack/tile/carpet/teal
|
||||
desc = "A piece of teal carpet. It is the same size as a normal floor tile!"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
//Called when a computer is deconstructed to produce a circuitboard.
|
||||
//Only used by computers, as other machines store their circuitboard instance.
|
||||
/obj/item/circuitboard/proc/deconstruct(var/obj/machinery/M)
|
||||
/obj/item/circuitboard/atom_deconstruct(disassembled = TRUE, var/obj/machinery/M)
|
||||
if(istype(M, build_path))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -25,6 +25,6 @@
|
||||
if (..(C))
|
||||
C.frequency = frequency
|
||||
|
||||
/obj/item/circuitboard/air_management/deconstruct(var/obj/machinery/computer/general_air_control/C)
|
||||
/obj/item/circuitboard/air_management/atom_deconstruct(disassembled = TRUE, var/obj/machinery/computer/general_air_control/C)
|
||||
if (..(C))
|
||||
frequency = C.frequency
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
if (..(C))
|
||||
C.set_network(network.Copy())
|
||||
|
||||
/obj/item/circuitboard/security/deconstruct(var/obj/machinery/computer/security/C)
|
||||
/obj/item/circuitboard/security/atom_deconstruct(disassembled = TRUE, var/obj/machinery/computer/security/C)
|
||||
if (..(C))
|
||||
network = C.network.Copy()
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/shuttle_tag = null // If set, link constructed console to this shuttle. If null, auto-detect.
|
||||
hidden = TRUE // todo - Make properly constructable in round
|
||||
|
||||
/obj/item/circuitboard/shuttle_console/deconstruct(obj/machinery/computer/shuttle_control/M)
|
||||
/obj/item/circuitboard/shuttle_console/atom_deconstruct(disassembled = TRUE, obj/machinery/computer/shuttle_control/M)
|
||||
shuttle_tag = M.shuttle_tag
|
||||
if(shuttle_tag)
|
||||
name = T_BOARD("[shuttle_tag] control console")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
if (..(SC))
|
||||
SC.can_order_contraband = contraband_enabled
|
||||
|
||||
/obj/item/circuitboard/supplycomp/deconstruct(var/obj/machinery/computer/supplycomp/SC)
|
||||
/obj/item/circuitboard/supplycomp/atom_deconstruct(disassembled = TRUE, var/obj/machinery/computer/supplycomp/SC)
|
||||
if (..(SC))
|
||||
contraband_enabled = SC.can_order_contraband
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
|
||||
///Var used for attack_hand chain.
|
||||
var/special_handling = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/a_gift/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
max_storage_space = ITEMSIZE_SMALL * 21
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/disk/nuclear)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/trash/update_icon()
|
||||
if(contents.len == 0)
|
||||
@@ -68,6 +69,7 @@
|
||||
origin_tech = list(TECH_BLUESPACE = 3)
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 10 // Slightly less than BoH
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/storage/bag/trash/holding/update_icon()
|
||||
return
|
||||
@@ -87,6 +89,7 @@
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/disk/nuclear)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Plant bag
|
||||
@@ -100,6 +103,7 @@
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/storage/bag/plants/large
|
||||
name = "large plant bag"
|
||||
@@ -124,6 +128,7 @@
|
||||
storage_slots = 7
|
||||
|
||||
allow_quick_empty = 1 // this function is superceded
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0)
|
||||
if(!istype(W,/obj/item/stack/material))
|
||||
@@ -281,6 +286,7 @@
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/coin,/obj/item/spacecash,/obj/item/spacecasinocash)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Chemistry Bag
|
||||
@@ -294,6 +300,7 @@
|
||||
w_class = ITEMSIZE_LARGE
|
||||
slowdown = 1 //you probably shouldn't be running with chemicals
|
||||
can_hold = list(/obj/item/reagent_containers/pill,/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/hypospray/autoinjector)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Xeno Bag
|
||||
@@ -307,6 +314,7 @@
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/slime_extract,/obj/item/slimepotion, /obj/item/reagent_containers/food/snacks/monkeycube)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Virology Bag
|
||||
@@ -319,7 +327,8 @@
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 12
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/reagent_containers/glass/beaker/vial/)
|
||||
can_hold = list(/obj/item/reagent_containers/glass/beaker/vial)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Food Bag
|
||||
@@ -333,6 +342,7 @@
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks,/obj/item/reagent_containers/food/condiment)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Food Bag (Service Hound)
|
||||
@@ -348,6 +358,7 @@
|
||||
can_hold = list(/obj/item/reagent_containers/food/snacks,/obj/item/reagent_containers/food/condiment,
|
||||
/obj/item/reagent_containers/glass/beaker,/obj/item/reagent_containers/glass/bottle,/obj/item/coin,/obj/item/spacecash,
|
||||
/obj/item/reagent_containers/food/snacks/grown,/obj/item/seeds,/obj/item/grown,/obj/item/reagent_containers/pill)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
// -----------------------------
|
||||
// Evidence Bag
|
||||
@@ -361,6 +372,7 @@
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/forensics/swab,/obj/item/sample/print,/obj/item/sample/fibers,/obj/item/evidencebag)
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// -----------------------------
|
||||
// Santa bag
|
||||
@@ -377,6 +389,7 @@
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 100 // can store a ton of shit!
|
||||
can_hold = list() // any
|
||||
cant_hold = list(/obj/item/disk/nuclear)
|
||||
resistance_flags = FIRE_PROOF //ho ho ho
|
||||
|
||||
/obj/item/storage/bag/santabag/update_icon()
|
||||
if(contents.len < 10)
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
use_sound = 'sound/items/storage/box.ogg'
|
||||
drop_sound = 'sound/items/drop/cardboardbox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/cardboardbox.ogg'
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
// BubbleWrap - A box can be folded up to make card
|
||||
/obj/item/storage/box/attack_self(mob/user)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
/obj/item/storage/internal
|
||||
preserve_item = 1
|
||||
var/obj/item/master_item
|
||||
item_flags = ABSTRACT
|
||||
|
||||
/obj/item/storage/internal/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
allow_quick_gather = 1
|
||||
collection_mode = 1
|
||||
var/linked
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
|
||||
/obj/item/storage/laundry_basket/attack_hand(mob/living/user as mob)
|
||||
|
||||
@@ -43,19 +43,21 @@
|
||||
var/last_update = 0
|
||||
drop_sound = 'sound/items/drop/backpack.ogg'
|
||||
pickup_sound = 'sound/items/pickup/backpack.ogg'
|
||||
item_flags = FLAMMABLE
|
||||
|
||||
/obj/item/ore_bag/holding
|
||||
name = "mining satchel of holding"
|
||||
desc = "Like a mining satchel, but when you put your hand in, you're pretty sure you can feel time itself."
|
||||
icon_state = "satchel_bspace"
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 15000 // This should never, ever, ever be reached.
|
||||
item_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/ore_bag/sleeper
|
||||
name = "processing chamber"
|
||||
desc = "A mining satchel built into a sleeper. VORE!!!"
|
||||
icon_state = "satchel_bspace"
|
||||
max_storage_space = 500
|
||||
//item_flags = ABSTRACT //Enable once we have abstract PR merged.
|
||||
item_flags = INDESTRUCTIBLE | ABSTRACT
|
||||
|
||||
/obj/item/ore_bag/attackby(obj/item/W, mob/user)
|
||||
if(current_capacity >= max_storage_space)
|
||||
|
||||
@@ -596,6 +596,7 @@ GLOBAL_LIST_EMPTY(tank_gauge_cache)
|
||||
desc = "Used as a stand in to trigger single tank assemblies... but you shouldn't see this."
|
||||
var/obj/item/tank/tank = null
|
||||
var/obj/item/assembly_holder/assembly = null
|
||||
item_flags = ABSTRACT
|
||||
|
||||
|
||||
/obj/item/tankassemblyproxy/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here.
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
|
||||
///Var for attack_self chainn
|
||||
var/special_handling = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/mail/container_resist(mob/living/M)
|
||||
if(istype(M, /mob/living/voice)) return
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
///Called when the obj is exposed to fire.
|
||||
/obj/fire_act(exposed_temperature, exposed_volume)
|
||||
if(HAS_TRAIT(src, TRAIT_UNDERFLOOR))
|
||||
return
|
||||
var/potential_damage = 0.02 * exposed_temperature
|
||||
if(exposed_temperature && !(resistance_flags & FIRE_PROOF) && (potential_damage > damage_deflection))
|
||||
take_damage(clamp(potential_damage, 0, 20), BURN, FIRE, 0)
|
||||
if(QDELETED(src)) // take_damage() can send our obj to an early grave, let's stop here if that happens
|
||||
return
|
||||
if(!(resistance_flags & ON_FIRE) && (resistance_flags & FLAMMABLE) && !(resistance_flags & FIRE_PROOF))
|
||||
AddComponent(/datum/component/burning, custom_fire_overlay() || GLOB.fire_overlay, burning_particles)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_FIRE_ACT, exposed_temperature, exposed_volume)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/// Returns a custom fire overlay, if any
|
||||
/obj/proc/custom_fire_overlay()
|
||||
return custom_fire_overlay
|
||||
|
||||
///called when the obj is destroyed by acid.
|
||||
/obj/proc/acid_melt()
|
||||
deconstruct(FALSE)
|
||||
|
||||
/// Should be called when the atom is destroyed by fire, comparable to acid_melt() proc
|
||||
/obj/proc/burn()
|
||||
deconstruct(FALSE)
|
||||
|
||||
/**
|
||||
* Custom behaviour per atom subtype on how they should deconstruct themselves
|
||||
* Arguments
|
||||
*
|
||||
* * disassembled - TRUE means we cleanly took this atom apart using tools. FALSE means this was destroyed in a violent way
|
||||
*/
|
||||
/obj/proc/atom_deconstruct(disassembled = TRUE)
|
||||
PROTECTED_PROC(TRUE)
|
||||
|
||||
return
|
||||
|
||||
/**
|
||||
* The interminate proc between deconstruct() & atom_deconstruct(). By default this delegates deconstruction to
|
||||
* atom_deconstruct if NO_DEBRIS_AFTER_DECONSTRUCTION is absent but subtypes can override this to handle NO_DEBRIS_AFTER_DECONSTRUCTION in their
|
||||
* own unique way. Override this if for example you want to dump out important content like mobs from the
|
||||
* atom before deconstruction regardless if NO_DEBRIS_AFTER_DECONSTRUCTION is present or not
|
||||
* Arguments
|
||||
*
|
||||
* * disassembled - TRUE means we cleanly took this atom apart using tools. FALSE means this was destroyed in a violent way
|
||||
*/
|
||||
/obj/proc/handle_deconstruct(disassembled = TRUE)
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
|
||||
if(!(obj_flags & NO_DEBRIS_AFTER_DECONSTRUCTION))
|
||||
atom_deconstruct(disassembled)
|
||||
|
||||
/obj/proc/deconstruct(disassembled = TRUE)
|
||||
SHOULD_NOT_OVERRIDE(TRUE)
|
||||
|
||||
//allow objects to deconstruct themselves
|
||||
handle_deconstruct(disassembled)
|
||||
|
||||
//inform objects we were deconstructed
|
||||
SEND_SIGNAL(src, COMSIG_OBJ_DECONSTRUCT, disassembled)
|
||||
|
||||
for(var/obj/item/item in contents)
|
||||
if(item.item_flags & ABSTRACT)
|
||||
continue
|
||||
item.forceMove(get_turf(src))
|
||||
|
||||
//delete our self
|
||||
qdel(src)
|
||||
|
||||
///what happens when the obj's integrity reaches zero.
|
||||
/obj/atom_destruction(damage_flag)
|
||||
. = ..()
|
||||
if(damage_flag == ACID)
|
||||
acid_melt()
|
||||
else if(damage_flag == FIRE)
|
||||
burn()
|
||||
else
|
||||
deconstruct(FALSE)
|
||||
@@ -18,6 +18,15 @@
|
||||
var/micro_target = FALSE
|
||||
var/explosion_resistance
|
||||
|
||||
/// Cached custom fire overlay
|
||||
var/custom_fire_overlay
|
||||
/// Particles this obj uses when burning, if any
|
||||
var/burning_particles
|
||||
|
||||
var/obj_flags = CAN_BE_HIT
|
||||
|
||||
uses_integrity = TRUE
|
||||
|
||||
/obj/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ LINEN BINS
|
||||
pickup_sound = 'sound/items/pickup/clothing.ogg'
|
||||
///var used for attack_self chain
|
||||
var/special_handling = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/bedsheet/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
var/datum/material/material
|
||||
var/set_temperature = T0C + 30 //K
|
||||
var/heating_power = 80000
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/structure/bonfire/Initialize(mapload, material_name)
|
||||
. = ..()
|
||||
@@ -170,7 +171,7 @@
|
||||
START_PROCESSING(SSobj, src)
|
||||
visible_message(span_warning("\The [src] starts burning!"))
|
||||
|
||||
/obj/structure/bonfire/proc/burn()
|
||||
/obj/structure/bonfire/proc/burn_bonfire()
|
||||
var/turf/current_location = get_turf(src)
|
||||
current_location.hotspot_expose(1000, 500)
|
||||
for(var/A in current_location)
|
||||
@@ -225,7 +226,7 @@
|
||||
extinguish()
|
||||
return
|
||||
if(!grill)
|
||||
burn()
|
||||
burn_bonfire()
|
||||
|
||||
if(burning)
|
||||
var/W = get_fuel_amount()
|
||||
@@ -279,6 +280,7 @@
|
||||
var/next_fuel_consumption = 0
|
||||
var/set_temperature = T0C + 20 //K
|
||||
var/heating_power = 40000
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/structure/fireplace/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/stack/material/wood) || istype(W, /obj/item/stack/material/log) )
|
||||
@@ -365,7 +367,7 @@
|
||||
START_PROCESSING(SSobj, src)
|
||||
visible_message(span_warning("\The [src] starts burning!"))
|
||||
|
||||
/obj/structure/fireplace/proc/burn()
|
||||
/obj/structure/fireplace/proc/burn_bonfire()
|
||||
var/turf/current_location = get_turf(src)
|
||||
current_location.hotspot_expose(1000, 500)
|
||||
for(var/A in current_location)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
if(Adjacent(user))
|
||||
attack_hand(user)
|
||||
|
||||
/obj/structure/catwalk/proc/deconstruct(mob/user)
|
||||
/obj/structure/catwalk/atom_deconstruct(disassembled = TRUE, mob/user)
|
||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||
to_chat(user, span_notice("Slicing \the [src] joints ..."))
|
||||
//Lattice would delete itself, but let's save ourselves a new obj
|
||||
@@ -97,7 +97,7 @@
|
||||
if(C.has_tool_quality(TOOL_WELDER))
|
||||
var/obj/item/weldingtool/WT = C.get_welder()
|
||||
if(WT.isOn() && WT.remove_fuel(0, user))
|
||||
deconstruct(user)
|
||||
atom_deconstruct(TRUE, user)
|
||||
return
|
||||
if(C.has_tool_quality(TOOL_CROWBAR) && plated_tile)
|
||||
hatch_open = !hatch_open
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/flapping
|
||||
var/obj_integrity = 100
|
||||
var/original_int = 100
|
||||
var/max_integrity = 100
|
||||
max_integrity = 100
|
||||
var/stored_examine
|
||||
var/identifier = "statue"
|
||||
var/material = "stone"
|
||||
|
||||
@@ -261,6 +261,7 @@
|
||||
applies_material_colour = 1
|
||||
var/sofa_material = MAT_CARPET
|
||||
var/corner_piece = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/structure/bed/chair/sofa/update_icon()
|
||||
if(applies_material_colour && sofa_material)
|
||||
|
||||
@@ -111,6 +111,9 @@
|
||||
if(Be)
|
||||
Be.multiz_turf_new(src, UP)
|
||||
|
||||
if(uses_integrity)
|
||||
atom_integrity = max_integrity
|
||||
|
||||
/turf/Destroy()
|
||||
if (!changing_turf)
|
||||
stack_trace("Improper turf qdel. Do not qdel turfs directly.")
|
||||
|
||||
@@ -11,7 +11,7 @@ GLOBAL_LIST_EMPTY(all_blobs)
|
||||
layer = MOB_LAYER + 0.1
|
||||
var/integrity = 0
|
||||
var/point_return = 0 //How many points the blob gets back when it removes a blob of that type. If less than 0, blob cannot be removed.
|
||||
var/max_integrity = 30
|
||||
max_integrity = 30
|
||||
var/health_regen = 2 //how much health this blob regens when pulsed
|
||||
var/pulse_timestamp = 0 //we got pulsed when?
|
||||
var/heal_timestamp = 0 //we got healed when?
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
siemens_coefficient = 0.9
|
||||
drop_sound = 'sound/items/drop/clothing.ogg'
|
||||
pickup_sound = 'sound/items/pickup/clothing.ogg'
|
||||
resistance_flags = FLAMMABLE
|
||||
var/list/species_restricted = null //Only these species can wear this kit.
|
||||
|
||||
var/list/accessories
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
name = DEVELOPER_WARNING_NAME
|
||||
desc = "An earring of some kind."
|
||||
icon = 'icons/inventory/ears/item.dmi'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/ears/earring/stud
|
||||
name = "pearl stud earrings"
|
||||
@@ -17,6 +18,7 @@
|
||||
/obj/item/clothing/ears/earring/stud/wood
|
||||
name = "wood stud earrings"
|
||||
color = "#824b28"
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/clothing/ears/earring/stud/iron
|
||||
name = "iron stud earrings"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
item_state_slots = list(slot_r_hand_str = "earmuffs", slot_l_hand_str = "earmuffs")
|
||||
slot_flags = SLOT_EARS | SLOT_TWOEARS
|
||||
ear_protection = 2
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/ears/earmuffs/headphones
|
||||
name = "headphones"
|
||||
@@ -48,6 +49,7 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
species_restricted = list(SPECIES_SKRELL)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/ears/skrell/chain
|
||||
name = "Gold headtail chains"
|
||||
|
||||
@@ -29,6 +29,7 @@ BLIND // can't see anything
|
||||
var/list/away_planes //Holder for disabled planes
|
||||
drop_sound = 'sound/items/drop/accessory.ogg'
|
||||
pickup_sound = 'sound/items/pickup/accessory.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
sprite_sheets = list(
|
||||
SPECIES_TESHARI = 'icons/inventory/eyes/mob_teshari.dmi',
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
drop_sound = 'sound/items/drop/metalshield.ogg'
|
||||
pickup_sound = 'sound/items/pickup/axe.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
permeability_coefficient = 0.05
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/orange
|
||||
name = "orange gloves"
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
glove_level = 3
|
||||
overgloves = 1
|
||||
punch_force = 5
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/mob_can_equip(mob/user, slot, disable_warning = FALSE)
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/swat
|
||||
desc = "These tactical gloves are somewhat fire and impact-resistant."
|
||||
@@ -30,6 +31,7 @@
|
||||
permeability_coefficient = 0.05
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/combat //Combined effect of SWAT gloves and insulated gloves
|
||||
desc = "These tactical gloves are somewhat fire and impact resistant."
|
||||
@@ -40,6 +42,7 @@
|
||||
permeability_coefficient = 0.05
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/sterile
|
||||
name = "sterile gloves"
|
||||
@@ -112,6 +115,7 @@
|
||||
|
||||
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
|
||||
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/gloves/ranger
|
||||
var/glovecolor = "white"
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
desc = "A Collectable Welding Helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this Helmet is done so at the owner's own risk!"
|
||||
icon_state = "welding"
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
name = "collectable slime hat"
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
ear_protection = 1
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
pickup_sound = 'sound/items/pickup/helm.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/hardhat/orange
|
||||
icon_state = "hardhat0_orange"
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
ear_protection = 1
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
pickup_sound = 'sound/items/pickup/helm.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/helmet/solgov
|
||||
name = "\improper Solar Confederate Government helmet"
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
drop_sound = 'sound/items/drop/helm.ogg'
|
||||
pickup_sound = 'sound/items/pickup/helm.ogg'
|
||||
special_handling = TRUE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/welding/attack_self(mob/user)
|
||||
. = ..(user)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/list/images
|
||||
var/list/raw_images
|
||||
var/last_status
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/pilot/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
actions_types = list(/datum/action/item_action/toggle_visor)
|
||||
special_handling = TRUE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/head/pilot_vr/attack_self(mob/user)
|
||||
. = ..(user)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
pickup_sound = 'sound/items/pickup/component.ogg'
|
||||
drop_sound = 'sound/items/drop/component.ogg'
|
||||
special_handling = TRUE
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
/obj/item/clothing/mask/breath/proc/adjust_mask(mob/user)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
var/list/filtered_gases = list(GAS_PHORON, GAS_N2O)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0)
|
||||
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air)
|
||||
var/datum/gas_mixture/gas_filtered = new
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
icon_state = "monitor"
|
||||
|
||||
var/monitor_state_index = "blank"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
/obj/item/clothing/mask/monitor/set_dir()
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
var/lstat
|
||||
var/visor_state = "Neutral" //Separating this from lstat so that it could potentially be used for an override system or something
|
||||
var/mob/living/carbon/maskmaster
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE | BOMB_PROOF |FREEZE_PROOF
|
||||
|
||||
/obj/item/clothing/mask/synthfacemask/equipped()
|
||||
..()
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||
snow_speed = -1
|
||||
step_volume_mod = 0.8
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/boots/winter/security
|
||||
name = "security winter boots"
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
can_hold_knife = TRUE
|
||||
drop_sound = 'sound/items/drop/boots.ogg'
|
||||
pickup_sound = 'sound/items/pickup/boots.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/leg_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = FALSE)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
step_volume_mod = 1.3
|
||||
drop_sound = 'sound/items/drop/metalboots.ogg'
|
||||
pickup_sound = 'sound/items/pickup/toolbox.ogg'
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/magboots/proc/set_slowdown()
|
||||
slowdown = shoes? max(SHOES_SLOWDOWN, shoes.slowdown): SHOES_SLOWDOWN //So you can't put on magboots to make you walk faster.
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
step_volume_mod = 0.5
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/mime
|
||||
name = "mime shoes"
|
||||
@@ -28,6 +29,7 @@
|
||||
species_restricted = null
|
||||
drop_sound = 'sound/items/drop/rubber.ogg'
|
||||
pickup_sound = 'sound/items/pickup/rubber.ogg'
|
||||
resistance_flags = ACID_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/dress
|
||||
name = "dress shoes"
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
var/recharging_rate = 60 //default 6 seconds between each dash
|
||||
var/recharging_time = 0 //time until next dash
|
||||
// var/jumping = FALSE //are we mid-jump? We have no throw_at callback, so we have to check user.throwing.
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/bhop/ui_action_click(mob/unused_user, actiontype)
|
||||
var/mob/living/user = loc
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/brute_damage = 0 // Specifically brute damage.
|
||||
var/burn_damage = 0 // Specifically burn damage.
|
||||
var/base_name // Used to keep the original name safe while we apply modifiers.
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/clothing/suit/space/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
var/protean = 0
|
||||
var/obj/item/storage/backpack/rig_storage
|
||||
permeability_coefficient = 0 //Protect the squishies, after all this shit should be waterproof.
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
/obj/item/rig/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user