mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
Merge branch 'master' into master
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
@@ -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)
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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
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
Reference in New Issue
Block a user