diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 527ea37bb14..4c63722a2ff 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -580,10 +580,22 @@ datum/mind new_objective.target_amount = target_number if("identity theft") + var/list/possible_targets = list("Free objective") + for(var/datum/mind/possible_target in ticker.minds) + if ((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human)) + possible_targets += possible_target.current + + var/new_target = input("Select target:", "Objective target") as null|anything in possible_targets + if (!new_target) + return + var/datum/mind/targ = new_target + if(!istype(targ)) + log_debug("Invalid target for identity theft objective, cancelling") + return new_objective = new /datum/objective/escape/escape_with_identity new_objective.owner = src - new_objective.find_target() - + new_objective.target = new_target + new_objective.explanation_text = "Escape on the shuttle or an escape pod with the identity of [targ.current.real_name], the [targ.assigned_role] while wearing their identification card." if ("custom") var/expl = sanitize(copytext(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null,1,MAX_MESSAGE_LEN)) if (!expl) return diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 0795d4dca7e..e8dd34ff897 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -146,7 +146,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/grenade/smokebomb, /obj/item/weapon/grenade/smokebomb, - /obj/item/weapon/pen/paralysis, + /obj/item/weapon/pen/sleepy, /obj/item/weapon/grenade/chem_grenade/incendiary) cost = 20 containertype = /obj/structure/closet/crate diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 832749d6bcc..d0f18a140ca 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -323,18 +323,18 @@ var/list/uplink_items = list() cost = 18 gamemodes = list("nuclear emergency") -/datum/uplink_item/ammo/bullstun - name = "Drum Magazine - 12g Stun Slug" - desc = "An additional 8-round stun slug magazine for use in the Bulldog shotgun. Saying that they're non-lethal would be lying." +/datum/uplink_item/ammo/bullbuck + name = "Drum Magazine - 12g buckshot" + desc = "An additional 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy." item = /obj/item/ammo_box/magazine/m12g cost = 2 gamemodes = list("nuclear emergency") -/datum/uplink_item/ammo/bullbuck - name = "Drum Magazine - 12g Buckshot" - desc = "An alternative 8-round buckshot magazine for use in the Bulldog shotgun. Front towards enemy." - item = /obj/item/ammo_box/magazine/m12g/buckshot - cost = 2 +/datum/uplink_item/ammo/bullstun + name = "Drum Magazine - 12g Stun Slug" + desc = "An alternative 8-round stun slug magazine for use in the Bulldog shotgun. Saying that they're completely non-lethal would be lying." + item = /obj/item/ammo_box/magazine/m12g/stun + cost = 3 gamemodes = list("nuclear emergency") /datum/uplink_item/ammo/bulldragon @@ -371,10 +371,11 @@ var/list/uplink_items = list() /datum/uplink_item/stealthy_weapons category = "Stealthy and Inconspicuous Weapons" -/datum/uplink_item/stealthy_weapons/para_pen - name = "Paralysis Pen" - desc = "A syringe disguised as a functional pen, filled with a neuromuscular-blocking drug that renders a target mute on injection that will eventually cause them to pass out. The pen holds one dose of paralyzing agent,though it can be refilled." - item = /obj/item/weapon/pen/paralysis +/datum/uplink_item/stealthy_weapons/sleepy_pen + name = "Sleepy Pen" + desc = "A syringe disguised as a functional pen, filled with a potent mix of drugs, including a strong anaesthetic and a chemical that is capable of blocking the movement of the vocal chords. \ + The pen holds one dose of the mixture. The pen can be refilled." + item = /obj/item/weapon/pen/sleepy cost = 8 excludefrom = list("nuclear emergency") diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm index cc443ade3f0..0431d666c53 100644 --- a/code/game/dna/genes/disabilities.dm +++ b/code/game/dna/genes/disabilities.dm @@ -148,4 +148,14 @@ block=LISPBLOCK OnSay(var/mob/M, var/message) - return replacetext(message,"s","th") \ No newline at end of file + return replacetext(message,"s","th") + +/datum/dna/gene/disability/comic + name = "Comic" + desc = "This will only bring death and destruction." + activation_message = "Uh oh!" + deactivation_message = "Well thank god that's over with." + mutation=COMIC + + New() + block = COMICBLOCK diff --git a/code/game/dna/genes/vg_disabilities.dm b/code/game/dna/genes/vg_disabilities.dm index 7cccad7d6ee..6cb2c6f6ce8 100644 --- a/code/game/dna/genes/vg_disabilities.dm +++ b/code/game/dna/genes/vg_disabilities.dm @@ -17,7 +17,7 @@ message = replacetext(message,"!","!!") return uppertext(message) - +/* BROKEN WITH NEW SAYCODE /datum/dna/gene/disability/speech/whisper name = "Quiet" desc = "Damages the subjects vocal cords" @@ -36,7 +36,7 @@ OnSay(var/mob/M, var/message) M.whisper(message) - +*/ /datum/dna/gene/disability/dizzy name = "Dizzy" diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 5108beb041b..9b3bf73845c 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -120,9 +120,9 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/datum/objective/escape/escape_with_identity/identity_theft = new identity_theft.owner = changeling identity_theft.target = kill_objective.target + identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this. if(identity_theft.target && identity_theft.target.current) - var/target_real_name = identity_theft.target.current.real_name - identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [target_real_name], the [identity_theft.target.assigned_role] while wearing their identification card." + identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [identity_theft.target_real_name], the [identity_theft.target.assigned_role] while wearing their identification card." else identity_theft.explanation_text = "Free objective" changeling.objectives += identity_theft @@ -310,4 +310,4 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" user << "We already have this DNA in storage!" return 1 - \ No newline at end of file + diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index a54d336c5dd..09453727f4b 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -42,7 +42,7 @@ /obj/item/weapon/storage/box/emps:3:5 EMP Grenades; Whitespace:Seperator; Stealthy and Inconspicuous Weapons; -/obj/item/weapon/pen/paralysis:3:Paralysis Pen; +/obj/item/weapon/pen/sleepy:3:Sleepy Pen; /obj/item/weapon/soap/syndie:1:Syndicate Soap; /obj/item/weapon/cartridge/syndicate:3:Detomatix PDA Cartridge; Whitespace:Seperator; diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 8c8974dcc02..47493adab52 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -278,9 +278,6 @@ proc/issyndicate(mob/living/M as mob) U.hidden_uplink.uses = 20 synd_mob.equip_to_slot_or_del(U, slot_in_backpack) - var/obj/item/clothing/suit/space/rig/syndi/new_suit = new(synd_mob) - var/obj/item/clothing/head/helmet/space/rig/syndi/new_helmet = new(synd_mob) - if(synd_mob.species) /* @@ -293,28 +290,12 @@ proc/issyndicate(mob/living/M as mob) var/race = synd_mob.species.name switch(race) - if("Unathi") - new_suit.species_restricted = list("Unathi") - new_helmet.species_restricted = list("Unathi") - if("Tajaran") - new_suit.species_restricted = list("Tajaran") - new_helmet.species_restricted = list("Tajaran") - if("Skrell") - new_suit.species_restricted = list("Skrell") - new_helmet.species_restricted = list("Skrell") if("Vox" || "Vox Armalis") - synd_mob.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(synd_mob), slot_wear_mask) + synd_mob.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(synd_mob), slot_wear_mask) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/tank/nitrogen(synd_mob), slot_l_hand) synd_mob.internal = synd_mob.l_hand if (synd_mob.internals) synd_mob.internals.icon_state = "internal1" - new_suit.species_restricted = list ("Vox", "Vox Armalis") - new_helmet.species_restricted = list ("Vox", "Vox Armalis") - - - synd_mob.equip_to_slot_or_del(new_suit, slot_wear_suit) - synd_mob.equip_to_slot_or_del(new_helmet, slot_head) - var/obj/item/weapon/implant/dexplosive/E = new/obj/item/weapon/implant/dexplosive(synd_mob) E.imp_in = synd_mob diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 2a7d8b14368..d79a7f8b6ae 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -749,12 +749,14 @@ datum/objective/absorb return 0 datum/objective/destroy + var/target_real_name find_target() var/list/possible_targets = active_ais(1) var/mob/living/silicon/ai/target_ai = pick(possible_targets) target = target_ai.mind if(target && target.current) - explanation_text = "Destroy [target.current.real_name], the experimental AI." + target_real_name = target.current.real_name + explanation_text = "Destroy [target_real_name], the AI." else explanation_text = "Free Objective" return target diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index f32258c13db..9936afa1d9a 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -76,6 +76,7 @@ TOXICFARTBLOCK = getAssignedBlock("TOXICFART", numsToAssign, good=1) STRONGBLOCK = getAssignedBlock("STRONG", numsToAssign, good=1) HORNSBLOCK = getAssignedBlock("HORNS", numsToAssign) + COMICBLOCK = getAssignedBlock("COMIC", numsToAssign) // Powers SOBERBLOCK = getAssignedBlock("SOBER", numsToAssign, good=1) @@ -97,7 +98,7 @@ // Disabilities LOUDBLOCK = getAssignedBlock("LOUD", numsToAssign) - WHISPERBLOCK = getAssignedBlock("WHISPER", numsToAssign) + //WHISPERBLOCK = getAssignedBlock("WHISPER", numsToAssign) BROKEN WITH NEW SAYCODE DIZZYBLOCK = getAssignedBlock("DIZZY", numsToAssign) diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 00d74b109e9..6ec4396464c 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -227,6 +227,8 @@ H.equip_or_collect(new /obj/item/weapon/storage/fancy/crayons(H), slot_in_backpack) H.equip_or_collect(new /obj/item/weapon/reagent_containers/spray/waterflower(H), slot_in_backpack) H.mutations.Add(CLUMSY) + H.dna.SetSEState(COMICBLOCK,1,1) + genemutcheck(H,COMICBLOCK,null,MUTCHK_FORCED) return 1 diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1774a349e63..7eb1b51da9e 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -179,75 +179,6 @@ /obj/machinery/autolathe/Topic(href, href_list) if(..()) return 1 - if (!busy) - if(href_list["menu"]) - screen = text2num(href_list["menu"]) - - if(href_list["category"]) - selected_category = href_list["category"] - - if(href_list["make"]) - - var/turf/T = get_step(src.loc, get_dir(src,usr)) - - ///////////////// - //href protection - being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design - if(!being_built) - return - - //multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier - var/multiplier = text2num(href_list["multiplier"]) - var/max_multiplier = min(50, being_built.materials["$metal"] ?round(m_amount/being_built.materials["$metal"]):INFINITY,being_built.materials["$glass"]?round(g_amount/being_built.materials["$glass"]):INFINITY) - var/is_stack = ispath(being_built.build_path, /obj/item/stack) - - if(!is_stack && (multiplier > 1)) - return - if (!(multiplier in list(1,10,25,max_multiplier))) //"enough materials ?" is checked further down - return - ///////////////// - - var/coeff = (is_stack ? 1 : 2 ** prod_coeff) //stacks are unaffected by production coefficient - var/metal_cost = being_built.materials["$metal"] - var/glass_cost = being_built.materials["$glass"] - - var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) - - if((m_amount >= metal_cost*multiplier/coeff) && (g_amount >= glass_cost*multiplier/coeff)) - busy = 1 - use_power(power) - icon_state = "autolathe" - flick("autolathe_n",src) - spawn(32/coeff) - use_power(power) - if(is_stack) - m_amount -= metal_cost*multiplier - g_amount -= glass_cost*multiplier - var/obj/item/stack/S = new being_built.build_path(T) - S.amount = multiplier - else - m_amount -= metal_cost/coeff - g_amount -= glass_cost/coeff - var/obj/item/new_item = new being_built.build_path(T) - new_item.m_amt /= coeff - new_item.g_amt /= coeff - if(m_amount < 0) - m_amount = 0 - if(g_amount < 0) - g_amount = 0 - busy = 0 - src.updateUsrDialog() - - if(href_list["search"]) - matching_designs.Cut() - - for(var/datum/design/D in files.known_designs) - if(findtext(D.name,href_list["to_search"])) - matching_designs.Add(D) - - else - usr << "The autolathe is busy. Please wait for completion of previous operation." - if(href_list["menu"]) screen = text2num(href_list["menu"]) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index f201cb9e772..13275b5f3c1 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -19,17 +19,13 @@ user << "You don't have the dexterity to do this!" return 1 + if (istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M var/datum/organ/external/affecting = H.get_organ(user.zone_sel.selecting) - if(affecting.display_name == "head") - if(H.head && istype(H.head,/obj/item/clothing/head/helmet/space)) - user << "You can't apply [src] through [H.head]!" - return 1 - else - if(H.wear_suit && istype(H.wear_suit,/obj/item/clothing/suit/space)) - user << "You can't apply [src] through [H.wear_suit]!" + if(isliving(M)) + if(!M.can_inject(user, 1)) return 1 if(affecting.status & ORGAN_ROBOT) @@ -48,7 +44,7 @@ use(1) M.updatehealth() - + /obj/item/stack/medical/bruise_pack name = "roll of gauze" singular_name = "gauze length" @@ -82,12 +78,12 @@ user.visible_message( "\blue [user] places a bandaid over \the [W.desc] on [M]'s [affecting.display_name].", \ "\blue You place a bandaid over \the [W.desc] on [M]'s [affecting.display_name]." ) - affecting.heal_damage(src.heal_brute, src.heal_burn, 0) + affecting.heal_damage(src.heal_brute, src.heal_burn, 0) use(1) else M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2)) use(1) - + /obj/item/stack/medical/ointment name = "ointment" desc = "Used to treat those nasty burns." @@ -112,7 +108,7 @@ else user.visible_message( "\blue [user] salves the wounds on [M]'s [affecting.display_name].", \ "\blue You salve the wounds on [M]'s [affecting.display_name]." ) - affecting.heal_damage(src.heal_brute, src.heal_burn, 0) + affecting.heal_damage(src.heal_brute, src.heal_burn, 0) use(1) else if (can_operate(H)) //Checks if mob is lying down on table for surgery diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 699cada546e..3e3b67fe6af 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -673,7 +673,7 @@
- +