diff --git a/baystation12.dme b/baystation12.dme index a6af9b75351..afc009508f5 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -440,6 +440,7 @@ #include "code\game\objects\items\devices\flashlight.dm" #include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\modkit.dm" #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\paicard.dm" #include "code\game\objects\items\devices\pipe_painter.dm" @@ -741,10 +742,10 @@ #include "code\modules\customitems\item_defines.dm" #include "code\modules\customitems\item_spawning.dm" #include "code\modules\destilery\main.dm" -#include "code\modules\detectivework\detective_work.dm" -#include "code\modules\detectivework\evidence.dm" -#include "code\modules\detectivework\footprints_and_rag.dm" -#include "code\modules\detectivework\scanner.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" diff --git a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm index 779cddb9d39..464381ab688 100644 --- a/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm +++ b/code/WorkInProgress/Cael_Aislinn/Economy/Accounts.dm @@ -338,3 +338,6 @@ var/global/list/all_money_accounts = list() for(var/datum/money_account/D in all_money_accounts) if(D.account_number == account_number) return D + +/obj/machinery/account_database/process() + return 0 diff --git a/code/WorkInProgress/Cael_Aislinn/Economy/EFTPOS.dm b/code/WorkInProgress/Cael_Aislinn/Economy/EFTPOS.dm index 5237df97d93..af06c1dfd82 100644 --- a/code/WorkInProgress/Cael_Aislinn/Economy/EFTPOS.dm +++ b/code/WorkInProgress/Cael_Aislinn/Economy/EFTPOS.dm @@ -70,8 +70,12 @@ D.name = "small parcel - 'EFTPOS access code'" /obj/item/device/eftpos/proc/reconnect_database() - for(var/obj/machinery/account_database/DB in world) //Hotfix until someone finds out why it isn't in 'machines' - if(DB.z == src.z) + var/turf/location = get_turf(src) + if(!location) + return + + for(var/obj/machinery/account_database/DB in machines) //Hotfix until someone finds out why it isn't in 'machines' + if(DB.z == location.z) linked_db = DB break @@ -239,4 +243,4 @@ else ..() - //emag? \ No newline at end of file + //emag? diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 9bb2197e6e8..d03aa546f92 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -119,8 +119,8 @@ datum/controller/vote if(winners.len > 1) if(mode != "gamemode" || ticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes text = "Vote Tied Between:\n" - for(var/option in winners) - text += "\t[option]\n" + for(var/option in winners) + text += "\t[option]\n" . = pick(winners) for(var/key in current_votes) diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 7d93bdb3253..ec7028d99cf 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -35,6 +35,9 @@ L.imp_in = H L.implanted = 1 world << "[H.real_name] is the captain!" + var/datum/organ/external/affected = H.organs_by_name["head"] + affected.implants += L + L.part = affected return 1 get_access() diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index b1abb4a7fbc..7e3d8c215ab 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -359,6 +359,7 @@ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 - return 1 - - + var/datum/organ/external/affected = H.organs_by_name["head"] + affected.implants += L + L.part = affected + return 1 diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index b8f91554d47..4d0488f1229 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -42,6 +42,9 @@ var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 + var/datum/organ/external/affected = H.organs_by_name["head"] + affected.implants += L + L.part = affected return 1 @@ -162,4 +165,4 @@ else H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) - return 1 + return 1 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 424e94eee07..f4ea117c397 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1150,7 +1150,7 @@ About the new airlock wires panel: if(src.isElectrified()) if(src.shock(user, 75)) return - if(istype(C, /obj/item/device/detective_scanner)) + if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll)) return src.add_fingerprint(user) diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm new file mode 100644 index 00000000000..a7c221aa58f --- /dev/null +++ b/code/game/objects/items/devices/modkit.dm @@ -0,0 +1,47 @@ +#define MODKIT_HELMET 1 +#define MODKIT_SUIT 2 +#define MODKIT_FULL 3 + +/obj/item/device/modkit + name = "hardsuit modification kit" + desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user." + icon_state = "modkit" + var/parts = MODKIT_FULL + var/from_helmet = /obj/item/clothing/head/helmet/space/rig + var/from_suit = /obj/item/clothing/suit/space/rig + var/to_helmet = /obj/item/clothing/head/cardborg + var/to_suit = /obj/item/clothing/suit/cardborg + +/obj/item/device/modkit/afterattack(obj/O, mob/user as mob) + var/flag + var/to_type + if(istype(O,from_helmet)) + flag = MODKIT_HELMET + to_type = to_helmet + else if(istype(O,from_suit)) + flag = MODKIT_SUIT + to_type = to_suit + else + return + if(!(parts & flag)) + user << "This kit has no parts for this modification left." + return + if(istype(O,to_type)) + user << "[O] is already modified." + return + if(!isturf(O.loc)) + user << "[O] must be safely placed on the ground for modification." + return + playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1) + var/N = new to_type(O.loc) + user.visible_message("\red [user] opens \the [src] and modifies \the [O] into \the [N].","\red You open \the [src] and modify \the [O] into \the [N].") + del(O) + parts &= ~flag + if(!parts) + del(src) + +/obj/item/device/modkit/tajaran + name = "tajara hardsuit modification kit" + desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajara." + to_helmet = /obj/item/clothing/head/helmet/space/rig/tajara + to_suit = /obj/item/clothing/suit/space/rig/tajara \ No newline at end of file diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 6740fa109e5..068dece3bba 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -208,7 +208,7 @@ if(user.mind.special_role) usr << "\blue The card's microscanners activate as you pass it over the ID, copying its access." - +/obj/item/weapon/card/id/syndicate/var/mob/registered_user = null /obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob) if(!src.registered_name) //Stop giving the players unsanitized unputs! You are giving ways for players to intentionally crash clients! -Nodrak @@ -226,9 +226,32 @@ src.assignment = u src.name = "[src.registered_name]'s ID Card ([src.assignment])" user << "\blue You successfully forge the ID card." + registered_user = user + else if(registered_user == user) + switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) + if("Rename") + var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)),1,26) + if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm + alert("Invalid name.") + return + src.registered_name = t + + var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")),1,MAX_MESSAGE_LEN) + if(!u) + alert("Invalid assignment.") + src.registered_name = "" + return + src.assignment = u + src.name = "[src.registered_name]'s ID Card ([src.assignment])" + user << "\blue You successfully forge the ID card." + return + if("Show") + ..() else ..() + + /obj/item/weapon/card/id/syndicate_command name = "syndicate ID card" desc = "An ID straight from the Syndicate." diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 5d6bd479c47..5637f47f983 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -98,6 +98,7 @@ add_fingerprint(user) /obj/item/weapon/melee/baton/throw_impact(atom/hit_atom) + . = ..() if (prob(50)) if(istype(hit_atom, /mob/living)) var/mob/living/carbon/human/H = hit_atom @@ -116,9 +117,6 @@ H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" log_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])" ) - return - return ..() - /obj/item/weapon/melee/baton/emp_act(severity) switch(severity) if(1) diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm index ab7a55e1da8..a068af11938 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm @@ -37,7 +37,7 @@ /obj/structure/stool/MouseDrop(atom/over_object) if (istype(over_object, /mob/living/carbon/human)) var/mob/living/carbon/human/H = over_object - if (!H.restrained() && !H.stat && in_range(src, over_object)) + if (H==usr && !H.restrained() && !H.stat && in_range(src, over_object)) var/obj/item/weapon/stool/S = new/obj/item/weapon/stool() S.origin = src src.loc = S diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 92f18afcc17..e81e30db068 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -124,7 +124,7 @@ BLIND // can't see anything body_parts_covered = HANDS slot_flags = SLOT_GLOVES attack_verb = list("challenged") - species_restricted = list("exclude","Unathi","Tajara") + species_restricted = list("exclude","Unathi","Tajaran") /obj/item/clothing/gloves/examine() set src in usr @@ -169,7 +169,7 @@ BLIND // can't see anything permeability_coefficient = 0.50 slowdown = SHOES_SLOWDOWN - species_restricted = list("exclude","Unathi","Tajara") + species_restricted = list("exclude","Unathi","Tajaran") //Suit /obj/item/clothing/suit diff --git a/code/modules/clothing/gloves/stungloves.dm b/code/modules/clothing/gloves/stungloves.dm index dd531389681..ea3dd1dc3f4 100644 --- a/code/modules/clothing/gloves/stungloves.dm +++ b/code/modules/clothing/gloves/stungloves.dm @@ -4,18 +4,21 @@ ..() return if(istype(W, /obj/item/weapon/cable_coil)) - var/obj/item/weapon/cable_coil/C = W - if(!wired) - if(C.amount >= 2) - C.use(2) - wired = 1 - siemens_coefficient = 3.0 - user << "You wrap some wires around [src]." - update_icon() + if(!("stunglove" in species_restricted)) + var/obj/item/weapon/cable_coil/C = W + if(!wired) + if(C.amount >= 2) + C.use(2) + wired = 1 + siemens_coefficient = 3.0 + user << "You wrap some wires around [src]." + update_icon() + else + user << "There is not enough wire to cover [src]." else - user << "There is not enough wire to cover [src]." + user << "[src] are already wired." else - user << "[src] are already wired." + user << "" else if(istype(W, /obj/item/weapon/cell)) if(!wired) @@ -30,6 +33,26 @@ user << "[src] already have a cell." else if(istype(W, /obj/item/weapon/wirecutters)) + if("exclude" in species_restricted) + name = "mangled [name]" + species_restricted -= "Unathi" + species_restricted -= "Tajaran" + species_restricted += "stunglove" + + wired = null + + if(cell) + cell.updateicon() + cell.loc = get_turf(src.loc) + cell = null + + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + user.visible_message("\red [user] snips the fingertips off [src].","\red You snip the fingertips off [src].") + + update_icon() + + return + if(cell) cell.updateicon() cell.loc = get_turf(src.loc) diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 24b209f9a6f..b4e7318c138 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -12,7 +12,7 @@ icon_action_button = "action_hardhat" heat_protection = HEAD max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE - species_restricted = list("exclude","Unathi","Tajara","Skrell","Diona","Vox") + species_restricted = list("exclude","Unathi","Tajaran","Skrell","Diona","Vox") attack_self(mob/user) if(!isturf(user.loc)) @@ -47,7 +47,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE - species_restricted = list("exclude","Unathi","Tajara","Diona","Vox") + species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox") //Chief Engineer's rig /obj/item/clothing/head/helmet/space/rig/elite diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 71621e49e37..7297fee4ab1 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -202,7 +202,7 @@ if(getBrainLoss() >= 50) if(10 <= rn && rn <= 12) if(!lying) src << "\red Your legs won't respond properly, you fall down." - lying = 1 + resting = 1 proc/handle_stasis_bag() // Handle side effects from stasis bag diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 4dac67e8852..7c63628ced4 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -4,7 +4,7 @@ if (ending == "?") return "queries, \"[text]\""; else if (ending == "!") - return "declares, \"[copytext(text, 1, length(text))]\""; + return "declares, \"[text]\""; return "states, \"[text]\""; diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 48a1fd00b31..72a4a2adf7b 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -42,7 +42,7 @@ /obj/item/weapon/stamp/cmo name = "chief medical officer's rubber stamp" icon_state = "stamp-cmo" - color = "medical" + color = "cmo" /obj/item/weapon/stamp/denied name = "\improper DENIED rubber stamp" diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 3efe6ee88b4..ffa49d8122d 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -33,14 +33,16 @@ charge_tick++ if(charge_tick < recharge_time) return 0 charge_tick = 0 - + if(!power_supply) return 0 //sanity + if(power_supply.charge >= power_supply.maxcharge) return 0 // check if we actually need to recharge + if(isrobot(src.loc)) var/mob/living/silicon/robot/R = src.loc if(R && R.cell) R.cell.use(charge_cost) //Take power from the borg... power_supply.give(charge_cost) //... to recharge the shot - + update_icon() return 1 diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 7f3dea0f7a4..9c7bc060297 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -157,7 +157,7 @@ /obj/item/device/destTagger name = "destination tagger" desc = "Used to set the destination of properly wrapped packages." - icon_state = "forensic0" + icon_state = "forensic0-old" var/currTag = 0 //The whole system for the sorttype var is determined based on the order of this list, //disposals must always be 1, since anything that's untagged will automatically go to disposals, or sorttype = 1 --Superxpdude diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 0152c2cd2b7..a602912b1d2 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ