diff --git a/.travis.yml b/.travis.yml index 908e4a473cd..2316c4bacc2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,8 @@ language: c env: - BYOND_MAJOR="507" - BYOND_MINOR="1282" + BYOND_MAJOR="508" + BYOND_MINOR="1287" before_install: - sudo apt-get update -qq diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index 223b503f4f7..943242d4092 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -191,13 +191,17 @@ ..() if(stat & NOPOWER) icon_state = "control_off" + set_light(0) else if (enabled) if (lethal) icon_state = "control_kill" + set_light(1.5, 1,"#990000") else icon_state = "control_stun" + set_light(1.5, 1,"#FF9900") else icon_state = "control_standby" + set_light(1.5, 1,"#003300") /obj/machinery/turretid/emp_act(severity) if(enabled) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 56236a754f4..b4e5bd251b7 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -5,6 +5,7 @@ desc = "A hand made chemical grenade." w_class = 2.0 force = 2.0 + det_time = null var/stage = 0 var/state = 0 var/path = 0 @@ -25,6 +26,7 @@ detonator.detached() usr.put_in_hands(detonator) detonator=null + det_time = null stage=0 icon_state = initial(icon_state) else if(beakers.len) @@ -60,6 +62,12 @@ user.remove_from_mob(det) det.loc = src detonator = det + if(istimer(detonator.a_left)) + var/obj/item/device/assembly/timer/T = detonator.a_left + det_time = 10*T.time + if(istimer(detonator.a_right)) + var/obj/item/device/assembly/timer/T = detonator.a_right + det_time = 10*T.time icon_state = initial(icon_state) +"_ass" name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]" stage = 1 @@ -142,6 +150,13 @@ if(!has_reagents) icon_state = initial(icon_state) +"_locked" playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1) + spawn(0) //Otherwise det_time is erroneously set to 0 after this + if(istimer(detonator.a_left)) //Make sure description reflects that the timer has been reset + var/obj/item/device/assembly/timer/T = detonator.a_left + det_time = 10*T.time + if(istimer(detonator.a_right)) + var/obj/item/device/assembly/timer/T = detonator.a_right + det_time = 10*T.time return playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1) diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index f5017538072..1565d321b67 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -47,6 +47,8 @@ if(det_time > 1) user << "The timer is set to [det_time/10] seconds." return + if(det_time == null) + return user << "\The [src] is set for instant detonation." @@ -89,16 +91,16 @@ /obj/item/weapon/grenade/attackby(obj/item/weapon/W as obj, mob/user as mob) if(isscrewdriver(W)) switch(det_time) - if ("1") + if (1) det_time = 10 user << "You set the [name] for 1 second detonation time." - if ("10") + if (10) det_time = 30 user << "You set the [name] for 3 second detonation time." - if ("30") + if (30) det_time = 50 user << "You set the [name] for 5 second detonation time." - if ("50") + if (50) det_time = 1 user << "You set the [name] for instant detonation." add_fingerprint(user) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 1ff9a1d1cc6..e84543e88f4 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -8,8 +8,8 @@ set name = "Jump to Area" set desc = "Area to jump to" set category = "Admin" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if(config.allow_admin_jump) @@ -25,8 +25,8 @@ /client/proc/jumptoturf(var/turf/T in world) set name = "Jump to Turf" set category = "Admin" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if(config.allow_admin_jump) log_admin("[key_name(usr)] jumped to [T.x],[T.y],[T.z] in [T.loc]") @@ -42,8 +42,8 @@ set category = "Admin" set name = "Jump to Mob" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if(config.allow_admin_jump) @@ -65,8 +65,8 @@ set category = "Admin" set name = "Jump to Coordinate" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if (config.allow_admin_jump) @@ -86,8 +86,8 @@ set category = "Admin" set name = "Jump to Key" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if(config.allow_admin_jump) @@ -111,8 +111,8 @@ set category = "Admin" set name = "Get Mob" set desc = "Mob to teleport" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if(config.allow_admin_jump) log_admin("[key_name(usr)] teleported [key_name(M)]") @@ -128,8 +128,8 @@ set name = "Get Key" set desc = "Key to teleport" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return if(config.allow_admin_jump) @@ -155,8 +155,8 @@ /client/proc/sendmob(var/mob/M in sortmobs()) set category = "Admin" set name = "Send Mob" - if(!check_rights(R_ADMIN, user = src)) - src << "Only administrators may use this command." + if(!check_rights(R_ADMIN)) + usr << "Only administrators may use this command." return var/area/A = input(usr, "Pick an area.", "Pick an area") in return_sorted_areas() if(A) diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index bb343c0e7ff..3d45e84f998 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -41,18 +41,18 @@ colour = "tajaran" key = "j" flags = WHITELISTED - syllables = list("rr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr", \ - "mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r", \ - "ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah", \ - "hal","ket","jurl","mah","tul","cresh","azu","ragh", "mro", "mra") + syllables = list("mrr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr", + "mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r", + "ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah", + "hal","ket","jurl","mah","tul","cresh","azu","ragh","mro","mra","mrro","mrra") /datum/language/tajaran/get_random_name(var/gender) var/new_name = ..(gender,1) - if(prob(80)) - new_name += " [pick(list("Hadii","Kaytam","Zhan-Khazan","Hharar","Njarir'Akhan"))]" + if(prob(50)) + new_name += " [pick(list("Hadii","Kaytam","Nazkiin","Zhan-Khazan","Hharar","Njarir'Akhan","Faaira'Nrezi","Rhezar","Mi'dynh","Rrhazkal","Bayan","Al'Manq","Mi'jri","Chur'eech","Sanu'dra","Ii'rka"))]" else - new_name += ..(gender,1) + new_name += " [..(gender,1)]" return new_name /datum/language/skrell diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ad191db2570..f0bfac9e583 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -341,7 +341,7 @@ if (istype(item, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = item - item = G.throw() //throw the person instead of the grab + item = G.throw_held() //throw the person instead of the grab if(ismob(item)) var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 718f9c6533d..156d9aeb815 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -41,7 +41,9 @@ ..() if(dna) + dna.ready_dna(src) dna.real_name = real_name + sync_organ_dna() make_blood() /mob/living/carbon/human/Destroy() diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index f2c64fa52ad..2dec075afa6 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -171,4 +171,9 @@ //New are added for reagents to random organs. for(var/datum/reagent/A in reagents.reagent_list) var/obj/item/organ/O = pick(organs) - O.trace_chemicals[A.name] = 100 \ No newline at end of file + O.trace_chemicals[A.name] = 100 + +/mob/living/carbon/human/proc/sync_organ_dna() + var/list/all_bits = internal_organs|organs + for(var/obj/item/organ/O in all_bits) + O.set_dna(dna) \ No newline at end of file diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 9471a705452..60d2bf419b9 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -51,7 +51,7 @@ adjust_position() //Used by throw code to hand over the mob, instead of throwing the grab. The grab is then deleted by the throw code. -/obj/item/weapon/grab/proc/throw() +/obj/item/weapon/grab/proc/throw_held() if(affecting) if(affecting.buckled) return null diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 0fdbaf749c1..bf1fa9d8c28 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -467,7 +467,7 @@ new_character.name = real_name new_character.dna.ready_dna(new_character) new_character.dna.b_type = client.prefs.b_type - + new_character.sync_organ_dna() if(client.prefs.disabilities) // Set defer to 1 if you add more crap here so it only recalculates struc_enzymes once. - N3X new_character.dna.SetSEState(GLASSESBLOCK,1,0) diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/nano/modules/power_monitor.dm index 07076fac0ad..9d386e8c932 100644 --- a/code/modules/nano/modules/power_monitor.dm +++ b/code/modules/nano/modules/power_monitor.dm @@ -36,7 +36,7 @@ // Refreshes list of active sensors kept on this computer. /datum/nano_module/power_monitor/proc/refresh_sensors() grid_sensors = list() - var/turf/T = get_turf(src) + var/turf/T = get_turf(nano_host()) for(var/obj/machinery/power/sensor/S in machines) if((T && S.loc.z == T.z) || (S.long_range)) // Consoles have range on their Z-Level. Sensors with long_range var will work between Z levels. if(S.name_tag == "#UNKN#") // Default name. Shouldn't happen! diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index d725937f08a..e6add5089cf 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -57,6 +57,12 @@ var/list/organ_cache = list() if(internal) holder.internal_organs |= src +/obj/item/organ/proc/set_dna(var/datum/dna/new_dna) + if(new_dna) + dna = new_dna.Clone() + blood_DNA.Cut() + blood_DNA[dna.unique_enzymes] = dna.b_type + /obj/item/organ/proc/die() if(status & ORGAN_ROBOT) return diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 3dd37a3b5e4..9cfdd272347 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -1051,6 +1051,7 @@ Note that amputating the affected organ does in fact remove the infection from t if(6 to INFINITY) flavor_text += "a ton of [wound]\s" return english_list(flavor_text) + /**************************************************** ORGAN DEFINES ****************************************************/ diff --git a/html/changelogs/PsiOmegaDelta-TurretControlGlow.yml b/html/changelogs/PsiOmegaDelta-TurretControlGlow.yml new file mode 100644 index 00000000000..35a230b9152 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-TurretControlGlow.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: True +changes: + - rscadd: "Turret controls now glow, with the color depending on the current mode." diff --git a/nano/templates/turret_control.tmpl b/nano/templates/turret_control.tmpl index 4e0e1acc89c..a529bcbb108 100644 --- a/nano/templates/turret_control.tmpl +++ b/nano/templates/turret_control.tmpl @@ -10,8 +10,8 @@ Turret Status:
- {{:helper.link('Enabled', null, {'command' : 'enable', 'value' : 1}, null, data.enabled ?'redButton' : null)}} - {{:helper.link('Disabled',null, {'command' : 'enable', 'value' : 0}, null,!data.enabled ? 'selected' : null)}} + {{:helper.link('Enabled', null, {'command' : 'enable', 'value' : 1}, data.enabled ?'redButton' : null)}} + {{:helper.link('Disabled',null, {'command' : 'enable', 'value' : 0}, !data.enabled ? 'selected' : null)}}
@@ -21,8 +21,8 @@ Lethal Mode:
- {{:helper.link('On', null, {'command' : 'lethal', 'value' : 1}, null, data.lethal ?'redButton' : null)}} - {{:helper.link('Off',null, {'command' : 'lethal', 'value' : 0}, null,!data.lethal ? 'selected' : null)}} + {{:helper.link('On', null, {'command' : 'lethal', 'value' : 1}, data.lethal ?'redButton' : null)}} + {{:helper.link('Off',null, {'command' : 'lethal', 'value' : 0}, !data.lethal ? 'selected' : null)}}
{{/if}} @@ -33,8 +33,8 @@ {{:value.category}}
- {{:helper.link('On', null, {'command' : value.setting, 'value' : 1}, null, value.value ? 'selected' : null)}} - {{:helper.link('Off',null, {'command' : value.setting, 'value' : 0}, null,!value.value ? 'selected' : null)}} + {{:helper.link('On', null, {'command' : value.setting, 'value' : 1}, value.value ? 'selected' : null)}} + {{:helper.link('Off',null, {'command' : value.setting, 'value' : 0}, !value.value ? 'selected' : null)}}
{{/for}}