mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-23 13:18:09 +01:00
Merge branch 'CHOMPStation2:master' into master
This commit is contained in:
@@ -88,7 +88,8 @@
|
||||
/datum/category_item/player_setup_item/general/flavor/proc/SetFlavorText(mob/user)
|
||||
var/HTML = "<body>"
|
||||
HTML += "<tt><center>"
|
||||
HTML += "<b>Set Flavour Text</b> <hr />"
|
||||
HTML += "<b>Set Flavor Text</b> <hr />"
|
||||
HTML += "Note: This is not *literal* flavor of your character. This is visual description of what they look like. <hr />"
|
||||
HTML += "<br></center>"
|
||||
HTML += "<a href='?src=\ref[src];flavor_text=general'>General:</a> "
|
||||
HTML += TextPreview(pref.flavor_texts["general"])
|
||||
|
||||
@@ -58,11 +58,11 @@
|
||||
|
||||
/datum/gear/accessory/brown_vest
|
||||
display_name = "webbing, brown (Eng, Sec, Med, Exploration, Miner)"
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner", "Blueshield Guard","Security Pilot") //YW ADDITIONS
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner","Blueshield Guard","Security Pilot", "Talon Captain","Talon Doctor","Talon Engineer","Talon Guard", "Talon Miner") //YW ADDITIONS
|
||||
|
||||
/datum/gear/accessory/black_vest
|
||||
display_name = "webbing, black (Eng, Sec, Med, Exploration, Miner)"
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner", "Blueshield Guard","Security Pilot") //YW ADDITIONS
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner","Blueshield Guard","Security Pilot", "Talon Captain","Talon Doctor","Talon Engineer","Talon Guard", "Talon Miner") //YW ADDITIONS
|
||||
|
||||
/datum/gear/accessory/white_vest
|
||||
display_name = "webbing, white (Medical)"
|
||||
@@ -70,11 +70,11 @@
|
||||
|
||||
/datum/gear/accessory/brown_drop_pouches
|
||||
display_name = "drop pouches, brown (Eng, Sec, Med, Exploration, Miner)"
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner", "Blueshield Guard","Security Pilot") //YW ADDITIONS
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner","Blueshield Guard","Security Pilot", "Talon Captain","Talon Doctor","Talon Engineer","Talon Guard", "Talon Miner") //YW ADDITIONS
|
||||
|
||||
/datum/gear/accessory/black_drop_pouches
|
||||
display_name = "drop pouches, black (Eng, Sec, Med, Exploration, Miner)"
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner", "Blueshield Guard","Security Pilot") //YW ADDITIONS
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner","Blueshield Guard","Security Pilot", "Talon Captain","Talon Doctor","Talon Engineer","Talon Guard", "Talon Miner") //YW ADDITIONS
|
||||
|
||||
/datum/gear/accessory/white_drop_pouches
|
||||
display_name = "drop pouches, white (Medical)"
|
||||
@@ -83,7 +83,6 @@
|
||||
/datum/gear/accessory/bluespace
|
||||
display_name = "bluespace badge (Eng, Sec, Med, Exploration, Miner)"
|
||||
path = /obj/item/clothing/accessory/storage/bluespace
|
||||
allowed_roles = list("Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor","Chemist","Field Medic","Explorer","Pathfinder","Shaft Miner")
|
||||
cost = 2
|
||||
|
||||
/datum/gear/accessory/webbing
|
||||
|
||||
@@ -1216,3 +1216,9 @@
|
||||
display_name = "Nehi's Radio"
|
||||
ckeywhitelist = list("zodiacshadow")
|
||||
character_name = list("Nehi Maximus")
|
||||
|
||||
/datum/gear/fluff/lucky_amour
|
||||
path = /obj/item/device/modkit_conversion/crusader_luck
|
||||
display_name = "Lucky's amour"
|
||||
ckeywhitelist = list ("thedavestdave")
|
||||
character_name = list("Lucky")
|
||||
@@ -0,0 +1,248 @@
|
||||
/obj/machinery/item_bank
|
||||
name = "electronic lockbox"
|
||||
desc = "A place to store things you might want later!"
|
||||
icon = 'icons/obj/stationobjs_vr.dmi'
|
||||
icon_state = "item_bank"
|
||||
idle_power_usage = 1
|
||||
active_power_usage = 5
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
var/busy_bank = FALSE
|
||||
var/static/list/item_takers = list()
|
||||
|
||||
/obj/machinery/item_bank/proc/persist_item_savefile_path(mob/user)
|
||||
return "data/player_saves/[copytext(user.ckey, 1, 2)]/[user.ckey]/persist_item.sav"
|
||||
|
||||
/obj/machinery/item_bank/proc/persist_item_savefile_save(mob/user, obj/item/O)
|
||||
if(IsGuestKey(user.key))
|
||||
return 0
|
||||
|
||||
var/savefile/F = new /savefile(src.persist_item_savefile_path(user))
|
||||
|
||||
F["persist item"] << O.type
|
||||
F["persist name"] << initial(O.name)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/item_bank/proc/persist_item_savefile_load(mob/user, thing)
|
||||
if (IsGuestKey(user.key))
|
||||
return 0
|
||||
|
||||
var/path = src.persist_item_savefile_path(user)
|
||||
|
||||
if (!fexists(path))
|
||||
return 0
|
||||
|
||||
var/savefile/F = new /savefile(path)
|
||||
|
||||
if(!F) return 0
|
||||
|
||||
var/persist_item
|
||||
F["persist item"] >> persist_item
|
||||
|
||||
if (isnull(persist_item) || !ispath(persist_item))
|
||||
fdel(path)
|
||||
tgui_alert_async(user, "An item could not be retrieved.")
|
||||
return 0
|
||||
if(thing == "type")
|
||||
return persist_item
|
||||
if(thing == "name")
|
||||
var/persist_name
|
||||
F["persist name"] >> persist_name
|
||||
return persist_name
|
||||
|
||||
|
||||
/obj/machinery/item_bank/Initialize()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/item_bank/attack_hand(mob/living/user)
|
||||
. = ..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(istype(user) && Adjacent(user))
|
||||
if(inoperable() || panel_open)
|
||||
to_chat(user, "<span class='warning'>\The [src] seems to be nonfunctional...</span>")
|
||||
else
|
||||
start_using(user)
|
||||
|
||||
/obj/machinery/item_bank/proc/start_using(mob/living/user)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(busy_bank)
|
||||
to_chat(user, "<span class='warning'>\The [src] is already in use.</span>")
|
||||
return
|
||||
busy_bank = TRUE
|
||||
var/I = persist_item_savefile_load(user, "type")
|
||||
var/Iname = persist_item_savefile_load(user, "name")
|
||||
var/choice = tgui_alert(user, "What would you like to do [src]?", "[src]", list("Check contents", "Retrieve item", "Info", "Cancel"), timeout = 10 SECONDS)
|
||||
if(!choice || choice == "Cancel" || !Adjacent(user) || inoperable() || panel_open)
|
||||
busy_bank = FALSE
|
||||
return
|
||||
else if(choice == "Check contents" && I)
|
||||
to_chat(user, "<span class='notice'>\The [src] has \the [Iname] for you!</span>")
|
||||
busy_bank = FALSE
|
||||
else if(choice == "Retrieve item" && I)
|
||||
if(user.hands_are_full())
|
||||
to_chat(user,"<span class='notice'>Your hands are full!</span>")
|
||||
busy_bank = FALSE
|
||||
return
|
||||
if(user.ckey in item_takers)
|
||||
to_chat(user, "<span class='warning'>You have already taken something out of \the [src] this shift.</span>")
|
||||
busy_bank = FALSE
|
||||
return
|
||||
choice = tgui_alert(user, "If you remove this item from the bank, it will be unable to be stored again. Do you still want to remove it?", "[src]", list("No", "Yes"), timeout = 10 SECONDS)
|
||||
icon_state = "item_bank_o"
|
||||
if(!choice || choice == "No" || !Adjacent(user) || inoperable() || panel_open)
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
return
|
||||
else if(!do_after(user, 10 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE) || inoperable())
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
return
|
||||
var/obj/N = new I(get_turf(src))
|
||||
log_admin("[key_name_admin(user)] retrieved [N] from the item bank.")
|
||||
visible_message("<span class='notice'>\The [src] dispenses the [N] to \the [user].</span>")
|
||||
user.put_in_hands(N)
|
||||
N.persist_storable = FALSE
|
||||
var/path = src.persist_item_savefile_path(user)
|
||||
var/savefile/F = new /savefile(src.persist_item_savefile_path(user))
|
||||
F["persist item"] << null
|
||||
F["persist name"] << null
|
||||
fdel(path)
|
||||
item_takers += user.ckey
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
else if(choice == "Info")
|
||||
to_chat(user, "<span class='notice'>\The [src] can store a single item for you between shifts! Anything that has been retrieved from the bank cannot be stored again in the same shift. Anyone can withdraw from the bank one time per shift. Some items are not able to be accepted by the bank.</span>")
|
||||
busy_bank = FALSE
|
||||
return
|
||||
else if(!I)
|
||||
to_chat(user, "<span class='warning'>\The [src] doesn't seem to have anything for you...</span>")
|
||||
busy_bank = FALSE
|
||||
|
||||
/obj/machinery/item_bank/attackby(obj/item/O, mob/living/user)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(busy_bank)
|
||||
to_chat(user, "<span class='warning'>\The [src] is already in use.</span>")
|
||||
return
|
||||
busy_bank = TRUE
|
||||
var/I = persist_item_savefile_load(user, "type")
|
||||
if(!istool(O) && O.persist_storable)
|
||||
if(ispath(I))
|
||||
to_chat(user, "<span class='warning'>You cannot store \the [O]. You already have something stored.</span>")
|
||||
busy_bank = FALSE
|
||||
return
|
||||
var/choice = tgui_alert(user, "If you store \the [O], anything it contains may be lost to \the [src]. Are you sure?", "[src]", list("Store", "Cancel"), timeout = 10 SECONDS)
|
||||
if(!choice || choice == "Cancel" || !Adjacent(user) || inoperable() || panel_open)
|
||||
busy_bank = FALSE
|
||||
return
|
||||
for(var/obj/check in O.contents)
|
||||
if(!check.persist_storable)
|
||||
to_chat(user, "<span class='warning'>\The [src] buzzes. \The [O] contains [check], which cannot be stored. Please remove this item before attempting to store \the [O]. As a reminder, any contents of \the [O] will be lost if you store it with contents.</span>")
|
||||
busy_bank = FALSE
|
||||
return
|
||||
user.visible_message("<span class='notice'>\The [user] begins storing \the [O] in \the [src].</span>","<span class='notice'>You begin storing \the [O] in \the [src].</span>")
|
||||
icon_state = "item_bank_o"
|
||||
if(!do_after(user, 10 SECONDS, src, exclusive = TASK_ALL_EXCLUSIVE) || inoperable())
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
return
|
||||
src.persist_item_savefile_save(user, O)
|
||||
user.visible_message("<span class='notice'>\The [user] stores \the [O] in \the [src].</span>","<span class='notice'>You stored \the [O] in \the [src].</span>")
|
||||
log_admin("[key_name_admin(user)] stored [O] in the item bank.")
|
||||
qdel(O)
|
||||
busy_bank = FALSE
|
||||
icon_state = "item_bank"
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You cannot store \the [O]. \The [src] either does not accept that, or it has already been retrieved from storage this shift.</span>")
|
||||
busy_bank = FALSE
|
||||
|
||||
/////STORABLE ITEMS AND ALL THAT JAZZ/////
|
||||
//I am only really intending this to be used for single items. Mostly stuff you got right now, but can't/don't want to use right now.
|
||||
//It is not at all intended to be a thing that just lets you hold on to stuff forever, but just until it's the right time to use it.
|
||||
|
||||
/obj
|
||||
|
||||
var/persist_storable = TRUE //If this is true, this item can be stored in the item bank.
|
||||
//This is automatically set to false when an item is removed from storage
|
||||
|
||||
/////LIST OF STUFF WE DON'T WANT PEOPLE STORING/////
|
||||
|
||||
/obj/item/device/pda
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/communicator
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/card
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/holder
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/radio
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/encryptionkey
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/storage //There are lots of things that have stuff that we may not want people to just have. And this is mostly intended for a single thing.
|
||||
persist_storable = FALSE //And it would be annoying to go through and consider all of them, so default to disabled.
|
||||
/obj/item/weapon/storage/backpack //But we can enable some where it makes sense. Backpacks and their variants basically never start with anything in them, as an example.
|
||||
persist_storable = TRUE
|
||||
/obj/item/weapon/reagent_containers/hypospray/vial
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/cmo_disk_holder
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/defib_kit/compact/combat
|
||||
persist_storable = FALSE
|
||||
/obj/item/clothing/glasses/welding/superior
|
||||
persist_storable = FALSE
|
||||
/obj/item/clothing/shoes/magboots/adv
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/rig
|
||||
persist_storable = FALSE
|
||||
/obj/item/clothing/head/helmet/space/void
|
||||
persist_storable = FALSE
|
||||
/obj/item/clothing/suit/space/void
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/grab
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/grenade
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/hand_tele
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/paper
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/backup_implanter
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/disk/nuclear
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/gun/energy/locked //These are guns with security measures on them, so let's say the box won't let you put them in there.
|
||||
persist_storable = FALSE //(otherwise explo will just put their locker/vendor guns into it every round)
|
||||
/obj/item/device/retail_scanner
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/telecube
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/gun/energy/sizegun/admin
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/gun/energy/sizegun/abductor
|
||||
persist_storable = FALSE
|
||||
/obj/item/stack
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/book
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/melee/cursedblade
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/paicard
|
||||
persist_storable = FALSE
|
||||
/obj/item/organ
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/soulstone
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/aicard
|
||||
persist_storable = FALSE
|
||||
/obj/item/device/mmi
|
||||
persist_storable = FALSE
|
||||
/obj/item/seeds
|
||||
persist_storable = FALSE
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown
|
||||
persist_storable = FALSE
|
||||
@@ -260,6 +260,32 @@
|
||||
/obj/item/weapon/cell
|
||||
)
|
||||
|
||||
//Miner's Crewsuit (BROWN)
|
||||
//Basically just the basic suit, but with brown markings. If anyone wants to tweak this, go wild.
|
||||
/obj/item/clothing/head/helmet/space/void/refurb/mining
|
||||
name = "vintage miner's's voidsuit helmet"
|
||||
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. This one has brown markings, denoting it as a miner's helmet."
|
||||
icon_state = "rig0-vintageminer"
|
||||
item_state_slots = list(slot_r_hand_str = "syndicate-helm-black", slot_l_hand_str = "syndicate-helm-black")
|
||||
armor = list(melee = 30, bullet = 15, laser = 15,energy = 5, bomb = 20, bio = 100, rad = 50)
|
||||
light_overlay = "helmet_light"
|
||||
|
||||
/obj/item/clothing/suit/space/void/refurb/mining
|
||||
name = "vintage miner's voidsuit"
|
||||
desc = "A refurbished early contact era voidsuit of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. Many old-timer spacers swear by these old things, even if new powered hardsuits have more features and better armor. This one has brown markings, denoting it as a miner's suit."
|
||||
icon_state = "rig-vintageminer"
|
||||
item_state_slots = list(slot_r_hand_str = "sec_voidsuitTG", slot_l_hand_str = "sec_voidsuitTG")
|
||||
armor = list(melee = 30, bullet = 15, laser = 15,energy = 5, bomb = 20, bio = 100, rad = 50)
|
||||
allowed = list(/obj/item/device/flashlight,
|
||||
/obj/item/weapon/tank,
|
||||
/obj/item/device/suit_cooling_unit,
|
||||
/obj/item/weapon/storage/briefcase/inflatable,
|
||||
/obj/item/device/gps,
|
||||
/obj/item/device/radio/beacon,
|
||||
/obj/item/weapon/pickaxe,
|
||||
/obj/item/weapon/shovel
|
||||
)
|
||||
|
||||
//Mercenary Crewsuit (RED, CROSS)
|
||||
//The best of the best, this should be ultra-rare
|
||||
/obj/item/clothing/head/helmet/space/void/refurb/mercenary
|
||||
|
||||
@@ -55,6 +55,15 @@
|
||||
/obj/item/clothing/suit/space/void/refurb/pilot/talon
|
||||
name = "talon pilot voidsuit"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/refurb/mining/talon
|
||||
name = "talon miner voidsuit helmet"
|
||||
desc = "A refurbished early contact era voidsuit helmet of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. The visor has a bad habit of fogging up and collecting condensation, but it beats sucking hard vacuum. \"ITV TALON\" has been stamped onto the sides of the helmet."
|
||||
camera_networks = list(NETWORK_TALON_HELMETS)
|
||||
|
||||
/obj/item/clothing/suit/space/void/refurb/mining/talon
|
||||
name = "talon miner voidsuit"
|
||||
desc = "A refurbished early contact era voidsuit of human design. These things aren't especially good against modern weapons but they're sturdy, incredibly easy to come by, and there are lots of spare parts for repairs. Many old-timer spacers swear by these old things, even if new powered hardsuits have more features and better armor. \"ITV TALON\" is stamped across the left side of the breastplate in faded faux-gold."
|
||||
|
||||
/obj/item/clothing/head/helmet/space/void/refurb/research/talon
|
||||
name = "talon scientific voidsuit helmet"
|
||||
camera_networks = list(NETWORK_TALON_HELMETS)
|
||||
|
||||
@@ -238,3 +238,14 @@
|
||||
icon_state = "summerdress3"
|
||||
/obj/item/clothing/under/summerdress/blue
|
||||
icon_state = "summerdress2"
|
||||
|
||||
/obj/item/clothing/under/dress/dress_cap/femformal // formal in the loosest sense. because it's going to be taken off. or something. funnier in my head i swear
|
||||
name = "site manager's feminine formalwear"
|
||||
desc = "Essentially a skimpy...dress? Leotard? Whatever it is, it has the coloration and markings suitable for a site manager or rough equivalent."
|
||||
icon = 'icons/inventory/uniform/item_vr.dmi'
|
||||
default_worn_icon = 'icons/inventory/uniform/mob_vr.dmi'
|
||||
icon_state = "lewdcap"
|
||||
item_state = "lewdcap"
|
||||
rolled_sleeves = -1
|
||||
rolled_down = -1
|
||||
body_parts_covered = UPPER_TORSO // frankly this thing's a fucking embarassment
|
||||
@@ -10,6 +10,7 @@
|
||||
name = "diamond"
|
||||
icon_state = "sheet-diamond"
|
||||
default_type = "diamond"
|
||||
no_variants = FALSE //CHOMPedit - Variants added
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
pickup_sound = 'sound/items/pickup/glass.ogg'
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/stack/material/glass
|
||||
name = "glass"
|
||||
icon_state = "sheet-transparent"
|
||||
icon_state = "sheet-glass" //CHOMPedit - replace materials update
|
||||
default_type = "glass"
|
||||
no_variants = FALSE
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/obj/item/stack/material/glass/reinforced
|
||||
name = "reinforced glass"
|
||||
icon_state = "sheet-rtransparent"
|
||||
icon_state = "sheet-rglass" //CHOMPedit - replace materials update
|
||||
default_type = "rglass"
|
||||
no_variants = FALSE
|
||||
apply_colour = TRUE
|
||||
@@ -18,7 +18,7 @@
|
||||
name = "borosilicate glass"
|
||||
desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures"
|
||||
singular_name = "borosilicate glass sheet"
|
||||
icon_state = "sheet-transparent"
|
||||
icon_state = "sheet-phoronglass" //CHOMPedit - replace materials update
|
||||
default_type = "borosilicate glass"
|
||||
no_variants = FALSE
|
||||
apply_colour = TRUE
|
||||
@@ -27,7 +27,7 @@
|
||||
name = "reinforced borosilicate glass"
|
||||
desc = "This sheet is special platinum-glass alloy designed to withstand large temperatures. It is reinforced with few rods."
|
||||
singular_name = "reinforced borosilicate glass sheet"
|
||||
icon_state = "sheet-rtransparent"
|
||||
icon_state = "sheet-phoronrglass" //CHOMPedit - replace materials update
|
||||
default_type = "reinforced borosilicate glass"
|
||||
no_variants = FALSE
|
||||
apply_colour = TRUE
|
||||
@@ -1,20 +1,20 @@
|
||||
/obj/item/stack/material/steel
|
||||
name = MAT_STEEL
|
||||
icon_state = "sheet-refined"
|
||||
icon_state = "sheet-metal" //CHOMPedit - replace materials update
|
||||
default_type = MAT_STEEL
|
||||
no_variants = FALSE
|
||||
apply_colour = TRUE
|
||||
|
||||
/obj/item/stack/material/plasteel
|
||||
name = "plasteel"
|
||||
icon_state = "sheet-reinforced"
|
||||
icon_state = "sheet-plasteel" //CHOMPedit - replace materials update
|
||||
default_type = "plasteel"
|
||||
no_variants = FALSE
|
||||
apply_colour = TRUE
|
||||
|
||||
/obj/item/stack/material/durasteel
|
||||
name = "durasteel"
|
||||
icon_state = "sheet-reinforced"
|
||||
icon_state = "sheet-durasteel" //CHOMPedit - replace materials update
|
||||
item_state = "sheet-metal"
|
||||
default_type = "durasteel"
|
||||
no_variants = FALSE
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
/obj/item/stack/material/titanium
|
||||
name = MAT_TITANIUM
|
||||
icon_state = "sheet-refined"
|
||||
icon_state = "sheet-titanium" //CHOMPedit - replace materials update
|
||||
apply_colour = TRUE
|
||||
item_state = "sheet-silver"
|
||||
default_type = MAT_TITANIUM
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
if(supports.len >= braces_needed)
|
||||
supported = 1
|
||||
else for(var/obj/machinery/mining/brace/check in supports)
|
||||
if(check.brace_tier > 3)
|
||||
if(check.brace_tier >= 3)
|
||||
supported = 1
|
||||
for(var/obj/machinery/mining/brace/check in supports)
|
||||
total_brace_tier += check.brace_tier
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
EQUIPMENT("Plush Toy", /obj/random/plushie, 300),
|
||||
EQUIPMENT("Soap", /obj/item/weapon/soap/nanotrasen, 200),
|
||||
EQUIPMENT("Thalers - 100", /obj/item/weapon/spacecash/c100, 1000),
|
||||
EQUIPMENT("Thalers - 1000", /obj/item/weapon/spacecash/c1000, 10000),
|
||||
EQUIPMENT("Umbrella", /obj/item/weapon/melee/umbrella/random, 200),
|
||||
EQUIPMENT("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 125),
|
||||
)
|
||||
@@ -242,7 +243,10 @@
|
||||
return
|
||||
|
||||
remove_points(inserted_id, prize.cost)
|
||||
new prize.equipment_path(loc)
|
||||
//VOREStation Edit Start
|
||||
var/obj/I = new prize.equipment_path(loc)
|
||||
I.persist_storable = FALSE
|
||||
//VOREStation Edit End
|
||||
flick(icon_vend, src) //VOREStation Add
|
||||
else
|
||||
flick(icon_deny, src) //VOREStation Add
|
||||
|
||||
@@ -56,9 +56,9 @@
|
||||
|
||||
var/taste_sensitivity = TASTE_NORMAL // How sensitive the species is to minute tastes.
|
||||
var/allergens = null // Things that will make this species very sick
|
||||
var/allergen_reaction = AG_TOX_DMG|AG_OXY_DMG|AG_EMOTE|AG_PAIN|AG_WEAKEN // What type of reactions will you have? These the 'main' options and are intended to approximate anaphylactic shock at high doses.
|
||||
var/allergen_damage_severity = 1.2 // How bad are reactions to the allergen? Touch with extreme caution.
|
||||
var/allergen_disable_severity = 3 // Whilst this determines how long nonlethal effects last and how common emotes are.
|
||||
var/allergen_reaction = AG_TOX_DMG|AG_OXY_DMG|AG_EMOTE|AG_PAIN|AG_BLURRY|AG_CONFUSE // What type of reactions will you have? These the 'main' options and are intended to approximate anaphylactic shock at high doses. VOREStation Edit'd.
|
||||
var/allergen_damage_severity = 5 // How bad are reactions to the allergen? Touch with extreme caution. VOREStation Edit'd.
|
||||
var/allergen_disable_severity = 4 // Whilst this determines how long nonlethal effects last and how common emotes are. VOREStation Edit'd.
|
||||
|
||||
var/min_age = 17
|
||||
var/max_age = 70
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
//Allergen traits! Not available to any species with a base allergens var.
|
||||
/datum/trait/neutral/allergy
|
||||
name = "Allergy: Gluten"
|
||||
desc = "You're highly allergic to gluten proteins, which are found in most common grains."
|
||||
desc = "You're highly allergic to gluten proteins, which are found in most common grains. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
var/allergen = ALLERGEN_GRAINS
|
||||
@@ -207,73 +207,82 @@
|
||||
|
||||
/datum/trait/neutral/allergy/meat
|
||||
name = "Allergy: Meat"
|
||||
desc = "You're highly allergic to just about any form of meat. You're probably better off just sticking to vegetables. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to just about any form of meat. You're probably better off just sticking to vegetables. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_MEAT
|
||||
|
||||
/datum/trait/neutral/allergy/fish
|
||||
name = "Allergy: Fish"
|
||||
desc = "You're highly allergic to fish. It's probably best to avoid seafood in general. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to fish. It's probably best to avoid seafood in general. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_FISH
|
||||
|
||||
/datum/trait/neutral/allergy/fruit
|
||||
name = "Allergy: Fruit"
|
||||
desc = "You're highly allergic to fruit. Vegetables are fine, but you should probably read up on how to tell the difference. Remember, tomatoes are a fruit. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to fruit. Vegetables are fine, but you should probably read up on how to tell the difference. Remember, tomatoes are a fruit. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_FRUIT
|
||||
|
||||
/datum/trait/neutral/allergy/vegetable
|
||||
name = "Allergy: Vegetable"
|
||||
desc = "You're highly allergic to vegetables. Fruit are fine, but you should probably read up on how to tell the difference. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to vegetables. Fruit are fine, but you should probably read up on how to tell the difference. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_VEGETABLE
|
||||
|
||||
/datum/trait/neutral/allergy/nuts
|
||||
name = "Allergy: Nuts"
|
||||
desc = "You're highly allergic to hard-shell seeds, such as peanuts. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to hard-shell seeds, such as peanuts. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_SEEDS
|
||||
|
||||
/datum/trait/neutral/allergy/soy
|
||||
name = "Allergy: Soy"
|
||||
desc = "You're highly allergic to soybeans, and some other kinds of bean. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to soybeans, and some other kinds of bean. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_BEANS
|
||||
|
||||
/datum/trait/neutral/allergy/dairy
|
||||
name = "Allergy: Lactose"
|
||||
desc = "You're highly allergic to lactose, and consequently, just about all forms of dairy. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to lactose, and consequently, just about all forms of dairy. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_DAIRY
|
||||
|
||||
/datum/trait/neutral/allergy/fungi
|
||||
name = "Allergy: Fungi"
|
||||
desc = "You're highly allergic to fungi such as mushrooms. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to fungi such as mushrooms. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_FUNGI
|
||||
|
||||
/datum/trait/neutral/allergy/coffee
|
||||
name = "Allergy: Coffee"
|
||||
desc = "You're highly allergic to coffee in specific. NB: By taking this trait, you acknowledge there is a risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
desc = "You're highly allergic to coffee in specific. NB: By taking this trait, you acknowledge there is a significant risk your character may suffer a fatal reaction if exposed to this substance."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
allergen = ALLERGEN_COFFEE
|
||||
|
||||
/datum/trait/neutral/allergen_reduced_effect
|
||||
name = "Reduced Allergen Reaction"
|
||||
desc = "This trait halves the lethality of allergen reactions. If you don't have any allergens set, it does nothing. It does not apply to nonlethal reactions or special reactions (such as unathi drowsiness from sugars)."
|
||||
desc = "This trait drastically reduces the effects of allergen reactions. If you don't have any allergens set, it does nothing. It does not apply to special reactions (such as unathi drowsiness from sugars)."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
var_changes = list("allergen_damage_severity" = 0.6)
|
||||
var_changes = list("allergen_damage_severity" = 2.5, "allergen_disable_severity" = 3)
|
||||
excludes = list(/datum/trait/neutral/allergen_increased_effect)
|
||||
|
||||
/datum/trait/neutral/allergen_increased_effect
|
||||
name = "Increased Allergen Reaction"
|
||||
desc = "This trait drastically increases the effects of allergen reactions, enough that even a small dose can be lethal. If you don't have any allergens set, it does nothing. It does not apply to special reactions (such as unathi drowsiness from sugars)."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
var_changes = list("allergen_damage_severity" = 10, "allergen_disable_severity" = 6)
|
||||
excludes = list(/datum/trait/neutral/allergen_reduced_effect)
|
||||
|
||||
// Spicy Food Traits, from negative to positive.
|
||||
/datum/trait/neutral/spice_intolerance_extreme
|
||||
|
||||
@@ -269,7 +269,7 @@ You can also set the stat of a NIF to NIF_TEMPFAIL without any issues to disable
|
||||
/obj/item/device/nif/proc/handle_install()
|
||||
if(human.stat || !human.mind) //No stuff while KO or not sleeved
|
||||
return FALSE
|
||||
|
||||
persist_storable = FALSE //VOREStation edit - I am not sure if polaris has nifs, but just in case.
|
||||
//Firsties
|
||||
if(!install_done)
|
||||
if(human.mind.name == owner)
|
||||
|
||||
@@ -341,6 +341,7 @@
|
||||
t = replacetext(t, "\[/u\]", "</U>")
|
||||
t = replacetext(t, "\[time\]", "[stationtime2text()]")
|
||||
t = replacetext(t, "\[date\]", "[stationdate2text()]")
|
||||
t = replacetext(t, "\[station\]", "[station_name()]")
|
||||
t = replacetext(t, "\[large\]", "<font size=\"4\">")
|
||||
t = replacetext(t, "\[/large\]", "</font>")
|
||||
if(findtext(t, "\[sign\]"))
|
||||
|
||||
@@ -168,20 +168,22 @@
|
||||
if(M.species.allergen_reaction & AG_TOX_DMG)
|
||||
M.adjustToxLoss(damage_severity)
|
||||
if(M.species.allergen_reaction & AG_OXY_DMG)
|
||||
M.adjustOxyLoss(damage_severity)
|
||||
M.adjustOxyLoss(damage_severity*1.5) //VOREStation Edit
|
||||
if(prob(2.5*disable_severity))
|
||||
M.emote(pick("cough","gasp","choke"))
|
||||
if(M.species.allergen_reaction & AG_EMOTE)
|
||||
if(prob(2.5*disable_severity)) //this has a higher base chance, but not *too* high
|
||||
M.emote(pick("pale","shiver","twitch"))
|
||||
if(M.species.allergen_reaction & AG_PAIN)
|
||||
M.adjustHalLoss(disable_severity)
|
||||
M.adjustHalLoss(disable_severity*2) //VOREStation Edit
|
||||
if(M.species.allergen_reaction & AG_WEAKEN)
|
||||
M.Weaken(disable_severity)
|
||||
if(M.species.allergen_reaction & AG_BLURRY)
|
||||
M.eye_blurry = max(M.eye_blurry, disable_severity)
|
||||
if(M.species.allergen_reaction & AG_SLEEPY)
|
||||
M.drowsyness = max(M.drowsyness, disable_severity)
|
||||
if(M.species.allergen_reaction & AG_CONFUSE) //VOREStation Addition
|
||||
M.Confuse(disable_severity/4) //VOREStation Addition
|
||||
remove_self(removed)
|
||||
return
|
||||
|
||||
|
||||
@@ -770,6 +770,22 @@
|
||||
materials = list(MAT_STEEL = 10000, MAT_SILVER = 1000, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/speedboost
|
||||
|
||||
/datum/design/item/mecha/auxstorage
|
||||
name = "Auxillary Exosuit Storage Bay"
|
||||
desc = "An auxillary storage compartment, for attaching to exosuits."
|
||||
id = "mech_storage"
|
||||
req_tech = list(TECH_MATERIAL = 4)
|
||||
materials = list(MAT_STEEL = 10000)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/storage
|
||||
|
||||
/datum/design/item/mecha/bsauxstorage
|
||||
name = "Auxillary Exosuit Storage Wormhole"
|
||||
desc = "An auxillary storage wormhole, for attaching to exosuits."
|
||||
id = "mech_storage_bs"
|
||||
req_tech = list(TECH_MATERIAL = 4)
|
||||
materials = list(MAT_PLASTEEL = 10000, MAT_GRAPHITE = 8000, MAT_OSMIUM = 6000, MAT_PHORON = 6000, MAT_SILVER = 4000, MAT_GOLD = 4000)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/storage/bluespace
|
||||
|
||||
/datum/design/item/synthetic_flash
|
||||
name = "Synthetic Flash"
|
||||
id = "sflash"
|
||||
|
||||
@@ -1416,4 +1416,24 @@ End CHOMP Removal*/
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "stamp-midhorror"
|
||||
stamptext = "This paper has been certified by The Council of Mid Horror"
|
||||
|
||||
|
||||
//thedavestdave Lucky
|
||||
///I know this is pretty bodgey but if it stupid and it works it isn't stupid
|
||||
/obj/item/clothing/suit/storage/hooded/explorer/lucky
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_state = "luck"
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
item_state = "luck"
|
||||
name = "Lucky's armor"
|
||||
desc = "A chain mail suit with a badly drawn one eared cat on the front."
|
||||
|
||||
|
||||
/obj/item/device/modkit_conversion/crusader_luck
|
||||
skip_content_check = TRUE
|
||||
name = "Lucky's armor"
|
||||
desc = "A chain mail suit with a badly drawn one eared cat on the front."
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "modkit"
|
||||
from_suit = /obj/item/clothing/suit/storage/hooded/explorer
|
||||
to_suit = /obj/item/clothing/suit/storage/hooded/explorer/lucky
|
||||
|
||||
|
||||
Reference in New Issue
Block a user