mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Fixes merge conflict
This commit is contained in:
@@ -127,7 +127,7 @@
|
||||
var/obj/item/I = target
|
||||
var/old_layer = I.layer
|
||||
var/old_plane = I.plane
|
||||
I.layer = 21
|
||||
I.layer = HUD_LAYER_SCREEN + 1
|
||||
I.plane = HUD_PLANE
|
||||
current_button.overlays += I
|
||||
I.layer = old_layer
|
||||
|
||||
+15
-15
@@ -280,7 +280,7 @@ var/record_id_num = 1001
|
||||
G.fields["p_stat"] = "Active"
|
||||
G.fields["m_stat"] = "Stable"
|
||||
G.fields["sex"] = capitalize(H.gender)
|
||||
G.fields["species"] = H.get_species()
|
||||
G.fields["species"] = H.dna.species.name
|
||||
G.fields["photo"] = get_id_photo(H)
|
||||
G.fields["photo-south"] = "'data:image/png;base64,[icon2base64(icon(G.fields["photo"], dir = SOUTH))]'"
|
||||
G.fields["photo-west"] = "'data:image/png;base64,[icon2base64(icon(G.fields["photo"], dir = WEST))]'"
|
||||
@@ -357,7 +357,7 @@ var/record_id_num = 1001
|
||||
temp = new /icon(icobase, "groin_[g]")
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
var/head = "head"
|
||||
if(head_organ.alt_head && head_organ.species.bodyflags & HAS_ALT_HEADS)
|
||||
if(head_organ.alt_head && head_organ.dna.species.bodyflags & HAS_ALT_HEADS)
|
||||
var/datum/sprite_accessory/alt_heads/alternate_head = alt_heads_list[head_organ.alt_head]
|
||||
if(alternate_head.icon_state)
|
||||
head = alternate_head.icon_state
|
||||
@@ -368,7 +368,7 @@ var/record_id_num = 1001
|
||||
if(H.body_accessory && istype(H.body_accessory, /datum/body_accessory/tail))
|
||||
temp = new/icon("icon" = H.body_accessory.icon, "icon_state" = H.body_accessory.icon_state)
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
else if(H.tail && H.species.bodyflags & HAS_TAIL)
|
||||
else if(H.tail && H.dna.species.bodyflags & HAS_TAIL)
|
||||
temp = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[H.tail]_s")
|
||||
preview_icon.Blend(temp, ICON_OVERLAY)
|
||||
|
||||
@@ -376,19 +376,19 @@ var/record_id_num = 1001
|
||||
preview_icon.Blend(E.get_icon(), ICON_OVERLAY)
|
||||
|
||||
// Skin tone
|
||||
if(H.species.bodyflags & HAS_SKIN_TONE)
|
||||
if(H.dna.species.bodyflags & HAS_SKIN_TONE)
|
||||
if(H.s_tone >= 0)
|
||||
preview_icon.Blend(rgb(H.s_tone, H.s_tone, H.s_tone), ICON_ADD)
|
||||
else
|
||||
preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
|
||||
|
||||
// Proper Skin color - Fix, you can't have HAS_SKIN_TONE *and* HAS_SKIN_COLOR
|
||||
if(H.species.bodyflags & HAS_SKIN_COLOR)
|
||||
if(H.dna.species.bodyflags & HAS_SKIN_COLOR)
|
||||
preview_icon.Blend(H.skin_colour, ICON_ADD)
|
||||
|
||||
//Tail Markings
|
||||
var/icon/t_marking_s
|
||||
if(H.species.bodyflags & HAS_TAIL_MARKINGS)
|
||||
if(H.dna.species.bodyflags & HAS_TAIL_MARKINGS)
|
||||
var/tail_marking = H.m_styles["tail"]
|
||||
var/datum/sprite_accessory/tail_marking_style = marking_styles_list[tail_marking]
|
||||
if(tail_marking_style && tail_marking_style.species_allowed)
|
||||
@@ -398,8 +398,8 @@ var/record_id_num = 1001
|
||||
preview_icon.Blend(t_marking_s, ICON_OVERLAY)
|
||||
|
||||
var/icon/face_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "bald_s")
|
||||
if(!(H.species.bodyflags & NO_EYES))
|
||||
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
|
||||
if(!(H.dna.species.bodyflags & NO_EYES))
|
||||
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.dna.species ? H.dna.species.eyes : "eyes_s")
|
||||
if(!eyes_organ)
|
||||
return
|
||||
eyes_s.Blend(eyes_organ.eye_colour, ICON_ADD)
|
||||
@@ -410,7 +410,7 @@ var/record_id_num = 1001
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
// I'll want to make a species-specific proc for this sooner or later
|
||||
// But this'll do for now
|
||||
if(head_organ.species.name == "Slime People")
|
||||
if(istype(head_organ.dna.species, /datum/species/slime))
|
||||
hair_s.Blend("[H.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else
|
||||
hair_s.Blend(head_organ.hair_colour, ICON_ADD)
|
||||
@@ -424,7 +424,7 @@ var/record_id_num = 1001
|
||||
face_s.Blend(hair_s, ICON_OVERLAY)
|
||||
|
||||
//Head Accessory
|
||||
if(head_organ.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
if(head_organ.dna.species.bodyflags & HAS_HEAD_ACCESSORY)
|
||||
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[head_organ.ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed)
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
@@ -434,7 +434,7 @@ var/record_id_num = 1001
|
||||
var/datum/sprite_accessory/facial_hair_style = facial_hair_styles_list[head_organ.f_style]
|
||||
if(facial_hair_style && facial_hair_style.species_allowed)
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(head_organ.species.name == "Slime People")
|
||||
if(istype(head_organ.dna.species, /datum/species/slime))
|
||||
facial_s.Blend("[H.skin_colour]A0", ICON_ADD) //A0 = 160 alpha.
|
||||
else
|
||||
facial_s.Blend(head_organ.facial_colour, ICON_ADD)
|
||||
@@ -448,15 +448,15 @@ var/record_id_num = 1001
|
||||
face_s.Blend(facial_s, ICON_OVERLAY)
|
||||
|
||||
//Markings
|
||||
if((H.species.bodyflags & HAS_HEAD_MARKINGS) || (H.species.bodyflags & HAS_BODY_MARKINGS))
|
||||
if(H.species.bodyflags & HAS_BODY_MARKINGS) //Body markings.
|
||||
if((H.dna.species.bodyflags & HAS_HEAD_MARKINGS) || (H.dna.species.bodyflags & HAS_BODY_MARKINGS))
|
||||
if(H.dna.species.bodyflags & HAS_BODY_MARKINGS) //Body markings.
|
||||
var/body_marking = H.m_styles["body"]
|
||||
var/datum/sprite_accessory/body_marking_style = marking_styles_list[body_marking]
|
||||
if(body_marking_style && body_marking_style.species_allowed)
|
||||
var/icon/b_marking_s = new/icon("icon" = body_marking_style.icon, "icon_state" = "[body_marking_style.icon_state]_s")
|
||||
b_marking_s.Blend(H.m_colours["body"], ICON_ADD)
|
||||
face_s.Blend(b_marking_s, ICON_OVERLAY)
|
||||
if(H.species.bodyflags & HAS_HEAD_MARKINGS) //Head markings.
|
||||
if(H.dna.species.bodyflags & HAS_HEAD_MARKINGS) //Head markings.
|
||||
var/head_marking = H.m_styles["head"]
|
||||
var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking]
|
||||
if(head_marking_style && head_marking_style.species_allowed)
|
||||
@@ -615,7 +615,7 @@ var/record_id_num = 1001
|
||||
temp.Shift(EAST, H.body_accessory.pixel_x_offset)
|
||||
if(H.body_accessory.pixel_y_offset)
|
||||
temp.Shift(NORTH, H.body_accessory.pixel_y_offset)
|
||||
if(H.species.bodyflags & HAS_SKIN_COLOR)
|
||||
if(H.dna.species.bodyflags & HAS_SKIN_COLOR)
|
||||
temp.Blend(H.skin_colour, H.body_accessory.blend_mode)
|
||||
if(t_marking_s)
|
||||
temp.Blend(t_marking_s, ICON_OVERLAY)
|
||||
|
||||
@@ -781,6 +781,30 @@
|
||||
log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted)")
|
||||
message_admins("[key_name_admin(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted)")
|
||||
|
||||
else if(href_list["makespeedy"])
|
||||
if(!check_rights(R_DEBUG|R_ADMIN))
|
||||
return
|
||||
var/obj/A = locateUID(href_list["makespeedy"])
|
||||
if(!istype(A))
|
||||
return
|
||||
A.var_edited = TRUE
|
||||
A.makeSpeedProcess()
|
||||
log_admin("[key_name(usr)] has made [A] speed process")
|
||||
message_admins("<span class='notice'>[key_name(usr)] has made [A] speed process</span>")
|
||||
return TRUE
|
||||
|
||||
else if(href_list["makenormalspeed"])
|
||||
if(!check_rights(R_DEBUG|R_ADMIN))
|
||||
return
|
||||
var/obj/A = locateUID(href_list["makenormalspeed"])
|
||||
if(!istype(A))
|
||||
return
|
||||
A.var_edited = TRUE
|
||||
A.makeNormalProcess()
|
||||
log_admin("[key_name(usr)] has made [A] process normally")
|
||||
message_admins("<span class='notice'>[key_name(usr)] has made [A] process normally</span>")
|
||||
return TRUE
|
||||
|
||||
else if(href_list["addreagent"]) /* Made on /TG/, credit to them. */
|
||||
if(!check_rights(R_DEBUG|R_ADMIN)) return
|
||||
|
||||
@@ -986,14 +1010,15 @@
|
||||
to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human")
|
||||
return
|
||||
|
||||
var/new_species = input("Please choose a new species.","Species",null) as null|anything in all_species
|
||||
var/new_species = input("Please choose a new species.","Species",null) as null|anything in GLOB.all_species
|
||||
|
||||
if(!H)
|
||||
to_chat(usr, "Mob doesn't exist anymore")
|
||||
return
|
||||
|
||||
if(H.set_species(new_species))
|
||||
to_chat(usr, "Set species of [H] to [H.species].")
|
||||
var/datum/species/S = GLOB.all_species[new_species]
|
||||
if(H.set_species(S.type))
|
||||
to_chat(usr, "Set species of [H] to [H.dna.species].")
|
||||
H.regenerate_icons()
|
||||
message_admins("[key_name_admin(usr)] has changed the species of [key_name_admin(H)] to [new_species]")
|
||||
log_admin("[key_name(usr)] has changed the species of [key_name(H)] to [new_species]")
|
||||
@@ -1327,4 +1352,4 @@
|
||||
|
||||
if(href_list["listrefresh"])
|
||||
debug_variables(locate(href_list["listrefresh"]))
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/CanContractDisease(datum/disease/D)
|
||||
if((VIRUSIMMUNE in species.species_traits) && !D.bypasses_immunity)
|
||||
if((VIRUSIMMUNE in dna.species.species_traits) && !D.bypasses_immunity)
|
||||
return 0
|
||||
for(var/thing in D.required_organs)
|
||||
if(!((locate(thing) in bodyparts) || (locate(thing) in internal_organs)))
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
#define VIRUS_SYMPTOM_LIMIT 6
|
||||
|
||||
//Visibility Flags
|
||||
#define HIDDEN_SCANNER 1
|
||||
#define HIDDEN_PANDEMIC 2
|
||||
|
||||
@@ -36,7 +36,7 @@ Bonus
|
||||
else
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.SetSpecialVoice(H.species.get_random_name(H.gender))
|
||||
H.SetSpecialVoice(H.dna.species.get_random_name(H.gender))
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -16,26 +16,26 @@
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
if(affected_mob.get_species() == "Tajaran")
|
||||
if(istajaran(affected_mob))
|
||||
to_chat(affected_mob, "<span class='notice'>You feel good.</span>")
|
||||
else
|
||||
to_chat(affected_mob, "<span class='notice'>You feel like playing with string.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
if(affected_mob.get_species() == "Tajaran")
|
||||
if(istajaran(affected_mob))
|
||||
to_chat(affected_mob, "<span class='danger'>Something in your throat itches.</span>")
|
||||
else
|
||||
to_chat(affected_mob, "<span class='danger'>You NEED to find a mouse.</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
if(affected_mob.get_species() == "Tajaran")
|
||||
if(istajaran(affected_mob))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel something in your throat!</span>")
|
||||
affected_mob.emote("cough")
|
||||
else
|
||||
affected_mob.say(pick(list("Mew", "Meow!", "Nya!~")))
|
||||
if(4)
|
||||
if(prob(5))
|
||||
if(affected_mob.get_species() == "Tajaran")
|
||||
if(istajaran(affected_mob))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up a hairball!</span>", \
|
||||
"<span class='userdanger'>You cough up a hairball!</span>")
|
||||
affected_mob.Stun(5)
|
||||
@@ -43,7 +43,7 @@
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob]'s form contorts into something more feline!</span>", \
|
||||
"<span class='userdanger'>YOU TURN INTO A TAJARAN!</span>")
|
||||
var/mob/living/carbon/human/catface = affected_mob
|
||||
catface.set_species("Tajaran")
|
||||
catface.set_species(/datum/species/tajaran)
|
||||
|
||||
|
||||
/datum/disease/kingstons/advanced
|
||||
@@ -57,9 +57,9 @@
|
||||
permeability_mod = 0.75
|
||||
desc = "If left untreated the subject will mutate to a different species."
|
||||
severity = BIOHAZARD
|
||||
var/list/virspecies = list("Human", "Tajaran", "Unathi", "Skrell", "Vulpkanin")//no karma races sorrys.
|
||||
var/list/virspecies = list(/datum/species/human, /datum/species/tajaran, /datum/species/unathi,/datum/species/skrell, /datum/species/vulpkanin) //no karma races sorrys.
|
||||
var/list/virsuffix = list("pox", "rot", "flu", "cough", "-gitis", "cold", "rash", "itch", "decay")
|
||||
var/chosentype
|
||||
var/datum/species/chosentype
|
||||
var/chosensuff
|
||||
|
||||
/datum/disease/kingstons/advanced/New()
|
||||
@@ -70,26 +70,27 @@
|
||||
|
||||
/datum/disease/kingstons/advanced/stage_act()
|
||||
..()
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='notice'>You feel awkward.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You itch.</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>Your skin starts to flake!</span>")
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/twisted = affected_mob
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='notice'>You feel awkward.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='danger'>You itch.</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='danger'>Your skin starts to flake!</span>")
|
||||
|
||||
if(4)
|
||||
if(prob(5))
|
||||
if(affected_mob.get_species() != chosentype)
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob]'s skin splits and form contorts!</span>", \
|
||||
"<span class='userdanger'>Your body mutates into a [chosentype]!</span>")
|
||||
var/mob/living/carbon/human/twisted = affected_mob
|
||||
twisted.set_species(chosentype)
|
||||
else
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] scratches at thier skin!</span>", \
|
||||
"<span class='userdanger'>You scratch your skin to try not to itch!</span>")
|
||||
affected_mob.adjustBruteLoss(-5)
|
||||
affected_mob.adjustStaminaLoss(5)
|
||||
if(4)
|
||||
if(prob(5))
|
||||
if(!istype(twisted.dna.species, chosentype))
|
||||
twisted.visible_message("<span class='danger'>[twisted]'s skin splits and form contorts!</span>", \
|
||||
"<span class='userdanger'>Your body mutates into a [initial(chosentype.name)]!</span>")
|
||||
twisted.set_species(chosentype)
|
||||
else
|
||||
twisted.visible_message("<span class='danger'>[twisted] scratches at thier skin!</span>", \
|
||||
"<span class='userdanger'>You scratch your skin to try not to itch!</span>")
|
||||
twisted.adjustBruteLoss(-5)
|
||||
twisted.adjustStaminaLoss(5)
|
||||
@@ -194,13 +194,13 @@
|
||||
if(1)
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
if(H.species.name == "Slime People")
|
||||
if(isslimeperson(H))
|
||||
stage = 5
|
||||
if(3)
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/human = affected_mob
|
||||
if(human.species.name != "Slime People")
|
||||
human.set_species("Slime People")
|
||||
if(!isslimeperson(human))
|
||||
human.set_species(/datum/species/slime)
|
||||
|
||||
/datum/disease/transformation/corgi
|
||||
name = "The Barkening"
|
||||
|
||||
@@ -58,10 +58,10 @@
|
||||
if(ST_bot_left == null || ST_top_right == null)
|
||||
log_runtime(EXCEPTION("One of the smoothing corners is bust"), src)
|
||||
|
||||
space_manager.remove_dirt(placement.z)
|
||||
late_setup_level(
|
||||
block(bot_left, top_right),
|
||||
block(ST_bot_left, ST_top_right))
|
||||
space_manager.remove_dirt(placement.z)
|
||||
|
||||
log_game("[name] loaded at [min_x],[min_y],[placement.z]")
|
||||
return 1
|
||||
@@ -175,4 +175,4 @@
|
||||
var/datum/map_template/vr/V = new vr_type()
|
||||
|
||||
vr_templates[V.id] = V
|
||||
map_templates[V.id] = V
|
||||
map_templates[V.id] = V
|
||||
|
||||
+2
-1
@@ -20,7 +20,8 @@ var/datum/atom_hud/huds = list( \
|
||||
ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(),\
|
||||
ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(),\
|
||||
ANTAG_HUD_VAMPIRE = new/datum/atom_hud/antag/hidden(),\
|
||||
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden()\
|
||||
ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(),\
|
||||
DATA_HUD_ABDUCTOR = new/datum/atom_hud/abductor()\
|
||||
)
|
||||
|
||||
/datum/atom_hud
|
||||
|
||||
+17
-19
@@ -61,7 +61,6 @@
|
||||
var/linglink
|
||||
var/datum/vampire/vampire //vampire holder
|
||||
var/datum/nations/nation //nation holder
|
||||
var/datum/abductor/abductor //abductor holder
|
||||
|
||||
var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state
|
||||
var/datum/atom_hud/antag/antag_hud = null //this mind's antag HUD
|
||||
@@ -1132,14 +1131,17 @@
|
||||
log_admin("[key_name(usr)] turned [current] into abductor.")
|
||||
ticker.mode.update_abductor_icons_added(src)
|
||||
if("equip")
|
||||
if(!ishuman(current))
|
||||
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = current
|
||||
var/gear = alert("Agent or Scientist Gear","Gear","Agent","Scientist")
|
||||
if(gear)
|
||||
var/datum/game_mode/abduction/temp = new
|
||||
temp.equip_common(current)
|
||||
if(gear=="Agent")
|
||||
temp.equip_agent(current)
|
||||
H.equipOutfit(/datum/outfit/abductor/agent)
|
||||
else
|
||||
temp.equip_scientist(current)
|
||||
H.equipOutfit(/datum/outfit/abductor/scientist)
|
||||
|
||||
else if(href_list["silicon"])
|
||||
switch(href_list["silicon"])
|
||||
@@ -1424,36 +1426,32 @@
|
||||
|
||||
var/mob/living/carbon/human/H = current
|
||||
|
||||
H.set_species("Abductor")
|
||||
H.set_species(/datum/species/abductor)
|
||||
var/datum/species/abductor/S = H.dna.species
|
||||
|
||||
switch(role)
|
||||
if("Agent")
|
||||
H.mind.abductor.agent = 1
|
||||
if("Scientist")
|
||||
H.mind.abductor.scientist = 1
|
||||
H.mind.abductor.team = team
|
||||
if(role == "Scientist")
|
||||
S.scientist = TRUE
|
||||
|
||||
S.team = team
|
||||
|
||||
var/list/obj/effect/landmark/abductor/agent_landmarks = new
|
||||
var/list/obj/effect/landmark/abductor/scientist_landmarks = new
|
||||
agent_landmarks.len = 4
|
||||
scientist_landmarks.len = 4
|
||||
for(var/obj/effect/landmark/abductor/A in landmarks_list)
|
||||
if(istype(A,/obj/effect/landmark/abductor/agent))
|
||||
if(istype(A, /obj/effect/landmark/abductor/agent))
|
||||
agent_landmarks[text2num(A.team)] = A
|
||||
else if(istype(A,/obj/effect/landmark/abductor/scientist))
|
||||
else if(istype(A, /obj/effect/landmark/abductor/scientist))
|
||||
scientist_landmarks[text2num(A.team)] = A
|
||||
|
||||
var/obj/effect/landmark/L
|
||||
if(teleport=="Yes")
|
||||
if(teleport == "Yes")
|
||||
switch(role)
|
||||
if("Agent")
|
||||
H.mind.abductor.agent = 1
|
||||
L = agent_landmarks[team]
|
||||
H.loc = L.loc
|
||||
if("Scientist")
|
||||
H.mind.abductor.scientist = 1
|
||||
L = agent_landmarks[team]
|
||||
H.loc = L.loc
|
||||
H.forceMove(L.loc)
|
||||
|
||||
|
||||
// check whether this mind's mob has been brigged for the given duration
|
||||
|
||||
@@ -371,7 +371,7 @@
|
||||
)
|
||||
|
||||
/datum/outfit/admin/vox/equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(H.get_species() == "Vox Armalis")
|
||||
if(isvoxarmalis(H))
|
||||
. = ..()
|
||||
else
|
||||
H.equip_vox_raider()
|
||||
@@ -1063,6 +1063,7 @@
|
||||
|
||||
|
||||
/datum/outfit/admin/wizard
|
||||
name = "Blue Wizard"
|
||||
uniform = /obj/item/clothing/under/color/lightpurple
|
||||
suit = /obj/item/clothing/suit/wizrobe
|
||||
back = /obj/item/storage/backpack
|
||||
@@ -1086,10 +1087,6 @@
|
||||
if(istype(I))
|
||||
apply_to_card(I, H, get_all_accesses(), "Wizard")
|
||||
|
||||
/datum/outfit/admin/wizard/blue
|
||||
name = "Blue Wizard"
|
||||
// the default wizard clothes are blue
|
||||
|
||||
/datum/outfit/admin/wizard/red
|
||||
name = "Red Wizard"
|
||||
|
||||
|
||||
@@ -0,0 +1,390 @@
|
||||
GLOBAL_LIST_EMPTY(construction_pipe_list) //List of all pipe datums
|
||||
GLOBAL_LIST_EMPTY(rpd_pipe_list) //Some pipes we don't want to be dispensable by the RPD, so we have a separate thing
|
||||
|
||||
/datum/pipes
|
||||
var/pipe_name //What the pipe is called in the interface
|
||||
var/pipe_id //Use the pipe define for this
|
||||
var/pipe_type //Atmos, disposals etc.
|
||||
var/pipe_category //What category of pipe
|
||||
var/bendy = FALSE //Is this pipe bendy?
|
||||
var/orientations //Number of orientations (for interface purposes)
|
||||
var/pipe_icon //icon_state of the dispensed pipe (for interface purposes)
|
||||
var/rpd_dispensable = FALSE
|
||||
|
||||
/datum/pipes/atmospheric
|
||||
pipe_type = PIPETYPE_ATMOS
|
||||
pipe_category = PIPETYPE_ATMOS
|
||||
|
||||
/datum/pipes/disposal
|
||||
pipe_type = PIPETYPE_DISPOSAL
|
||||
|
||||
//Normal pipes
|
||||
|
||||
/datum/pipes/atmospheric/simple
|
||||
pipe_name = "straight pipe"
|
||||
pipe_id = PIPE_SIMPLE_STRAIGHT
|
||||
orientations = 2
|
||||
pipe_icon = "simple"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/bent //Why is this not atmospheric/simple/bent you ask? Because otherwise the ordering of the pipes in the UI menu gets weird
|
||||
pipe_name = "bent pipe"
|
||||
pipe_id = PIPE_SIMPLE_BENT
|
||||
orientations = 4
|
||||
bendy = TRUE
|
||||
pipe_icon = "simple"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/manifold
|
||||
pipe_name = "t-manifold"
|
||||
pipe_id = PIPE_MANIFOLD
|
||||
orientations = 4
|
||||
pipe_icon = "manifold"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/manifold4w
|
||||
pipe_name = "4-way manifold"
|
||||
pipe_id = PIPE_MANIFOLD4W
|
||||
orientations = 1
|
||||
pipe_icon = "manifold4w"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/cap
|
||||
pipe_name = "pipe cap"
|
||||
pipe_id = PIPE_CAP
|
||||
orientations = 4
|
||||
pipe_icon = "cap"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/valve
|
||||
pipe_name = "manual valve"
|
||||
pipe_id = PIPE_MVALVE
|
||||
orientations = 2
|
||||
pipe_icon = "mvalve"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/valve/digital
|
||||
pipe_name = "digital valve"
|
||||
pipe_id = PIPE_DVALVE
|
||||
pipe_icon = "dvalve"
|
||||
|
||||
/datum/pipes/atmospheric/tvalve
|
||||
pipe_name = "manual t-valve"
|
||||
pipe_id = PIPE_TVALVE
|
||||
orientations = 4
|
||||
pipe_icon = "tvalve"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/tvalve/digital
|
||||
pipe_name = "digital t-valve"
|
||||
pipe_id = PIPE_DTVALVE
|
||||
pipe_icon = "dtvalve"
|
||||
|
||||
//Supply pipes
|
||||
|
||||
/datum/pipes/atmospheric/simple/supply
|
||||
pipe_name = "straight supply pipe"
|
||||
pipe_id = PIPE_SUPPLY_STRAIGHT
|
||||
pipe_category = RPD_SUPPLY_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/bent/supply
|
||||
pipe_name = "bent supply pipe"
|
||||
pipe_id = PIPE_SUPPLY_BENT
|
||||
pipe_category = RPD_SUPPLY_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/manifold/supply
|
||||
pipe_name = "supply T-manifold"
|
||||
pipe_id = PIPE_SUPPLY_MANIFOLD
|
||||
pipe_category = RPD_SUPPLY_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/manifold4w/supply
|
||||
pipe_name = "4-way supply manifold"
|
||||
pipe_id = PIPE_SUPPLY_MANIFOLD4W
|
||||
pipe_category = RPD_SUPPLY_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/cap/supply
|
||||
pipe_name = "supply pipe cap"
|
||||
pipe_id = PIPE_SUPPLY_CAP
|
||||
pipe_category = RPD_SUPPLY_PIPING
|
||||
|
||||
//Scrubbers pipes
|
||||
|
||||
/datum/pipes/atmospheric/simple/scrubbers
|
||||
pipe_name = "straight scrubbers pipe"
|
||||
pipe_id = PIPE_SCRUBBERS_STRAIGHT
|
||||
pipe_category = RPD_SCRUBBERS_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/bent/scrubbers
|
||||
pipe_name = "bent scrubbers pipe"
|
||||
pipe_id = PIPE_SCRUBBERS_BENT
|
||||
pipe_category = RPD_SCRUBBERS_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/manifold/scrubbers
|
||||
pipe_name = "scrubbers t-manifold"
|
||||
pipe_id = PIPE_SCRUBBERS_MANIFOLD
|
||||
pipe_category = RPD_SCRUBBERS_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/manifold4w/scrubbers
|
||||
pipe_name = "4-way scrubbers manifold"
|
||||
pipe_id = PIPE_SCRUBBERS_MANIFOLD4W
|
||||
pipe_category = RPD_SCRUBBERS_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/cap/scrubbers
|
||||
pipe_name = "scrubbers pipe cap"
|
||||
pipe_id = PIPE_SCRUBBERS_CAP
|
||||
pipe_category = RPD_SCRUBBERS_PIPING
|
||||
|
||||
//Devices
|
||||
|
||||
/datum/pipes/atmospheric/upa
|
||||
pipe_name = "universal pipe adapter"
|
||||
pipe_id = PIPE_UNIVERSAL
|
||||
orientations = 2
|
||||
pipe_icon = "universal"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/connector
|
||||
pipe_name = "connector"
|
||||
pipe_id = PIPE_CONNECTOR
|
||||
orientations = 4
|
||||
pipe_icon = "connector"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/unaryvent
|
||||
pipe_name = "unary vent"
|
||||
pipe_id = PIPE_UVENT
|
||||
orientations = 4
|
||||
pipe_icon = "uvent"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/scrubber
|
||||
pipe_name = "scrubber"
|
||||
pipe_id = PIPE_SCRUBBER
|
||||
orientations = 4
|
||||
pipe_icon = "scrubber"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/pump
|
||||
pipe_name = "pump"
|
||||
pipe_id = PIPE_PUMP
|
||||
orientations = 4
|
||||
pipe_icon = "pump"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/volume_pump
|
||||
pipe_name = "volume pump"
|
||||
pipe_id = PIPE_VOLUME_PUMP
|
||||
orientations = 4
|
||||
pipe_icon = "volumepump"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/gate
|
||||
pipe_name = "passive gate"
|
||||
pipe_id = PIPE_PASSIVE_GATE
|
||||
orientations = 4
|
||||
pipe_icon = "passivegate"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/filter
|
||||
pipe_name = "gas filter"
|
||||
pipe_id = PIPE_GAS_FILTER
|
||||
orientations = 4
|
||||
pipe_icon = "filter"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/mixer
|
||||
pipe_name = "gas mixer"
|
||||
pipe_id = PIPE_GAS_MIXER
|
||||
orientations = 4
|
||||
pipe_icon = "mixer"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/sensor
|
||||
pipe_name = "gas sensor"
|
||||
pipe_id = PIPE_GAS_SENSOR
|
||||
orientations = 1
|
||||
pipe_icon = "sensor"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/meter
|
||||
pipe_name = "meter"
|
||||
pipe_id = PIPE_METER
|
||||
orientations = 1
|
||||
pipe_icon = "meter"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/passive_vent
|
||||
pipe_name = "passive vent"
|
||||
pipe_id = PIPE_PASV_VENT
|
||||
orientations = 4
|
||||
pipe_icon = "passive vent"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/dual_vent_pump
|
||||
pipe_name = "dual-port vent pump"
|
||||
pipe_id = PIPE_DP_VENT
|
||||
orientations = 2
|
||||
pipe_icon = "dual-port vent"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/injector
|
||||
pipe_name = "air injector"
|
||||
pipe_id = PIPE_INJECTOR
|
||||
orientations = 4
|
||||
pipe_icon = "injector"
|
||||
pipe_category = RPD_DEVICES
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
//Heat exchange pipes
|
||||
|
||||
/datum/pipes/atmospheric/simple/he
|
||||
pipe_name = "straight h/e pipe"
|
||||
pipe_id = PIPE_HE_STRAIGHT
|
||||
pipe_icon = "he"
|
||||
pipe_category = RPD_HEAT_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/bent/he
|
||||
pipe_name = "bent h/e pipe"
|
||||
pipe_id = PIPE_HE_BENT
|
||||
pipe_icon = "he"
|
||||
bendy = TRUE
|
||||
pipe_category = RPD_HEAT_PIPING
|
||||
|
||||
/datum/pipes/atmospheric/he_junction
|
||||
pipe_name = "junction"
|
||||
pipe_id = PIPE_JUNCTION
|
||||
orientations = 4
|
||||
pipe_icon = "junction"
|
||||
pipe_category = RPD_HEAT_PIPING
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/atmospheric/heat_exchanger
|
||||
pipe_name = "heat exchanger"
|
||||
pipe_id = PIPE_HEAT_EXCHANGE
|
||||
orientations = 4
|
||||
pipe_icon = "heunary"
|
||||
pipe_category = RPD_HEAT_PIPING
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
//DISPOSALS PIPES
|
||||
|
||||
/datum/pipes/disposal/straight
|
||||
pipe_name = "straight disposals pipe"
|
||||
pipe_id = PIPE_DISPOSALS_STRAIGHT
|
||||
orientations = 2
|
||||
pipe_icon = "pipe-s"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/bent
|
||||
pipe_name = "bent disposals pipe"
|
||||
pipe_id = PIPE_DISPOSALS_BENT
|
||||
orientations = 4
|
||||
pipe_icon = "pipe-c"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/junction
|
||||
pipe_name = "disposals junction"
|
||||
pipe_id = PIPE_DISPOSALS_JUNCTION_RIGHT
|
||||
orientations = 4
|
||||
pipe_icon = "pipe-j1"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/y_junction
|
||||
pipe_name = "disposals y-junction"
|
||||
pipe_id = PIPE_DISPOSALS_Y_JUNCTION
|
||||
orientations = 4
|
||||
pipe_icon = "pipe-y"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/trunk
|
||||
pipe_name = "disposals trunk"
|
||||
pipe_id = PIPE_DISPOSALS_TRUNK
|
||||
orientations = 4
|
||||
pipe_icon = "pipe-t"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/bin
|
||||
pipe_name = "disposals pipe bin"
|
||||
pipe_id = PIPE_DISPOSALS_BIN
|
||||
orientations = 1
|
||||
pipe_icon = "disposal"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/outlet
|
||||
pipe_name = "disposals outlet"
|
||||
pipe_id = PIPE_DISPOSALS_OUTLET
|
||||
orientations = 4
|
||||
pipe_icon = "outlet"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
/datum/pipes/disposal/chute
|
||||
pipe_name = "disposals chute"
|
||||
pipe_id = PIPE_DISPOSALS_CHUTE
|
||||
orientations = 4
|
||||
pipe_icon = "intake"
|
||||
rpd_dispensable = TRUE
|
||||
|
||||
//Pipes the RPD can't dispense. Since these don't use an interface, we don't need to bother with setting an icon. We do, however, want to name these for other purposes
|
||||
|
||||
/datum/pipes/atmospheric/circulator
|
||||
pipe_name = "circulator / heat exchanger"
|
||||
pipe_id = PIPE_CIRCULATOR
|
||||
pipe_icon = "circ"
|
||||
|
||||
/datum/pipes/atmospheric/omni_filter
|
||||
pipe_name = "omni filter"
|
||||
pipe_id = PIPE_OMNI_FILTER
|
||||
pipe_icon = "omni_filter"
|
||||
|
||||
/datum/pipes/atmospheric/omni_mixer
|
||||
pipe_name = "omni mixer"
|
||||
pipe_id = PIPE_OMNI_MIXER
|
||||
pipe_icon = "omni_mixer"
|
||||
|
||||
/datum/pipes/atmospheric/insulated
|
||||
pipe_name = "insulated pipe"
|
||||
pipe_id = PIPE_INSULATED_STRAIGHT
|
||||
pipe_icon = "insulated"
|
||||
|
||||
/datum/pipes/atmospheric/insulated/bent
|
||||
pipe_name = "bent insulated pipe"
|
||||
pipe_id = PIPE_INSULATED_BENT
|
||||
|
||||
/datum/pipes/disposal/sortjunction
|
||||
pipe_name = "disposals sort junction"
|
||||
pipe_id = PIPE_DISPOSALS_SORT_RIGHT
|
||||
pipe_icon = "pipe-j1s"
|
||||
|
||||
/datum/pipes/disposal/sortjunction/left
|
||||
pipe_id = PIPE_DISPOSALS_SORT_LEFT
|
||||
pipe_icon = "pipe-j2s"
|
||||
|
||||
/datum/pipes/disposal/left_junction
|
||||
pipe_name = "disposals junction"
|
||||
pipe_id = PIPE_DISPOSALS_JUNCTION_LEFT
|
||||
pipe_icon = "pipe-j2"
|
||||
|
||||
/proc/get_pipe_name(var/pipe_id, var/pipe_type)
|
||||
for(var/datum/pipes/P in GLOB.construction_pipe_list)
|
||||
if(P.pipe_id == pipe_id && P.pipe_type == pipe_type)
|
||||
return P.pipe_name
|
||||
return "unknown pipe"
|
||||
|
||||
/proc/get_pipe_icon(var/pipe_id)
|
||||
for(var/datum/pipes/P in GLOB.construction_pipe_list)
|
||||
if(P.pipe_id == pipe_id)
|
||||
return P.pipe_icon
|
||||
return "unknown icon"
|
||||
@@ -115,7 +115,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
caster.reset_perspective(0)
|
||||
return 0
|
||||
|
||||
if(is_admin_level(user.z) && (!centcom_cancast || ticker.mode.name == "ragin' mages")) //Certain spells are not allowed on the centcom zlevel
|
||||
if(is_admin_level(user.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel
|
||||
return 0
|
||||
|
||||
if(!skipcharge)
|
||||
@@ -421,7 +421,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
if(((!user.mind) || !(src in user.mind.spell_list)) && !(src in user.mob_spell_list))
|
||||
return 0
|
||||
|
||||
if(is_admin_level(user.z) && (!centcom_cancast || ticker.mode.name == "ragin' mages")) //Certain spells are not allowed on the centcom zlevel
|
||||
if(is_admin_level(user.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel
|
||||
return 0
|
||||
|
||||
switch(charge_type)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
lich.real_name = M.mind.name
|
||||
M.mind.transfer_to(lich)
|
||||
lich.set_species("Skeleton")
|
||||
lich.set_species(/datum/species/skeleton)
|
||||
to_chat(lich, "<span class='warning'>Your bones clatter and shutter as they're pulled back into this world!</span>")
|
||||
charge_max += 600
|
||||
var/mob/old_body = current_body
|
||||
@@ -122,7 +122,7 @@
|
||||
current_body = M.mind.current
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.set_species("Skeleton")
|
||||
H.set_species(/datum/species/skeleton)
|
||||
H.unEquip(H.wear_suit)
|
||||
H.unEquip(H.head)
|
||||
H.unEquip(H.shoes)
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
/datum/status_effect/high_five
|
||||
id = "high_five"
|
||||
duration = 25
|
||||
duration = 40
|
||||
alert_type = null
|
||||
|
||||
/datum/status_effect/high_five/on_timeout()
|
||||
owner.visible_message("[owner] was left hanging....")
|
||||
owner.visible_message("[owner] was left hanging....")
|
||||
|
||||
@@ -1236,8 +1236,8 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
/datum/supply_packs/materials/plastic30
|
||||
name = "30 Plastic Sheets Crate"
|
||||
contains = list(/obj/item/stack/sheet/plastic)
|
||||
amount = 50
|
||||
cost = 10
|
||||
amount = 30
|
||||
cost = 20
|
||||
containername = "plastic sheets crate"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -129,6 +129,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
cost = 5
|
||||
job = list("Clown")
|
||||
|
||||
/datum/uplink_item/jobspecific/clownmagboots
|
||||
name = "Clown Magboots"
|
||||
desc = "A pair of modified clown shoes fitted with an advanced magnetic traction system. Look and sound exactly like regular clown shoes unless closely inspected."
|
||||
reference = "CM"
|
||||
item = /obj/item/clothing/shoes/magboots/clown
|
||||
cost = 3
|
||||
job = list("Clown")
|
||||
|
||||
//mime
|
||||
/datum/uplink_item/jobspecific/caneshotgun
|
||||
name = "Cane Shotgun + Assassination Darts"
|
||||
@@ -395,6 +403,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
gamemodes = list(/datum/game_mode/nuclear)
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/dangerous/rapid
|
||||
name = "Gloves of the North Star"
|
||||
desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed."
|
||||
reference = "RPGD"
|
||||
item = /obj/item/clothing/gloves/fingerless/rapid
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/dangerous/sniper
|
||||
name = "Sniper Rifle"
|
||||
desc = "Ranged fury, Syndicate style. guaranteed to cause shock and awe or your TC back!"
|
||||
@@ -1334,13 +1349,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
item = /obj/item/storage/fancy/cigarettes/cigpack_syndicate
|
||||
cost = 2
|
||||
|
||||
/datum/uplink_item/badass/rapid
|
||||
name = "Gloves of the North Star"
|
||||
desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk."
|
||||
reference = "RPGD"
|
||||
item = /obj/item/clothing/gloves/fingerless/rapid
|
||||
cost = 8
|
||||
|
||||
/datum/uplink_item/badass/bundle
|
||||
name = "Syndicate Bundle"
|
||||
desc = "Syndicate Bundles are specialised groups of items that arrive in a plain box. These items are collectively worth more than 20 telecrystals, but you do not know which specialisation you will receive."
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
if(prob(40))
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(!(RADIMMUNE in H.species.species_traits))
|
||||
if(!(RADIMMUNE in H.dna.species.species_traits))
|
||||
if(prob(max(0, 100 - resist)))
|
||||
randmuti(H) // Applies bad mutation
|
||||
if(prob(50))
|
||||
|
||||
@@ -3,52 +3,33 @@
|
||||
/datum/wires/camera
|
||||
random = 0
|
||||
holder_type = /obj/machinery/camera
|
||||
wire_count = 6
|
||||
wire_count = 2
|
||||
|
||||
/datum/wires/camera/get_status()
|
||||
. = ..()
|
||||
var/obj/machinery/camera/C = holder
|
||||
. += "The focus light is [(C.view_range == initial(C.view_range)) ? "on" : "off"]."
|
||||
. += "The power link light is [C.can_use() ? "on" : "off"]."
|
||||
. += "The camera light is [C.light_disabled ? "off" : "on"]."
|
||||
. += "The alarm light is [C.alarm_on ? "on" : "off"]."
|
||||
|
||||
/datum/wires/camera/CanUse(mob/living/L)
|
||||
var/obj/machinery/camera/C = holder
|
||||
if(!C.panel_open)
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
var/const/CAMERA_WIRE_FOCUS = 1
|
||||
var/const/CAMERA_WIRE_POWER = 2
|
||||
var/const/CAMERA_WIRE_LIGHT = 4
|
||||
var/const/CAMERA_WIRE_ALARM = 8
|
||||
var/const/CAMERA_WIRE_NOTHING1 = 16
|
||||
var/const/CAMERA_WIRE_NOTHING2 = 32
|
||||
|
||||
/datum/wires/camera/GetWireName(index)
|
||||
switch(index)
|
||||
if(CAMERA_WIRE_FOCUS)
|
||||
return "Focus"
|
||||
|
||||
|
||||
if(CAMERA_WIRE_POWER)
|
||||
return "Power"
|
||||
|
||||
if(CAMERA_WIRE_LIGHT)
|
||||
return "Light"
|
||||
|
||||
if(CAMERA_WIRE_ALARM)
|
||||
return "Alarm"
|
||||
|
||||
if(CAMERA_WIRE_NOTHING1)
|
||||
return "Nothing"
|
||||
|
||||
if(CAMERA_WIRE_NOTHING2)
|
||||
return "Nothing"
|
||||
|
||||
/datum/wires/camera/UpdateCut(index, mended)
|
||||
var/obj/machinery/camera/C = holder
|
||||
|
||||
switch(index)
|
||||
if(CAMERA_WIRE_FOCUS)
|
||||
var/range = (mended ? initial(C.view_range) : C.short_range)
|
||||
@@ -56,16 +37,8 @@ var/const/CAMERA_WIRE_NOTHING2 = 32
|
||||
|
||||
if(CAMERA_WIRE_POWER)
|
||||
if(C.status && !mended || !C.status && mended)
|
||||
C.toggle_cam(usr, 1)
|
||||
|
||||
if(CAMERA_WIRE_LIGHT)
|
||||
C.light_disabled = !mended
|
||||
|
||||
if(CAMERA_WIRE_ALARM)
|
||||
if(!mended)
|
||||
C.triggerCameraAlarm()
|
||||
else
|
||||
C.cancelCameraAlarm()
|
||||
C.toggle_cam(usr, TRUE)
|
||||
C.obj_integrity = C.max_integrity //this is a pretty simplistic way to heal the camera, but there's no reason for this to be complex.
|
||||
..()
|
||||
|
||||
/datum/wires/camera/UpdatePulsed(index)
|
||||
@@ -79,16 +52,10 @@ var/const/CAMERA_WIRE_NOTHING2 = 32
|
||||
|
||||
if(CAMERA_WIRE_POWER)
|
||||
C.toggle_cam(null) // Deactivate the camera
|
||||
|
||||
if(CAMERA_WIRE_LIGHT)
|
||||
C.light_disabled = !C.light_disabled
|
||||
|
||||
if(CAMERA_WIRE_ALARM)
|
||||
C.visible_message("[bicon(C)] *beep*", "[bicon(C)] *beep*")
|
||||
..()
|
||||
|
||||
/datum/wires/camera/proc/CanDeconstruct()
|
||||
if(IsIndexCut(CAMERA_WIRE_POWER) && IsIndexCut(CAMERA_WIRE_FOCUS) && IsIndexCut(CAMERA_WIRE_LIGHT) && IsIndexCut(CAMERA_WIRE_NOTHING1) && IsIndexCut(CAMERA_WIRE_NOTHING2))
|
||||
return 1
|
||||
if(IsIndexCut(CAMERA_WIRE_POWER) && IsIndexCut(CAMERA_WIRE_FOCUS))
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
Reference in New Issue
Block a user