mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Deconflict and revert an accidental iconstate name change
This commit is contained in:
@@ -784,11 +784,13 @@ var/global/nologevent = 0
|
||||
log_admin("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
|
||||
return //alert("Round end delayed", null, null, null, null, null)
|
||||
going = !( going )
|
||||
if(!( going ))
|
||||
if(going)
|
||||
going = FALSE
|
||||
SSticker.delay_end = TRUE
|
||||
to_chat(world, "<b>The game start has been delayed.</b>")
|
||||
log_admin("[key_name(usr)] delayed the game.")
|
||||
else
|
||||
going = TRUE
|
||||
to_chat(world, "<b>The game will start soon.</b>")
|
||||
log_admin("[key_name(usr)] removed the delay.")
|
||||
feedback_add_details("admin_verb","DELAY") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
@@ -210,6 +210,7 @@
|
||||
var/datum/objective/KillDaCrew = new /datum/objective
|
||||
KillDaCrew.owner = S.mind
|
||||
KillDaCrew.explanation_text = "[objective_verb] everyone else while you're at it."
|
||||
KillDaCrew.completed = TRUE
|
||||
S.mind.objectives += KillDaCrew
|
||||
to_chat(S, "<B>Objective #[1]</B>: [KillDaWiz.explanation_text]")
|
||||
to_chat(S, "<B>Objective #[2]</B>: [KillDaCrew.explanation_text]")
|
||||
@@ -219,7 +220,8 @@
|
||||
desc = "A magically infused bottle of clown love, distilled from \
|
||||
countless hugging attacks. Used in funny rituals to attract \
|
||||
adorable creatures."
|
||||
color = "#FF69B4" // HOT PINK
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "vialtickles"
|
||||
veil_msg = "<span class='warning'>You sense an adorable presence \
|
||||
lurking just beyond the veil...</span>"
|
||||
objective_verb = "Hug and tickle"
|
||||
@@ -278,6 +280,7 @@
|
||||
var/datum/objective/KillDaCrew = new /datum/objective
|
||||
KillDaCrew.owner = M.mind
|
||||
KillDaCrew.explanation_text = "[objective_verb] everyone and everything else while you're at it."
|
||||
KillDaCrew.completed = TRUE
|
||||
M.mind.objectives += KillDaCrew
|
||||
to_chat(M, "<B>Objective #[1]</B>: [KillDaWiz.explanation_text]")
|
||||
to_chat(M, "<B>Objective #[2]</B>: [KillDaCrew.explanation_text]")
|
||||
|
||||
@@ -104,6 +104,11 @@
|
||||
H.rename_character(null, H.dna.species.get_random_name())
|
||||
else
|
||||
H.rename_character(null, name)
|
||||
if(is_species(H, /datum/species/golem/tranquillite) && H.mind)
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null))
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null))
|
||||
H.mind.miming = TRUE
|
||||
|
||||
if(has_owner)
|
||||
new_spawn.mind.assigned_role = "Servant Golem"
|
||||
else
|
||||
|
||||
@@ -318,7 +318,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the
|
||||
for(var/D in cardinal)
|
||||
assets["[state]-[dir2text(D)].png"] = icon('icons/obj/pipe-item.dmi', state, D)
|
||||
for(var/state in icon_states('icons/obj/pipes/disposal.dmi'))
|
||||
if(!(state in list("pipe-c", "pipe-j1", "pipe-s", "pipe-t", "pipe-y", "intake", "outlet"))) //Pipes we want sprites for
|
||||
if(!(state in list("pipe-c", "pipe-j1", "pipe-s", "pipe-t", "pipe-y", "intake", "outlet", "pipe-j1s"))) //Pipes we want sprites for
|
||||
continue
|
||||
for(var/D in cardinal)
|
||||
assets["[state]-[dir2text(D)].png"] = icon('icons/obj/pipes/disposal.dmi', state, D)
|
||||
|
||||
@@ -21,12 +21,4 @@
|
||||
|
||||
/datum/gear/lipstick/lime
|
||||
display_name = "lipstick, lime"
|
||||
path = /obj/item/lipstick/lime
|
||||
|
||||
/datum/gear/monocle
|
||||
display_name = "monocle"
|
||||
path = /obj/item/clothing/glasses/monocle
|
||||
|
||||
/datum/gear/sunglasses
|
||||
display_name = "cheap sunglasses"
|
||||
path = /obj/item/clothing/glasses/sunglasses/fake
|
||||
path = /obj/item/lipstick/lime
|
||||
@@ -18,12 +18,10 @@
|
||||
/datum/gear/donor/furcape
|
||||
display_name = "Fur Cape"
|
||||
path = /obj/item/clothing/suit/furcape
|
||||
cost = 2
|
||||
|
||||
/datum/gear/donor/furcoat
|
||||
display_name = "Fur Coat"
|
||||
path = /obj/item/clothing/suit/furcoat
|
||||
cost = 2
|
||||
|
||||
/datum/gear/donor/kamina
|
||||
display_name = "Spiky Orange-tinted Shades"
|
||||
@@ -33,10 +31,6 @@
|
||||
display_name = "Spiky Green-tinted Shades"
|
||||
path = /obj/item/clothing/glasses/fluff/kamina/green
|
||||
|
||||
/datum/gear/donor/hipster
|
||||
display_name = "Hipster Glasses"
|
||||
path = /obj/item/clothing/glasses/regular/hipster
|
||||
|
||||
/datum/gear/donor/threedglasses
|
||||
display_name = "Threed Glasses"
|
||||
path = /obj/item/clothing/glasses/threedglasses
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/datum/gear/glasses
|
||||
subtype_path = /datum/gear/glasses
|
||||
slot = slot_glasses
|
||||
sort_category = "Glasses"
|
||||
|
||||
/datum/gear/glasses/sunglasses
|
||||
display_name = "cheap sunglasses"
|
||||
path = /obj/item/clothing/glasses/sunglasses_fake
|
||||
|
||||
/datum/gear/glasses/eyepatch
|
||||
display_name = "Eyepatch"
|
||||
path = /obj/item/clothing/glasses/eyepatch
|
||||
|
||||
/datum/gear/glasses/hipster
|
||||
display_name = "Hipster glasses"
|
||||
path = /obj/item/clothing/glasses/regular/hipster
|
||||
|
||||
/datum/gear/glasses/monocle
|
||||
display_name = "Monocle"
|
||||
path = /obj/item/clothing/glasses/monocle
|
||||
|
||||
/datum/gear/glasses/prescription
|
||||
display_name = "Prescription glasses"
|
||||
path = /obj/item/clothing/glasses/regular
|
||||
@@ -0,0 +1,8 @@
|
||||
/datum/gear/gloves
|
||||
subtype_path = /datum/gear/gloves
|
||||
slot = slot_gloves
|
||||
sort_category = "Gloves"
|
||||
|
||||
/datum/gear/gloves/fingerless
|
||||
display_name = "Fingerless Gloves"
|
||||
path = /obj/item/clothing/gloves/fingerless
|
||||
@@ -27,25 +27,32 @@
|
||||
|
||||
/datum/gear/shoes/cowboyboots
|
||||
display_name = "cowboy boots, brown"
|
||||
cost = 1
|
||||
path = /obj/item/clothing/shoes/cowboyboots
|
||||
path = /obj/item/clothing/shoes/cowboy
|
||||
|
||||
/datum/gear/shoes/cowboyboots_black
|
||||
display_name = "cowboy boots, black"
|
||||
cost = 1
|
||||
path = /obj/item/clothing/shoes/cowboyboots/black
|
||||
path = /obj/item/clothing/shoes/cowboy/black
|
||||
|
||||
/datum/gear/shoes/cowboyboots/white
|
||||
display_name = "cowboy boots, white"
|
||||
cost = 1
|
||||
path = /obj/item/clothing/shoes/cowboyboots/white
|
||||
path = /obj/item/clothing/shoes/cowboy/white
|
||||
|
||||
/datum/gear/shoes/cowboyboots/pink
|
||||
display_name = "cowboy boots, pink"
|
||||
cost = 1
|
||||
path = /obj/item/clothing/shoes/cowboyboots/pink
|
||||
|
||||
path = /obj/item/clothing/shoes/cowboy/pink
|
||||
|
||||
/datum/gear/shoes/laceup
|
||||
display_name = "laceup shoes"
|
||||
cost = 1
|
||||
path = /obj/item/clothing/shoes/laceup
|
||||
|
||||
/datum/gear/shoes/blackshoes
|
||||
display_name = "Black shoes"
|
||||
path = /obj/item/clothing/shoes/black
|
||||
|
||||
/datum/gear/shoes/brownshoes
|
||||
display_name = "Brown shoes"
|
||||
path = /obj/item/clothing/shoes/brown
|
||||
|
||||
/datum/gear/shoes/whiteshoes
|
||||
display_name = "White shoes"
|
||||
path = /obj/item/clothing/shoes/white
|
||||
@@ -1,7 +1,6 @@
|
||||
/datum/gear/suit
|
||||
subtype_path = /datum/gear/suit
|
||||
slot = slot_wear_suit
|
||||
cost = 2
|
||||
sort_category = "External Wear"
|
||||
|
||||
//WINTER COATS
|
||||
@@ -105,6 +104,10 @@
|
||||
path = /obj/item/clothing/suit/armor/secjacket
|
||||
allowed_roles = list("Head of Security", "Warden", "Detective", "Security Officer", "Security Pod Pilot")
|
||||
|
||||
/datum/gear/suit/ianshirt
|
||||
display_name = "Ian Shirt"
|
||||
path = /obj/item/clothing/suit/ianshirt
|
||||
|
||||
/datum/gear/suit/poncho
|
||||
display_name = "poncho, classic"
|
||||
path = /obj/item/clothing/suit/poncho
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
/datum/gear/uniform
|
||||
subtype_path = /datum/gear/uniform
|
||||
slot = slot_w_uniform
|
||||
cost = 2
|
||||
sort_category = "Uniforms and Casual Dress"
|
||||
|
||||
/datum/gear/uniform/skirt
|
||||
|
||||
@@ -201,6 +201,19 @@
|
||||
to_chat(src, "You will no longer hear musical instruments.")
|
||||
feedback_add_details("admin_verb","TInstru") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/Toggle_disco() //to toggle off the disco machine locally, in case it gets too annoying
|
||||
set name = "Hear/Silence Dance Machine"
|
||||
set category = "Preferences"
|
||||
set desc = "Toggles hearing and dancing to the radiant dance machine"
|
||||
prefs.sound ^= SOUND_DISCO
|
||||
prefs.save_preferences(src)
|
||||
if(prefs.sound & SOUND_DISCO)
|
||||
to_chat(src, "You will now hear and dance to the radiant dance machine.")
|
||||
else
|
||||
to_chat(src, "You will no longer hear or dance to the radiant dance machine.")
|
||||
usr.stop_sound_channel(CHANNEL_JUKEBOX)
|
||||
feedback_add_details("admin_verb","Tdd") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/verb/setup_character()
|
||||
set name = "Game Preferences"
|
||||
set category = "Preferences"
|
||||
|
||||
@@ -596,7 +596,7 @@ BLIND // can't see anything
|
||||
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
|
||||
species_restricted = list("exclude","Diona","Vox","Wryn")
|
||||
species_restricted = list("exclude","Vox","Wryn")
|
||||
flash_protect = 2
|
||||
strip_delay = 50
|
||||
put_on_delay = 50
|
||||
@@ -624,7 +624,7 @@ BLIND // can't see anything
|
||||
put_on_delay = 80
|
||||
burn_state = FIRE_PROOF
|
||||
hide_tail_by_species = null
|
||||
species_restricted = list("exclude","Diona","Vox","Wryn")
|
||||
species_restricted = list("exclude","Vox","Wryn")
|
||||
|
||||
//Under clothing
|
||||
/obj/item/clothing/under
|
||||
|
||||
@@ -265,9 +265,11 @@
|
||||
"Grey" = 'icons/mob/species/grey/eyes.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/fake
|
||||
/obj/item/clothing/glasses/sunglasses_fake
|
||||
desc = "Cheap, plastic sunglasses. They don't even have UV protection."
|
||||
name = "cheap sunglasses"
|
||||
icon_state = "sun"
|
||||
item_state = "sunglasses"
|
||||
see_in_dark = 0
|
||||
flash_protect = 0
|
||||
tint = 0
|
||||
|
||||
@@ -38,12 +38,6 @@
|
||||
"Grey" = 'icons/mob/species/grey/eyes.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/health_advanced
|
||||
name = "\improper Advanced Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. Includes anti-flash filter."
|
||||
icon_state = "advmedhud"
|
||||
flash_protect = 1
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/night
|
||||
name = "\improper Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
@@ -54,6 +48,14 @@
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
prescription_upgradable = 0
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/sunglasses
|
||||
name = "medical HUDSunglasses"
|
||||
desc = "Sunglasses with a medical HUD."
|
||||
icon_state = "sunhudmed"
|
||||
see_in_dark = 1
|
||||
flash_protect = 1
|
||||
tint = 1
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits."
|
||||
@@ -77,6 +79,14 @@
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE
|
||||
prescription_upgradable = 0
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/sunglasses
|
||||
name = "diagnostic sunglasses"
|
||||
desc = "Sunglasses with a diagnostic HUD."
|
||||
icon_state = "sunhuddiag"
|
||||
item_state = "glasses"
|
||||
flash_protect = 1
|
||||
tint = 1
|
||||
|
||||
/obj/item/clothing/glasses/hud/security
|
||||
name = "\improper Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records."
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
|
||||
//BeanieStation13 Redux
|
||||
|
||||
//Plus a bobble hat, lets be inclusive!!
|
||||
|
||||
/obj/item/clothing/head/beanie //Default is white, this is meant to be seen
|
||||
name = "white beanie"
|
||||
desc = "A stylish beanie. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their heads."
|
||||
icon_state = "beanie" //Default white
|
||||
item_color = "beanie"
|
||||
|
||||
/obj/item/clothing/head/beanie/black
|
||||
name = "black beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#4A4A4B" //Grey but it looks black
|
||||
|
||||
/obj/item/clothing/head/beanie/red
|
||||
name = "red beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#D91414" //Red
|
||||
|
||||
/obj/item/clothing/head/beanie/green
|
||||
name = "green beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#5C9E54" //Green
|
||||
|
||||
/obj/item/clothing/head/beanie/darkblue
|
||||
name = "dark blue beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#1E85BC" //Blue
|
||||
|
||||
/obj/item/clothing/head/beanie/purple
|
||||
name = "purple beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#9557C5" //purple
|
||||
|
||||
/obj/item/clothing/head/beanie/yellow
|
||||
name = "yellow beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#E0C14F" //Yellow
|
||||
|
||||
/obj/item/clothing/head/beanie/orange
|
||||
name = "orange beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#C67A4B" //orange
|
||||
|
||||
/obj/item/clothing/head/beanie/cyan
|
||||
name = "cyan beanie"
|
||||
icon_state = "beanie"
|
||||
color = "#54A3CE" //Cyan (Or close to it)
|
||||
|
||||
//Striped Beanies have unique sprites
|
||||
|
||||
/obj/item/clothing/head/beanie/christmas
|
||||
name = "christmas beanie"
|
||||
icon_state = "beaniechristmas"
|
||||
item_color = "beaniechristmas"
|
||||
|
||||
/obj/item/clothing/head/beanie/striped
|
||||
name = "striped beanie"
|
||||
icon_state = "beaniestriped"
|
||||
item_color = "beaniestriped"
|
||||
|
||||
/obj/item/clothing/head/beanie/stripedred
|
||||
name = "red striped beanie"
|
||||
icon_state = "beaniestripedred"
|
||||
item_color = "beaniestripedred"
|
||||
|
||||
/obj/item/clothing/head/beanie/stripedblue
|
||||
name = "blue striped beanie"
|
||||
icon_state = "beaniestripedblue"
|
||||
item_color = "beaniestripedblue"
|
||||
|
||||
/obj/item/clothing/head/beanie/stripedgreen
|
||||
name = "green striped beanie"
|
||||
icon_state = "beaniestripedgreen"
|
||||
item_color = "beaniestripedgreen"
|
||||
|
||||
/obj/item/clothing/head/beanie/durathread
|
||||
name = "durathread beanie"
|
||||
desc = "A beanie made from durathread, its resilient fibres provide some protection to the wearer."
|
||||
icon_state = "beaniedurathread"
|
||||
item_color = null
|
||||
armor = list(melee = 15, bullet = 5, laser = 15, energy = 5, bomb = 10, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/beanie/waldo
|
||||
name = "red striped bobble hat"
|
||||
desc = "If you're going on a worldwide hike, you'll need some cold protection."
|
||||
icon_state = "waldo_hat"
|
||||
item_color = "waldo_hat"
|
||||
|
||||
/obj/item/clothing/head/beanie/rasta
|
||||
name = "rastacap"
|
||||
desc = "Perfect for tucking in those dreadlocks."
|
||||
icon_state = "beanierasta"
|
||||
item_color = "beanierasta"
|
||||
@@ -227,6 +227,24 @@ obj/item/clothing/head/blob
|
||||
item_state = "knight_templar"
|
||||
armor = list(melee = 20, bullet = 7, laser = 2, energy = 2, bomb = 2, bio = 2, rad = 0)
|
||||
|
||||
/obj/item/clothing/head/helmet/skull
|
||||
name = "skull helmet"
|
||||
desc = "An intimidating tribal helmet, it doesn't look very comfortable."
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
flags_cover = HEADCOVERSEYES
|
||||
armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20)
|
||||
icon_state = "skull"
|
||||
item_state = "skull"
|
||||
strip_delay = 100
|
||||
|
||||
/obj/item/clothing/head/helmet/durathread
|
||||
name = "durathread helmet"
|
||||
desc = "A helmet made from durathread and leather."
|
||||
icon_state = "durathread"
|
||||
item_state = "durathread"
|
||||
armor = list(melee = 25, bullet = 10, laser = 20, energy = 10, bomb = 30, bio = 15, rad = 20)
|
||||
strip_delay = 60
|
||||
|
||||
//Commander
|
||||
/obj/item/clothing/head/helmet/ert/command
|
||||
name = "emergency response team commander helmet"
|
||||
|
||||
@@ -82,6 +82,13 @@
|
||||
desc = "A beret, an artists favorite headwear."
|
||||
icon_state = "beret"
|
||||
|
||||
/obj/item/clothing/head/beret/durathread
|
||||
name = "durathread beret"
|
||||
desc = "A beret made from durathread, its resilient fibres provide some protection to the wearer."
|
||||
icon_state = "beretdurathread"
|
||||
item_color = null
|
||||
armor = list(melee = 15, bullet = 5, laser = 15, energy = 5, bomb = 10, bio = 0, rad = 0)
|
||||
|
||||
//Security
|
||||
/obj/item/clothing/head/HoS
|
||||
name = "head of security cap"
|
||||
|
||||
@@ -483,6 +483,11 @@
|
||||
item_color = "black"
|
||||
desc = "It's a black bandana."
|
||||
|
||||
/obj/item/clothing/mask/bandana/durathread
|
||||
name = "durathread bandana"
|
||||
desc = "A bandana made from durathread, you wish it would provide some protection to its wearer, but it's far too thin..."
|
||||
icon_state = "banddurathread"
|
||||
|
||||
/obj/item/clothing/mask/cursedclown
|
||||
name = "cursed clown mask"
|
||||
desc = "This is a very, very odd looking mask."
|
||||
|
||||
@@ -243,30 +243,55 @@
|
||||
icon_state = "bsing"
|
||||
put_on_delay = 50
|
||||
|
||||
/obj/item/clothing/shoes/cowboyboots
|
||||
/obj/item/clothing/shoes/cowboy
|
||||
name = "cowboy boots"
|
||||
desc = "A pair a' brown boots."
|
||||
icon_state = "cowboyboots"
|
||||
item_color = "cowboyboots"
|
||||
icon_state = "cowboy_brown"
|
||||
item_color = "cowboy_brown"
|
||||
|
||||
/obj/item/clothing/shoes/cowboyboots/black
|
||||
/obj/item/clothing/shoes/cowboy/black
|
||||
name = "black cowboy boots"
|
||||
desc = "A pair a' black rustlers' boots"
|
||||
icon_state = "cowboyboots_black"
|
||||
item_color = "cowboyboots_black"
|
||||
icon_state = "cowboy_black"
|
||||
item_color = "cowboy_black"
|
||||
|
||||
/obj/item/clothing/shoes/cowboyboots/white
|
||||
/obj/item/clothing/shoes/cowboy/white
|
||||
name = "white cowboy boots"
|
||||
desc = "For the rancher in us all."
|
||||
icon_state = "cowboyboots_white"
|
||||
item_color = "cowboyboots_white"
|
||||
icon_state = "cowboy_white"
|
||||
item_color = "cowboy_white"
|
||||
|
||||
/obj/item/clothing/shoes/cowboyboots/pink
|
||||
/obj/item/clothing/shoes/cowboy/fancy
|
||||
name = "bilton wrangler boots"
|
||||
desc = "A pair of authentic haute couture boots from Japanifornia. You doubt they have ever been close to cattle."
|
||||
icon_state = "cowboy_fancy"
|
||||
item_color = "cowboy_fancy"
|
||||
|
||||
/obj/item/clothing/shoes/cowboy/pink
|
||||
name = "pink cowgirl boots"
|
||||
desc = "For a Rustlin' tustlin' cowgirl."
|
||||
icon_state = "cowboyboots_pink"
|
||||
item_color = "cowboyboots_pink"
|
||||
|
||||
/obj/item/clothing/shoes/cowboy/lizard
|
||||
name = "lizard skin boots"
|
||||
desc = "You can hear a faint hissing from inside the boots; you hope it is just a mournful ghost."
|
||||
icon_state = "lizardboots_green"
|
||||
|
||||
/obj/item/clothing/shoes/cowboy/lizardmasterwork
|
||||
name = "\improper Hugs-The-Feet lizard skin boots"
|
||||
desc = "A pair of masterfully crafted lizard skin boots. Finally a good application for the station's most bothersome inhabitants."
|
||||
icon_state = "lizardboots_blue"
|
||||
|
||||
/obj/effect/spawner/lootdrop/lizardboots
|
||||
name = "random lizard boot quality"
|
||||
desc = "Which ever gets picked, the lizard race loses"
|
||||
icon = 'icons/obj/clothing/shoes.dmi'
|
||||
icon_state = "lizardboots_green"
|
||||
loot = list(
|
||||
/obj/item/clothing/shoes/cowboy/lizard = 7,
|
||||
/obj/item/clothing/shoes/cowboy/lizardmasterwork = 1)
|
||||
|
||||
/obj/item/clothing/shoes/footwraps
|
||||
name = "cloth footwraps"
|
||||
desc = "A roll of treated canvas used for wrapping claws or paws."
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
sprite_sheets = null
|
||||
actions_types = list()
|
||||
has_camera = 0
|
||||
has_camera = FALSE
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal
|
||||
name = "paranormal response team suit"
|
||||
@@ -208,20 +208,26 @@
|
||||
name = "inquisitor's helmet"
|
||||
icon_state = "hardsuit0-inquisitor"
|
||||
item_color = "inquisitor"
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
|
||||
name = "inquisitor's hardsuit"
|
||||
icon_state = "hardsuit-inquisitor"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
|
||||
slowdown = 0
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker
|
||||
name = "champion's helmet"
|
||||
desc = "Peering into the eyes of the helmet is enough to seal damnation."
|
||||
icon_state = "hardsuit0-berserker"
|
||||
item_color = "berserker"
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/berserker
|
||||
name = "champion's hardsuit"
|
||||
desc = "Voices echo from the hardsuit, driving the user insane."
|
||||
icon_state = "hardsuit-berserker"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
|
||||
slowdown = 0
|
||||
@@ -14,7 +14,7 @@
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_light)
|
||||
|
||||
//Species-specific stuff.
|
||||
species_restricted = list("exclude","Diona","Wryn")
|
||||
species_restricted = list("exclude","Wryn")
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||
"Tajaran" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
@@ -93,9 +93,10 @@
|
||||
var/obj/item/clothing/head/helmet/space/hardsuit/helmet
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet)
|
||||
var/helmettype = /obj/item/clothing/head/helmet/space/hardsuit
|
||||
var/obj/item/tank/jetpack/suit/jetpack = null
|
||||
|
||||
hide_tail_by_species = list("Vox" , "Vulpkanin" , "Unathi" , "Tajaran")
|
||||
species_restricted = list("exclude","Diona","Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
@@ -112,10 +113,59 @@
|
||||
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/suits.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/New()
|
||||
if(jetpack && ispath(jetpack))
|
||||
jetpack = new jetpack(src)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/attack_self(mob/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/tank/jetpack/suit))
|
||||
if(jetpack)
|
||||
to_chat(user, "<span class='warning'>[src] already has a jetpack installed.</span>")
|
||||
return
|
||||
if(src == user.get_item_by_slot(slot_wear_suit)) //Make sure the player is not wearing the suit before applying the upgrade.
|
||||
to_chat(user, "<span class='warning'>You cannot install the upgrade to [src] while wearing it.</span>")
|
||||
return
|
||||
|
||||
if(user.unEquip(I))
|
||||
I.forceMove(src)
|
||||
jetpack = I
|
||||
to_chat(user, "<span class='notice'>You successfully install the jetpack into [src].</span>")
|
||||
return
|
||||
else if(isscrewdriver(I))
|
||||
if(!jetpack)
|
||||
to_chat(user, "<span class='warning'>[src] has no jetpack installed.</span>")
|
||||
return
|
||||
if(src == user.get_item_by_slot(slot_wear_suit))
|
||||
to_chat(user, "<span class='warning'>You cannot remove the jetpack from [src] while wearing it.</span>")
|
||||
return
|
||||
|
||||
jetpack.turn_off(user)
|
||||
jetpack.forceMove(drop_location())
|
||||
jetpack = null
|
||||
to_chat(user, "<span class='notice'>You successfully remove the jetpack from [src].</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot)
|
||||
..()
|
||||
if(jetpack)
|
||||
if(slot == slot_wear_suit)
|
||||
for(var/X in jetpack.actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(user)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/dropped(mob/user)
|
||||
..()
|
||||
if(jetpack)
|
||||
for(var/X in jetpack.actions)
|
||||
var/datum/action/A = X
|
||||
A.Remove(user)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot)
|
||||
if(slot == slot_wear_suit) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit.
|
||||
return 1
|
||||
@@ -178,6 +228,7 @@
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
|
||||
//Mining hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/mining
|
||||
@@ -291,6 +342,7 @@
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
@@ -438,6 +490,7 @@
|
||||
icon_state = "hardsuit-hos"
|
||||
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
sprite_sheets = null
|
||||
|
||||
//Singuloth armor
|
||||
@@ -522,6 +575,7 @@
|
||||
allowed = list(/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword/saber,/obj/item/restraints/handcuffs,/obj/item/tank)
|
||||
slowdown = 0
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
sprite_sheets = list(
|
||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
flags_inv = HIDEFACE
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/helmet.dmi',
|
||||
@@ -31,7 +31,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
allowed = list(/obj/item/tank, /obj/item/flashlight,/obj/item/gun/energy, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton,/obj/item/restraints/handcuffs)
|
||||
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
@@ -72,7 +72,7 @@
|
||||
allowed = list(/obj/item/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/tank,/obj/item/kitchen/knife/combat)
|
||||
armor = list(melee = 40, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 90, rad = 20)
|
||||
strip_delay = 120
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi'
|
||||
@@ -159,7 +159,7 @@
|
||||
icon_state = "paramedic-eva-helmet"
|
||||
item_state = "paramedic-eva-helmet"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/helmet.dmi',
|
||||
@@ -180,7 +180,7 @@
|
||||
item_state = "paramedic-eva"
|
||||
desc = "A brand new paramedic EVA suit. The nitrile seems a bit too thin to be space proof. Used for retrieving bodies in space."
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/suit.dmi',
|
||||
@@ -200,7 +200,7 @@
|
||||
item_state = "s_suit"
|
||||
desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies."
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
|
||||
@@ -223,7 +223,7 @@
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flash_protect = 0
|
||||
species_restricted = list("exclude", "Diona", "Wryn")
|
||||
species_restricted = list("exclude", "Wryn")
|
||||
|
||||
sprite_sheets = list(
|
||||
"Tajaran" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||
@@ -244,7 +244,7 @@
|
||||
desc = ". . ."
|
||||
icon_state = "spacemimehelmet"
|
||||
item_state = "spacemimehelmet"
|
||||
species_restricted = list("exclude","Diona","Vox","Wryn")
|
||||
species_restricted = list("exclude","Vox","Wryn")
|
||||
sprite_sheets = null
|
||||
sprite_sheets_obj = null
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
desc = ". . ."
|
||||
icon_state = "spacemime_suit"
|
||||
item_state = "spacemime_items"
|
||||
species_restricted = list("exclude","Diona","Vox","Wryn")
|
||||
species_restricted = list("exclude","Vox","Wryn")
|
||||
sprite_sheets = null
|
||||
sprite_sheets_obj = null
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
desc = "An EVA helmet specifically designed for the clown. SPESSHONK!"
|
||||
icon_state = "clownhelmet"
|
||||
item_state = "clownhelmet"
|
||||
species_restricted = list("exclude","Diona","Vox","Wryn")
|
||||
species_restricted = list("exclude","Vox","Wryn")
|
||||
sprite_sheets = null
|
||||
sprite_sheets_obj = null
|
||||
|
||||
@@ -274,7 +274,6 @@
|
||||
desc = "An EVA suit specifically designed for the clown. SPESSHONK!"
|
||||
icon_state = "spaceclown_suit"
|
||||
item_state = "spaceclown_items"
|
||||
species_restricted = list("exclude","Diona","Vox","Wryn")
|
||||
species_restricted = list("exclude","Vox","Wryn")
|
||||
sprite_sheets = null
|
||||
sprite_sheets_obj = null
|
||||
|
||||
@@ -209,6 +209,15 @@
|
||||
allowed = list(/obj/item/nullrod/claymore)
|
||||
armor = list(melee = 25, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/durathread
|
||||
name = "durathread vest"
|
||||
desc = "A vest made of durathread with strips of leather acting as trauma plates."
|
||||
icon_state = "durathread"
|
||||
item_state = "durathread"
|
||||
strip_delay = 60
|
||||
burn_state = FLAMMABLE
|
||||
armor = list(melee = 20, bullet = 10, laser = 30, energy = 5, bomb = 15, bio = 0, rad = 0)
|
||||
|
||||
/obj/item/clothing/suit/armor/bulletproof
|
||||
name = "Bulletproof Vest"
|
||||
desc = "A bulletproof vest that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
|
||||
@@ -528,14 +537,4 @@
|
||||
item_state = "bonearmor"
|
||||
blood_overlay_type = "armor"
|
||||
armor = list(melee = 35, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
|
||||
/obj/item/clothing/head/helmet/skull
|
||||
name = "skull helmet"
|
||||
desc = "An intimidating tribal helmet, it doesn't look very comfortable."
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
flags_cover = HEADCOVERSEYES
|
||||
armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20)
|
||||
icon_state = "skull"
|
||||
item_state = "skull"
|
||||
strip_delay = 100
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
@@ -1005,3 +1005,14 @@
|
||||
icon_state = "old_mantle"
|
||||
item_state = "old_mantle"
|
||||
|
||||
/obj/item/clothing/suit/ghost_sheet
|
||||
name = "ghost sheet"
|
||||
desc = "The hands float by themselves, so it's extra spooky."
|
||||
icon_state = "ghost_sheet"
|
||||
item_state = "ghost_sheet"
|
||||
throwforce = 0
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEGLOVES|HIDEEARS|HIDEFACE
|
||||
@@ -6,7 +6,8 @@
|
||||
/obj/item/clothing/suit/space/hardsuit/Destroy()
|
||||
if(helmet)
|
||||
helmet.suit = null
|
||||
qdel(helmet)
|
||||
QDEL_NULL(helmet)
|
||||
QDEL_NULL(jetpack)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/Destroy()
|
||||
|
||||
@@ -890,3 +890,10 @@
|
||||
item_color = "hawaiianblue"
|
||||
flags_size = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/misc/durathread
|
||||
name = "durathread jumpsuit"
|
||||
desc = "A jumpsuit made from durathread, its resilient fibres provide some protection to the wearer."
|
||||
icon_state = "durathread"
|
||||
item_state = "durathread"
|
||||
item_color = "durathread"
|
||||
armor = list(melee = 10, bullet = 0, laser = 10, energy = 0, bomb = 5, bio = 0, rad = 0)
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/personal_crafting
|
||||
var/busy
|
||||
var/viewing_category = 1 //typical powergamer starting on the Weapons tab
|
||||
var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL)
|
||||
var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_CLOTHING,CAT_MISC,CAT_PRIMAL)
|
||||
var/display_craftable_only = FALSE
|
||||
var/display_compact = TRUE
|
||||
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
/datum/crafting_recipe/durathread_vest
|
||||
name = "Durathread Vest"
|
||||
result = /obj/item/clothing/suit/armor/vest/durathread
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 5,
|
||||
/obj/item/stack/sheet/leather = 4)
|
||||
time = 50
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_helmet
|
||||
name = "Durathread Helmet"
|
||||
result = /obj/item/clothing/head/helmet/durathread
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 4,
|
||||
/obj/item/stack/sheet/leather = 5)
|
||||
time = 40
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_jumpsuit
|
||||
name = "Durathread Jumpsuit"
|
||||
result = /obj/item/clothing/under/misc/durathread
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 4)
|
||||
time = 40
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_beret
|
||||
name = "Durathread Beret"
|
||||
result = /obj/item/clothing/head/beret/durathread
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 2)
|
||||
time = 40
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_beanie
|
||||
name = "Durathread Beanie"
|
||||
result = /obj/item/clothing/head/beanie/durathread
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 2)
|
||||
time = 40
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/durathread_bandana
|
||||
name = "Durathread Bandana"
|
||||
result = /obj/item/clothing/mask/bandana/durathread
|
||||
reqs = list(/obj/item/stack/sheet/durathread = 1)
|
||||
time = 25
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/fannypack
|
||||
name = "Fannypack"
|
||||
result = /obj/item/storage/belt/fannypack
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/leather = 1)
|
||||
time = 20
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunsec
|
||||
name = "Security HUDsunglasses"
|
||||
result = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunsecremoval
|
||||
name = "Security HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunmed
|
||||
name = "Medical HUDsunglasses"
|
||||
result = /obj/item/clothing/glasses/hud/health/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsunmedremoval
|
||||
name = "Medical HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsundiag
|
||||
name = "Diagnostic HUDsunglasses"
|
||||
result = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/hudsundiagremoval
|
||||
name = "Diagnostic HUD removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/hud/diagnostic/sunglasses = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/beergoggles
|
||||
name = "Beer Goggles"
|
||||
result = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/science = 1,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/beergogglesremoval
|
||||
name = "Beer Goggles removal"
|
||||
result = /obj/item/clothing/glasses/sunglasses
|
||||
time = 20
|
||||
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
|
||||
reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/ghostsheet
|
||||
name = "Ghost Sheet"
|
||||
result = /obj/item/clothing/suit/ghost_sheet
|
||||
time = 5
|
||||
tools = list(/obj/item/wirecutters)
|
||||
reqs = list(/obj/item/bedsheet = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/cowboyboots
|
||||
name = "Cowboy Boots"
|
||||
result = /obj/item/clothing/shoes/cowboy
|
||||
reqs = list(/obj/item/stack/sheet/leather = 2)
|
||||
time = 45
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/lizardboots
|
||||
name = "Lizard Skin Boots"
|
||||
result = /obj/effect/spawner/lootdrop/lizardboots
|
||||
reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1, /obj/item/stack/sheet/leather = 1)
|
||||
time = 60
|
||||
category = CAT_CLOTHING
|
||||
@@ -178,7 +178,7 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "book_berner_1"
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/fake/fluff/kaki //Rapidvalj: Kakicharakiti
|
||||
/obj/item/clothing/glasses/sunglasses_fake/fluff/kaki //Rapidvalj: Kakicharakiti
|
||||
name = "broken thermonocle"
|
||||
desc = "A weathered Vox thermonocle, doesn't seem to work anymore."
|
||||
icon_state = "thermoncle"
|
||||
@@ -1212,16 +1212,16 @@
|
||||
|
||||
//////////// Sets ////////////
|
||||
// Fox P McCloud: Fox McCloud
|
||||
/obj/item/clothing/suit/jacket/fluff/fox
|
||||
/obj/item/clothing/suit/storage/fox
|
||||
name = "Aeronautics Jacket"
|
||||
desc = "An aviator styled jacket made from a peculiar material; this one seems very old."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "fox_jacket"
|
||||
item_state = "fox_jacket"
|
||||
ignore_suitadjust = TRUE
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
sprite_sheets = null
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/projectile/automatic/pistol, /obj/item/gun/projectile/revolver, /obj/item/gun/projectile/revolver/detective)
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
||||
|
||||
/obj/item/clothing/under/fluff/fox
|
||||
name = "Aeronautics Jumpsuit"
|
||||
@@ -1232,6 +1232,12 @@
|
||||
item_color = "fox_suit"
|
||||
displays_id = FALSE //still appears on examine; this is pure fluff.
|
||||
|
||||
/obj/item/clothing/suit/storage/fox/miljacket_desert
|
||||
name = "rugged military jacket"
|
||||
desc = "A rugged brown military jacket with a stylized 'A' embroidered on the back. It seems very old, yet is in near mint condition. Has a tag on the inside collar signed 'Fox McCloud'."
|
||||
icon_state = "fox_coat"
|
||||
item_color = "fox_coat"
|
||||
|
||||
/obj/item/toy/plushie/fluff/fox
|
||||
name = "orange fox plushie"
|
||||
desc = "A cute, soft, fuzzy, fluffy, and cuddly plushie. This has a small tag on it that is signed 'Fox McCloud'."
|
||||
@@ -1262,12 +1268,6 @@
|
||||
/obj/item/toy/plushie/fluff/fox/ui_action_click()
|
||||
change_color()
|
||||
|
||||
/obj/item/clothing/suit/jacket/miljacket/desert/fox
|
||||
name = "rugged military jacket"
|
||||
desc = "A rugged brown military jacket with a stylized 'A' embroidered on the back. It seems very old, yet is in near mint condition. Has a tag on the inside collar signed 'Fox McCloud'."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "fox_coat"
|
||||
item_color = "fox_coat"
|
||||
|
||||
// TheFlagbearer: Willow Walker
|
||||
/obj/item/clothing/under/fluff/arachno_suit
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/obj/item/seeds/cotton
|
||||
name = "pack of cotton seeds"
|
||||
desc = "A pack of seeds that'll grow into a cotton plant. Assistants make good free labor if neccesary."
|
||||
icon_state = "seed-cotton"
|
||||
species = "cotton"
|
||||
plantname = "Cotton"
|
||||
icon_harvest = "cotton-harvest"
|
||||
product = /obj/item/grown/cotton
|
||||
lifespan = 35
|
||||
endurance = 25
|
||||
maturation = 15
|
||||
production = 1
|
||||
yield = 2
|
||||
potency = 50
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing.dmi'
|
||||
icon_dead = "cotton-dead"
|
||||
mutatelist = list(/obj/item/seeds/cotton/durathread)
|
||||
|
||||
/obj/item/grown/cotton
|
||||
seed = /obj/item/seeds/cotton
|
||||
name = "cotton bundle"
|
||||
desc = "A fluffy bundle of cotton."
|
||||
icon_state = "cotton"
|
||||
force = 0
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throw_speed = 2
|
||||
throw_range = 3
|
||||
attack_verb = list("pomfed")
|
||||
var/cotton_type = /obj/item/stack/sheet/cotton
|
||||
var/cotton_name = "raw cotton"
|
||||
|
||||
/obj/item/grown/cotton/attack_self(mob/user)
|
||||
user.show_message("<span class='notice'>You pull some [cotton_name] out of the [name]!</span>", 1)
|
||||
var/seed_modifier = 0
|
||||
if(seed)
|
||||
seed_modifier = round(seed.potency / 25)
|
||||
var/obj/item/stack/cotton = new cotton_type(user.loc, 1 + seed_modifier)
|
||||
var/old_cotton_amount = cotton.amount
|
||||
for(var/obj/item/stack/ST in user.loc)
|
||||
if(ST != cotton && istype(ST, cotton_type) && ST.amount < ST.max_amount)
|
||||
ST.attackby(cotton, user)
|
||||
if(cotton.amount > old_cotton_amount)
|
||||
to_chat(user, "<span class='notice'>You add the newly-formed [cotton_name] to the stack. It now contains [cotton.amount] [cotton_name].</span>")
|
||||
qdel(src)
|
||||
|
||||
//reinforced mutated variant
|
||||
/obj/item/seeds/cotton/durathread
|
||||
name = "pack of durathread seeds"
|
||||
desc = "A pack of seeds that'll grow into an extremely durable thread that could easily rival plasteel if woven properly."
|
||||
icon_state = "seed-durathread"
|
||||
species = "durathread"
|
||||
plantname = "Durathread"
|
||||
icon_harvest = "durathread-harvest"
|
||||
product = /obj/item/grown/cotton/durathread
|
||||
lifespan = 80
|
||||
endurance = 50
|
||||
maturation = 15
|
||||
production = 1
|
||||
yield = 2
|
||||
potency = 50
|
||||
growthstages = 3
|
||||
growing_icon = 'icons/obj/hydroponics/growing.dmi'
|
||||
icon_dead = "cotton-dead"
|
||||
|
||||
/obj/item/grown/cotton/durathread
|
||||
seed = /obj/item/seeds/cotton/durathread
|
||||
name = "durathread bundle"
|
||||
desc = "A tough bundle of durathread, good luck unraveling this."
|
||||
icon_state = "durathread"
|
||||
force = 5
|
||||
throwforce = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
throw_speed = 2
|
||||
throw_range = 3
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
cotton_type = /obj/item/stack/sheet/cotton/durathread
|
||||
cotton_name = "raw durathread"
|
||||
@@ -88,7 +88,7 @@
|
||||
make_podman = 0
|
||||
|
||||
if(make_podman) //all conditions met!
|
||||
var/mob/living/carbon/human/diona/podman = new /mob/living/carbon/human/diona(parent.loc)
|
||||
var/mob/living/carbon/human/pod_diona/podman = new /mob/living/carbon/human/pod_diona(parent.loc)
|
||||
if(realName)
|
||||
podman.real_name = realName
|
||||
mind.transfer_to(podman)
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
/obj/item/seeds/redbeet
|
||||
name = "pack of redbeet seeds"
|
||||
desc = "These seeds grow into red beet producing plants."
|
||||
icon_state = "seedredbeet"
|
||||
icon_state = "seed-redbeet"
|
||||
species = "redbeet"
|
||||
plantname = "Red Beet Plants"
|
||||
product = /obj/item/reagent_containers/food/snacks/grown/redbeet
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
if(istype(T, denied_type) || istype(src, T.denied_type))
|
||||
to_chat(user, "<span class='warning'>You can't seem to attach [src] to [H]. Maybe remove a few trophies?</span>")
|
||||
return FALSE
|
||||
if(!user.drop_item())
|
||||
if(!user.unEquip(src))
|
||||
return
|
||||
forceMove(H)
|
||||
H.trophies += src
|
||||
|
||||
@@ -73,9 +73,10 @@
|
||||
icon = 'icons/obj/mobcap.dmi'
|
||||
icon_state = "mobcap0"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throw_range = 20
|
||||
throw_range = 7
|
||||
var/mob/living/simple_animal/captured = null
|
||||
var/colorindex = 0
|
||||
var/capture_type = SENTIENCE_ORGANIC //So you can't capture boss monsters or robots with it
|
||||
|
||||
/obj/item/mobcapsule/Destroy()
|
||||
if(captured)
|
||||
@@ -83,26 +84,25 @@
|
||||
QDEL_NULL(captured)
|
||||
return ..()
|
||||
|
||||
/obj/item/mobcapsule/attack(var/atom/A, mob/user, prox_flag)
|
||||
if(!istype(A, /mob/living/simple_animal) || isbot(A))
|
||||
return ..()
|
||||
capture(A, user)
|
||||
return 1
|
||||
/obj/item/mobcapsule/attack(mob/living/simple_animal/S, mob/user, prox_flag)
|
||||
if(istype(S) && S.sentience_type == capture_type)
|
||||
capture(S, user)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/mobcapsule/proc/capture(var/mob/target, var/mob/U as mob)
|
||||
var/mob/living/simple_animal/T = target
|
||||
/obj/item/mobcapsule/proc/capture(mob/living/simple_animal/S, mob/living/M)
|
||||
if(captured)
|
||||
to_chat(U, "<span class='notice'>Capture failed!</span>: The capsule already has a mob registered to it!")
|
||||
to_chat(M, "<span class='notice'>Capture failed!</span>: The capsule already has a mob registered to it!")
|
||||
else
|
||||
if(istype(T) && "neutral" in T.faction)
|
||||
T.forceMove(src)
|
||||
T.name = "[U.name]'s [initial(T.name)]"
|
||||
T.cancel_camera()
|
||||
name = "Lazarus Capsule: [initial(T.name)]"
|
||||
to_chat(U, "<span class='notice'>You placed a [T.name] inside the Lazarus Capsule!</span>")
|
||||
captured = T
|
||||
if("neutral" in S.faction)
|
||||
S.forceMove(src)
|
||||
S.name = "[M.name]'s [initial(S.name)]"
|
||||
S.cancel_camera()
|
||||
name = "Lazarus Capsule: [initial(S.name)]"
|
||||
to_chat(M, "<span class='notice'>You placed a [S.name] inside the Lazarus Capsule!</span>")
|
||||
captured = S
|
||||
else
|
||||
to_chat(U, "You can't capture that mob!")
|
||||
to_chat(M, "You can't capture that mob!")
|
||||
|
||||
/obj/item/mobcapsule/throw_impact(atom/A, mob/user)
|
||||
..()
|
||||
|
||||
@@ -77,6 +77,21 @@
|
||||
|
||||
add_fingerprint(M)
|
||||
|
||||
//Book of Babel
|
||||
|
||||
/obj/item/book_of_babel
|
||||
name = "Book of Babel"
|
||||
desc = "An ancient tome written in countless tongues."
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "book1"
|
||||
w_class = 2
|
||||
|
||||
/obj/item/book_of_babel/attack_self(mob/user)
|
||||
to_chat(user, "You flip through the pages of the book, quickly and conveniently learning every language in existence. Somewhat less conveniently, the aging book crumbles to dust in the process. Whoops.")
|
||||
user.grant_all_languages()
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(user))
|
||||
qdel(src)
|
||||
|
||||
//Potion of Flight: as we do not have the "Angel" species this currently does not work.
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/potion
|
||||
@@ -117,6 +132,30 @@
|
||||
H.emote("scream")
|
||||
..()*/
|
||||
|
||||
/obj/item/jacobs_ladder
|
||||
name = "jacob's ladder"
|
||||
desc = "A celestial ladder that violates the laws of physics."
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "ladder00"
|
||||
|
||||
/obj/item/jacobs_ladder/attack_self(mob/user)
|
||||
var/turf/T = get_turf(src)
|
||||
var/ladder_x = T.x
|
||||
var/ladder_y = T.y
|
||||
to_chat(user, "<span class='notice'>You unfold the ladder. It extends much farther than you were expecting.</span>")
|
||||
var/last_ladder = null
|
||||
for(var/i in 1 to world.maxz)
|
||||
if(is_admin_level(i) || is_away_level(i))
|
||||
continue
|
||||
var/turf/T2 = locate(ladder_x, ladder_y, i)
|
||||
last_ladder = new /obj/structure/ladder/unbreakable/jacob(T2, null, last_ladder)
|
||||
qdel(src)
|
||||
|
||||
// Inherit from unbreakable but don't set ID, to suppress the default Z linkage
|
||||
/obj/structure/ladder/unbreakable/jacob
|
||||
name = "jacob's ladder"
|
||||
desc = "An indestructible celestial ladder that violates the laws of physics."
|
||||
|
||||
//Boat
|
||||
|
||||
/obj/vehicle/lavaboat
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(!add_loot)
|
||||
return
|
||||
|
||||
var/loot = rand(1,25)
|
||||
var/loot = rand(1, 26)
|
||||
switch(loot)
|
||||
if(1)
|
||||
new /obj/item/shared_storage/red(src)
|
||||
@@ -48,7 +48,7 @@
|
||||
if(11)
|
||||
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/berserker(src)
|
||||
if(12)
|
||||
new /obj/item/sord(src)
|
||||
new /obj/item/jacobs_ladder(src)
|
||||
if(13)
|
||||
new /obj/item/nullrod/scythe/talking(src)
|
||||
if(14)
|
||||
@@ -78,6 +78,8 @@
|
||||
if(24)
|
||||
new /obj/item/spellbook/oneuse/summonitem(src)
|
||||
if(25)
|
||||
new /obj/item/book_of_babel(src)
|
||||
if(26)
|
||||
new /obj/item/borg/upgrade/modkit/lifesteal(src)
|
||||
new /obj/item/bedsheet/cult(src)
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
new /datum/data/mining_equipment("Lazarus Injector", /obj/item/lazarus_injector, 1000),
|
||||
new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
|
||||
new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffel/mining_conscript, 1500),
|
||||
new /datum/data/mining_equipment("Jetpack", /obj/item/tank/jetpack/carbondioxide/mining, 2000),
|
||||
new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/tank/jetpack/suit, 2000),
|
||||
new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
|
||||
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
|
||||
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
|
||||
/obj/structure/closet/secure_closet/miner/New()
|
||||
..()
|
||||
// new /obj/item/stack/sheet/mineral/sandbags(src, 5)
|
||||
// new /obj/item/storage/box/emptysandbags(src)
|
||||
new /obj/item/stack/sheet/mineral/sandbags(src, 5)
|
||||
new /obj/item/storage/box/emptysandbags(src)
|
||||
new /obj/item/shovel(src)
|
||||
new /obj/item/pickaxe/mini(src)
|
||||
new /obj/item/radio/headset/headset_cargo/mining(src)
|
||||
|
||||
@@ -762,6 +762,8 @@
|
||||
desc = "Bark bark bark."
|
||||
key = "vu"
|
||||
|
||||
|
||||
/mob/proc/grant_all_languages()
|
||||
for(var/la in GLOB.all_languages)
|
||||
add_language(la)
|
||||
|
||||
#undef SCRAMBLE_CACHE_LEN
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/mob/living/carbon/water_act(volume, temperature, source, method = TOUCH)
|
||||
. = ..()
|
||||
if(volume > 10) //anything over 10 volume will make the mob wetter.
|
||||
if(volume > 10) // Anything over 10 volume will make the mob wetter.
|
||||
wetlevel = min(wetlevel + 1,5)
|
||||
|
||||
/mob/living/carbon/attackby(obj/item/I, mob/user, params)
|
||||
|
||||
@@ -390,7 +390,7 @@
|
||||
S = H.glasses
|
||||
return !istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/security) && S && S.read_only
|
||||
if("medical")
|
||||
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(H.glasses, /obj/item/clothing/glasses/hud/health/health_advanced) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/medical)
|
||||
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/medical)
|
||||
else
|
||||
return 0
|
||||
else if(isrobot(M) || isAI(M)) //Stand-in/Stopgap to prevent pAIs from freely altering records, pending a more advanced Records system
|
||||
|
||||
@@ -106,6 +106,9 @@
|
||||
/mob/living/carbon/human/diona/Initialize(mapload)
|
||||
..(mapload, /datum/species/diona)
|
||||
|
||||
/mob/living/carbon/human/pod_diona/Initialize(mapload)
|
||||
..(mapload, /datum/species/diona/pod)
|
||||
|
||||
/mob/living/carbon/human/machine/Initialize(mapload)
|
||||
..(mapload, /datum/species/machine)
|
||||
|
||||
@@ -165,7 +168,11 @@
|
||||
show_stat_emergency_shuttle_eta()
|
||||
|
||||
if(client.statpanel == "Status")
|
||||
if(locate(/obj/item/assembly/health) in src)
|
||||
var/total_user_contents = GetAllContents() // cache it
|
||||
if(locate(/obj/item/gps) in total_user_contents)
|
||||
var/turf/T = get_turf(src)
|
||||
stat(null, "GPS: [COORD(T)]")
|
||||
if(locate(/obj/item/assembly/health) in total_user_contents)
|
||||
stat(null, "Health: [health]")
|
||||
if(internal)
|
||||
if(!internal.air_contents)
|
||||
@@ -849,7 +856,7 @@
|
||||
return
|
||||
var/read = 0
|
||||
var/perpname = get_visible_name(TRUE)
|
||||
|
||||
|
||||
for(var/datum/data/record/E in data_core.general)
|
||||
if(E.fields["name"] == perpname)
|
||||
for(var/datum/data/record/R in data_core.medical)
|
||||
@@ -1096,17 +1103,22 @@
|
||||
var/limb_path = organ_data["path"]
|
||||
var/obj/item/organ/external/O = new limb_path(temp_holder)
|
||||
if(H.get_limb_by_name(O.name)) //Check to see if the user already has an limb with the same name as the 'missing limb'. If they do, skip regrowth.
|
||||
continue //In an example, this will prevent duplication of the mob's right arm if the mob is a Human and they have a Diona right arm, since,
|
||||
//while the limb with the name 'right_arm' the mob has may not be listed in their species' bodyparts definition, it is still viable and has the appropriate limb name.
|
||||
continue //In an example, this will prevent duplication of the mob's right arm if the mob is a Human and they have a Diona right arm, since,
|
||||
//while the limb with the name 'right_arm' the mob has may not be listed in their species' bodyparts definition, it is still viable and has the appropriate limb name.
|
||||
else
|
||||
O = new limb_path(H) //Create the limb on the player.
|
||||
O.owner = H
|
||||
H.bodyparts |= H.bodyparts_by_name[O.limb_name]
|
||||
if(O.body_part == HEAD) //They're sprouting a fresh head so lets hook them up with their genetic stuff so their new head looks like the original.
|
||||
H.UpdateAppearance()
|
||||
|
||||
//Replacing lost organs with the species default.
|
||||
temp_holder = new /mob/living/carbon/human()
|
||||
for(var/index in H.dna.species.has_organ)
|
||||
var/organ = H.dna.species.has_organ[index]
|
||||
var/list/species_organs = H.dna.species.has_organ.Copy() //Compile a list of species organs and tack on the mutantears afterward.
|
||||
if(H.dna.species.mutantears)
|
||||
species_organs["ears"] = H.dna.species.mutantears
|
||||
for(var/index in species_organs)
|
||||
var/organ = species_organs[index]
|
||||
if(!(organ in types_of_int_organs)) //If the mob is missing this particular organ...
|
||||
var/obj/item/organ/internal/I = new organ(temp_holder) //Create the organ inside our holder so we can check it before implantation.
|
||||
if(H.get_organ_slot(I.slot)) //Check to see if the user already has an organ in the slot the 'missing organ' belongs to. If they do, skip implantation.
|
||||
@@ -1470,12 +1482,12 @@
|
||||
var/obj/item/organ/internal/eyes/eyes = get_int_organ(/obj/item/organ/internal/eyes)
|
||||
var/obj/item/organ/internal/cyberimp/eyes/eye_implant = get_int_organ(/obj/item/organ/internal/cyberimp/eyes)
|
||||
if(istype(dna.species) && dna.species.eyes)
|
||||
var/icon/eyes_icon = new/icon('icons/mob/human_face.dmi', dna.species.eyes)
|
||||
var/icon/eyes_icon = new /icon('icons/mob/human_face.dmi', dna.species.eyes)
|
||||
if(eye_implant) //Eye implants override native DNA eye colo(u)r
|
||||
eyes_icon = eye_implant.generate_icon()
|
||||
else if(eyes)
|
||||
eyes_icon = eyes.generate_icon()
|
||||
else
|
||||
else //Error 404: Eyes not found!
|
||||
eyes_icon.Blend("#800000", ICON_ADD)
|
||||
|
||||
return eyes_icon
|
||||
@@ -1484,8 +1496,8 @@
|
||||
var/obj/item/organ/external/head/head_organ = get_organ("head")
|
||||
var/datum/sprite_accessory/hair/hair_style = GLOB.hair_styles_full_list[head_organ.h_style]
|
||||
var/icon/hair = new /icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
var/mutable_appearance/MA = mutable_appearance(get_icon_difference(get_eyecon(), hair), layer = LIGHTING_LAYER + 1)
|
||||
MA.plane = LIGHTING_PLANE
|
||||
var/mutable_appearance/MA = mutable_appearance(get_icon_difference(get_eyecon(), hair), layer = ABOVE_LIGHTING_LAYER)
|
||||
MA.plane = ABOVE_LIGHTING_PLANE
|
||||
return MA //Cut the hair's pixels from the eyes icon so eyes covered by bangs stay hidden even while on a higher layer.
|
||||
|
||||
/*Used to check if eyes should shine in the dark. Returns the image of the eyes on the layer where they will appear to shine.
|
||||
|
||||
@@ -202,6 +202,16 @@
|
||||
amount = amount * dna.species.tox_mod
|
||||
. = ..()
|
||||
|
||||
/mob/living/carbon/human/adjustStaminaLoss(amount, updating = TRUE)
|
||||
if(dna.species && amount > 0)
|
||||
amount = amount * dna.species.stamina_mod
|
||||
. = ..()
|
||||
|
||||
/mob/living/carbon/human/setStaminaLoss(amount, updating = TRUE)
|
||||
if(dna.species && amount > 0)
|
||||
amount = amount * dna.species.stamina_mod
|
||||
. = ..()
|
||||
|
||||
////////////////////////////////////////////
|
||||
|
||||
//Returns a list of damaged organs
|
||||
|
||||
@@ -11,10 +11,11 @@
|
||||
|
||||
//Do we have a working jetpack?
|
||||
var/obj/item/tank/jetpack/thrust
|
||||
if(istype(back,/obj/item/tank/jetpack))
|
||||
if(istype(back, /obj/item/tank/jetpack))
|
||||
thrust = back
|
||||
else if(istype(s_store,/obj/item/tank/jetpack))
|
||||
thrust = s_store
|
||||
else if(istype(wear_suit, /obj/item/clothing/suit/space/hardsuit))
|
||||
var/obj/item/clothing/suit/space/hardsuit/C = wear_suit
|
||||
thrust = C.jetpack
|
||||
else if(istype(back,/obj/item/rig))
|
||||
var/obj/item/rig/rig = back
|
||||
for(var/obj/item/rig_module/maneuvering_jets/module in rig.installed_modules)
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
var/oxy_mod = 1 // Oxy damage reduction/amplification
|
||||
var/clone_mod = 1 // Clone damage reduction/amplification
|
||||
var/brain_mod = 1 // Brain damage damage reduction/amplification
|
||||
var/stamina_mod = 1
|
||||
var/stun_mod = 1 // If a species is more/less impacated by stuns/weakens/paralysis
|
||||
|
||||
var/blood_damage_type = OXY //What type of damage does this species take if it's low on blood?
|
||||
@@ -733,8 +734,8 @@ It'll return null if the organ doesn't correspond, so include null checks when u
|
||||
H.sync_lighting_plane_alpha()
|
||||
|
||||
/datum/species/proc/water_act(mob/living/carbon/human/M, volume, temperature, source, method = TOUCH)
|
||||
if(abs(temperature - M.bodytemperature) > 10) //If our water and mob temperature varies by more than 10K, cool or/ heat them appropriately
|
||||
M.bodytemperature = (temperature + M.bodytemperature) * 0.5 //Approximation for gradual heating or cooling
|
||||
if(abs(temperature - M.bodytemperature) > 10) // If our water and mob temperature varies by more than 10K, cool or/ heat them appropriately.
|
||||
M.bodytemperature = (temperature + M.bodytemperature) * 0.5 // Approximation for gradual heating or cooling.
|
||||
|
||||
/datum/species/proc/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H) //return TRUE if hit, FALSE if stopped/reflected/etc
|
||||
return TRUE
|
||||
|
||||
@@ -7,21 +7,11 @@
|
||||
speech_sounds = list('sound/voice/dionatalk1.ogg') //Credit https://www.youtube.com/watch?v=ufnvlRjsOTI [0:13 - 0:16]
|
||||
speech_chance = 20
|
||||
unarmed_type = /datum/unarmed_attack/diona
|
||||
//primitive_form = "Nymph"
|
||||
slowdown = 5
|
||||
remains_type = /obj/effect/decal/cleanable/ash
|
||||
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = -1
|
||||
|
||||
cold_level_1 = 50
|
||||
cold_level_2 = -1
|
||||
cold_level_3 = -1
|
||||
|
||||
heat_level_1 = 300
|
||||
heat_level_2 = 340
|
||||
heat_level_3 = 400
|
||||
burn_mod = 1.25
|
||||
heatmod = 1.5
|
||||
var/pod = FALSE //did they come from a pod? If so, they're stronger than normal Diona.
|
||||
|
||||
blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
|
||||
species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
|
||||
@@ -31,16 +21,14 @@
|
||||
even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \
|
||||
water and other radiation."
|
||||
|
||||
species_traits = list(NO_BREATHE, RADIMMUNE, IS_PLANT, NO_BLOOD, NO_PAIN)
|
||||
dies_at_threshold = TRUE
|
||||
species_traits = list(IS_PLANT)
|
||||
clothing_flags = HAS_SOCKS
|
||||
default_hair_colour = "#000000"
|
||||
has_gender = FALSE
|
||||
dietflags = 0 //Diona regenerate nutrition in light and water, no diet necessary
|
||||
taste_sensitivity = TASTE_SENSITIVITY_NO_TASTE
|
||||
dietflags = DIET_HERB //Diona regenerate nutrition in light and water, no diet necessary, but if they must, they eat other plants *scream
|
||||
taste_sensitivity = TASTE_SENSITIVITY_DULL
|
||||
skinned_type = /obj/item/stack/sheet/wood
|
||||
|
||||
body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not
|
||||
blood_color = "#004400"
|
||||
flesh_color = "#907E4A"
|
||||
butt_sprite = "diona"
|
||||
@@ -49,6 +37,7 @@
|
||||
|
||||
has_organ = list(
|
||||
"nutrient channel" = /obj/item/organ/internal/liver/diona,
|
||||
"respiratory vacuoles" = /obj/item/organ/internal/lungs/diona,
|
||||
"neural strata" = /obj/item/organ/internal/heart/diona,
|
||||
"receptor node" = /obj/item/organ/internal/eyes/diona, //Default darksight of 2.
|
||||
"gas bladder" = /obj/item/organ/internal/brain/diona,
|
||||
@@ -85,29 +74,47 @@
|
||||
..()
|
||||
H.gender = NEUTER
|
||||
|
||||
/datum/species/diona/handle_life(mob/living/carbon/human/H)
|
||||
H.radiation = Clamp(H.radiation, 0, 100) //We have to clamp this first, then decrease it, or there's a few edge cases of massive heals if we clamp and decrease at the same time.
|
||||
var/rads = H.radiation / 25
|
||||
H.radiation = max(H.radiation-rads, 0)
|
||||
H.nutrition = min(H.nutrition+rads, NUTRITION_LEVEL_WELL_FED+10)
|
||||
H.adjustBruteLoss(-(rads))
|
||||
H.adjustToxLoss(-(rads))
|
||||
/datum/species/diona/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
|
||||
if(R.id == "glyphosate" || R.id == "atrazine")
|
||||
H.adjustToxLoss(3) //Deal aditional damage
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/datum/species/diona/handle_life(mob/living/carbon/human/H)
|
||||
if(H.stat == DEAD)
|
||||
return
|
||||
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
|
||||
if(isturf(H.loc)) //else, there's considered to be no light
|
||||
var/turf/T = H.loc
|
||||
light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights
|
||||
H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10)
|
||||
light_amount = min(1, T.get_lumcount()) - 0.5
|
||||
if(light_amount > 0)
|
||||
H.clear_alert("nolight")
|
||||
else
|
||||
H.throw_alert("nolight", /obj/screen/alert/nolight)
|
||||
H.nutrition += light_amount * 10
|
||||
if(H.nutrition > NUTRITION_LEVEL_ALMOST_FULL)
|
||||
H.nutrition = NUTRITION_LEVEL_ALMOST_FULL
|
||||
if(light_amount > 0.2 && !H.suiciding) //if there's enough light, heal
|
||||
if(!pod && H.health <= 0)
|
||||
return
|
||||
H.adjustBruteLoss(-1)
|
||||
H.adjustFireLoss(-1)
|
||||
H.adjustToxLoss(-1)
|
||||
H.adjustOxyLoss(-1)
|
||||
|
||||
if(light_amount > 0)
|
||||
H.clear_alert("nolight")
|
||||
else
|
||||
H.throw_alert("nolight", /obj/screen/alert/nolight)
|
||||
|
||||
if((light_amount >= 5) && !H.suiciding) //if there's enough light, heal
|
||||
|
||||
H.adjustBruteLoss(-(light_amount/2))
|
||||
H.adjustFireLoss(-(light_amount/4))
|
||||
if(H.nutrition < NUTRITION_LEVEL_STARVING+50)
|
||||
H.take_overall_damage(10,0)
|
||||
if(H.nutrition < NUTRITION_LEVEL_STARVING + 50)
|
||||
H.adjustBruteLoss(2)
|
||||
..()
|
||||
|
||||
/datum/species/diona/pod //Same name and everything; we want the same limitations on them; we just want their regeneration to kick in at all times and them to have special factions
|
||||
pod = TRUE
|
||||
|
||||
/datum/species/diona/pod/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
C.faction |= "plants"
|
||||
C.faction |= "vines"
|
||||
|
||||
/datum/species/diona/pod/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
C.faction -= "plants"
|
||||
C.faction -= "vines"
|
||||
@@ -251,28 +251,44 @@
|
||||
attack_verb = list("smash")
|
||||
attack_sound = 'sound/effects/meteorimpact.ogg'
|
||||
|
||||
//More resistant to burn damage
|
||||
//Add ashstorm resistance if we ever port lavaland
|
||||
//More resistant to burn damage and immune to ashstorm
|
||||
/datum/species/golem/titanium
|
||||
name = "Titanium Golem"
|
||||
golem_colour = rgb(255, 255, 255)
|
||||
skinned_type = /obj/item/stack/ore/titanium
|
||||
info_text = "As a <span class='danger'>Titanium Golem</span>, you are resistant to burn damage."
|
||||
info_text = "As a <span class='danger'>Titanium Golem</span>, you are resistant to burn damage and immune to ash storms."
|
||||
burn_mod = 0.3
|
||||
prefix = "Titanium"
|
||||
special_names = list("Dioxide")
|
||||
|
||||
//Even more resistant to burn damage
|
||||
//Add ashstorm and lava resistance if we ever port lavaland
|
||||
/datum/species/golem/titanium/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
C.weather_immunities |= "ash"
|
||||
|
||||
/datum/species/golem/titanium/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
C.weather_immunities -= "ash"
|
||||
|
||||
//Even more resistant to burn damage and immune to ashstorms and lava
|
||||
/datum/species/golem/plastitanium
|
||||
name = "Plastitanium Golem"
|
||||
golem_colour = rgb(136, 136, 136)
|
||||
skinned_type = /obj/item/stack/ore/titanium
|
||||
info_text = "As a <span class='danger'>Plastitanium Golem</span>, you are very resistant to burn damage."
|
||||
info_text = "As a <span class='danger'>Plastitanium Golem</span>, you are very resistant to burn damage and immune to both ash storms and lava."
|
||||
burn_mod = 0.15
|
||||
prefix = "Plastitanium"
|
||||
special_names = null
|
||||
|
||||
/datum/species/golem/plastitanium/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
C.weather_immunities |= "lava"
|
||||
C.weather_immunities |= "ash"
|
||||
|
||||
/datum/species/golem/plastitanium/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
C.weather_immunities -= "ash"
|
||||
C.weather_immunities -= "lava"
|
||||
|
||||
//Fast and regenerates... but can only speak like an abductor
|
||||
/datum/species/golem/alloy
|
||||
name = "Alien Alloy Golem"
|
||||
@@ -357,10 +373,12 @@
|
||||
|
||||
/datum/species/golem/uranium/handle_life(mob/living/carbon/human/H)
|
||||
for(var/mob/living/L in range(2, H))
|
||||
if(isgolem(H))
|
||||
continue
|
||||
to_chat(L, "<span class='danger'>You are enveloped by a soft green glow emanating from [H].</span>")
|
||||
L.apply_effect(10, IRRADIATE)
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/I = L
|
||||
if(!(RADIMMUNE in I.dna.species.species_traits))
|
||||
L.apply_effect(10, IRRADIATE)
|
||||
if(prob(25)) //reduce spam
|
||||
to_chat(L, "<span class='danger'>You are enveloped by a soft green glow emanating from [H].</span>")
|
||||
..()
|
||||
|
||||
//Ventcrawler
|
||||
@@ -592,7 +610,7 @@
|
||||
punchdamagehigh = 0
|
||||
punchstunthreshold = 1 //Harmless and can't stun
|
||||
skinned_type = /obj/item/stack/ore/bananium
|
||||
info_text = "As a <span class='danger'>Bananium Golem</span>, you are made for pranking. Your body emits natural honks, and you can barely even hurt people when punching them. Your skin also bleeds banana peels when damaged."
|
||||
info_text = "As a <span class='danger'>Bananium Golem</span>, you are made for pranking. Your body emits natural honks, and punching people will just harmlessly honk them. Your skin also bleeds banana peels when damaged."
|
||||
prefix = "Bananium"
|
||||
special_names = null
|
||||
unarmed_type = /datum/unarmed_attack/golem/bananium
|
||||
@@ -610,6 +628,12 @@
|
||||
H.mutations.Add(COMIC)
|
||||
H.equip_to_slot_or_del(new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(H), slot_r_store)
|
||||
H.equip_to_slot_or_del(new /obj/item/bikehorn(H), slot_l_store)
|
||||
H.AddComponent(/datum/component/waddling)
|
||||
|
||||
/datum/species/golem/bananium/on_species_loss(mob/living/carbon/C)
|
||||
. = ..()
|
||||
GET_COMPONENT_FROM(waddling, /datum/component/waddling, C)
|
||||
waddling.Destroy()
|
||||
|
||||
/datum/species/golem/bananium/get_random_name()
|
||||
var/clown_name = pick(GLOB.clown_names)
|
||||
|
||||
@@ -40,15 +40,15 @@
|
||||
. = ..()
|
||||
|
||||
if(method == TOUCH)
|
||||
if(H.wear_mask)
|
||||
to_chat(H, "<span class='danger'>Your [H.wear_mask] protects you from the acid!</span>")
|
||||
return
|
||||
|
||||
if(H.head)
|
||||
to_chat(H, "<span class='danger'>Your [H.wear_mask] protects you from the acid!</span>")
|
||||
return
|
||||
|
||||
if(volume > 25)
|
||||
if(H.wear_mask)
|
||||
to_chat(H, "<span class='danger'>Your [H.wear_mask] protects you from the acid!</span>")
|
||||
return
|
||||
|
||||
if(H.head)
|
||||
to_chat(H, "<span class='danger'>Your [H.wear_mask] protects you from the acid!</span>")
|
||||
return
|
||||
|
||||
if(prob(75))
|
||||
H.take_organ_damage(5, 10)
|
||||
H.emote("scream")
|
||||
@@ -65,9 +65,6 @@
|
||||
H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20))
|
||||
H.emote("scream")
|
||||
to_chat(H, "<span class='warning'>The water stings[volume < 10 ? " you, but isn't concentrated enough to harm you" : null]!</span>")
|
||||
if(volume >= 10)
|
||||
H.adjustFireLoss(min(max(4, (volume - 10) * 2), 20))
|
||||
H.emote("scream")
|
||||
|
||||
/datum/species/grey/after_equip_job(datum/job/J, mob/living/carbon/human/H)
|
||||
var/translator_pref = H.client.prefs.speciesprefs
|
||||
|
||||
@@ -510,13 +510,15 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75
|
||||
/mob/living/carbon/slime/toggle_throw_mode()
|
||||
return
|
||||
|
||||
/mob/living/carbon/slime/proc/apply_water()
|
||||
adjustToxLoss(rand(15,20))
|
||||
if(!client)
|
||||
if(Target) // Like cats
|
||||
Target = null
|
||||
++Discipline
|
||||
return
|
||||
/mob/living/carbon/slime/water_act(volume, temperature, source, method = TOUCH)
|
||||
. = ..()
|
||||
|
||||
var/water_damage = rand(10, 15) * volume
|
||||
adjustToxLoss(water_damage)
|
||||
|
||||
if(!client && Target && volume >= 3)
|
||||
Target = null
|
||||
++Discipline
|
||||
|
||||
/mob/living/carbon/slime/can_use_vents()
|
||||
if(Victim)
|
||||
|
||||
@@ -70,6 +70,13 @@
|
||||
if(!silent && !isnull(usr))
|
||||
log_and_message_admins("cleared the supplied laws of [src]")
|
||||
|
||||
/mob/living/silicon/proc/clear_zeroth_law(var/silent = FALSE)
|
||||
throw_alert("newlaw", /obj/screen/alert/newlaw)
|
||||
laws_sanity_check()
|
||||
laws.clear_zeroth_laws()
|
||||
if(!silent && !isnull(usr))
|
||||
log_and_message_admins("cleared the zeroth law of [src]")
|
||||
|
||||
/mob/living/silicon/proc/statelaws(var/datum/ai_laws/laws)
|
||||
var/prefix = ""
|
||||
if(MAIN_CHANNEL == lawchannel)
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
move_resist = INFINITY
|
||||
anchored = TRUE
|
||||
loot = list(/obj/effect/collapse, /obj/structure/closet/crate/necropolis/tendril)
|
||||
del_on_death = 1
|
||||
var/gps = null
|
||||
@@ -76,4 +78,4 @@
|
||||
mob_types = list(/mob/living/simple_animal/hostile/asteroid/goliath/beast/tendril)
|
||||
|
||||
/mob/living/simple_animal/hostile/spawner/lavaland/legion
|
||||
mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril)
|
||||
mob_types = list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril)
|
||||
|
||||
@@ -409,12 +409,6 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grab/proc/checkvalid(var/mob/attacker, var/mob/prey) //does all the checking for the attack proc to see if a mob can eat another with the grab
|
||||
if(ishuman(attacker) && (/datum/dna/gene/basic/grant_spell/mattereater in attacker.active_genes)) // MATTER EATER CARES NOT OF YOUR FORM
|
||||
return 1
|
||||
|
||||
if(ishuman(attacker) && (FAT in attacker.mutations) && iscarbon(prey) && !isalien(prey)) //Fat people eating carbon mobs but not xenos
|
||||
return 1
|
||||
|
||||
if(isalien(attacker) && iscarbon(prey)) //Xenomorphs eating carbon mobs
|
||||
return 1
|
||||
|
||||
|
||||
@@ -124,12 +124,6 @@
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] fires [src]!</span>", "<span class='danger'>You fire [src]!</span>", "You hear \a [fire_sound_text]!")
|
||||
|
||||
if(weapon_weight >= WEAPON_MEDIUM)
|
||||
if(user.get_inactive_hand())
|
||||
if(prob(15))
|
||||
if(user.drop_item())
|
||||
user.visible_message("<span class='danger'>[src] flies out of [user]'s hands!</span>", "<span class='userdanger'>[src] kicks out of your grip!</span>")
|
||||
|
||||
/obj/item/gun/emp_act(severity)
|
||||
for(var/obj/O in contents)
|
||||
O.emp_act(severity)
|
||||
@@ -174,7 +168,20 @@
|
||||
to_chat(user, "<span class='userdanger'>You need both hands free to fire \the [src]!</span>")
|
||||
return
|
||||
|
||||
process_fire(target,user,1,params)
|
||||
//DUAL WIELDING
|
||||
var/bonus_spread = 0
|
||||
var/loop_counter = 0
|
||||
if(ishuman(user) && user.a_intent == INTENT_HARM)
|
||||
var/mob/living/carbon/human/H = user
|
||||
for(var/obj/item/gun/G in get_both_hands(H))
|
||||
if(G == src || G.weapon_weight >= WEAPON_MEDIUM)
|
||||
continue
|
||||
else if(G.can_trigger_gun(user))
|
||||
bonus_spread += 24 * G.weapon_weight
|
||||
loop_counter++
|
||||
addtimer(CALLBACK(G, .proc/process_fire, target, user, 1, params, null, bonus_spread), loop_counter)
|
||||
|
||||
process_fire(target,user,1,params, null, bonus_spread)
|
||||
|
||||
/obj/item/gun/proc/can_trigger_gun(mob/living/user)
|
||||
if(!user.can_use_guns(src))
|
||||
@@ -187,17 +194,17 @@
|
||||
/obj/item/gun/proc/newshot()
|
||||
return
|
||||
|
||||
/obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override)
|
||||
/obj/item/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, message = 1, params, zone_override, bonus_spread = 0)
|
||||
add_fingerprint(user)
|
||||
|
||||
if(semicd)
|
||||
return
|
||||
|
||||
if(weapon_weight)
|
||||
if(user.get_inactive_hand())
|
||||
recoil = 4 //one-handed kick
|
||||
else
|
||||
recoil = initial(recoil)
|
||||
var/sprd = 0
|
||||
var/randomized_gun_spread = 0
|
||||
if(spread)
|
||||
randomized_gun_spread = rand(0,spread)
|
||||
var/randomized_bonus_spread = rand(0, bonus_spread)
|
||||
|
||||
if(burst_size > 1)
|
||||
firing_burst = 1
|
||||
@@ -208,11 +215,10 @@
|
||||
if( i>1 && !(src in get_both_hands(user))) //for burst firing
|
||||
break
|
||||
if(chambered)
|
||||
var/sprd = 0
|
||||
if(randomspread)
|
||||
sprd = round((rand() - 0.5) * spread)
|
||||
sprd = round((rand() - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
else
|
||||
sprd = round((i / burst_size - 0.5) * spread)
|
||||
sprd = round((i / burst_size - 0.5) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
if(!chambered.fire(target, user, params, ,suppressed, zone_override, sprd))
|
||||
shoot_with_empty_chamber(user)
|
||||
break
|
||||
@@ -230,7 +236,8 @@
|
||||
firing_burst = 0
|
||||
else
|
||||
if(chambered)
|
||||
if(!chambered.fire(target, user, params, , suppressed, zone_override, spread))
|
||||
sprd = round((pick(1,-1)) * (randomized_gun_spread + randomized_bonus_spread))
|
||||
if(!chambered.fire(target, user, params, , suppressed, zone_override, sprd))
|
||||
shoot_with_empty_chamber(user)
|
||||
return
|
||||
else
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
|
||||
/obj/item/gun/energy/emp_act(severity)
|
||||
power_supply.use(round(power_supply.charge / severity))
|
||||
if(chambered)//phil235
|
||||
if(chambered.BB)
|
||||
qdel(chambered.BB)
|
||||
chambered.BB = null
|
||||
chambered = null
|
||||
newshot() //phil235
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/energy/get_cell()
|
||||
@@ -34,6 +40,7 @@
|
||||
power_supply = new(src)
|
||||
power_supply.give(power_supply.maxcharge)
|
||||
update_ammo_types()
|
||||
on_recharge()
|
||||
if(selfcharge)
|
||||
START_PROCESSING(SSobj, src)
|
||||
update_icon()
|
||||
@@ -67,8 +74,12 @@
|
||||
if(!external || !external.use(E.e_cost)) //Take power from the borg...
|
||||
return //Note, uses /10 because of shitty mods to the cell system
|
||||
power_supply.give(100) //... to recharge the shot
|
||||
on_recharge()
|
||||
update_icon()
|
||||
|
||||
/obj/item/gun/energy/proc/on_recharge()
|
||||
newshot()
|
||||
|
||||
/obj/item/gun/energy/attack_self(mob/living/user as mob)
|
||||
if(ammo_type.len > 1)
|
||||
select_fire(user)
|
||||
@@ -78,10 +89,6 @@
|
||||
H.update_inv_l_hand()
|
||||
H.update_inv_r_hand()
|
||||
|
||||
/obj/item/gun/energy/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params)
|
||||
newshot() //prepare a new shot
|
||||
..()
|
||||
|
||||
/obj/item/gun/energy/can_shoot()
|
||||
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
|
||||
return power_supply.charge >= shot.e_cost
|
||||
@@ -89,18 +96,20 @@
|
||||
/obj/item/gun/energy/newshot()
|
||||
if(!ammo_type || !power_supply)
|
||||
return
|
||||
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
|
||||
if(power_supply.charge >= shot.e_cost) //if there's enough power in the power_supply cell...
|
||||
chambered = shot //...prepare a new shot based on the current ammo type selected
|
||||
chambered.newshot()
|
||||
return
|
||||
if(!chambered)
|
||||
var/obj/item/ammo_casing/energy/shot = ammo_type[select]
|
||||
if(power_supply.charge >= shot.e_cost) //if there's enough power in the power_supply cell...
|
||||
chambered = shot //...prepare a new shot based on the current ammo type selected
|
||||
if(!chambered.BB)
|
||||
chambered.newshot()
|
||||
|
||||
/obj/item/gun/energy/process_chamber()
|
||||
if(chambered && !chambered.BB) //if BB is null, i.e the shot has been fired...
|
||||
var/obj/item/ammo_casing/energy/shot = chambered
|
||||
power_supply.use(shot.e_cost)//... drain the power_supply cell
|
||||
robocharge()
|
||||
chambered = null //either way, released the prepared shot
|
||||
return
|
||||
newshot()
|
||||
|
||||
/obj/item/gun/energy/proc/select_fire(mob/living/user)
|
||||
select++
|
||||
@@ -111,6 +120,12 @@
|
||||
fire_delay = shot.delay
|
||||
if(shot.select_name)
|
||||
to_chat(user, "<span class='notice'>[src] is now set to [shot.select_name].</span>")
|
||||
if(chambered)//phil235
|
||||
if(chambered.BB)
|
||||
qdel(chambered.BB)
|
||||
chambered.BB = null
|
||||
chambered = null
|
||||
newshot()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
@@ -134,6 +134,7 @@
|
||||
|
||||
/obj/item/gun/energy/kinetic_accelerator/proc/reload()
|
||||
power_supply.give(500)
|
||||
on_recharge()
|
||||
if(!suppressed)
|
||||
playsound(loc, 'sound/weapons/kenetic_reload.ogg', 60, 1)
|
||||
else if(isliving(loc))
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
slot_flags = null
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser)
|
||||
weapon_weight = WEAPON_MEDIUM
|
||||
weapon_weight = WEAPON_HEAVY
|
||||
can_flashlight = 0
|
||||
trigger_guard = TRIGGER_GUARD_NONE
|
||||
ammo_x_offset = 2
|
||||
|
||||
@@ -168,11 +168,13 @@
|
||||
var/obj/item/stack/sheet/S = A
|
||||
S.use(1)
|
||||
power_supply.give(1000)
|
||||
on_recharge()
|
||||
to_chat(user, "<span class='notice'>You insert [A] in [src], recharging it.</span>")
|
||||
else if(istype(A, /obj/item/stack/ore/plasma))
|
||||
var/obj/item/stack/ore/S = A
|
||||
S.use(1)
|
||||
power_supply.give(500)
|
||||
on_recharge()
|
||||
to_chat(user, "<span class='notice'>You insert [A] in [src], recharging it.</span>")
|
||||
else
|
||||
return ..()
|
||||
@@ -251,10 +253,6 @@
|
||||
/obj/item/gun/energy/printer/emp_act()
|
||||
return
|
||||
|
||||
/obj/item/gun/energy/printer/newshot()
|
||||
..()
|
||||
robocharge()
|
||||
|
||||
// Instakill Lasers //
|
||||
/obj/item/gun/energy/laser/instakill
|
||||
name = "instakill rifle"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
slot_flags = 0
|
||||
origin_tech = "combat=6;engineering=3;syndicate=6"
|
||||
mag_type = /obj/item/ammo_box/magazine/mm556x45
|
||||
weapon_weight = WEAPON_MEDIUM
|
||||
weapon_weight = WEAPON_HEAVY
|
||||
fire_sound = 'sound/weapons/gunshots/gunshot_mg.ogg'
|
||||
magin_sound = 'sound/weapons/gun_interactions/lmg_magin.ogg'
|
||||
magout_sound = 'sound/weapons/gun_interactions/lmg_magout.ogg'
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot
|
||||
fire_sound = 'sound/weapons/gunshots/gunshot_shotgun.ogg'
|
||||
var/recentpump = 0 // to prevent spammage
|
||||
weapon_weight = WEAPON_MEDIUM
|
||||
|
||||
/obj/item/gun/projectile/shotgun/attackby(obj/item/A, mob/user, params)
|
||||
. = ..()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "sniper"
|
||||
item_state = "sniper"
|
||||
recoil = 2
|
||||
weapon_weight = WEAPON_MEDIUM
|
||||
weapon_weight = WEAPON_HEAVY
|
||||
mag_type = /obj/item/ammo_box/magazine/sniper_rounds
|
||||
fire_sound = 'sound/weapons/gunshots/gunshot_sniper.ogg'
|
||||
magin_sound = 'sound/weapons/gun_interactions/batrifle_magin.ogg'
|
||||
|
||||
@@ -184,8 +184,10 @@
|
||||
var/randomize = pick("robot", "slime", "xeno", "human", "animal")
|
||||
switch(randomize)
|
||||
if("robot")
|
||||
var/path
|
||||
if(prob(30))
|
||||
new_mob = new /mob/living/silicon/robot/syndicate(M.loc)
|
||||
path = pick(typesof(/mob/living/silicon/robot/syndicate))
|
||||
new_mob = new path(M.loc)
|
||||
else
|
||||
new_mob = new /mob/living/silicon/robot(M.loc)
|
||||
new_mob.gender = M.gender
|
||||
@@ -193,6 +195,10 @@
|
||||
new_mob.job = "Cyborg"
|
||||
var/mob/living/silicon/robot/Robot = new_mob
|
||||
Robot.mmi = new /obj/item/mmi(new_mob)
|
||||
Robot.lawupdate = FALSE
|
||||
Robot.connected_ai = null
|
||||
Robot.clear_inherent_laws()
|
||||
Robot.clear_zeroth_law()
|
||||
if(ishuman(M))
|
||||
Robot.mmi.transfer_identity(M) //Does not transfer key/client.
|
||||
if("slime")
|
||||
|
||||
@@ -143,7 +143,6 @@
|
||||
M.apply_effect((rand(30,80)),IRRADIATE)
|
||||
M.Weaken(5)
|
||||
M.visible_message("<span class='warning'>[M] writhes in pain as [M.p_their()] vacuoles boil.</span>", "<span class='userdanger'>You writhe in pain as your vacuoles boil!</span>", "<span class='italics'>You hear the crunching of leaves.</span>")
|
||||
if(prob(35))
|
||||
if(prob(80))
|
||||
randmutb(M)
|
||||
domutcheck(M,null)
|
||||
|
||||
@@ -668,6 +668,7 @@
|
||||
color = "#A0E85E"
|
||||
metabolization_rate = 0.2
|
||||
taste_description = "life"
|
||||
var/revive_type = SENTIENCE_ORGANIC //So you can't revive boss monsters or robots with it
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
@@ -680,13 +681,14 @@
|
||||
if(volume < 1)
|
||||
// gotta pay to play
|
||||
return ..()
|
||||
if(isanimal(M))
|
||||
if(method == TOUCH)
|
||||
var/mob/living/simple_animal/SM = M
|
||||
if(SM.stat == DEAD)
|
||||
SM.revive()
|
||||
SM.loot.Cut() //no abusing strange reagent for unlimited farming of resources
|
||||
SM.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
|
||||
if(isanimal(M) && method == TOUCH)
|
||||
var/mob/living/simple_animal/SM = M
|
||||
if(SM.sentience_type != revive_type) // No reviving Ash Drakes for you
|
||||
return
|
||||
if(SM.stat == DEAD)
|
||||
SM.revive()
|
||||
SM.loot.Cut() //no abusing strange reagent for farming unlimited resources
|
||||
SM.visible_message("<span class='warning'>[SM] seems to rise from the dead!</span>")
|
||||
|
||||
if(iscarbon(M))
|
||||
if(method == INGEST || (method == TOUCH && prob(25)))
|
||||
|
||||
@@ -993,10 +993,10 @@
|
||||
C.adjustToxLoss(lethality)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(IS_PLANT in H.dna.species.species_traits) //plantmen take a LOT of damage
|
||||
H.adjustToxLoss(50)
|
||||
if(IS_PLANT in H.dna.species.species_traits) //plantmen take extra damage
|
||||
H.adjustToxLoss(3)
|
||||
..()
|
||||
else if(istype(M, /mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage
|
||||
else if(istype(M, /mob/living/simple_animal/diona)) //nymphs take EVEN MORE damage
|
||||
var/mob/living/simple_animal/diona/D = M
|
||||
D.adjustHealth(100)
|
||||
..()
|
||||
|
||||
@@ -1036,6 +1036,7 @@
|
||||
|
||||
if(O.currTag > 0)// Tag set
|
||||
sortType = O.currTag
|
||||
name = GLOB.TAGGERLOCATIONS[O.currTag]
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1)
|
||||
var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag])
|
||||
to_chat(user, "<span class='notice'>Changed filter to [tag]</span>")
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
gloves = /obj/item/clothing/gloves/color/latex/nitrile
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/ert/medical
|
||||
glasses = /obj/item/clothing/glasses/hud/health/health_advanced
|
||||
glasses = /obj/item/clothing/glasses/hud/health/sunglasses
|
||||
suit_store = /obj/item/gun/energy/gun
|
||||
cybernetic_implants = list(
|
||||
/obj/item/organ/internal/cyberimp/arm/surgery,
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
density = TRUE
|
||||
roundstart = FALSE
|
||||
death = FALSE
|
||||
mob_species = /datum/species/diona
|
||||
mob_species = /datum/species/diona/pod
|
||||
flavour_text = "<span class='big bold'>You are a sentient ecosystem,</span><b> an example of the mastery over life that your creators possessed. Your masters, benevolent as they were, created uncounted \
|
||||
seed vaults and spread them across the universe to every planet they could chart. You are in one such seed vault. Your goal is to cultivate and spread life wherever it will go while waiting \
|
||||
for contact from your creators. Estimated time of last contact: Deployment, 5x10^3 millennia ago.</b>"
|
||||
|
||||
@@ -65,3 +65,11 @@
|
||||
. = ..()
|
||||
if(!S1.lock_shuttle_doors && id_tag == "s_docking_airlock")
|
||||
INVOKE_ASYNC(src, .proc/unlock)
|
||||
|
||||
/obj/structure/ladder/onShuttleMove()
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
// simply don't be moved
|
||||
return FALSE
|
||||
disconnect()
|
||||
LateInitialize()
|
||||
return ..()
|
||||
@@ -349,7 +349,7 @@
|
||||
if(mode != SHUTTLE_CALL)
|
||||
return
|
||||
|
||||
invertTimer()
|
||||
timer = world.time - timeLeft(1)
|
||||
mode = SHUTTLE_RECALL
|
||||
|
||||
/obj/docking_port/mobile/proc/enterTransit()
|
||||
@@ -650,8 +650,9 @@
|
||||
create_ripples(destination)
|
||||
|
||||
/obj/docking_port/mobile/proc/setTimer(wait)
|
||||
timer = world.time + wait
|
||||
last_timer_length = wait
|
||||
if(timer <= 0)
|
||||
timer = world.time
|
||||
timer += wait - timeLeft(1)
|
||||
|
||||
/obj/docking_port/mobile/proc/modTimer(multiple)
|
||||
var/time_remaining = timer - world.time
|
||||
|
||||
@@ -87,67 +87,68 @@ var/global/list/limb_icon_cache = list()
|
||||
else if(s_col)
|
||||
mob_icon.Blend(s_col, ICON_ADD)
|
||||
|
||||
if(owner) //Maintains overlays on disembodied parts.
|
||||
cut_overlays()
|
||||
|
||||
dir = EAST
|
||||
icon = mob_icon
|
||||
|
||||
return mob_icon
|
||||
|
||||
/obj/item/organ/external/head/get_icon()
|
||||
|
||||
..()
|
||||
overlays.Cut()
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(dna.species.has_organ["eyes"])
|
||||
var/icon/eyes_icon = owner.get_eyecon()
|
||||
if(eyes_icon)
|
||||
mob_icon.Blend(eyes_icon, ICON_OVERLAY)
|
||||
overlays |= eyes_icon
|
||||
mob_icon.Blend(eyes_icon, ICON_OVERLAY) //This is required since update_icons.dm relies on this proc to render non-shining eyes.
|
||||
add_overlay(eyes_icon)
|
||||
|
||||
if(owner.lip_style && (LIPS in dna.species.species_traits))
|
||||
var/icon/lip_icon = new/icon('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s")
|
||||
overlays |= lip_icon
|
||||
mob_icon.Blend(lip_icon, ICON_OVERLAY)
|
||||
add_overlay(mutable_appearance('icons/mob/human_face.dmi', "lips_[owner.lip_style]_s")) //Hefty icon not necessary.
|
||||
|
||||
var/head_marking = owner.m_styles["head"]
|
||||
if(head_marking && head_marking != "None")
|
||||
if(head_marking)
|
||||
var/datum/sprite_accessory/head_marking_style = GLOB.marking_styles_list[head_marking]
|
||||
if(head_marking_style && head_marking_style.species_allowed && (dna.species.name in head_marking_style.species_allowed) && head_marking_style.marking_location == "head")
|
||||
var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s")
|
||||
var/icon/h_marking_s = new /icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s")
|
||||
if(head_marking_style.do_colouration)
|
||||
h_marking_s.Blend(owner.m_colours["head"], ICON_ADD)
|
||||
overlays |= h_marking_s
|
||||
add_overlay(h_marking_s)
|
||||
|
||||
if(ha_style)
|
||||
var/datum/sprite_accessory/head_accessory_style = GLOB.head_accessory_styles_list[ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed && (dna.species.name in head_accessory_style.species_allowed))
|
||||
var/icon/head_accessory_s = new/icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(headacc_colour, ICON_ADD)
|
||||
overlays |= head_accessory_s
|
||||
if(!((owner.head && (owner.head.flags & BLOCKHAIR)) || (owner.wear_mask && (owner.wear_mask.flags & BLOCKHAIR)))) //Common restriction for all the below features.
|
||||
if(ha_style)
|
||||
var/datum/sprite_accessory/head_accessory_style = GLOB.head_accessory_styles_list[ha_style]
|
||||
if(head_accessory_style && head_accessory_style.species_allowed && (dna.species.name in head_accessory_style.species_allowed))
|
||||
var/icon/head_accessory_s = new /icon("icon" = head_accessory_style.icon, "icon_state" = "[head_accessory_style.icon_state]_s")
|
||||
if(head_accessory_style.do_colouration)
|
||||
head_accessory_s.Blend(headacc_colour, ICON_ADD)
|
||||
add_overlay(head_accessory_s)
|
||||
|
||||
if(f_style)
|
||||
var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style]
|
||||
if(facial_hair_style && ((facial_hair_style.species_allowed && (dna.species.name in facial_hair_style.species_allowed)) || (dna.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(istype(dna.species, /datum/species/slime)) // I am el worstos
|
||||
facial_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(facial_hair_style.do_colouration)
|
||||
facial_s.Blend(facial_colour, ICON_ADD)
|
||||
overlays |= facial_s
|
||||
if(f_style)
|
||||
var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hair_styles_list[f_style]
|
||||
if(facial_hair_style && ((facial_hair_style.species_allowed && (dna.species.name in facial_hair_style.species_allowed)) || (dna.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/facial_s = new /icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s")
|
||||
if(istype(dna.species, /datum/species/slime)) // I am el worstos
|
||||
facial_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(facial_hair_style.do_colouration)
|
||||
facial_s.Blend(facial_colour, ICON_ADD)
|
||||
add_overlay(facial_s)
|
||||
|
||||
if(h_style && !(owner.head && (owner.head.flags & BLOCKHEADHAIR)))
|
||||
var/datum/sprite_accessory/hair_style = GLOB.hair_styles_full_list[h_style]
|
||||
if(hair_style && ((dna.species.name in hair_style.species_allowed) || (dna.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/hair_s = new/icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(istype(dna.species, /datum/species/slime)) // I am el worstos
|
||||
hair_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(hair_style.do_colouration)
|
||||
hair_s.Blend(hair_colour, ICON_ADD)
|
||||
overlays |= hair_s
|
||||
if(h_style)
|
||||
if(!owner.isSynthetic() || (owner.isSynthetic() && ((owner.head && (owner.head.flags & BLOCKHEADHAIR)) || (owner.wear_mask && (owner.wear_mask.flags & BLOCKHEADHAIR)))))
|
||||
var/datum/sprite_accessory/hair_style = GLOB.hair_styles_full_list[h_style]
|
||||
if(hair_style && ((dna.species.name in hair_style.species_allowed) || (dna.species.bodyflags & ALL_RPARTS)))
|
||||
var/icon/hair_s = new /icon("icon" = hair_style.icon, "icon_state" = "[hair_style.icon_state]_s")
|
||||
if(istype(dna.species, /datum/species/slime)) // I am el worstos
|
||||
hair_s.Blend("[owner.skin_colour]A0", ICON_AND) //A0 = 160 alpha.
|
||||
else if(hair_style.do_colouration)
|
||||
hair_s.Blend(hair_colour, ICON_ADD)
|
||||
add_overlay(hair_s)
|
||||
|
||||
return mob_icon
|
||||
return mob_icon //Don't need to blend the above into this as it's handled in human/update_icons(). The overlays are for rendering stuff on disembodied heads.
|
||||
|
||||
/obj/item/organ/external/proc/get_icon_state(skeletal)
|
||||
var/gender
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "core trunk"
|
||||
max_damage = 200
|
||||
min_broken_damage = 50
|
||||
cannot_break = 1
|
||||
amputation_point = "trunk"
|
||||
encased = null
|
||||
gendered_icon = 0
|
||||
@@ -10,7 +9,6 @@
|
||||
/obj/item/organ/external/groin/diona
|
||||
name = "fork"
|
||||
min_broken_damage = 50
|
||||
cannot_break = 1
|
||||
amputation_point = "lower trunk"
|
||||
gendered_icon = 0
|
||||
|
||||
@@ -18,58 +16,49 @@
|
||||
name = "left upper tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "upper left trunk"
|
||||
|
||||
/obj/item/organ/external/arm/right/diona
|
||||
name = "right upper tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "upper right trunk"
|
||||
|
||||
/obj/item/organ/external/leg/diona
|
||||
name = "left lower tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "lower left fork"
|
||||
|
||||
/obj/item/organ/external/leg/right/diona
|
||||
name = "right lower tendril"
|
||||
max_damage = 35
|
||||
min_broken_damage = 20
|
||||
cannot_break = 1
|
||||
amputation_point = "lower right fork"
|
||||
|
||||
/obj/item/organ/external/foot/diona
|
||||
name = "left foot"
|
||||
max_damage = 20
|
||||
min_broken_damage = 10
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/foot/right/diona
|
||||
name = "right foot"
|
||||
max_damage = 20
|
||||
min_broken_damage = 10
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/hand/diona
|
||||
name = "left grasper"
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/hand/right/diona
|
||||
name = "right grasper"
|
||||
cannot_break = 1
|
||||
amputation_point = "branch"
|
||||
|
||||
/obj/item/organ/external/head/diona
|
||||
max_damage = 50
|
||||
min_broken_damage = 25
|
||||
cannot_break = 1
|
||||
encased = null
|
||||
amputation_point = "upper trunk"
|
||||
gendered_icon = 0
|
||||
@@ -82,6 +71,11 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "nymph"
|
||||
|
||||
/obj/item/organ/internal/lungs/diona
|
||||
name = "respiratory vacuoles"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "nymph"
|
||||
|
||||
/obj/item/organ/internal/brain/diona // Turns into a nymph instantly, no transplanting possible.
|
||||
name = "gas bladder"
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
|
||||
Reference in New Issue
Block a user