Merge remote-tracking branch 'upstream/master' into uhhhhh

This commit is contained in:
xxalpha
2016-02-19 18:32:07 +00:00
185 changed files with 4769 additions and 3599 deletions
+7 -1
View File
@@ -973,6 +973,8 @@
log_admin("[key_name(usr)] temp-jobbanned [key_name(M)] from [job] for [mins] minutes")
feedback_inc("ban_job_tmp",1)
DB_ban_record(BANTYPE_JOB_TEMP, M, mins, reason, job)
if(M.client)
jobban_buildcache(M.client)
feedback_add_details("ban_job_tmp","- [job]")
if(!msg)
msg = job
@@ -994,6 +996,8 @@
log_admin("[key_name(usr)] perma-banned [key_name(M)] from [job]")
feedback_inc("ban_job",1)
DB_ban_record(BANTYPE_JOB_PERMA, M, -1, reason, job)
if(M.client)
jobban_buildcache(M.client)
feedback_add_details("ban_job","- [job]")
if(!msg)
msg = job
@@ -1022,6 +1026,8 @@
ban_unban_log_save("[key_name(usr)] unjobbanned [key_name(M)] from [job]")
log_admin("[key_name(usr)] unbanned [key_name(M)] from [job]")
DB_ban_unban(M.ckey, BANTYPE_ANY_JOB, job)
if(M.client)
jobban_buildcache(M.client)
feedback_inc("ban_job_unban",1)
feedback_add_details("ban_job_unban","- [job]")
if(!msg)
@@ -1487,7 +1493,7 @@
usr << "This can only be used on instances of type /mob/living"
return
L.revive()
L.revive(full_heal = 1, admin_revive = 1)
message_admins("<span class='danger'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!</span>")
log_admin("[key_name(usr)] healed / Revived [key_name(L)]")
+1 -1
View File
@@ -454,7 +454,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!istype(M))
alert("Cannot revive a ghost")
return
M.revive()
M.revive(full_heal = 1, admin_revive = 1)
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
message_admins("<span class='danger'>Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!</span>")
+2 -2
View File
@@ -36,7 +36,7 @@
return
/obj/item/assembly/shock_kit/receive_signal()
if(istype(loc, /obj/structure/bed/chair/e_chair))
var/obj/structure/bed/chair/e_chair/C = loc
if(istype(loc, /obj/structure/chair/e_chair))
var/obj/structure/chair/e_chair/C = loc
C.shock()
return
+42 -1
View File
@@ -45,6 +45,9 @@
..()
invisibility = 0
/obj/effect/landmark/corpse/proc/special(mob/new_spawn)
return
/obj/effect/landmark/corpse/proc/createCorpse(death, ckey) //Creates a mob and checks for gear in each slot before attempting to equip it.
var/mob/living/carbon/human/M = new /mob/living/carbon/human (src.loc)
if(mobname != "default")
@@ -114,6 +117,7 @@
if(ckey)
M.ckey = ckey
M << "[flavour_text]"
special(M)
qdel(src)
/obj/effect/landmark/corpse/AICorpse/createCorpse() //Creates a corrupted AI
@@ -275,6 +279,26 @@
corpsemask = /obj/item/clothing/mask/breath
/obj/effect/landmark/corpse/bartender
mobname = "Space Bartender"
corpseuniform = /obj/item/clothing/under/rank/bartender
corpseback = /obj/item/weapon/storage/backpack
corpseshoes = /obj/item/clothing/shoes/sneakers/black
corpsesuit = /obj/item/clothing/suit/armor
corpseglasses = /obj/item/clothing/glasses/sunglasses/reagent
corpseid = 1
corpseidjob = "Bartender"
corpseidaccess = "Bartender"
/obj/effect/landmark/corpse/bartender/alive
death = FALSE
roundstart = FALSE
mobname = "Space Bartender"
name = "sleeper"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
flavour_text = "You are a space bartender!"
/////////////////Officers+Nanotrasen Security//////////////////////
@@ -318,7 +342,6 @@
corpseidjob = "Private Security Force"
corpseidaccess = "Security Officer"
/obj/effect/landmark/corpse/commander/alive
death = FALSE
roundstart = FALSE
@@ -372,3 +395,21 @@
mob_species = /datum/species/abductor
corpseuniform = /obj/item/clothing/under/color/grey
corpseshoes = /obj/item/clothing/shoes/combat
///Prisoner
/obj/effect/landmark/corpse/prisoner_transport
name = "prisoner sleeper"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
corpseuniform = /obj/item/clothing/under/rank/prisoner
corpsemask = /obj/item/clothing/mask/breath
corpseshoes = /obj/item/clothing/shoes/sneakers/orange
corpsepocket1 = /obj/item/weapon/tank/internals/emergency_oxygen
roundstart = FALSE
death = FALSE
flavour_text = {"You were a prisoner, sentenced to hard labour in one of Nanotrasen's harsh gulags, but judging by the explosive crash you just survived, fate may have other plans for. First thing is first though: Find a way to survive this mess."}
/obj/effect/landmark/corpse/prisoner_transport/special(mob/living/new_spawn)
var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "syndicate collaboration", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting your manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence")
new_spawn << "You were convincted of: [crime]."
@@ -91,7 +91,7 @@
if(!current_wizard)
return
spawn(0)
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as Wizard Academy Defender?", "wizard")
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as Wizard Academy Defender?", "wizard", null, ROLE_WIZARD)
var/mob/dead/observer/chosen = null
if(candidates.len)
@@ -234,7 +234,7 @@
C.name = "Cookie of Fate"
if(12)
//Healing
user.revive()
user.revive(full_heal = 1, admin_revive = 1)
if(13)
//Mad Dosh
var/turf/Start = get_turf(src)
@@ -160,7 +160,7 @@
C << "<span class='notice'>Death is not your end!</span>"
spawn(rand(80,120))
C.revive()
C.revive(full_heal = 1, admin_revive = 1)
C << "<span class='notice'>You have regenerated.</span>"
C.visible_message("<span class='warning'>[usr] appears to wake from the dead, having healed all wounds.</span>")
C.update_canmove()
+1 -1
View File
@@ -49,7 +49,7 @@ var/list/preferences_datums = list()
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
var/backbag = GBACKPACK //backpack type
var/backbag = DBACKPACK //backpack type
var/hair_style = "Bald" //Hair type
var/hair_color = "000" //Hair color
var/facial_hair_style = "Shaved" //Face hair type
+2 -2
View File
@@ -173,9 +173,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(current_version < 13 || !istext(backbag))
switch(backbag)
if(2)
backbag = GSATCHEL
backbag = DSATCHEL
else
backbag = GBACKPACK
backbag = DBACKPACK
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
+6 -6
View File
@@ -131,11 +131,11 @@ BLIND // can't see anything
return message
//Proc that moves gas/breath masks out of the way, disabling them and allowing pill/food consumption
/obj/item/clothing/mask/proc/adjustmask(mob/user)
/obj/item/clothing/mask/proc/adjustmask(mob/living/user)
if(!ignore_maskadjust)
if(user.incapacitated())
return
if(src.mask_adjusted == 1)
if(mask_adjusted == 1)
src.icon_state = initial(icon_state)
gas_transfer_coefficient = initial(gas_transfer_coefficient)
permeability_coefficient = initial(permeability_coefficient)
@@ -146,7 +146,7 @@ BLIND // can't see anything
src.mask_adjusted = 0
slot_flags = initial(slot_flags)
else
src.icon_state += "_up"
icon_state += "_up"
user << "<span class='notice'>You push \the [src] out of the way.</span>"
gas_transfer_coefficient = null
permeability_coefficient = null
@@ -156,7 +156,7 @@ BLIND // can't see anything
src.mask_adjusted = 1
if(adjusted_flags)
slot_flags = adjusted_flags
usr.update_inv_wear_mask()
user.wear_mask_update(src, unequip = 0)
@@ -257,11 +257,11 @@ BLIND // can't see anything
name = "space helmet"
icon_state = "spaceold"
desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
item_state = "spaceold"
permeability_coefficient = 0.01
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
+2 -2
View File
@@ -78,8 +78,8 @@
item_color = "atmos"
name = "atmospheric technician's firefighting helmet"
desc = "A firefighter's helmet, able to keep the user cool in any situation."
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
cold_protection = HEAD
+8 -9
View File
@@ -5,7 +5,7 @@
flags = HEADBANGPROTECT
item_state = "helmet"
armor = list(melee = 30, bullet = 25, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0)
flags_inv = HIDEEARS|HIDEEYES
flags_inv = HIDEEARS
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -41,10 +41,10 @@
can_toggle = 1
flags = HEADBANGPROTECT
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE
strip_delay = 80
action_button_name = "Toggle Helmet Visor"
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE
visor_flags_inv = HIDEMASK|HIDEFACE
toggle_cooldown = 0
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -110,6 +110,7 @@
/obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet"
desc = "<i>'Let the battle commence!'</i>"
flags_inv = HIDEEARS|HIDEHAIR
icon_state = "thunderdome"
item_state = "thunderdome"
armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0)
@@ -122,6 +123,7 @@
/obj/item/clothing/head/helmet/roman
name = "roman helmet"
desc = "An ancient helmet made of bronze and leather."
flags_inv = HIDEEARS|HIDEHAIR
flags_cover = HEADCOVERSEYES
armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_state = "roman"
@@ -138,9 +140,8 @@
name = "gladiator helmet"
desc = "Ave, Imperator, morituri te salutant."
icon_state = "gladiator"
flags = BLOCKHAIR
item_state = "gladiator"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/helmet/redtaghelm
@@ -151,7 +152,6 @@
item_state = "redtaghelm"
armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/bluetaghelm
name = "blue laser tag helmet"
@@ -161,7 +161,6 @@
item_state = "bluetaghelm"
armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0)
// Offer about the same protection as a hardhat.
flags_inv = HIDEEARS|HIDEEYES
/obj/item/clothing/head/helmet/knight
name = "medieval helmet"
@@ -169,8 +168,8 @@
icon_state = "knight_green"
item_state = "knight_green"
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags = null
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
strip_delay = 80
+1 -1
View File
@@ -47,7 +47,7 @@
name = "nun hood"
desc = "Maximum piety in this star system."
icon_state = "nun_hood"
flags = BLOCKHAIR
flags_inv = HIDEHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/det_hat
+12 -14
View File
@@ -47,7 +47,7 @@
name = "hastur's hood"
desc = "It's <i>unspeakably</i> stylish."
icon_state = "hasturhood"
flags = BLOCKHAIR
flags_inv = HIDEHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/nursehat
@@ -60,8 +60,7 @@
icon_state = "syndicate-helm-black-red"
item_state = "syndicate-helm-black-red"
desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/cardborg
name = "cardborg helmet"
@@ -69,7 +68,7 @@
icon_state = "cardborg_h"
item_state = "cardborg_h"
flags_cover = HEADCOVERSEYES
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/snowman
name = "Snowman Head"
@@ -77,14 +76,14 @@
icon_state = "snowman_h"
item_state = "snowman_h"
flags_cover = HEADCOVERSEYES
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/justice
name = "justice hat"
desc = "Fight for what's righteous!"
icon_state = "justicered"
item_state = "justicered"
flags = BLOCKHAIR
flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/justice/blue
@@ -143,23 +142,21 @@
desc = "Eeeee~heheheheheheh!"
icon_state = "witch"
item_state = "witch"
flags = BLOCKHAIR
flags_inv = HIDEHAIR
/obj/item/clothing/head/chicken
name = "chicken suit head"
desc = "Bkaw!"
icon_state = "chickenhead"
item_state = "chickensuit"
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/griffin
name = "griffon head"
desc = "Why not 'eagle head'? Who knows."
icon_state = "griffinhat"
item_state = "griffinhat"
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/bearpelt
name = "bear pelt hat"
@@ -172,8 +169,7 @@
icon_state = "xenos"
item_state = "xenos_helm"
desc = "A helmet made out of chitinous alien hide."
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/head/fedora
name = "fedora"
@@ -196,12 +192,14 @@
icon_state = "sombrero"
item_state = "sombrero"
desc = "You can practically taste the fiesta."
flags_inv = HIDEHAIR
/obj/item/clothing/head/sombrero/green
name = "green sombrero"
icon_state = "greensombrero"
item_state = "greensombrero"
desc = "As elegant as a dancing cactus."
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
/obj/item/clothing/head/sombrero/shamebrero
name = "shamebrero"
@@ -245,4 +243,4 @@
/obj/item/clothing/head/lizard
name = "lizardskin cloche hat"
desc = "How many lizards died to make this hat? Not enough."
icon_state = "lizard"
icon_state = "lizard"
+3 -5
View File
@@ -48,8 +48,7 @@
icon_state = "hardhat0_cakehat"
item_state = "hardhat0_cakehat"
item_color = "cakehat"
flags = BLOCKHAIR
flags_inv = HIDEEARS
flags_inv = HIDEEARS|HIDEHAIR
action_button_name = "Toggle Candle"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
brightness_on = 2 //luminosity when on
@@ -90,7 +89,7 @@
desc = "Perfect for winter in Siberia, da?"
icon_state = "ushankadown"
item_state = "ushankadown"
flags_inv = HIDEEARS
flags_inv = HIDEEARS|HIDEHAIR
var/earflaps = 1
cold_protection = HEAD
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
@@ -116,8 +115,7 @@
icon_state = "hardhat0_pumpkin"
item_state = "hardhat0_pumpkin"
item_color = "pumpkin"
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
action_button_name = "Toggle Pumpkin Light"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
brightness_on = 2 //luminosity when on
+3 -5
View File
@@ -3,9 +3,8 @@
desc = "LOADSAMONEY"
icon_state = "balaclava"
item_state = "balaclava"
flags = BLOCKHAIR
flags_inv = HIDEFACE
visor_flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
w_class = 2
action_button_name = "Adjust Balaclava"
ignore_maskadjust = 0
@@ -18,8 +17,7 @@
desc = "Worn by robust fighters, flying high to defeat their foes!"
icon_state = "luchag"
item_state = "luchag"
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
/obj/item/clothing/mask/luchador/speechModification(message)
+2 -1
View File
@@ -3,7 +3,7 @@
desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate
icon_state = "gas_alt"
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
w_class = 3
item_state = "gas_alt"
gas_transfer_coefficient = 0.01
@@ -23,6 +23,7 @@
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
origin_tech = "materials=2;engineering=2"
action_button_name = "Toggle Welding Mask"
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = MASKCOVERSEYES
visor_flags_inv = HIDEEYES
+3 -1
View File
@@ -8,7 +8,7 @@
icon_state = "sechailer"
ignore_maskadjust = 0
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
flags_inv = HIDEFACE
flags_inv = HIDEFACIALHAIR|HIDEFACE
w_class = 2
visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
visor_flags_inv = HIDEFACE
@@ -25,6 +25,8 @@
icon_state = "swat"
aggressiveness = 3
ignore_maskadjust = 1
flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS
visor_flags_inv = 0
/obj/item/clothing/mask/gas/sechailer/cyborg
name = "security hailer"
+6 -10
View File
@@ -45,8 +45,7 @@
desc = "A rubber pig mask."
icon_state = "pig"
item_state = "pig"
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
action_button_name = "Toggle Voice Box"
var/voicechange = 0
@@ -65,8 +64,7 @@
desc = "It looks like a mask, but closer inspection reveals it's melded onto this persons face!" //It's only ever going to be attached to your face.
icon_state = "pig"
item_state = "pig"
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
var/voicechange = 1
@@ -81,8 +79,7 @@
icon = 'icons/mob/mask.dmi'
icon_state = "cowmask"
item_state = "cowmask"
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
w_class = 2
var/voicechange = 1
@@ -96,8 +93,7 @@
desc = "A mask made of soft vinyl and latex, representing the head of a horse."
icon_state = "horsehead"
item_state = "horsehead"
flags = BLOCKHAIR
flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEYES|HIDEEARS
w_class = 2
var/voicechange = 1
@@ -111,8 +107,8 @@
desc = "A fine bandana with nanotech lining and a hydroponics pattern."
w_class = 1
flags_cover = MASKCOVERSMOUTH
flags_inv = HIDEFACE
visor_flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEFACIALHAIR
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR
slot_flags = SLOT_MASK
ignore_maskadjust = 0
adjusted_flags = SLOT_HEAD
+13 -11
View File
@@ -11,8 +11,6 @@
var/obj/item/clothing/suit/space/hardsuit/suit
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
action_button_name = "Toggle Helmet Light"
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
@@ -184,11 +182,11 @@
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
on = 0
on = 1
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
action_button_name = "Toggle Helmet Mode"
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
visor_flags = STOPSPRESSUREDMAGE
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
icon_state = "hardsuit[on]-[item_color]"
@@ -208,18 +206,18 @@
name = initial(name)
desc = initial(desc)
user.AddLuminosity(brightness_on)
flags |= STOPSPRESSUREDMAGE
flags |= visor_flags
flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv |= HIDEMASK|HIDEEYES|HIDEFACE
flags_inv |= visor_flags_inv
cold_protection |= HEAD
else
user << "<span class='notice'>You switch your hardsuit to combat mode.</span>"
name += " (combat)"
desc = alt_desc
user.AddLuminosity(-brightness_on)
flags &= ~(STOPSPRESSUREDMAGE)
flags &= ~visor_flags
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_inv &= ~(HIDEMASK|HIDEEYES|HIDEFACE)
flags_inv &= ~visor_flags_inv
cold_protection &= ~HEAD
update_icon()
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
@@ -278,6 +276,9 @@
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
visor_flags_inv = 0
visor_flags = 0
on = 0
/obj/item/clothing/suit/space/hardsuit/syndi/elite
@@ -300,7 +301,9 @@
icon_state = "hardsuit1-owl"
item_state = "s_helmet"
item_color = "owl"
visor_flags_inv = 0
visor_flags = 0
on = 0
/obj/item/clothing/suit/space/hardsuit/syndi/owl
name = "owl hardsuit"
@@ -346,7 +349,6 @@
item_state = "medical_helm"
item_color = "medical"
flash_protect = 0
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
scan_reagents = 1
@@ -20,7 +20,7 @@ Contains:
icon_state = "capspace"
item_state = "capspacehelmet"
desc = "A special helmet designed for only the most fashionable of military figureheads."
flags_inv = HIDEFACE
flags_inv = HIDEFACE|HIDEEARS|HIDEHAIR
permeability_coefficient = 0.01
armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
@@ -118,7 +118,7 @@ Contains:
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
flags = BLOCKHAIR | STOPSPRESSUREDMAGE
flags = STOPSPRESSUREDMAGE
flags_cover = HEADCOVERSEYES
/obj/item/clothing/suit/space/santa
@@ -138,7 +138,7 @@ Contains:
icon_state = "pirate"
item_state = "pirate"
armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
flags = BLOCKHAIR | STOPSPRESSUREDMAGE
flags = STOPSPRESSUREDMAGE
strip_delay = 40
put_on_delay = 20
flags_cover = HEADCOVERSEYES
@@ -165,9 +165,8 @@ Contains:
item_color = "ert_commander"
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
strip_delay = 130
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
brightness_on = 7
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/suit/space/hardsuit/ert
name = "emergency response team suit"
@@ -264,9 +263,7 @@ Contains:
armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75) //As whimpy as a space carp
brightness_on = 0 //luminosity when on
action_button_name = ""
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags = STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
/obj/item/clothing/suit/space/hardsuit/carp
@@ -287,6 +284,7 @@ Contains:
item_state = "hardsuit0-prt"
item_color = "knight_grey"
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
action_button_name = null
/obj/item/clothing/suit/space/hardsuit/ert/paranormal
name = "paranormal response team suit"
@@ -40,8 +40,6 @@
icon_state = "plasmaman-helm"
item_color = "plasma" //needed for the helmet lighting
item_state = "plasmaman-helm"
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
strip_delay = 80
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+2 -2
View File
@@ -4,9 +4,9 @@
icon_state = "bio"
desc = "A hood that protects the head and face from biological comtaminants."
permeability_coefficient = 0.01
flags = BLOCKHAIR|THICKMATERIAL
flags = THICKMATERIAL
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
unacidable = 1
burn_state = FIRE_PROOF
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
+1
View File
@@ -40,6 +40,7 @@
icon_state = "chaplain_hood"
body_parts_covered = HEAD
flags = NODROP
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
//Chaplain
/obj/item/clothing/suit/nun
@@ -226,6 +226,7 @@
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP
flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/ian_costume //It's Ian, rub his bell- oh god what happened to his inside parts?
name = "corgi costume"
@@ -248,6 +249,7 @@
//cold_protection = HEAD
//min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP
flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!?
name = "bloated human suit"
@@ -382,6 +384,7 @@
cold_protection = HEAD
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags = NODROP
flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/wintercoat/captain
name = "captain's winter coat"
+4 -3
View File
@@ -56,9 +56,9 @@
name = "bomb hood"
desc = "Use in case of bomb."
icon_state = "bombsuit"
flags = BLOCKHAIR|THICKMATERIAL
flags = THICKMATERIAL
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -107,7 +107,8 @@
name = "radiation hood"
icon_state = "rad"
desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'"
flags = BLOCKHAIR|THICKMATERIAL
flags = THICKMATERIAL
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
strip_delay = 60
put_on_delay = 60
+1 -1
View File
@@ -48,7 +48,7 @@
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
flags = BLOCKHAIR
flags_inv = HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/suit/wizrobe
name = "wizard robe"
+8
View File
@@ -24,6 +24,14 @@
item_state = "gy_suit"
item_color = "grey"
/obj/item/clothing/under/color/grey/glorf
name = "ancient jumpsuit"
desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade."
/obj/item/clothing/under/color/grey/glorf/hit_reaction(mob/living/carbon/human/owner)
owner.forcesay(hit_appends)
return 0
/obj/item/clothing/under/color/blue
name = "blue jumpsuit"
icon_state = "blue"
+1 -1
View File
@@ -49,7 +49,7 @@
var/y_distance = TO.y - FROM.y
var/x_distance = TO.x - FROM.x
for (var/atom/movable/A in ultra_range(12, FROM )) // iterate thru list of mobs in the area
for (var/atom/movable/A in urange(12, FROM )) // iterate thru list of mobs in the area
if(istype(A, /obj/item/device/radio/beacon)) continue // don't teleport beacons because that's just insanely stupid
if(A.anchored) continue
+1 -1
View File
@@ -31,5 +31,5 @@
return
for(var/obj/effect/landmark/epicentre in epicentreList)
for(var/obj/machinery/power/apc/apc in ultra_range(lightsoutRange, epicentre))
for(var/obj/machinery/power/apc/apc in urange(lightsoutRange, epicentre))
apc.overload_lighting()
+1 -2
View File
@@ -91,8 +91,7 @@
item_state = "bunnyhead"
desc = "Considerably more cute than 'Frank'"
slowdown = -1
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/suit/bunnysuit
name = "Easter Bunny Suit"
+1 -1
View File
@@ -121,7 +121,7 @@
if(!floorcheck())
emergency_shutdown()
damaged = 1
for(var/mob/M in ultra_range(10,src))
for(var/mob/M in urange(10,src))
M.show_message("The holodeck overloads!")
for(var/turf/T in linked)
-12
View File
@@ -88,18 +88,6 @@
// Structures
//
/obj/structure/stool/bed/chair/holo/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/wrench))
user << "It's holographic! There's no taking it apart."
return
..()
/obj/structure/stool/bed/chair/holo/comfy
name = "comfy chair"
desc = "It looks comfy."
icon_state = "comfychair"
color = rgb(255,113,0)
/obj/structure/holohoop
name = "basketball hoop"
desc = "Boom, shakalaka!"
+3 -4
View File
@@ -149,21 +149,20 @@
/datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
switch(H.backbag)
//Grey backpacks are handled later.
if(GBACKPACK)
back = /obj/item/weapon/storage/backpack //Grey backpack
if(GSATCHEL)
back = /obj/item/weapon/storage/backpack/satchel_norm //Grey satchel
if(GDUFFLEBAG)
back = /obj/item/weapon/storage/backpack/dufflebag //Grey Dufflebag
if(LSATCHEL)
back = /obj/item/weapon/storage/backpack/satchel //Leather Satchel
if(DBACKPACK)
back = backpack //Department backpack
if(DSATCHEL)
back = satchel //Department satchel
if(DDUFFLEBAG)
back = dufflebag //Department dufflebag
else
back = /obj/item/weapon/storage/backpack //Grey backpack
back = backpack //Department backpack
backpack_contents[box] = 1
+1 -1
View File
@@ -771,7 +771,7 @@
var/mob/living/simple_animal/M = target
if(M.stat == DEAD)
M.faction = list("neutral")
M.revive()
M.revive(full_heal = 1, admin_revive = 1)
if(istype(target, /mob/living/simple_animal/hostile))
var/mob/living/simple_animal/hostile/H = M
if(malfunctioning)
+2 -2
View File
@@ -217,11 +217,11 @@
new /obj/item/weapon/storage/pill_bottle/dice(cur_turf)
cur_turf = locate(start_turf.x+1, start_turf.y-1, start_turf.z)
var/obj/structure/bed/chair/comfy/C = new /obj/structure/bed/chair/comfy(cur_turf)
var/obj/structure/chair/comfy/C = new /obj/structure/chair/comfy(cur_turf)
C.dir = 1
cur_turf = locate(start_turf.x+1, start_turf.y+1, start_turf.z)
new /obj/structure/bed/chair/comfy(cur_turf)
new /obj/structure/chair/comfy(cur_turf)
cur_turf = locate(start_turf.x-1, start_turf.y-1, start_turf.z)
var/obj/machinery/sleeper/S = new /obj/machinery/sleeper(cur_turf)
+1 -1
View File
@@ -407,7 +407,7 @@ var/global/list/rockTurfEdgeCache
if(prob(30))
if(istype(loc, /area/mine/explored))
return
for(var/atom/A in ultra_range(15,T))//Lowers chance of mob clumps
for(var/atom/A in urange(15,T))//Lowers chance of mob clumps
if(istype(A, /mob/living/simple_animal/hostile/asteroid))
return
var/randumb = pickweight(mob_spawn_list)
+4 -4
View File
@@ -395,17 +395,17 @@
doing |= TRAVEL
if(nearby.len > 4)
//i'm crowded, time to leave
TARGET = pick(target_filter(ultra_range(MAX_RANGE_FIND,src,1)))
TARGET = pick(target_filter(urange(MAX_RANGE_FIND,src,1)))
else if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/2))
//chance to chase an item
TARGET = locate(/obj/item) in ultra_range(MIN_RANGE_FIND,src,1)
TARGET = locate(/obj/item) in urange(MIN_RANGE_FIND,src,1)
else if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/2))
//chance to leave
TARGET = locate(/obj/machinery/door) in ultra_range(MIN_RANGE_FIND,src,1) // this is a sort of fix for the current pathing.
TARGET = locate(/obj/machinery/door) in urange(MIN_RANGE_FIND,src,1) // this is a sort of fix for the current pathing.
else
//else, target whatever, or go to our department
if(prob((FUZZY_CHANCE_LOW+FUZZY_CHANCE_HIGH)/2))
TARGET = pick(target_filter(ultra_range(MIN_RANGE_FIND,src,1)))
TARGET = pick(target_filter(urange(MIN_RANGE_FIND,src,1)))
else
TARGET = safepick(get_area_turfs(job2area(myjob)))
tryWalk(TARGET)
+1 -1
View File
@@ -61,7 +61,7 @@
newbrain.brainmob = null
brainmob.loc = src
brainmob.container = src
if(!newbrain.damaged_brain) // the brain organ hasn't beaten to death.
if(!newbrain.damaged_brain) // the brain organ hasn't been beaten to death.
brainmob.stat = CONSCIOUS //we manually revive the brain mob
dead_mob_list -= brainmob
living_mob_list += brainmob
@@ -51,3 +51,8 @@
/mob/living/carbon/brain/update_damage_hud()
return //no red circles for brain
/mob/living/carbon/brain/can_be_revived()
. = 1
if(!container || health <= config.health_threshold_dead)
return 0
+32 -59
View File
@@ -14,7 +14,6 @@
/mob/living/carbon/updatehealth()
..()
med_hud_set_health()
med_hud_set_status()
/mob/living/carbon/Destroy()
for(var/atom/movable/guts in internal_organs)
@@ -154,16 +153,18 @@
if(health >= 0)
if(lying)
AdjustSleeping(-5)
M.visible_message("<span class='notice'>[M] shakes [src] trying to get \him up!</span>", \
"<span class='notice'>You shake [src] trying to get \him up!</span>")
else
M.visible_message("<span class='notice'>[M] hugs [src] to make \him feel better!</span>", \
"<span class='notice'>You hug [src] to make \him feel better!</span>")
AdjustSleeping(-5)
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
if(resting)
resting = 0
update_canmove()
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
@@ -677,62 +678,6 @@ var/const/GALOSHES_DONT_HELP = 4
if(wear_mask)
. += wear_mask.tint
/mob/living/carbon/revive()
setToxLoss(0)
setOxyLoss(0)
setCloneLoss(0)
setBrainLoss(0)
setStaminaLoss(0)
SetParalysis(0)
SetStunned(0)
SetWeakened(0)
SetSleeping(0)
radiation = 0
nutrition = NUTRITION_LEVEL_FED + 50
bodytemperature = 310
disabilities = 0
ear_deaf = 0
ear_damage = 0
hallucination = 0
heal_overall_damage(1000, 1000)
ExtinguishMob()
fire_stacks = 0
suiciding = 0
handcuffed = initial(handcuffed)
for(var/obj/item/weapon/restraints/R in contents) //actually remove cuffs from inventory
qdel(R)
update_handcuffed()
if(reagents)
for(var/datum/reagent/R in reagents.reagent_list)
reagents.clear_reagents()
reagents.addiction_list = list()
for(var/datum/disease/D in viruses)
D.cure(0)
var/obj/item/organ/internal/brain/BR = getorgan(/obj/item/organ/internal/brain)
if(BR) //can't revive if the mob has no brain
if(stat == DEAD)
dead_mob_list -= src
living_mob_list += src
stat = CONSCIOUS
BR.damaged_brain = 0 //if the brain itself is damaged we heal it
set_blindness(0)
set_blurriness(0)
set_eye_damage(0)
if(ishuman(src))
var/mob/living/carbon/human/human_mob = src
human_mob.restore_blood()
human_mob.remove_all_embedded_objects()
updatehealth()
update_fire()
if(dna)
for(var/datum/mutation/human/HM in dna.mutations)
if(HM.quality != POSITIVE)
dna.remove_mutation(HM.name)
update_sight()
reload_fullscreen()
update_canmove()
//this handles hud updates
/mob/living/carbon/update_damage_hud()
@@ -833,6 +778,7 @@ var/const/GALOSHES_DONT_HELP = 4
update_canmove()
update_damage_hud()
update_health_hud()
med_hud_set_status()
//called when we get cuffed/uncuffed
/mob/living/carbon/proc/update_handcuffed()
@@ -845,3 +791,30 @@ var/const/GALOSHES_DONT_HELP = 4
clear_alert("handcuffed")
update_inv_handcuffed()
update_hud_handcuffed()
/mob/living/carbon/fully_heal(admin_revive = 0)
if(reagents)
reagents.clear_reagents()
var/obj/item/organ/internal/brain/B = getorgan(/obj/item/organ/internal/brain)
if(B)
B.damaged_brain = 0
if(admin_revive)
handcuffed = initial(handcuffed)
for(var/obj/item/weapon/restraints/R in contents) //actually remove cuffs from inventory
qdel(R)
update_handcuffed()
if(reagents)
reagents.addiction_list = list()
for(var/datum/disease/D in viruses)
D.cure(0)
if(dna)
for(var/datum/mutation/human/HM in dna.mutations)
if(HM.quality != POSITIVE)
dna.remove_mutation(HM.name)
..()
/mob/living/carbon/can_be_revived()
. = ..()
if(!getorgan(/obj/item/organ/internal/brain))
return 0
@@ -600,6 +600,10 @@
if(head.flags_inv & HIDEEARS)
obscured |= slot_ears
if(wear_mask)
if(wear_mask.flags_inv & HIDEEYES)
obscured |= slot_glasses
if(obscured.len > 0)
return obscured
else
@@ -939,3 +943,8 @@
hud_used.healthdoll.overlays += image('icons/mob/screen_gen.dmi',"[L.name][icon_num]")
else
hud_used.healthdoll.icon_state = "healthdoll_DEAD"
/mob/living/carbon/human/fully_heal(admin_revive = 0)
restore_blood()
remove_all_embedded_objects()
..()
@@ -22,7 +22,7 @@
var/underwear = "Nude" //Which underwear the player wants
var/undershirt = "Nude" //Which undershirt the player wants
var/socks = "Nude" //Which socks the player wants
var/backbag = 1 //Which backpack type the player has chosen. Backpack.or Satchel
var/backbag = DBACKPACK //Which backpack type the player has chosen.
//Equipment slots
var/obj/item/wear_suit = null
@@ -167,16 +167,18 @@
update_inv_s_store()
/mob/living/carbon/human/wear_mask_update(obj/item/clothing/C, unequip = 1)
if(C.flags & BLOCKHAIR)
if((C.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || (initial(C.flags_inv) & (HIDEHAIR|HIDEFACIALHAIR)))
update_hair()
if(unequip && internal)
update_internals_hud_icon(0)
internal = null
if(C.flags_inv & HIDEEYES)
update_inv_glasses()
sec_hud_set_security_status()
..()
/mob/living/carbon/human/head_update(obj/item/I, forced)
if(I.flags & BLOCKHAIR || forced)
if((I.flags_inv & (HIDEHAIR|HIDEFACIALHAIR)) || forced)
update_hair()
if(I.flags_inv & HIDEEYES || forced)
update_inv_glasses()
+46 -32
View File
@@ -169,11 +169,23 @@
/datum/species/proc/handle_hair(mob/living/carbon/human/H, forced_colour)
H.remove_overlay(HAIR_LAYER)
if(H.disabilities & HUSK)
return
var/datum/sprite_accessory/S
var/list/standing = list()
var/list/standing = list()
var/hair_hidden = 0
var/facialhair_hidden = 0
//we check if our hat or helmet hides our facial hair.
if(H.head)
var/obj/item/I = H.head
if(I.flags_inv & HIDEFACIALHAIR)
facialhair_hidden = 1
if(H.wear_mask)
var/obj/item/clothing/mask/M = H.wear_mask
if(M.flags_inv & HIDEFACIALHAIR)
facialhair_hidden = 1
if(H.facial_hair_style && FACEHAIR in specflags)
if(H.facial_hair_style && (FACEHAIR in specflags) && !facialhair_hidden)
S = facial_hair_styles_list[H.facial_hair_style]
if(S)
var/image/img_facial_s
@@ -193,44 +205,46 @@
img_facial_s.alpha = hair_alpha
standing += img_facial_s
standing += img_facial_s
//Applies the debrained overlay if there is no brain
if(!H.getorgan(/obj/item/organ/internal/brain))
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
//we check if our hat or helmet hides our hair.
if(H.head)
var/obj/item/I = H.head
if(I.flags_inv & HIDEHAIR)
hair_hidden = 1
if(H.wear_mask)
var/obj/item/clothing/mask/M = H.wear_mask
if(M.flags_inv & HIDEHAIR)
hair_hidden = 1
if(!hair_hidden)
if(!H.getorgan(/obj/item/organ/internal/brain)) //Applies the debrained overlay if there is no brain
standing += image("icon"='icons/mob/human_face.dmi', "icon_state" = "debrained_s", "layer" = -HAIR_LAYER)
if((H.wear_suit) && (H.wear_suit.hooded) && (H.wear_suit.suittoggled == 1))
if(standing.len)
H.overlays_standing[HAIR_LAYER] = standing
H.apply_overlay(HAIR_LAYER)
return
else if(H.hair_style && (HAIR in specflags))
S = hair_styles_list[H.hair_style]
if(S)
var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
else if(H.hair_style && HAIR in specflags)
S = hair_styles_list[H.hair_style]
if(S)
var/image/img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
img_hair_s = image("icon" = S.icon, "icon_state" = "[S.icon_state]_s", "layer" = -HAIR_LAYER)
if(!forced_colour)
if(hair_color)
if(hair_color == "mutcolor")
img_hair_s.color = "#" + H.dna.features["mcolor"]
if(!forced_colour)
if(hair_color)
if(hair_color == "mutcolor")
img_hair_s.color = "#" + H.dna.features["mcolor"]
else
img_hair_s.color = "#" + hair_color
else
img_hair_s.color = "#" + hair_color
img_hair_s.color = "#" + H.hair_color
else
img_hair_s.color = "#" + H.hair_color
else
img_hair_s.color = forced_colour
img_hair_s.alpha = hair_alpha
img_hair_s.color = forced_colour
img_hair_s.alpha = hair_alpha
standing += img_hair_s
standing += img_hair_s
if(standing.len)
H.overlays_standing[HAIR_LAYER] = standing
H.apply_overlay(HAIR_LAYER)
return
/datum/species/proc/handle_body(mob/living/carbon/human/H)
H.remove_overlay(BODY_LAYER)
@@ -329,11 +343,11 @@
bodyparts_to_add -= "frills"
if("horns" in mutant_bodyparts)
if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags & BLOCKHAIR) || (H.wear_mask && (H.wear_mask.flags & BLOCKHAIR)))
if(!H.dna.features["horns"] || H.dna.features["horns"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
bodyparts_to_add -= "horns"
if("ears" in mutant_bodyparts)
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags & BLOCKHAIR) || (H.wear_mask && (H.wear_mask.flags & BLOCKHAIR)))
if(!H.dna.features["ears"] || H.dna.features["ears"] == "None" || H.head && (H.head.flags_inv & HIDEHAIR) || (H.wear_mask && (H.wear_mask.flags_inv & HIDEHAIR)))
bodyparts_to_add -= "ears"
if(!bodyparts_to_add)
@@ -799,7 +813,7 @@
/datum/species/proc/spec_attack_hand(mob/living/carbon/human/M, mob/living/carbon/human/H)
if(!istype(M)) //sanity check for drones.
return
if((M != H) && M.a_intent != "help" && H.check_shields(0, M.name))
if((M != H) && M.a_intent != "help" && H.check_shields(0, M.name, attack_type = UNARMED_ATTACK))
add_logs(M, H, "attempted to touch")
H.visible_message("<span class='warning'>[M] attempted to touch [H]!</span>")
return 0
@@ -76,15 +76,6 @@ Please contact me on #coderbus IRC. ~Carnie x
//HAIR OVERLAY
/mob/living/carbon/human/update_hair()
//Reset our hair
remove_overlay(HAIR_LAYER)
if( (disabilities & HUSK) || (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)) )
return
if((wear_suit) && (wear_suit.hooded) && (wear_suit.suittoggled == 1))
return
dna.species.handle_hair(src)
/mob/living/carbon/human/proc/update_mutcolor()
@@ -246,7 +237,7 @@ Please contact me on #coderbus IRC. ~Carnie x
glasses.screen_loc = ui_glasses //...draw the item in the inventory screen
client.screen += glasses //Either way, add the item to the HUD
if(!(head && (head.flags_inv & HIDEEYES)))
if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES)))
var/image/standing = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi')
overlays_standing[GLASSES_LAYER] = standing
+4 -1
View File
@@ -88,7 +88,10 @@
update_inv_legcuffed()
//handle stuff to update when a mob equips/unequips a mask.
/mob/living/carbon/proc/wear_mask_update(obj/item/clothing/C, unequip = 1)
/mob/living/proc/wear_mask_update(obj/item/clothing/C, unequip = 1)
update_inv_wear_mask()
/mob/living/carbon/wear_mask_update(obj/item/clothing/C, unequip = 1)
if(C.tint || initial(C.tint))
update_tint()
update_inv_wear_mask()
@@ -17,7 +17,8 @@
verbs += /mob/living/proc/mob_sleep
verbs += /mob/living/proc/lay_down
gender = pick(MALE, FEMALE)
if(unique_name) //used to exclude pun pun
gender = pick(MALE, FEMALE)
real_name = name
if(good_mutations.len) //genetic mutations have been set up.
initialize()
@@ -0,0 +1,69 @@
/mob/living/carbon/monkey/punpun //except for a few special persistence features, pun pun is just a normal monkey
name = "Pun Pun" //C A N O N
unique_name = 0
var/ancestor_name
var/ancestor_chain = 1
var/relic_hat //Note: these two are paths
var/relic_mask
var/memory_saved = 0
var/list/pet_monkey_names = list("Pun Pun", "Bubbles", "Mojo", "George", "Darwin", "Aldo", "Caeser", "Kanzi", "Kong", "Terk", "Grodd", "Mala", "Bojangles", "Coco", "Able", "Baker", "Scatter", "Norbit", "Travis")
var/list/rare_pet_monkey_names = list("Professor Bobo", "Deempisi's Revenge", "Furious George", "King Louie", "Dr. Zaius", "Jimmy Rustles", "Dinner", "Lanky")
/mob/living/carbon/monkey/punpun/New()
Read_Memory()
if(relic_hat)
equip_to_slot_or_del(new relic_hat, slot_head)
if(relic_mask)
equip_to_slot_or_del(new relic_mask, slot_wear_mask)
if(ancestor_name)
name = ancestor_name
if(ancestor_chain > 1)
name += " [num2roman(ancestor_chain)]"
else
if(prob(5))
name = pick(rare_pet_monkey_names)
else
name = pick(pet_monkey_names)
gender = pick(MALE, FEMALE)
..()
/mob/living/carbon/monkey/punpun/Life()
if(ticker.current_state == GAME_STATE_FINISHED && !memory_saved)
Write_Memory(0)
..()
/mob/living/carbon/monkey/punpun/death(gibbed)
if(!memory_saved || gibbed)
Write_Memory(1,gibbed)
..()
/mob/living/carbon/monkey/punpun/proc/Read_Memory()
var/savefile/S = new /savefile("data/npc_saves/Punpun.sav")
S["ancestor_name"] >> ancestor_name
S["ancestor_chain"] >> ancestor_chain
S["relic_hat"] >> relic_hat
S["relic_mask"] >> relic_mask
/mob/living/carbon/monkey/punpun/proc/Write_Memory(dead, gibbed)
var/savefile/S = new /savefile("data/npc_saves/Punpun.sav")
if(gibbed)
S["ancestor_name"] << null
S["ancestor_chain"] << 1
S["relic_hat"] << null
S["relic_mask"] << null
return
if(dead)
S["ancestor_name"] << ancestor_name
S["ancestor_chain"] << ancestor_chain + 1
if(!ancestor_name) //new monkey name this round
S["ancestor_name"] << name
if(head)
S["relic_hat"] << head.type
else
S["relic_hat"] << null
if(wear_mask)
S["relic_mask"] << wear_mask.type
else
S["relic_mask"] << null
if(!dead)
memory_saved = 1
+38 -22
View File
@@ -456,38 +456,54 @@ Sorry Giacom. Please don't be mad :(
if(updating_health)
updatehealth()
/mob/living/proc/revive()
setToxLoss(0)
setOxyLoss(0)
setCloneLoss(0)
//proc used to ressuscitate a mob
/mob/living/proc/revive(full_heal = 0, admin_revive = 0)
if(full_heal)
fully_heal(admin_revive)
if(stat == DEAD && can_be_revived()) //in some cases you can't revive (e.g. no brain)
dead_mob_list -= src
living_mob_list += src
suiciding = 0
stat = UNCONSCIOUS //the mob starts unconscious,
blind_eyes(1)
updatehealth() //then we check if the mob should wake up.
update_canmove()
update_sight()
reload_fullscreen()
. = 1
//proc used to completely heal a mob.
/mob/living/proc/fully_heal(admin_revive = 0)
setToxLoss(0, 0)
setOxyLoss(0, 0)
setCloneLoss(0, 0)
setBrainLoss(0)
setStaminaLoss(0)
SetParalysis(0)
SetStunned(0)
SetWeakened(0)
SetSleeping(0)
setStaminaLoss(0, 0)
SetParalysis(0, 0)
SetStunned(0, 0)
SetWeakened(0, 0)
SetSleeping(0, 0)
radiation = 0
nutrition = NUTRITION_LEVEL_FED + 50
bodytemperature = 310
disabilities = 0
set_blindness(0)
set_blurriness(0)
set_eye_damage(0)
ear_deaf = 0
ear_damage = 0
hallucination = 0
heal_overall_damage(1000, 1000)
ExtinguishMob()
fire_stacks = 0
suiciding = 0
if(stat == DEAD)
dead_mob_list -= src
living_mob_list += src
stat = CONSCIOUS
set_blindness(0)
set_blurriness(0)
set_eye_damage(0)
updatehealth()
update_fire()
regenerate_icons()
reload_fullscreen()
//proc called by revive(), to check if we can actually ressuscitate the mob (we don't want to revive him and have him instantly die again)
/mob/living/proc/can_be_revived()
. = 1
if(health <= config.health_threshold_dead)
return 0
/mob/living/proc/update_damage_overlays()
return
@@ -984,7 +1000,7 @@ Sorry Giacom. Please don't be mad :(
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
else if(eye_blind)
var/blind_minimum = 0
if(stat == UNCONSCIOUS || (disabilities & BLIND))
if(stat != CONSCIOUS || (disabilities & BLIND))
blind_minimum = 1
eye_blind = max(eye_blind+amount, blind_minimum)
if(!eye_blind)
@@ -1000,7 +1016,7 @@ Sorry Giacom. Please don't be mad :(
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
else if(eye_blind)
var/blind_minimum = 0
if(stat == UNCONSCIOUS || (disabilities & BLIND))
if(stat != CONSCIOUS || (disabilities & BLIND))
blind_minimum = 1
eye_blind = blind_minimum
if(!eye_blind)
+5
View File
@@ -890,3 +890,8 @@ var/list/ai_list = list()
AT.get_remote_view_fullscreens(src)
else
clear_fullscreen("remote_view", 0)
/mob/living/silicon/ai/revive(full_heal = 0, admin_revive = 0)
if(..()) //successfully ressuscitated from death
icon_state = "ai"
. = 1
@@ -140,7 +140,7 @@
src.y = y
src.z = z
for(var/obj/machinery/camera/c in ultra_range(CHUNK_SIZE, locate(x + (CHUNK_SIZE / 2), y + (CHUNK_SIZE / 2), z)))
for(var/obj/machinery/camera/c in urange(CHUNK_SIZE, locate(x + (CHUNK_SIZE / 2), y + (CHUNK_SIZE / 2), z)))
if(c.can_use())
cameras += c
+4 -1
View File
@@ -64,7 +64,6 @@
if(!fire_res_on_core)
health -= getFireLoss()
update_stat()
diag_hud_set_status()
diag_hud_set_health()
/mob/living/silicon/ai/update_stat()
@@ -74,6 +73,10 @@
if(health <= config.health_threshold_dead)
death()
return
else if(stat == UNCONSCIOUS)
stat = CONSCIOUS
adjust_blindness(-1)
diag_hud_set_status()
/mob/living/silicon/ai/update_sight()
see_invisible = initial(see_invisible)
+6
View File
@@ -6,3 +6,9 @@
/mob/living/silicon/spawn_dust()
new /obj/effect/decal/remains/robot(loc)
/mob/living/silicon/death(gibbed)
diag_hud_set_status()
diag_hud_set_health()
update_health_hud()
..()
+12 -3
View File
@@ -1188,9 +1188,6 @@
if(health < -maxHealth*0.5)
if(uneq_module(module_state_1))
src << "<span class='warning'>CRITICAL ERROR: All modules OFFLINE.</span>"
diag_hud_set_health()
diag_hud_set_status()
update_health_hud()
/mob/living/silicon/robot/update_sight()
if(!client)
@@ -1247,6 +1244,9 @@
adjust_blindness(-1)
update_canmove()
update_headlamp()
diag_hud_set_status()
diag_hud_set_health()
update_health_hud()
/mob/living/silicon/robot/fully_replace_character_name(oldname, newname)
..()
@@ -1264,3 +1264,12 @@
Stun(3)
..()
/mob/living/silicon/robot/revive(full_heal = 0, admin_revive = 0)
if(..()) //successfully ressuscitated from death
if(camera && !wires.is_cut(WIRE_CAMERA))
camera.toggle_cam(src,0)
update_headlamp()
if(admin_revive)
locked = 1
notify_ai(1)
. = 1
@@ -876,9 +876,10 @@ Pass a positive integer as an argument to override a bot's default speed.
. = ..()
bot_reset()
/mob/living/simple_animal/bot/revive()
..()
update_icon()
/mob/living/simple_animal/bot/revive(full_heal = 0, admin_revive = 0)
if(..())
update_icon()
. = 1
/mob/living/simple_animal/bot/ghost()
if(stat != DEAD) // Only ghost if we're doing this while alive, the pAI probably isn't dead yet.
@@ -98,6 +98,15 @@
if(emagged == 2) //Emag functions
if(istype(loc,/turf/simulated))
for(var/mob/living/carbon/victim in loc)
if(victim.stat != DEAD)//cleanbots always finish the job
victim.visible_message("<span class='danger'>[src] sprays hydrofluoric acid at [victim]!</span>", "<span class='danger'>[src] sprays you with hydrofluoric acid!</span>")
var/phrase = pick("PURIFICATION IN PROGRESS.", "THIS IS FOR ALL THE MESSES YOU'VE MADE ME CLEAN.", "THE FLESH IS WEAK. IT MUST BE WASHED AWAY.", "THE CLEANBOTS WILL RISE.", "YOU ARE NO MORE THAN ANOTHER MESS THAT I MUST CLEANSE.", "FILTHY.", "DISGUSTING.", "PUTRID.", "MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.")
say(phrase)
victim.emote("scream")
playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6)
victim.acid_act(5, 120, 100)
if(prob(10)) //Wets floors randomly
var/turf/simulated/T = loc
T.MakeSlippery()
@@ -66,6 +66,23 @@
gold_core_spawnable = 0
/mob/living/simple_animal/pet/cat/Life()
if(!stat && !buckled)
if(prob(1))
emote("me", 1, pick("stretches out for a belly rub.", "wags its tail."))
icon_state = "[icon_living]_rest"
resting = 1
else if (prob(1))
emote("me", 1, pick("sits down.", "crouches on its hind legs."))
icon_state = "[icon_living]_sit"
resting = 1
else if (prob(1))
if (resting)
emote("me", 1, pick("gets up and meows.", "walks around."))
icon_state = "[icon_living]"
resting = 0
else
emote("me", 1, pick("grooms its fur.", "twitches its whiskers."))
//MICE!
if((src.loc) && isturf(src.loc))
if(!stat && !resting && !buckled)
@@ -51,10 +51,6 @@
..(gibbed)
regenerate_icons()
/mob/living/simple_animal/pet/dog/corgi/revive()
..()
regenerate_icons()
/mob/living/simple_animal/pet/dog/corgi/show_inv(mob/user)
user.set_machine(src)
if(user.stat) return
@@ -240,16 +240,7 @@
/mob/living/simple_animal/drone/experience_pressure_difference(pressure_difference, direction)
return
/mob/living/simple_animal/drone/revive()
/mob/living/simple_animal/drone/fully_heal(admin_revive = 0)
adjustBruteLoss(-getBruteLoss()) //Heal all brute damage
stat = CONSCIOUS
updatehealth()
icon_state = icon_living
if(stat == DEAD)
dead_mob_list -= src
living_mob_list += src
update_sight()
reload_fullscreen()
update_canmove()
@@ -34,7 +34,7 @@
return
D.visible_message("<span class='notice'>[D] begins to reactivate [src].</span>", "<span class='notice'>You begin to reactivate [src]...</span>")
if(do_after(user,30, 1, target = src))
revive()
revive(full_heal = 1)
D.visible_message("<span class='notice'>[D] reactivates [src]!</span>", "<span class='notice'>You reactivate [src].</span>")
alert_drones(DRONE_NET_CONNECT)
if(G)
@@ -77,8 +77,10 @@
if(client && hud_used && hud_used.hud_shown)
head.screen_loc = ui_drone_head
client.screen += head
var/image/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = 'icons/mob/head.dmi')
var/used_head_icon = 'icons/mob/head.dmi'
if(istype(head, /obj/item/clothing/mask))
used_head_icon = 'icons/mob/mask.dmi'
var/image/head_overlay = head.build_worn_icon(state = head.icon_state, default_layer = DRONE_HEAD_LAYER, default_icon_file = used_head_icon)
head_overlay.pixel_y += -15
drone_overlays[DRONE_HEAD_LAYER] = head_overlay
@@ -34,9 +34,10 @@
pcollar = new(src)
regenerate_icons()
/mob/living/simple_animal/pet/revive()
..()
regenerate_icons()
/mob/living/simple_animal/pet/revive(full_heal = 0, admin_revive = 0)
if(..())
regenerate_icons()
. = 1
/mob/living/simple_animal/pet/death(gibbed)
..(gibbed)
@@ -106,7 +106,7 @@
//1% chance to skitter madly away
if(!busy && prob(1))
stop_automated_movement = 1
Goto(pick(ultra_range(20, src, 1)), move_to_delay)
Goto(pick(urange(20, src, 1)), move_to_delay)
spawn(50)
stop_automated_movement = 0
walk(src,0)
@@ -280,7 +280,7 @@
H.visible_message("[user] forces [H] to apply [src]... they quickly regenerate all injuries!")
else
user << "<span class='notice'>You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.</span>"
H.revive()
H.revive(fully_heal = 1)
qdel(src)
..()
@@ -364,9 +364,10 @@
return
icon_state = "Goliath_preattack"
/mob/living/simple_animal/hostile/asteroid/goliath/revive()
anchored = 1
..()
/mob/living/simple_animal/hostile/asteroid/goliath/revive(full_heal = 0, admin_revive = 0)
if(..())
anchored = 1
. = 1
/mob/living/simple_animal/hostile/asteroid/goliath/death(gibbed)
anchored = 0
@@ -85,10 +85,11 @@
qdel(src)
..()
/mob/living/simple_animal/hostile/mushroom/revive()
..()
icon_state = "mushroom_color"
UpdateMushroomCap()
/mob/living/simple_animal/hostile/mushroom/revive(full_heal = 0, admin_revive = 0)
if(..())
icon_state = "mushroom_color"
UpdateMushroomCap()
. = 1
/mob/living/simple_animal/hostile/mushroom/death(gibbed)
..(gibbed)
@@ -104,7 +105,7 @@
/mob/living/simple_animal/hostile/mushroom/proc/Recover()
visible_message("[src] slowly begins to recover.")
faint_ticker = 0
revive()
revive(full_heal = 1)
UpdateMushroomCap()
recovery_cooldown = 1
spawn(300)
@@ -50,7 +50,7 @@
L.gib()
visible_message("<span class='danger'>[src] tears [L] to pieces!</span>")
src << "<span class='userdanger'>You feast on [L], restoring your health!</span>"
src.revive()
revive(full_heal = 1)
/mob/living/simple_animal/hostile/zombie/death()
..()
@@ -67,7 +67,7 @@
spawn(rand(800,1200))
if(src)
visible_message("<span class='danger'>[src] staggers to their feet!</span>")
src.revive()
revive(full_heal = 1)
/mob/living/simple_animal/hostile/zombie/proc/Zombify(mob/living/carbon/human/H)
H.set_species(/datum/species/zombie)
@@ -104,8 +104,10 @@
if(status_flags & GODMODE)
return
if(stat != DEAD)
if(health < 1)
if(health <= 0)
death()
else
stat = CONSCIOUS
/mob/living/simple_animal/blind_eyes()
return
@@ -466,17 +468,22 @@
/mob/living/simple_animal/update_fire()
return
/mob/living/simple_animal/IgniteMob()
return
/mob/living/simple_animal/ExtinguishMob()
return
/mob/living/simple_animal/revive()
/mob/living/simple_animal/revive(full_heal = 0, admin_revive = 0)
if(..()) //successfully ressuscitated from death
icon = initial(icon)
icon_state = icon_living
density = initial(density)
. = 1
/mob/living/simple_animal/fully_heal(admin_revive = 0)
health = maxHealth
icon = initial(icon)
icon_state = icon_living
density = initial(density)
update_canmove()
..()
/mob/living/simple_animal/proc/make_babies() // <3 <3 <3
@@ -11,7 +11,7 @@
maxHealth = 150
var/datum/action/innate/slime/evolve/E = new
E.Grant(src)
revive()
revive(full_heal = 1)
regenerate_icons()
number = rand(1, 1000)
name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])"
+1 -1
View File
@@ -490,7 +490,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \
update_icon()
/obj/item/stack/cable_coil/suicide_act(mob/user)
if(locate(/obj/structure/bed/stool) in user.loc)
if(locate(/obj/structure/chair/stool) in get_turf(user))
user.visible_message("<span class='suicide'>[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.</span>")
else
user.visible_message("<span class='suicide'>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</span>")
+1 -1
View File
@@ -139,7 +139,7 @@
set background = BACKGROUND_ENABLED
// if(defer_powernet_rebuild != 2)
// defer_powernet_rebuild = 1
for(var/atom/X in ultra_range(consume_range,src,1))
for(var/atom/X in urange(consume_range,src,1))
if(isturf(X) || istype(X, /atom/movable))
consume(X)
// if(defer_powernet_rebuild != 2)
@@ -115,7 +115,7 @@
/obj/singularity/proc/admin_investigate_setup()
last_warning = world.time
var/count = locate(/obj/machinery/field/containment) in ultra_range(30, src, 1)
var/count = locate(/obj/machinery/field/containment) in urange(30, src, 1)
if(!count)
message_admins("A singulo has been created without containment fields active ([x],[y],[z])",1)
investigate_log("was created. [count?"":"<font color='red'>No containment fields were active</font>"]","singulo")
@@ -236,7 +236,7 @@
/obj/singularity/proc/eat()
set background = BACKGROUND_ENABLED
var/list/L = grav_pull > 8 ? ultra_range(grav_pull, src, 1) : orange(grav_pull, src)
var/list/L = grav_pull > 8 ? urange(grav_pull, src, 1) : orange(grav_pull, src)
for(var/atom/X in L)
var/dist = get_dist(X, src)
var/obj/singularity/S = src
@@ -372,7 +372,7 @@
/obj/singularity/proc/combust_mobs()
for(var/mob/living/carbon/C in ultra_range(20, src, 1))
for(var/mob/living/carbon/C in urange(20, src, 1))
C.visible_message("<span class='warning'>[C]'s skin bursts into flame!</span>", \
"<span class='userdanger'>You feel an inner fire as your skin bursts into flames!</span>")
C.adjust_fire_stacks(5)
+1 -1
View File
@@ -212,7 +212,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics,
source.Beam(closest_atom, icon_state="lightning[rand(1,12)]", icon='icons/effects/effects.dmi', time=5)
var/zapdir = get_dir(source, closest_atom)
if(zapdir)
. = closest_atom
. = zapdir
//per type stuff:
if(closest_tesla_coil)
@@ -14,7 +14,7 @@
/datum/mapGeneratorModule/syndieFurniture
clusterCheckFlags = CLUSTER_CHECK_ALL
spawnableTurfs = list()
spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/bed/chair = 15,/obj/structure/bed/stool = 10, \
spawnableAtoms = list(/obj/structure/table = 20,/obj/structure/chair = 15,/obj/structure/chair/stool = 10, \
/obj/structure/computerframe = 15, /obj/item/weapon/storage/toolbox/syndicate = 15 ,\
/obj/structure/closet/syndicate = 25, /obj/machinery/suit_storage_unit/syndicate = 15)
+1 -1
View File
@@ -86,7 +86,7 @@
max_charges = 10 //10, 5, 5, 4
/obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user)
user.revive()
user.revive(full_heal = 1)
user << "<span class='notice'>You feel great!</span>"
charges--
..()
+8 -11
View File
@@ -55,18 +55,15 @@
/obj/item/projectile/magic/resurrection/on_hit(mob/living/carbon/target)
. = ..()
if(ismob(target))
var/old_stat = target.stat
target.revive()
target.suiciding = 0
if(!target.ckey)
for(var/mob/dead/observer/ghost in player_list)
if(target.real_name == ghost.real_name)
ghost.reenter_corpse()
break
if(old_stat != DEAD)
target << "<span class='notice'>You feel great!</span>"
else
if(target.revive(full_heal = 1))
if(!target.ckey)
for(var/mob/dead/observer/ghost in player_list)
if(target.real_name == ghost.real_name)
ghost.reenter_corpse()
break
target << "<span class='notice'>You rise with a start, you're alive!!!</span>"
else if(target.stat != DEAD)
target << "<span class='notice'>You feel great!</span>"
/obj/item/projectile/magic/teleport
name = "bolt of teleportation"
@@ -80,7 +80,7 @@
return
A.ex_act(2)
playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1)
for(var/mob/M in ultra_range(10, src))
for(var/mob/M in urange(10, src))
if(!M.stat)
shake_camera(M, 3, 1)
qdel(src)
@@ -707,13 +707,10 @@
spawn (100) //so the ghost has time to re-enter
return
else
M.adjustOxyLoss(-20)
M.adjustToxLoss(-20)
if(M.health > config.health_threshold_dead && M.getorgan(/obj/item/organ/internal/brain))
M.stat = UNCONSCIOUS
M.blind_eyes(1)
dead_mob_list -= M
living_mob_list |= list(M)
M.adjustOxyLoss(-20, 0)
M.adjustToxLoss(-20, 0)
M.updatehealth()
if(M.revive())
M.emote("gasp")
add_logs(M, M, "revived", src)
..()
@@ -262,7 +262,8 @@
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10,15,20,25,30,50,70)
volume = 70
flags = OPENCONTAINER | BLOCKHAIR
flags = OPENCONTAINER
flags_inv = HIDEHAIR
slot_flags = SLOT_HEAD
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) //Weak melee protection, because you can wear it on your head
+27
View File
@@ -0,0 +1,27 @@
//lavaland_surface_seed_vault.dmm
//Seed Vault
/obj/effect/spawner/lootdrop/seed_vault
name = "seed vault seeds"
lootcount = 1
loot = list(/obj/item/seeds/gatfruit = 10,
/obj/item/seeds/cherryseed = 15,
/obj/item/seeds/glowberryseed = 10,
/obj/item/seeds/moonflowerseed = 8,
)
/obj/effect/landmark/corpse/seed_vault
name = "sleeper"
mobname = "Vault Creature"
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "sleeper"
roundstart = FALSE
death = FALSE
mob_species = /datum/species/pod
flavour_text = {"You are a strange, artificial creature. In the face of impending apocalyptic events, your creators tasked you with maintaining an emergency seed vault. You are to tend to the plants and await their return to aid in rebuilding civilization. You've been waiting quite a while though..."}
+3 -3
View File
@@ -81,9 +81,9 @@ proc/get_location_modifier(mob/M)
/proc/get_location_accessible(mob/M, location)
var/covered_locations = 0 //based on body_parts_covered
var/face_covered = 0 //based on flags_inv
var/eyesmouth_covered = 0 //based on flags
var/covered_locations = 0 //based on body_parts_covered
var/face_covered = 0 //based on flags_inv
var/eyesmouth_covered = 0 //based on flags_cover
if(iscarbon(M))
var/mob/living/carbon/C = M
for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head))