merge conflict fix, reset map

This commit is contained in:
Kyep
2019-01-07 16:37:07 -08:00
90 changed files with 2022 additions and 1917 deletions
@@ -152,7 +152,7 @@ var/global/sent_syndicate_infiltration_team = 0
// Implants:
// Uplink
var/obj/item/implant/uplink/U = new /obj/item/implant/uplink(src)
var/obj/item/implant/uplink/sit/U = new /obj/item/implant/uplink/sit(src)
U.implant(src)
if (flag_mgmt)
U.hidden_uplink.uses = 500
+53 -31
View File
@@ -280,7 +280,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if(species == "Vox")
dat += "<b>N2 Tank:</b> <a href='?_src_=prefs;preference=speciesprefs;task=input'>[speciesprefs ? "Large N2 Tank" : "Specialized N2 Tank"]</a><br>"
if(species == "Grey")
dat += "<b>Voice:</b> <a href ='?_src_=prefs;preference=speciesprefs;task=input'>[speciesprefs ? "Wingdings" : "Normal"]</a><BR>"
dat += "<b>Wingdings:</b> Set in disabilities<br>"
dat += "<b>Voice Translator:</b> <a href ='?_src_=prefs;preference=speciesprefs;task=input'>[speciesprefs ? "Yes" : "No"]</a><br>"
dat += "<b>Secondary Language:</b> <a href='?_src_=prefs;preference=language;task=input'>[language]</a><br>"
if(S.autohiss_basic_map)
dat += "<b>Auto-accent:</b> <a href='?_src_=prefs;preference=autohiss_mode;task=input'>[autohiss_mode == AUTOHISS_FULL ? "Full" : (autohiss_mode == AUTOHISS_BASIC ? "Basic" : "Off")]</a><br>"
@@ -827,29 +828,32 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
return 1
/datum/preferences/proc/ShowDisabilityState(mob/user,flag,label)
/datum/preferences/proc/ShowDisabilityState(mob/user, flag, label)
var/datum/species/S = GLOB.all_species[species]
if(flag==DISABILITY_FLAG_FAT && !(CAN_BE_FAT in S.species_traits))
if(flag == DISABILITY_FLAG_FAT && !(CAN_BE_FAT in S.species_traits))
return "<li><i>[species] cannot be fat.</i></li>"
return "<li><b>[label]:</b> <a href=\"?_src_=prefs;task=input;preference=disabilities;disability=[flag]\">[disabilities & flag ? "Yes" : "No"]</a></li>"
/datum/preferences/proc/SetDisabilities(mob/user)
var/datum/species/S = GLOB.all_species[species]
var/HTML = "<body>"
HTML += "<tt><center>"
HTML += ShowDisabilityState(user,DISABILITY_FLAG_NEARSIGHTED,"Needs glasses")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_FAT,"Obese")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_EPILEPTIC,"Seizures")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_DEAF,"Deaf")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_BLIND,"Blind")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_COLOURBLIND,"Colourblind")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_MUTE,"Mute")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_TOURETTES,"Tourettes syndrome") // this will / can not be abused. It also SEVERELY stuns. It's just for fun.
HTML += ShowDisabilityState(user,DISABILITY_FLAG_NERVOUS,"Stutter")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_SWEDISH,"Swedish accent")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_LISP,"Lisp")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_DIZZY,"Dizziness")
HTML += ShowDisabilityState(user,DISABILITY_FLAG_SCRAMBLED,"Can't speak properly")
if(CAN_WINGDINGS in S.species_traits)
HTML += ShowDisabilityState(user, DISABILITY_FLAG_WINGDINGS, "Speak in Wingdings")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_NEARSIGHTED, "Needs glasses")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_FAT, "Obese")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_EPILEPTIC, "Seizures")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_DEAF, "Deaf")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_BLIND, "Blind")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_COLOURBLIND, "Colourblind")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_MUTE, "Mute")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_TOURETTES, "Tourettes syndrome") // this will / can not be abused. It also SEVERELY stuns. It's just for fun.
HTML += ShowDisabilityState(user, DISABILITY_FLAG_NERVOUS, "Stutter")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_SWEDISH, "Swedish accent")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_LISP, "Lisp")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_DIZZY, "Dizziness")
HTML += ShowDisabilityState(user, DISABILITY_FLAG_SCRAMBLED, "Can't speak properly")
HTML += {"</ul>
@@ -857,7 +861,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
<a href=\"?_src_=prefs;task=reset;preference=disabilities\">\[Reset\]</a>
</center></tt>"}
var/datum/browser/popup = new(user, "disabil", "<div align='center'>Choose Disabilities</div>", 350, 300)
var/datum/browser/popup = new(user, "disabil", "<div align='center'>Choose Disabilities</div>", 350, 380)
popup.set_content(HTML)
popup.open(0)
@@ -2191,47 +2195,65 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
character.change_eye_color(e_colour)
if(disabilities & DISABILITY_FLAG_FAT && (CAN_BE_FAT in character.dna.species.species_traits))
character.dna.SetSEState(FATBLOCK,1,1)
character.dna.SetSEState(FATBLOCK, TRUE, TRUE)
character.overeatduration = 600
character.dna.default_blocks.Add(FATBLOCK)
if(disabilities & DISABILITY_FLAG_NEARSIGHTED)
character.dna.SetSEState(GLASSESBLOCK,1,1)
character.dna.SetSEState(GLASSESBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(GLASSESBLOCK)
if(disabilities & DISABILITY_FLAG_EPILEPTIC)
character.dna.SetSEState(EPILEPSYBLOCK,1,1)
character.dna.SetSEState(EPILEPSYBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(EPILEPSYBLOCK)
if(disabilities & DISABILITY_FLAG_DEAF)
character.dna.SetSEState(DEAFBLOCK,1,1)
character.dna.SetSEState(DEAFBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(DEAFBLOCK)
if(disabilities & DISABILITY_FLAG_BLIND)
character.dna.SetSEState(BLINDBLOCK,1,1)
character.dna.SetSEState(BLINDBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(BLINDBLOCK)
if(disabilities & DISABILITY_FLAG_COLOURBLIND)
character.dna.SetSEState(COLOURBLINDBLOCK,1,1)
character.dna.SetSEState(COLOURBLINDBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(COLOURBLINDBLOCK)
if(disabilities & DISABILITY_FLAG_MUTE)
character.dna.SetSEState(MUTEBLOCK,1,1)
character.dna.SetSEState(MUTEBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(MUTEBLOCK)
if(disabilities & DISABILITY_FLAG_TOURETTES)
character.dna.SetSEState(TWITCHBLOCK,1,1)
character.dna.SetSEState(TWITCHBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(TWITCHBLOCK)
if(disabilities & DISABILITY_FLAG_NERVOUS)
character.dna.SetSEState(NERVOUSBLOCK,1,1)
character.dna.SetSEState(NERVOUSBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(NERVOUSBLOCK)
if(disabilities & DISABILITY_FLAG_SWEDISH)
character.dna.SetSEState(SWEDEBLOCK,1,1)
character.dna.SetSEState(SWEDEBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(SWEDEBLOCK)
if(disabilities & DISABILITY_FLAG_SCRAMBLED)
character.dna.SetSEState(SCRAMBLEBLOCK,1,1)
character.dna.SetSEState(SCRAMBLEBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(SCRAMBLEBLOCK)
if(disabilities & DISABILITY_FLAG_LISP)
character.dna.SetSEState(LISPBLOCK,1,1)
character.dna.SetSEState(LISPBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(LISPBLOCK)
if(disabilities & DISABILITY_FLAG_DIZZY)
character.dna.SetSEState(DIZZYBLOCK,1,1)
character.dna.SetSEState(DIZZYBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(DIZZYBLOCK)
if(disabilities & DISABILITY_FLAG_SCRAMBLED)
character.dna.SetSEState(SCRAMBLEBLOCK,1,1)
character.dna.SetSEState(SCRAMBLEBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(SCRAMBLEBLOCK)
if(disabilities & DISABILITY_FLAG_WINGDINGS && (CAN_WINGDINGS in character.dna.species.species_traits))
character.dna.SetSEState(WINGDINGSBLOCK, TRUE, TRUE)
character.dna.default_blocks.Add(WINGDINGSBLOCK)
character.dna.species.handle_dna(character)
+12 -1
View File
@@ -7,6 +7,7 @@
var/parts[] = list() //type paths of items that will be placed in the result
var/chem_catalysts[] = list() //like tools but for reagents
var/category = CAT_MISC // Recipe category
var/roundstart_enabled = TRUE //Set to FALSE if you don't want a particular crafting recipe to be available all the time
/datum/crafting_recipe/proc/AdjustChems(var/obj/resultobj as obj)
//This proc is to replace the make_food proc of recipes from microwaves and such that are being converted to table crafting recipes.
@@ -406,4 +407,14 @@
/datum/reagent/paint/black = 30,
/obj/item/storage/toolbox = 1) //Paint in reagents so it doesnt take the container up, yet still take it from the beaker
tools = list(/obj/item/reagent_containers/glass/rag = 1) //need something to paint with it
category = CAT_MISC
category = CAT_MISC
/datum/crafting_recipe/snowman
name = "Snowman"
result = /obj/structure/snowman/built
reqs = list(/obj/item/snowball = 10,
/obj/item/reagent_containers/food/snacks/grown/carrot = 1,
/obj/item/grown/log = 2)
time = 50
category = CAT_MISC
roundstart_enabled = FALSE
+1
View File
@@ -6,6 +6,7 @@
new /obj/item/a_gift(T)
for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in GLOB.mob_list)
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian))
GLOB.crafting_recipes += new /datum/crafting_recipe/snowman
//The following spawn is necessary as both the timer and the shuttle systems initialise after the events system does, so we can't add stuff to the shuttle system as it doesn't exist yet and we can't use a timer
spawn(60 SECONDS)
var/datum/supply_packs/xmas = SSshuttle.supply_packs["[/datum/supply_packs/misc/snow_machine]"]
+12 -2
View File
@@ -109,14 +109,24 @@
/mob/living/carbon/human/handle_speech_problems(list/message_pieces, var/verb)
var/span = ""
var/obj/item/organ/internal/cyberimp/brain/speech_translator/translator = locate(/obj/item/organ/internal/cyberimp/brain/speech_translator) in internal_organs
if(translator)
if(translator.active)
span = translator.speech_span
for(var/datum/multilingual_say_piece/S in message_pieces)
S.message = "<span class='[span]'>[S.message]</span>"
verb = translator.speech_verb
return list("verb" = verb)
if(mind)
span = mind.speech_span
if((COMIC in mutations) \
|| (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) \
|| istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown))
span = "sans"
if(WINGDINGS in mutations)
span = "wingdings"
var/list/parent = ..()
verb = parent["verb"]
@@ -315,7 +315,7 @@
/datum/species/proc/help(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
if(attacker_style && attacker_style.help_act(user, target))//adminfu only...
return TRUE
if(target.health >= config.health_threshold_crit)
if(target.health >= config.health_threshold_crit && !(target.status_flags & FAKEDEATH))
target.help_shake_act(user)
return TRUE
else
@@ -21,8 +21,7 @@
default_genes = list(REMOTE_TALK)
species_traits = list(LIPS, IS_WHITELISTED, CAN_BE_FAT)
species_traits = list(LIPS, IS_WHITELISTED, CAN_BE_FAT, CAN_WINGDINGS)
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
bodyflags = HAS_BODY_MARKINGS
dietflags = DIET_HERB
@@ -33,6 +32,7 @@
..()
H.dna.SetSEState(REMOTETALKBLOCK, !remove, 1)
genemutcheck(H, REMOTETALKBLOCK, null, MUTCHK_FORCED)
H.dna.default_blocks.Add(REMOTETALKBLOCK)
/datum/species/grey/water_act(mob/living/carbon/human/H, volume, temperature, source)
..()
@@ -40,9 +40,18 @@
H.emote("scream")
/datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H)
var/speech_pref = H.client.prefs.speciesprefs
if(speech_pref)
H.mind.speech_span = "wingdings"
var/translator_pref = H.client.prefs.speciesprefs
if(translator_pref || ((ismindshielded(H) || J.is_command) && (WINGDINGS in H.mutations)))
if(J.title == "Mime")
return
if(J.title == "Clown")
var/obj/item/organ/internal/cyberimp/brain/speech_translator/clown/implant = new
implant.insert(H)
else
var/obj/item/organ/internal/cyberimp/brain/speech_translator/implant = new
implant.insert(H)
if(!translator_pref)
to_chat(H, "<span class='notice'>A speech translator implant has been installed due to your role on the station.</span>")
/datum/species/grey/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
if(R.id == "sacid")
@@ -91,7 +91,7 @@
if("Magistrate")
suit=/obj/item/clothing/suit/space/eva/plasmaman/magistrate
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/magistrate
if("Head of Security")
if("Head of Security", "Special Operations Officer")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/hos
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/hos
if("Captain", "Blueshield")
@@ -100,7 +100,7 @@
if("Head of Personnel")
suit=/obj/item/clothing/suit/space/eva/plasmaman/security/hop
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/hop
if("Nanotrasen Representative")
if("Nanotrasen Representative", "Nanotrasen Navy Officer")
suit = /obj/item/clothing/suit/space/eva/plasmaman/nt_rep
helm = /obj/item/clothing/head/helmet/space/eva/plasmaman/nt_rep
if("Medical Doctor","Brig Physician","Virologist")
@@ -369,12 +369,13 @@
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot
icon_state = "foamdart_riot"
/obj/item/ammo_casing/shotgun/dart/assassination
desc = "A specialist shotgun dart designed to inncapacitate and kill the target over time, so you can get very far away from your target"
/obj/item/ammo_casing/shotgun/dart/assassination/New()
..()
reagents.add_reagent("neurotoxin", 6)
/obj/item/ammo_casing/shotgun/assassination
name = "assassination shell"
desc = "A specialist shrapnel shell that has been laced with a silencing toxin."
projectile_type = /obj/item/projectile/bullet/pellet/assassination
icon_state = "gshell"
pellets = 6
variance = 25
/obj/item/ammo_casing/cap
desc = "A cap for children toys."
@@ -122,6 +122,9 @@
ammo_type = /obj/item/ammo_casing/shotgun/improvised
max_ammo = 1
/obj/item/ammo_box/magazine/internal/shot/improvised/cane
ammo_type = /obj/item/ammo_casing/shotgun/assassination
/obj/item/ammo_box/magazine/internal/shot/riot
name = "riot shotgun internal magazine"
ammo_type = /obj/item/ammo_casing/shotgun/rubbershot
@@ -417,7 +417,7 @@
can_unsuppress = 0
slot_flags = null
origin_tech = "" // NO GIVAWAYS
mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised
mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised/cane
sawn_desc = "I'm sorry, but why did you saw your cane in the first place?"
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
fire_sound = 'sound/weapons/Gunshot_silenced.ogg'
@@ -109,6 +109,15 @@
range = rand(1, 10)
..()
/obj/item/projectile/bullet/pellet/assassination
damage = 12
tile_dropoff = 1 // slightly less damage and greater damage falloff compared to normal buckshot
/obj/item/projectile/bullet/pellet/assassination/on_hit(atom/target, blocked = 0)
if(..(target, blocked))
var/mob/living/M = target
M.AdjustSilence(2) // HELP MIME KILLING ME IN MAINT
/obj/item/projectile/bullet/pellet/overload/on_hit(atom/target, blocked = 0)
..()
explosion(target, 0, 0, 2)
@@ -155,3 +155,32 @@
if(prob(5))
to_chat(M, "<span class='warning'>You would DIE for some [name] right now!</span>")
return update_flags
/datum/reagent/proc/fakedeath(mob/living/M)
if(M.status_flags & FAKEDEATH)
return
if(!(M.status_flags & CANPARALYSE))
return
if(M.mind && M.mind.changeling && M.mind.changeling.regenerating) //no messing with changeling's fake death
return
M.visible_message("<B>[M]</B> seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
M.status_flags |= FAKEDEATH
M.update_stat("fakedeath reagent")
M.med_hud_set_health()
M.med_hud_set_status()
/datum/reagent/proc/fakerevive(mob/living/M)
if(!(M.status_flags & FAKEDEATH))
return
if(M.mind && M.mind.changeling && M.mind.changeling.regenerating)
return
if(M.resting)
M.StopResting()
M.status_flags &= ~(FAKEDEATH)
M.update_stat("fakedeath reagent end")
M.med_hud_set_status()
M.med_hud_set_health()
if(M.healthdoll)
M.healthdoll.cached_healthdoll_overlays.Cut()
if(M.dna.species)
M.dna.species.handle_hud_icons(M)
@@ -122,7 +122,7 @@
for(var/atom/movable/X in range(range_power,pull))
if(istype(X, /obj/effect))
continue
if(!X.anchored)
if(X.move_resist <= MOVE_FORCE_DEFAULT && !X.anchored)
var/distance = get_dist(X, pull)
var/moving_power = max(range_power - distance, 1)
spawn(0)
@@ -737,9 +737,10 @@
var/needs_update = M.mutations.len > 0 || M.disabilities > 0
if(needs_update)
for(var/block=1;block<=DNA_SE_LENGTH;block++)
M.dna.SetSEState(block,0, 1)
genemutcheck(M,block,null,MUTCHK_FORCED)
for(var/block = 1; block<=DNA_SE_LENGTH; block++)
if(!(block in M.dna.default_blocks))
M.dna.SetSEState(block, FALSE, TRUE)
genemutcheck(M, block, null, MUTCHK_FORCED)
M.dna.UpdateSE()
M.dna.struc_enzymes = M.dna.struc_enzymes_original
@@ -1037,7 +1037,7 @@
/datum/reagent/capulettium
name = "Capulettium"
id = "capulettium"
description = "A rare drug that causes the user to appear dead for some time."
description = "A rare drug that causes the user to fall unconscious and appear dead as long as it's in the body."
reagent_state = LIQUID
color = "#60A584"
heart_rate_stop = 1
@@ -1046,23 +1046,21 @@
/datum/reagent/capulettium/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
switch(current_cycle)
if(1 to 5)
if(1 to 10)
update_flags |= M.AdjustEyeBlurry(10, FALSE)
if(6 to 10)
M.Drowsy(10)
if(11)
update_flags |= M.Paralyse(10, FALSE)
M.visible_message("<B>[M]</B> seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
if(12 to 60)
update_flags |= M.Paralyse(10, FALSE)
if(61 to INFINITY)
update_flags |= M.AdjustEyeBlurry(10, FALSE)
fakedeath(M)
return ..() | update_flags
/datum/reagent/capulettium/on_mob_delete(mob/living/M)
if(M.status_flags & FAKEDEATH)
fakerevive(M)
..()
/datum/reagent/capulettium_plus
name = "Capulettium Plus"
id = "capulettium_plus"
description = "A rare and expensive drug that causes the user to appear dead for some time while they retain consciousness and vision."
description = "A rare and expensive drug that will silence the user and let him appear dead as long as it's in the body. Rest to play dead, stand up to wake up."
reagent_state = LIQUID
color = "#60A584"
heart_rate_stop = 1
@@ -1070,8 +1068,17 @@
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
M.Silence(2)
if((M.status_flags & FAKEDEATH) && !M.resting)
fakerevive(M)
else if(!(M.status_flags & FAKEDEATH) && M.resting)
fakedeath(M)
return ..()
/datum/reagent/capulettium_plus/on_mob_delete(mob/living/M)
if(M.status_flags & FAKEDEATH)
fakerevive(M)
..()
/datum/reagent/toxic_slurry
name = "Toxic Slurry"
id = "toxic_slurry"
@@ -102,7 +102,8 @@
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10)
volume = 10
ignore_flags = 1 //so you can medipen through hardsuits
ignore_flags = TRUE //so you can medipen through hardsuits
container_type = DRAWABLE
flags = null
list_reagents = list("epinephrine" = 10)
@@ -63,6 +63,12 @@
icon_state = "pill21"
list_reagents = list("initropidril" = 50)
/obj/item/reagent_containers/food/pill/fakedeath
name = "fake death pill"
desc = "Swallow then rest to appear dead, stand up to wake up. Also mutes the user's voice."
icon_state = "pill4"
list_reagents = list("capulettium_plus" = 50)
/obj/item/reagent_containers/food/pill/adminordrazine
name = "Adminordrazine pill"
desc = "It's magic. We don't have to explain it."
@@ -1135,7 +1135,7 @@
id = "integrated_robotic_chassis"
build_type = MECHFAB
build_path = /mob/living/carbon/human/machine/created
materials = list(MAT_METAL = 40000)
materials = list(MAT_METAL = 40000, MAT_TITANIUM = 7000) //for something made from lego, they sure need a lot of metal
construction_time = 400
category = list("Misc")
@@ -1185,3 +1185,54 @@
construction_time = 100
build_path = /obj/item/flash/synthetic
category = list("Misc")
/datum/design/voice_standard
name = "Voice Modkit : Standard"
desc = "A modification kit that updates a mech's onboard voice to Standard."
id = "voice_standard"
build_type = MECHFAB
materials = list(MAT_METAL = 500)
construction_time = 50
build_path = /obj/item/mecha_modkit/voice
category = list("Misc")
/datum/design/voice_nanotrasen
name = "Voice Modkit : Nanotrasen"
desc = "A modification kit that updates a mech's onboard voice to Nanotrasen."
id = "voice_nanotrasen"
build_type = MECHFAB
materials = list(MAT_METAL = 500)
construction_time = 50
build_path = /obj/item/mecha_modkit/voice/nanotrasen
category = list("Misc")
/datum/design/voice_silent
name = "Voice Modkit : Silent"
desc = "A modification kit that silences a mech's onboard voice."
id = "voice_silent"
build_type = MECHFAB
materials = list(MAT_METAL = 500)
construction_time = 50
build_path = /obj/item/mecha_modkit/voice/silent
category = list("Misc")
/datum/design/voice_honk
name = "Voice Modkit : Honk"
desc = "A modification kit that updates a mech's onboard voice to Honk. This is a terrible idea."
id = "voice_honk"
build_type = MECHFAB
materials = list(MAT_METAL = 400, MAT_BANANIUM = 100)
construction_time = 50
build_path = /obj/item/mecha_modkit/voice/honk
category = list("Misc")
/datum/design/voice_syndicate
name = "Voice Modkit : Syndicate"
desc = "A modification kit that updates a mech's onboard voice to Syndicate."
id = "voice_syndicate"
build_type = MECHFAB
materials = list(MAT_METAL = 400, MAT_TITANIUM = 100)
req_tech = list("syndicate" = 2)
construction_time = 50
build_path = /obj/item/mecha_modkit/voice/syndicate
category = list("Misc")
+5 -4
View File
@@ -2,6 +2,7 @@
// Cargo orders part for high price
// Requires high amount of power
// Requires high level stock parts
/datum/station_goal/bluespace_cannon
name = "Bluespace Artillery"
@@ -104,11 +105,11 @@
var/x_max
switch(cannon_dir)
if(EAST)
x_min = x - 4 //replace with defines later
x_max = x + 6
x_min = x - BSA_SIZE_BACK
x_max = x + BSA_SIZE_FRONT
if(WEST)
x_min = x + 4
x_max = x - 6
x_min = x + BSA_SIZE_BACK
x_max = x - BSA_SIZE_FRONT
for(var/turf/T in block(locate(x_min,y-1,z),locate(x_max,y+1,z)))
if(T.density || isspaceturf(T))
+2 -6
View File
@@ -3,11 +3,6 @@
// DNA vault requires x animals ,y plants, z human dna
// DNA vaults require high tier stock parts and cold
// After completion each crewmember can receive single upgrade chosen out of 2 for the mob.
#define VAULT_SPACEIMMUNE "Space Immunity"
#define VAULT_XRAY "X-Ray Vision"
#define VAULT_TELEKINESIS "Telekinesis"
#define VAULT_PSYCHIC "Psychic Powers"
#define VAULT_SPEED "Speediness"
/datum/station_goal/dna_vault
name = "DNA Vault"
@@ -17,7 +12,7 @@
/datum/station_goal/dna_vault/New()
..()
animal_count = rand(15,20) //might be too few given ~15 roundstart stationside ones
animal_count = rand(15, 20) //might be too few given ~15 roundstart stationside ones
human_count = rand(round(0.75 * ticker.mode.num_players_started()), ticker.mode.num_players_started()) // 75%+ roundstart population.
var/non_standard_plants = non_standard_plants_count()
plant_count = rand(round(0.5 * non_standard_plants),round(0.7 * non_standard_plants))
@@ -302,3 +297,4 @@ var/list/non_simple_animals = typecacheof(list(/mob/living/carbon/human/monkey,/
H.dna.SetSEState(block, 1, 1)
H.mutations |= power
genemutcheck(H, block, null, MUTCHK_FORCED)
H.dna.default_blocks.Add(block) //prevent removal by mutadone
@@ -142,6 +142,44 @@
spawn(90 / severity)
crit_fail = 0
/obj/item/organ/internal/cyberimp/brain/clown_voice
name = "Comical implant"
desc = "<span class='sans'>Uh oh.</span>"
implant_color = "#DEDE00"
slot = "brain_clownvoice"
origin_tech = "materials=2;biotech=2"
/obj/item/organ/internal/cyberimp/brain/speech_translator //actual translating done in human/handle_speech_problems
name = "Speech translator implant"
desc = "While known as a translator, this implant actually generates speech based on the user's thoughts when activated, completely bypassing the need to speak."
implant_color = "#C0C0C0"
slot = "brain_speechtranslator"
w_class = WEIGHT_CLASS_TINY
origin_tech = "materials=4;biotech=6"
actions_types = list(/datum/action/item_action/organ_action/toggle)
var/active = TRUE
var/speech_span = ""
var/speech_verb = "states"
/obj/item/organ/internal/cyberimp/brain/speech_translator/clown
name = "Comical speech translator implant"
implant_color = "#DEDE00"
speech_span = "sans"
/obj/item/organ/internal/cyberimp/brain/speech_translator/emp_act(severity)
if(emp_proof)
return
if(owner && active)
to_chat(owner, "<span class='notice'>Your translator's safeties trigger, it is now turned off.</span>")
active = FALSE
/obj/item/organ/internal/cyberimp/brain/speech_translator/ui_action_click()
if(owner && !active)
to_chat(owner, "<span class='notice'>You turn on your translator implant.</span>")
active = TRUE
else if(owner && active)
to_chat(owner, "<span class='notice'>You turn off your translator implant.</span>")
active = FALSE
//[[[[MOUTH]]]]
/obj/item/organ/internal/cyberimp/mouth
@@ -162,13 +200,6 @@
to_chat(owner, "<span class='warning'>Your breathing tube suddenly closes!</span>")
owner.AdjustLoseBreath(2)
/obj/item/organ/internal/cyberimp/brain/clown_voice
name = "Comical implant"
desc = "<span class='sans'>Uh oh.</span>"
implant_color = "#DEDE00"
slot = "brain_clownvoice"
origin_tech = "materials=2;biotech=2"
//[[[[CHEST]]]]
/obj/item/organ/internal/cyberimp/chest
name = "cybernetic torso implant"
+5 -4
View File
@@ -19,6 +19,7 @@
var/safe_toxins_max = 0.05
var/SA_para_min = 1 //Sleeping agent
var/SA_sleep_min = 5 //Sleeping agent
var/gas_toxicity_multiplier = 100
var/oxy_breath_dam_min = MIN_TOXIC_GAS_DAMAGE
var/oxy_breath_dam_max = MAX_TOXIC_GAS_DAMAGE
@@ -117,7 +118,7 @@
//Too much oxygen! //Yes, some species may not like it.
if(safe_oxygen_max)
if(O2_pp > safe_oxygen_max)
var/ratio = (breath.oxygen/safe_oxygen_max) * 10
var/ratio = (breath.oxygen/safe_oxygen_max) * gas_toxicity_multiplier
H.apply_damage_type(Clamp(ratio, oxy_breath_dam_min, oxy_breath_dam_max), oxy_damage_type)
H.throw_alert("too_much_oxy", /obj/screen/alert/too_much_oxy)
else
@@ -144,7 +145,7 @@
//Too much nitrogen!
if(safe_nitro_max)
if(N2_pp > safe_nitro_max)
var/ratio = (breath.nitrogen/safe_nitro_max) * 10
var/ratio = (breath.nitrogen/safe_nitro_max) * gas_toxicity_multiplier
H.apply_damage_type(Clamp(ratio, nitro_breath_dam_min, nitro_breath_dam_max), nitro_damage_type)
H.throw_alert("too_much_nitro", /obj/screen/alert/too_much_nitro)
else
@@ -208,7 +209,7 @@
//Too much toxins!
if(safe_toxins_max)
if(Toxins_pp > safe_toxins_max)
var/ratio = (breath.toxins/safe_toxins_max) * 10
var/ratio = (breath.toxins/safe_toxins_max) * gas_toxicity_multiplier
H.apply_damage_type(Clamp(ratio, tox_breath_dam_min, tox_breath_dam_max), tox_damage_type)
H.throw_alert("too_much_tox", /obj/screen/alert/too_much_tox)
else
@@ -325,7 +326,7 @@
desc = "They're filled with dust....wow."
safe_oxygen_min = 0 //We don't breathe this
safe_oxygen_max = 1 //This is toxic to us
safe_oxygen_max = 0.05 //This is toxic to us
safe_nitro_min = 16 //We breathe THIS!
oxy_damage_type = TOX //And it poisons us