mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-16 10:35:41 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into jackit
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
var/savefile/F = new(MEMOFILE)
|
||||
if(F)
|
||||
for(var/ckey in F.dir)
|
||||
src << "<center><span class='motd'><span class='prefix'>Admin Memo</span><span class='emote'>by [F[ckey]]</span></span></center>"
|
||||
src << "<center><span class='motd'><span class='prefix'>Admin Memo</span><span class='emote'> by [F[ckey]]</span></span></center>"
|
||||
|
||||
//delete your own or somebody else's memo
|
||||
/client/proc/admin_memo_delete()
|
||||
|
||||
@@ -1111,7 +1111,7 @@
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT ckey FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')")
|
||||
query.Execute()
|
||||
if(query.NextRow())
|
||||
switch(alert(usr, "Ckey already flagged", "[sql_ckey] is already on the watchlist, do you want to:", "Remove", "Edit reason", "Cancel"))
|
||||
switch(alert(usr, "[sql_ckey] is already on the watchlist, do you want to:", "Ckey already flagged", "Remove", "Edit reason", "Cancel"))
|
||||
if("Cancel")
|
||||
return
|
||||
if("Remove")
|
||||
@@ -1120,7 +1120,7 @@
|
||||
var/err = query_watchdel.ErrorMsg()
|
||||
log_game("SQL ERROR during removing watch entry. Error : \[[err]\]\n")
|
||||
return
|
||||
log_admin("[key_name_admin(usr)] has removed [key_name_admin(M)] from the watchlist")
|
||||
log_admin("[key_name(usr)] has removed [key_name_admin(M)] from the watchlist")
|
||||
message_admins("[key_name_admin(usr)] has removed [key_name_admin(M)] from the watchlist", 1)
|
||||
if("Edit reason")
|
||||
var/DBQuery/query_reason = dbcon.NewQuery("SELECT ckey, reason FROM [format_table_name("watch")] WHERE (ckey = '[sql_ckey]')")
|
||||
@@ -1131,12 +1131,12 @@
|
||||
new_reason = sanitizeSQL(new_reason)
|
||||
if(!new_reason)
|
||||
return
|
||||
var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("watch")] SET reason = '[new_reason]', edits = CONCAT(edits,'- [usr] changed watchlist reason from <cite><b>\\\"[watch_reason]\\\"</b></cite> to <cite><b>\\\"[new_reason]\\\"</b></cite><BR>') WHERE (ckey = '[sql_ckey]')")
|
||||
var/DBQuery/update_query = dbcon.NewQuery("UPDATE [format_table_name("watch")] SET reason = '[new_reason]' WHERE (ckey = '[sql_ckey]')")
|
||||
if(!update_query.Execute())
|
||||
var/err = update_query.ErrorMsg()
|
||||
log_game("SQL ERROR during edit watch entry reason. Error : \[[err]\]\n")
|
||||
return
|
||||
log_admin("[key_name_admin(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1)
|
||||
log_admin("[key_name(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1)
|
||||
message_admins("[key_name_admin(usr)] has edited [sql_ckey]'s reason from [watch_reason] to [new_reason]",1)
|
||||
else
|
||||
var/reason = input(usr,"Reason?","reason","Metagaming") as text|null
|
||||
@@ -1148,7 +1148,7 @@
|
||||
var/err = query_watchadd.ErrorMsg()
|
||||
log_game("SQL ERROR during adding new watch entry. Error : \[[err]\]\n")
|
||||
return
|
||||
log_admin("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]")
|
||||
log_admin("[key_name(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]")
|
||||
message_admins("[key_name_admin(usr)] has added [key_name_admin(M)] to the watchlist - Reason: [reason]", 1)
|
||||
|
||||
else if(href_list["mute"])
|
||||
@@ -1505,6 +1505,8 @@
|
||||
var/mob/dead/observer/A = C.mob
|
||||
sleep(2)
|
||||
A.ManualFollow(M)
|
||||
log_admin("[key_name(usr)] followed [key_name(M)]")
|
||||
message_admins("[key_name_admin(usr)] followed [key_name_admin(M)]")
|
||||
|
||||
else if(href_list["adminplayerobservecoodjump"])
|
||||
if(!isobserver(usr) && !check_rights(R_ADMIN)) return
|
||||
|
||||
@@ -885,7 +885,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/centhat(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/lighter(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
|
||||
@@ -912,7 +912,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/lighter/zippo(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/lighter(M), slot_r_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back)
|
||||
|
||||
var/obj/item/weapon/card/id/W = new(M)
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
corpsehelmet = /obj/item/clothing/head/centhat
|
||||
corpsegloves = /obj/item/clothing/gloves/combat
|
||||
corpseshoes = /obj/item/clothing/shoes/combat/swat
|
||||
corpsepocket1 = /obj/item/weapon/lighter/zippo
|
||||
corpsepocket1 = /obj/item/weapon/lighter
|
||||
corpseid = 1
|
||||
corpseidjob = "Commander"
|
||||
corpseidaccess = "Captain"
|
||||
|
||||
@@ -233,7 +233,7 @@ var/next_external_rsc = 0
|
||||
query_watch.Execute()
|
||||
if(query_watch.NextRow())
|
||||
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]</font>")
|
||||
send2irc_adminless_only("Watchlist", "[key_name_admin(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]")
|
||||
send2irc_adminless_only("Watchlist", "[key_name(src)] is flagged for watching and has just connected - Reason: [query_watch.item[2]]")
|
||||
|
||||
var/admin_rank = "Player"
|
||||
if (src.holder && src.holder.rank)
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
name = "glasses"
|
||||
icon = 'icons/obj/clothing/glasses.dmi'
|
||||
w_class = 2.0
|
||||
flags = GLASSESCOVERSEYES
|
||||
flags_cover = GLASSESCOVERSEYES
|
||||
slot_flags = SLOT_EYES
|
||||
var/vision_flags = 0
|
||||
var/darkness_view = 2//Base human is 2
|
||||
@@ -167,7 +167,7 @@ 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 = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
flags = BLOCKHAIR | 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)
|
||||
@@ -179,6 +179,7 @@ BLIND // can't see anything
|
||||
flash_protect = 2
|
||||
strip_delay = 50
|
||||
put_on_delay = 50
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/suit/space
|
||||
name = "space suit"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "helmet"
|
||||
desc = "Standard Security gear. Protects the head from impacts."
|
||||
icon_state = "helmet"
|
||||
flags = HEADCOVERSEYES | HEADBANGPROTECT
|
||||
flags = HEADBANGPROTECT
|
||||
item_state = "helmet"
|
||||
armor = list(melee = 25, bullet = 15, laser = 25,energy = 10, bomb = 25, bio = 0, rad = 0)
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
@@ -14,6 +14,7 @@
|
||||
var/obj/machinery/camera/portable/helmetCam = null
|
||||
var/spawnWithHelmetCam = 0
|
||||
var/canAttachCam = 0
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/New()
|
||||
@@ -49,7 +50,7 @@
|
||||
toggle_message = "You pull the visor down on"
|
||||
alt_toggle_message = "You push the visor up on"
|
||||
can_toggle = 1
|
||||
flags = HEADCOVERSEYES|HEADCOVERSMOUTH|HEADBANGPROTECT
|
||||
flags = HEADBANGPROTECT
|
||||
armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
strip_delay = 80
|
||||
@@ -57,6 +58,7 @@
|
||||
visor_flags = HEADCOVERSEYES|HEADCOVERSMOUTH
|
||||
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE
|
||||
toggle_cooldown = 0
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/head/helmet/attack_self()
|
||||
if(usr.canmove && !usr.stat && !usr.restrained() && can_toggle)
|
||||
@@ -126,7 +128,7 @@
|
||||
/obj/item/clothing/head/helmet/roman
|
||||
name = "roman helmet"
|
||||
desc = "An ancient helmet made of bronze and leather."
|
||||
flags = HEADCOVERSEYES
|
||||
flags_cover = HEADCOVERSEYES
|
||||
armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0)
|
||||
icon_state = "roman"
|
||||
item_state = "roman"
|
||||
@@ -142,15 +144,16 @@
|
||||
name = "gladiator helmet"
|
||||
desc = "Ave, Imperator, morituri te salutant."
|
||||
icon_state = "gladiator"
|
||||
flags = HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
item_state = "gladiator"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/helmet/redtaghelm
|
||||
name = "red laser tag helmet"
|
||||
desc = "They have chosen their own end."
|
||||
icon_state = "redtaghelm"
|
||||
flags = HEADCOVERSEYES
|
||||
flags_cover = HEADCOVERSEYES
|
||||
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.
|
||||
@@ -160,7 +163,7 @@
|
||||
name = "blue laser tag helmet"
|
||||
desc = "They'll need more men."
|
||||
icon_state = "bluetaghelm"
|
||||
flags = HEADCOVERSEYES
|
||||
flags_cover = HEADCOVERSEYES
|
||||
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.
|
||||
|
||||
@@ -47,7 +47,8 @@
|
||||
name = "nun hood"
|
||||
desc = "Maximum piety in this star system."
|
||||
icon_state = "nun_hood"
|
||||
flags = HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/det_hat
|
||||
name = "detective's fedora"
|
||||
|
||||
@@ -41,7 +41,8 @@
|
||||
name = "hastur's hood"
|
||||
desc = "It's <i>unspeakably</i> stylish."
|
||||
icon_state = "hasturhood"
|
||||
flags = HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/nursehat
|
||||
name = "nurse's hat"
|
||||
@@ -68,7 +69,7 @@
|
||||
desc = "A helmet made out of a box."
|
||||
icon_state = "cardborg_h"
|
||||
item_state = "cardborg_h"
|
||||
flags = HEADCOVERSEYES
|
||||
flags_cover = HEADCOVERSEYES
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
|
||||
/obj/item/clothing/head/justice
|
||||
@@ -76,7 +77,8 @@
|
||||
desc = "Fight for what's righteous!"
|
||||
icon_state = "justicered"
|
||||
item_state = "justicered"
|
||||
flags = HEADCOVERSEYES|BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/head/justice/blue
|
||||
icon_state = "justiceblue"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
name = "welding helmet"
|
||||
desc = "A head-mounted face cover designed to protect the wearer completely from space-arc eye."
|
||||
icon_state = "welding"
|
||||
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
item_state = "welding"
|
||||
m_amt = 1750
|
||||
g_amt = 400
|
||||
@@ -47,7 +47,7 @@
|
||||
name = "cake-hat"
|
||||
desc = "It's tasty looking!"
|
||||
icon_state = "cake0"
|
||||
flags = HEADCOVERSEYES
|
||||
flags_cover = HEADCOVERSEYES
|
||||
var/onfire = 0.0
|
||||
var/status = 0
|
||||
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
|
||||
@@ -116,11 +116,12 @@
|
||||
icon_state = "hardhat0_pumpkin"
|
||||
item_state = "hardhat0_pumpkin"
|
||||
item_color = "pumpkin"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
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
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/*
|
||||
* Kitty ears
|
||||
|
||||
@@ -4,13 +4,14 @@
|
||||
icon_state = "breath"
|
||||
item_state = "m_mask"
|
||||
body_parts_covered = 0
|
||||
flags = MASKCOVERSMOUTH | MASKINTERNALS
|
||||
flags = MASKINTERNALS
|
||||
visor_flags = MASKCOVERSMOUTH | MASKINTERNALS
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.10
|
||||
permeability_coefficient = 0.50
|
||||
action_button_name = "Adjust Breath Mask"
|
||||
ignore_maskadjust = 0
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/mask/breath/attack_self(var/mob/user)
|
||||
adjustmask(user)
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
name = "gas mask"
|
||||
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 = MASKCOVERSMOUTH | MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
|
||||
w_class = 3.0
|
||||
item_state = "gas_alt"
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
|
||||
// **** Welding gas mask ****
|
||||
|
||||
@@ -47,10 +48,11 @@
|
||||
icon_state = "sechailer"
|
||||
var/aggressiveness = 2
|
||||
ignore_maskadjust = 0
|
||||
flags = MASKCOVERSMOUTH | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEFACE
|
||||
visor_flags = MASKCOVERSMOUTH | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
visor_flags_inv = HIDEFACE
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat
|
||||
name = "\improper SWAT mask"
|
||||
@@ -222,9 +224,10 @@
|
||||
/obj/item/clothing/mask/gas/clown_hat
|
||||
name = "clown wig and mask"
|
||||
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
|
||||
flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "clown"
|
||||
item_state = "clown_hat"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
|
||||
/obj/item/clothing/mask/gas/clown_hat/attack_self(mob/user)
|
||||
|
||||
@@ -245,30 +248,34 @@
|
||||
/obj/item/clothing/mask/gas/sexyclown
|
||||
name = "sexy-clown wig and mask"
|
||||
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
|
||||
flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "sexyclown"
|
||||
item_state = "sexyclown"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
|
||||
/obj/item/clothing/mask/gas/mime
|
||||
name = "mime mask"
|
||||
desc = "The traditional mime's mask. It has an eerie facial posture."
|
||||
flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "mime"
|
||||
item_state = "mime"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
|
||||
/obj/item/clothing/mask/gas/monkeymask
|
||||
name = "monkey mask"
|
||||
desc = "A mask used when acting as a monkey."
|
||||
flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "monkeymask"
|
||||
item_state = "monkeymask"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
|
||||
/obj/item/clothing/mask/gas/sexymime
|
||||
name = "sexy mime mask"
|
||||
desc = "A traditional female mime's mask."
|
||||
flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "sexymime"
|
||||
item_state = "sexymime"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
|
||||
/obj/item/clothing/mask/gas/death_commando
|
||||
name = "Death Commando Mask"
|
||||
@@ -283,5 +290,6 @@
|
||||
/obj/item/clothing/mask/gas/owl_mask
|
||||
name = "owl mask"
|
||||
desc = "Twoooo!"
|
||||
flags = MASKCOVERSEYES | BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "owl"
|
||||
flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
icon_state = "owl"
|
||||
flags_cover = MASKCOVERSEYES
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "To stop that awful noise."
|
||||
icon_state = "muzzle"
|
||||
item_state = "blindfold"
|
||||
flags = MASKCOVERSMOUTH
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
w_class = 2
|
||||
gas_transfer_coefficient = 0.90
|
||||
put_on_delay = 20
|
||||
@@ -22,7 +22,7 @@
|
||||
icon_state = "sterile"
|
||||
item_state = "sterile"
|
||||
w_class = 1
|
||||
flags = MASKCOVERSMOUTH
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
flags_inv = HIDEFACE
|
||||
visor_flags = MASKCOVERSMOUTH
|
||||
visor_flags_inv = HIDEFACE
|
||||
@@ -111,7 +111,7 @@
|
||||
name = "botany bandana"
|
||||
desc = "A fine bandana with nanotech lining and a hydroponics pattern."
|
||||
w_class = 1
|
||||
flags = MASKCOVERSMOUTH
|
||||
flags_cover = MASKCOVERSMOUTH
|
||||
flags_inv = HIDEFACE
|
||||
visor_flags = MASKCOVERSMOUTH
|
||||
visor_flags_inv = HIDEFACE
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
var/on = 0
|
||||
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
|
||||
action_button_name = "Toggle Helmet Light"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
|
||||
@@ -162,7 +163,8 @@
|
||||
on = 0
|
||||
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
|
||||
action_button_name = "Toggle Helmet Mode"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
@@ -182,7 +184,8 @@
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
user.AddLuminosity(brightness_on)
|
||||
flags |= HEADCOVERSEYES | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE
|
||||
flags |= STOPSPRESSUREDMAGE
|
||||
flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
flags_inv |= HIDEMASK|HIDEEYES|HIDEFACE
|
||||
cold_protection |= HEAD
|
||||
else
|
||||
@@ -190,7 +193,8 @@
|
||||
name += " (combat)"
|
||||
desc = alt_desc
|
||||
user.AddLuminosity(-brightness_on)
|
||||
flags &= ~(HEADCOVERSEYES| HEADCOVERSMOUTH | STOPSPRESSUREDMAGE)
|
||||
flags &= ~(STOPSPRESSUREDMAGE)
|
||||
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
|
||||
flags_inv &= ~(HIDEMASK|HIDEEYES|HIDEFACE)
|
||||
cold_protection &= ~HEAD
|
||||
update_icon()
|
||||
|
||||
@@ -96,7 +96,8 @@
|
||||
name = "Santa's hat"
|
||||
desc = "Ho ho ho. Merrry X-mas!"
|
||||
icon_state = "santahat"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/suit/space/santa
|
||||
name = "Santa's suit"
|
||||
@@ -115,9 +116,10 @@
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30)
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
strip_delay = 40
|
||||
put_on_delay = 20
|
||||
flags_cover = HEADCOVERSEYES
|
||||
|
||||
/obj/item/clothing/suit/space/pirate
|
||||
name = "pirate coat"
|
||||
@@ -141,8 +143,9 @@
|
||||
item_color = "ert_commander"
|
||||
armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100)
|
||||
strip_delay = 130
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
|
||||
brightness_on = 7
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ert
|
||||
name = "emergency response team suit"
|
||||
|
||||
@@ -39,9 +39,10 @@
|
||||
icon_state = "plasmaman_helmet0-plasma"
|
||||
item_color = "plasma" //needed for the helmet lighting
|
||||
item_state = "plasmaman_helmet0"
|
||||
flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
//Removed the NODROP from /helmet/space/hardsuit.
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
//Removed the HIDEFACE from /helmet/space/hardsuit
|
||||
basestate = "plasmaman_helmet"
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
icon_state = "bio"
|
||||
desc = "A hood that protects the head and face from biological comtaminants."
|
||||
permeability_coefficient = 0.01
|
||||
flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL
|
||||
flags = BLOCKHAIR|THICKMATERIAL
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
unacidable = 1
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
/obj/item/clothing/suit/bio_suit
|
||||
name = "bio suit"
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
name = "bomb hood"
|
||||
desc = "Use in case of bomb."
|
||||
icon_state = "bombsuit"
|
||||
flags = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL
|
||||
flags = BLOCKHAIR|THICKMATERIAL
|
||||
armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
|
||||
cold_protection = HEAD
|
||||
@@ -64,6 +64,7 @@
|
||||
max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT
|
||||
strip_delay = 70
|
||||
put_on_delay = 70
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
|
||||
/obj/item/clothing/suit/bomb_suit
|
||||
@@ -105,10 +106,11 @@
|
||||
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 = HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR|THICKMATERIAL
|
||||
flags = BLOCKHAIR|THICKMATERIAL
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
|
||||
strip_delay = 60
|
||||
put_on_delay = 60
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
|
||||
/obj/item/clothing/suit/radiation
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
//Originally coded by ISaidNo, later modified by Kelenius. Ported from Baystation12.
|
||||
|
||||
/obj/structure/closet/crate/secure/loot
|
||||
name = "abandoned crate"
|
||||
desc = "What could be inside?"
|
||||
icon_crate = "securecrate"
|
||||
icon_state = "securecrate"
|
||||
var/code = null
|
||||
var/lastattempt = null
|
||||
var/attempts = 10
|
||||
var/codelen = 4
|
||||
locked = 1
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/New()
|
||||
..()
|
||||
var/list/digits = list("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")
|
||||
|
||||
code = ""
|
||||
for(var/i = 0, i < codelen, i++)
|
||||
var/dig = pick(digits)
|
||||
code += dig
|
||||
digits -= dig //Player can enter codes with matching digits, but there are never matching digits in the answer
|
||||
|
||||
var/loot = rand(1,100) //100 different crates with varying chances of spawning
|
||||
switch(loot)
|
||||
if(1 to 5) //5% chance
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/bottle/rum(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src)
|
||||
new /obj/item/weapon/lighter(src)
|
||||
if(6 to 10)
|
||||
new /obj/item/weapon/bedsheet(src)
|
||||
new /obj/item/weapon/kitchen/knife(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
new /obj/item/weapon/hatchet(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
if(11 to 15)
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker/bluespace(src)
|
||||
if(16 to 20)
|
||||
for(var/i = 0, i < 10, i++)
|
||||
new /obj/item/weapon/ore/diamond(src)
|
||||
if(21 to 25)
|
||||
for(var/i = 0, i < 5, i++)
|
||||
new /obj/item/weapon/contraband/poster(src)
|
||||
if(26 to 30)
|
||||
for(var/i = 0, i < 3, i++)
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker/noreact(src)
|
||||
if(31 to 35)
|
||||
new /obj/item/seeds/cashseed(src)
|
||||
if(36 to 40)
|
||||
new /obj/item/weapon/melee/baton(src)
|
||||
if(41 to 45)
|
||||
new /obj/item/clothing/under/shorts/red(src)
|
||||
new /obj/item/clothing/under/shorts/blue(src)
|
||||
if(46 to 50)
|
||||
new /obj/item/clothing/under/chameleon(src)
|
||||
for(var/i = 0, i < 7, i++)
|
||||
new /obj/item/clothing/tie/horrible(src)
|
||||
if(51 to 52) // 2% chance
|
||||
new /obj/item/weapon/melee/classic_baton(src)
|
||||
if(53 to 54)
|
||||
new /obj/item/toy/balloon(src)
|
||||
if(55 to 56)
|
||||
var/newitem = pick(typesof(/obj/item/toy/prize) - /obj/item/toy/prize)
|
||||
new newitem(src)
|
||||
if(57 to 58)
|
||||
new /obj/item/toy/syndicateballoon(src)
|
||||
if(59 to 60)
|
||||
new /obj/item/weapon/pickaxe/drill(src)
|
||||
new /obj/item/device/taperecorder(src)
|
||||
new /obj/item/clothing/suit/space(src)
|
||||
new /obj/item/clothing/head/helmet/space(src)
|
||||
if(61 to 62)
|
||||
for(var/i = 0, i < 12, ++i)
|
||||
new /obj/item/clothing/head/kitty(src)
|
||||
if(63 to 64)
|
||||
var/t = rand(4,7)
|
||||
for(var/i = 0, i < t, ++i)
|
||||
var/newcoin = pick(/obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/diamond, /obj/item/weapon/coin/plasma, /obj/item/weapon/coin/uranium)
|
||||
new newcoin(src)
|
||||
if(65 to 66)
|
||||
new /obj/item/clothing/suit/ianshirt(src)
|
||||
if(67 to 68)
|
||||
var/t = rand(4,7)
|
||||
for(var/i = 0, i < t, ++i)
|
||||
var /newitem = pick(typesof(/obj/item/weapon/stock_parts) - /obj/item/weapon/stock_parts - /obj/item/weapon/stock_parts/subspace)
|
||||
new newitem(src)
|
||||
if(69 to 70)
|
||||
for(var/i = 0, i < 5, ++i)
|
||||
new /obj/item/bluespace_crystal(src)
|
||||
if(71 to 72)
|
||||
new /obj/item/weapon/pickaxe/drill(src)
|
||||
if(73 to 74)
|
||||
new /obj/item/weapon/pickaxe/drill/jackhammer(src)
|
||||
if(75 to 76)
|
||||
new /obj/item/weapon/pickaxe/diamond(src)
|
||||
if(77 to 78)
|
||||
new /obj/item/weapon/pickaxe/drill/diamonddrill(src)
|
||||
if(79 to 80)
|
||||
new /obj/item/weapon/cane(src)
|
||||
new /obj/item/clothing/head/collectable/tophat(src)
|
||||
if(81 to 82)
|
||||
new /obj/item/weapon/gun/energy/plasmacutter(src)
|
||||
if(83 to 84)
|
||||
new /obj/item/toy/katana(src)
|
||||
if(85 to 86)
|
||||
new /obj/item/weapon/defibrillator/compact(src)
|
||||
if(87) //1% chance
|
||||
new /obj/item/weed_extract(src)
|
||||
if(88)
|
||||
new /obj/item/organ/brain(src)
|
||||
if(89)
|
||||
new /obj/item/organ/brain/alien(src)
|
||||
if(90)
|
||||
new /obj/item/organ/heart(src)
|
||||
if(91)
|
||||
new /obj/item/device/soulstone/anybody(src)
|
||||
if(92)
|
||||
new /obj/item/weapon/katana(src)
|
||||
if(93)
|
||||
new /obj/item/weapon/dnainjector/xraymut(src)
|
||||
if(94)
|
||||
new /obj/item/weapon/storage/backpack/clown(src)
|
||||
new /obj/item/clothing/under/rank/clown(src)
|
||||
new /obj/item/clothing/shoes/clown_shoes(src)
|
||||
new /obj/item/device/pda/clown(src)
|
||||
new /obj/item/clothing/mask/gas/clown_hat(src)
|
||||
new /obj/item/weapon/bikehorn(src)
|
||||
new /obj/item/toy/crayon/rainbow(src)
|
||||
new /obj/item/weapon/reagent_containers/spray/waterflower(src)
|
||||
if(95)
|
||||
new /obj/item/clothing/under/rank/mime(src)
|
||||
new /obj/item/clothing/shoes/sneakers/black(src)
|
||||
new /obj/item/device/pda/mime(src)
|
||||
new /obj/item/clothing/gloves/color/white(src)
|
||||
new /obj/item/clothing/mask/gas/mime(src)
|
||||
new /obj/item/clothing/head/beret(src)
|
||||
new /obj/item/clothing/suit/suspenders(src)
|
||||
new /obj/item/toy/crayon/mime(src)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(src)
|
||||
if(96)
|
||||
new /obj/item/weapon/hand_tele(src)
|
||||
if(97)
|
||||
new /obj/item/clothing/mask/balaclava
|
||||
new /obj/item/weapon/gun/projectile/automatic/pistol(src)
|
||||
new /obj/item/ammo_box/magazine/m10mm(src)
|
||||
if(98)
|
||||
new /obj/item/weapon/katana/cursed(src)
|
||||
if(99)
|
||||
new /obj/item/weapon/storage/belt/champion(src)
|
||||
new /obj/item/clothing/mask/luchador(src)
|
||||
if(100)
|
||||
new /obj/item/clothing/head/bearpelt(src)
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/attack_hand(mob/user as mob)
|
||||
if(locked)
|
||||
user << "<span class='notice'>The crate is locked with a Deca-code lock.</span>"
|
||||
var/input = input(usr, "Enter [codelen] digits.", "Deca-Code Lock", "") as text
|
||||
if(user.canUseTopic(src, 1))
|
||||
if (input == code)
|
||||
user << "<span class='notice'>The crate unlocks!</span>"
|
||||
locked = 0
|
||||
overlays.Cut()
|
||||
overlays += greenlight
|
||||
else if (input == null || length(input) != codelen)
|
||||
user << "<span class='notice'>You leave the crate alone.</span>"
|
||||
else
|
||||
user << "<span class='warning'>A red light flashes.</span>"
|
||||
lastattempt = input
|
||||
attempts--
|
||||
if (attempts == 0)
|
||||
user << "<span class='danger'>The crate's anti-tamper system activates!</span>"
|
||||
var/turf/T = get_turf(src.loc)
|
||||
explosion(T, -1, -1, 1, 1)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/crate/secure/loot/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(locked)
|
||||
if (istype(W, /obj/item/weapon/card/emag))
|
||||
user << "<span class='danger'>The crate's anti-tamper system activates!</span>"
|
||||
var/turf/T = get_turf(src.loc)
|
||||
explosion(T, -1, -1, 1, 1)
|
||||
qdel(src)
|
||||
return
|
||||
if (istype(W, /obj/item/device/multitool))
|
||||
user << "<span class='notice'>DECA-CODE LOCK REPORT:</span>"
|
||||
if (attempts == 1)
|
||||
user << "<span class='warning'>* Anti-Tamper Bomb will activate on next failed access attempt.</span>"
|
||||
else
|
||||
user << "<span class='notice'>* Anti-Tamper Bomb will activate after [src.attempts] failed access attempts.</span>"
|
||||
if (lastattempt != null)
|
||||
var/list/guess = list()
|
||||
var/bulls = 0
|
||||
var/cows = 0
|
||||
for(var/i = 1, i < codelen + 1, i++)
|
||||
var/a = copytext(lastattempt, i, i+1) //Stuff the code into the list
|
||||
guess += a
|
||||
guess[a] = i
|
||||
for(var/i in guess) //Go through list and count matches
|
||||
var/a = findtext(code, i)
|
||||
if(a == guess[i])
|
||||
++bulls
|
||||
else if(a)
|
||||
++cows
|
||||
user << "<span class='notice'>Last code attempt had [bulls] correct digits at correct positions and [cows] correct digits at incorrect positions.</span>"
|
||||
else ..()
|
||||
else ..()
|
||||
@@ -84,7 +84,9 @@
|
||||
overlays.Cut()
|
||||
if(stat == DEAD)
|
||||
icon_state = "queen_dead"
|
||||
else if(stat == UNCONSCIOUS || lying || resting)
|
||||
else if((stat == UNCONSCIOUS && !sleeping) || weakened)
|
||||
icon_state = "queen_l"
|
||||
else if(sleeping || lying || resting)
|
||||
icon_state = "queen_sleep"
|
||||
else
|
||||
icon_state = "queen_s"
|
||||
|
||||
@@ -64,4 +64,5 @@
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/alien/CheckStamina()
|
||||
setStaminaLoss(max((staminaloss - 2), 0))
|
||||
return
|
||||
@@ -15,9 +15,10 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
icon_state = "facehugger"
|
||||
item_state = "facehugger"
|
||||
w_class = 1 //note: can be picked up by aliens unlike most other items of w_class below 4
|
||||
flags = MASKCOVERSMOUTH | MASKCOVERSEYES | MASKINTERNALS
|
||||
flags = MASKINTERNALS
|
||||
throw_range = 5
|
||||
tint = 3
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
|
||||
var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
return ..()
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
|
||||
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags_cover & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags_cover & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
|
||||
user << "<span class='warning'>You're going to need to remove their head cover first!</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -38,9 +38,10 @@
|
||||
/mob/living/carbon/relaymove(var/mob/user, direction)
|
||||
if(user in src.stomach_contents)
|
||||
if(prob(40))
|
||||
audible_message("<span class='warning'>You hear something rumbling inside [src]'s stomach...</span>", \
|
||||
"<span class='warning'>You hear something rumbling.</span>", 4,\
|
||||
"<span class='userdanger'>Something is rumbling inside your stomach!</span>")
|
||||
if(prob(25))
|
||||
audible_message("<span class='warning'>You hear something rumbling inside [src]'s stomach...</span>", \
|
||||
"<span class='warning'>You hear something rumbling.</span>", 4,\
|
||||
"<span class='userdanger'>Something is rumbling inside your stomach!</span>")
|
||||
var/obj/item/I = user.get_active_hand()
|
||||
if(I && I.force)
|
||||
var/d = rand(round(I.force / 4), I.force)
|
||||
@@ -494,7 +495,7 @@ var/const/GALOSHES_DONT_HELP = 8
|
||||
src << "<span class='warning'>You fail to break [I]!</span>"
|
||||
|
||||
/mob/living/carbon/proc/is_mouth_covered(head_only = 0, mask_only = 0)
|
||||
if( (!mask_only && head && (head.flags & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags & MASKCOVERSMOUTH)) )
|
||||
if( (!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) )
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
var/loose = 40
|
||||
if(stat || (status_flags & FAKEDEATH))
|
||||
multiplier = 2
|
||||
if(H.flags & (HEADCOVERSEYES | HEADCOVERSMOUTH) || H.flags_inv & (HIDEEYES | HIDEFACE))
|
||||
if(H.flags_cover & (HEADCOVERSEYES | HEADCOVERSMOUTH) || H.flags_inv & (HIDEEYES | HIDEFACE))
|
||||
loose = 0
|
||||
return loose * multiplier
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
return
|
||||
|
||||
/mob/living/proc/handle_mutations_and_radiation()
|
||||
radiation = 0 //so radiation don't accumulate in simple animals
|
||||
return
|
||||
|
||||
/mob/living/proc/handle_chemicals_in_body()
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
return 0
|
||||
|
||||
if (M.a_intent == "harm")
|
||||
if(M.is_muzzled() || (M.wear_mask && M.wear_mask.flags & MASKCOVERSMOUTH))
|
||||
if(M.is_muzzled() || (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSMOUTH))
|
||||
M << "<span class='warning'>You can't bite with your mouth covered!</span>"
|
||||
return 0
|
||||
M.do_attack_animation(src)
|
||||
|
||||
@@ -221,7 +221,7 @@
|
||||
|
||||
modules += new /obj/item/weapon/reagent_containers/dropper(src)
|
||||
|
||||
var/obj/item/weapon/lighter/zippo/L = new /obj/item/weapon/lighter/zippo(src)
|
||||
var/obj/item/weapon/lighter/L = new /obj/item/weapon/lighter(src)
|
||||
L.lit = 1
|
||||
modules += L
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if("Cannibalize")
|
||||
if(D.health < D.maxHealth)
|
||||
D.visible_message("[D] begins to cannibalize parts from [src].", "<span class='notice'>You begin to cannibalize parts from [src]...</span>")
|
||||
if(do_after(D, 60,5,0))
|
||||
if(do_after(D, 60,5,0, target = src))
|
||||
D.visible_message("[D] repairs itself using [src]'s remains!", "<span class='notice'>You repair yourself using [src]'s remains.</span>")
|
||||
D.adjustBruteLoss(-src.maxHealth)
|
||||
new /obj/effect/decal/cleanable/oil/streak(get_turf(src))
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
|
||||
/obj/item/asteroid/hivelord_core
|
||||
name = "hivelord remains"
|
||||
desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating."
|
||||
desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly."
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "boiledrorocore"
|
||||
var/inert = 0
|
||||
@@ -285,10 +285,9 @@
|
||||
user << "<span class='notice'>[src] are useless on the dead.</span>"
|
||||
return
|
||||
if(H != user)
|
||||
H.visible_message("[user] forces [H] to eat [src]... they quickly regenerate all injuries!")
|
||||
H.visible_message("[user] forces [H] to apply [src]... they quickly regenerate all injuries!")
|
||||
else
|
||||
user << "<span class='notice'>You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments.</span>"
|
||||
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
|
||||
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()
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
response_help = "passes through"
|
||||
response_disarm = "swings at"
|
||||
response_harm = "punches"
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
harm_intent_damage = 5
|
||||
|
||||
@@ -201,6 +201,10 @@
|
||||
if(!atmos_suitable)
|
||||
adjustBruteLoss(unsuitable_atmos_damage)
|
||||
|
||||
else
|
||||
if(atmos_requirements["min_oxy"] || atmos_requirements["min_tox"] || atmos_requirements["min_n2"] || atmos_requirements["min_co2"])
|
||||
adjustBruteLoss(unsuitable_atmos_damage)
|
||||
|
||||
handle_temperature_damage()
|
||||
|
||||
/mob/living/simple_animal/proc/handle_temperature_damage()
|
||||
|
||||
@@ -159,8 +159,8 @@ var/next_mob_id = 0
|
||||
var/range = 7
|
||||
if(hearing_distance)
|
||||
range = hearing_distance
|
||||
var/msg = message
|
||||
for(var/mob/M in get_hearers_in_view(range, src))
|
||||
var/msg = message
|
||||
if(self_message && M==src)
|
||||
msg = self_message
|
||||
M.show_message( msg, 2, deaf_message, 1)
|
||||
|
||||
@@ -69,12 +69,12 @@
|
||||
if(..())
|
||||
if(reagents.total_volume)
|
||||
if(M.reagents)
|
||||
reagents.trans_to(M, 55)
|
||||
reagents.trans_to(M, reagents.total_volume)
|
||||
|
||||
|
||||
/obj/item/weapon/pen/sleepy/New()
|
||||
create_reagents(55)
|
||||
reagents.add_reagent("morphine", 30)
|
||||
create_reagents(45)
|
||||
reagents.add_reagent("morphine", 20)
|
||||
reagents.add_reagent("mutetoxin", 15)
|
||||
reagents.add_reagent("tirizene", 10)
|
||||
..()
|
||||
|
||||
@@ -358,18 +358,13 @@
|
||||
|
||||
/obj/singularity/proc/toxmob()
|
||||
var/toxrange = 10
|
||||
var/toxdamage = 4
|
||||
var/radiation = 15
|
||||
var/radiationmin = 3
|
||||
if (src.energy>200)
|
||||
toxdamage = round(((src.energy-150)/50)*4,1)
|
||||
radiation = round(((src.energy-150)/50)*5,1)
|
||||
radiationmin = round((radiation/5),1)//
|
||||
if (energy>200)
|
||||
radiation += round((energy-150)/10,1)
|
||||
radiationmin = round((radiation/5),1)
|
||||
for(var/mob/living/M in view(toxrange, src.loc))
|
||||
M.irradiate(rand(radiationmin,radiation))
|
||||
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
|
||||
M.apply_effect(toxdamage, TOX)
|
||||
return
|
||||
|
||||
|
||||
/obj/singularity/proc/combust_mobs()
|
||||
|
||||
@@ -391,7 +391,7 @@
|
||||
/obj/machinery/power/solar_control/attackby(I as obj, user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
if(do_after(user, 20, target = src))
|
||||
if (src.stat & BROKEN)
|
||||
user << "<span class='notice'>The broken glass falls out.</span>"
|
||||
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
|
||||
|
||||
@@ -176,10 +176,10 @@
|
||||
|
||||
//monkeys and humans can have masks
|
||||
if( victim.wear_mask )
|
||||
if ( victim.wear_mask.flags & MASKCOVERSEYES )
|
||||
if ( victim.wear_mask.flags_cover & MASKCOVERSEYES )
|
||||
eyes_covered = 1
|
||||
safe_thing = victim.wear_mask
|
||||
if ( victim.wear_mask.flags & MASKCOVERSMOUTH )
|
||||
if ( victim.wear_mask.flags_cover & MASKCOVERSMOUTH )
|
||||
mouth_covered = 1
|
||||
safe_thing = victim.wear_mask
|
||||
|
||||
@@ -187,10 +187,10 @@
|
||||
if(istype(victim, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = victim
|
||||
if( H.head )
|
||||
if ( H.head.flags & MASKCOVERSEYES )
|
||||
if ( H.head.flags_cover & MASKCOVERSEYES )
|
||||
eyes_covered = 1
|
||||
safe_thing = H.head
|
||||
if ( H.head.flags & MASKCOVERSMOUTH )
|
||||
if ( H.head.flags_cover & MASKCOVERSMOUTH )
|
||||
mouth_covered = 1
|
||||
safe_thing = H.head
|
||||
if(H.glasses)
|
||||
|
||||
@@ -704,10 +704,10 @@
|
||||
M.adjustToxLoss(-1*REM)
|
||||
M.adjustBruteLoss(-1*REM)
|
||||
M.adjustFireLoss(-1*REM)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
M.adjustStaminaLoss(-1.5*REM)
|
||||
M.AdjustParalysis(-3)
|
||||
M.AdjustStunned(-3)
|
||||
M.AdjustWeakened(-3)
|
||||
M.adjustStaminaLoss(-5*REM)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/stimulants/overdose_process(var/mob/living/M as mob)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "dropper"
|
||||
desc = "A dropper. Holds up to 5 units."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "dropper0"
|
||||
icon_state = "dropper"
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list(1, 2, 3, 4, 5)
|
||||
volume = 5
|
||||
@@ -28,10 +28,10 @@
|
||||
|
||||
var/obj/item/safe_thing = null
|
||||
if(victim.wear_mask)
|
||||
if(victim.wear_mask.flags & MASKCOVERSEYES)
|
||||
if(victim.wear_mask.flags_cover & MASKCOVERSEYES)
|
||||
safe_thing = victim.wear_mask
|
||||
if(victim.head)
|
||||
if(victim.head.flags & MASKCOVERSEYES)
|
||||
if(victim.head.flags_cover & MASKCOVERSEYES)
|
||||
safe_thing = victim.head
|
||||
if(victim.glasses)
|
||||
if(!safe_thing)
|
||||
@@ -83,7 +83,8 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/update_icon()
|
||||
if(reagents.total_volume<=0)
|
||||
icon_state = "dropper0"
|
||||
else
|
||||
icon_state = "dropper1"
|
||||
overlays.Cut()
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "dropper")
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
@@ -180,7 +180,7 @@
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/update_icon()
|
||||
var/rounded_vol = round(reagents.total_volume,5)
|
||||
var/rounded_vol = min(round(reagents.total_volume,5), 15)
|
||||
overlays.Cut()
|
||||
if(ismob(loc))
|
||||
var/injoverlay
|
||||
@@ -195,12 +195,7 @@
|
||||
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "syringe10")
|
||||
|
||||
switch(rounded_vol)
|
||||
if(5) filling.icon_state = "syringe5"
|
||||
if(10) filling.icon_state = "syringe10"
|
||||
if(15) filling.icon_state = "syringe15"
|
||||
|
||||
filling.icon_state = "syringe[rounded_vol]"
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
|
||||
@@ -80,13 +80,13 @@
|
||||
for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head))
|
||||
covered_locations |= I.body_parts_covered
|
||||
face_covered |= I.flags_inv
|
||||
eyesmouth_covered |= I.flags
|
||||
eyesmouth_covered |= I.flags_cover
|
||||
if(ishuman(C))
|
||||
var/mob/living/carbon/human/H = C
|
||||
for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears))
|
||||
covered_locations |= I.body_parts_covered
|
||||
face_covered |= I.flags_inv
|
||||
eyesmouth_covered |= I.flags
|
||||
eyesmouth_covered |= I.flags_cover
|
||||
|
||||
switch(location)
|
||||
if("head")
|
||||
|
||||
@@ -318,6 +318,7 @@
|
||||
origin_tech = "materials=6;programming=3;biotech=6;syndicate=4"
|
||||
var/revive_cost = 0
|
||||
var/reviving = 0
|
||||
var/cooldown = 0
|
||||
|
||||
/obj/item/cybernetic_implant/chest/reviver/function()
|
||||
SSobj.processing |= src
|
||||
@@ -333,22 +334,22 @@
|
||||
spawn(30)
|
||||
if(prob(90) && owner.getOxyLoss())
|
||||
owner.adjustOxyLoss(-3)
|
||||
revive_cost += 0.1
|
||||
revive_cost += 5
|
||||
if(prob(75) && owner.getBruteLoss())
|
||||
owner.adjustBruteLoss(-1)
|
||||
revive_cost += 0.5
|
||||
revive_cost += 20
|
||||
if(prob(75) && owner.getFireLoss())
|
||||
owner.adjustFireLoss(-1)
|
||||
revive_cost += 0.5
|
||||
revive_cost += 20
|
||||
if(prob(40) && owner.getToxLoss())
|
||||
owner.adjustToxLoss(-1)
|
||||
revive_cost++
|
||||
revive_cost += 50
|
||||
else
|
||||
revive_cost = (revive_cost * 100) + world.time
|
||||
cooldown = revive_cost + world.time
|
||||
reviving = 0
|
||||
return
|
||||
|
||||
if(revive_cost > world.time)
|
||||
if(cooldown > world.time)
|
||||
return
|
||||
if(owner.stat != UNCONSCIOUS)
|
||||
return
|
||||
@@ -360,7 +361,11 @@
|
||||
reviving = 1
|
||||
|
||||
/obj/item/cybernetic_implant/chest/reviver/emp_act(severity)
|
||||
revive_cost = world.time + 200
|
||||
if(reviving)
|
||||
revive_cost += 200
|
||||
else
|
||||
cooldown += 200
|
||||
|
||||
if(prob(50 / severity))
|
||||
owner.heart_attack = 1
|
||||
spawn(600 / severity)
|
||||
|
||||
Reference in New Issue
Block a user