Merge remote-tracking branch 'upstream/master' into just-defibrillator-things
@@ -124,6 +124,10 @@
|
||||
name = "Pyromancer REAL_NAME"
|
||||
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "ONI SOMA!")
|
||||
|
||||
/datum/dog_fashion/head/black_wizard
|
||||
name = "Necromancer REAL_NAME"
|
||||
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
|
||||
|
||||
/datum/dog_fashion/head/cardborg
|
||||
name = "Borgi"
|
||||
speak = list("Ping!","Beep!","Woof!")
|
||||
@@ -148,6 +152,8 @@
|
||||
name = "Corgi Tech REAL_NAME"
|
||||
desc = "The reason your yellow gloves have chew-marks."
|
||||
|
||||
/datum/dog_fashion/head/softcap
|
||||
|
||||
/datum/dog_fashion/head/reindeer
|
||||
name = "REAL_NAME the red-nosed Corgi"
|
||||
emote_hear = list("lights the way!", "illuminates.", "yaps!")
|
||||
@@ -208,3 +214,38 @@
|
||||
/datum/dog_fashion/head/fried_vox_empty
|
||||
name = "Colonel REAL_NAME"
|
||||
desc = "Keep away from live vox."
|
||||
|
||||
/datum/dog_fashion/head/HoS
|
||||
name = "Head of Security REAL_NAME"
|
||||
desc = "Probably better than the last HoS."
|
||||
|
||||
/datum/dog_fashion/head/beret/sec
|
||||
name = "Officer REAL_NAME"
|
||||
desc = "Ever-loyal, ever-vigilant."
|
||||
|
||||
/datum/dog_fashion/head/bowlerhat
|
||||
name = "REAL_NAME"
|
||||
desc = "A sophisticated city gent."
|
||||
|
||||
/datum/dog_fashion/head/surgery
|
||||
name = "Nurse-in-Training REAL_NAME"
|
||||
desc = "The most adorable bed-side manner ever."
|
||||
|
||||
/datum/dog_fashion/head/bucket
|
||||
name = "REAL_NAME"
|
||||
desc = "A janitor's best friend."
|
||||
|
||||
/datum/dog_fashion/head/justice_wig
|
||||
name = "Arbiter REAL_NAME"
|
||||
desc = "Head of the High Court of Cute."
|
||||
|
||||
/datum/dog_fashion/head/wizard/magus
|
||||
name = "Battlemage REAL_NAME"
|
||||
|
||||
/datum/dog_fashion/head/wizard/marisa
|
||||
name = "Witch REAL_NAME"
|
||||
desc = "Flying broom not included."
|
||||
|
||||
/datum/dog_fashion/head/roman
|
||||
name = "Imperator REAL_NAME"
|
||||
desc = "For the Senate and the people of Rome!"
|
||||
|
||||
@@ -331,7 +331,8 @@
|
||||
to_chat(L, "<span class='danger'><B>The blast wave from [src] tears you atom from atom!</B></span>")
|
||||
L.dust()
|
||||
to_chat(world, "<B>The AI cleansed the station of life with the doomsday device!</B>")
|
||||
SSticker.force_ending = 1
|
||||
SSticker.force_ending = TRUE
|
||||
SSticker.mode.station_was_nuked = TRUE
|
||||
|
||||
//AI Turret Upgrade: Increases the health and damage of all turrets.
|
||||
/datum/AI_Module/large/upgrade_turrets
|
||||
@@ -785,4 +786,3 @@
|
||||
/datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI)
|
||||
if(AI.builtInCamera)
|
||||
QDEL_NULL(AI.builtInCamera)
|
||||
|
||||
|
||||
@@ -262,11 +262,13 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
|
||||
|
||||
/datum/objective/block/check_completion()
|
||||
if(!istype(owner.current, /mob/living/silicon))
|
||||
return 0
|
||||
return FALSE
|
||||
if(SSticker.mode.station_was_nuked)
|
||||
return TRUE
|
||||
if(SSshuttle.emergency.mode < SHUTTLE_ENDGAME)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!owner.current)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/area/A = SSshuttle.emergency.areaInstance
|
||||
|
||||
@@ -276,9 +278,9 @@ GLOBAL_LIST_INIT(potential_theft_objectives, (subtypesof(/datum/theft_objective)
|
||||
|
||||
if(player.mind && player.stat != DEAD)
|
||||
if(get_area(player) == A)
|
||||
return 0 // If there are any other organic mobs on the shuttle, you failed the objective.
|
||||
return FALSE // If there are any other organic mobs on the shuttle, you failed the objective.
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/objective/escape
|
||||
explanation_text = "Escape on the shuttle or an escape pod alive and free."
|
||||
|
||||
@@ -136,15 +136,14 @@ GLOBAL_VAR_INIT(sent_strike_team, 0)
|
||||
/client/proc/create_death_commando(obj/spawn_location, is_leader = FALSE)
|
||||
var/mob/living/carbon/human/new_commando = new(spawn_location.loc)
|
||||
var/commando_leader_rank = pick("Lieutenant", "Captain", "Major")
|
||||
var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/commando_name = pick(GLOB.last_names)
|
||||
var/commando_name = pick(GLOB.commando_names)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
if(is_leader)
|
||||
A.age = rand(35,45)
|
||||
A.real_name = "[commando_leader_rank] [commando_name]"
|
||||
else
|
||||
A.real_name = "[commando_rank] [commando_name]"
|
||||
A.real_name = "[commando_name]"
|
||||
A.copy_to(new_commando)
|
||||
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
#define UPLOAD_LIMIT 10485760 //Restricts client uploads to the server to 10MB //Boosted this thing. What's the worst that can happen?
|
||||
#define MIN_CLIENT_VERSION 513 // Minimum byond major version required to play.
|
||||
//I would just like the code ready should it ever need to be used.
|
||||
#define SUGGESTED_CLIENT_VERSION 513 // only integers (e.g: 513, 514) are useful here. This is the part BEFORE the ".", IE 513 out of 513.1536
|
||||
#define SUGGESTED_CLIENT_BUILD 1536 // only integers (e.g: 1536, 1539) are useful here. This is the part AFTER the ".", IE 1536 out of 513.1536
|
||||
#define SUGGESTED_CLIENT_VERSION 513 // only integers (e.g: 513, 514) are useful here. This is the part BEFORE the ".", IE 513 out of 513.1542
|
||||
#define SUGGESTED_CLIENT_BUILD 1542 // only integers (e.g: 1542, 1543) are useful here. This is the part AFTER the ".", IE 1542 out of 513.1542
|
||||
|
||||
#define SSD_WARNING_TIMER 30 // cycles, not seconds, so 30=60s
|
||||
|
||||
|
||||
@@ -55,14 +55,12 @@
|
||||
icon_state = "hardhat0_orange"
|
||||
item_state = "hardhat0_orange"
|
||||
item_color = "orange"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hardhat/red
|
||||
name = "firefighter helmet"
|
||||
icon_state = "hardhat0_red"
|
||||
item_state = "hardhat0_red"
|
||||
item_color = "red"
|
||||
dog_fashion = null
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
@@ -84,7 +82,6 @@
|
||||
icon_state = "hardhat0_dblue"
|
||||
item_state = "hardhat0_dblue"
|
||||
item_color = "dblue"
|
||||
dog_fashion = null
|
||||
|
||||
/obj/item/clothing/head/hardhat/atmos
|
||||
name = "atmospheric technician's firefighting helmet"
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
icon_state = "roman"
|
||||
item_state = "roman"
|
||||
strip_delay = 100
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/roman
|
||||
|
||||
/obj/item/clothing/head/helmet/roman/fake
|
||||
desc = "An ancient helmet made of plastic and leather."
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
name = "captain's parade cap"
|
||||
desc = "Worn only by Captains with an abundance of class."
|
||||
icon_state = "capcap"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/captain
|
||||
|
||||
//Head of Personnel
|
||||
/obj/item/clothing/head/hopcap
|
||||
@@ -106,11 +106,13 @@
|
||||
icon_state = "hoscap"
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60)
|
||||
strip_delay = 80
|
||||
dog_fashion = /datum/dog_fashion/head/HoS
|
||||
|
||||
/obj/item/clothing/head/HoS/beret
|
||||
name = "head of security's beret"
|
||||
desc = "A robust beret for the Head of Security, for looking stylish while not sacrificing protection."
|
||||
icon_state = "beret_hos_black"
|
||||
dog_fashion = /datum/dog_fashion/head/HoS
|
||||
|
||||
/obj/item/clothing/head/warden
|
||||
name = "warden's police hat"
|
||||
@@ -134,7 +136,7 @@
|
||||
icon_state = "beret_officer"
|
||||
armor = list("melee" = 35, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
|
||||
strip_delay = 60
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/beret/sec
|
||||
|
||||
/obj/item/clothing/head/beret/sec/warden
|
||||
name = "warden's beret"
|
||||
@@ -180,15 +182,19 @@
|
||||
/obj/item/clothing/head/surgery/purple
|
||||
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is deep purple."
|
||||
icon_state = "surgcap_purple"
|
||||
dog_fashion = /datum/dog_fashion/head/surgery
|
||||
|
||||
/obj/item/clothing/head/surgery/blue
|
||||
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is baby blue."
|
||||
icon_state = "surgcap_blue"
|
||||
dog_fashion = /datum/dog_fashion/head/surgery
|
||||
|
||||
/obj/item/clothing/head/surgery/green
|
||||
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs. This one is dark green."
|
||||
icon_state = "surgcap_green"
|
||||
dog_fashion = /datum/dog_fashion/head/surgery
|
||||
|
||||
/obj/item/clothing/head/surgery/black
|
||||
desc = "A cap coroners wear during autopsies. Keeps their hair from falling into the cadavers. It is as dark than the coroner's humor."
|
||||
icon_state = "surgcap_black"
|
||||
dog_fashion = /datum/dog_fashion/head/surgery
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
desc = "A fancy powdered wig given to arbitrators of the law. It looks itchy."
|
||||
icon_state = "jwig"
|
||||
item_state = "jwig"
|
||||
dog_fashion = /datum/dog_fashion/head/justice_wig
|
||||
|
||||
/obj/item/clothing/head/beret/blue
|
||||
icon_state = "beret_blue"
|
||||
@@ -187,6 +188,7 @@
|
||||
icon_state = "bowler_hat"
|
||||
item_state = "bowler_hat"
|
||||
desc = "For that industrial age look."
|
||||
dog_fashion = /datum/dog_fashion/head/bowlerhat
|
||||
|
||||
/obj/item/clothing/head/beaverhat
|
||||
name = "beaver hat"
|
||||
|
||||
@@ -38,35 +38,35 @@
|
||||
desc = "It's a baseball hat in a tasteless red colour."
|
||||
icon_state = "redsoft"
|
||||
item_color = "red"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/blue
|
||||
name = "blue cap"
|
||||
desc = "It's a baseball hat in a tasteless blue colour."
|
||||
icon_state = "bluesoft"
|
||||
item_color = "blue"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/green
|
||||
name = "green cap"
|
||||
desc = "It's a baseball hat in a tasteless green colour."
|
||||
icon_state = "greensoft"
|
||||
item_color = "green"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/yellow
|
||||
name = "yellow cap"
|
||||
desc = "It's a baseball hat in a tasteless yellow colour."
|
||||
icon_state = "yellowsoft"
|
||||
item_color = "yellow"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/grey
|
||||
name = "grey cap"
|
||||
desc = "It's a baseball hat in a tasteful grey colour."
|
||||
icon_state = "greysoft"
|
||||
item_color = "grey"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/orange
|
||||
name = "orange cap"
|
||||
@@ -79,28 +79,28 @@
|
||||
desc = "It's a baseball hat in a tasteless white colour."
|
||||
icon_state = "mimesoft"
|
||||
item_color = "mime"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/purple
|
||||
name = "purple cap"
|
||||
desc = "It's a baseball hat in a tasteless purple colour."
|
||||
icon_state = "purplesoft"
|
||||
item_color = "purple"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/black
|
||||
name = "black cap"
|
||||
desc = "It's a baseball hat in a tasteless black colour."
|
||||
icon_state = "blacksoft"
|
||||
item_color = "black"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/rainbow
|
||||
name = "rainbow cap"
|
||||
desc = "It's a baseball hat in a bright rainbow of colors."
|
||||
icon_state = "rainbowsoft"
|
||||
item_color = "rainbow"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/sec
|
||||
name = "security cap"
|
||||
@@ -109,7 +109,7 @@
|
||||
item_color = "sec"
|
||||
armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
|
||||
strip_delay = 60
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/softcap
|
||||
|
||||
/obj/item/clothing/head/soft/sec/corp
|
||||
name = "corporate security cap"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
name = "black wizard hat"
|
||||
desc = "Strange-looking black hat-wear that most certainly belongs to a real skeleton. Spooky."
|
||||
icon_state = "blackwizard"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/black_wizard
|
||||
|
||||
/obj/item/clothing/head/wizard/clown
|
||||
name = "purple wizard hat"
|
||||
@@ -58,14 +58,14 @@
|
||||
name = "witch hat"
|
||||
desc = "Strange-looking hat-wear, makes you want to cast fireballs."
|
||||
icon_state = "marisa"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/wizard/marisa
|
||||
|
||||
/obj/item/clothing/head/wizard/magus
|
||||
name = "magus helm"
|
||||
desc = "A mysterious helmet that hums with an unearthly power"
|
||||
icon_state = "magus"
|
||||
item_state = "magus"
|
||||
dog_fashion = null
|
||||
dog_fashion = /datum/dog_fashion/head/wizard/magus
|
||||
|
||||
/obj/item/clothing/head/wizard/amp
|
||||
name = "psychic amplifier"
|
||||
|
||||
@@ -361,6 +361,13 @@
|
||||
/obj/item/bikehorn)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/sad_trombone
|
||||
name = "Sad trombone"
|
||||
result = list(/obj/item/instrument/trombone/sad)
|
||||
time = 20
|
||||
reqs = list(/obj/item/stack/sheet/mineral/bananium = 5)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/blackcarpet
|
||||
name = "Black Carpet"
|
||||
result = list(/obj/item/stack/tile/carpet/black)
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
"<span class='notice'>You hear someone rustle around in a plastic bag, and remove something.</span>")
|
||||
overlays.Cut() //remove the overlays
|
||||
user.put_in_hands(I)
|
||||
I.pickup(user)
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
icon_state = "evidenceobj"
|
||||
desc = "An empty evidence bag."
|
||||
@@ -83,4 +84,3 @@
|
||||
else
|
||||
to_chat(user, "[src] is empty.")
|
||||
icon_state = "evidenceobj"
|
||||
|
||||
|
||||
@@ -18,13 +18,13 @@
|
||||
/mob/living/carbon/proc/custom_dreams(list/dreamlist, mob/user)
|
||||
var/list/newlist = dreamlist.Copy()
|
||||
for(var/i in 1 to newlist.len)
|
||||
newlist[i] = replacetext(newlist[i], "\[DREAMER\]", "[user.name]")
|
||||
newlist[i] = replacetext(newlist[i], "DREAMER", "[user.name]")
|
||||
return newlist
|
||||
|
||||
|
||||
//NIGHTMARES
|
||||
/mob/living/carbon/proc/nightmare()
|
||||
var/list/nightmares = GLOB.nightmare_strings.Copy()
|
||||
var/list/nightmares = custom_dreams(GLOB.nightmare_strings, src)
|
||||
|
||||
for(var/obj/item/bedsheet/sheet in loc)
|
||||
nightmares += sheet.nightmare_messages
|
||||
|
||||
@@ -135,6 +135,16 @@
|
||||
playsound (src, 'sound/instruments/trombone/Cn4.mid', 100,1,-1)
|
||||
..()
|
||||
|
||||
/obj/item/instrument/trombone/sad
|
||||
name = "sad trombone"
|
||||
desc = "Wah. Waah. Waaah. Waaaaaaah."
|
||||
force = 0
|
||||
attack_verb = list("Wahed", "Waahed", "Waaahed", "Honked")
|
||||
|
||||
/obj/item/instrument/trombone/sad/attack(mob/living/carbon/C, mob/user)
|
||||
playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 1, -1)
|
||||
..()
|
||||
|
||||
/obj/item/instrument/recorder
|
||||
name = "recorder"
|
||||
desc = "Just like in school, playing ability and all."
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
var/obj/item/grab/G = D.grabbedby(A,1)
|
||||
if(G)
|
||||
G.state = GRAB_AGGRESSIVE //Instant aggressive grab
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Grabbed", ATKLOG_ALL)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
@@ -27,6 +28,7 @@
|
||||
if(prob(D.getBruteLoss()) && !D.lying)
|
||||
D.visible_message("<span class='warning'>[D] stumbles and falls!</span>", "<span class='userdanger'>The blow sends you to the ground!</span>")
|
||||
D.Weaken(4)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Punched", ATKLOG_ALL)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/explaination_header(user)
|
||||
|
||||
@@ -101,6 +101,14 @@
|
||||
addtimer(CALLBACK(src, .proc/react_buzz), 5)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/bot/honkbot/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/weldingtool) && user.a_intent != INTENT_HARM) // Any intent but harm will heal, so we shouldn't get angry.
|
||||
return
|
||||
if(!istype(W, /obj/item/screwdriver) && (W.force) && (!target) && (W.damtype != STAMINA) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
|
||||
retaliate(user)
|
||||
addtimer(CALLBACK(src, .proc/react_buzz), 5)
|
||||
|
||||
/mob/living/simple_animal/bot/honkbot/emag_act(mob/user)
|
||||
..()
|
||||
if(emagged == 2)
|
||||
@@ -167,6 +175,9 @@
|
||||
sensor_blink()
|
||||
if(!spam_flag)
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(H.check_ear_prot() >= HEARING_PROTECTION_MAJOR)
|
||||
return
|
||||
C.stuttering = 20 //stammer
|
||||
C.AdjustEarDamage(0, 5) //far less damage than the H.O.N.K.
|
||||
C.Jitter(50)
|
||||
@@ -202,6 +213,7 @@
|
||||
// if can't reach perp for long enough, go idle
|
||||
if(frustration >= 5) //gives up easier than beepsky
|
||||
walk_to(src, 0)
|
||||
playsound(loc, 'sound/misc/sadtrombone.ogg', 25, 1, -1)
|
||||
back_to_idle()
|
||||
return
|
||||
if(target) // make sure target exists
|
||||
@@ -257,14 +269,12 @@
|
||||
if((C.name == oldtarget_name) && (world.time < last_found + 100))
|
||||
continue
|
||||
|
||||
if(threatlevel <= 3)
|
||||
if(threatlevel <= 3 && emagged <= 1)
|
||||
if(C in view(4, src)) //keep the range short for patrolling
|
||||
if(!spam_flag)
|
||||
bike_horn()
|
||||
else if(threatlevel >= 10)
|
||||
bike_horn() //just spam the shit outta this
|
||||
else if(threatlevel >= 4)
|
||||
if(!spam_flag)
|
||||
if(!spam_flag || emagged > 1)
|
||||
target = C
|
||||
oldtarget_name = C.name
|
||||
bike_horn()
|
||||
@@ -275,6 +285,8 @@
|
||||
break
|
||||
else
|
||||
continue
|
||||
else if(emagged > 1)
|
||||
bike_horn() //just spam the shit outta this
|
||||
|
||||
/mob/living/simple_animal/bot/honkbot/explode() //doesn't drop cardboard nor its assembly, since its a very frail material.
|
||||
walk_to(src, 0)
|
||||
|
||||
@@ -280,6 +280,10 @@
|
||||
add_overlay(causality_field, TRUE)
|
||||
|
||||
var/speaking = "[emergency_alert] The supermatter has reached critical integrity failure. Emergency causality destabilization field has been activated."
|
||||
for(var/mob/M in GLOB.player_list) // for all players
|
||||
var/turf/T = get_turf(M)
|
||||
if(istype(T) && atoms_share_level(T, src)) // if the player is on the same zlevel as the SM shared
|
||||
SEND_SOUND(M, sound('sound/machines/engine_alert2.ogg')) // then send them the sound file
|
||||
radio.autosay(speaking, name, null, list(z))
|
||||
for(var/i in SUPERMATTER_COUNTDOWN_TIME to 0 step -10)
|
||||
if(damage < explosion_point) // Cutting it a bit close there engineers
|
||||
|
||||
@@ -297,6 +297,7 @@
|
||||
slot_flags = SLOT_HEAD
|
||||
resistance_flags = NONE
|
||||
container_type = OPENCONTAINER
|
||||
dog_fashion = /datum/dog_fashion/head/bucket
|
||||
|
||||
/obj/item/reagent_containers/glass/bucket/wooden
|
||||
name = "wooden bucket"
|
||||
|
||||
@@ -62,8 +62,13 @@
|
||||
Retract()
|
||||
..()
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/proc/check_cuffs()
|
||||
if(owner.handcuffed)
|
||||
to_chat(owner, "<span class='warning'>The handcuffs interfere with [src]!</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/proc/Retract()
|
||||
if(!holder || (holder in src))
|
||||
if(!holder || (holder in src) || check_cuffs())
|
||||
return
|
||||
|
||||
owner.visible_message("<span class='notice'>[owner] retracts [holder] back into [owner.p_their()] [parent_organ == "r_arm" ? "right" : "left"] arm.</span>",
|
||||
@@ -80,10 +85,9 @@
|
||||
playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/proc/Extend(obj/item/item)
|
||||
if(!(item in src))
|
||||
if(!(item in src) || check_cuffs())
|
||||
return
|
||||
|
||||
|
||||
holder = item
|
||||
|
||||
holder.flags |= NODROP
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
amputation_point = "trunk"
|
||||
encased = null
|
||||
gendered_icon = 0
|
||||
convertable_children = list(/obj/item/organ/external/groin/diona)
|
||||
|
||||
/obj/item/organ/external/groin/diona
|
||||
name = "fork"
|
||||
@@ -17,24 +18,28 @@
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
amputation_point = "upper left trunk"
|
||||
convertable_children = list(/obj/item/organ/external/arm/diona)
|
||||
|
||||
/obj/item/organ/external/arm/right/diona
|
||||
name = "right upper tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
amputation_point = "upper right trunk"
|
||||
convertable_children = list(/obj/item/organ/external/arm/right/diona)
|
||||
|
||||
/obj/item/organ/external/leg/diona
|
||||
name = "left lower tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
amputation_point = "lower left fork"
|
||||
convertable_children = list(/obj/item/organ/external/leg/diona)
|
||||
|
||||
/obj/item/organ/external/leg/right/diona
|
||||
name = "right lower tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
amputation_point = "lower right fork"
|
||||
convertable_children = list(/obj/item/organ/external/leg/right/diona)
|
||||
|
||||
/obj/item/organ/external/foot/diona
|
||||
name = "left foot"
|
||||
|
||||
@@ -1,21 +1,26 @@
|
||||
/obj/item/organ/external/chest/unbreakable
|
||||
cannot_break = TRUE
|
||||
encased = null
|
||||
convertable_children = list(/obj/item/organ/external/groin/unbreakable)
|
||||
|
||||
/obj/item/organ/external/groin/unbreakable
|
||||
cannot_break = TRUE
|
||||
|
||||
/obj/item/organ/external/arm/unbreakable
|
||||
cannot_break = TRUE
|
||||
convertable_children = list(/obj/item/organ/external/hand/unbreakable)
|
||||
|
||||
/obj/item/organ/external/arm/right/unbreakable
|
||||
cannot_break = TRUE
|
||||
convertable_children = list(/obj/item/organ/external/hand/right/unbreakable)
|
||||
|
||||
/obj/item/organ/external/leg/unbreakable
|
||||
cannot_break = TRUE
|
||||
convertable_children = list(/obj/item/organ/external/foot/right/unbreakable)
|
||||
|
||||
/obj/item/organ/external/leg/right/unbreakable
|
||||
cannot_break = TRUE
|
||||
convertable_children = list(/obj/item/organ/external/foot/right/unbreakable)
|
||||
|
||||
/obj/item/organ/external/foot/unbreakable
|
||||
cannot_break = TRUE
|
||||
|
||||
@@ -112,6 +112,9 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
|
||||
if(check_flags & AB_CHECK_CONSCIOUS)
|
||||
if(owner.stat)
|
||||
return FALSE
|
||||
if(istype(owner.loc, /obj/effect/dummy/spell_jaunt))
|
||||
to_chat(owner, "<span class='warning'>No one can hear you when you are jaunting, no point in talking now!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/action/item_action/organ_action/colossus/Trigger()
|
||||
@@ -139,12 +142,15 @@ GLOBAL_DATUM_INIT(multispin_words, /regex, regex("like a record baby"))
|
||||
return FALSE
|
||||
if(owner.stat)
|
||||
return FALSE
|
||||
if(istype(owner.loc, /obj/effect/dummy/spell_jaunt))
|
||||
to_chat(owner, "<span class='warning'>No one can hear you when you are jaunting, no point in talking now!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/organ/internal/vocal_cords/colossus/handle_speech(message)
|
||||
spans = "colossus yell" //reset spans, just in case someone gets deculted or the cords change owner
|
||||
if(iscultist(owner))
|
||||
spans += " narsiesmall"
|
||||
spans += "narsiesmall"
|
||||
return "<span class=\"[spans]\">[uppertext(message)]</span>"
|
||||
|
||||
/obj/item/organ/internal/vocal_cords/colossus/speak_with(message)
|
||||
|
||||
@@ -109,4 +109,4 @@ the AI core
|
||||
the mining station
|
||||
the research station
|
||||
a beaker of strange liquid
|
||||
Captain [DREAMER]
|
||||
Captain DREAMER
|
||||
|
||||
@@ -25,4 +25,4 @@ aaaAAAaaaaAAAAAAaa
|
||||
pApErWork
|
||||
we SEE yoU
|
||||
the ceiling
|
||||
we have been waiting for you [DREAMER]
|
||||
we have been waiting for you DREAMER
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 152 KiB |