Merge branch 'master' into master

This commit is contained in:
EgorDinamit
2020-02-16 16:59:37 +04:00
committed by GitHub
42 changed files with 5148 additions and 3089 deletions
File diff suppressed because it is too large Load Diff
+1
View File
@@ -65,6 +65,7 @@
#define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange
#define FREQ_SECURITY 1359 // Security comms frequency, red
#define FREQ_HOLOGRID_SOLUTION 1433
#define FREQ_STATUS_DISPLAYS 1435
#define FREQ_ATMOS_ALARMS 1437 // air alarms <-> alert computers
#define FREQ_ATMOS_CONTROL 1439 // air alarms <-> vents and scrubbers
+29 -20
View File
@@ -89,12 +89,14 @@
/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(D.stat || D.IsParalyzed())
return 0
var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_CHEST)
var/armor_block = D.run_armor_check(affecting, "melee")
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
"<span class='userdanger'>Your legs are sweeped by [A]!</span>", "<span class='hear'>You hear a sickening sound of flesh hitting flesh!</span>", null, A)
to_chat(A, "<span class='danger'>You leg sweep [D]!</span>")
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
D.apply_damage(5, BRUTE)
D.Paralyze(40)
D.apply_damage(rand(20,30), STAMINA, affecting, armor_block)
D.Knockdown(60)
log_combat(A, D, "leg sweeped")
return 1
@@ -130,12 +132,14 @@
if(check_streak(A,D))
return 1
log_combat(A, D, "punched")
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
var/armor_block = D.run_armor_check(affecting, "melee")
var/picked_hit_type = pick("punch", "kick")
var/bonus_damage = 10
var/bonus_damage = 0
if(!(D.mobility_flags & MOBILITY_STAND))
bonus_damage += 5
picked_hit_type = "stomp"
D.apply_damage(bonus_damage, A.dna.species.attack_type)
D.apply_damage(rand(5,10) + bonus_damage, A.dna.species.attack_type, affecting, armor_block)
if(picked_hit_type == "kick" || picked_hit_type == "stomp")
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
playsound(get_turf(D), 'sound/effects/hit_kick.ogg', 50, TRUE, -1)
@@ -151,22 +155,27 @@
/datum/martial_art/krav_maga/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
if(check_streak(A,D))
return 1
var/obj/item/I = null
if(prob(60))
I = D.get_active_held_item()
if(I)
if(D.temporarilyRemoveItemFromInventory(I))
A.put_in_hands(I)
D.visible_message("<span class='danger'>[A] disarms [D]!</span>", \
"<span class='userdanger'>You're disarmed by [A]!</span>", "<span class='hear'>You hear aggressive shuffling!</span>", COMBAT_MESSAGE_RANGE, A)
to_chat(A, "<span class='danger'>You disarm [D]!</span>")
playsound(D, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1)
else
D.visible_message("<span class='danger'>[A] fails to disarm [D]!</span>", \
"<span class='userdanger'>You're nearly disarmed by [A]!</span>", "<span class='hear'>You hear a swoosh!</span>", COMBAT_MESSAGE_RANGE, A)
to_chat(A, "<span class='warning'>You fail to disarm [D]!</span>")
playsound(D, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1)
log_combat(A, D, "disarmed (Krav Maga)", "[I ? " removing \the [I]" : ""]")
var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected))
var/armor_block = D.run_armor_check(affecting, "melee")
if((D.mobility_flags & MOBILITY_STAND))
D.visible_message("<span class='danger'>[A] reprimands [D]!</span>", \
"<span class='userdanger'>You're slapped by [A]!</span>", "<span class='hear'>You hear a sickening sound of flesh hitting flesh!</span>", COMBAT_MESSAGE_RANGE, A)
to_chat(A, "<span class='danger'>You jab [D]!</span>")
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
D.apply_damage(rand(5,10), STAMINA, affecting, armor_block)
log_combat(A, D, "punched nonlethally")
if(!(D.mobility_flags & MOBILITY_STAND))
D.visible_message("<span class='danger'>[A] reprimands [D]!</span>", \
"<span class='userdanger'>You're manhandled by [A]!</span>", "<span class='hear'>You hear a sickening sound of flesh hitting flesh!</span>", COMBAT_MESSAGE_RANGE, A)
to_chat(A, "<span class='danger'>You stomp [D]!</span>")
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1)
D.apply_damage(rand(10,15), STAMINA, affecting, armor_block)
log_combat(A, D, "stomped nonlethally")
if(prob(D.getStaminaLoss()))
D.visible_message("<span class='warning'>[D] sputters and recoils in pain!</span>", "<span class='userdanger'>You recoil in pain as you are jabbed in a nerve!</span>")
D.drop_all_held_items()
return 1
//Krav Maga Gloves
+7 -1
View File
@@ -296,8 +296,14 @@
allow_duplicates = FALSE
unpickable = TRUE
datum/map_template/ruin/space/forgottenship
/datum/map_template/ruin/space/forgottenship
id = "forgottenship"
suffix = "forgottenship.dmm"
name = "Syndicate Forgotten Ship"
description = "Seemingly abandoned ship went of course right into NT controlled space. It seems that malfunction caused most systems to turn off, except for sleepers."
/datum/map_template/ruin/space/hellfactory
id = "hellfactory"
suffix = "hellfactory.dmm"
name = "Heck Brewery"
description = "An abandoned warehouse and brewing facility, which has been recently rediscovered. Reports claim that the security system entered an ultra-hard lockdown, but these reports are inconclusive."
+1 -1
View File
@@ -128,7 +128,7 @@
/datum/quirk/phobia/post_add()
var/mob/living/carbon/human/H = quirk_holder
H.gain_trauma(new /datum/brain_trauma/mild/phobia(H.client.prefs.phobia), TRAUMA_RESILIENCE_ABSOLUTE)
H.gain_trauma(new /datum/brain_trauma/mild/phobia(H.client?.prefs.phobia), TRAUMA_RESILIENCE_ABSOLUTE)
/datum/quirk/phobia/remove()
var/mob/living/carbon/human/H = quirk_holder
+10
View File
@@ -419,3 +419,13 @@
/area/ruin/space/has_grav/powered/ancient_shuttle
name = "Ancient Shuttle"
icon_state = "yellow"
//HELL'S FACTORY OPERATING FACILITY
/area/ruin/space/has_grav/hellfactory
name = "Hell Factory"
icon_state = "yellow"
/area/ruin/space/has_grav/hellfactoryoffice
name = "Hell Factory Office"
icon_state = "red"
noteleport = TRUE
@@ -39,9 +39,10 @@
if(hotspot && istype(T) && T.air)
qdel(hotspot)
var/datum/gas_mixture/G = T.air
var/plas_amt = min(30,G.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma
G.gases[/datum/gas/plasma][MOLES] -= plas_amt
absorbed_plasma += plas_amt
if(G.gases[/datum/gas/plasma])
var/plas_amt = min(30,G.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma
G.gases[/datum/gas/plasma][MOLES] -= plas_amt
absorbed_plasma += plas_amt
if(G.temperature > T20C)
G.temperature = max(G.temperature/2,T20C)
G.garbage_collect()
+5
View File
@@ -78,6 +78,11 @@
gas_type = "n2o"
/obj/effect/mine/gas/water_vapor
name = "chilled vapor mine"
gas_amount = 500
gas_type = "water_vapor"
/obj/effect/mine/sound
name = "honkblaster 1000"
var/sound = 'sound/items/bikehorn.ogg'
@@ -1,13 +1,14 @@
/obj/item/pressure_plate
name = "pressure plate"
desc = "An electronic device that triggers when stepped on."
icon = 'icons/obj/device.dmi'
desc = "An electronic device that triggers when stepped on. Ctrl-Click to toggle the pressure plate off and on."
icon = 'icons/obj/puzzle_small.dmi'
item_state = "flash"
icon_state = "pressureplate"
level = 1
layer = LOW_OBJ_LAYER
var/trigger_mob = TRUE
var/trigger_item = FALSE
var/specific_item = null
var/trigger_silent = FALSE
var/sound/trigger_sound = 'sound/effects/pressureplate.ogg'
var/obj/item/assembly/signaler/sigdev = null
@@ -20,6 +21,7 @@
var/image/tile_overlay = null
var/can_trigger = TRUE
var/trigger_delay = 10
var/protected = FALSE
/obj/item/pressure_plate/Initialize()
. = ..()
@@ -35,6 +37,8 @@
. = ..()
if(!can_trigger || !active)
return
if(trigger_item && !istype(AM, specific_item))
return
if(trigger_mob && isliving(AM))
var/mob/living/L = AM
to_chat(L, "<span class='warning'>You feel something click beneath you!</span>")
@@ -62,6 +66,16 @@
sigdev = null
return ..()
/obj/item/pressure_plate/CtrlClick(mob/user)
if(protected)
to_chat(user, "<span class='warning'>You can't quite seem to turn this pressure plate off...</span>")
return
active = !active
if (active == TRUE)
to_chat(user, "<span class='notice'>You turn [src] on.</span>")
else
to_chat(user, "<span class='notice'>You turn [src] off.</span>")
/obj/item/pressure_plate/hide(yes)
if(yes)
invisibility = INVISIBILITY_MAXIMUM
+135
View File
@@ -0,0 +1,135 @@
//**************
//*****Keys*******************
//************** ** **
/obj/item/keycard
name = "security keycard"
desc = "This feels like it belongs to a door."
icon = 'icons/obj/puzzle_small.dmi'
icon_state = "keycard"
force = 0
throwforce = 0
w_class = WEIGHT_CLASS_TINY
throw_speed = 1
throw_range = 7
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
var/puzzle_id = null
//Two test keys for use alongside the two test doors.
/obj/item/keycard/cheese
name = "cheese keycard"
desc = "Look, I still don't understand the reference. What the heck is a keyzza?"
color = "#f0da12"
puzzle_id = "cheese"
/obj/item/keycard/swordfish
name = "titanic keycard"
desc = "Smells like it was at the bottom of a harbor."
color = "#3bbbdb"
puzzle_id = "swordfish"
//***************
//*****Doors*****
//***************
/obj/machinery/door/keycard
name = "locked door"
desc = "This door only opens when a keycard is swiped. It looks virtually indestructable."
icon = 'icons/obj/doors/doorpuzzle.dmi'
icon_state = "door_closed"
explosion_block = 3
heat_proof = TRUE
max_integrity = 600
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
damage_deflection = 70
var/puzzle_id = null //Make sure that the key has the same puzzle_id as the keycard door!
//Standard Expressions to make keycard doors basically un-cheeseable
/obj/machinery/door/keycard/Bumped(atom/movable/AM)
return !density && ..()
/obj/machinery/door/keycard/emp_act(severity)
return
/obj/machinery/door/keycard/ex_act(severity, target)
return
/obj/machinery/door/keycard/try_to_activate_door(mob/user)
add_fingerprint(user)
if(operating)
return
/obj/machinery/door/keycard/attackby(obj/item/I, mob/user, params)
. = ..()
if(istype(I,/obj/item/keycard))
var/obj/item/keycard/key = I
if((!puzzle_id || puzzle_id == key.puzzle_id) && density)
to_chat(user, "<span class='notice'>The door beeps, and slides opens.</span>")
open()
return
else if(puzzle_id != key.puzzle_id)
to_chat(user, "<span class='notice'>[src] buzzes. This must not be the right key.</span>")
return
else
to_chat(user, "<span class='notice'>This door doesn't appear to close.</span>")
return
//Test doors. Gives admins a few doors to use quickly should they so choose.
/obj/machinery/door/keycard/cheese
name = "blue airlock"
desc = "Smells like... pizza?"
puzzle_id = "cheese"
/obj/machinery/door/keycard/swordfish
name = "blue airlock"
desc = "If nautical nonsense be something you wish."
puzzle_id = "swordfish"
//*************************
//***Box Pushing Puzzles***
//*************************
//We're working off a subtype of pressureplates, which should work just a BIT better now.
/obj/structure/holobox
name = "holobox"
desc = "A hard-light box, containing a secure decryption key."
icon = 'icons/obj/puzzle_small.dmi'
icon_state = "laserbox"
density = TRUE
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
//Uses the pressure_plate settings for a pretty basic custom pattern that waits for a specific item to trigger. Easy enough to retool for mapping purposes or subtypes.
/obj/item/pressure_plate/hologrid
name = "hologrid"
desc = "A high power, electronic input port for a holobox, which can unlock the hologrid's storage compartment. Safe to stand on."
icon = 'icons/obj/puzzle_small.dmi'
icon_state = "lasergrid"
anchored = TRUE
trigger_mob = FALSE
trigger_item = TRUE
specific_item = /obj/structure/holobox
removable_signaller = FALSE //Being a pressure plate subtype, this can also use signals.
roundstart_signaller_freq = FREQ_HOLOGRID_SOLUTION //Frequency is kept on it's own default channel however.
active = TRUE
trigger_delay = 10
protected = TRUE
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
var/reward = /obj/item/reagent_containers/food/snacks/cookie
var/claimed = FALSE
/obj/item/pressure_plate/hologrid/examine(mob/user)
. = ..()
if(claimed)
. += "<span class='notice'>This one appears to be spent already.</span>"
/obj/item/pressure_plate/hologrid/trigger()
reward = new reward(loc)
flick("lasergrid_a",src)
icon_state = "lasergrid_full"
/obj/item/pressure_plate/hologrid/Crossed(atom/movable/AM)
. = ..()
if(trigger_item && istype(AM, specific_item) && !claimed)
claimed = TRUE
flick("laserbox_burn", AM)
sleep(15)
qdel(AM)
@@ -516,6 +516,7 @@
new /obj/item/clothing/mask/chameleon/broken(src)
new /obj/item/clothing/neck/chameleon/broken(src)
new /obj/item/storage/backpack/chameleon/broken(src)
new /obj/item/storage/belt/chameleon/broken(src)
new /obj/item/radio/headset/chameleon/broken(src)
new /obj/item/stamp/chameleon/broken(src)
new /obj/item/pda/chameleon/broken(src)
+8 -6
View File
@@ -487,15 +487,17 @@
name = "explosive lance"
var/obj/item/grenade/explosive = null
/obj/item/twohanded/spear/explosive/Initialize(mapload, obj/item/grenade/G)
/obj/item/twohanded/spear/explosive/Initialize(mapload)
. = ..()
if (!G)
G = new /obj/item/grenade/iedcasing() //For admin-spawned explosive lances
set_explosive(new /obj/item/grenade/iedcasing()) //For admin-spawned explosive lances
/obj/item/twohanded/spear/explosive/proc/set_explosive(obj/item/grenade/G)
if(explosive)
QDEL_NULL(explosive)
G.forceMove(src)
explosive = G
desc = "A makeshift spear with [G] attached to it"
update_icon()
/obj/item/twohanded/spear/explosive/CheckParts(list/parts_list)
var/obj/item/grenade/G = locate() in parts_list
@@ -507,7 +509,7 @@
icon_prefix = lancePart.icon_prefix
parts_list -= G
parts_list -= lancePart
Initialize(src.loc, G)
set_explosive(G)
qdel(lancePart)
..()
@@ -34,5 +34,5 @@
/datum/reagent/blob/networked_fibers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
reac_volume = ..()
M.apply_damage(0.6*reac_volume, BRUTE)
if(M)
if(!QDELETED(M))
M.apply_damage(0.6*reac_volume, BURN)
+1 -1
View File
@@ -10,7 +10,7 @@
for(var/obj/item/I in world)
CHECK_TICK
if(!(I.flags_1 & INITIALIZED_1))
if(!(I.flags_1 & INITIALIZED_1) || QDELETED(I))
continue
I.AddComponent(/datum/component/fantasy)
+2 -3
View File
@@ -154,9 +154,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
/mob/dead/observer/Destroy()
// Update our old body's medhud since we're abandoning it
if(mind)
var/mob/living/carbon/current = mind.current
current.med_hud_set_status()
if(mind && mind.current)
mind.current.med_hud_set_status()
GLOB.ghost_images_default -= ghostimage_default
QDEL_NULL(ghostimage_default)
+1 -1
View File
@@ -959,7 +959,7 @@
. = UI_INTERACTIVE
/obj/machinery/power/apc/ui_act(action, params)
if(..() || !can_use(usr, 1) || (locked && !usr.has_unlimited_silicon_privilege && !failure_timer))
if(..() || !can_use(usr, 1) || (locked && !usr.has_unlimited_silicon_privilege && !failure_timer && action != "toggle_nightshift"))
return
switch(action)
if("lock")
+17 -15
View File
@@ -90,6 +90,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
critical_machine = TRUE
//If we ever start to care about all gasses, make this based on type and apply it as a for loop
var/list/gas_trans = list("PL" = PLASMA_TRANSMIT_MODIFIER, "O2" = OXYGEN_TRANSMIT_MODIFIER, "TRIT" = TRITIUM_TRANSMIT_MODIFIER, "PLX" = PLUOXIUM_TRANSMIT_MODIFIER, "BZ" = BZ_TRANSMIT_MODIFIER)
var/gasefficency = 0.15
var/base_icon_state = "darkmatter"
@@ -114,15 +116,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning
var/power = 0
var/gas_change_rate = 0.05
var/n2comp = 0 // raw composition of each gas in the chamber, ranges from 0 to 1
var/plasmacomp = 0
var/o2comp = 0
var/co2comp = 0
var/pluoxiumcomp = 0
var/n2ocomp = 0
var/tritiumcomp = 0
var/bzcomp = 0
var/n2ocomp = 0
var/pluoxiumcomp = 0
var/pluoxiumbonus = 0
@@ -354,7 +356,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
var/datum/gas_mixture/env = T.return_air()
var/datum/gas_mixture/removed
if(produces_gas)
//Remove gas from surrounding area
removed = env.remove(gasefficency * env.total_moles())
@@ -400,17 +401,18 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
//This is more error prevention, according to all known laws of atmos, gas_mix.remove() should never make negative mol values.
//But this is tg
//Lets get the proportions of the gasses in the mix
//Lets get the proportions of the gasses in the mix and then slowly move our comp to that value
//Can cause an overestimation of mol count, should stabalize things though.
//Prevents huge bursts of gas/heat when a large amount of something is introduced
//They range between 0 and 1
plasmacomp = max(removed.gases[/datum/gas/plasma][MOLES]/combined_gas, 0)
o2comp = max(removed.gases[/datum/gas/oxygen][MOLES]/combined_gas, 0)
co2comp = max(removed.gases[/datum/gas/carbon_dioxide][MOLES]/combined_gas, 0)
pluoxiumcomp = max(removed.gases[/datum/gas/pluoxium][MOLES]/combined_gas, 0)
tritiumcomp = max(removed.gases[/datum/gas/tritium][MOLES]/combined_gas, 0)
bzcomp = max(removed.gases[/datum/gas/bz][MOLES]/combined_gas, 0)
n2ocomp = max(removed.gases[/datum/gas/nitrous_oxide][MOLES]/combined_gas, 0)
n2comp = max(removed.gases[/datum/gas/nitrogen][MOLES]/combined_gas, 0)
plasmacomp += CLAMP(max(removed.gases[/datum/gas/plasma][MOLES]/combined_gas, 0) - plasmacomp, -1, gas_change_rate)
o2comp += CLAMP(max(removed.gases[/datum/gas/oxygen][MOLES]/combined_gas, 0) - o2comp, -1, gas_change_rate)
co2comp += CLAMP(max(removed.gases[/datum/gas/carbon_dioxide][MOLES]/combined_gas, 0) - co2comp, -1, gas_change_rate)
pluoxiumcomp += CLAMP(max(removed.gases[/datum/gas/pluoxium][MOLES]/combined_gas, 0) - pluoxiumcomp, -1, gas_change_rate)
tritiumcomp += CLAMP(max(removed.gases[/datum/gas/tritium][MOLES]/combined_gas, 0) - tritiumcomp, -1, gas_change_rate)
bzcomp += CLAMP(max(removed.gases[/datum/gas/bz][MOLES]/combined_gas, 0) - bzcomp, -1, gas_change_rate)
n2ocomp += CLAMP(max(removed.gases[/datum/gas/nitrous_oxide][MOLES]/combined_gas, 0) - n2ocomp, -1, gas_change_rate)
n2comp += CLAMP(max(removed.gases[/datum/gas/nitrogen][MOLES]/combined_gas, 0) - n2comp, -1, gas_change_rate)
//We're concerned about pluoxium being too easy to abuse at low percents, so we make sure there's a substantial amount.
if(pluoxiumcomp >= 0.15)
@@ -425,7 +427,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
//Value between 6 and 1
dynamic_heat_resistance = max((n2ocomp * N2O_HEAT_RESISTANCE) + ((pluoxiumcomp * PLUOXIUM_HEAT_RESISTANCE) * pluoxiumbonus), 1)
//Value between 30 and -5, used to determine radiation output as it concerns things like collecters
power_transmission_bonus = (plasmacomp * PLASMA_TRANSMIT_MODIFIER) + (o2comp * OXYGEN_TRANSMIT_MODIFIER) + (bzcomp * BZ_TRANSMIT_MODIFIER) + (tritiumcomp * TRITIUM_TRANSMIT_MODIFIER) + ((pluoxiumcomp * PLUOXIUM_TRANSMIT_MODIFIER) * pluoxiumbonus)
power_transmission_bonus = (plasmacomp * gas_trans["PL"]) + (o2comp * gas_trans["O2"]) + (bzcomp * gas_trans["BZ"]) + (tritiumcomp * gas_trans["TRIT"]) + ((pluoxiumcomp * gas_trans["PLX"]) * pluoxiumbonus)
//more moles of gases are harder to heat than fewer, so let's scale heat damage around them
mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25)
@@ -0,0 +1,32 @@
/obj/machinery/door/keycard/office
name = "management airlock"
desc = "The boss man gets the best stuff. Always and forever."
puzzle_id = "factory1"
/obj/item/keycard/office
name = "management keycard"
desc = "The Brewzone, first rate brewing and packaging. This one is labeled 'office'."
color = "#f05812"
puzzle_id = "factory1"
/obj/machinery/door/keycard/stockroom
name = "stockroom airlock"
desc = "The boss man gets the best stuff. Always and forever."
puzzle_id = "factory2"
/obj/item/keycard/stockroom
name = "stockroom keycard"
desc = "The Heck Brewzone, first rate brewing and packaging. This one is labeled 'stockroom'."
color = "#1272f0"
puzzle_id = "factory2"
/obj/machinery/door/keycard/entry
name = "secure airlock"
desc = "The boss man gets the best stuff. Always and forever."
puzzle_id = "factory3"
/obj/item/keycard/entry
name = "secure keycard"
desc = "The Heck Brewzone, first rate brewing and packaging. This one is labeled 'front door'."
color = "#12f049"
puzzle_id = "factory3"
+2 -1
View File
@@ -33,7 +33,8 @@
. = ..()
if(!proximity)
return
user.say(catchphrase, forced = "spell")
if(catchphrase)
user.say(catchphrase, forced = "spell")
playsound(get_turf(user), on_use_sound,50,TRUE)
charges--
if(charges <= 0)
+48
View File
@@ -51,6 +51,54 @@
-->
<div class="commit sansserif">
<h2 class="date">15 February 2020</h2>
<h3 class="author">BadSS13Player updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">The Exosuit Fabricator's sync with R&D operation is now instant.</li>
</ul>
<h3 class="author">Buggy123 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Random mineral turfs no longer cause large amounts of turf changes on initialization.</li>
</ul>
<h3 class="author">Cobby updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Buffs Surgery XP values</li>
</ul>
<h3 class="author">Krysonism updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">The Cosa Nostra starter pack has been added to cargo as a contraband crate.</li>
<li class="rscadd">Added pictures of the virgin mary, burning one of these will let you pick a mafia nickname.</li>
<li class="rscadd">The beige suit, beige fedora and white fedora clothing items have been added to the game.</li>
<li class="imageadd">The non-job fedoras and the white suit have been resprited.</li>
</ul>
<h3 class="author">Skoglol updated:</h3>
<ul class="changes bgimages16">
<li class="spellcheck">Unhusking someone with synthflesh will no longer tell everyone they were the one to fix the corpse.</li>
</ul>
<h3 class="author">XDTM updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixed nanite shutdown timer not properly shutting down nanites.</li>
</ul>
<h3 class="author">actioninja updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">tgui-next for NTOS: AI restorer, File Manager, NetDOS, Net Monitor, and Revelation</li>
<li class="rscdel">Creation of TXT Files on modular computer has been indefinitely removed</li>
<li class="rscdel">Due to architecture concerns, NTNet Transfer has been indefinitely removed from NTOS hardware.</li>
</ul>
<h3 class="author">nianjiilical updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Some weird shit happened in space, and now Ethereals are appearing in new colors. Scientists are baffled.</li>
</ul>
<h3 class="author">nightred updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Space Suits warm the wearer, and use Cells</li>
<li class="rscadd">Suit Storage charges Space Suits</li>
<li class="rscadd">EMP's cause Hard Suit's to burn the wearer</li>
<li class="rscadd">Engineering now has emp proof cells with the suits</li>
<li class="rscadd">Hud status for space suit power level</li>
<li class="rscadd">ERT hardsuits get EMP protection AND ONLY THEM</li>
</ul>
<h2 class="date">14 February 2020</h2>
<h3 class="author">Arkatos updated:</h3>
<ul class="changes bgimages16">
+36
View File
@@ -37146,3 +37146,39 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
nemvar:
- rscadd: Replaced the effect of the "two left feet" mutation with random knockdowns
while moving.
2020-02-15:
BadSS13Player:
- tweak: The Exosuit Fabricator's sync with R&D operation is now instant.
Buggy123:
- tweak: Random mineral turfs no longer cause large amounts of turf changes on initialization.
Cobby:
- balance: Buffs Surgery XP values
Krysonism:
- rscadd: The Cosa Nostra starter pack has been added to cargo as a contraband
crate.
- rscadd: Added pictures of the virgin mary, burning one of these will let you pick
a mafia nickname.
- rscadd: The beige suit, beige fedora and white fedora clothing items have been
added to the game.
- imageadd: The non-job fedoras and the white suit have been resprited.
Skoglol:
- spellcheck: Unhusking someone with synthflesh will no longer tell everyone they
were the one to fix the corpse.
XDTM:
- bugfix: Fixed nanite shutdown timer not properly shutting down nanites.
actioninja:
- rscadd: 'tgui-next for NTOS: AI restorer, File Manager, NetDOS, Net Monitor, and
Revelation'
- rscdel: Creation of TXT Files on modular computer has been indefinitely removed
- rscdel: Due to architecture concerns, NTNet Transfer has been indefinitely removed
from NTOS hardware.
nianjiilical:
- rscadd: Some weird shit happened in space, and now Ethereals are appearing in
new colors. Scientists are baffled.
nightred:
- rscadd: Space Suits warm the wearer, and use Cells
- rscadd: Suit Storage charges Space Suits
- rscadd: EMP's cause Hard Suit's to burn the wearer
- rscadd: Engineering now has emp proof cells with the suits
- rscadd: Hud status for space suit power level
- rscadd: ERT hardsuits get EMP protection AND ONLY THEM
@@ -1,9 +0,0 @@
author: "nightred"
delete-after: True
changes:
- rscadd: "Space Suits warm the wearer, and use Cells"
- rscadd: "Suit Storage charges Space Suits"
- rscadd: "EMP's cause Hard Suit's to burn the wearer"
- rscadd: "Engineering now has emp proof cells with the suits"
- rscadd: "Hud status for space suit power level"
- rscadd: "ERT hardsuits get EMP protection AND ONLY THEM"
@@ -1,7 +0,0 @@
author: "Krysonism"
delete-after: True
changes:
- rscadd: "The Cosa Nostra starter pack has been added to cargo as a contraband crate."
- rscadd: "Added pictures of the virgin mary, burning one of these will let you pick a mafia nickname."
- rscadd: "The beige suit, beige fedora and white fedora clothing items have been added to the game."
- imageadd: "The non-job fedoras and the white suit have been resprited."
@@ -0,0 +1,6 @@
author: "with thanks to HugBug and Buggy for helping with bug-squashing"
delete-after: True
changes:
- balance: "The effect of gas comp will now spin up and down, rather then jumping. Play around, don't break anything."
- bugfix: "Fixed low pressure hell SMs"
- admin: "Allows var editing of SM gas rad effects"
@@ -0,0 +1,6 @@
author: "necromanceranne"
delete-after: True
changes:
- balance: "Removes the stun from Krav Maga and makes it a high duration knockdown with stamina damage (20-30), respecting chest armor for the damage."
- rscadd: "Disarm intent is now a nonlethal jab that does (5-10) stamina damage. If used on people who are prone, it does (10-15) stamina damage. It also has a chance to completely disarm someone based on the amount of stamina damage they have."
- balance: "Krav Maga harm stomps/punches now respect armor and have a variance of (5-10) for punches and (5-10+5) for stomps."
@@ -0,0 +1,5 @@
author: "ArcaneMusic"
delete-after: True
changes:
- rscadd: "A new space ruin has been located in your sector. The previous owners have dubbed the place \"The Hell Factory\", despite the region being designated as an alcohol bottling facility."
- bugfix: "Fixes accidentally reverting the puzzles/trapmaking tools PR."
@@ -1,4 +0,0 @@
author: "Cobby"
delete-after: True
changes:
- balance: "Buffs Surgery XP values"
@@ -1,4 +0,0 @@
author: "Buggy123"
delete-after: True
changes:
- tweak: "Random mineral turfs no longer cause large amounts of turf changes on initialization."
@@ -1,4 +0,0 @@
author: "nianjiilical"
delete-after: True
changes:
- rscadd: "Some weird shit happened in space, and now Ethereals are appearing in new colors. Scientists are baffled."
@@ -1,4 +0,0 @@
author: "Skoglol"
delete-after: True
changes:
- spellcheck: "Unhusking someone with synthflesh will no longer tell everyone they were the one to fix the corpse."
@@ -1,4 +0,0 @@
author: "XDTM"
delete-after: True
changes:
- bugfix: "Fixed nanite shutdown timer not properly shutting down nanites."
@@ -1,6 +0,0 @@
author: "actioninja"
delete-after: True
changes:
- rscadd: "tgui-next for NTOS: AI restorer, File Manager, NetDOS, Net Monitor, and Revelation"
- rscdel: "Creation of TXT Files on modular computer has been indefinitely removed"
- rscdel: "Due to architecture concerns, NTNet Transfer has been indefinitely removed from NTOS hardware."
@@ -1,4 +0,0 @@
author: "BadSS13Player"
delete-after: True
changes:
- tweak: "The Exosuit Fabricator's sync with R&D operation is now instant."
@@ -0,0 +1,4 @@
author: "Arkatos"
delete-after: True
changes:
- tweak: "Added broken chameleon belt to the broken chameleon kit."
@@ -0,0 +1,4 @@
author: "Thunder12345"
delete-after: True
changes:
- imageadd: "Added missing attached tank sprites for TTVs"
@@ -0,0 +1,4 @@
author: "nightred"
delete-after: True
changes:
- tweak: "Turn night mode off or on when the APC is locked"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

+2987 -2985
View File
File diff suppressed because it is too large Load Diff
@@ -197,7 +197,6 @@ export const Apc = props => {
<Button
icon="lightbulb-o"
content={data.nightshiftLights ? 'Enabled' : 'Disabled'}
disabled={locked}
onClick={() => act('toggle_nightshift')} />
)} />
</Section>
File diff suppressed because one or more lines are too long