mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-21 21:17:44 +01:00
Merge remote-tracking branch 'upstream/master' into uhhhhh
This commit is contained in:
@@ -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)]")
|
||||
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,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()
|
||||
..()
|
||||
@@ -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])"
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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--
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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..."}
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user