From 6b8da9ca13ebe95497a30b17c0ef21ece9c7564c Mon Sep 17 00:00:00 2001 From: shazbot194 Date: Wed, 13 Jun 2018 20:22:17 -0800 Subject: [PATCH 01/43] Adds in all the stuff from the last one --- .../projectiles/ammunition/magazines.dm | 3 + .../projectiles/guns/projectile/shotgun.dm | 75 +++++++++++++++++- icons/obj/guns/projectile.dmi | Bin 38892 -> 39197 bytes 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 6ad60248a28..5944ec52b01 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -119,6 +119,9 @@ ammo_type = /obj/item/ammo_casing/shotgun/rubbershot max_ammo = 6 +/obj/item/ammo_box/magazine/internal/shot/riot/short + max_ammo = 3 + /obj/item/ammo_box/magazine/internal/grenadelauncher name = "grenade launcher internal magazine" ammo_type = /obj/item/ammo_casing/a40mm diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index c0678323409..997fecbda33 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -80,16 +80,85 @@ desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control." icon_state = "riotshotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/riot - sawn_desc = "Come with me if you want to live." + var/style = 1 /obj/item/gun/projectile/shotgun/riot/attackby(obj/item/A, mob/user, params) ..() if(istype(A, /obj/item/circular_saw) || istype(A, /obj/item/gun/energy/plasmacutter)) - sawoff(user) + sawoff(A, user, 0) if(istype(A, /obj/item/melee/energy)) var/obj/item/melee/energy/W = A if(W.active) - sawoff(user) + sawoff(A, user, 0) + if(istype(A, /obj/item/pipe)) + sawoff(A, user, 1) + +/obj/item/gun/projectile/shotgun/riot/sawoff(obj/item/A, mob/user, style = 0) + //Check to see if they match + if(sawn_state == SAWN_OFF & style == 0) + to_chat(user, "\The [src] is already shortened!") + return + if(sawn_state != SAWN_OFF & style == 1) + to_chat(user, "[src] already has a full barrel and magazine!") + return + //Make sure it isn't in a bag + if(istype(loc, /obj/item/storage)) + to_chat(user, "How do you plan to modify [src] while it's in a bag.") + return + //if there's any live ammo inside the gun, makes it go off + if(chambered) + afterattack(user, user) + user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") + return + //Spill the mag onto the floor + if(magazine.ammo_count()) + user.visible_message("[user.name] opens [src] up and the shells go goes flying around!", "You open [src] up and the shells go goes flying everywhere!!") + while(get_ammo() > 0) + var/obj/item/ammo_casing/CB + CB = magazine.get_round(0) + if(CB) + CB.loc = get_turf(loc) + CB.update_icon() + if(style == 0) + if(do_after(user, 10, target = src)) + to_chat(user, "You saw the barrel and magazine of the [src].") + w_class = WEIGHT_CLASS_NORMAL + slot_flags = null + magazine.max_ammo = 3 + name = "assault shotgun" + current_skin = "riotshotgun-short" + desc = "A shortened riot shotgun that has been shortened enough to fit inside a bag." + sawn_state = SAWN_OFF + update_icon() + else + if(do_after(user, 10, target = src)) + to_chat(user, "You install the longer barrel and magazine onto [src].") + w_class = WEIGHT_CLASS_BULKY + slot_flags = SLOT_BACK + magazine.max_ammo = 6 + name = "riot shotgun" + current_skin = "riotshotgun" + desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control." + sawn_state = null + update_icon() + qdel(A) + return + +/obj/item/gun/projectile/shotgun/riot/update_icon() //Can't use the old proc as it makes it go to riotshotgun-short_sawn + ..() + if(current_skin) + icon_state = "[current_skin]" + else + icon_state = "[initial(icon_state)]" + +/obj/item/gun/projectile/shotgun/riot/short + name = "assault shotgun" + desc = "A shortened riot shotgun that has been shortened enough to fit inside a bag." + icon_state = "riotshotgun-short" + mag_type = /obj/item/ammo_box/magazine/internal/shot/riot/short + w_class = WEIGHT_CLASS_NORMAL + slot_flags = null + sawn_state = SAWN_OFF /////////////////////// // BOLT ACTION RIFLE // diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 288785052cd916d9d439e42d23f7a13d3e610c68..906ffaac4cb0c02c0c23fa0be583a714c126543b 100644 GIT binary patch literal 39197 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≤n|;@k@f^3hS%t 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 yoH^-kIh)i#7X)yab{ Date: Thu, 12 Jul 2018 16:40:21 -0800 Subject: [PATCH 02/43] Code Improvements --- .../projectiles/guns/projectile/shotgun.dm | 133 +++++++++++------- 1 file changed, 84 insertions(+), 49 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 997fecbda33..903d18798d7 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -80,38 +80,79 @@ desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control." icon_state = "riotshotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/riot - var/style = 1 + sawn_desc = "Come with me if you want to live." + sawn_state = SAWN_INTACT /obj/item/gun/projectile/shotgun/riot/attackby(obj/item/A, mob/user, params) ..() if(istype(A, /obj/item/circular_saw) || istype(A, /obj/item/gun/energy/plasmacutter)) - sawoff(A, user, 0) + sawoff(user) if(istype(A, /obj/item/melee/energy)) var/obj/item/melee/energy/W = A if(W.active) - sawoff(A, user, 0) + sawoff(user) if(istype(A, /obj/item/pipe)) - sawoff(A, user, 1) + unsaw(A, user) -/obj/item/gun/projectile/shotgun/riot/sawoff(obj/item/A, mob/user, style = 0) - //Check to see if they match - if(sawn_state == SAWN_OFF & style == 0) - to_chat(user, "\The [src] is already shortened!") +/obj/item/gun/projectile/sawoff(mob/user) + if(sawn_state == SAWN_OFF) + to_chat(user, "[src] has already been shortened!") return - if(sawn_state != SAWN_OFF & style == 1) - to_chat(user, "[src] already has a full barrel and magazine!") - return - //Make sure it isn't in a bag - if(istype(loc, /obj/item/storage)) + if(istype(loc, /obj/item/storage)) //To prevent inventory exploits to_chat(user, "How do you plan to modify [src] while it's in a bag.") return - //if there's any live ammo inside the gun, makes it go off - if(chambered) - afterattack(user, user) - user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") + if(chambered) //if the gun is chambering live ammo, shoot self, if chambering empty ammo, 'click' + if(chambered.BB) + afterattack(user, user) + user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") + return + else + afterattack(user, user) + user.visible_message("The [src] goes click!", "The [src] you are holding goes click.") + if(magazine.ammo_count()) //Spill the mag onto the floor + user.visible_message("[user.name] opens [src] up and the shells go goes flying around!", "You open [src] up and the shells go goes flying everywhere!!") + while(get_ammo(0) > 0) + var/obj/item/ammo_casing/CB + CB = magazine.get_round(0) + if(CB) + CB.loc = get_turf(loc) + CB.update_icon() + + if(do_after(user, 30, target = src)) + user.visible_message("[user] shortens \the [src]!", "You shorten \the [src].") + post_sawoff() + return 1 + + +/obj/item/gun/projectile/proc/post_sawoff() + name = "assault shotgun" + desc = sawn_desc + w_class = WEIGHT_CLASS_NORMAL + current_skin = "riotshotgun-short" + item_state = "gun" //phil235 is it different with different skin? + slot_flags &= ~SLOT_BACK //you can't sling it on your back + slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) + sawn_state = SAWN_OFF + magazine.max_ammo = 3 + update_icon() + + +/obj/item/gun/projectile/proc/unsaw(obj/item/A, mob/user) + if(sawn_state == SAWN_INTACT) + to_chat(user, "[src] has not been shortened!") return - //Spill the mag onto the floor - if(magazine.ammo_count()) + if(istype(loc, /obj/item/storage)) //To prevent inventory exploits + to_chat(user, "How do you plan to modify [src] while it's in a bag.") + return + if(chambered) //if the gun is chambering live ammo, shoot self, if chambering empty ammo, 'click' + if(chambered.BB) + afterattack(user, user) + user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") + return + else + afterattack(user, user) + user.visible_message("The [src] goes click!", "The [src] you are holding goes click.") + if(magazine.ammo_count()) //Spill the mag onto the floor user.visible_message("[user.name] opens [src] up and the shells go goes flying around!", "You open [src] up and the shells go goes flying everywhere!!") while(get_ammo() > 0) var/obj/item/ammo_casing/CB @@ -119,30 +160,24 @@ if(CB) CB.loc = get_turf(loc) CB.update_icon() - if(style == 0) - if(do_after(user, 10, target = src)) - to_chat(user, "You saw the barrel and magazine of the [src].") - w_class = WEIGHT_CLASS_NORMAL - slot_flags = null - magazine.max_ammo = 3 - name = "assault shotgun" - current_skin = "riotshotgun-short" - desc = "A shortened riot shotgun that has been shortened enough to fit inside a bag." - sawn_state = SAWN_OFF - update_icon() - else - if(do_after(user, 10, target = src)) - to_chat(user, "You install the longer barrel and magazine onto [src].") - w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK - magazine.max_ammo = 6 - name = "riot shotgun" - current_skin = "riotshotgun" - desc = "A sturdy shotgun with a longer magazine and a fixed tactical stock designed for non-lethal riot control." - sawn_state = null - update_icon() - qdel(A) - return + + if(do_after(user, 30, target = src)) + qdel(A) + user.visible_message("[user] lengthens [src]!", "You lengthen [src].") + post_unsaw(user) + return 1 + +/obj/item/gun/projectile/proc/post_unsaw() + name = initial(name) + desc = initial(desc) + w_class = initial(w_class) + current_skin = "riotshotgun" + item_state = initial(item_state) + slot_flags &= ~SLOT_BELT + slot_flags |= SLOT_BACK + sawn_state = SAWN_INTACT + magazine.max_ammo = 6 + update_icon() /obj/item/gun/projectile/shotgun/riot/update_icon() //Can't use the old proc as it makes it go to riotshotgun-short_sawn ..() @@ -152,13 +187,13 @@ icon_state = "[initial(icon_state)]" /obj/item/gun/projectile/shotgun/riot/short - name = "assault shotgun" - desc = "A shortened riot shotgun that has been shortened enough to fit inside a bag." - icon_state = "riotshotgun-short" mag_type = /obj/item/ammo_box/magazine/internal/shot/riot/short - w_class = WEIGHT_CLASS_NORMAL - slot_flags = null - sawn_state = SAWN_OFF + +/obj/item/gun/projectile/shotgun/riot/short/New() + ..() + post_sawoff() + + /////////////////////// // BOLT ACTION RIFLE // From 2e10eb96d04432bbc62f3d8d3e59cbadf665160b Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Fri, 27 Jul 2018 18:35:01 -0400 Subject: [PATCH 03/43] Species Refactor Followup --- code/modules/mob/living/carbon/human/human.dm | 157 +---------------- .../living/carbon/human/species/_species.dm | 29 +-- .../living/carbon/human/species/abductor.dm | 6 +- .../mob/living/carbon/human/species/diona.dm | 9 +- .../mob/living/carbon/human/species/golem.dm | 4 +- .../mob/living/carbon/human/species/grey.dm | 16 +- .../living/carbon/human/species/machine.dm | 59 ++++++- .../mob/living/carbon/human/species/monkey.dm | 13 +- .../living/carbon/human/species/nucleation.dm | 7 +- .../living/carbon/human/species/plasmaman.dm | 4 +- .../mob/living/carbon/human/species/shadow.dm | 12 +- .../living/carbon/human/species/shadowling.dm | 4 +- .../living/carbon/human/species/skeleton.dm | 2 +- .../mob/living/carbon/human/species/slime.dm | 166 ++++++++---------- .../living/carbon/human/species/tajaran.dm | 2 +- .../mob/living/carbon/human/species/unathi.dm | 14 +- .../mob/living/carbon/human/species/vox.dm | 20 +-- .../living/carbon/human/species/vulpkanin.dm | 2 +- .../mob/living/carbon/human/species/wryn.dm | 5 +- code/modules/mob/login.dm | 6 +- 20 files changed, 194 insertions(+), 343 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1cf1a8bb942..3f36b8b6d55 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1291,7 +1291,7 @@ if(oldspecies.default_genes.len) oldspecies.handle_dna(src, TRUE) // Remove any genes that belong to the old species - oldspecies.handle_pre_change(src) + oldspecies.on_species_loss(src) dna.species = new new_species() @@ -1365,7 +1365,7 @@ dna.real_name = real_name - dna.species.handle_post_spawn(src) + dna.species.on_species_gain(src) see_in_dark = dna.species.get_resultant_darksight(src) if(see_in_dark > 2) @@ -1447,122 +1447,6 @@ W.message = message W.add_fingerprint(src) -// Allows IPC's to change their monitor display -/mob/living/carbon/human/proc/change_monitor() - set category = "IC" - set name = "Change Monitor/Optical Display" - set desc = "Change the display on your monitor or the colour of your optics." - - if(incapacitated()) - to_chat(src, "You cannot change your monitor or optical display in your current state.") - return - - var/obj/item/organ/external/head/head_organ = get_organ("head") - if(!head_organ) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics. - to_chat(src, "Where's your head at? Can't change your monitor/display without one.") - return - - if(dna.species.bodyflags & ALL_RPARTS) //If they can have a fully cybernetic body... - var/datum/robolimb/robohead = all_robolimbs[head_organ.model] - if(!head_organ) - return - if(!robohead.is_monitor) //If they've got a prosthetic head and it isn't a monitor, they've no screen to adjust. Instead, let them change the colour of their optics! - var/optic_colour = input(src, "Select optic colour", m_colours["head"]) as color|null - if(incapacitated()) - to_chat(src, "You were interrupted while changing the colour of your optics.") - return - if(optic_colour) - change_markings(optic_colour, "head") - - else if(robohead.is_monitor) //Means that the character's head is a monitor (has a screen). Time to customize. - var/list/hair = list() - for(var/i in hair_styles_public_list) - var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i] - if((head_organ.dna.species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use. - hair += i - - var/new_style = input(src, "Select a monitor display", "Monitor Display", head_organ.h_style) as null|anything in hair - if(incapacitated()) - to_chat(src, "You were interrupted while changing your monitor display.") - return - if(new_style) - change_hair(new_style) - -//Putting a couple of procs here that I don't know where else to dump. -//Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse). -/mob/living/carbon/human/proc/leap() - set category = "Abilities" - set name = "Leap" - set desc = "Leap at a target and grab them aggressively." - - if(last_special > world.time) - return - - if(stat || paralysis || stunned || weakened || lying || restrained() || buckled) - to_chat(src, "You cannot leap in your current state.") - return - - var/list/choices = list() - for(var/mob/living/M in view(6,src)) - if(!istype(M,/mob/living/silicon)) - choices += M - choices -= src - - var/mob/living/T = input(src,"Who do you wish to leap at?") as null|anything in choices - - if(!T || !src || src.stat) return - - if(get_dist(get_turf(T), get_turf(src)) > 6) return - - if(last_special > world.time) - return - - if(!canmove) - to_chat(src, "You cannot leap in your current state.") - return - - last_special = world.time + 75 - status_flags |= LEAPING - - src.visible_message("\The [src] leaps at [T]!") - src.throw_at(get_step(get_turf(T),get_turf(src)), 5, 1, src) - playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1) - - sleep(5) - - if(status_flags & LEAPING) status_flags &= ~LEAPING - - if(!src.Adjacent(T)) - to_chat(src, "You miss!") - return - - T.Weaken(5) - - //Only official raider vox get the grab and no self-prone." - if(src.mind && src.mind.special_role != "Vox Raider") - src.Weaken(5) - return - - var/use_hand = "left" - if(l_hand) - if(r_hand) - to_chat(src, "You need to have one hand free to grab someone.") - return - else - use_hand = "right" - - src.visible_message("\The [src] seizes [T] aggressively!") - - var/obj/item/grab/G = new(src,T) - if(use_hand == "left") - l_hand = G - else - r_hand = G - - G.state = GRAB_AGGRESSIVE - G.icon_state = "grabbed1" - G.synch() - /mob/living/carbon/human/proc/get_eyecon() var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes) var/obj/item/organ/internal/cyberimp/eyes/eye_implant = get_int_organ(/obj/item/organ/internal/cyberimp/eyes) @@ -1598,43 +1482,6 @@ Eyes need to have significantly high darksight to shine unless the mob has the X return TRUE -/mob/living/carbon/human/proc/gut() - set category = "Abilities" - set name = "Gut" - set desc = "While grabbing someone aggressively, rip their guts out or tear them apart." - - if(last_special > world.time) - return - - if(!canmove) - to_chat(src, "You cannot do that in your current state.") - return - - var/obj/item/grab/G = locate() in src - if(!G || !istype(G)) - to_chat(src, "You are not grabbing anyone.") - return - - if(G.state < GRAB_AGGRESSIVE) - to_chat(src, "You must have an aggressive grab to gut your prey!") - return - - last_special = world.time + 50 - - visible_message("\The [src] rips viciously at \the [G.affecting]'s body with its claws!") - - if(istype(G.affecting,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = G.affecting - H.apply_damage(50,BRUTE) - if(H.stat == 2) - H.gib() - else - var/mob/living/M = G.affecting - if(!istype(M)) return //wut - M.apply_damage(50,BRUTE) - if(M.stat == 2) - M.gib() - /mob/living/carbon/human/assess_threat(var/mob/living/simple_animal/bot/secbot/judgebot, var/lasercolor) if(judgebot.emagged == 2) return 10 //Everyone is a criminal! diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 6ce91d80ddd..b20cdb3823f 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -79,8 +79,6 @@ var/bodyflags = 0 var/dietflags = 0 // Make sure you set this, otherwise it won't be able to digest a lot of foods - var/list/abilities = list() // For species-derived or admin-given powers - var/blood_color = "#A10808" //Red. var/flesh_color = "#FFC896" //Pink. var/single_gib_type = /obj/effect/decal/cleanable/blood/gibs @@ -151,9 +149,7 @@ "l_hand" = list("path" = /obj/item/organ/external/hand), "r_hand" = list("path" = /obj/item/organ/external/hand/right), "l_foot" = list("path" = /obj/item/organ/external/foot), - "r_foot" = list("path" = /obj/item/organ/external/foot/right) - ) - var/list/proc/species_abilities = list() + "r_foot" = list("path" = /obj/item/organ/external/foot/right)) /datum/species/New() //If the species has eyes, they are the default vision organ @@ -259,25 +255,16 @@ . -= 2 return . -/datum/species/proc/handle_post_spawn(mob/living/carbon/C) //Handles anything not already covered by basic species assignment. - grant_abilities(C) +/datum/species/proc/on_species_gain(mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment. + return + +/datum/species/proc/on_species_loss(mob/living/carbon/human/H) + if(H.butcher_results) //clear it out so we don't butcher a actual human. + H.butcher_results = null /datum/species/proc/updatespeciescolor(mob/living/carbon/human/H) //Handles changing icobase for species that have multiple skin colors. return -/datum/species/proc/grant_abilities(mob/living/carbon/human/H) - for(var/proc/ability in species_abilities) - H.verbs += ability - -/datum/species/proc/handle_pre_change(mob/living/carbon/human/H) - if(H.butcher_results) //clear it out so we don't butcher a actual human. - H.butcher_results = null - remove_abilities(H) - -/datum/species/proc/remove_abilities(mob/living/carbon/human/H) - for(var/proc/ability in species_abilities) - H.verbs -= ability - // Do species-specific reagent handling here // Return 1 if it should do normal processing too // Return the parent value if processing does not explicitly stop @@ -297,7 +284,7 @@ H.setOxyLoss(0) H.SetLoseBreath(0) -/datum/species/proc/handle_dna(mob/living/carbon/C, remove) //Handles DNA mutations, as that doesn't work at init. Make sure you call genemutcheck on any blocks changed here +/datum/species/proc/handle_dna(mob/living/carbon/human/H, remove) //Handles DNA mutations, as that doesn't work at init. Make sure you call genemutcheck on any blocks changed here return /datum/species/proc/handle_death(mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns). diff --git a/code/modules/mob/living/carbon/human/species/abductor.dm b/code/modules/mob/living/carbon/human/species/abductor.dm index c205cb6d033..f51870d9e00 100644 --- a/code/modules/mob/living/carbon/human/species/abductor.dm +++ b/code/modules/mob/living/carbon/human/species/abductor.dm @@ -32,15 +32,15 @@ /datum/species/abductor/can_understand(mob/other) //Abductors can understand everyone, but they can only speak over their mindlink to another team-member return TRUE -/datum/species/abductor/handle_post_spawn(mob/living/carbon/human/H) +/datum/species/abductor/on_species_gain(mob/living/carbon/human/H) + ..() H.gender = NEUTER H.languages.Cut() //Under no condition should you be able to speak any language H.add_language("Abductor Mindlink") //other than over the abductor's own mindlink var/datum/atom_hud/abductor_hud = huds[DATA_HUD_ABDUCTOR] abductor_hud.add_hud_to(H) - return ..() -/datum/species/abductor/remove_abilities(mob/living/carbon/human/H) +/datum/species/abductor/on_species_loss(mob/living/carbon/human/H) ..() var/datum/atom_hud/abductor_hud = huds[DATA_HUD_ABDUCTOR] abductor_hud.remove_hud_from(H) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/diona.dm b/code/modules/mob/living/carbon/human/species/diona.dm index 7d7b2acd713..6f53be4d3c8 100644 --- a/code/modules/mob/living/carbon/human/species/diona.dm +++ b/code/modules/mob/living/carbon/human/species/diona.dm @@ -76,17 +76,16 @@ "pulls out a secret stash of herbicide and takes a hearty swig!", "is pulling themselves apart!") -/datum/species/diona/can_understand(var/mob/other) +/datum/species/diona/can_understand(mob/other) if(istype(other, /mob/living/simple_animal/diona)) return 1 return 0 -/datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H) +/datum/species/diona/on_species_gain(mob/living/carbon/human/H) + ..() H.gender = NEUTER - return ..() - -/datum/species/diona/handle_life(var/mob/living/carbon/human/H) +/datum/species/diona/handle_life(mob/living/carbon/human/H) H.radiation = Clamp(H.radiation, 0, 100) //We have to clamp this first, then decrease it, or there's a few edge cases of massive heals if we clamp and decrease at the same time. var/rads = H.radiation / 25 H.radiation = max(H.radiation-rads, 0) diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 772a5ca5ba6..c3fa38611b5 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -42,7 +42,8 @@ "is crumbling into dust!", "is smashing their body apart!") -/datum/species/golem/handle_post_spawn(var/mob/living/carbon/human/H) +/datum/species/golem/on_species_gain(mob/living/carbon/human/H) + ..() if(H.mind) H.mind.assigned_role = "Golem" H.mind.special_role = SPECIAL_ROLE_GOLEM @@ -53,7 +54,6 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/golem(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/golem(H), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/golem(H), slot_gloves) - ..() ////////Adamantine Golem stuff I dunno where else to put it diff --git a/code/modules/mob/living/carbon/human/species/grey.dm b/code/modules/mob/living/carbon/human/species/grey.dm index ad4239c0d05..e8cb6b13083 100644 --- a/code/modules/mob/living/carbon/human/species/grey.dm +++ b/code/modules/mob/living/carbon/human/species/grey.dm @@ -29,19 +29,15 @@ reagent_tag = PROCESS_ORG blood_color = "#A200FF" -/datum/species/grey/handle_dna(var/mob/living/carbon/C, var/remove) - if(!remove) - C.dna.SetSEState(REMOTETALKBLOCK,1,1) - genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED) - else - C.dna.SetSEState(REMOTETALKBLOCK,0,1) - genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED) +/datum/species/grey/handle_dna(mob/living/carbon/human/H, remove) ..() + H.dna.SetSEState(REMOTETALKBLOCK, !remove, 1) + genemutcheck(H, REMOTETALKBLOCK, null, MUTCHK_FORCED) -/datum/species/grey/water_act(var/mob/living/carbon/C, volume, temperature, source) +/datum/species/grey/water_act(mob/living/carbon/human/H, volume, temperature, source) ..() - C.take_organ_damage(5,min(volume,20)) - C.emote("scream") + H.take_organ_damage(5, min(volume, 20)) + H.emote("scream") /datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H) var/speech_pref = H.client.prefs.speciesprefs diff --git a/code/modules/mob/living/carbon/human/species/machine.dm b/code/modules/mob/living/carbon/human/species/machine.dm index 066677f3104..fa3e4e321a9 100644 --- a/code/modules/mob/living/carbon/human/species/machine.dm +++ b/code/modules/mob/living/carbon/human/species/machine.dm @@ -72,17 +72,64 @@ "is frying their own circuits!", "is blocking their ventilation port!") - species_abilities = list( - /mob/living/carbon/human/proc/change_monitor - ) + var/datum/action/innate/change_monitor/monitor -/datum/species/machine/handle_death(var/mob/living/carbon/human/H) +/datum/species/machine/on_species_gain(mob/living/carbon/human/H) + ..() + monitor = new() + monitor.Grant(H) + +/datum/species/machine/on_species_loss(mob/living/carbon/human/H) + ..() + if(monitor) + monitor.Remove(H) + +/datum/species/machine/handle_death(mob/living/carbon/human/H) var/obj/item/organ/external/head/head_organ = H.get_organ("head") if(!head_organ) return head_organ.h_style = "Bald" head_organ.f_style = "Shaved" spawn(100) - if(H) + if(H && head_organ) H.update_hair() - H.update_fhair() \ No newline at end of file + H.update_fhair() + +// Allows IPC's to change their monitor display +/datum/action/innate/change_monitor + name = "Change Monitor" + check_flags = AB_CHECK_CONSCIOUS + button_icon_state = "scan_mode" + +/datum/action/innate/change_monitor/Activate() + var/mob/living/carbon/human/H = owner + var/obj/item/organ/external/head/head_organ = H.get_organ("head") + + if(!head_organ) //If the rock'em-sock'em robot's head came off during a fight, they shouldn't be able to change their screen/optics. + to_chat(H, "Where's your head at? Can't change your monitor/display without one.") + return + + var/datum/robolimb/robohead = all_robolimbs[head_organ.model] + if(!head_organ) + return + if(!robohead.is_monitor) //If they've got a prosthetic head and it isn't a monitor, they've no screen to adjust. Instead, let them change the colour of their optics! + var/optic_colour = input(H, "Select optic colour", H.m_colours["head"]) as color|null + if(H.incapacitated()) + to_chat(H, "You were interrupted while changing the colour of your optics.") + return + if(optic_colour) + H.change_markings(optic_colour, "head") + + else if(robohead.is_monitor) //Means that the character's head is a monitor (has a screen). Time to customize. + var/list/hair = list() + for(var/i in hair_styles_public_list) + var/datum/sprite_accessory/hair/tmp_hair = hair_styles_public_list[i] + if((head_organ.dna.species.name in tmp_hair.species_allowed) && (robohead.company in tmp_hair.models_allowed)) //Populate the list of available monitor styles only with styles that the monitor-head is allowed to use. + hair += i + + var/new_style = input(H, "Select a monitor display", "Monitor Display", head_organ.h_style) as null|anything in hair + if(H.incapacitated()) + to_chat(src, "You were interrupted while changing your monitor display.") + return + if(new_style) + H.change_hair(new_style) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index 4128024a8c9..5e926a23870 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -35,7 +35,7 @@ brute_mod = 1.5 burn_mod = 1.5 -/datum/species/monkey/handle_npc(var/mob/living/carbon/human/H) +/datum/species/monkey/handle_npc(mob/living/carbon/human/H) if(H.stat != CONSCIOUS) return if(prob(33) && H.canmove && isturf(H.loc) && !H.pulledby) //won't move if being pulled @@ -46,16 +46,17 @@ /datum/species/monkey/get_random_name() return "[lowertext(name)] ([rand(100,999)])" -/datum/species/monkey/handle_post_spawn(var/mob/living/carbon/human/H) +/datum/species/monkey/on_species_gain(mob/living/carbon/human/H) + ..() H.real_name = "[lowertext(name)] ([rand(100,999)])" H.name = H.real_name H.butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/monkey = 5) +/datum/species/monkey/handle_dna(mob/living/carbon/human/H, remove) ..() - -/datum/species/monkey/handle_dna(var/mob/living/carbon/human/H) - H.dna.SetSEState(MONKEYBLOCK,1) - genemutcheck(H,MONKEYBLOCK,null,MUTCHK_FORCED) + if(!remove) + H.dna.SetSEState(MONKEYBLOCK, TRUE) + genemutcheck(H, MONKEYBLOCK, null, MUTCHK_FORCED) /datum/species/monkey/handle_can_equip(obj/item/I, slot, disable_warning = 0, mob/living/carbon/human/user) switch(slot) diff --git a/code/modules/mob/living/carbon/human/species/nucleation.dm b/code/modules/mob/living/carbon/human/species/nucleation.dm index 4fcfae74282..faf81ea875b 100644 --- a/code/modules/mob/living/carbon/human/species/nucleation.dm +++ b/code/modules/mob/living/carbon/human/species/nucleation.dm @@ -28,14 +28,13 @@ ) vision_organ = /obj/item/organ/internal/eyes/luminescent_crystal -/datum/species/nucleation/handle_post_spawn(var/mob/living/carbon/human/H) +/datum/species/nucleation/on_species_gain(mob/living/carbon/human/H) + ..() H.light_color = "#1C1C00" H.set_light(2) - return ..() -/datum/species/nucleation/handle_death(var/mob/living/carbon/human/H) +/datum/species/nucleation/handle_death(mob/living/carbon/human/H) var/turf/T = get_turf(H) H.visible_message("[H]'s body explodes, leaving behind a pile of microscopic crystals!") explosion(T, 0, 0, 2, 2) // Create a small explosion burst upon death -// new /obj/item/shard/supermatter( T ) qdel(H) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index 46270219735..dcbdc7d17be 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -162,7 +162,7 @@ H.internal = H.get_item_by_slot(tank_slot) H.update_action_buttons_icon() -/datum/species/plasmaman/handle_life(var/mob/living/carbon/human/H) +/datum/species/plasmaman/handle_life(mob/living/carbon/human/H) if(!istype(H.wear_suit, /obj/item/clothing/suit/space/eva/plasmaman) || !istype(H.head, /obj/item/clothing/head/helmet/space/eva/plasmaman)) var/datum/gas_mixture/environment = H.loc.return_air() if(environment && environment.oxygen && environment.oxygen >= OXYCONCEN_PLASMEN_IGNITION) //Plasmamen so long as there's enough oxygen (0.5 moles, same as it takes to burn gaseous plasma). @@ -178,7 +178,7 @@ H.update_fire() ..() -/datum/species/plasmaman/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R) +/datum/species/plasmaman/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) if(R.id == "plasma") H.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER) H.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER) diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index 0e8bd2e91e2..03956f81cb0 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -28,7 +28,7 @@ "is twisting their own neck!", "is staring into the closest light source!") - var/grant_vision_toggle = 1 + var/grant_vision_toggle = TRUE var/datum/action/innate/shadow/darkvision/vision_toggle /datum/action/innate/shadow/darkvision //Darkvision toggle so shadowpeople can actually see where darkness is @@ -46,19 +46,19 @@ H.vision_type = null to_chat(H, "You adjust your vision to recognize the shadows.") -/datum/species/shadow/grant_abilities(var/mob/living/carbon/human/H) - . = ..() +/datum/species/shadow/on_species_gain(mob/living/carbon/human/H) + ..() if(grant_vision_toggle) vision_toggle = new vision_toggle.Grant(H) -/datum/species/shadow/remove_abilities(var/mob/living/carbon/human/H) - . = ..() +/datum/species/shadow/on_species_loss(mob/living/carbon/human/H) + ..() if(grant_vision_toggle && vision_toggle) H.vision_type = null vision_toggle.Remove(H) -/datum/species/shadow/handle_life(var/mob/living/carbon/human/H) +/datum/species/shadow/handle_life(mob/living/carbon/human/H) var/light_amount = 0 if(isturf(H.loc)) var/turf/T = H.loc diff --git a/code/modules/mob/living/carbon/human/species/shadowling.dm b/code/modules/mob/living/carbon/human/species/shadowling.dm index e7d7982a765..b87d7565d23 100644 --- a/code/modules/mob/living/carbon/human/species/shadowling.dm +++ b/code/modules/mob/living/carbon/human/species/shadowling.dm @@ -20,7 +20,7 @@ "brain" = /obj/item/organ/internal/brain, "eyes" = /obj/item/organ/internal/eyes) -/datum/species/shadow/ling/handle_life(var/mob/living/carbon/human/H) +/datum/species/shadow/ling/handle_life(mob/living/carbon/human/H) if(!H.weakeyes) H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs var/light_amount = 0 @@ -65,7 +65,7 @@ oxy_mod = 0 heatmod = 1.1 -/datum/species/shadow/ling/lesser/handle_life(var/mob/living/carbon/human/H) +/datum/species/shadow/ling/lesser/handle_life(mob/living/carbon/human/H) if(!H.weakeyes) H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs var/light_amount = 0 diff --git a/code/modules/mob/living/carbon/human/species/skeleton.dm b/code/modules/mob/living/carbon/human/species/skeleton.dm index 8afc35f743a..6a2b74fb671 100644 --- a/code/modules/mob/living/carbon/human/species/skeleton.dm +++ b/code/modules/mob/living/carbon/human/species/skeleton.dm @@ -39,7 +39,7 @@ "brain" = /obj/item/organ/internal/brain/golem, ) //Has default darksight of 2. -/datum/species/skeleton/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R) +/datum/species/skeleton/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) // Crazylemon is still silly if(R.id == "milk") H.heal_overall_damage(4,4) diff --git a/code/modules/mob/living/carbon/human/species/slime.dm b/code/modules/mob/living/carbon/human/species/slime.dm index 77fa54491e0..583835b7358 100644 --- a/code/modules/mob/living/carbon/human/species/slime.dm +++ b/code/modules/mob/living/carbon/human/species/slime.dm @@ -1,3 +1,11 @@ +#define SLIMEPERSON_COLOR_SHIFT_TRIGGER 0.1 +#define SLIMEPERSON_ICON_UPDATE_PERIOD 200 // 20 seconds +#define SLIMEPERSON_BLOOD_SCALING_FACTOR 5 // Used to adjust how much of an effect the blood has on the rate of color change. Higher is slower. + +#define SLIMEPERSON_HUNGERCOST 50 +#define SLIMEPERSON_MINHUNGER 250 +#define SLIMEPERSON_REGROWTHDELAY 450 // 45 seconds + /datum/species/slime name = "Slime People" name_plural = "Slime People" @@ -41,33 +49,24 @@ "is turning a dull, brown color and melting into a puddle!") var/reagent_skin_coloring = FALSE + var/datum/action/innate/regrow/grow + var/datum/action/innate/slimecolor/recolor - var/datum/action/innate/regrow/grow = new() - - species_abilities = list( - /mob/living/carbon/human/verb/toggle_recolor_verb, - /mob/living/carbon/human/proc/regrow_limbs - ) - -/datum/species/slime/handle_post_spawn(var/mob/living/carbon/human/H) - grow.Grant(H) +/datum/species/slime/on_species_gain(mob/living/carbon/human/H) ..() + grow = new() + grow.Grant(H) + recolor = new() + recolor.Grant(H) -/datum/action/innate/regrow - name = "Regrow limbs" - icon_icon = 'icons/effects/effects.dmi' - button_icon_state = "greenglow" +/datum/species/slime/on_species_loss(mob/living/carbon/human/H) + ..() + if(grow) + grow.Remove(H) + if(recolor) + recolor.Remove(H) -/datum/action/innate/regrow/Activate() - var/mob/living/carbon/human/user = owner - user.regrow_limbs() - - -/datum/species/slime/handle_life(var/mob/living/carbon/human/H) -//This is allegedly for code "style". Like a plaid sweater? -#define SLIMEPERSON_COLOR_SHIFT_TRIGGER 0.1 -#define SLIMEPERSON_ICON_UPDATE_PERIOD 200 // 20 seconds -#define SLIMEPERSON_BLOOD_SCALING_FACTOR 5 // Used to adjust how much of an effect the blood has on the rate of color change. Higher is slower. +/datum/species/slime/handle_life(mob/living/carbon/human/H) // Slowly shifting to the color of the reagents if(reagent_skin_coloring && H.reagents.total_volume > SLIMEPERSON_COLOR_SHIFT_TRIGGER) var/blood_amount = H.blood_volume @@ -83,118 +82,99 @@ H.update_body() ..() -#undef SLIMEPERSON_COLOR_SHIFT_TRIGGER -#undef SLIMEPERSON_ICON_UPDATE_PERIOD -#undef SLIMEPERSON_BLOOD_SCALING_FACTOR +/datum/action/innate/slimecolor + name = "Toggle Recolor" + check_flags = AB_CHECK_CONSCIOUS + icon_icon = 'icons/effects/effects.dmi' + button_icon_state = "greenglow" -/mob/living/carbon/human/proc/toggle_recolor(silent = FALSE) - if(!isslimeperson(src)) - if(!silent) - to_chat(src, "You're not a slime person!") - return - - var/datum/species/slime/S = dna.species +/datum/action/innate/slimecolor/Activate() + var/mob/living/carbon/human/H = owner + var/datum/species/slime/S = H.dna.species if(S.reagent_skin_coloring) - S.reagent_skin_coloring = TRUE - if(!silent) - to_chat(src, "You adjust your internal chemistry to filter out pigments from things you consume.") + S.reagent_skin_coloring = FALSE + to_chat(H, "You adjust your internal chemistry to filter out pigments from things you consume.") else S.reagent_skin_coloring = TRUE - if(!silent) - to_chat(src, "You adjust your internal chemistry to permit pigments in chemicals you consume to tint you.") + to_chat(H, "You adjust your internal chemistry to permit pigments in chemicals you consume to tint you.") -/mob/living/carbon/human/verb/toggle_recolor_verb() - set category = "IC" - set name = "Toggle Reagent Recoloring" - set desc = "While active, you'll slowly adjust your body's color to that of the reagents inside of you, moderated by how much blood you have." +/datum/action/innate/regrow + name = "Regrow limbs" + check_flags = AB_CHECK_CONSCIOUS + icon_icon = 'icons/effects/effects.dmi' + button_icon_state = "greenglow" - toggle_recolor() - - -/mob/living/carbon/human/proc/regrow_limbs() - set category = "IC" - set name = "Regrow Limbs" - set desc = "Regrow one of your missing limbs at the cost of a large amount of hunger" - -#define SLIMEPERSON_HUNGERCOST 50 -#define SLIMEPERSON_MINHUNGER 250 -#define SLIMEPERSON_REGROWTHDELAY 450 // 45 seconds - - if(stat || paralysis || stunned) - to_chat(src, "You cannot regenerate missing limbs in your current state.") - return - - if(nutrition < SLIMEPERSON_MINHUNGER) - to_chat(src, "You're too hungry to regenerate a limb!") +/datum/action/innate/regrow/Activate() + var/mob/living/carbon/human/H = owner + if(H.nutrition < SLIMEPERSON_MINHUNGER) + to_chat(H, "You're too hungry to regenerate a limb!") return var/list/missing_limbs = list() - for(var/l in bodyparts_by_name) - var/obj/item/organ/external/E = bodyparts_by_name[l] + for(var/l in H.bodyparts_by_name) + var/obj/item/organ/external/E = H.bodyparts_by_name[l] if(!istype(E)) - var/list/limblist = dna.species.has_limbs[l] + var/list/limblist = H.dna.species.has_limbs[l] var/obj/item/organ/external/limb = limblist["path"] var/parent_organ = initial(limb.parent_organ) - var/obj/item/organ/external/parentLimb = bodyparts_by_name[parent_organ] + var/obj/item/organ/external/parentLimb = H.bodyparts_by_name[parent_organ] if(!istype(parentLimb)) continue missing_limbs[initial(limb.name)] = l if(!missing_limbs.len) - to_chat(src, "You're not missing any limbs!") + to_chat(H, "You're not missing any limbs!") return - var/limb_select = input(src, "Choose a limb to regrow", "Limb Regrowth") as null|anything in missing_limbs + var/limb_select = input(H, "Choose a limb to regrow", "Limb Regrowth") as null|anything in missing_limbs var/chosen_limb = missing_limbs[limb_select] - visible_message("[src] begins to hold still and concentrate on [p_their()] missing [limb_select]...", "You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)") - if(do_after(src, SLIMEPERSON_REGROWTHDELAY, needhand=0, target = src)) - if(stat || paralysis || stunned) - to_chat(src, "You cannot regenerate missing limbs in your current state.") + H.visible_message("[H] begins to hold still and concentrate on [H.p_their()] missing [limb_select]...", "You begin to focus on regrowing your missing [limb_select]... (This will take [round(SLIMEPERSON_REGROWTHDELAY/10)] seconds, and you must hold still.)") + if(do_after(H, SLIMEPERSON_REGROWTHDELAY, needhand = 0, target = H)) + if(H.incapacitated()) + to_chat(H, "You cannot regenerate missing limbs in your current state.") return - if(nutrition < SLIMEPERSON_MINHUNGER) - to_chat(src, "You're too hungry to regenerate a limb!") + if(H.nutrition < SLIMEPERSON_MINHUNGER) + to_chat(H, "You're too hungry to regenerate a limb!") return - var/obj/item/organ/external/O = bodyparts_by_name[chosen_limb] + var/obj/item/organ/external/O = H.bodyparts_by_name[chosen_limb] var/stored_brute = 0 var/stored_burn = 0 if(istype(O)) - to_chat(src, "You distribute the damaged tissue around your body, out of the way of your new pseudopod!") + to_chat(H, "You distribute the damaged tissue around your body, out of the way of your new pseudopod!") var/obj/item/organ/external/doomedStump = O stored_brute = doomedStump.brute_dam stored_burn = doomedStump.burn_dam qdel(O) - var/limb_list = dna.species.has_limbs[chosen_limb] + var/limb_list = H.dna.species.has_limbs[chosen_limb] var/obj/item/organ/external/limb_path = limb_list["path"] // Parent check - var/obj/item/organ/external/potential_parent = bodyparts_by_name[initial(limb_path.parent_organ)] + var/obj/item/organ/external/potential_parent = H.bodyparts_by_name[initial(limb_path.parent_organ)] if(!istype(potential_parent)) - to_chat(src, "You've lost the organ that you've been growing your new part on!") + to_chat(H, "You've lost the organ that you've been growing your new part on!") return // No rayman for you // Grah this line will leave a "not used" warning, in spite of the fact that the new() proc WILL do the thing. // Bothersome. - var/obj/item/organ/external/new_limb = new limb_path(src) + var/obj/item/organ/external/new_limb = new limb_path(H) new_limb.open = 0 // This is just so that the compiler won't think that new_limb is unused, because the compiler is horribly stupid. - adjustBruteLoss(stored_brute) - adjustFireLoss(stored_burn) - update_body() - updatehealth() - UpdateDamageIcon() - nutrition -= SLIMEPERSON_HUNGERCOST - visible_message("[src] finishes regrowing [p_their()] missing [new_limb]!", "You finish regrowing your [limb_select]") + H.adjustBruteLoss(stored_brute) + H.adjustFireLoss(stored_burn) + H.update_body() + H.updatehealth() + H.UpdateDamageIcon() + H.nutrition -= SLIMEPERSON_HUNGERCOST + H.visible_message("[H] finishes regrowing [H.p_their()] missing [new_limb]!", "You finish regrowing your [limb_select]") else - to_chat(src, "You need to hold still in order to regrow a limb!") - return + to_chat(H, "You need to hold still in order to regrow a limb!") + +#undef SLIMEPERSON_COLOR_SHIFT_TRIGGER +#undef SLIMEPERSON_ICON_UPDATE_PERIOD +#undef SLIMEPERSON_BLOOD_SCALING_FACTOR #undef SLIMEPERSON_HUNGERCOST #undef SLIMEPERSON_MINHUNGER -#undef SLIMEPERSON_REGROWTHDELAY - -/datum/species/slime/handle_pre_change(mob/living/carbon/human/H) - ..() - if(reagent_skin_coloring) - H.toggle_recolor(silent = 1) \ No newline at end of file +#undef SLIMEPERSON_REGROWTHDELAY \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/tajaran.dm b/code/modules/mob/living/carbon/human/species/tajaran.dm index 0eaede54dbf..d4cdaf95944 100644 --- a/code/modules/mob/living/carbon/human/species/tajaran.dm +++ b/code/modules/mob/living/carbon/human/species/tajaran.dm @@ -54,5 +54,5 @@ "is twisting their own neck!", "is holding their breath!") -/datum/species/tajaran/handle_death(var/mob/living/carbon/human/H) +/datum/species/tajaran/handle_death(mob/living/carbon/human/H) H.stop_tail_wagging(1) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/unathi.dm b/code/modules/mob/living/carbon/human/species/unathi.dm index 243baa0ebfd..5acf2341f9f 100644 --- a/code/modules/mob/living/carbon/human/species/unathi.dm +++ b/code/modules/mob/living/carbon/human/species/unathi.dm @@ -56,12 +56,18 @@ "is twisting their own neck!", "is holding their breath!") - var/datum/action/innate/tail_lash/lash = new() + var/datum/action/innate/tail_lash/lash -/datum/species/unathi/handle_post_spawn(var/mob/living/carbon/human/H) - lash.Grant(H) +/datum/species/unathi/on_species_gain(mob/living/carbon/human/H) ..() + lash = new + lash.Grant(H) + +/datum/species/unathi/on_species_loss(mob/living/carbon/human/H) + ..() + if(lash) + lash.Remove(H) /datum/action/innate/tail_lash name = "Tail lash" @@ -88,5 +94,5 @@ -/datum/species/unathi/handle_death(var/mob/living/carbon/human/H) +/datum/species/unathi/handle_death(mob/living/carbon/human/H) H.stop_tail_wagging(1) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index e86185a4d9b..799c71af735 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -77,7 +77,7 @@ "is holding their breath!", "is deeply inhaling oxygen!") -/datum/species/vox/handle_death(var/mob/living/carbon/human/H) +/datum/species/vox/handle_death(mob/living/carbon/human/H) H.stop_tail_wagging(1) /datum/species/vox/after_equip_job(datum/job/J, mob/living/carbon/human/H) @@ -95,13 +95,12 @@ H.internal = H.l_hand H.update_action_buttons_icon() -/datum/species/vox/handle_post_spawn(var/mob/living/carbon/human/H) +/datum/species/vox/on_species_gain(mob/living/carbon/human/H) + ..() updatespeciescolor(H) H.update_icons() - //H.verbs += /mob/living/carbon/human/proc/leap - ..() -/datum/species/vox/updatespeciescolor(var/mob/living/carbon/human/H, var/owner_sensitive = 1) //Handling species-specific skin-tones for the Vox race. +/datum/species/vox/updatespeciescolor(mob/living/carbon/human/H, owner_sensitive = 1) //Handling species-specific skin-tones for the Vox race. if(H.dna.species.bodyflags & HAS_ICON_SKIN_TONE) //Making sure we don't break Armalis. var/new_icobase = 'icons/mob/human_races/vox/r_vox.dmi' //Default Green Vox. var/new_deform = 'icons/mob/human_races/vox/r_def_vox.dmi' //Default Green Vox. @@ -132,19 +131,14 @@ H.change_icobase(new_icobase, new_deform, owner_sensitive) //Update the icobase/deform of all our organs, but make sure we don't mess with frankenstein limbs in doing so. H.update_dna() -/datum/species/vox/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R) +/datum/species/vox/handle_reagents(mob/living/carbon/human/H, datum/reagent/R) if(R.id == "oxygen") //Armalis are above such petty things. H.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER) //Same as plasma. H.reagents.remove_reagent(R.id, REAGENTS_METABOLISM) - return 0 //Handling reagent removal on our own. + return FALSE //Handling reagent removal on our own. return ..() -/datum/species/vox/armalis/handle_post_spawn(var/mob/living/carbon/human/H) - H.verbs += /mob/living/carbon/human/proc/leap - H.verbs += /mob/living/carbon/human/proc/gut - ..() - /datum/species/vox/armalis name = "Vox Armalis" name_plural = "Vox Armalis" @@ -198,4 +192,4 @@ "is huffing oxygen!") /datum/species/vox/armalis/handle_reagents() //Skip the Vox oxygen reagent toxicity. Armalis are above such things. - return 1 \ No newline at end of file + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/vulpkanin.dm b/code/modules/mob/living/carbon/human/species/vulpkanin.dm index 5746fe125c9..3e6ebc1d41d 100644 --- a/code/modules/mob/living/carbon/human/species/vulpkanin.dm +++ b/code/modules/mob/living/carbon/human/species/vulpkanin.dm @@ -48,5 +48,5 @@ "is twisting their own neck!", "is holding their breath!") -/datum/species/vulpkanin/handle_death(var/mob/living/carbon/human/H) +/datum/species/vulpkanin/handle_death(mob/living/carbon/human/H) H.stop_tail_wagging(1) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/wryn.dm b/code/modules/mob/living/carbon/human/species/wryn.dm index 5606cd81e9b..04060071ae8 100644 --- a/code/modules/mob/living/carbon/human/species/wryn.dm +++ b/code/modules/mob/living/carbon/human/species/wryn.dm @@ -7,7 +7,6 @@ tail = "wryntail" punchdamagelow = 0 punchdamagehigh = 1 - //primitive = /mob/living/carbon/monkey/wryn slowdown = 1 warning_low_pressure = -300 hazard_low_pressure = 1 @@ -49,11 +48,11 @@ default_hair = "Antennae" -/datum/species/wryn/handle_death(var/mob/living/carbon/human/H) +/datum/species/wryn/handle_death(mob/living/carbon/human/H) for(var/mob/living/carbon/C in living_mob_list) if(C.get_int_organ(/obj/item/organ/internal/wryn/hivenode)) to_chat(C, "Your antennae tingle as you are overcome with pain...") - to_chat(C, "It feels like part of you has died.") + to_chat(C, "It feels like part of you has died.") // This is bullshit /datum/species/wryn/harm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) if(target.handcuffed && target.get_int_organ(/obj/item/organ/internal/wryn/hivenode)) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 2d024ec786e..a5883fe93f2 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -56,11 +56,7 @@ if(abilities) client.verbs |= abilities - if(istype(src,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - if(H.dna.species && H.dna.species.abilities) - client.verbs |= H.dna.species.abilities - + if(ishuman(src)) client.screen += client.void //HUD updates (antag hud, etc) From 0317e3be9dae0de080e2adc5ba7781f946150f91 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Fri, 27 Jul 2018 18:47:47 -0400 Subject: [PATCH 04/43] not needed anymore --- code/__DEFINES/combat.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index c244dc0c7a7..686bc3e1759 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -32,11 +32,10 @@ #define CANWEAKEN 2 #define CANPARALYSE 4 #define CANPUSH 8 -#define LEAPING 16 -#define PASSEMOTES 32 //Mob has a cortical borer or holders inside of it that need to see emotes. -#define GOTTAGOFAST 64 -#define GOTTAGOREALLYFAST 128 -#define IGNORESLOWDOWN 256 +#define PASSEMOTES 16 //Mob has a cortical borer or holders inside of it that need to see emotes. +#define GOTTAGOFAST 32 +#define GOTTAGOREALLYFAST 64 +#define IGNORESLOWDOWN 128 #define GODMODE 4096 #define FAKEDEATH 8192 //Replaces stuff like changeling.changeling_fakedeath #define XENO_HOST 16384 //Tracks whether we're gonna be a baby alien's mummy. From 15beced777c1d0375d4ea8467c383f2b8713db97 Mon Sep 17 00:00:00 2001 From: Tails2091 <40816748+Tails2091@users.noreply.github.com> Date: Sat, 28 Jul 2018 17:28:58 -0400 Subject: [PATCH 05/43] Changes karma refund to use switches --- code/modules/karma/karma.dm | 60 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index e9265c15b4a..1f18edfae22 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -371,29 +371,30 @@ You've gained [totalkarma] total karma in your time here.
"} return /client/proc/karmarefund(var/type,var/name,var/cost) - if(name == "Tajaran Ambassador") - cost = 30 - else if(name == "Unathi Ambassador") - cost = 30 - else if(name == "Skrell Ambassador") - cost = 30 - else if(name == "Diona Ambassador") - cost = 30 - else if(name == "Kidan Ambassador") - cost = 30 - else if(name == "Slime People Ambassador") - cost = 30 - else if(name == "Grey Ambassador") - cost = 30 - else if(name == "Vox Ambassador") - cost = 30 - else if(name == "Customs Officer") - cost = 30 - else if(name == "Nanotrasen Recruiter") - cost = 10 - else - to_chat(usr, "That job is not refundable.") - return + switch(name) + if("Tajaran Ambassador") + cost = 30 + if("Unathi Ambassador") + cost = 30 + if("Skrell Ambassador") + cost = 30 + if("Diona Ambassador") + cost = 30 + if("Kidan Ambassador") + cost = 30 + if("Slime People Ambassador") + cost = 30 + if("Grey Ambassador") + cost = 30 + if("Vox Ambassador") + cost = 30 + if("Customs Officer") + cost = 30 + if("Nanotrasen Recruiter") + cost = 10 + else + to_chat(usr, "That job is not refundable.") + return var/DBQuery/query = dbcon.NewQuery("SELECT * FROM [format_table_name("whitelist")] WHERE ckey='[usr.ckey]'") query.Execute() @@ -408,12 +409,13 @@ You've gained [totalkarma] total karma in your time here.
"} if(dbckey) var/list/typelist = list() - if(type == "job") - typelist = splittext(dbjob,",") - else if(type == "species") - typelist = splittext(dbspecies,",") - else - to_chat(usr, "Type [type] is not a valid column.") + switch(type) + if("job") + typelist = splittext(dbjob,",") + if("species") + typelist = splittext(dbspecies,",") + else + to_chat(usr, "Type [type] is not a valid column.") if(name in typelist) typelist -= name From a81a3d0661977ee6cdb39e2506a7d13755a49318 Mon Sep 17 00:00:00 2001 From: Tails2091 <40816748+Tails2091@users.noreply.github.com> Date: Sat, 28 Jul 2018 17:30:52 -0400 Subject: [PATCH 06/43] Fixes Prize Ball dropping single tickets --- code/modules/arcade/arcade_prize.dm | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm index 6af1ca30f36..d9c08c580ea 100644 --- a/code/modules/arcade/arcade_prize.dm +++ b/code/modules/arcade/arcade_prize.dm @@ -2,7 +2,6 @@ * Prize balls * Prize tickets */ - /obj/item/toy/prizeball name = "prize ball" desc = "A toy is a toy, but a prize ball could be anything! It could even be a toy!" @@ -25,7 +24,7 @@ var/prize_inside = pick(possible_contents) spawn(10) user.unEquip(src) - if(istype(prize_inside, /obj/item/stack)) + if(prize_inside == /obj/item/stack/tickets) var/amount = pick(5, 10, 15, 25, 50) new prize_inside(user.loc, amount) else @@ -79,11 +78,12 @@ /obj/item/stack/tickets/update_icon() var/amount = get_amount() - if((amount >= 75)) - icon_state = "tickets_4" - else if(amount >=25) - icon_state = "tickets_3" - else if(amount >= 4) - icon_state = "tickets_2" - else - icon_state = "tickets_1" + switch(amount) + if(1 to 3) + icon_state = "tickets_1" // One ticket + if(4 to 24) + icon_state = "tickets_2" // Couple tickets + if(25 to 74) + icon_state = "tickets_3" // Buncha tickets + else + icon_state = "tickets_4" // Ticket snake \ No newline at end of file From b08653c35ae4861c495ddca257b46c9b699e6266 Mon Sep 17 00:00:00 2001 From: Tails2091 <40816748+Tails2091@users.noreply.github.com> Date: Sat, 28 Jul 2018 18:01:23 -0400 Subject: [PATCH 07/43] Changes while loop to for Why was this a while loop? --- code/game/objects/items/random_items.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 2625d2b865a..0e42aceaa74 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -130,8 +130,7 @@ /obj/item/storage/pill_bottle/random_meds/New() ..() - var/i = 1 - while(i < storage_slots) + for(var/i=1, i Date: Sun, 29 Jul 2018 13:16:36 +0100 Subject: [PATCH 08/43] Adds a min and max button to freezers and heaters --- code/game/machinery/Freezer.dm | 12 ++++++++++-- nano/templates/freezer.tmpl | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm index 4876c904de7..dc06a13e076 100644 --- a/code/game/machinery/Freezer.dm +++ b/code/game/machinery/Freezer.dm @@ -140,7 +140,11 @@ if(href_list["toggleStatus"]) src.on = !src.on update_icon() - if(href_list["temp"]) + else if(href_list["minimum"]) + current_temperature = min_temperature + else if(href_list["maximum"]) + current_temperature = T20C + else if(href_list["temp"]) var/amount = text2num(href_list["temp"]) if(amount > 0) src.current_temperature = min(T20C, src.current_temperature+amount) @@ -299,7 +303,11 @@ if(href_list["toggleStatus"]) src.on = !src.on update_icon() - if(href_list["temp"]) + else if(href_list["minimum"]) + current_temperature = T20C + else if(href_list["maximum"]) + current_temperature = max_temperature + T20C + else if(href_list["temp"]) var/amount = text2num(href_list["temp"]) if(amount > 0) src.current_temperature = min((T20C+max_temperature), src.current_temperature+amount) diff --git a/nano/templates/freezer.tmpl b/nano/templates/freezer.tmpl index d21d625f017..582598e05c5 100644 --- a/nano/templates/freezer.tmpl +++ b/nano/templates/freezer.tmpl @@ -36,6 +36,7 @@
{{:helper.displayBar(data.targetGasTemperature, data.minGasTemperature, data.maxGasTemperature)}}
+ {{:helper.link('Min', null, {'minimum' : 'yes'}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}} {{:helper.link('-', null, {'temp' : -100}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}} {{:helper.link('-', null, {'temp' : -10}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}} {{:helper.link('-', null, {'temp' : -1}, (data.targetGasTemperature > data.minGasTemperature) ? null : 'disabled')}} @@ -43,6 +44,7 @@ {{:helper.link('+', null, {'temp' : 1}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}} {{:helper.link('+', null, {'temp' : 10}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}} {{:helper.link('+', null, {'temp' : 100}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}} + {{:helper.link('Max', null, {'maximum' : 'yes'}, (data.targetGasTemperature < data.maxGasTemperature) ? null : 'disabled')}}
From 277500814081d9a78a8e85e1c266971740802d06 Mon Sep 17 00:00:00 2001 From: datlo Date: Sun, 29 Jul 2018 15:25:23 +0100 Subject: [PATCH 09/43] Updates syndi hardsuit description --- code/datums/uplink_item.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 50f24eac58f..952711f3063 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1029,9 +1029,8 @@ var/list/uplink_items = list() /datum/uplink_item/suits/hardsuit name = "Syndicate Hardsuit" - desc = "The feared suit of a syndicate nuclear agent. Features slightly better armoring and a built in jetpack \ - that runs off standard atmospheric tanks. When the built in helmet is deployed your identity will be \ - protected, even in death, as the suit cannot be removed by outside forces. Toggling the suit in and out of \ + desc = "The feared suit of a syndicate nuclear agent. Features armor and a combat mode \ + for faster movement on station. Toggling the suit in and out of \ combat mode will allow you all the mobility of a loose fitting uniform without sacrificing armoring. \ Additionally the suit is collapsible, making it small enough to fit within a backpack. \ Nanotrasen crew who spot these suits are known to panic." From f167c32424ba713b504b43f270178ba87a2a6979 Mon Sep 17 00:00:00 2001 From: datlo Date: Sun, 29 Jul 2018 18:42:30 +0100 Subject: [PATCH 10/43] Fixes pyrosium description --- code/modules/reagents/chemistry/reagents/pyrotechnic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm index b54444ee2d4..f2a5e8b9e24 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic.dm @@ -221,7 +221,7 @@ /datum/reagent/pyrosium name = "Pyrosium" id = "pyrosium" - description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly cools all other reagents in the mob down to 0K." + description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly heats all other reagents." color = "#B20000" // rgb: 139, 166, 233 process_flags = ORGANIC | SYNTHETIC From fef2b4c00202e8dad1649eb018006ddad46241e6 Mon Sep 17 00:00:00 2001 From: Tails2091 <40816748+Tails2091@users.noreply.github.com> Date: Sun, 29 Jul 2018 13:53:45 -0400 Subject: [PATCH 11/43] we the good format now --- code/game/objects/items/random_items.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 0e42aceaa74..ded05d6f795 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -130,7 +130,7 @@ /obj/item/storage/pill_bottle/random_meds/New() ..() - for(var/i=1, i Date: Sun, 29 Jul 2018 20:54:03 -0400 Subject: [PATCH 12/43] Automatic changelog generation for PR #9274 [ci skip] --- html/changelogs/AutoChangeLog-pr-9274.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9274.yml diff --git a/html/changelogs/AutoChangeLog-pr-9274.yml b/html/changelogs/AutoChangeLog-pr-9274.yml new file mode 100644 index 00000000000..e3bc07ad8ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9274.yml @@ -0,0 +1,4 @@ +author: "Tails2091" +delete-after: True +changes: + - bugfix: "Changed wannabe for loop to a real for loop." From 370a2cd61e2a205e362073873cc82fca1a3ee0d6 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 30 Jul 2018 01:30:47 +0000 Subject: [PATCH 13/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-9274.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9274.yml diff --git a/html/changelog.html b/html/changelog.html index cf1341a3dad..43b82bb7b82 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
+

30 July 2018

+

Tails2091 updated:

+
    +
  • Changed wannabe for loop to a real for loop.
  • +
+

28 July 2018

KasparoVy updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 6cdaaed7186..018eeee7a53 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6704,3 +6704,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. KasparoVy: - bugfix: You can now safely augment the heads of pointy-snooted Unathi, although your mileage may vary. +2018-07-30: + Tails2091: + - bugfix: Changed wannabe for loop to a real for loop. diff --git a/html/changelogs/AutoChangeLog-pr-9274.yml b/html/changelogs/AutoChangeLog-pr-9274.yml deleted file mode 100644 index e3bc07ad8ef..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9274.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tails2091" -delete-after: True -changes: - - bugfix: "Changed wannabe for loop to a real for loop." From 012b1dded085d43f1f16f3eb5b001fab431e1cd4 Mon Sep 17 00:00:00 2001 From: Tails2091 <40816748+Tails2091@users.noreply.github.com> Date: Sun, 29 Jul 2018 22:07:47 -0400 Subject: [PATCH 14/43] Changed to ispath and removed unecessary variable --- code/modules/arcade/arcade_prize.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm index d9c08c580ea..94c265848b7 100644 --- a/code/modules/arcade/arcade_prize.dm +++ b/code/modules/arcade/arcade_prize.dm @@ -24,7 +24,7 @@ var/prize_inside = pick(possible_contents) spawn(10) user.unEquip(src) - if(prize_inside == /obj/item/stack/tickets) + if(ispath(prize_inside,/obj/item/stack)) var/amount = pick(5, 10, 15, 25, 50) new prize_inside(user.loc, amount) else @@ -77,8 +77,7 @@ return /obj/item/stack/tickets/update_icon() - var/amount = get_amount() - switch(amount) + switch(get_amount()) if(1 to 3) icon_state = "tickets_1" // One ticket if(4 to 24) From b08ebd0cbe45e47b023d3ff7df5448642adb2431 Mon Sep 17 00:00:00 2001 From: CornMyCob Date: Mon, 30 Jul 2018 22:45:56 +0100 Subject: [PATCH 15/43] Small grammar fixes --- code/game/machinery/doors/airlock.dm | 4 ++-- code/modules/projectiles/guns/energy/nuclear.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 0d49cc1b0cd..4de934f1c96 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -796,7 +796,7 @@ About the new airlock wires panel: if(do_after(user, 20, 1, target = src)) if(!panel_open || !S.use(2)) return - user.visible_message("[user] reinforce \the [src] with metal.", + user.visible_message("[user] reinforces \the [src] with metal.", "You reinforce \the [src] with metal.") security_level = AIRLOCK_SECURITY_METAL update_icon() @@ -810,7 +810,7 @@ About the new airlock wires panel: if(do_after(user, 20, 1, target = src)) if(!panel_open || !S.use(2)) return - user.visible_message("[user] reinforce \the [src] with plasteel.", + user.visible_message("[user] reinforces \the [src] with plasteel.", "You reinforce \the [src] with plasteel.") security_level = AIRLOCK_SECURITY_PLASTEEL modify_max_integrity(normal_integrity * AIRLOCK_INTEGRITY_MULTIPLIER) diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index e2067467ddb..7169b3d1443 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -28,7 +28,7 @@ /obj/item/gun/energy/gun/mini name = "miniature energy gun" - desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: stun and kill." + desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: disable and kill." icon_state = "mini" w_class = WEIGHT_CLASS_SMALL ammo_x_offset = 2 From 7b4dd7eb19ae540cc96a4991061ae610eaa5c976 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Mon, 30 Jul 2018 23:24:35 -0700 Subject: [PATCH 16/43] Cleans out various macro redefinitions or useless use of syntax --- code/__HELPERS/text.dm | 9 ++++++--- code/_onclick/hud/fullscreen.dm | 10 ++-------- code/datums/components/_component.dm | 2 +- code/defines/procs/announce.dm | 4 ++-- code/game/machinery/computer/communications.dm | 6 +++--- code/modules/library/lib_items.dm | 2 +- .../file_system/programs/command/comms.dm | 6 +++--- code/modules/paperwork/paper.dm | 3 ++- code/modules/power/supermatter/supermatter.dm | 4 +--- code/modules/research/rdmachines.dm | 14 +++++++------- 10 files changed, 28 insertions(+), 32 deletions(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 5fb559651d5..8e9b5f93691 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -96,9 +96,12 @@ if(non_whitespace) return text //only accepts the text if it has some non-spaces // Used to get a sanitized input. -/proc/stripped_input(var/mob/user, var/message = "", var/title = "", var/default = "", var/max_length=MAX_MESSAGE_LEN) - var/name = input(user, message, title, default) - return strip_html_properly(name, max_length) +/proc/stripped_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE) + var/name = input(user, message, title, default) as text|null + if(no_trim) + return copytext(html_encode(name), 1, max_length) + else + return trim(html_encode(name), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <) //Filters out undesirable characters from names /proc/reject_bad_name(var/t_in, var/allow_numbers=0, var/max_length=MAX_NAME_LEN) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index fd0c91ded3a..a44f5d2e5a8 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -1,8 +1,3 @@ -#define FULLSCREEN_LAYER 18 -#define DAMAGE_LAYER FULLSCREEN_LAYER + 0.1 -#define BLIND_LAYER DAMAGE_LAYER + 0.1 -#define CRIT_LAYER BLIND_LAYER + 0.1 - /mob var/list/screens = list() @@ -68,11 +63,11 @@ /obj/screen/fullscreen/brute icon_state = "brutedamageoverlay" - layer = DAMAGE_LAYER + layer = UI_DAMAGE_LAYER /obj/screen/fullscreen/oxy icon_state = "oxydamageoverlay" - layer = DAMAGE_LAYER + layer = UI_DAMAGE_LAYER /obj/screen/fullscreen/crit icon_state = "passage" @@ -107,5 +102,4 @@ #undef FULLSCREEN_LAYER #undef BLIND_LAYER -#undef DAMAGE_LAYER #undef CRIT_LAYER diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 0da932d1575..775a8667b3f 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -106,7 +106,7 @@ /datum/component/proc/_GetInverseTypeList(our_type = type) #if DM_VERSION >= 513 - #warning 512 is definitely stable now, remove the old code + #warn 512 is definitely stable now, remove the old code #endif #if DM_VERSION < 512 diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index b6e3ecde8bd..1664a7051da 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -48,8 +48,8 @@ if(!message) return - var/tmp/message_title = new_title ? new_title : title - var/tmp/message_sound = new_sound ? sound(new_sound) : sound + var/message_title = new_title ? new_title : title + var/message_sound = new_sound ? sound(new_sound) : sound if(!msg_sanitized) message = trim_strip_html_properly(message, allow_lines = 1) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 054d4d441a3..865f683946e 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -231,7 +231,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") SSnanoui.update_uis(src) return - var/input = stripped_input(usr, "Please enter the reason for requesting the nuclear self-destruct codes. Misuse of the nuclear request system will not be tolerated under any circumstances. Transmission does not guarantee a response.", "Self Destruct Code Request.","") as text|null + var/input = stripped_input(usr, "Please enter the reason for requesting the nuclear self-destruct codes. Misuse of the nuclear request system will not be tolerated under any circumstances. Transmission does not guarantee a response.", "Self Destruct Code Request.","") if(!input || ..() || !(is_authenticated(usr) == COMM_AUTHENTICATION_MAX)) SSnanoui.update_uis(src) return @@ -250,7 +250,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") SSnanoui.update_uis(src) return - var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") as text|null + var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || ..() || !(is_authenticated(usr) == COMM_AUTHENTICATION_MAX)) SSnanoui.update_uis(src) return @@ -270,7 +270,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") SSnanoui.update_uis(src) return - var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") as text|null + var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || ..() || !(is_authenticated(usr) == COMM_AUTHENTICATION_MAX)) SSnanoui.update_uis(src) return diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 8df5d593b9b..a856e3f822f 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -228,7 +228,7 @@ src.name = newtitle src.title = newtitle if("Contents") - var/content = strip_html(input(usr, "Write your book's contents (HTML NOT allowed):"), MAX_BOOK_MESSAGE_LEN) as message|null + var/content = strip_html(input(usr, "Write your book's contents (HTML NOT allowed):") as message|null, MAX_BOOK_MESSAGE_LEN) if(!content) to_chat(usr, "The content is invalid.") return 1 diff --git a/code/modules/modular_computers/file_system/programs/command/comms.dm b/code/modules/modular_computers/file_system/programs/command/comms.dm index ef6cf016cd5..2ca6d9928a3 100644 --- a/code/modules/modular_computers/file_system/programs/command/comms.dm +++ b/code/modules/modular_computers/file_system/programs/command/comms.dm @@ -325,7 +325,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") SSnanoui.update_uis(src) return 1 - var/input = stripped_input(usr, "Please enter the reason for requesting the nuclear self-destruct codes. Misuse of the nuclear request system will not be tolerated under any circumstances. Transmission does not guarantee a response.", "Self Destruct Code Request.","") as text|null + var/input = stripped_input(usr, "Please enter the reason for requesting the nuclear self-destruct codes. Misuse of the nuclear request system will not be tolerated under any circumstances. Transmission does not guarantee a response.", "Self Destruct Code Request.","") if(!input || ..() || !(is_authenticated(usr) == COMM_AUTHENTICATION_MAX)) SSnanoui.update_uis(src) return 1 @@ -344,7 +344,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") SSnanoui.update_uis(src) return 1 - var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") as text|null + var/input = stripped_input(usr, "Please choose a message to transmit to Centcomm via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || ..() || !(is_authenticated(usr) == COMM_AUTHENTICATION_MAX)) SSnanoui.update_uis(src) return 1 @@ -363,7 +363,7 @@ to_chat(usr, "Arrays recycling. Please stand by.") SSnanoui.update_uis(src) return 1 - var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") as text|null + var/input = stripped_input(usr, "Please choose a message to transmit to \[ABNORMAL ROUTING CORDINATES\] via quantum entanglement. Please be aware that this process is very expensive, and abuse will lead to... termination. Transmission does not guarantee a response.", "To abort, send an empty message.", "") if(!input || ..() || !(is_authenticated(usr) == COMM_AUTHENTICATION_MAX)) SSnanoui.update_uis(src) return 1 diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index e8858a4dd31..2fe57c5698f 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -405,7 +405,8 @@ stamps += (!stamps || stamps == "" ? "
    " : "") + "" var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') - var/{x; y;} + var/x + var/y if(istype(S, /obj/item/stamp/captain) || istype(S, /obj/item/stamp/centcom)) x = rand(-2, 0) y = rand(-1, 2) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index fd031f987c6..125706bff28 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -15,7 +15,7 @@ //Controls how much power is produced by each collector in range - this is the main parameter for tweaking SM balance, as it basically controls how the power variable relates to the rest of the game. #define POWER_FACTOR 1.0 #define DECAY_FACTOR 700 //Affects how fast the supermatter power decays -#define CRITICAL_TEMPERATURE 5000 //K +#define CRITICAL_TEMPERATURE 10000 //K #define CHARGING_FACTOR 0.05 #define DAMAGE_RATE_LIMIT 4.5 //damage rate cap at power = 300, scales linearly with power @@ -425,8 +425,6 @@ else L.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2) -#define CRITICAL_TEMPERATURE 10000 - /obj/machinery/power/supermatter_shard/proc/get_status() var/turf/T = get_turf(src) if(!T) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 6fb2a891214..51b4f8512e1 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -43,15 +43,15 @@ if(shocked) shock(user,50) if(panel_open) - var/dat as text + var/list/dat = list() dat += "[src.name] Wires:
    " - for(var/wire in src.wires) - dat += text("[wire] Wire: [src.wires[wire] ? "Mend" : "Cut"] Pulse
    ") + for(var/wire in wires) + dat += "[wire] Wire: [src.wires[wire] ? "Mend" : "Cut"] Pulse
    " - dat += text("The red light is [src.disabled ? "off" : "on"].
    ") - dat += text("The green light is [src.shocked ? "off" : "on"].
    ") - dat += text("The blue light is [src.hacked ? "off" : "on"].
    ") - user << browse("[src.name] Hacking[dat]","window=hack_win") + dat += "The red light is [src.disabled ? "off" : "on"].
    " + dat += "The green light is [src.shocked ? "off" : "on"].
    " + dat += "The blue light is [src.hacked ? "off" : "on"].
    " + user << browse("[src.name] Hacking[dat.Join("")]","window=hack_win") return From f24371f1a1c380f1da53b7070d8706f3aac74ecd Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 02:28:08 -0400 Subject: [PATCH 17/43] Automatic changelog generation for PR #9273 [ci skip] --- html/changelogs/AutoChangeLog-pr-9273.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9273.yml diff --git a/html/changelogs/AutoChangeLog-pr-9273.yml b/html/changelogs/AutoChangeLog-pr-9273.yml new file mode 100644 index 00000000000..f1f6e8ad8c7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9273.yml @@ -0,0 +1,4 @@ +author: "Tails2091" +delete-after: True +changes: + - bugfix: "Claw Game Prize Ball now drops more than one ticket like it should." From 62ee9ddf22ea97ae418baa4e5f8e51c0a8a72884 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 08:26:24 +0000 Subject: [PATCH 18/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-9273.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9273.yml diff --git a/html/changelog.html b/html/changelog.html index 43b82bb7b82..f43692ee0fb 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
    +

    31 July 2018

    +

    Tails2091 updated:

    +
      +
    • Claw Game Prize Ball now drops more than one ticket like it should.
    • +
    +

    30 July 2018

    Tails2091 updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 018eeee7a53..09ddd5c389a 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6707,3 +6707,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2018-07-30: Tails2091: - bugfix: Changed wannabe for loop to a real for loop. +2018-07-31: + Tails2091: + - bugfix: Claw Game Prize Ball now drops more than one ticket like it should. diff --git a/html/changelogs/AutoChangeLog-pr-9273.yml b/html/changelogs/AutoChangeLog-pr-9273.yml deleted file mode 100644 index f1f6e8ad8c7..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9273.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tails2091" -delete-after: True -changes: - - bugfix: "Claw Game Prize Ball now drops more than one ticket like it should." From a0dacfb6be3d03428ce299bb72614a99e057e2f7 Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Tue, 31 Jul 2018 20:42:06 +0800 Subject: [PATCH 19/43] Fix runtime --- code/modules/projectiles/guns/energy/special.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 7559fc1a591..1f1a02a78e2 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -196,7 +196,7 @@ /obj/item/gun/energy/wormhole_projector/process_chamber() ..() - select_fire() + select_fire(usr) /obj/item/gun/energy/wormhole_projector/proc/portal_destroyed(obj/effect/portal/P) if(P.icon_state == "portal") From 2bdf16e3693964c9129219aea10f2d7c0f54a763 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 14:12:27 -0400 Subject: [PATCH 20/43] Automatic changelog generation for PR #9285 [ci skip] --- html/changelogs/AutoChangeLog-pr-9285.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9285.yml diff --git a/html/changelogs/AutoChangeLog-pr-9285.yml b/html/changelogs/AutoChangeLog-pr-9285.yml new file mode 100644 index 00000000000..70da562e4b4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9285.yml @@ -0,0 +1,4 @@ +author: "variableundefined" +delete-after: True +changes: + - bugfix: "fix a runtime error with bluespace projector" From 02df2b5ea7e391f74881acefcd5621c9fbe0a929 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 18:29:33 +0000 Subject: [PATCH 21/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-9285.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9285.yml diff --git a/html/changelog.html b/html/changelog.html index f43692ee0fb..a8f76858a9e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,10 @@
      • Claw Game Prize Ball now drops more than one ticket like it should.
      +

      variableundefined updated:

      +
        +
      • fix a runtime error with bluespace projector
      • +

      30 July 2018

      Tails2091 updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 09ddd5c389a..ce20e2ae37c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6710,3 +6710,5 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2018-07-31: Tails2091: - bugfix: Claw Game Prize Ball now drops more than one ticket like it should. + variableundefined: + - bugfix: fix a runtime error with bluespace projector diff --git a/html/changelogs/AutoChangeLog-pr-9285.yml b/html/changelogs/AutoChangeLog-pr-9285.yml deleted file mode 100644 index 70da562e4b4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9285.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "variableundefined" -delete-after: True -changes: - - bugfix: "fix a runtime error with bluespace projector" From 247c8055ee0bd1a54f8832e44563ca4fc439aadf Mon Sep 17 00:00:00 2001 From: shazbot194 Date: Tue, 31 Jul 2018 13:58:06 -0800 Subject: [PATCH 22/43] Update sprites --- icons/obj/guns/projectile.dmi | Bin 39197 -> 39013 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 906ffaac4cb0c02c0c23fa0be583a714c126543b..e86a39361dad6427fd9f0ecd9f9f875870742830 100644 GIT binary patch delta 37317 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%0D9_fi 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 Y|AI~Q26P4RfdBvi07*qoM6N<$f@%HLK>z>% literal 39197 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≤n|;@k@f^3hS%t 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 Date: Tue, 31 Jul 2018 20:01:01 -0400 Subject: [PATCH 23/43] Automatic changelog generation for PR #9277 [ci skip] --- html/changelogs/AutoChangeLog-pr-9277.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9277.yml diff --git a/html/changelogs/AutoChangeLog-pr-9277.yml b/html/changelogs/AutoChangeLog-pr-9277.yml new file mode 100644 index 00000000000..69ec422b521 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9277.yml @@ -0,0 +1,4 @@ +author: "datlo" +delete-after: True +changes: + - rscadd: "Updated syndicate hardsuit description." From b090fa7165e94f26f363e306ff260aa109c6d9c5 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 20:01:25 -0400 Subject: [PATCH 24/43] Automatic changelog generation for PR #9281 [ci skip] --- html/changelogs/AutoChangeLog-pr-9281.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9281.yml diff --git a/html/changelogs/AutoChangeLog-pr-9281.yml b/html/changelogs/AutoChangeLog-pr-9281.yml new file mode 100644 index 00000000000..f62cb6dc63f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9281.yml @@ -0,0 +1,5 @@ +author: "CornMyCob" +delete-after: True +changes: + - tweak: "The description for miniature energy guns is now accurate" + - tweak: "The third person text of someone reinforcing an airlock is now accurate" From 666d5223130fc9b53cec31121f15e7c9b67acde8 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 20:03:48 -0400 Subject: [PATCH 25/43] Automatic changelog generation for PR #9272 [ci skip] --- html/changelogs/AutoChangeLog-pr-9272.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9272.yml diff --git a/html/changelogs/AutoChangeLog-pr-9272.yml b/html/changelogs/AutoChangeLog-pr-9272.yml new file mode 100644 index 00000000000..c52ad11cc44 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9272.yml @@ -0,0 +1,4 @@ +author: "Tails2091" +delete-after: True +changes: + - bugfix: "Karma refund now uses switch statement." From 28af45647428d59e240a8cf79a2c45f3a36c57d5 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 31 Jul 2018 20:19:26 -0400 Subject: [PATCH 26/43] Automatic changelog generation for PR #9276 [ci skip] --- html/changelogs/AutoChangeLog-pr-9276.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9276.yml diff --git a/html/changelogs/AutoChangeLog-pr-9276.yml b/html/changelogs/AutoChangeLog-pr-9276.yml new file mode 100644 index 00000000000..c5b0e801108 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9276.yml @@ -0,0 +1,4 @@ +author: "Citinited" +delete-after: True +changes: + - tweak: "Heaters and freezers now have min and max buttons" From bb54a8ca4f1f8abbf543d48a07f7dc654ca8c0da Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Tue, 31 Jul 2018 21:21:39 -0400 Subject: [PATCH 27/43] fixes shadowlings --- code/game/gamemodes/shadowling/shadowling_abilities.dm | 2 +- code/game/gamemodes/shadowling/special_shadowling_abilities.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index f8f55f0e126..ea846e394a5 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -365,6 +365,7 @@ var/mob/living/carbon/human/H = target H.visible_message("[H]'s skin suddenly bubbles and shifts around [H.p_their()] body!", \ "You regenerate your protective armor and cleanse your form of defects.") + H.set_species(/datum/species/shadow/ling) H.adjustCloneLoss(-target.getCloneLoss()) H.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/shadowling(H), slot_shoes) @@ -373,7 +374,6 @@ H.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(H), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/shadowling(H), slot_glasses) - H.set_species(/datum/species/shadow/ling) /obj/effect/proc_holder/spell/targeted/collective_mind //Lets a shadowling bring together their thralls' strength, granting new abilities and a headcount name = "Collective Hivemind" diff --git a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm index 03780f7a47e..7aebaa0b044 100644 --- a/code/game/gamemodes/shadowling/special_shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/special_shadowling_abilities.dm @@ -84,6 +84,7 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N H.socks = "None" H.faction |= "faithless" + H.set_species(/datum/species/shadow/ling) //can't be a shadowling without being a shadowling H.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(user), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/shadowling(user), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/suit/space/shadowling(user), slot_wear_suit) @@ -91,7 +92,6 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N H.equip_to_slot_or_del(new /obj/item/clothing/gloves/shadowling(user), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/shadowling(user), slot_wear_mask) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/shadowling(user), slot_glasses) - H.set_species(/datum/species/shadow/ling) //can't be a shadowling without being a shadowling H.mind.RemoveSpell(src) From 082703e2ff662fd0cc934a85600ae39d9e5313bc Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Wed, 1 Aug 2018 13:05:34 +0800 Subject: [PATCH 28/43] Fix hood runtime --- code/modules/clothing/suits/hood.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/clothing/suits/hood.dm b/code/modules/clothing/suits/hood.dm index 7e2307c96b4..c784306cf66 100644 --- a/code/modules/clothing/suits/hood.dm +++ b/code/modules/clothing/suits/hood.dm @@ -31,6 +31,8 @@ ..() /obj/item/clothing/suit/hooded/proc/RemoveHood() + if(isnull(hood)) + return icon_state = "[initial(icon_state)]" suit_adjusted = 0 if(ishuman(hood.loc)) From 2f28bfbf3776c52a75a5023986188522b763379d Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Wed, 1 Aug 2018 05:34:47 +0000 Subject: [PATCH 29/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 19 +++++++++++++++++++ html/changelogs/.all_changelog.yml | 10 ++++++++++ html/changelogs/AutoChangeLog-pr-9272.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9276.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9277.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9281.yml | 5 ----- 6 files changed, 29 insertions(+), 17 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9272.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9276.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9277.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9281.yml diff --git a/html/changelog.html b/html/changelog.html index a8f76858a9e..07bebc5ed8e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,25 @@ -->
      +

      01 August 2018

      +

      Citinited updated:

      +
        +
      • Heaters and freezers now have min and max buttons
      • +
      +

      CornMyCob updated:

      +
        +
      • The description for miniature energy guns is now accurate
      • +
      • The third person text of someone reinforcing an airlock is now accurate
      • +
      +

      Tails2091 updated:

      +
        +
      • Karma refund now uses switch statement.
      • +
      +

      datlo updated:

      +
        +
      • Updated syndicate hardsuit description.
      • +
      +

      31 July 2018

      Tails2091 updated:

        diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index ce20e2ae37c..1ed8fd82a4e 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6712,3 +6712,13 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Claw Game Prize Ball now drops more than one ticket like it should. variableundefined: - bugfix: fix a runtime error with bluespace projector +2018-08-01: + Citinited: + - tweak: Heaters and freezers now have min and max buttons + CornMyCob: + - tweak: The description for miniature energy guns is now accurate + - tweak: The third person text of someone reinforcing an airlock is now accurate + Tails2091: + - bugfix: Karma refund now uses switch statement. + datlo: + - rscadd: Updated syndicate hardsuit description. diff --git a/html/changelogs/AutoChangeLog-pr-9272.yml b/html/changelogs/AutoChangeLog-pr-9272.yml deleted file mode 100644 index c52ad11cc44..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9272.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tails2091" -delete-after: True -changes: - - bugfix: "Karma refund now uses switch statement." diff --git a/html/changelogs/AutoChangeLog-pr-9276.yml b/html/changelogs/AutoChangeLog-pr-9276.yml deleted file mode 100644 index c5b0e801108..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9276.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Citinited" -delete-after: True -changes: - - tweak: "Heaters and freezers now have min and max buttons" diff --git a/html/changelogs/AutoChangeLog-pr-9277.yml b/html/changelogs/AutoChangeLog-pr-9277.yml deleted file mode 100644 index 69ec422b521..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9277.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "datlo" -delete-after: True -changes: - - rscadd: "Updated syndicate hardsuit description." diff --git a/html/changelogs/AutoChangeLog-pr-9281.yml b/html/changelogs/AutoChangeLog-pr-9281.yml deleted file mode 100644 index f62cb6dc63f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9281.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CornMyCob" -delete-after: True -changes: - - tweak: "The description for miniature energy guns is now accurate" - - tweak: "The third person text of someone reinforcing an airlock is now accurate" From 9c2e725e4b9c92bbc6fdf3eed9db2aa776b1868c Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Wed, 1 Aug 2018 17:44:09 +0800 Subject: [PATCH 30/43] Fixes some more runtime --- code/modules/admin/admin.dm | 4 ++-- code/modules/flufftext/Dreaming.dm | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 051f450179b..9a9a83f616b 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -878,10 +878,10 @@ var/global/nologevent = 0 to_chat(usr, "[P.pai_laws]") continue // Skip showing normal silicon laws for pAIs - they don't have any else - to_chat(usr, "SILICON [key_name(S, usr)]'s laws:") + to_chat(usr, "SILICON [key_name(S, TRUE)]'s laws:") if(S.laws == null) - to_chat(usr, "[key_name(S, usr)]'s laws are null. Contact a coder.") + to_chat(usr, "[key_name(S, TRUE)]'s laws are null. Contact a coder.") else S.laws.show_laws(usr) if(!ai_number) diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index b69ed4738b6..ea35118ab11 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -33,7 +33,7 @@ dream_images += pick_n_take(nightmares) nightmare++ for(var/i in 1 to dream_images.len) - addtimer(CALLBACK(src, .proc/experience_dream, nightmares[i], TRUE), ((i - 1) * rand(30,60))) + addtimer(CALLBACK(src, .proc/experience_dream, dream_images[i], TRUE), ((i - 1) * rand(30,60))) return TRUE /mob/living/carbon/proc/handle_dreams() @@ -54,4 +54,3 @@ if(isNightmare) dream_image = "[dream_image]" to_chat(src, "... [dream_image] ...") - From 272337f2c5e1cb0490b62ba8ed184646177834e3 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Wed, 1 Aug 2018 21:07:04 -0400 Subject: [PATCH 31/43] Automatic changelog generation for PR #9293 [ci skip] --- html/changelogs/AutoChangeLog-pr-9293.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9293.yml diff --git a/html/changelogs/AutoChangeLog-pr-9293.yml b/html/changelogs/AutoChangeLog-pr-9293.yml new file mode 100644 index 00000000000..0d5c3f2367d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9293.yml @@ -0,0 +1,4 @@ +author: "variableundefined" +delete-after: True +changes: + - bugfix: "Nightmares now works. Sleep well." From b0e62be32df2b716b427cf4110f26e88ab6b8cda Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Thu, 2 Aug 2018 01:24:56 +0000 Subject: [PATCH 32/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-9293.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9293.yml diff --git a/html/changelog.html b/html/changelog.html index 07bebc5ed8e..9aac7b570e9 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
        +

        02 August 2018

        +

        variableundefined updated:

        +
          +
        • Nightmares now works. Sleep well.
        • +
        +

        01 August 2018

        Citinited updated:

          diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 1ed8fd82a4e..9bdaa69c97e 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6722,3 +6722,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Karma refund now uses switch statement. datlo: - rscadd: Updated syndicate hardsuit description. +2018-08-02: + variableundefined: + - bugfix: Nightmares now works. Sleep well. diff --git a/html/changelogs/AutoChangeLog-pr-9293.yml b/html/changelogs/AutoChangeLog-pr-9293.yml deleted file mode 100644 index 0d5c3f2367d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9293.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "variableundefined" -delete-after: True -changes: - - bugfix: "Nightmares now works. Sleep well." From eaa697173e5f4cac2e64571083909a18457c273c Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Thu, 2 Aug 2018 14:35:37 +0800 Subject: [PATCH 33/43] Fixes customizable runtime --- code/modules/food_and_drinks/food/customizables.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 33987737fa2..70027028344 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -378,9 +378,9 @@ /obj/item/reagent_containers/food/snacks/customizable/examine(mob/user) ..(user) - var/whatsinside = pick(ingredients) - - to_chat(user, " You think you can see [whatsinside] in there.") + if(LAZYLEN(ingredients)) + var/whatsinside = pick(ingredients) + to_chat(user, " You think you can see [whatsinside] in there.") /obj/item/reagent_containers/food/snacks/customizable/proc/newname() @@ -470,4 +470,3 @@ if(unsorted[it] == i) sorted[it] = i return sorted - From 7e216d32bd848813b691dea9381ade21a6a6af4d Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Thu, 2 Aug 2018 14:59:32 +0800 Subject: [PATCH 34/43] Add say logging for megaphone --- code/game/objects/items/devices/megaphone.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 4fea8e93a39..5fa97f07d62 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -59,6 +59,7 @@ /obj/item/megaphone/proc/saymsg(mob/living/user as mob, message) audible_message("[user] broadcasts, \"[message]\"", hearing_distance = 14) + log_say(message, user) for(var/obj/O in oview(14, get_turf(src))) O.hear_talk(user, "[message]") From 0ecc59a99f1016cddd579bd75f944c2e4f9e72cb Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Thu, 2 Aug 2018 12:40:29 -0400 Subject: [PATCH 35/43] Automatic changelog generation for PR #9300 [ci skip] --- html/changelogs/AutoChangeLog-pr-9300.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9300.yml diff --git a/html/changelogs/AutoChangeLog-pr-9300.yml b/html/changelogs/AutoChangeLog-pr-9300.yml new file mode 100644 index 00000000000..2e0db41b433 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9300.yml @@ -0,0 +1,4 @@ +author: "variableundefined" +delete-after: True +changes: + - tweak: "Megaphone actually logs in say log now." From 0ceb26aa39c6e1bb390261bd40679544ca797ab8 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Thu, 2 Aug 2018 17:39:37 +0000 Subject: [PATCH 36/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 1 + html/changelogs/.all_changelog.yml | 1 + html/changelogs/AutoChangeLog-pr-9300.yml | 4 ---- 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9300.yml diff --git a/html/changelog.html b/html/changelog.html index 9aac7b570e9..77eece2d5a6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -60,6 +60,7 @@

          variableundefined updated:

          • Nightmares now works. Sleep well.
          • +
          • Megaphone actually logs in say log now.

          01 August 2018

          diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 9bdaa69c97e..bff88c4e19a 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6725,3 +6725,4 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2018-08-02: variableundefined: - bugfix: Nightmares now works. Sleep well. + - tweak: Megaphone actually logs in say log now. diff --git a/html/changelogs/AutoChangeLog-pr-9300.yml b/html/changelogs/AutoChangeLog-pr-9300.yml deleted file mode 100644 index 2e0db41b433..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9300.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "variableundefined" -delete-after: True -changes: - - tweak: "Megaphone actually logs in say log now." From 7f2030415f2aae5576cb0c755880ca9fa6b43951 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Thu, 2 Aug 2018 13:43:44 -0400 Subject: [PATCH 37/43] staff of change fix --- .../living/carbon/human/species/_species.dm | 15 +- .../living/carbon/human/species/nucleation.dm | 1 + .../living/carbon/human/species/plasmaman.dm | 1 + .../mob/living/carbon/human/species/shadow.dm | 1 + .../living/carbon/human/species/shadowling.dm | 3 +- .../mob/living/carbon/human/species/vox.dm | 2 + .../mob/living/carbon/human/species/wryn.dm | 1 + code/modules/projectiles/projectile/magic.dm | 208 +++++++++--------- 8 files changed, 129 insertions(+), 103 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index b20cdb3823f..c11d84451f9 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -93,6 +93,8 @@ var/show_ssd = 1 var/can_revive_by_healing // Determines whether or not this species can be revived by simply healing them var/has_gender = TRUE + var/blacklisted = FALSE + var/dangerous_existence = FALSE //Death vars. var/death_message = "seizes up and falls limp, their eyes dead and lifeless..." @@ -704,4 +706,15 @@ It'll return null if the organ doesn't correspond, so include null checks when u /datum/species/proc/water_act(mob/living/carbon/human/M, volume, temperature, source) if(abs(temperature - M.bodytemperature) > 10) //If our water and mob temperature varies by more than 10K, cool or/ heat them appropriately - M.bodytemperature = (temperature + M.bodytemperature) * 0.5 //Approximation for gradual heating or cooling \ No newline at end of file + M.bodytemperature = (temperature + M.bodytemperature) * 0.5 //Approximation for gradual heating or cooling + +/proc/get_random_species(species_name = FALSE) // Returns a random non black-listed or hazardous species, either as a string or datum + var/static/list/random_species = list() + if(!random_species.len) + for(var/thing in subtypesof(/datum/species)) + var/datum/species/S = thing + if(!initial(S.dangerous_existence) && !initial(S.blacklisted)) + random_species += initial(S.name) + var/picked_species = pick(random_species) + var/datum/species/selected_species = GLOB.all_species[picked_species] + return species_name ? picked_species : selected_species.type \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/nucleation.dm b/code/modules/mob/living/carbon/human/species/nucleation.dm index faf81ea875b..21d8a5c0012 100644 --- a/code/modules/mob/living/carbon/human/species/nucleation.dm +++ b/code/modules/mob/living/carbon/human/species/nucleation.dm @@ -2,6 +2,7 @@ name = "Nucleation" name_plural = "Nucleations" icobase = 'icons/mob/human_races/r_nucleation.dmi' + blacklisted = TRUE blurb = "A sub-race of unfortunates who have been exposed to too much supermatter radiation. As a result, \ supermatter crystal clusters have begun to grow across their bodies. Research to find a cure for this ailment \ has been slow, and so this is a common fate for veteran engineers. The supermatter crystals produce oxygen, \ diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index dcbdc7d17be..b49dd88d8e6 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -3,6 +3,7 @@ name_plural = "Plasmamen" icobase = 'icons/mob/human_races/r_plasmaman_sb.dmi' deform = 'icons/mob/human_races/r_plasmaman_pb.dmi' // TODO: Need deform. + dangerous_existence = TRUE //So so much //language = "Clatter" species_traits = list(IS_WHITELISTED, NO_BLOOD, NOTRANSSTING) diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index 03956f81cb0..df1ecd61484 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -4,6 +4,7 @@ icobase = 'icons/mob/human_races/r_shadow.dmi' deform = 'icons/mob/human_races/r_shadow.dmi' + dangerous_existence = TRUE unarmed_type = /datum/unarmed_attack/claws diff --git a/code/modules/mob/living/carbon/human/species/shadowling.dm b/code/modules/mob/living/carbon/human/species/shadowling.dm index b87d7565d23..1ce7b5cd0e0 100644 --- a/code/modules/mob/living/carbon/human/species/shadowling.dm +++ b/code/modules/mob/living/carbon/human/species/shadowling.dm @@ -4,6 +4,7 @@ icobase = 'icons/mob/human_races/r_shadowling.dmi' deform = 'icons/mob/human_races/r_shadowling.dmi' + blacklisted = TRUE blood_color = "#555555" flesh_color = "#222222" @@ -60,7 +61,7 @@ blood_color = "#CCCCCC" flesh_color = "#AAAAAA" - species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE) + species_traits = list(NO_BLOOD, NO_BREATHE, RADIMMUNE, NO_EXAMINE) burn_mod = 1.1 oxy_mod = 0 heatmod = 1.1 diff --git a/code/modules/mob/living/carbon/human/species/vox.dm b/code/modules/mob/living/carbon/human/species/vox.dm index 799c71af735..1bc0b8b3b9e 100644 --- a/code/modules/mob/living/carbon/human/species/vox.dm +++ b/code/modules/mob/living/carbon/human/species/vox.dm @@ -3,6 +3,7 @@ name_plural = "Vox" icobase = 'icons/mob/human_races/vox/r_vox.dmi' deform = 'icons/mob/human_races/vox/r_def_vox.dmi' + dangerous_existence = TRUE language = "Vox-pidgin" tail = "voxtail" speech_sounds = list('sound/voice/shriek1.ogg') @@ -145,6 +146,7 @@ icobase = 'icons/mob/human_races/r_armalis.dmi' deform = 'icons/mob/human_races/r_armalis.dmi' unarmed_type = /datum/unarmed_attack/claws/armalis + blacklisted = TRUE warning_low_pressure = 50 hazard_low_pressure = 0 diff --git a/code/modules/mob/living/carbon/human/species/wryn.dm b/code/modules/mob/living/carbon/human/species/wryn.dm index 04060071ae8..219be4111b3 100644 --- a/code/modules/mob/living/carbon/human/species/wryn.dm +++ b/code/modules/mob/living/carbon/human/species/wryn.dm @@ -3,6 +3,7 @@ name_plural = "Wryn" icobase = 'icons/mob/human_races/r_wryn.dmi' deform = 'icons/mob/human_races/r_wryn.dmi' + blacklisted = TRUE language = "Wryn Hivemind" tail = "wryntail" punchdamagelow = 0 diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 1df45dbe064..854fd1edbaf 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -146,114 +146,120 @@ . = ..() wabbajack(change) -proc/wabbajack(mob/living/M) - if(istype(M)) - if(istype(M, /mob/living) && M.stat != DEAD) - if(M.notransform) - return - M.notransform = 1 - M.canmove = 0 - M.icon = null - M.overlays.Cut() - M.invisibility = 101 +/proc/wabbajack(mob/living/M) + if(istype(M) && M.stat != DEAD && !M.notransform) + M.notransform = TRUE + M.canmove = FALSE + M.icon = null + M.overlays.Cut() + M.invisibility = 101 - if(istype(M, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/Robot = M - if(Robot.mmi) - qdel(Robot.mmi) - Robot.notify_ai(1) - else - if(ishuman(M)) - var/mob/living/carbon/human/H = M - // Make sure there are no organs or limbs to drop - for(var/t in H.bodyparts) - qdel(t) - for(var/i in H.internal_organs) - qdel(i) - for(var/obj/item/W in M) - M.unEquip(W, 1) - qdel(W) + if(isrobot(M)) + var/mob/living/silicon/robot/Robot = M + QDEL_NULL(Robot.mmi) + Robot.notify_ai(1) + else + if(ishuman(M)) + var/mob/living/carbon/human/H = M + // Make sure there are no organs or limbs to drop + for(var/t in H.bodyparts) + qdel(t) + for(var/i in H.internal_organs) + qdel(i) + for(var/obj/item/W in M) + M.unEquip(W, 1) + qdel(W) - var/mob/living/new_mob + var/mob/living/new_mob - var/randomize = pick("robot","slime","xeno","human","animal") - switch(randomize) - if("robot") - if(prob(30)) - new_mob = new /mob/living/silicon/robot/syndicate(M.loc) - else - new_mob = new /mob/living/silicon/robot(M.loc) - new_mob.gender = M.gender - new_mob.invisibility = 0 - new_mob.job = "Cyborg" - var/mob/living/silicon/robot/Robot = new_mob - Robot.mmi = new /obj/item/mmi(new_mob) - if(ishuman(M)) - Robot.mmi.transfer_identity(M) //Does not transfer key/client. - if("slime") - new_mob = new /mob/living/carbon/slime/random(M.loc) - new_mob.universal_speak = 1 - if("xeno") - if(prob(50)) - new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) - else - new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) - new_mob.universal_speak = 1 - if("animal") - if(prob(50)) - var/beast = pick("carp","bear","mushroom","statue", "bat", "goat", "tomato") - switch(beast) - if("carp") new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) - if("bear") new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) - if("mushroom") new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc) - if("statue") new_mob = new /mob/living/simple_animal/hostile/statue(M.loc) - if("bat") new_mob = new /mob/living/simple_animal/hostile/scarybat(M.loc) - if("goat") new_mob = new /mob/living/simple_animal/hostile/retaliate/goat(M.loc) - if("tomato") new_mob = new /mob/living/simple_animal/hostile/killertomato(M.loc) - else - var/animal = pick("parrot","corgi","crab","pug","cat","mouse","chicken","cow","lizard","chick","fox") - switch(animal) - if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc) - if("corgi") new_mob = new /mob/living/simple_animal/pet/corgi(M.loc) - if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc) - if("cat") new_mob = new /mob/living/simple_animal/pet/cat(M.loc) - if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc) - if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc) - if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc) - if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc) - if("fox") new_mob = new /mob/living/simple_animal/pet/fox(M.loc) - else new_mob = new /mob/living/simple_animal/chick(M.loc) - new_mob.universal_speak = 1 - if("human") - new_mob = new /mob/living/carbon/human(M.loc) - // Include standard, whitelisted, and monkey species... - var/list/new_species = list() - for(var/datum/species/S in subtypesof(/datum/species)) - if(istype(S, /datum/species/vox/armalis)) - continue - new_species.Add(S) - var/mob/living/carbon/human/H = new_mob - var/datum/species/S = pick(new_species) - H.set_species(S) - randomize = initial(S.name) - var/datum/preferences/A = new() //Randomize appearance for the human - A.copy_to(new_mob) + var/randomize = pick("robot", "slime", "xeno", "human", "animal") + switch(randomize) + if("robot") + if(prob(30)) + new_mob = new /mob/living/silicon/robot/syndicate(M.loc) else - return - - M.create_attack_log("[key_name(M)] became [new_mob.real_name].") - new_mob.attack_log = M.attack_log - - new_mob.a_intent = INTENT_HARM - if(M.mind) - M.mind.transfer_to(new_mob) + new_mob = new /mob/living/silicon/robot(M.loc) + new_mob.gender = M.gender + new_mob.invisibility = 0 + new_mob.job = "Cyborg" + var/mob/living/silicon/robot/Robot = new_mob + Robot.mmi = new /obj/item/mmi(new_mob) + if(ishuman(M)) + Robot.mmi.transfer_identity(M) //Does not transfer key/client. + if("slime") + new_mob = new /mob/living/carbon/slime/random(M.loc) + new_mob.universal_speak = TRUE + if("xeno") + if(prob(50)) + new_mob = new /mob/living/carbon/alien/humanoid/hunter(M.loc) + else + new_mob = new /mob/living/carbon/alien/humanoid/sentinel(M.loc) + new_mob.universal_speak = TRUE + if("animal") + if(prob(50)) + var/beast = pick("carp","bear","mushroom","statue", "bat", "goat", "tomato") + switch(beast) + if("carp") + new_mob = new /mob/living/simple_animal/hostile/carp(M.loc) + if("bear") + new_mob = new /mob/living/simple_animal/hostile/bear(M.loc) + if("mushroom") + new_mob = new /mob/living/simple_animal/hostile/mushroom(M.loc) + if("statue") + new_mob = new /mob/living/simple_animal/hostile/statue(M.loc) + if("bat") + new_mob = new /mob/living/simple_animal/hostile/scarybat(M.loc) + if("goat") + new_mob = new /mob/living/simple_animal/hostile/retaliate/goat(M.loc) + if("tomato") + new_mob = new /mob/living/simple_animal/hostile/killertomato(M.loc) + else + var/animal = pick("parrot", "corgi", "crab", "pug", "cat", "mouse", "chicken", "cow", "lizard", "chick", "fox") + switch(animal) + if("parrot") + new_mob = new /mob/living/simple_animal/parrot(M.loc) + if("corgi") + new_mob = new /mob/living/simple_animal/pet/corgi(M.loc) + if("crab") + new_mob = new /mob/living/simple_animal/crab(M.loc) + if("cat") + new_mob = new /mob/living/simple_animal/pet/cat(M.loc) + if("mouse") + new_mob = new /mob/living/simple_animal/mouse(M.loc) + if("chicken") + new_mob = new /mob/living/simple_animal/chicken(M.loc) + if("cow") + new_mob = new /mob/living/simple_animal/cow(M.loc) + if("lizard") + new_mob = new /mob/living/simple_animal/lizard(M.loc) + if("fox") + new_mob = new /mob/living/simple_animal/pet/fox(M.loc) + else + new_mob = new /mob/living/simple_animal/chick(M.loc) + new_mob.universal_speak = TRUE + if("human") + new_mob = new /mob/living/carbon/human(M.loc) + var/mob/living/carbon/human/H = new_mob + var/datum/preferences/A = new() //Randomize appearance for the human + A.species = get_random_species(TRUE) + A.copy_to(new_mob) + randomize = H.dna.species.name else - new_mob.key = M.key + return - to_chat(new_mob, "Your form morphs into that of a [randomize].") + M.create_attack_log("[key_name(M)] became [new_mob.real_name].") + new_mob.attack_log = M.attack_log - qdel(M) - return new_mob + new_mob.a_intent = INTENT_HARM + if(M.mind) + M.mind.transfer_to(new_mob) + else + new_mob.key = M.key + + to_chat(new_mob, "Your form morphs into that of a [randomize].") + + qdel(M) + return new_mob /obj/item/projectile/magic/animate name = "bolt of animation" From 9101fcd29d4977632401d4080ccc9194a343a9b7 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Thu, 2 Aug 2018 20:08:59 -0400 Subject: [PATCH 38/43] Automatic changelog generation for PR #9265 [ci skip] --- html/changelogs/AutoChangeLog-pr-9265.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9265.yml diff --git a/html/changelogs/AutoChangeLog-pr-9265.yml b/html/changelogs/AutoChangeLog-pr-9265.yml new file mode 100644 index 00000000000..a8af378bd8b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9265.yml @@ -0,0 +1,8 @@ +author: "Fox McCloud" +delete-after: True +changes: + - tweak: "IPC Change monitor is now an action button" + - tweak: "Slime Color change is now an action button" + - bugfix: "Fixes staff of change leaving behind unknowns" + - bugfix: "Fixes Shadowlings not having shock resistant and thermal vision" + - bugfix: "Fixes staff of change gibbing people" From 79a3b5fa092f2625d4cc1076a7e6dde541f7221a Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 3 Aug 2018 00:25:43 +0000 Subject: [PATCH 39/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 10 ++++++++++ html/changelogs/.all_changelog.yml | 7 +++++++ html/changelogs/AutoChangeLog-pr-9265.yml | 8 -------- 3 files changed, 17 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9265.yml diff --git a/html/changelog.html b/html/changelog.html index 77eece2d5a6..0f9c8720d99 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,16 @@ -->
          +

          03 August 2018

          +

          Fox McCloud updated:

          +
            +
          • IPC Change monitor is now an action button
          • +
          • Slime Color change is now an action button
          • +
          • Fixes staff of change leaving behind unknowns
          • +
          • Fixes Shadowlings not having shock resistant and thermal vision
          • +
          • Fixes staff of change gibbing people
          • +
          +

          02 August 2018

          variableundefined updated:

            diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index bff88c4e19a..1d245eb314c 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6726,3 +6726,10 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. variableundefined: - bugfix: Nightmares now works. Sleep well. - tweak: Megaphone actually logs in say log now. +2018-08-03: + Fox McCloud: + - tweak: IPC Change monitor is now an action button + - tweak: Slime Color change is now an action button + - bugfix: Fixes staff of change leaving behind unknowns + - bugfix: Fixes Shadowlings not having shock resistant and thermal vision + - bugfix: Fixes staff of change gibbing people diff --git a/html/changelogs/AutoChangeLog-pr-9265.yml b/html/changelogs/AutoChangeLog-pr-9265.yml deleted file mode 100644 index a8af378bd8b..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9265.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Fox McCloud" -delete-after: True -changes: - - tweak: "IPC Change monitor is now an action button" - - tweak: "Slime Color change is now an action button" - - bugfix: "Fixes staff of change leaving behind unknowns" - - bugfix: "Fixes Shadowlings not having shock resistant and thermal vision" - - bugfix: "Fixes staff of change gibbing people" From 5bd4a2c1255332106f05bd0d1e06d7f5ad73cff2 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 3 Aug 2018 19:56:19 +0100 Subject: [PATCH 40/43] fixes assigning virus name for Kingstons --- code/datums/diseases/kingstons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/kingstons.dm b/code/datums/diseases/kingstons.dm index 260f01e0301..e4cfc5f349e 100644 --- a/code/datums/diseases/kingstons.dm +++ b/code/datums/diseases/kingstons.dm @@ -66,7 +66,7 @@ chosentype = pick(virspecies) chosensuff = pick(virsuffix) - name = "[chosentype] [chosensuff]" + name = "[chosentype.name] [chosensuff]" /datum/disease/kingstons/advanced/stage_act() ..() From 62cad49207eac2d234a0d56b00833ca8a79455e5 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 3 Aug 2018 20:16:03 +0100 Subject: [PATCH 41/43] adds initial --- code/datums/diseases/kingstons.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/diseases/kingstons.dm b/code/datums/diseases/kingstons.dm index e4cfc5f349e..c7db27968ef 100644 --- a/code/datums/diseases/kingstons.dm +++ b/code/datums/diseases/kingstons.dm @@ -66,7 +66,7 @@ chosentype = pick(virspecies) chosensuff = pick(virsuffix) - name = "[chosentype.name] [chosensuff]" + name = "[initial(chosentype.name)] [chosensuff]" /datum/disease/kingstons/advanced/stage_act() ..() From 32ffcc29786645949f05d573325efa9fab1fc489 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 3 Aug 2018 16:43:25 -0400 Subject: [PATCH 42/43] Automatic changelog generation for PR #9113 [ci skip] --- html/changelogs/AutoChangeLog-pr-9113.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9113.yml diff --git a/html/changelogs/AutoChangeLog-pr-9113.yml b/html/changelogs/AutoChangeLog-pr-9113.yml new file mode 100644 index 00000000000..6b67566b2fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9113.yml @@ -0,0 +1,5 @@ +author: "Shazbot" +delete-after: True +changes: + - rscadd: "Adds in the ability to unsaw sawn off riot shotguns. +Change: Changes the riot shotgun icon." From 965c25bf04fff5f52a413c98ebb3b65fa6adc2c9 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 3 Aug 2018 21:54:10 +0000 Subject: [PATCH 43/43] Automatic changelog compile, [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-9113.yml | 5 ----- 3 files changed, 7 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9113.yml diff --git a/html/changelog.html b/html/changelog.html index 0f9c8720d99..d1ed6c081a8 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -65,6 +65,10 @@
          • Fixes Shadowlings not having shock resistant and thermal vision
          • Fixes staff of change gibbing people
          +

          Shazbot updated:

          +
            +
          • Adds in the ability to unsaw sawn off riot shotguns. Change: Changes the riot shotgun icon.
          • +

          02 August 2018

          variableundefined updated:

          diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 1d245eb314c..d991d7ee495 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -6733,3 +6733,6 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Fixes staff of change leaving behind unknowns - bugfix: Fixes Shadowlings not having shock resistant and thermal vision - bugfix: Fixes staff of change gibbing people + Shazbot: + - rscadd: 'Adds in the ability to unsaw sawn off riot shotguns. Change: Changes + the riot shotgun icon.' diff --git a/html/changelogs/AutoChangeLog-pr-9113.yml b/html/changelogs/AutoChangeLog-pr-9113.yml deleted file mode 100644 index 6b67566b2fe..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9113.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Shazbot" -delete-after: True -changes: - - rscadd: "Adds in the ability to unsaw sawn off riot shotguns. -Change: Changes the riot shotgun icon."