mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-15 00:53:23 +01:00
Meet the Smith - New Supply Role (#28273)
* Smith role, access, access helpers, spawn point, comms, and IDs
* Area defines
* Hammertime
* Cyberiad Smith's office
* Forgot some atmos stuff
* Autolathable Hammers
* Formatting
* Toolbelts can hold hammers
* Initial work on smith machines
* Farragus Smith Office
* Placeholder sprites, mapping
* Smart hopper points and console messages
* More work on smithing machines
* Fixed mapping, added qualities, added smithed items, fixed sizing, fixed access
* Smith components, new materials
* New ores, material datums, furnace, power hammer, kinetic assembler, hammer act, item creation
* Missed one
* Grrr map conflicts begone
* Dirt begone
* Casts and smelting
* Linters
* Attack chain linters!
* Better grip to throw people into your industrial machines
* Placeholder spots in the DMIs
* UpdatePaths - Space ruins now spawn new space ores in their rocks
* Small changes - removed excess tgui code from hopper
* Fixed a button on emerald
* Attaching inserts and lenses. Tool bits are pain.
* Tool bit initial implementation
* Merge conflict resolution
* Attack chain grrr
* Fixed a pair of minor mapping issues
* Tool bit implementation, efficiency, failure rate
* Hot things burn hands
* Points fix on hopper
* New mining rocks for space exploration
* Areas on asteroids
* Machinery icons 1
Adds basic icons for the new machinery
* Vendor iconstate update
* Crucible touchups
* Hammer touchups
* Crucible Input Animation
Adds an animation when you deposit ores
* Added scanning the crucible with multitool to get mineral count
* clothing sprites part 1
* locker sprite
* job icons
* garment bag
* Smith locker mapping
* Insert and Bit removal fix
* Job menu alignment fix, Allowed_items and small spriting path fixes
* Adds new asteroid ruins to config
* Ore Sprites
* Hammer Sprite
* Item Sprites 1
* Sheets, Wall Ores and Trim
* Sheet iconstate names
* species uniforms
* Tabs
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
* Lens spelling fix
* Signalizes attaching and detaching modifications, fixes inserting items into smith machines, fixes cast bugs
* Fixed type lists
* Smithing machine bug fixes.
* Fixed adding modifications to items
* Crucible Lava Idle
Adds an idle animation for the crucible, but it needs overlay code to work.
* Fixed eguns
* Magma Crucible overlays and animations
* Machine broken/Off states
Adds broken, wires exposed (and on/off where appropriate) states to machines.
* Castivend recolor and Hot Items
* Overlays for all machines, new sprites for hot items, new checks, fixes
* Woe, farragus merge conflict
* update_appearance linters
* I have fat fingers.
* Forgot one
* transfer_item_to and qdel null check
* Usr to User
* Modsuits should not have inserts.
* Adds casting lip overlay
* Balance pass on movement debuffs and buffs
* Material movespeed changes
* Config Adjustments - USED FOR TESTMERGING. REVERT BEFORE FULL MERGE
* Math fixes for lenses and bits.
* Mobility suit no longer speeds you up, but negates suit-based slowdown like an oil slick potion. Fixed movement mods in material datums
* Bad var. Bad.
* Various fixes to bugs revealed in initial TM
* TYPO
* Lavaland base turf fix
* Paths in examine fix
* Adds an intercom to the workshop.
* Stamina-hybrid damage oversight fix for det revolver, uion, etc.
* Currently Operating Message fix
* Allows glass to show different turfs beneath. Adds plasmaglass section to workshop.
* Armor and upgrade fixes
* RCD tool bit equip fix
* Adds smith access to a few lists in access.dm that were missed in an oversight
* Indent fixes
* Fixes vending machine, allows tool bit use on mining equipment
* CI, you make me mad sometimes
* Removed duplicate code
* Name fix for CI again
* ORM now can handle space ores
* Adds space ores to Vetus drop and to trader inventories
* Fixes runtime with open hand attacking a lava furnace with nothing in it
* Adds crewvend kit to Castivend
* Fixes not being able to see new ores
* Adds drill and RCS to smith locker
* Map changes. Added cargo pad. Expanded catwalk. Moved vendors. Added recharger.
* Plant fixes
* Fixes doubled-up catwalk
* Emerald cargo windoor fix, small lavaland adjustment
* Small oversight for overlay fix
* Missing lightswitches
* Fixed stock parts mismatch in casting basin recipe
* Better support for power tools, grrr attackchain
* Better attack chain handling. Better handling for bit insertion
* Fixes handling of inserts with storage suits (like labcoats)
* sprites for bomber + plasmeme outfit
* Adds missing adjacency checks
* Buffs speed boost from upgrade - max upgrade reduces cycle to 2 seconds.
* Fixed floating lights, brightened the explorer's new room, expanded smith workshop slightly.
* Small hallway adjustment
* Illuminates metastation smith office
* Removes excessive decimals in magma crucible scan output
* Berserker should not have inserts.
* Buffs bit durability significantly, nerfs amplifier lens and densifier lense slightly
* Adds smith bomber jacket to loadout panel
* Adds random spawners for smithed items, adds random low-quality items to maints loot
* Adds traitor version of bulldog shotgun
* Revert "Adds traitor version of bulldog shotgun"
This reverts commit 1d39c59f07.
* Added check to assembler, moved desc changes to examine()
* plasmaman suit fix
* Fixed hot check when removing items from hammer and furnace
* Remaps lavaland workshop, fixed deltastation light switch
* Improper's the smith office name
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
* Compacts extra ore drops from Vetus
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
* better looping
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
* Better loop
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
* Multitools don't need tool bits.
* Better variable names, fixed missing parenthesis
* Recursive hammering, removed attack animations when inserting items or using multitool on smithing machines
* window
* Update deltastation.dmm
* Update deltastation.dmm
* Update deltastation.dmm
* Fixes small oversights
* Minor lavaland remap
* Reverts TM-required changes in preparation for full merge
* Begone, stray font!
* Damn you cable CI
---------
Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Co-authored-by: ExusA <67055922+ExusA@users.noreply.github.com>
Co-authored-by: Christasmurf <25437893+Christasmurf@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: Fordoxia <143041327+Fordoxia@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
@@ -1176,6 +1176,20 @@
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel-norm"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
if(JOB_SMITH)
|
||||
clothes_s = new /icon('icons/mob/clothing/under/cargo.dmi', "smith_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "smith"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/hands.dmi', "smithing"), ICON_OVERLAY)
|
||||
has_gloves = TRUE
|
||||
if(prob(1))
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/head/softcap.dmi', "smithsoft"), ICON_OVERLAY)
|
||||
switch(backbag)
|
||||
if(2)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "backpack"), ICON_OVERLAY)
|
||||
if(3)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel-norm"), ICON_OVERLAY)
|
||||
if(4)
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/back.dmi', "satchel"), ICON_OVERLAY)
|
||||
if(JOB_MINER)
|
||||
clothes_s = new /icon('icons/mob/clothing/under/cargo.dmi', "explorer_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/clothing/feet.dmi', "explorer"), ICON_UNDERLAY)
|
||||
@@ -2051,7 +2065,7 @@
|
||||
return(job_support_high || job_support_med || job_support_low || job_medsci_high || job_medsci_med || job_medsci_low || job_engsec_high || job_engsec_med || job_engsec_low)
|
||||
|
||||
|
||||
/datum/character_save/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Head of Security", "Bartender"), widthPerColumn = 400, height = 700)
|
||||
/datum/character_save/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Head of Security", "Quartermaster"), widthPerColumn = 400, height = 700)
|
||||
if(!SSjobs)
|
||||
return
|
||||
|
||||
@@ -2192,7 +2206,7 @@
|
||||
html += "<font color=[prefLevelColor]>[prefLevelLabel]</font></a>"
|
||||
|
||||
html += "</td></tr>"
|
||||
|
||||
index += 1
|
||||
for(var/i in 1 to limit - index) // Finish the column so it is even
|
||||
html += "<tr bgcolor='[lastJob ? lastJob.selection_color : "#ffffff"]'><td width='60%' align='right'> </td><td> </td></tr>"
|
||||
|
||||
|
||||
@@ -111,6 +111,11 @@
|
||||
path = /obj/item/clothing/suit/jacket/bomber/expedition
|
||||
allowed_roles = list("Quartermaster", "Explorer")
|
||||
|
||||
/datum/gear/suit/bomber/job/smith
|
||||
display_name = "Bomber jacket, smith"
|
||||
path = /obj/item/clothing/suit/jacket/bomber/smith
|
||||
allowed_roles = list("Quartermaster", "Smith")
|
||||
|
||||
/datum/gear/suit/bomber/job/engi
|
||||
display_name = "Bomber jacket, engineering"
|
||||
path = /obj/item/clothing/suit/jacket/bomber/engi
|
||||
|
||||
@@ -768,11 +768,17 @@
|
||||
var/max_suit_w = WEIGHT_CLASS_BULKY
|
||||
///How long to break out of the suits
|
||||
var/breakouttime
|
||||
/// How many inserts can you put into the suit
|
||||
var/insert_max = 1
|
||||
/// Currently applied inserts
|
||||
var/list/inserts = list()
|
||||
|
||||
|
||||
/obj/item/clothing/suit/Initialize(mapload)
|
||||
. = ..()
|
||||
setup_shielding()
|
||||
RegisterSignal(src, COMSIG_INSERT_ATTACH, PROC_REF(attach_insert))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(detach_insert))
|
||||
|
||||
/**
|
||||
* Wrapper proc to apply shielding through AddComponent().
|
||||
@@ -783,6 +789,12 @@
|
||||
/obj/item/clothing/suit/proc/setup_shielding()
|
||||
return
|
||||
|
||||
/obj/item/clothing/suit/examine(mob/user)
|
||||
. = ..()
|
||||
if(length(inserts))
|
||||
. += "<span class='notice'>Has [length(inserts)] inserts attached.</span>"
|
||||
. += "<span class='notice'>Inserts can be removed with Alt-Click.</span>"
|
||||
|
||||
///Hierophant card shielding. Saves me time.
|
||||
/obj/item/clothing/suit/proc/setup_hierophant_shielding()
|
||||
var/datum/component/shielded/shield = GetComponent(/datum/component/shielded)
|
||||
@@ -869,6 +881,46 @@
|
||||
/obj/item/clothing/suit/proc/special_overlays() // Does it have special overlays when worn?
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/suit/attackby__legacy__attackchain(obj/item/I, mob/living/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/smithed_item/insert))
|
||||
SEND_SIGNAL(src, COMSIG_INSERT_ATTACH, I, user)
|
||||
|
||||
/obj/item/clothing/suit/proc/detach_insert(atom/source, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_CLICK_ALT
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
if(!length(inserts))
|
||||
to_chat(user, "<span class='notice'>Your suit has no inserts to remove.</span>")
|
||||
return
|
||||
INVOKE_ASYNC(src, PROC_REF(finish_detach_insert), user)
|
||||
|
||||
/obj/item/clothing/suit/proc/finish_detach_insert(mob/user)
|
||||
var/obj/item/smithed_item/insert/old_insert
|
||||
if(length(inserts) == 1)
|
||||
old_insert = inserts[1]
|
||||
else
|
||||
old_insert = tgui_input_list(user, "Select an insert", src, inserts)
|
||||
if(!istype(old_insert, /obj/item/smithed_item/insert))
|
||||
return
|
||||
old_insert.on_detached()
|
||||
user.put_in_hands(old_insert)
|
||||
|
||||
/obj/item/clothing/suit/proc/attach_insert(obj/source_item, obj/item/smithed_item/insert/new_insert, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_INSERT_ATTACH
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
if(!istype(new_insert))
|
||||
return
|
||||
if(length(inserts) == insert_max)
|
||||
to_chat(user, "<span class='notice'>Your suit has no slots to add an insert.</span>")
|
||||
return
|
||||
if(new_insert.flags & NODROP || !user.transfer_item_to(new_insert, src))
|
||||
to_chat(user, "<span class='warning'>[new_insert] is stuck to your hand!</span>")
|
||||
return
|
||||
inserts += new_insert
|
||||
new_insert.on_attached(src)
|
||||
|
||||
/obj/item/clothing/suit/proc/resist_restraints(mob/living/carbon/user, break_restraints)
|
||||
var/effective_breakout_time = breakouttime
|
||||
if(break_restraints)
|
||||
@@ -945,6 +997,7 @@
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
)
|
||||
insert_max = 0 // No inserts for space suits
|
||||
|
||||
//////////////////////////////
|
||||
// MARK: UNDER CLOTHES
|
||||
|
||||
@@ -98,6 +98,22 @@
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/gloves.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/gloves/smithing
|
||||
name = "smithing gloves"
|
||||
desc = "Heatproof gloves designed for safely handling hot tools and even hotter metal."
|
||||
icon_state = "smithing"
|
||||
item_state = "smithing"
|
||||
cold_protection = HANDS
|
||||
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
|
||||
heat_protection = HANDS
|
||||
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
|
||||
sprite_sheets = list(
|
||||
"Human" = 'icons/mob/clothing/hands.dmi',
|
||||
"Vox" = 'icons/mob/clothing/species/vox/gloves.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/gloves.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/gloves.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/gloves.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/gloves/handwraps
|
||||
name = "cloth handwraps"
|
||||
|
||||
@@ -178,6 +178,17 @@
|
||||
"Drask" = 'icons/mob/clothing/species/drask/head/beret.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/beret/smith
|
||||
name = "smith's beret"
|
||||
desc = "A brown beret with a black insignia emblazoned on it. Won't help you against the atmosphere of the planet, but will look stylish."
|
||||
icon_state = "beret_smith"
|
||||
item_color = "beret_smith"
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/head/beret.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/head/beret.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/head/beret.dmi'
|
||||
)
|
||||
|
||||
//NT Career Trainer
|
||||
/obj/item/clothing/head/beret/nct/black
|
||||
name = "\improper NT Career Trainer's beret"
|
||||
|
||||
@@ -111,6 +111,13 @@
|
||||
item_color = "expedition"
|
||||
armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 5, BOMB = 0, RAD = 0, FIRE = 10, ACID = 50)
|
||||
|
||||
/obj/item/clothing/head/soft/smith
|
||||
name = "smith's cap"
|
||||
desc = "It's a brown baseball hat with a black smithing shield."
|
||||
icon_state = "smithsoft"
|
||||
item_color = "smith"
|
||||
dog_fashion = /datum/dog_fashion/head/smith
|
||||
|
||||
/obj/item/clothing/head/soft/janitorgrey
|
||||
name = "grey janitor's cap"
|
||||
desc = "It's a grey baseball hat with a purple custodial shield."
|
||||
|
||||
@@ -238,6 +238,17 @@
|
||||
knife_slot = TRUE
|
||||
dyeable = FALSE
|
||||
|
||||
/obj/item/clothing/shoes/workboots/smithing
|
||||
name = "smithing boots"
|
||||
desc = "Steel-toed smithing boots to designed to protect the feet against both heavy objects and hot metal."
|
||||
icon_state = "smith"
|
||||
resistance_flags = FIRE_PROOF
|
||||
cold_protection = FEET|LEGS
|
||||
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
|
||||
heat_protection = FEET|LEGS
|
||||
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
|
||||
dyeable = FALSE
|
||||
|
||||
/obj/item/clothing/shoes/winterboots
|
||||
name = "winter boots"
|
||||
desc = "Boots lined with 'synthetic' animal fur."
|
||||
|
||||
@@ -199,6 +199,12 @@
|
||||
item_state = "expedition_envirohelm"
|
||||
armor = list(MELEE = 25, BULLET = 20, LASER = 20, ENERGY = 5, BOMB = 15, RAD = 0, FIRE = INFINITY, ACID = 150)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/smith
|
||||
name = "smithing plasma envirosuit helmet"
|
||||
desc = "A plasmaman helmet design for smiths."
|
||||
icon_state = "smith_envirohelm"
|
||||
item_state = "smith_envirohelm"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/plasmaman/chaplain
|
||||
name = "chaplain's plasma envirosuit helmet"
|
||||
desc = "An envirohelmet specially designed for only the most pious of plasmamen."
|
||||
|
||||
@@ -156,6 +156,7 @@
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
strip_delay = 80
|
||||
insert_max = 2
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/suit.dmi',
|
||||
@@ -214,6 +215,7 @@
|
||||
dog_fashion = null
|
||||
resistance_flags = FIRE_PROOF
|
||||
allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/flash, /obj/item/storage/fancy/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/gun/energy, /obj/item/gun/projectile)
|
||||
insert_max = 3
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
@@ -406,6 +408,7 @@
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
hit_reaction_chance = 50
|
||||
insert_max = 2
|
||||
/// The cell reactive armor uses.
|
||||
var/obj/item/stock_parts/cell/emproof/reactive/cell
|
||||
/// Cost multiplier for armor. "Stronger" armors use 200 charge, other armors use 120.
|
||||
@@ -709,6 +712,7 @@
|
||||
sprite_sheets = null
|
||||
armor = list(MELEE = 200, BULLET = 200, LASER = 50, ENERGY = 50, BOMB = INFINITY, RAD = INFINITY, FIRE = 450, ACID = 450)
|
||||
flags_2 = RAD_PROTECT_CONTENTS_2
|
||||
insert_max = 5
|
||||
|
||||
/obj/item/clothing/suit/armor/heavy
|
||||
name = "heavy armor"
|
||||
|
||||
@@ -29,6 +29,24 @@
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
)
|
||||
|
||||
// Smith
|
||||
/obj/item/clothing/suit/apron/smith
|
||||
name = "smith's apron"
|
||||
desc = "A black, heat-treated apron for use while smelting."
|
||||
icon = 'icons/obj/clothing/suits/utility.dmi'
|
||||
icon_state = "smith_apron"
|
||||
item_state = "smith_apron"
|
||||
icon_override = 'icons/mob/clothing/suits/utility.dmi'
|
||||
allowed = list(/obj/item/hammer, /obj/item/smithing_cast, /obj/item/smithed_item, /obj/item/stack/sheet, /obj/item/stack/tile/brass)
|
||||
resistance_flags = FIRE_PROOF
|
||||
insert_max = 3
|
||||
sprite_sheets = list(
|
||||
"Drask" = 'icons/mob/clothing/species/drask/suits/utility.dmi',
|
||||
"Grey" = 'icons/mob/clothing/species/grey/suits/utility.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/suits/utility.dmi',
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suits/utility.dmi'
|
||||
)
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie
|
||||
name = "chaplain hoodie"
|
||||
@@ -164,6 +182,7 @@
|
||||
armor = list(MELEE = 15, BULLET = 5, LASER = 15, ENERGY = 5, BOMB = 0, RAD = 0, FIRE = 0, ACID = 40)
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
insert_max = 2
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
@@ -252,6 +271,7 @@
|
||||
item_state = "hopcoat"
|
||||
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/kitchen/knife/combat)
|
||||
armor = list(MELEE = 15, BULLET = 10, LASER = 15, ENERGY = 5, BOMB = 15, RAD = 0, FIRE = 50, ACID = 50)
|
||||
insert_max = 2
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/suit.dmi',
|
||||
@@ -267,6 +287,7 @@
|
||||
item_state = "qmcoat"
|
||||
allowed = list(/obj/item/paper, /obj/item/clipboard, /obj/item/gun/energy/kinetic_accelerator, /obj/item/melee/baton, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/melee/knuckleduster, /obj/item/rcs)
|
||||
armor = list(MELEE = 15, BULLET = 10, LASER = 15, ENERGY = 5, BOMB = 15, RAD = 0, FIRE = 50, ACID = 50)
|
||||
insert_max = 2
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
"Drask" = 'icons/mob/clothing/species/drask/suit.dmi',
|
||||
@@ -285,6 +306,7 @@
|
||||
ignore_suitadjust = 0
|
||||
actions_types = list(/datum/action/item_action/button)
|
||||
adjust_flavour = "unbutton"
|
||||
insert_max = 2
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
@@ -301,6 +323,7 @@
|
||||
body_parts_covered = UPPER_TORSO | LOWER_TORSO | LEGS | ARMS
|
||||
allowed = list(/obj/item/storage/fancy/cigarettes, /obj/item/stack/spacecash, /obj/item/flash, /obj/item/gavelhammer)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
insert_max = 2
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi',
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
desc = "Bluer than the standard model."
|
||||
icon_state = "labcoat_cmo_open"
|
||||
item_state = "labcoat_cmo_open"
|
||||
insert_max = 2
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/mad
|
||||
name = "mad scientist's labcoat"
|
||||
@@ -87,6 +88,7 @@
|
||||
desc = "More purple than the standard model."
|
||||
icon_state = "labcoat_rd_open"
|
||||
item_state = "labcoat_rd_open"
|
||||
insert_max = 2
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/hydro
|
||||
name = "hydroponics labcoat"
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
allowed = list (/obj/item/gun/energy/laser/tag/blue)
|
||||
resistance_flags = NONE
|
||||
insert_max = 0
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
@@ -47,6 +48,7 @@
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate_old"
|
||||
item_state = "pirate_old"
|
||||
insert_max = 0
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
@@ -57,6 +59,7 @@
|
||||
desc = "Yarr."
|
||||
icon_state = "pirate"
|
||||
item_state = "pirate"
|
||||
insert_max = 0
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
@@ -67,7 +70,7 @@
|
||||
desc = "Yarr."
|
||||
icon_state = "hgpirate"
|
||||
item_state = "hgpirate"
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/cyborg_suit
|
||||
name = "cyborg suit"
|
||||
@@ -78,14 +81,14 @@
|
||||
flags = CONDUCT
|
||||
fire_resist = T0C+5200
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/johnny_coat
|
||||
name = "johnny~~ coat"
|
||||
desc = "Johnny~~"
|
||||
icon_state = "johnny"
|
||||
item_state = "johnny"
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/justice
|
||||
name = "justice suit"
|
||||
@@ -93,7 +96,7 @@
|
||||
icon_state = "justice"
|
||||
item_state = "justice"
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/judgerobe
|
||||
name = "judge's robe costume"
|
||||
@@ -103,7 +106,7 @@
|
||||
body_parts_covered = UPPER_TORSO | LOWER_TORSO | LEGS | ARMS
|
||||
allowed = list(/obj/item/storage/fancy/cigarettes,/obj/item/stack/spacecash)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/wcoat
|
||||
name = "waistcoat"
|
||||
@@ -112,6 +115,7 @@
|
||||
item_state = "wcoat"
|
||||
blood_overlay_type = "armor"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
insert_max = 0
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
@@ -134,6 +138,7 @@
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank/internals/emergency_oxygen,/obj/item/toy)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
resistance_flags = NONE
|
||||
insert_max = 0
|
||||
|
||||
sprite_sheets = list(
|
||||
"Tajaran" = 'icons/mob/clothing/species/tajaran/suit.dmi',
|
||||
@@ -149,7 +154,7 @@
|
||||
item_state = "hastur"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/imperium_monk
|
||||
name = "imperium monk"
|
||||
@@ -159,6 +164,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/storage/bible, /obj/item/nullrod, /obj/item/reagent_containers/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/chickensuit
|
||||
name = "chicken suit"
|
||||
@@ -167,6 +173,7 @@
|
||||
item_state = "chickensuit"
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/corgisuit
|
||||
name = "corgi suit"
|
||||
@@ -176,6 +183,7 @@
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
dog_fashion = /datum/dog_fashion/back
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/corgisuit/en
|
||||
name = "super-hero E-N suit"
|
||||
@@ -216,7 +224,7 @@
|
||||
item_state = "monkeysuit"
|
||||
body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/holidaypriest
|
||||
name = "holiday priest"
|
||||
@@ -226,6 +234,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
allowed = list(/obj/item/storage/bible, /obj/item/nullrod, /obj/item/reagent_containers/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen)
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/snowman
|
||||
name = "snowman outfit"
|
||||
@@ -234,6 +243,7 @@
|
||||
item_state = "snowman"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/poncho
|
||||
name = "poncho"
|
||||
@@ -263,6 +273,7 @@
|
||||
icon_state = "ponchoshame"
|
||||
item_state = "ponchoshame"
|
||||
flags = NODROP
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/hooded/carp_costume
|
||||
name = "carp costume"
|
||||
@@ -274,6 +285,7 @@
|
||||
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen)
|
||||
hoodtype = /obj/item/clothing/head/hooded/carp_hood
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/head/hooded/carp_hood
|
||||
name = "carp hood"
|
||||
@@ -294,6 +306,7 @@
|
||||
flags = STOPSPRESSUREDMAGE
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
hoodtype = /obj/item/clothing/head/hooded/carp_hood/dragon
|
||||
insert_max = 1
|
||||
|
||||
/obj/item/clothing/suit/hooded/carp_costume/dragon/equipped(mob/user, slot, initial)
|
||||
. = ..()
|
||||
@@ -330,6 +343,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
allowed = list(/obj/item/fish/salmon, /obj/item/fish_eggs/salmon)
|
||||
hoodtype = /obj/item/clothing/head/hooded/salmon_hood
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/head/hooded/salmon_hood
|
||||
name = "salmon hood"
|
||||
@@ -349,6 +363,7 @@
|
||||
flags = THICKMATERIAL
|
||||
hoodtype = /obj/item/clothing/head/hooded/bee_hood
|
||||
sprite_sheets = list("Vox" = 'icons/mob/clothing/species/vox/suit.dmi')
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/head/hooded/bee_hood
|
||||
name = "bee hood"
|
||||
@@ -366,6 +381,7 @@
|
||||
icon_state = "lingspacesuit"
|
||||
item_state = "lingspacesuit"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
insert_max = 0
|
||||
|
||||
/// Bleh!
|
||||
/obj/item/clothing/suit/draculacoat
|
||||
@@ -373,6 +389,7 @@
|
||||
desc = "<i>What is a spessman? A miserable little pile of secrets.</i>"
|
||||
icon_state = "draculacoat"
|
||||
item_state = "draculacoat"
|
||||
insert_max = 0
|
||||
|
||||
/*
|
||||
* Winter Coats
|
||||
@@ -437,6 +454,7 @@
|
||||
item_state = "pimpcoat_tan"
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, RAD = 0, FIRE = 15, ACID = 50)
|
||||
allowed = list(/obj/item/paper, /obj/item/clipboard, /obj/item/gun/energy/kinetic_accelerator, /obj/item/melee/baton, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, /obj/item/melee/knuckleduster, /obj/item/rcs)
|
||||
insert_max = 3
|
||||
|
||||
/obj/item/clothing/suit/furcoat
|
||||
name = "fur coat"
|
||||
@@ -460,6 +478,7 @@
|
||||
"Grey" = 'icons/mob/clothing/species/grey/suit.dmi',
|
||||
"Vox" = 'icons/mob/clothing/species/vox/suit.dmi'
|
||||
)
|
||||
insert_max = 3
|
||||
|
||||
/obj/item/clothing/head/hooded/winterhood/captain
|
||||
icon_state = "winterhood_captain"
|
||||
@@ -741,6 +760,7 @@
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
strip_delay = 60
|
||||
breakouttime = 3000
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/straight_jacket/equipped(mob/living/carbon/human/user, slot)
|
||||
. = ..()
|
||||
@@ -862,6 +882,7 @@
|
||||
item_state = "xenos_helm"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/storage/mercy_hoodie
|
||||
name = "mercy robe"
|
||||
@@ -1090,6 +1111,14 @@
|
||||
item_state = "bomberexpedition"
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/energy/kinetic_accelerator, /obj/item/t_scanner/adv_mining_scanner, /obj/item/shovel, /obj/item/pickaxe, /obj/item/storage/bag/ore, /obj/item/gps)
|
||||
|
||||
/obj/item/clothing/suit/jacket/bomber/smith
|
||||
name = "smithing bomber jacket"
|
||||
desc = "A stylish jacket that has extra internal pockets for inserts."
|
||||
icon_state = "bombersmith"
|
||||
item_state = "bombersmith"
|
||||
insert_max = 3
|
||||
allowed = list(/obj/item/hammer, /obj/item/smithing_cast, /obj/item/smithed_item, /obj/item/stack/sheet, /obj/item/stack/tile/brass)
|
||||
|
||||
/obj/item/clothing/suit/jacket/bomber/hydro
|
||||
name = "hydroponics bomber jacket"
|
||||
desc = "A stylish choice for the workers of the hydroponics lab."
|
||||
@@ -1191,7 +1220,7 @@
|
||||
armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 15, ACID = 15)
|
||||
allowed = list(/obj/item/gun/energy,/obj/item/reagent_containers/spray/pepper,/obj/item/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs,/obj/item/flashlight/seclite)
|
||||
actions_types = list(/datum/action/item_action/toggle_wings)
|
||||
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings
|
||||
name = "griffon cloak"
|
||||
@@ -1215,6 +1244,7 @@
|
||||
icon_state = "lordadmiral"
|
||||
item_state = "lordadmiral"
|
||||
allowed = list (/obj/item/gun)
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/fluff/noble_coat
|
||||
name = "noble coat"
|
||||
@@ -1223,7 +1253,7 @@
|
||||
icon_state = "noble_coat"
|
||||
item_state = "noble_coat"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
|
||||
|
||||
insert_max = 0
|
||||
|
||||
///Advanced Protective Suit, AKA, God Mode in wearable form.
|
||||
|
||||
@@ -1246,6 +1276,7 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
slowdown = -10
|
||||
siemens_coefficient = 0
|
||||
insert_max = 5
|
||||
var/on = FALSE
|
||||
|
||||
/obj/item/clothing/suit/advanced_protective_suit/Destroy()
|
||||
@@ -1357,6 +1388,7 @@
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEGLOVES|HIDEEARS|HIDEFACE
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/neck/cloak/furcape
|
||||
name = "fur cape"
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
pockets?.update_viewers()
|
||||
|
||||
/obj/item/clothing/suit/storage/AltClick(mob/user)
|
||||
..()
|
||||
if(ishuman(user) && Adjacent(user) && !user.incapacitated(FALSE, TRUE))
|
||||
pockets?.open(user)
|
||||
add_fingerprint(user)
|
||||
@@ -45,6 +46,9 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/storage/attackby__legacy__attackchain(obj/item/W as obj, mob/user as mob, params)
|
||||
// Inserts shouldn't be added into the inventory of the pockets if they're attaching.
|
||||
if(istype(W, /obj/item/smithed_item/insert) && length(inserts) != insert_max)
|
||||
return ..()
|
||||
..()
|
||||
return pockets?.attackby__legacy__attackchain(W, user, params)
|
||||
|
||||
@@ -64,8 +68,10 @@
|
||||
|
||||
var/list/L = list()
|
||||
|
||||
L += src.contents
|
||||
|
||||
for(var/obj/item/I in src.contents)
|
||||
if(!istype(I, /obj/item/smithed_item/insert)) // We don't want people to pull inserts out without calling the proper signals, so they shouldn't be displayed in storage.
|
||||
L += I
|
||||
for(var/obj/item/storage/S in src)
|
||||
L += S.return_inv()
|
||||
for(var/obj/item/gift/G in src)
|
||||
|
||||
@@ -109,3 +109,24 @@
|
||||
icon_state = "expedition_overalls"
|
||||
item_state = "expedition_overalls"
|
||||
item_color = "expedition_overalls"
|
||||
|
||||
/obj/item/clothing/under/rank/cargo/smith
|
||||
name = "smith's jumpsuit"
|
||||
desc = "A brown jumpsuit with some extra metal pieces strapped to it. You're not sure why, but the added armor doesn't make you feel any safer..."
|
||||
icon_state = "smith"
|
||||
item_state = "smith"
|
||||
item_color = "smith"
|
||||
|
||||
/obj/item/clothing/under/rank/cargo/smith/skirt
|
||||
name = "smith's jumpskirt"
|
||||
desc = "A brown jumpskirt with some extra metal pieces strapped to it. You're not sure why, but the added armor doesn't make you feel any safer..."
|
||||
icon_state = "smith_skirt"
|
||||
item_state = "smith_skirt"
|
||||
item_color = "smith_skirt"
|
||||
|
||||
/obj/item/clothing/under/rank/cargo/smith/overalls
|
||||
name = "smith's overalls"
|
||||
desc = "A brown set of overalls over a black turtleneck, designed with thinner materials to keep the wearer cool in the heat of the forge."
|
||||
icon_state = "smith_overalls"
|
||||
item_state = "smith_overalls"
|
||||
item_color = "smith_overalls"
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
item_state = "explorer_envirosuit"
|
||||
item_color = "explorer_envirosuit"
|
||||
|
||||
/obj/item/clothing/under/plasmaman/smith
|
||||
name = "smith envirosuit"
|
||||
desc = "An airtight brown and black suit designed for safety around hot metal for plasmamen."
|
||||
icon_state = "smith_envirosuit"
|
||||
item_state = "smith_envirosuit"
|
||||
item_color = "smith_envirosuit"
|
||||
|
||||
/obj/item/clothing/under/plasmaman/chef
|
||||
name = "chef's plasma envirosuit"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,8 @@
|
||||
var/turf/simulated/floor/primary_turf_type
|
||||
/// Icon state of planet present on background of station Z-level
|
||||
var/planet_icon_state
|
||||
/// Icon for glass floors
|
||||
var/primary_turf_type_icon
|
||||
|
||||
/datum/lavaland_theme/New()
|
||||
if(!primary_turf_type)
|
||||
@@ -23,6 +25,7 @@
|
||||
name = "lava"
|
||||
primary_turf_type = /turf/simulated/floor/lava/lava_land_surface
|
||||
planet_icon_state = "planet_lava"
|
||||
primary_turf_type_icon = 'icons/turf/floors/lava.dmi'
|
||||
|
||||
/datum/lavaland_theme/lava/setup()
|
||||
var/datum/river_spawner/lava_spawner = new(level_name_to_num(MINING))
|
||||
@@ -32,6 +35,7 @@
|
||||
name = "plasma"
|
||||
primary_turf_type = /turf/simulated/floor/lava/lava_land_surface/plasma
|
||||
planet_icon_state = "planet_plasma"
|
||||
primary_turf_type_icon = 'icons/turf/floors/liquidplasma.dmi'
|
||||
|
||||
/datum/lavaland_theme/plasma/setup()
|
||||
var/datum/river_spawner/spawner = new(level_name_to_num(MINING))
|
||||
@@ -42,8 +46,8 @@
|
||||
name = "chasm"
|
||||
primary_turf_type = /turf/simulated/floor/chasm/straight_down/lava_land_surface
|
||||
planet_icon_state = "planet_chasm"
|
||||
primary_turf_type_icon = 'icons/turf/floors/Chasms.dmi'
|
||||
|
||||
/datum/lavaland_theme/chasm/setup()
|
||||
var/datum/river_spawner/spawner = new(level_name_to_num(MINING), spread_prob_ = 10, spread_prob_loss_ = 5)
|
||||
spawner.generate(nodes = 6, min_x = 50, min_y = 7, max_x = 250, max_y = 225)
|
||||
|
||||
|
||||
@@ -233,6 +233,9 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/any/supply/mineral_storage
|
||||
access = ACCESS_MINERAL_STOREROOM
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/access/any/supply/smith
|
||||
access = ACCESS_SMITH
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/access/any/supply/qm
|
||||
access = ACCESS_QM
|
||||
|
||||
|
||||
@@ -232,6 +232,9 @@
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/mineral_storage
|
||||
access = ACCESS_MINERAL_STOREROOM
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/smith
|
||||
access = ACCESS_SMITH
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/any/supply/qm
|
||||
access = ACCESS_QM
|
||||
|
||||
|
||||
@@ -20,6 +20,11 @@
|
||||
usesound = 'sound/effects/picaxe1.ogg'
|
||||
toolspeed = 1
|
||||
|
||||
/obj/item/pickaxe/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/pickaxe/proc/playDigSound()
|
||||
playsound(src, pick(digsound),20,1)
|
||||
|
||||
@@ -141,6 +146,11 @@
|
||||
usesound = 'sound/effects/shovel_dig.ogg'
|
||||
toolspeed = 0.5
|
||||
|
||||
/obj/item/shovel/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/shovel/spade
|
||||
name = "spade"
|
||||
desc = "A small tool for digging and moving dirt."
|
||||
|
||||
@@ -25,6 +25,14 @@
|
||||
var/obj/item/stack/R = new res(src)
|
||||
R.amount = rand(10, 15) //ash drakes drop 5, this is perfectly fine
|
||||
|
||||
var/list/exquisite_ore = list(
|
||||
/obj/item/stack/ore/platinum, // The vetus can have some, as a treat
|
||||
/obj/item/stack/ore/iridium,
|
||||
/obj/item/stack/ore/palladium
|
||||
)
|
||||
|
||||
for(var/ore in exquisite_ore)
|
||||
new ore(src, rand(5, 10)) // Don't want mining to step too much on explorer's toes.
|
||||
|
||||
/obj/structure/closet/crate/necropolis/ancient/ex_act(severity)
|
||||
return
|
||||
|
||||
@@ -183,6 +183,7 @@
|
||||
"Vulpkanin" = 'icons/mob/clothing/species/vulpkanin/suit.dmi'
|
||||
)
|
||||
hide_tail_by_species = list("Unathi", "Tajaran", "Vox", "Vulpkanin")
|
||||
insert_max = 0
|
||||
|
||||
/obj/item/clothing/suit/hooded/berserker/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define BASE_POINT_MULT 0.65
|
||||
#define BASE_SHEET_MULT 0.65
|
||||
#define POINT_MULT_ADD_PER_RATING 0.35
|
||||
#define SHEET_MULT_ADD_PER_RATING 0.35
|
||||
#define BASE_POINT_MULT 0.90
|
||||
#define BASE_SHEET_MULT 0.90
|
||||
#define POINT_MULT_ADD_PER_RATING 0.10
|
||||
#define SHEET_MULT_ADD_PER_RATING 0.10
|
||||
|
||||
/**
|
||||
* # Ore Redemption Machine
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
/obj/machinery/mineral/ore_redemption/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, FALSE, /obj/item/stack, null, CALLBACK(src, PROC_REF(on_material_insert)))
|
||||
AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLATINUM, MAT_IRIDIUM, MAT_PALLADIUM), INFINITY, FALSE, /obj/item/stack, null, CALLBACK(src, PROC_REF(on_material_insert)))
|
||||
ore_buffer = list()
|
||||
files = new /datum/research/smelter(src)
|
||||
// Stock parts
|
||||
|
||||
@@ -189,6 +189,47 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
|
||||
refined_type = /obj/item/stack/sheet/mineral/diamond
|
||||
materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/ore/platinum
|
||||
name = "platinum ore"
|
||||
desc = "Rock formation containing platinum."
|
||||
icon_state = "platinum_ore"
|
||||
item_state = "platinum_ore"
|
||||
origin_tech = "materials=5"
|
||||
singular_name = "platinum ore chunk"
|
||||
points = 50
|
||||
refined_type = /obj/item/stack/sheet/mineral/platinum
|
||||
materials = list(MAT_PLATINUM = MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/ore/palladium
|
||||
name = "palladium ore"
|
||||
desc = "Rock formation containing palladium."
|
||||
icon_state = "palladium_ore"
|
||||
item_state = "palladium_ore"
|
||||
origin_tech = "materials=5"
|
||||
singular_name = "palladium ore chunk"
|
||||
points = 50
|
||||
refined_type = /obj/item/stack/sheet/mineral/palladium
|
||||
materials = list(MAT_PALLADIUM = MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/ore/iridium
|
||||
name = "iridium ore"
|
||||
desc = "Rock formation containing iridium."
|
||||
icon_state = "iridium_ore"
|
||||
item_state = "iridium_ore"
|
||||
origin_tech = "materials=5"
|
||||
singular_name = "iridium ore chunk"
|
||||
points = 50
|
||||
refined_type = /obj/item/stack/sheet/mineral/iridium
|
||||
materials = list(MAT_IRIDIUM = MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/ore/brass
|
||||
name = "brass ore"
|
||||
desc = "Rock formation containing brass. This ore is not naturally occurring - if you see this, let development know."
|
||||
singular_name = "brass ore chunk"
|
||||
points = 1
|
||||
refined_type = /obj/item/stack/tile/brass
|
||||
materials = list(MAT_BRASS = MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/ore/bananium
|
||||
name = "bananium ore"
|
||||
desc = "HONK!"
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
heat_protection = UPPER_TORSO|LOWER_TORSO
|
||||
cold_protection = UPPER_TORSO|LOWER_TORSO
|
||||
permeability_coefficient = 0.01
|
||||
insert_max = 0
|
||||
hide_tail_by_species = list("modsuit")
|
||||
sprite_sheets = list(
|
||||
"Vulpkanin" = 'icons/mob/clothing/modsuit/species/vulp_modsuits.dmi',
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
var/select_name = "energy"
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
muzzle_flash_effect = /obj/effect/temp_visual/target_angled/muzzle_flash/energy
|
||||
/// Damage multiplier from equipped lenses
|
||||
var/lens_damage_multiplier = 1
|
||||
/// Speed multiplier from equipped lenses.
|
||||
var/lens_speed_multiplier = 1
|
||||
|
||||
/obj/item/ammo_casing/energy/laser
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
|
||||
@@ -47,6 +47,11 @@
|
||||
if(!istype(targloc) || !istype(curloc) || !BB)
|
||||
return
|
||||
BB.ammo_casing = src
|
||||
if(istype(BB.ammo_casing, /obj/item/ammo_casing/energy))
|
||||
var/obj/item/ammo_casing/energy/energy_casing = BB.ammo_casing
|
||||
BB.damage = BB.damage * energy_casing.lens_damage_multiplier
|
||||
BB.stamina = BB.stamina * energy_casing.lens_damage_multiplier
|
||||
BB.speed = BB.speed * energy_casing.lens_speed_multiplier
|
||||
|
||||
if(target && get_dist(user, target) <= 1) //Point blank shot must always hit
|
||||
BB.starting = curloc
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
origin_tech = "combat=3;powerstorage=3;engineering=3"
|
||||
weapon_weight = WEAPON_LIGHT
|
||||
can_flashlight = TRUE
|
||||
can_be_lensed = FALSE
|
||||
flight_x_offset = 15
|
||||
flight_y_offset = 9
|
||||
var/overheat_time = 16
|
||||
|
||||
@@ -34,12 +34,19 @@
|
||||
var/overlay_set
|
||||
/// Used when updating icon and overlays to determine the energy pips
|
||||
var/ratio
|
||||
/// Can it use a lens
|
||||
var/can_be_lensed = TRUE
|
||||
/// Current lens
|
||||
var/obj/item/smithed_item/lens/current_lens
|
||||
|
||||
/obj/item/gun/energy/examine(mob/user)
|
||||
. = ..()
|
||||
if(cell)
|
||||
. += "<span class='notice'>It is [round(cell.percent())]% charged.</span>"
|
||||
. += "<span class='notice'>Energy weapons can fire through windows and other see-through surfaces. [can_charge ? "Can be recharged with a recharger" : "Cannot be recharged in a recharger."]</span>"
|
||||
if(current_lens)
|
||||
. += "<span class='notice'>Has a lens currently attached.</span>"
|
||||
. += "<span class='notice'>Lenses can be removed with Alt-Click.</span>"
|
||||
|
||||
/obj/item/gun/energy/emp_act(severity)
|
||||
cell.use(round(cell.charge / severity))
|
||||
@@ -66,6 +73,40 @@
|
||||
if(selfcharge)
|
||||
START_PROCESSING(SSobj, src)
|
||||
update_icon()
|
||||
RegisterSignal(src, COMSIG_LENS_ATTACH, PROC_REF(attach_lens))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(detach_lens))
|
||||
|
||||
/obj/item/gun/energy/attackby__legacy__attackchain(obj/item/I, mob/living/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/smithed_item/lens))
|
||||
SEND_SIGNAL(src, COMSIG_LENS_ATTACH, I, user)
|
||||
|
||||
/obj/item/gun/energy/proc/attach_lens(atom/source, obj/item/smithed_item/lens/new_lens, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_LENS_ATTACH
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
if(!can_be_lensed)
|
||||
return
|
||||
if(!istype(new_lens))
|
||||
return
|
||||
if(current_lens)
|
||||
to_chat(user, "<span class='notice'>Your [src] already has a lens.</span>")
|
||||
return
|
||||
if(new_lens.flags & NODROP || !user.transfer_item_to(new_lens, src))
|
||||
to_chat(user, "<span class='warning'>[new_lens] is stuck to your hand!</span>")
|
||||
return
|
||||
current_lens = new_lens
|
||||
new_lens.on_attached(src)
|
||||
|
||||
/obj/item/gun/energy/proc/detach_lens(atom/source, mob/user)
|
||||
SIGNAL_HANDLER // COMSIG_CLICK_ALT
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
if(!current_lens)
|
||||
to_chat(user, "<span class='notice'>Your [src] has no lens to remove.</span>")
|
||||
return
|
||||
user.put_in_hands(current_lens)
|
||||
current_lens.on_detached()
|
||||
|
||||
/obj/item/gun/energy/proc/update_ammo_types()
|
||||
var/obj/item/ammo_casing/energy/shot
|
||||
@@ -132,6 +173,8 @@
|
||||
/obj/item/gun/energy/process_fire(atom/target, mob/living/user, message = 1, params, zone_override, bonus_spread = 0)
|
||||
if(!chambered && can_shoot())
|
||||
process_chamber()
|
||||
if(current_lens)
|
||||
current_lens.damage_lens()
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/energy/proc/select_fire(mob/living/user)
|
||||
|
||||
@@ -82,6 +82,14 @@
|
||||
build_path = /obj/item/screwdriver
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/hammer
|
||||
name = "Hammer"
|
||||
id = "hammer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
build_path = /obj/item/hammer
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/wirecutters
|
||||
name = "Wirecutters"
|
||||
id = "wirecutters"
|
||||
|
||||
@@ -512,6 +512,66 @@
|
||||
build_path = /obj/item/circuitboard/ore_redemption
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/smart_hopper
|
||||
name = "Machine Design (Smart Hopper)"
|
||||
desc = "The circuit board for a Smart Hopper."
|
||||
id = "smart_hopper"
|
||||
req_tech = list("programming" = 2, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/smart_hopper
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/magma_crucible
|
||||
name = "Machine Design (Magma Crucible)"
|
||||
desc = "The circuit board for a Magma Crucible."
|
||||
id = "magma_crucible"
|
||||
req_tech = list("programming" = 2, "engineering" = 5, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/magma_crucible
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/casting_basin
|
||||
name = "Machine Design (Casting Bench)"
|
||||
desc = "The circuit board for a Casting Bench."
|
||||
id = "casting_bench"
|
||||
req_tech = list("programming" = 2, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/casting_basin
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/power_hammer
|
||||
name = "Machine Design (Power Hammer)"
|
||||
desc = "The circuit board for a Power Hammer."
|
||||
id = "power_hammer"
|
||||
req_tech = list("programming" = 2, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/power_hammer
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/lava_furnace
|
||||
name = "Machine Design (Lava Furnace)"
|
||||
desc = "The circuit board for a Lava Furnace."
|
||||
id = "lava_furnace"
|
||||
req_tech = list("programming" = 2, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/lava_furnace
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/kinetic_assembler
|
||||
name = "Machine Design (Kinetic Assembler)"
|
||||
desc = "The circuit board for a Kinetic Assembler."
|
||||
id = "kinetic_assembler"
|
||||
req_tech = list("programming" = 2, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
build_path = /obj/item/circuitboard/kinetic_assembler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/mining_equipment_vendor
|
||||
name = "Machine Design (Mining Rewards Vendor Board)"
|
||||
desc = "The circuit board for a Mining Rewards Vendor."
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
/obj/item/retractor/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/retractor/augment
|
||||
desc = "Micro-mechanical manipulator for retracting stuff."
|
||||
@@ -37,6 +39,8 @@
|
||||
/obj/item/hemostat/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/hemostat/augment
|
||||
desc = "Tiny servos power a pair of pincers to stop bleeding."
|
||||
@@ -57,6 +61,11 @@
|
||||
attack_verb = list("burnt")
|
||||
tool_behaviour = TOOL_CAUTERY
|
||||
|
||||
/obj/item/cautery/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/cautery/attack__legacy__attackchain(mob/living/target, mob/living/user)
|
||||
if(!cigarette_lighter_act(user, target))
|
||||
return ..()
|
||||
@@ -107,6 +116,8 @@
|
||||
/obj/item/surgicaldrill/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/surgicaldrill/suicide_act(mob/user)
|
||||
to_chat(viewers(user), pick("<span class='suicide'>[user] is pressing [src] to [user.p_their()] temple and activating it! It looks like [user.p_theyre()] trying to commit suicide!</span>",
|
||||
@@ -145,6 +156,8 @@
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
AddComponent(/datum/component/surgery_initiator)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
|
||||
/obj/item/scalpel/suicide_act(mob/user)
|
||||
@@ -246,6 +259,8 @@
|
||||
/obj/item/circular_saw/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/circular_saw/augment
|
||||
desc = "A small but very fast spinning saw. Edges dulled to prevent accidental cutting inside of the surgeon."
|
||||
@@ -270,6 +285,8 @@
|
||||
/obj/item/bonegel/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/bonegel/augment
|
||||
toolspeed = 0.5
|
||||
@@ -290,6 +307,8 @@
|
||||
/obj/item/fix_o_vein/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/fix_o_vein/augment
|
||||
toolspeed = 0.5
|
||||
@@ -313,6 +332,8 @@
|
||||
/obj/item/bonesetter/Initialize(mapload)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/bonesetter/augment
|
||||
toolspeed = 0.5
|
||||
|
||||
@@ -28,6 +28,11 @@
|
||||
/// How much power does each teleport use?
|
||||
var/chargecost = 1000
|
||||
|
||||
/obj/item/rcs/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_BIT_ATTACH, PROC_REF(add_bit))
|
||||
RegisterSignal(src, COMSIG_CLICK_ALT, PROC_REF(remove_bit))
|
||||
|
||||
/obj/item/rcs/get_cell()
|
||||
return rcell
|
||||
|
||||
@@ -131,7 +136,8 @@
|
||||
return
|
||||
|
||||
teleporting = FALSE
|
||||
rcell.use(chargecost)
|
||||
var/final_cost = chargecost * bit_efficiency_mod
|
||||
rcell.use(final_cost)
|
||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, TRUE)
|
||||
do_teleport(C, target)
|
||||
to_chat(user, "<span class='notice'>Teleport successful. [round(rcell.charge/chargecost)] charge\s left.</span>")
|
||||
to_chat(user, "<span class='notice'>Teleport successful. [round(rcell.charge/final_cost)] charge\s left.</span>")
|
||||
|
||||
Reference in New Issue
Block a user