mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 15:08:02 +01:00
Merge remote-tracking branch 'upstream/master' into hair
This commit is contained in:
@@ -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 = " <i>(snpc)</i>"
|
||||
@@ -483,52 +483,52 @@
|
||||
dat += "</table>"
|
||||
|
||||
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 = "<br><table cellspacing=5><tr><td><b>[name]</b></td><td></td></tr>"
|
||||
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 += "</table>"
|
||||
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 "<tr><td><i>Not found!</i></td></tr>"
|
||||
|
||||
@@ -555,7 +555,7 @@
|
||||
if (show_objectives)
|
||||
txt += {"
|
||||
<td>
|
||||
<a href='?src=\ref[admins];traitor=\ref[M]'>Show Objective</a>
|
||||
<a href='?src=\ref[src];traitor=\ref[M]'>Show Objective</a>
|
||||
</td>
|
||||
"}
|
||||
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -251,7 +251,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
||||
dat += "N2 Tank: <a href='?_src_=prefs;preference=speciesprefs;task=input'>[speciesprefs ? "Large N2 Tank" : "Specialized N2 Tank"]</a><br>"
|
||||
dat += "Secondary Language:<br><a href='?_src_=prefs;preference=language;task=input'>[language]</a><br>"
|
||||
dat += "Blood Type: <a href='?_src_=prefs;preference=b_type;task=input'>[b_type]</a><br>"
|
||||
if(species == "Human")
|
||||
if(species in list("Human", "Drask"))
|
||||
dat += "Skin Tone: <a href='?_src_=prefs;preference=s_tone;task=input'>[-s_tone + 35]/220</a><br>"
|
||||
|
||||
// dat += "Skin pattern: <a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust</a><br>"
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 ****
|
||||
|
||||
@@ -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'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -30,15 +30,19 @@
|
||||
to_chat(user, "<span class='warning'>There is already a [holstered] holstered here!</span>")
|
||||
return
|
||||
|
||||
if (!istype(I, /obj/item/weapon/gun))
|
||||
if(!istype(I, /obj/item/weapon/gun))
|
||||
to_chat(user, "<span class='warning'>Only guns can be holstered!</span>")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/gun/W = I
|
||||
if (!can_holster(W))
|
||||
if(!can_holster(W))
|
||||
to_chat(user, "<span class='warning'>This [W] won't fit in the [src]!</span>")
|
||||
return
|
||||
|
||||
if(!user.canUnEquip(W, 0))
|
||||
to_chat(user, "<span class='warning'>You can't let go of the [W]!<span>")
|
||||
return
|
||||
|
||||
holstered = W
|
||||
user.unEquip(holstered)
|
||||
holstered.loc = src
|
||||
|
||||
@@ -198,6 +198,7 @@ You've gained <b>[totalkarma]</b> total karma in your time here.<br>"}
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=1'>Unlock Machine People -- 15KP</a><br>
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=2'>Unlock Kidan -- 30KP</a><br>
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=3'>Unlock Grey -- 30KP</a><br>
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=7'>Unlock Drask -- 30KP</a><br>
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=4'>Unlock Vox -- 45KP</a><br>
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=5'>Unlock Slime People -- 45KP</a><br>
|
||||
<a href='?src=\ref[src];karmashop=shop;KarmaBuy2=6'>Unlock Plasmaman -- 100KP</a><br>
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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. <br/><br/> 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, "<span class='notice'> You feel an invigorating coldness in your lungs!</span>")
|
||||
if(breath.temperature > heat_level_1)
|
||||
if(prob(20))
|
||||
to_chat(H, "<span class='warning'>You feel your face burning and a searing heat in your lungs!</span>")
|
||||
|
||||
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")
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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("<span class='danger'>[user.name] hits the light.</span>")
|
||||
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
|
||||
|
||||
return
|
||||
|
||||
status = LIGHT_EMPTY
|
||||
update()
|
||||
|
||||
// break the light and make sparks if was on
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user