diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index a5f4a566878..b25c4d69b44 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -162,6 +162,10 @@ The box in your backpack has an oxygen tank and gas mask in it." name = "Too Cold" desc = "You're freezing cold! Get somewhere warmer and take off any insulating clothing like a space suit." icon_state = "cold" + +/obj/screen/alert/cold/drask + name = "Cold" + desc = "You're breathing supercooled gas! It's stimulating your metabolism to regenerate damaged tissue." /obj/screen/alert/cold/robot desc = "The air around you is too cold for a humanoid. Be careful to avoid exposing them to this enviroment." @@ -397,4 +401,4 @@ so as to remain in compliance with the most up-to-date laws." severity = 0 master = null screen_loc = "" - return QDEL_HINT_QUEUE \ No newline at end of file + return QDEL_HINT_QUEUE diff --git a/code/game/gamemodes/mutiny/mutiny_admin.dm b/code/game/gamemodes/mutiny/mutiny_admin.dm index 2ba08def2d9..e4b2cca1c63 100644 --- a/code/game/gamemodes/mutiny/mutiny_admin.dm +++ b/code/game/gamemodes/mutiny/mutiny_admin.dm @@ -1,4 +1,4 @@ -/datum/game_mode/mutiny/proc/check_antagonists_ui(admins) +/datum/game_mode/mutiny/proc/check_antagonists_ui(datum/admins/admins) var/turf/captains_key_loc = captains_key ? captains_key.get_loc_turf() : "Lost or Destroyed" var/turf/secondary_key_loc = secondary_key ? secondary_key.get_loc_turf() : "Lost or Destroyed" var/remaining_objectives = current_directive.get_remaining_orders() @@ -29,22 +29,22 @@ txt += "Reassign Head Loyalist
" if(head_loyalist) - txt += check_role_table("Head Loyalist", list(head_loyalist), admins, 0) + txt += admins.check_role_table("Head Loyalist", list(head_loyalist), 0) var/list/loyal_crew = loyalists - head_loyalist if(loyal_crew.len) - txt += check_role_table("Loyalists", loyal_crew, admins, 0) + txt += admins.check_role_table("Loyalists", loyal_crew, 0) txt += "Reassign Head Mutineer
" if(head_mutineer) - txt += check_role_table("Head Mutineer", list(head_mutineer), admins, 0) + txt += admins.check_role_table("Head Mutineer", list(head_mutineer), 0) var/list/mutiny_crew = mutineers - head_mutineer if(mutiny_crew.len) - txt += check_role_table("Mutineers", mutiny_crew, admins, 0) + txt += admins.check_role_table("Mutineers", mutiny_crew, 0) if(body_count.len) - txt += check_role_table("Casualties", body_count, admins, 0) + txt += admins.check_role_table("Casualties", body_count, 0) return txt diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index cc8caa6284e..3b13ceb6b64 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -249,7 +249,7 @@ H.equip_or_collect(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) H.equip_or_collect(new /obj/item/device/pda/security(H), slot_wear_pda) H.equip_or_collect(new /obj/item/clothing/gloves/color/black(H), slot_gloves) - H.equip_or_collect(new /obj/item/weapon/gun/energy/advtaser(H), slot_belt) + H.equip_or_collect(new /obj/item/weapon/gun/energy/advtaser(H), slot_s_store) H.equip_or_collect(new /obj/item/device/flash(H), slot_l_store) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index ae8c888831d..415f604758a 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -234,7 +234,7 @@ var/global/list/default_medbay_channels = list( add_fingerprint(usr) -/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = config.contact_levels) //BS12 EDIT +/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = config.contact_levels, var/role = "Unknown") //BS12 EDIT var/datum/radio_frequency/connection = null if(channel && channels && channels.len > 0) if (channel == "department") @@ -248,9 +248,9 @@ var/global/list/default_medbay_channels = list( return if (!connection) return - - var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(src, null, null, 1) - A.rename_character(A.real_name, from) + var/mob/living/automatedannouncer/A = new /mob/living/automatedannouncer(src) + A.name = from + A.role = role Broadcast_Message(connection, A, 0, "*garbled automated announcement*", src, message, from, "Automated Announcement", from, "synthesized voice", @@ -258,6 +258,12 @@ var/global/list/default_medbay_channels = list( qdel(A) return +// Just a dummy mob used for making announcements, so we don't create AIs to do this +// I'm not sure who thought that was a good idea. -- Crazylemon +/mob/living/automatedannouncer + var/role = "" + universal_speak = 1 + // Interprets the message mode when talking into a radio, possibly returning a connection datum /obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode) // If a channel isn't specified, send to common. diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm index 3f19d6a494b..27f103177c8 100644 --- a/code/game/objects/items/weapons/lighters.dm +++ b/code/game/objects/items/weapons/lighters.dm @@ -46,7 +46,13 @@ user.visible_message("After a few attempts, [user] manages to light the [src].") else to_chat(user, "You burn yourself while lighting the lighter.") - user.adjustFireLoss(5) + var/mob/living/M = user + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand") + if(affecting.take_damage( 0, 5 )) //INFERNO + H.UpdateDamageIcon() + H.updatehealth() user.visible_message("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.") set_light(2) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 766cee622a0..3802c7c7432 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -394,7 +394,7 @@ -/proc/check_antagonists_line(mob/M, caption = "", close = 1) +/datum/admins/proc/check_antagonists_line(mob/M, caption = "", close = 1) var/logout_status if(istype(M, /mob/living/carbon/human/interactive)) logout_status = " (snpc)" @@ -483,52 +483,52 @@ dat += "" if(ticker.mode.changelings.len) - dat += check_role_table("Changelings", ticker.mode.changelings, src) + dat += check_role_table("Changelings", ticker.mode.changelings) if(ticker.mode.wizards.len) - dat += check_role_table("Wizards", ticker.mode.wizards, src) + dat += check_role_table("Wizards", ticker.mode.wizards) if(ticker.mode.raiders.len) - dat += check_role_table("Raiders", ticker.mode.raiders, src) + dat += check_role_table("Raiders", ticker.mode.raiders) /*if(ticker.mode.ninjas.len) - dat += check_role_table("Ninjas", ticker.mode.ninjas, src)*/ + dat += check_role_table("Ninjas", ticker.mode.ninjas)*/ if(ticker.mode.cult.len) - dat += check_role_table("Cultists", ticker.mode.cult, src, 0) + dat += check_role_table("Cultists", ticker.mode.cult, 0) if(ticker.mode.traitors.len) - dat += check_role_table("Traitors", ticker.mode.traitors, src) + dat += check_role_table("Traitors", ticker.mode.traitors) if(ticker.mode.shadows.len) - dat += check_role_table("Shadowlings", ticker.mode.shadows, src) + dat += check_role_table("Shadowlings", ticker.mode.shadows) if(ticker.mode.shadowling_thralls.len) - dat += check_role_table("Shadowling Thralls", ticker.mode.shadowling_thralls, src) + dat += check_role_table("Shadowling Thralls", ticker.mode.shadowling_thralls) if(ticker.mode.abductors.len) - dat += check_role_table("Abductors", ticker.mode.abductors, src) + dat += check_role_table("Abductors", ticker.mode.abductors) if(ticker.mode.abductees.len) - dat += check_role_table("Abductees", ticker.mode.abductees, src) + dat += check_role_table("Abductees", ticker.mode.abductees) if(ticker.mode.vampires.len) - dat += check_role_table("Vampires", ticker.mode.vampires, src) + dat += check_role_table("Vampires", ticker.mode.vampires) if(ticker.mode.vampire_enthralled.len) - dat += check_role_table("Vampire Thralls", ticker.mode.vampire_enthralled, src) + dat += check_role_table("Vampire Thralls", ticker.mode.vampire_enthralled) if(ticker.mode.xenos.len) - dat += check_role_table("Xenos", ticker.mode.xenos, src) + dat += check_role_table("Xenos", ticker.mode.xenos) if(ticker.mode.superheroes.len) - dat += check_role_table("Superheroes", ticker.mode.superheroes, src) + dat += check_role_table("Superheroes", ticker.mode.superheroes) if(ticker.mode.supervillains.len) - dat += check_role_table("Supervillains", ticker.mode.supervillains, src) + dat += check_role_table("Supervillains", ticker.mode.supervillains) if(ticker.mode.greyshirts.len) - dat += check_role_table("Greyshirts", ticker.mode.greyshirts, src) + dat += check_role_table("Greyshirts", ticker.mode.greyshirts) var/datum/game_mode/mutiny/mutiny = get_mutiny_mode() if(mutiny) @@ -539,14 +539,14 @@ else alert("The game hasn't started yet!") -/proc/check_role_table(name, list/members, admins, show_objectives=1) +/datum/admins/proc/check_role_table(name, list/members, show_objectives=1) var/txt = "
" for(var/datum/mind/M in members) - txt += check_role_table_row(M.current, admins, show_objectives) + txt += check_role_table_row(M.current, show_objectives) txt += "
[name]
" return txt -/proc/check_role_table_row(mob/M, admins=src, show_objectives) +/datum/admins/proc/check_role_table_row(mob/M, show_objectives) if (!istype(M)) return "Not found!" @@ -555,7 +555,7 @@ if (show_objectives) txt += {" - Show Objective + Show Objective "} diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 57b7487cbe5..9575002bc88 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -183,6 +183,13 @@ else src.DB_species_unlock("Plasmaman",100) return + if("7") + if(karma <30) + to_chat(usr, "You do not have enough karma!") + return + else + src.DB_species_unlock("Drask",30) + return if(href_list["KarmaRefund"]) var/type = href_list["KarmaRefundType"] var/job = href_list["KarmaRefund"] diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3ece1b8f059..e53af9a5014 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -251,7 +251,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts dat += "N2 Tank: [speciesprefs ? "Large N2 Tank" : "Specialized N2 Tank"]
" dat += "Secondary Language:
[language]
" dat += "Blood Type: [b_type]
" - if(species == "Human") + if(species in list("Human", "Drask")) dat += "Skin Tone: [-s_tone + 35]/220
" // dat += "Skin pattern: Adjust
" @@ -1038,7 +1038,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts g_eyes = rand(0,255) b_eyes = rand(0,255) if("s_tone") - if(species == "Human") + if(species in list("Human", "Drask")) s_tone = random_skin_tone() if("s_color") if(species in list("Unathi", "Tajaran", "Skrell", "Slime People", "Wyrn", "Vulpkanin", "Machine")) @@ -1395,7 +1395,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts b_eyes = hex2num(copytext(new_eyes, 6, 8)) if("s_tone") - if(species != "Human") + if(species != "Human" && species != "Drask") return var/new_s_tone = input(user, "Choose your character's skin-tone:\n(Light 1 - 220 Dark)", "Character Preference") as num|null if(new_s_tone) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 369a8543691..04f0f3ed42d 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -60,7 +60,7 @@ //Set species_restricted list switch(target_species) if("Human", "Skrell") //humanoid bodytypes - species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox","Wryn") + species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox","Wryn","Drask") else species_restricted = list(target_species) @@ -184,7 +184,8 @@ BLIND // can't see anything species_restricted = list("exclude","Unathi","Tajaran","Wryn") species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/gloves.dmi' + "Vox" = 'icons/mob/species/vox/gloves.dmi', + "Drask" = 'icons/mob/species/drask/gloves.dmi' ) /obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user, params) @@ -562,7 +563,8 @@ BLIND // can't see anything armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/uniform.dmi' + "Vox" = 'icons/mob/species/vox/uniform.dmi', + "Drask" = 'icons/mob/species/drask/uniform.dmi' ) var/has_sensor = 1//For the crew computer 2 = unable to change mode var/sensor_mode = 0 diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index eaf5df014df..1654198d9c9 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -54,7 +54,8 @@ species_fit = list("Vox") see_darkness = 0 //don't render darkness while wearing mesons sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/meson/night @@ -130,7 +131,8 @@ see_darkness = 0 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/eyepatch @@ -146,7 +148,8 @@ item_state = "headset" // lol species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/material @@ -158,7 +161,8 @@ vision_flags = SEE_OBJS species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/material/cyber @@ -204,7 +208,8 @@ prescription_upgradable = 1 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) @@ -282,7 +287,8 @@ tint = 1 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/sunglasses/lasers @@ -306,7 +312,8 @@ tint = 2 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/welding/attack_self() diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index a8c4c639491..44138b8e907 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -103,7 +103,8 @@ prescription_upgradable = 1 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/eyes.dmi' + "Vox" = 'icons/mob/species/vox/eyes.dmi', + "Drask" = 'icons/mob/species/drask/eyes.dmi' ) /obj/item/clothing/glasses/hud/security/sunglasses/prescription diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index eb38be7395d..b1b015e6ecb 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -13,7 +13,8 @@ strip_delay = 60 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/helmet.dmi' + "Vox" = 'icons/mob/species/vox/helmet.dmi', + "Drask" = 'icons/mob/species/drask/helmet.dmi' ) /obj/item/clothing/head/helmet/attack_self(mob/user) @@ -71,7 +72,8 @@ armor = list(melee = 25, bullet = 80, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0) species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/helmet.dmi' + "Vox" = 'icons/mob/species/vox/helmet.dmi', + "Drask" = 'icons/mob/species/drask/helmet.dmi' ) /obj/item/clothing/head/helmet/riot @@ -118,7 +120,8 @@ strip_delay = 80 species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/head.dmi' + "Vox" = 'icons/mob/species/vox/head.dmi', + "Drask" = 'icons/mob/species/drask/helmet.dmi' ) /obj/item/clothing/head/helmet/swat/syndicate diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index d12bac1d3b8..66e97d714d8 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -14,7 +14,8 @@ "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Drask" = 'icons/mob/species/drask/mask.dmi' ) /obj/item/clothing/mask/balaclava/attack_self(var/mob/user) @@ -33,7 +34,8 @@ "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Drask" = 'icons/mob/species/drask/mask.dmi' ) /obj/item/clothing/mask/luchador/tecnicos diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index a9af66abd16..40811397187 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -15,7 +15,8 @@ "Vox Armalis" = 'icons/mob/species/armalis/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Drask" = 'icons/mob/species/drask/mask.dmi' ) /obj/item/clothing/mask/breath/attack_self(var/mob/user) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index b13c2968f34..6f6d0f03446 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -13,7 +13,8 @@ "Vox" = 'icons/mob/species/vox/mask.dmi', "Unathi" = 'icons/mob/species/unathi/mask.dmi', "Tajaran" = 'icons/mob/species/tajaran/mask.dmi', - "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi' + "Vulpkanin" = 'icons/mob/species/vulpkanin/mask.dmi', + "Drask" = 'icons/mob/species/drask/mask.dmi' ) // **** Welding gas mask **** diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 7d59f828643..aab36bb04cb 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -10,7 +10,8 @@ species_restricted = list("exclude", "Diona", "Wryn") species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/helmet.dmi' + "Vox" = 'icons/mob/species/vox/helmet.dmi', + "Drask" = 'icons/mob/species/drask/helmet.dmi' ) /obj/item/clothing/head/helmet/space/capspace/equipped(var/mob/living/carbon/human/user, var/slot) if (ishuman(user) && user.species.name == "Vox") @@ -30,7 +31,8 @@ species_restricted = list("exclude", "Diona", "Wryn") species_fit = list("Vox") sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/suit.dmi' + "Vox" = 'icons/mob/species/vox/suit.dmi', + "Drask" = 'icons/mob/species/drask/suit.dmi' ) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 8e3fdefbb65..fd4122c56ec 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -251,6 +251,15 @@ icon_state = "plasmaman_RD_helmet0" base_state = "plasmaman_RD_helmet" +//MAGISTRATE +/obj/item/clothing/suit/space/eva/plasmaman/magistrate + name = "plasmaman magistrate suit" + icon_state = "plasmaman_HoS" + +/obj/item/clothing/head/helmet/space/eva/plasmaman/magistrate + name = "plasmaman magistrate helmet" + icon_state = "plasmaman_HoS_helmet0" + base_state = "plasmaman_HoS_helmet" //SECURITY diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 72a32c1e0cb..ce73bb13a24 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -20,6 +20,7 @@ "Skrell" = 'icons/mob/species/skrell/helmet.dmi', "Vox" = 'icons/mob/species/vox/helmet.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi', + "Drask" = 'icons/mob/species/drask/helmet.dmi' ) sprite_sheets_obj = list( "Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi', @@ -66,6 +67,7 @@ "Skrell" = 'icons/mob/species/skrell/suit.dmi', "Vox" = 'icons/mob/species/vox/suit.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi', + "Drask" = 'icons/mob/species/drask/suit.dmi' ) sprite_sheets_obj = list( "Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi', diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 2a4bb7634e5..cc0e47a9563 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -30,15 +30,19 @@ to_chat(user, "There is already a [holstered] holstered here!") return - if (!istype(I, /obj/item/weapon/gun)) + if(!istype(I, /obj/item/weapon/gun)) to_chat(user, "Only guns can be holstered!") return var/obj/item/weapon/gun/W = I - if (!can_holster(W)) + if(!can_holster(W)) to_chat(user, "This [W] won't fit in the [src]!") return + if(!user.canUnEquip(W, 0)) + to_chat(user, "You can't let go of the [W]!") + return + holstered = W user.unEquip(holstered) holstered.loc = src diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index 12dedc60fba..9c40f005a21 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -198,6 +198,7 @@ You've gained [totalkarma] total karma in your time here.
"} Unlock Machine People -- 15KP
Unlock Kidan -- 30KP
Unlock Grey -- 30KP
+ Unlock Drask -- 30KP
Unlock Vox -- 45KP
Unlock Slime People -- 45KP
Unlock Plasmaman -- 100KP
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index c3ca5a602c9..47004016a2b 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -151,6 +151,9 @@ jobname = "Cyborg" else if (ispAI(speaker)) jobname = "Personal AI" + else if (isAutoAnnouncer(speaker)) + var/mob/living/automatedannouncer/AA = speaker + jobname = AA.role else jobname = "Unknown" diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 8998f39ea27..c88684c77c0 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -276,6 +276,23 @@ flags = RESTRICTED | WHITELISTED syllables = list("blob","plop","pop","bop","boop") +/datum/language/drask + name = "Orluum" + desc = "The droning, vibrous language of the Drask. It sounds somewhat like whalesong" + speech_verb = "drones" + ask_verb = "hums" + exclaim_verb = "rumbles" + colour = "drask" + key = "%" + flags = RESTRICTED | WHITELISTED + syllables = list("hoorb","vrrm","ooorm","urrrum","ooum","ee","ffm","hhh","mn","ongg") + +/datum/language/drask/get_random_name() + var/new_name = "[pick(list("Hoorm","Viisk","Saar","Mnoo","Oumn","Fmong","Gnii","Vrrm","Oorm","Dromnn","Ssooumn","Ovv", "Hoorb","Vaar","Gaar","Goom","Ruum","Rumum"))]" + new_name += "-[pick(list("Hoorm","Viisk","Saar","Mnoo","Oumn","Fmong","Gnii","Vrrm","Oorm","Dromnn","Ssooumn","Ovv", "Hoorb","Vaar","Gaar","Goom","Ruum","Rumum"))]" + new_name += "-[pick(list("Hoorm","Viisk","Saar","Mnoo","Oumn","Fmong","Gnii","Vrrm","Oorm","Dromnn","Ssooumn","Ovv", "Hoorb","Vaar","Gaar","Goom","Ruum","Rumum"))]" + return new_name + /datum/language/common name = "Galactic Common" desc = "The common galactic tongue." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 40fd94c4052..3e5cb90f380 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -144,6 +144,10 @@ h_style = "Nucleation Crystals" ..(new_loc, "Nucleation") +/mob/living/carbon/human/drask/New(var/new_loc) + h_style = "Bald" + ..(new_loc, "Drask") + /mob/living/carbon/human/monkey/New(var/new_loc) ..(new_loc, "Monkey") diff --git a/code/modules/mob/living/carbon/human/species/drask.dm b/code/modules/mob/living/carbon/human/species/drask.dm new file mode 100644 index 00000000000..87f2c287dbe --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/drask.dm @@ -0,0 +1,99 @@ +/datum/species/drask + name = "Drask" + name_plural = "Drask" + icobase = 'icons/mob/human_races/r_drask.dmi' + deform = 'icons/mob/human_races/r_drask.dmi' + path = /mob/living/carbon/human/drask + default_language = "Galactic Common" + language = "Orluum" + unarmed_type = /datum/unarmed_attack/punch + eyes = "drask_eyes_s" + darksight = 5 + + speech_sounds = list('sound/voice/DraskTalk.ogg') + speech_chance = 20 + male_scream_sound = 'sound/voice/DraskTalk2.ogg' + female_scream_sound = 'sound/voice/DraskTalk2.ogg' + + burn_mod = 2 + //exotic_blood = "cryoxadone" + body_temperature = 273 + + blurb = "Hailing from Hoorlm, planet outside what is usually considered a habitable \ + orbit, the Drask evolved to live in extreme cold. Their strange bodies seem \ + to operate better the colder their surroundings are, and can regenerate rapidly \ + when breathing supercooled gas.

On their homeworld, the Drask live long lives \ + in their labyrinthine settlements, carved out beneath Hoorlm's icy surface, where the air \ + is of breathable density." + + suicide_messages = list( + "is self-warming with friction!", + "is jamming fingers through their big eyes!", + "is sucking in warm air!", + "is holding their breath!") + + flags = IS_WHITELISTED | HAS_LIPS + clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT + bodyflags = FEET_CLAWS | HAS_SKIN_TONE + dietflags = DIET_OMNI + + cold_level_1 = -1 //Default 260 - Lower is better + cold_level_2 = -1 //Default 200 + cold_level_3 = -1 //Default 120 + cold_env_multiplier = -1 + + heat_level_1 = 300 //Default 360 - Higher is better + heat_level_2 = 340 //Default 400 + heat_level_3 = 400 //Default 460 + heat_level_3_breathe = 600 //Default 1000 + hot_env_multiplier = 2 + + flesh_color = "#a3d4eb" + reagent_tag = PROCESS_ORG + base_color = "#a3d4eb" + blood_color = "#a3d4eb" + + has_organ = list( + "heart" = /obj/item/organ/internal/heart/drask, + "lungs" = /obj/item/organ/internal/lungs/drask, + "metabolic strainer" = /obj/item/organ/internal/liver/drask, + "eyes" = /obj/item/organ/internal/eyes/drask, + "brain" = /obj/item/organ/internal/brain/drask + ) + + +/datum/species/drask/handle_temperature(datum/gas_mixture/breath, var/mob/living/carbon/human/H) + if( abs(310.15 - breath.temperature) > 50) + if(H.status_flags & GODMODE) return 1 //godmode + if(breath.temperature < 260) + if(prob(20)) + to_chat(H, " You feel an invigorating coldness in your lungs!") + if(breath.temperature > heat_level_1) + if(prob(20)) + to_chat(H, "You feel your face burning and a searing heat in your lungs!") + + switch(breath.temperature) + + if(-INFINITY to 60) + H.adjustFireLoss(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_3*0.5) //3 points healed, applied every 4 ticks + H.adjustBruteLoss(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_3) + H.throw_alert("temp", /obj/screen/alert/cold/drask, 3) + + if(61 to 200) + H.adjustFireLoss(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_2*0.5) //1.5 healed every 4 ticks + H.adjustBruteLoss(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_2) + H.throw_alert("temp", /obj/screen/alert/cold/drask, 2) + + if(201 to 260) + H.adjustFireLoss(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_1*0.5) //0.5 healed every 4 ticks + H.adjustBruteLoss(cold_env_multiplier*COLD_GAS_DAMAGE_LEVEL_1) + H.throw_alert("temp", /obj/screen/alert/cold/drask, 1) + + if(heat_level_1 to heat_level_2) + H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head", used_weapon = "Excessive Heat") + + if(heat_level_2 to heat_level_3_breathe) + H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_2, BURN, "head", used_weapon = "Excessive Heat") + + if(heat_level_3_breathe to INFINITY) + H.apply_damage(hot_env_multiplier*HEAT_GAS_DAMAGE_LEVEL_3, BURN, "head", used_weapon = "Excessive Heat") diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index 76c06871250..d85da69017b 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -58,12 +58,20 @@ if("Life Support Specialist") suit=/obj/item/clothing/suit/space/eva/plasmaman/atmostech helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/atmostech - if("Warden","Detective","Security Officer","Security Pod Pilot") + if("Detective") suit=/obj/item/clothing/suit/space/eva/plasmaman/security/ helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/ - if("Head of Security", "Magistrate") + if("Warden","Security Officer","Security Pod Pilot") + suit=/obj/item/clothing/suit/space/eva/plasmaman/security/ + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/ + H.equip_or_collect(new /obj/item/weapon/gun/energy/advtaser(H), slot_in_backpack) + if("Magistrate") + suit=/obj/item/clothing/suit/space/eva/plasmaman/magistrate + helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/magistrate + if("Head of Security") suit=/obj/item/clothing/suit/space/eva/plasmaman/security/hos helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/hos + H.equip_or_collect(new /obj/item/weapon/gun/energy/gun(H), slot_in_backpack) if("Captain", "Blueshield") suit=/obj/item/clothing/suit/space/eva/plasmaman/security/captain helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security/captain @@ -73,6 +81,7 @@ if("Medical Doctor","Brig Physician") suit=/obj/item/clothing/suit/space/eva/plasmaman/medical helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical + H.equip_or_collect(new /obj/item/device/flashlight/pen(H), slot_in_backpack) if("Paramedic") suit=/obj/item/clothing/suit/space/eva/plasmaman/medical/paramedic helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical/paramedic diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index cda2873664e..272834e0328 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -168,6 +168,7 @@ var/list/ai_verbs_default = list( add_language("Canilunzt", 0) add_language("Skrellian", 0) add_language("Vox-pidgin", 0) + add_language("Orluum", 0) add_language("Rootspeak", 0) add_language("Trinary", 1) add_language("Chittin", 0) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 9019a61b206..5d5f335391d 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -627,6 +627,7 @@ user.add_language("Rootspeak") user.add_language("Chittin") user.add_language("Bubblish") + user.add_language("Orluum") user.add_language("Clownish") else user.remove_language("Sinta'unathi") @@ -637,6 +638,7 @@ user.remove_language("Rootspeak") user.remove_language("Chittin") user.remove_language("Bubblish") + user.remove_language("Orluum") user.remove_language("Clownish") is_active(mob/living/silicon/pai/user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 9b4587ae128..12030e52773 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -93,6 +93,7 @@ R.add_language("Trinary", 1) R.add_language("Chittin", 0) R.add_language("Bubblish", 0) + R.add_language("Orluum", 0) R.add_language("Clownish",0) /obj/item/weapon/robot_module/proc/add_subsystems(var/mob/living/silicon/robot/R) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 468a6cfe9df..de246f0f667 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -179,6 +179,11 @@ proc/isovermind(A) return 1 return 0 +/proc/isAutoAnnouncer(A) + if(istype(A, /mob/living/automatedannouncer)) + return 1 + return 0 + /proc/isorgan(A) if(istype(A, /obj/item/organ/external)) return 1 diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 3bd2672d612..63567b0399c 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -8,7 +8,7 @@ underwear = random_underwear(gender, species) undershirt = random_undershirt(gender, species) socks = random_socks(gender, species) - if(species == "Human") + if(species in list("Human", "Drask")) s_tone = random_skin_tone() h_style = random_hair_style(gender, species) f_style = random_facial_hair_style(gender, species) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index d6b4b6ad213..9cf13e22f1d 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -254,6 +254,8 @@ temp_img = icon('icons/obj/butts.dmi', "machine") if("Plasmaman") temp_img = icon('icons/obj/butts.dmi', "plasma") + if("Drask") + temp_img = icon('icons/obj/butts.dmi', "drask") else temp_img = icon('icons/obj/butts.dmi', "human") else if(istype(ass,/mob/living/silicon/robot/drone)) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 4cc08d08471..9cce0b5fa9d 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -433,56 +433,83 @@ if(status == LIGHT_EMPTY) to_chat(user, "There is no [fitting] in this light.") return + if(user.a_intent == "help") + if(on) + to_chat(user, "This light [fitting] feels hot!") + else + to_chat(user, "The light [fitting] feels cold.") + return + + if(user.a_intent == "disarm" || user.a_intent == "grab") //trying to grab the bulb // make it burn hands if not wearing fire-insulated gloves - if(on) - var/prot = 0 - var/mob/living/carbon/human/H = user + if(on) + var/prot = 0 + var/mob/living/carbon/human/H = user - if(istype(H)) + if(istype(H)) - if(H.gloves) - var/obj/item/clothing/gloves/G = H.gloves - if(G.max_heat_protection_temperature) - prot = (G.max_heat_protection_temperature > 360) + if(H.gloves) + var/obj/item/clothing/gloves/G = H.gloves + if(G.max_heat_protection_temperature) + prot = (G.max_heat_protection_temperature > 360) + else + prot = 1 + + if(prot > 0 || (RESIST_HEAT in user.mutations)) + to_chat(user, "You remove the light [fitting]") + else if(TK in user.mutations) + to_chat(user, "You telekinetically remove the light [fitting].") + else + to_chat(user, "You try to remove the light [fitting], but you burn your hand on it!") + + var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand") + if(affecting.take_damage( 0, 5 )) // 5 burn damage + H.UpdateDamageIcon() + H.updatehealth() + return // if burned, don't remove the light else - prot = 1 - - if(prot > 0 || (RESIST_HEAT in user.mutations)) - to_chat(user, "You remove the light [fitting]") - else if(TK in user.mutations) - to_chat(user, "You telekinetically remove the light [fitting].") - else - to_chat(user, "You try to remove the light [fitting], but you burn your hand on it!") - - var/obj/item/organ/external/affecting = H.get_organ("[user.hand ? "l" : "r" ]_hand") - if(affecting.take_damage( 0, 5 )) // 5 burn damage - H.UpdateDamageIcon() - H.updatehealth() - return // if burned, don't remove the light - else - to_chat(user, "You remove the light [fitting].") + to_chat(user, "You remove the light [fitting].") - // create a light tube/bulb item and put it in the user's hand - var/obj/item/weapon/light/L = new light_type() - L.status = status - L.rigged = rigged - L.brightness_range = brightness_range - L.brightness_power = brightness_power - L.brightness_color = brightness_color + // create a light tube/bulb item and put it in the user's hand + var/obj/item/weapon/light/L = new light_type() + L.status = status + L.rigged = rigged + L.brightness_range = brightness_range + L.brightness_power = brightness_power + L.brightness_color = brightness_color // light item inherits the switchcount, then zero it - L.switchcount = switchcount - switchcount = 0 + L.switchcount = switchcount + switchcount = 0 - L.update() - L.add_fingerprint(user) + L.update() + L.add_fingerprint(user) - user.put_in_active_hand(L) //puts it in our active hand + user.put_in_active_hand(L) //puts it in our active hand + + status = LIGHT_EMPTY + update() + + if(user.a_intent == "harm") //hitting the bulb + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + if(prob(10)) //10% chance to break a light with bare hands + to_chat(user, "You hit the light, and it smashes!") + for(var/mob/M in viewers(src)) + if(M == user) + continue + M.show_message("[user.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) + if(on) + electrocute_mob(user, get_area(src), src, 0.3) + broken() + else + user.visible_message("[user.name] hits the light.") + playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) + + return - status = LIGHT_EMPTY - update() // break the light and make sparks if was on diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 43bdd538125..68bcd9306d3 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -17,9 +17,9 @@ var/obj/item/weapon/reagent_containers/beaker = null var/recharged = 0 var/hackedcheck = 0 - var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine", - "sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron", - "copper","mercury","plasma","radium","water","ethanol","sugar","tungsten","iodine","bromine","silver") + var/list/dispensable_reagents = list("hydrogen", "lithium", "carbon", "nitrogen", "oxygen", "fluorine", + "sodium", "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "potassium", "iron", + "copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "tungsten", "iodine", "bromine", "silver") var/list/hacked_reagents = list("toxin") var/hack_message = "You disable the safety safeguards, enabling the \"Mad Scientist\" mode." var/unhack_message = "You re-enable the safety safeguards, enabling the \"NT Standard\" mode." @@ -266,7 +266,9 @@ ui_title = "Soda Dispens-o-matic" energy = 100 max_energy = 100 - dispensable_reagents = list("water","ice", "milk", "soymilk", "coffee","tea","hot_coco", "cola","spacemountainwind","dr_gibb","space_up","tonic","sodawater","lemon_lime", "grapejuice","sugar","orangejuice", "lemonjuice", "limejuice","tomatojuice", "banana", "watermelonjuice", "carrotjuice", "potato", "berryjuice") + dispensable_reagents = list("water", "ice", "milk", "soymilk", "coffee", "tea", "hot_coco", "cola", "spacemountainwind", "dr_gibb", "space_up", + "tonic", "sodawater", "lemon_lime", "grapejuice", "sugar", "orangejuice", "lemonjuice", "limejuice", "tomatojuice", "banana", + "watermelonjuice", "carrotjuice", "potato", "berryjuice") hack_message = "You change the mode from 'McNano' to 'Pizza King'." unhack_message = "You change the mode from 'Pizza King' to 'McNano'." hacked_reagents = list("thirteenloko") @@ -278,10 +280,10 @@ energy = 100 max_energy = 100 desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." - dispensable_reagents = list("ice","cream", "cider", "beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead") + dispensable_reagents = list("ice", "cream", "cider", "beer", "kahlua", "whiskey", "wine", "vodka", "gin", "rum", "tequilla", "vermouth", "cognac", "ale", "mead", "synthanol") hack_message = "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes." unhack_message = "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes." - hacked_reagents = list("goldschlager","patron", "absinthe", "ethanol", "nothing") + hacked_reagents = list("goldschlager", "patron", "absinthe", "ethanol", "nothing") ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/surgery/organs/subtypes/drask.dm b/code/modules/surgery/organs/subtypes/drask.dm new file mode 100644 index 00000000000..5ecfa67e054 --- /dev/null +++ b/code/modules/surgery/organs/subtypes/drask.dm @@ -0,0 +1,50 @@ +//DRASK ORGAN +/obj/item/organ/internal/drask + name = "drask organ" + icon = 'icons/obj/surgery_drask.dmi' + icon_state = "innards" + desc = "A greenish, slightly translucent organ. It is extremely cold." + +/obj/item/organ/internal/heart/drask + name = "drask heart" + icon = 'icons/obj/surgery_drask.dmi' + icon_state = "heart-on" + dead_icon = "heart-off" + organ_tag = "heart" + parent_organ = "head" + slot = "heart" + +/obj/item/organ/internal/lungs/drask + name = "lungs" + icon = 'icons/obj/surgery_drask.dmi' + icon_state = "lungs" + gender = PLURAL + organ_tag = "lungs" + parent_organ = "chest" + slot = "lungs" + +/obj/item/organ/internal/liver/drask + name = "metabolic strainer" + icon = 'icons/obj/surgery_drask.dmi' + icon_state = "kidneys" + gender = PLURAL + organ_tag = "kidneys" + parent_organ = "groin" + slot = "kidneys" + +/obj/item/organ/internal/brain/drask + name = "brain" + icon = 'icons/obj/surgery_drask.dmi' + icon_state = "brain2" + organ_tag = "brain" + slot = "brain" + +/obj/item/organ/internal/eyes/drask + name = "eyes" + icon = 'icons/obj/surgery_drask.dmi' + icon_state = "eyes" + gender = PLURAL + organ_tag = "eyes" + parent_organ = "head" + slot = "eyes" + desc = "Drask eyes. They look even stranger disembodied" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4187.yml b/html/changelogs/AutoChangeLog-pr-4187.yml new file mode 100644 index 00000000000..255f347d71c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4187.yml @@ -0,0 +1,9 @@ +author: QuinnAggeler +delete-after: True +changes: + - rscadd: "Adds the Drask as a 30KP race" + - rscadd: "Adds their language, Orluum" + - rscadd: "Adds a stylecolor for their language" + - rscadd: "Adds their butts (for photocopying)" + - rscadd: "Adds, at last, another race with skin tone (humies move over)" + - rscadd: "Adds a reason to make bad ice puns" diff --git a/html/changelogs/AutoChangeLog-pr-4246.yml b/html/changelogs/AutoChangeLog-pr-4246.yml new file mode 100644 index 00000000000..15a4ad175ea --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4246.yml @@ -0,0 +1,4 @@ +author: FlattestGuitar +delete-after: True +changes: + - tweak: "cheap lighters only damage your hand if you fail to properly use such a complicated contraption, not the whole body" diff --git a/html/changelogs/AutoChangeLog-pr-4289.yml b/html/changelogs/AutoChangeLog-pr-4289.yml new file mode 100644 index 00000000000..5f64706be9e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4289.yml @@ -0,0 +1,7 @@ +author: pinatacolada +delete-after: True +changes: + - bugfix: "Plasmamen security now spawn with their suit slot items in their +bags" + - tweak: "Pod pilots spawn with taser in the suit slot" + - tweak: "removes armor from plasmamen magistrate suits" diff --git a/html/changelogs/AutoChangeLog-pr-4305.yml b/html/changelogs/AutoChangeLog-pr-4305.yml new file mode 100644 index 00000000000..9a106ed3dac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4305.yml @@ -0,0 +1,4 @@ +author: LittleBigKid2000 +delete-after: True +changes: + - rscadd: "Booze dispensers can now dispense synthanol" diff --git a/html/changelogs/AutoChangeLog-pr-4314.yml b/html/changelogs/AutoChangeLog-pr-4314.yml new file mode 100644 index 00000000000..6fc6f3b0cf0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4314.yml @@ -0,0 +1,4 @@ +author: Crazylemon64 +delete-after: True +changes: + - bugfix: "AIs are no longer created for temporary messages." diff --git a/html/changelogs/AutoChangeLog-pr-4315.yml b/html/changelogs/AutoChangeLog-pr-4315.yml new file mode 100644 index 00000000000..cf4627fd1ce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4315.yml @@ -0,0 +1,4 @@ +author: IK3I +delete-after: True +changes: + - bugfix: "Can no longer holster items with No-Drop active." diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 4636afa8d15..3cd59fe3f74 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/human_races/r_drask.dmi b/icons/mob/human_races/r_drask.dmi new file mode 100644 index 00000000000..d3a9934298b Binary files /dev/null and b/icons/mob/human_races/r_drask.dmi differ diff --git a/icons/mob/species/drask/eyes.dmi b/icons/mob/species/drask/eyes.dmi new file mode 100644 index 00000000000..918f6e5ef71 Binary files /dev/null and b/icons/mob/species/drask/eyes.dmi differ diff --git a/icons/mob/species/drask/gloves.dmi b/icons/mob/species/drask/gloves.dmi new file mode 100644 index 00000000000..4070bb5a7cd Binary files /dev/null and b/icons/mob/species/drask/gloves.dmi differ diff --git a/icons/mob/species/drask/gloves1.dmi b/icons/mob/species/drask/gloves1.dmi new file mode 100644 index 00000000000..70423488ef5 Binary files /dev/null and b/icons/mob/species/drask/gloves1.dmi differ diff --git a/icons/mob/species/drask/helmet.dmi b/icons/mob/species/drask/helmet.dmi new file mode 100644 index 00000000000..3759f81fc41 Binary files /dev/null and b/icons/mob/species/drask/helmet.dmi differ diff --git a/icons/mob/species/drask/mask.dmi b/icons/mob/species/drask/mask.dmi new file mode 100644 index 00000000000..72bcd3d908c Binary files /dev/null and b/icons/mob/species/drask/mask.dmi differ diff --git a/icons/mob/species/drask/suit.dmi b/icons/mob/species/drask/suit.dmi new file mode 100644 index 00000000000..37c03b3da9e Binary files /dev/null and b/icons/mob/species/drask/suit.dmi differ diff --git a/icons/mob/species/drask/uniform.dmi b/icons/mob/species/drask/uniform.dmi new file mode 100644 index 00000000000..2e58f6918bf Binary files /dev/null and b/icons/mob/species/drask/uniform.dmi differ diff --git a/icons/obj/butts.dmi b/icons/obj/butts.dmi index cddd1ca6659..9a71d519a19 100644 Binary files a/icons/obj/butts.dmi and b/icons/obj/butts.dmi differ diff --git a/icons/obj/surgery_drask.dmi b/icons/obj/surgery_drask.dmi new file mode 100644 index 00000000000..df2fd75a360 Binary files /dev/null and b/icons/obj/surgery_drask.dmi differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index 2f178d751bb..f1e28ec7189 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -91,6 +91,7 @@ h1.alert, h2.alert {color: #000000;} .trinary {color: #727272;} .kidan {color: #664205;} .slime {color: #0077AA;} +.drask {color: #a3d4eb; font-family: "Arial Black";} .clown {color: #ff0000;} .shadowling {color: #3b2769;} .vulpkanin {color: #B97A57;} diff --git a/paradise.dme b/paradise.dme index b9b84d17cef..9077d8b86f4 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1492,6 +1492,7 @@ #include "code\modules\mob\living\carbon\human\interactive\prefabs.dm" #include "code\modules\mob\living\carbon\human\species\abdcutor.dm" #include "code\modules\mob\living\carbon\human\species\apollo.dm" +#include "code\modules\mob\living\carbon\human\species\drask.dm" #include "code\modules\mob\living\carbon\human\species\golem.dm" #include "code\modules\mob\living\carbon\human\species\monkey.dm" #include "code\modules\mob\living\carbon\human\species\plasmaman.dm" @@ -1998,6 +1999,7 @@ #include "code\modules\surgery\organs\skeleton.dm" #include "code\modules\surgery\organs\wound.dm" #include "code\modules\surgery\organs\subtypes\diona.dm" +#include "code\modules\surgery\organs\subtypes\drask.dm" #include "code\modules\surgery\organs\subtypes\machine.dm" #include "code\modules\surgery\organs\subtypes\misc.dm" #include "code\modules\surgery\organs\subtypes\nucleation.dm" diff --git a/sound/voice/DraskTalk.ogg b/sound/voice/DraskTalk.ogg new file mode 100644 index 00000000000..c0f6f4399e9 Binary files /dev/null and b/sound/voice/DraskTalk.ogg differ diff --git a/sound/voice/DraskTalk2.ogg b/sound/voice/DraskTalk2.ogg new file mode 100644 index 00000000000..2f849bf52f9 Binary files /dev/null and b/sound/voice/DraskTalk2.ogg differ