mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-28 07:39:13 +01:00
Merge branch 'master' into upstream-merge-12164
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"])
|
||||
|
||||
@@ -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,219 @@
|
||||
/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
|
||||
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/dockingcodes
|
||||
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
|
||||
@@ -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
|
||||
@@ -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),
|
||||
)
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
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_damage_severity = 3.6 // 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/min_age = 17
|
||||
|
||||
@@ -270,10 +270,17 @@
|
||||
|
||||
/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 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)."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
var_changes = list("allergen_damage_severity" = 0.6)
|
||||
var_changes = list("allergen_damage_severity" = 1.2)
|
||||
|
||||
/datum/trait/neutral/allergen_increased_effect
|
||||
name = "Increased Allergen Reaction"
|
||||
desc = "This trait drastically increases 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)."
|
||||
cost = 0
|
||||
custom_only = FALSE
|
||||
var_changes = list("allergen_damage_severity" = 7.2)
|
||||
|
||||
// Spicy Food Traits, from negative to positive.
|
||||
/datum/trait/neutral/spice_intolerance_extreme
|
||||
|
||||
@@ -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\]"))
|
||||
|
||||
@@ -577,21 +577,23 @@
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
|
||||
|
||||
/* These are way too OP to be buildable
|
||||
*/ //CHOMPEdit upstream whines too much.
|
||||
/datum/design/item/mecha/combat_shield
|
||||
name = "linear combat shield"
|
||||
desc = "Linear shield projector. Deploys a large, familiar, and rectangular shield in one direction at a time."
|
||||
id = "mech_shield_droid"
|
||||
req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4)
|
||||
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_GLASS = 3750)
|
||||
req_tech = list(TECH_PHORON = 5, TECH_MAGNET = 7, TECH_ILLEGAL = 5) //Chompedit bumped up a little
|
||||
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_VERDANTIUM = 2000, MAT_GLASS = 3750) //Chompedit Also bumped up a little
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/combat_shield
|
||||
|
||||
/datum/design/item/mecha/omni_shield
|
||||
name = "Omni Shield"
|
||||
desc = "Integral shield projector. Can only protect the exosuit, but has no weak angles."
|
||||
id = "mech_shield_omni"
|
||||
req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4)
|
||||
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_GLASS = 3750)
|
||||
req_tech = list(TECH_PHORON = 5, TECH_MAGNET = 7, TECH_ILLEGAL = 5) //Chompedit bumped up a little
|
||||
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_VERDANTIUM = 2000, MAT_GLASS = 3750) //Chompedit Also bumped up a little
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/omni_shield
|
||||
/* //CHOMPEdit closing comment.
|
||||
*/
|
||||
|
||||
/datum/design/item/mecha/crisis_drone
|
||||
|
||||
@@ -56,4 +56,56 @@
|
||||
id = "scarab_right_legs"
|
||||
build_path = /obj/item/mecha_parts/part/scarab_right_legs
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000)
|
||||
|
||||
/datum/design/item/mechfab/phazon
|
||||
category = list("Phazon")
|
||||
req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1)
|
||||
|
||||
/datum/design/item/mechfab/phazon/chassis
|
||||
name = "Phazon Chassis"
|
||||
id = "phazon_chassis"
|
||||
build_path = /obj/item/mecha_parts/chassis/phazon
|
||||
time = 10
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000, MAT_DURASTEEL = 4000, MAT_PHORON = 4000, MAT_GOLD = 5000, MAT_VERDANTIUM = 4000)
|
||||
|
||||
/datum/design/item/mechfab/phazon/torso
|
||||
name = "Phazon Torso"
|
||||
id = "phazon_torso"
|
||||
build_path = /obj/item/mecha_parts/part/phazon_torso
|
||||
time = 30
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 30000, MAT_DURASTEEL = 2000, MAT_PHORON = 6000, MAT_GOLD = 6000, MAT_VERDANTIUM = 2000)
|
||||
|
||||
/datum/design/item/mechfab/phazon/head
|
||||
name = "Phazon Head"
|
||||
id = "phazon_head"
|
||||
build_path = /obj/item/mecha_parts/part/phazon_head
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 10000, MAT_DURASTEEL = 1000, MAT_PHORON = 4000, MAT_GOLD = 4000, MAT_VERDANTIUM = 500)
|
||||
|
||||
/datum/design/item/mechfab/phazon/left_arm
|
||||
name = "Phazon Left Arm"
|
||||
id = "phazon_left_arm"
|
||||
build_path = /obj/item/mecha_parts/part/phazon_left_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500)
|
||||
|
||||
/datum/design/item/mechfab/phazon/right_arm
|
||||
name = "Phazon Right Arm"
|
||||
id = "phazon_right_arm"
|
||||
build_path = /obj/item/mecha_parts/part/phazon_right_arm
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500)
|
||||
/datum/design/item/mechfab/phazon/left_leg
|
||||
name = "Phazon Left Legs"
|
||||
id = "phazon_left_legs"
|
||||
build_path = /obj/item/mecha_parts/part/phazon_left_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500)
|
||||
|
||||
/datum/design/item/mechfab/phazon/right_leg
|
||||
name = "Phazon Right Legs"
|
||||
id = "phazon_right_legs"
|
||||
build_path = /obj/item/mecha_parts/part/phazon_right_leg
|
||||
time = 20
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 15000, MAT_PHORON = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 500)
|
||||
|
||||
@@ -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