Merge remote-tracking branch 'upstream/master'
@@ -807,6 +807,11 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/crew_quarters/fitness/pool)
|
||||
"abU" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/crew_quarters/bar)
|
||||
"abV" = (
|
||||
/obj/effect/turf_decal/stripes/corner,
|
||||
/turf/open/floor/plasteel/white,
|
||||
@@ -824,6 +829,13 @@
|
||||
"abY" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"abZ" = (
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/ppflowers,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/obj/effect/landmark/xmastree,
|
||||
/turf/open/floor/grass,
|
||||
/area/hydroponics/garden/monastery)
|
||||
"acc" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 4
|
||||
@@ -47489,12 +47501,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/chapel/main/monastery)
|
||||
"cgj" = (
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/ppflowers,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
/turf/open/floor/grass,
|
||||
/area/hydroponics/garden/monastery)
|
||||
"cgk" = (
|
||||
/obj/structure/flora/ausbushes/ywflowers,
|
||||
/obj/structure/flora/ausbushes/sparsegrass,
|
||||
@@ -79792,7 +79798,7 @@ cuE
|
||||
cgK
|
||||
cgJ
|
||||
cgH
|
||||
cgj
|
||||
abZ
|
||||
cvj
|
||||
bWV
|
||||
cfn
|
||||
@@ -94890,7 +94896,7 @@ aYg
|
||||
aZd
|
||||
beB
|
||||
bbq
|
||||
beB
|
||||
abU
|
||||
bdx
|
||||
beB
|
||||
bft
|
||||
@@ -110827,7 +110833,7 @@ bcQ
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
abN
|
||||
bBW
|
||||
aaa
|
||||
aEj
|
||||
aEj
|
||||
@@ -111084,7 +111090,7 @@ bcQ
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
aaa
|
||||
cFB
|
||||
aaa
|
||||
aEl
|
||||
bnl
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
#define MAX_HIGH_PRESSURE_DAMAGE 16 // CITADEL CHANGES Max to 16, low to 8.
|
||||
#define LOW_PRESSURE_DAMAGE 8 //The amount of damage someone takes when in a low pressure area (The pressure threshold is so low that it doesn't make sense to do any calculations, so it just applies this flat value).
|
||||
|
||||
#define COLD_SLOWDOWN_FACTOR 20 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this
|
||||
#define COLD_SLOWDOWN_FACTOR 35 //Humans are slowed by the difference between bodytemp and BODYTEMP_COLD_DAMAGE_LIMIT divided by this
|
||||
|
||||
//PIPES
|
||||
//Atmos pipe limits
|
||||
|
||||
@@ -89,6 +89,11 @@
|
||||
to_chat(user, "<span class='warning'>You can't tackle while tased!</span>")
|
||||
return
|
||||
|
||||
var/left_paralysis = HAS_TRAIT(user, TRAIT_PARALYSIS_L_ARM)
|
||||
var/right_paralysis = HAS_TRAIT(user, TRAIT_PARALYSIS_R_ARM)
|
||||
if(left_paralysis && right_paralysis)
|
||||
to_chat(user, "<span class='warning'>You can't tackle without the use of your arms!</span>")
|
||||
|
||||
user.face_atom(A)
|
||||
|
||||
var/list/modifiers = params2list(params)
|
||||
@@ -280,6 +285,10 @@
|
||||
attack_mod -= 2
|
||||
if(HAS_TRAIT(sacker, TRAIT_GIANT))
|
||||
attack_mod += 2
|
||||
var/left_paralysis = HAS_TRAIT(sacker, TRAIT_PARALYSIS_L_ARM)
|
||||
var/right_paralysis = HAS_TRAIT(sacker, TRAIT_PARALYSIS_R_ARM)
|
||||
if(left_paralysis || right_paralysis)
|
||||
attack_mod -= 2
|
||||
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/S = sacker
|
||||
|
||||
@@ -31,9 +31,8 @@ Bonus
|
||||
var/bleed = FALSE
|
||||
var/pain = FALSE
|
||||
threshold_desc = list(
|
||||
"Resistance 9" = "Doubles the intensity of the immolation effect, but reduces the frequency of all of this symptom's effects.",
|
||||
"Stage Speed 8" = "Increases explosion radius and explosion damage to the host when the host is wet.",
|
||||
"Transmission 8" = "Additionally synthesizes chlorine trifluoride and napalm inside the host. More chemicals are synthesized if the resistance 9 threshold has been met."
|
||||
"Resistance 7" = "Erodes the host's skin, causing them to bleed profusely.",
|
||||
"Transmission 8" = "Eat's away at the host's musclemass, causing increased fatigue."
|
||||
)
|
||||
|
||||
/datum/symptom/flesh_eating/Start(datum/disease/advance/A)
|
||||
|
||||
@@ -263,18 +263,18 @@
|
||||
|
||||
/datum/symptom/heal/coma/CanHeal(datum/disease/advance/A)
|
||||
var/mob/living/M = A.affected_mob
|
||||
if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma)
|
||||
to_chat(M, "<span class='warning'>You feel yourself slip into a regenerative coma...</span>")
|
||||
active_coma = TRUE
|
||||
addtimer(CALLBACK(src, .proc/coma, M), 60)
|
||||
if(HAS_TRAIT(M, TRAIT_DEATHCOMA))
|
||||
return power
|
||||
else if(M.IsUnconscious() || M.stat == UNCONSCIOUS)
|
||||
return power * 0.9
|
||||
else if(M.stat == SOFT_CRIT)
|
||||
return power * 0.5
|
||||
else if(M.IsSleeping())
|
||||
return power * 0.25
|
||||
else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma)
|
||||
to_chat(M, "<span class='warning'>You feel yourself slip into a regenerative coma...</span>")
|
||||
active_coma = TRUE
|
||||
addtimer(CALLBACK(src, .proc/coma, M), 60)
|
||||
else if(M.IsUnconscious() || M.stat == UNCONSCIOUS)
|
||||
return power * 0.9
|
||||
|
||||
/datum/symptom/heal/coma/proc/coma(mob/living/M)
|
||||
if(deathgasp)
|
||||
|
||||
@@ -13,6 +13,8 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
var/save_key
|
||||
/// Do not attempt to render a preview on examine. If this is on, it will display as \[flavor_name\]
|
||||
var/examine_no_preview = FALSE
|
||||
/// Examine FULLY views. Overrides examine_no_preview
|
||||
var/examine_full_view = FALSE
|
||||
|
||||
/datum/element/flavor_text/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key, _examine_no_preview = FALSE)
|
||||
. = ..()
|
||||
@@ -37,7 +39,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
if(can_edit && ismob(target)) //but only mobs receive the proc/verb for the time being
|
||||
var/mob/M = target
|
||||
LAZYOR(GLOB.mobs_with_editable_flavor_text[M], src)
|
||||
M.verbs |= /mob/proc/manage_flavor_tests
|
||||
add_verb(M, /mob/proc/manage_flavor_tests)
|
||||
|
||||
if(save_key && ishuman(target))
|
||||
RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text)
|
||||
@@ -71,6 +73,9 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
examine_list += "<span class='notice'><a href='?src=[REF(src)];show_flavor=[REF(target)]'>\[[flavor_name]\]</a></span>"
|
||||
return
|
||||
var/msg = replacetext(text, "\n", " ")
|
||||
if(examine_full_view)
|
||||
examine_list += "[msg]"
|
||||
return
|
||||
if(length_char(msg) <= 40)
|
||||
examine_list += "<span class='notice'>[msg]</span>"
|
||||
else
|
||||
@@ -113,6 +118,21 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
var/datum/element/flavor_text/F = choices[chosen]
|
||||
F.set_flavor(src)
|
||||
|
||||
/mob/proc/set_pose()
|
||||
set name = "Set Pose"
|
||||
set desc = "Sets your temporary flavor text"
|
||||
set category = "IC"
|
||||
|
||||
var/list/L = GLOB.mobs_with_editable_flavor_text[src]
|
||||
var/datum/element/flavor_text/carbon/temporary/T
|
||||
for(var/i in L)
|
||||
if(istype(i, /datum/element/flavor_text/carbon/temporary))
|
||||
T = i
|
||||
if(!T)
|
||||
to_chat(src, "<span class='warning'>Your mob type does not support temporary flavor text.</span>")
|
||||
return
|
||||
T.set_flavor(src)
|
||||
|
||||
/datum/element/flavor_text/proc/set_flavor(mob/user)
|
||||
if(!(user in texts_by_atom))
|
||||
return FALSE
|
||||
@@ -135,7 +155,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
var/static/list/i_dont_even_know_who_you_are = typecacheof(list(/datum/antagonist/abductor, /datum/antagonist/ert,
|
||||
/datum/antagonist/nukeop, /datum/antagonist/wizard))
|
||||
|
||||
/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key = "flavor_text", _examine_no_preview = FALSE)
|
||||
/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key, _examine_no_preview = FALSE)
|
||||
if(!iscarbon(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
. = ..()
|
||||
@@ -167,3 +187,19 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
texts_by_atom[user] = ""
|
||||
if(user.dna)
|
||||
user.dna.features[save_key] = ""
|
||||
|
||||
/datum/element/flavor_text/carbon/temporary
|
||||
examine_full_view = TRUE
|
||||
max_len = 1024
|
||||
|
||||
/datum/element/flavor_text/carbon/temporary/Attach(datum/target, text, _name, _addendum, _max_len, _always_show, _edit, _save_key, _examine_no_preview)
|
||||
. = ..()
|
||||
if(. & ELEMENT_INCOMPATIBLE)
|
||||
return
|
||||
if(ismob(target))
|
||||
add_verb(target, /mob/proc/set_pose)
|
||||
|
||||
/datum/element/flavor_Text/carbon/temporary/Detach(datum/source, force)
|
||||
. = ..()
|
||||
if(ismob(source))
|
||||
remove_verb(source, /mob/proc/set_pose)
|
||||
|
||||
@@ -438,12 +438,19 @@
|
||||
return
|
||||
else
|
||||
linked_alert.icon_state = "fleshmend"
|
||||
owner.adjustBruteLoss(-10, FALSE)
|
||||
owner.adjustFireLoss(-5, FALSE)
|
||||
owner.adjustOxyLoss(-10)
|
||||
if(!iscarbon(owner))
|
||||
owner.adjustBruteLoss(-10, FALSE)
|
||||
owner.adjustFireLoss(-5, FALSE)
|
||||
return
|
||||
var/mob/living/carbon/C = owner
|
||||
var/list/damaged_parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC, BODYPART_HYBRID, BODYPART_NANITES))
|
||||
if(damaged_parts.len)
|
||||
for(var/obj/item/bodypart/part in damaged_parts)
|
||||
part.heal_damage(10/damaged_parts.len, 5/damaged_parts.len, only_organic = FALSE, updating_health = FALSE)
|
||||
C.updatehealth()
|
||||
C.update_damage_overlays()
|
||||
|
||||
QDEL_LIST(C.all_scars)
|
||||
|
||||
/obj/screen/alert/status_effect/fleshmend
|
||||
@@ -599,7 +606,7 @@
|
||||
|
||||
//Heal brain damage and toxyloss, alongside trauma
|
||||
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -8)
|
||||
owner.adjustToxLoss(-6, forced = TRUE)
|
||||
owner.adjustToxLoss(-6, forced = TRUE, toxins_type = TOX_OMNI)
|
||||
M.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
|
||||
//Purges 50 rads per tick
|
||||
if(owner.radiation > 0)
|
||||
|
||||
@@ -137,12 +137,18 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
|
||||
var/lums = T.get_lumcount()
|
||||
if(lums <= 0.2)
|
||||
if(quirk_holder.m_intent == MOVE_INTENT_RUN)
|
||||
to_chat(quirk_holder, "<span class='warning'>Easy, easy, take it slow... you're in the dark...</span>")
|
||||
quirk_holder.toggle_move_intent()
|
||||
addtimer(CALLBACK(src, .proc/recheck),2) //0.2 seconds of being in the dark
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia)
|
||||
else
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "nyctophobia")
|
||||
|
||||
/datum/quirk/nyctophobia/proc/recheck()
|
||||
var/turf/T = get_turf(quirk_holder)
|
||||
var/lums = T.get_lumcount()
|
||||
if(lums <= 0.2) //check again, did they remain in the dark for 0.2 seconds?
|
||||
to_chat(quirk_holder, "<span class='warning'>Easy, easy, take it slow... you're in the dark...</span>")
|
||||
quirk_holder.toggle_move_intent()
|
||||
|
||||
/datum/quirk/lightless
|
||||
name = "Light Sensitivity"
|
||||
desc = "Bright lights irritate you. Your eyes start to water, your skin feels itchy against the photon radiation, and your hair gets dry and frizzy. Maybe it's a medical condition. If only Nanotrasen was more considerate of your needs..."
|
||||
|
||||
@@ -377,10 +377,3 @@
|
||||
hitsound = 'sound/weapons/taserhit.ogg'
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
breakouttime = 60
|
||||
|
||||
/obj/item/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
|
||||
if(iscarbon(hit_atom))
|
||||
var/obj/item/restraints/legcuffs/beartrap/B = new /obj/item/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
|
||||
B.Crossed(hit_atom)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
//--end of love :'(--
|
||||
|
||||
var/snowflake_id //if we set from a config snowflake plushie.
|
||||
/// wrapper, do not use, read only
|
||||
var/__ADMIN_SET_TO_ID
|
||||
var/can_random_spawn = TRUE //if this is FALSE, don't spawn this for random plushies.
|
||||
|
||||
/obj/item/toy/plush/random_snowflake/Initialize(mapload, set_snowflake_id)
|
||||
@@ -112,10 +114,21 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plush/vv_get_var(var_name)
|
||||
if(var_name == NAMEOF(src, __ADMIN_SET_TO_ID))
|
||||
return debug_variable("__ADMIN: SET SNOWFLAKE ID", snowflake_id, 0, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plush/vv_edit_var(var_name, var_value)
|
||||
if(var_name == NAMEOF(src, __ADMIN_SET_TO_ID))
|
||||
return set_snowflake_from_config(var_value)
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/plush/proc/set_snowflake_from_config(id)
|
||||
var/list/configlist = CONFIG_GET(keyed_list/snowflake_plushies)
|
||||
var/list/jsonlist = configlist[id]
|
||||
ASSERT(jsonlist)
|
||||
if(!jsonlist)
|
||||
return FALSE
|
||||
jsonlist = json_decode(jsonlist)
|
||||
if(jsonlist["inherit_from"])
|
||||
var/path = text2path(jsonlist["inherit_from"])
|
||||
@@ -151,6 +164,7 @@
|
||||
var/datum/component/squeak/S = GetComponent(/datum/component/squeak)
|
||||
S?.override_squeak_sounds = squeak_override
|
||||
snowflake_id = id
|
||||
return TRUE
|
||||
|
||||
/obj/item/toy/plush/handle_atom_del(atom/A)
|
||||
if(A == grenade)
|
||||
|
||||
@@ -23,14 +23,15 @@
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
var/self_fueling = FALSE //Do we refill ourselves or not
|
||||
var/nextrefueltick = 0 // How long it takes before we get a new fuel unit
|
||||
var/nextrefueltick = 0 //When is the next tick we refuel?
|
||||
var/refueling_interval = 10 //Every how many processing ticks does this refuel? (1 = every processing tick)
|
||||
|
||||
custom_materials = list(/datum/material/iron=70, /datum/material/glass=30)
|
||||
var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
|
||||
var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
|
||||
var/max_fuel = 20 //The max amount of fuel the welder can hold
|
||||
var/change_icons = 1
|
||||
var/can_off_process = 0
|
||||
var/can_off_process = FALSE
|
||||
var/light_intensity = 2 //how powerful the emitted light is when used.
|
||||
var/progress_flash_divisor = 10
|
||||
var/burned_fuel_for = 0 //when fuel was last removed
|
||||
@@ -66,6 +67,14 @@
|
||||
. += "[initial(icon_state)]-on"
|
||||
|
||||
/obj/item/weldingtool/process()
|
||||
//This handles refueling. Its looking at how much fuel the tool has and comparing that to how much it holds
|
||||
//This then looks if the refuel tick has come based on world time.
|
||||
//Then looks if we refuel ourselves or not.
|
||||
|
||||
if(self_fueling && get_fuel() < max_fuel && nextrefueltick <= world.time)
|
||||
nextrefueltick = world.time + refueling_interval
|
||||
reagents.add_reagent(/datum/reagent/fuel, 1)
|
||||
|
||||
switch(welding)
|
||||
if(0)
|
||||
force = 3
|
||||
@@ -86,14 +95,6 @@
|
||||
//This is to start fires. process() is only called if the welder is on.
|
||||
open_flame()
|
||||
|
||||
//This handles refueling. Its looking at how much fuel the tool has and comparing that to how much it holds
|
||||
//This then looks if the refuel tick has come based on world time.
|
||||
//Then looks if we refuel ourselves or not.
|
||||
|
||||
if(get_fuel() < max_fuel && nextrefueltick < world.time && self_fueling)
|
||||
nextrefueltick = world.time + 10
|
||||
reagents.add_reagent(/datum/reagent/fuel, 1)
|
||||
|
||||
/obj/item/weldingtool/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return (FIRELOSS)
|
||||
@@ -367,7 +368,7 @@
|
||||
custom_materials = list(/datum/material/iron=70, /datum/material/glass=120)
|
||||
change_icons = 0
|
||||
self_fueling = TRUE
|
||||
can_off_process = 1
|
||||
can_off_process = TRUE
|
||||
light_intensity = 1
|
||||
toolspeed = 0.5
|
||||
|
||||
@@ -375,6 +376,7 @@
|
||||
name = "brass welding tool"
|
||||
desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch."
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
refueling_interval = 5
|
||||
icon_state = "clockwelder"
|
||||
item_state = "brasswelder"
|
||||
|
||||
@@ -384,16 +386,20 @@
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "welder"
|
||||
self_fueling = TRUE
|
||||
can_off_process = TRUE
|
||||
refueling_interval = 1
|
||||
toolspeed = 0.1
|
||||
light_intensity = 0
|
||||
change_icons = 0
|
||||
|
||||
/obj/item/weldingtool/advanced
|
||||
name = "advanced welding tool"
|
||||
desc = "A modern welding tool combined with an alien welding tool, it never runs out of fuel and works almost as fast."
|
||||
desc = "A modern welding tool combined with an alien welding tool, it almost never runs out of fuel and works nearly as fast."
|
||||
icon = 'icons/obj/advancedtools.dmi'
|
||||
icon_state = "welder"
|
||||
self_fueling = TRUE
|
||||
can_off_process = TRUE
|
||||
refueling_interval = 2
|
||||
toolspeed = 0.2
|
||||
light_intensity = 0
|
||||
change_icons = 0
|
||||
|
||||
@@ -446,8 +446,11 @@
|
||||
var/mob/living/L = O
|
||||
if(!issilicon(L))
|
||||
L.DefaultCombatKnockdown(40)
|
||||
O.forceMove(T)
|
||||
close()
|
||||
if(istype(src, /obj/structure/closet/supplypod/extractionpod))
|
||||
O.forceMove(src)
|
||||
else
|
||||
O.forceMove(T)
|
||||
close()
|
||||
else
|
||||
O.forceMove(T)
|
||||
return 1
|
||||
|
||||
@@ -163,6 +163,8 @@
|
||||
|
||||
while (pulling != null)
|
||||
var/next_pulling = pulling.pulling
|
||||
if(next_pulling == pulling)
|
||||
break // no loops
|
||||
|
||||
var/turf/T = get_step(puller.loc, turn(puller.dir, 180))
|
||||
pulling.can_be_z_moved = FALSE
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
L.adjustFireLoss(amount)
|
||||
newamt = L.getFireLoss()
|
||||
if("toxin")
|
||||
L.adjustToxLoss(amount, toxins_type = TOX_OMNI)
|
||||
L.adjustToxLoss(amount, toxins_type = TOX_OMNI, forced = TRUE)
|
||||
newamt = L.getToxLoss()
|
||||
if("oxygen")
|
||||
L.adjustOxyLoss(amount)
|
||||
|
||||
@@ -120,9 +120,14 @@
|
||||
if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return.
|
||||
if(mult == 0)
|
||||
return TRUE
|
||||
|
||||
// We have damage. Let's heal (one time)
|
||||
C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body.
|
||||
C.adjustFireLoss(-fireheal * mult, forced = TRUE)
|
||||
var/list/damaged_parts = C.get_damaged_bodyparts(TRUE,TRUE, status = list(BODYPART_ORGANIC, BODYPART_HYBRID, BODYPART_NANITES))
|
||||
if(damaged_parts.len)
|
||||
for(var/obj/item/bodypart/part in damaged_parts) // Heal BRUTE / BURN equally distibuted over all damaged bodyparts.
|
||||
part.heal_damage((bruteheal * mult)/damaged_parts.len, (fireheal * mult)/damaged_parts.len, only_organic = FALSE, updating_health = FALSE)
|
||||
C.updatehealth()
|
||||
C.update_damage_overlays()
|
||||
C.adjustToxLoss(-toxinheal * mult * 2, forced = TRUE) //Toxin healing because vamps arent immune
|
||||
//C.heal_overall_damage(bruteheal * mult, fireheal * mult) // REMOVED: We need to FORCE this, because otherwise, vamps won't heal EVER. Swapped to above.
|
||||
AddBloodVolume((bruteheal * -0.5 + fireheal * -1 + toxinheal * -0.2) / mult * costMult) // Costs blood to heal
|
||||
@@ -276,7 +281,7 @@
|
||||
/datum/antagonist/bloodsucker/proc/FinalDeath()
|
||||
//Dont bother if we are already supposed to be dead
|
||||
if(FinalDeath)
|
||||
return
|
||||
return
|
||||
FinalDeath = TRUE //We are now supposed to die. Lets not spam it.
|
||||
if(!iscarbon(owner.current)) //Check for non carbons.
|
||||
owner.current.gib()
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
var/pck = pick("assasinate","protect")
|
||||
switch(pck)
|
||||
if("assasinate")
|
||||
var/datum/objective/assassinate/A = new
|
||||
var/datum/objective/assassinate/once/A = new
|
||||
A.owner = owner
|
||||
var/list/owners = A.get_owners()
|
||||
A.find_target(owners,protection)
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
var/mob/living/living_user = user
|
||||
living_user.adjustBruteLoss(-3, FALSE)
|
||||
living_user.adjustFireLoss(-3, FALSE)
|
||||
living_user.adjustToxLoss(-3, FALSE)
|
||||
living_user.adjustToxLoss(-3, FALSE, TRUE)
|
||||
living_user.adjustOxyLoss(-1, FALSE)
|
||||
living_user.adjustStaminaLoss(-6)
|
||||
|
||||
|
||||
@@ -74,7 +74,6 @@
|
||||
bluespace = TRUE
|
||||
explosionSize = list(0,0,1,2)
|
||||
landingDelay = 25 //Longer than others
|
||||
reverseOptionList = list("Mobs"=TRUE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE)
|
||||
|
||||
/obj/structure/closet/supplypod/centcompod
|
||||
style = STYLE_CENTCOM
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
body_parts_covered = ARMS
|
||||
cold_protection = ARMS
|
||||
strip_delay = 300 //you can't just yank them off
|
||||
obj_flags = UNIQUE_RENAME
|
||||
/// did you ever get around to wearing these or no
|
||||
var/wornonce = FALSE
|
||||
///Extra damage through the punch.
|
||||
|
||||
@@ -873,9 +873,9 @@
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight
|
||||
name = "cydonian helmet"
|
||||
desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
|
||||
icon_state = "knight_cydonia"
|
||||
icon_state = "hardsuit0-knight_cydonia"
|
||||
item_state = "knight_yellow"
|
||||
hardsuit_type = null
|
||||
hardsuit_type = "knight_cydonia"
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
heat_protection = HEAD
|
||||
|
||||
@@ -256,7 +256,7 @@ Contains:
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert
|
||||
armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 50)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC
|
||||
|
||||
//ERT Security
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec
|
||||
|
||||
@@ -133,12 +133,12 @@
|
||||
return TRUE
|
||||
|
||||
/datum/job/proc/GetAntagRep()
|
||||
. = CONFIG_GET(keyed_list/antag_rep)[lowertext(title)]
|
||||
. = CONFIG_GET(keyed_list/antag_rep)[ckey(title)]
|
||||
if(. == null)
|
||||
return antag_rep
|
||||
|
||||
/datum/job/proc/GetThreat()
|
||||
. = CONFIG_GET(keyed_list/job_threat)[lowertext(title)]
|
||||
. = CONFIG_GET(keyed_list/job_threat)[ckey(title)]
|
||||
if(. == null)
|
||||
return threat
|
||||
|
||||
|
||||
@@ -155,16 +155,18 @@
|
||||
penalize = client.prefs.respawn_restrictions_active
|
||||
client.prefs.respawn_restrictions_active = penalize
|
||||
|
||||
to_chat(src, "<span class='userdanger'>You have been respawned to the lobby. \
|
||||
message_admins("[key_name_admin(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
log_game("[key_name(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
var/mob/dead/new_player/N = transfer_to_lobby()
|
||||
|
||||
to_chat(N, "<span class='userdanger'>You have been respawned to the lobby. \
|
||||
Remember to take heed of rules regarding round knowledge - notably, that ALL past lives are forgotten. \
|
||||
Any character you join as has NO knowledge of round events unless specified otherwise by an admin.</span>")
|
||||
|
||||
message_admins("[key_name_admin(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
log_game("[key_name(src)] was respawned to lobby [penalize? "with" : "without"] restrictions.")
|
||||
transfer_to_lobby()
|
||||
|
||||
/**
|
||||
* Actual proc that removes us and puts us back on lobby
|
||||
*
|
||||
* Returns the new mob.
|
||||
*/
|
||||
/mob/dead/observer/proc/transfer_to_lobby()
|
||||
if(!client) // if no one's in us we can just be deleted
|
||||
@@ -179,3 +181,4 @@
|
||||
|
||||
var/mob/dead/new_player/M = new /mob/dead/new_player
|
||||
M.ckey = ckey
|
||||
return M
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
silent = FALSE
|
||||
losebreath = 0
|
||||
|
||||
if(!gibbed)
|
||||
if(!gibbed && !HAS_TRAIT(src, TRAIT_DEATHCOMA))
|
||||
emote("deathgasp")
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
AddComponent(/datum/component/mood)
|
||||
AddComponent(/datum/component/combat_mode)
|
||||
AddElement(/datum/element/flavor_text/carbon, _name = "Flavor Text", _save_key = "flavor_text")
|
||||
AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!")
|
||||
AddElement(/datum/element/flavor_text/carbon/temporary, "", "Set Pose (Temporary Flavor Text)", "This should be used only for things pertaining to the current round!", _save_key = null)
|
||||
AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE)
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
|
||||
|
||||
block_parry_data = /datum/block_parry_data/unarmed/human
|
||||
default_block_parry_data = /datum/block_parry_data/unarmed/pugilist
|
||||
default_block_parry_data = /datum/block_parry_data/unarmed/human
|
||||
|
||||
//Hair colour and style
|
||||
var/hair_color = "000"
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
|
||||
H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle)
|
||||
|
||||
H.layer -= 1 //go one layer down so people go over you
|
||||
ENABLE_BITFIELD(H.pass_flags, PASSMOB) //this actually lets people pass over you
|
||||
squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) //blorble noise when people step on you
|
||||
|
||||
@@ -103,7 +102,6 @@
|
||||
REMOVE_TRAIT(H, TRAIT_HUMAN_NO_RENDER, SLIMEPUDDLE_TRAIT)
|
||||
H.update_disabled_bodyparts(silent = TRUE)
|
||||
H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle)
|
||||
H.layer += 1 //go one layer back above!
|
||||
DISABLE_BITFIELD(H.pass_flags, PASSMOB)
|
||||
is_puddle = FALSE
|
||||
if(squeak)
|
||||
|
||||
@@ -86,15 +86,6 @@ proc/get_top_level_mob(var/mob/S)
|
||||
else if(!params)
|
||||
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
|
||||
if(subtle_emote && !check_invalid(user, subtle_emote))
|
||||
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
|
||||
switch(type)
|
||||
if("Visible")
|
||||
emote_type = EMOTE_VISIBLE
|
||||
if("Hearable")
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
else
|
||||
alert("Unable to use this emote, must be either hearable or visible.")
|
||||
return
|
||||
message = subtle_emote
|
||||
else
|
||||
return FALSE
|
||||
@@ -111,6 +102,80 @@ proc/get_top_level_mob(var/mob/S)
|
||||
|
||||
user.visible_message(message = message, self_message = message, vision_distance = 1, ignored_mobs = GLOB.dead_mob_list, omni = TRUE)
|
||||
|
||||
///////////////// SUBTLE 3: DARE DICE
|
||||
|
||||
/datum/emote/living/subtler_table
|
||||
key = "subtler_table"
|
||||
key_third_person = "subtler_table"
|
||||
message = null
|
||||
mob_type_blacklist_typecache = list(/mob/living/brain)
|
||||
|
||||
/datum/emote/living/subtler_table/proc/check_invalid(mob/user, input)
|
||||
if(stop_bad_mime.Find(input, 1, 1))
|
||||
to_chat(user, "<span class='danger'>Invalid emote.</span>")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/emote/living/subtler_table/run_emote(mob/user, params, type_override = null)
|
||||
if(!locate(/obj/structure/table) in range(user, 1))
|
||||
to_chat(user, "There are no tables around you.")
|
||||
return FALSE
|
||||
if(jobban_isbanned(user, "emote"))
|
||||
to_chat(user, "You cannot send subtle emotes (banned).")
|
||||
return FALSE
|
||||
else if(user.client && user.client.prefs.muted & MUTE_IC)
|
||||
to_chat(user, "You cannot send IC messages (muted).")
|
||||
return FALSE
|
||||
else if(!params)
|
||||
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
|
||||
if(subtle_emote && !check_invalid(user, subtle_emote))
|
||||
message = subtle_emote
|
||||
else
|
||||
return FALSE
|
||||
else
|
||||
message = params
|
||||
if(type_override)
|
||||
emote_type = type_override
|
||||
. = TRUE
|
||||
if(!can_run_emote(user))
|
||||
return FALSE
|
||||
|
||||
user.log_message("[message] (TABLE-WRAPPING)", LOG_SUBTLER)
|
||||
message = "<span class='emote'><b>[user]</b> <i>[user.say_emphasis(message)]</i></span>"
|
||||
|
||||
var/list/show_to = list()
|
||||
var/list/processing = list()
|
||||
var/safety = 25
|
||||
for(var/obj/structure/table/T in range(user, 1))
|
||||
processing |= T
|
||||
for(var/i in processing)
|
||||
var/obj/structure/table/T = i
|
||||
if(safety-- <= 0)
|
||||
to_chat(user, "Table scan aborted early, some people might have not received the message (max 25)")
|
||||
break
|
||||
if(get_dist(T, user) > 7)
|
||||
continue // nah
|
||||
processing |= T
|
||||
for(var/mob/living/M in range(T, 1)) // no ghosts/cameramobs
|
||||
show_to |= M
|
||||
var/obj/structure/table/other
|
||||
other = locate() in get_step(T, NORTH)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, SOUTH)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, WEST)
|
||||
if(other)
|
||||
processing |= other
|
||||
other = locate() in get_step(T, EAST)
|
||||
if(other)
|
||||
processing |= other
|
||||
|
||||
for(var/i in show_to)
|
||||
var/mob/M = i
|
||||
M.show_message(message)
|
||||
|
||||
///////////////// VERB CODE
|
||||
/mob/living/verb/subtle()
|
||||
set name = "Subtle"
|
||||
@@ -128,3 +193,12 @@ proc/get_top_level_mob(var/mob/S)
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
return
|
||||
usr.emote("subtler")
|
||||
|
||||
///////////////// VERB CODE 3
|
||||
/mob/living/verb/subtler_table()
|
||||
set name = "Subtler Around Table"
|
||||
set category = "IC"
|
||||
if(GLOB.say_disabled) //This is dumb but it's here because heehoo copypaste, who the FUCK uses this to identify lag?
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
return
|
||||
usr.emote("subtler_table")
|
||||
|
||||
@@ -1082,11 +1082,12 @@
|
||||
if("lockdown")
|
||||
var/celluse = rand(20,35)
|
||||
celluse = celluse /100
|
||||
if(!cell.use(cell.maxcharge*celluse))
|
||||
return
|
||||
for (var/obj/machinery/door/D in GLOB.airlocks)
|
||||
if (get_area(D) == area)
|
||||
INVOKE_ASYNC(D,/obj/machinery/door.proc/hostile_lockdown,usr, FALSE)
|
||||
addtimer(CALLBACK(D,/obj/machinery/door.proc/disable_lockdown, FALSE), 30 SECONDS)
|
||||
cell.charge -= cell.maxcharge*celluse
|
||||
var/obj/item/implant/hijack/H = usr.getImplant(/obj/item/implant/hijack)
|
||||
H.stealthcooldown = world.time + 3 MINUTES
|
||||
if("occupy")
|
||||
|
||||
@@ -86,6 +86,8 @@
|
||||
|
||||
// recharge the cell
|
||||
/obj/item/stock_parts/cell/proc/give(amount)
|
||||
if(amount < 0)
|
||||
return
|
||||
if(rigged && amount > 0)
|
||||
explode()
|
||||
return 0
|
||||
|
||||
@@ -100,6 +100,10 @@
|
||||
var/impact_light_intensity = 3
|
||||
var/impact_light_range = 2
|
||||
var/impact_light_color_override
|
||||
// Normal lighting effects
|
||||
var/fired_light_intensity = 1
|
||||
var/fired_light_range = 0
|
||||
var/fired_light_color = rgb(255, 255, 255)
|
||||
|
||||
//Homing
|
||||
var/homing = FALSE
|
||||
@@ -506,6 +510,7 @@
|
||||
transform = M
|
||||
trajectory_ignore_forcemove = TRUE
|
||||
forceMove(starting)
|
||||
set_light(fired_light_range, fired_light_intensity, fired_light_color)
|
||||
trajectory_ignore_forcemove = FALSE
|
||||
if(isnull(pixel_increment_amount))
|
||||
pixel_increment_amount = SSprojectiles.global_pixel_increment_amount
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
icon_state = "magjectile"
|
||||
damage = 20
|
||||
armour_penetration = 20
|
||||
light_range = 3
|
||||
fired_light_range = 3
|
||||
pixels_per_second = TILES_TO_PIXELS(16.667)
|
||||
range = 35
|
||||
light_color = LIGHT_COLOR_RED
|
||||
fired_light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/disabler
|
||||
icon_state = "magjectile-nl" //nl stands for non-lethal
|
||||
damage = 2
|
||||
armour_penetration = 10
|
||||
stamina = 20
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
fired_light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/weak
|
||||
damage = 15
|
||||
armour_penetration = 10
|
||||
light_range = 2
|
||||
fired_light_range = 2
|
||||
range = 25
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/weak/disabler
|
||||
@@ -30,8 +30,8 @@
|
||||
stamina = 10
|
||||
movement_type = FLYING | UNSTOPPABLE
|
||||
range = 6
|
||||
light_range = 1
|
||||
light_color = LIGHT_COLOR_RED
|
||||
fired_light_range = 1
|
||||
fired_light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/item/projectile/bullet/incendiary/mag_inferno
|
||||
icon_state = "magjectile-large"
|
||||
@@ -40,8 +40,8 @@
|
||||
movement_type = FLYING | UNSTOPPABLE
|
||||
range = 20
|
||||
pixels_per_second = TILES_TO_PIXELS(12.5)
|
||||
light_range = 4
|
||||
light_color = LIGHT_COLOR_RED
|
||||
fired_light_range = 4
|
||||
fired_light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/item/projectile/bullet/incendiary/mag_inferno/on_hit(atom/target, blocked = FALSE)
|
||||
..()
|
||||
|
||||
@@ -171,11 +171,13 @@
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
L.ignore_slowdown(type)
|
||||
ADD_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
|
||||
L.update_movespeed()
|
||||
ADD_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L)
|
||||
L.unignore_slowdown(type)
|
||||
REMOVE_TRAIT(L, TRAIT_IGNOREDAMAGESLOWDOWN, type)
|
||||
L.update_movespeed()
|
||||
REMOVE_TRAIT(L, TRAIT_TASED_RESISTANCE, type)
|
||||
..()
|
||||
|
||||
|
||||
@@ -81,6 +81,12 @@
|
||||
var/obj/machinery/portable_atmospherics/P = item_to_retrieve.loc
|
||||
P.disconnect()
|
||||
P.update_icon()
|
||||
else if(istype(item_to_retrieve.loc, /obj/machinery/disposal) || istype(item_to_retrieve.loc, /obj/structure/disposalpipe)) //If it's in disposals, only recall the item.
|
||||
break
|
||||
else if(istype(item_to_retrieve.loc, /obj/machinery/nuclearbomb)) //I feel like yandev
|
||||
break //Just to be sure.
|
||||
|
||||
|
||||
|
||||
item_to_retrieve = item_to_retrieve.loc
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "things in DEATHCOMA do not deathgasp on death"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "DeltaFire15"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Fleshmend, Anatomic Panacea and bloodsucker healing now work for Synths / IPCs."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "DeltaFire15"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Self-fueling weldingtools recharge fuel properly again."
|
||||
- bugfix: "Brass welders now actually recharge faster than experimental ones."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "timothyteakettle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "slime puddles are no longer layered down one layer"
|
||||
- tweak: "you cannot tackle with two paralysed arms"
|
||||
- tweak: "tackling with a single paralysed arm lowers your tackle roll by 2"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Magrifle ammo no longer glows."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BlueWildrose"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Nyctophobia quirk now has some light lag compensation."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "BlueWildrose"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "PubbyStation now has two Christmas Tree spawners."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "ERP mains"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Subtler Around Table is now a verb"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "set-pose has been added"
|
||||
- tweak: "temporary flavor text renamed to set pose, fully visible in examine"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "HeroWithYay"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Changed description of Necrotizing Fasciitis symptom."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Meth and changeling adrenals no longer ignore all slowdowns, rather damage slowdowns."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "temperature slowdown divisor nerfed to 35 from 20."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "Sonic121x"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "alarm ert hardsuit sprite for naga and canine"
|
||||
- tweak: "adjust the naga ert hardsuit to cover the hand"
|
||||
- bugfix: "cydonia hardsuit helmet"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "keronshb"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Allows Energy Bola to be caught"
|
||||
- balance: "This also allows them to be dropped/picked up."
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Putnam3145"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Regen coma now puts into a coma even from crit or while unconscious."
|
||||
- bugfix: "Regen coma now properly weakens while asleep."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "DeltaFire15"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Instant summons can no longer do wacky stuff with disposals (and nukes)."
|
||||
@@ -912,7 +912,7 @@ function draw_sdql2(){
|
||||
var td2 = document.createElement("td");
|
||||
if(part[2]) {
|
||||
var a = document.createElement("a");
|
||||
a.href = "?src=" + part[2] + ";statpanel_item_click=1";
|
||||
a.href = "?src=" + "_statpanel_" + ";statpanel_item_target=" + part[2] + ";statpanel_item_click=1";
|
||||
a[textContentKey] = part[1];
|
||||
td2.appendChild(a);
|
||||
} else {
|
||||
@@ -943,7 +943,7 @@ function draw_tickets() {
|
||||
td2.appendChild(a);
|
||||
} else if(part[3]){
|
||||
var a = document.createElement("a");
|
||||
a.href = "?src=" + part[3] + ";statpanel_item_click=1";
|
||||
a.href = "?src=_statpanel_" + ";statpanel_item_target=" + part[3] + ";statpanel_item_click=1";
|
||||
a[textContentKey] = part[1];
|
||||
td2.appendChild(a);
|
||||
} else {
|
||||
|
||||
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 126 KiB |