diff --git a/code/datums/outfits/costumes/halloween.dm b/code/datums/outfits/costumes/halloween.dm index d4ad8fa8f99..2b8f6d7447a 100644 --- a/code/datums/outfits/costumes/halloween.dm +++ b/code/datums/outfits/costumes/halloween.dm @@ -110,6 +110,14 @@ name = "Costume - Pirate" uniform = /obj/item/clothing/under/pirate shoes = /obj/item/clothing/shoes/brown - head = /obj/item/clothing/head/helmet/space + head = /obj/item/clothing/head/pirate suit = /obj/item/clothing/suit/pirate - glasses = /obj/item/clothing/glasses/eyepatch \ No newline at end of file + glasses = /obj/item/clothing/glasses/eyepatch + +/decl/hierarchy/outfit/h_whiteout + name = "Costume - Snow Ghost" + uniform = /obj/item/clothing/under/color/white{ starting_accessories=list(/obj/item/clothing/accessory/scarf/white) } + shoes = /obj/item/clothing/shoes/white + suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout + gloves = /obj/item/clothing/gloves/white + mask = /obj/item/clothing/mask/surgical \ No newline at end of file diff --git a/code/datums/uplink/visible_weapons.dm b/code/datums/uplink/visible_weapons.dm index f7d79c5b6a2..ce4e205f644 100644 --- a/code/datums/uplink/visible_weapons.dm +++ b/code/datums/uplink/visible_weapons.dm @@ -112,6 +112,12 @@ path = /obj/item/weapon/storage/secure/briefcase/rifle antag_roles = list("traitor", "autotraitor", "infiltrator") +/datum/uplink_item/item/visible_weapons/fuelrodcannon + name = "Fuel-Rod Cannon" + desc = "An incredibly bulky weapon whose devastating firepower is only matched by its severe need for expensive, and rare, ammunition. This device will likely require extra preparation to use, you are warned." + item_cost = DEFAULT_TELECRYSTAL_AMOUNT + path = /obj/item/weapon/storage/secure/briefcase/fuelrod + /datum/uplink_item/item/visible_weapons/tommygun name = "Tommygun (.45)" // We're keeping this because it's CLASSY. -Spades item_cost = 60 diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 95809c63f44..88a448c571c 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -28,17 +28,21 @@ return spawn(0) - var/religion_name = "Christianity" - var/new_religion = sanitize(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name), MAX_NAME_LEN) + var/religion_name = "Unitarianism" + var/new_religion = sanitize(input(H, "You are the crew services officer. Would you like to change your religion? Default is Unitarianism", "Name change", religion_name), MAX_NAME_LEN) if (!new_religion) new_religion = religion_name switch(lowertext(new_religion)) + if("unitarianism") + B.name = "The Talmudic Quran" if("christianity") B.name = pick("The Holy Bible","The Dead Sea Scrolls") + if("Judaism") + B.name = "The Torah" if("satanism") - B.name = "The Unholy Bible" - if("cthulu") + B.name = "The Satanic Bible" + if("cthulhu") B.name = "The Necronomicon" if("islam") B.name = "Quran" @@ -52,20 +56,21 @@ B.name = "Toolbox Manifesto" if("homosexuality") B.name = "Guys Gone Wild" - //if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks") - // B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition") - // H.setBrainLoss(100) // starts off retarded as fuck if("science") B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") + if("capitalism") + B.name = "Wealth of Nations" + if("communism") + B.name = "The Communist Manifesto" else B.name = "The Holy Book of [new_religion]" feedback_set_details("religion_name","[new_religion]") spawn(1) - var/deity_name = "Space Jesus" - var/new_deity = sanitize(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name), MAX_NAME_LEN) + var/deity_name = "Hashem" + var/new_deity = sanitize(input(H, "Would you like to change your deity? Default is Hashem", "Name change", deity_name), MAX_NAME_LEN) - if ((length(new_deity) == 0) || (new_deity == "Space Jesus") ) + if ((length(new_deity) == 0) || (new_deity == "Hashem") ) new_deity = deity_name B.deity_name = new_deity diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6455fa64301..d8ad21eb211 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -120,6 +120,17 @@ obj/machinery/recharger update_use_power(1) return + if(istype(charging, /obj/item/weapon/gun/magnetic)) + var/obj/item/weapon/gun/magnetic/M = charging + if(!M.cell.fully_charged()) + icon_state = icon_state_charging + M.cell.give(active_power_usage*CELLRATE) + update_use_power(2) + else + icon_state = icon_state_charged + update_use_power(1) + return + if(istype(charging, /obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = charging if(B.bcell) @@ -226,7 +237,7 @@ obj/machinery/recharger icon = 'icons/obj/stationobjs.dmi' icon_state = "wrecharger0" active_power_usage = 25000 //25 kW , It's more specialized than the standalone recharger (guns, batons, and flashlights only) so make it more powerful - allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/flashlight, /obj/item/weapon/cell/device) + allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/gun/magnetic, /obj/item/weapon/melee/baton, /obj/item/device/flashlight, /obj/item/weapon/cell/device) icon_state_charged = "wrecharger2" icon_state_charging = "wrecharger1" icon_state_idle = "wrecharger0" diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index 85e68c31afd..d9e9baabf6f 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -52,11 +52,17 @@ /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/New(newLoc, amt = 1, d = 0) set_dir(d) //Setting this direction means you won't get torched by your own flamethrower. + if(istype(newLoc, /turf/simulated)) + var/turf/simulated/T = newLoc + T.hotspot_expose((T20C*2) + 380,500) //Ignite the fuel. . = ..() /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/Spread() //The spread for flamethrower fuel is much more precise, to create a wide fire pattern. - if(amount < 0.1) return + if(amount <= 0.1) + if(amount < 0.025) //Hopefully stops fuel spreading into unburnable puddles. + qdel(src) + return var/turf/simulated/S = loc if(!istype(S)) return @@ -65,7 +71,12 @@ if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O) continue if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0)) - new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(O,amount*0.25,d) + var/new_pool_amount = amount * 0.25 + if(new_pool_amount > 0.1) + var/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/F = new(O, new_pool_amount, d) + if(F.amount < 0.025) //Safety. + qdel(F) + return O.hotspot_expose((T20C*2) + 380,500) //Light flamethrower fuel on fire immediately. amount *= 0.25 diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index f113e5f1530..9a56cf94a7a 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -177,8 +177,9 @@ if(M.brainmob.mind) for(var/mob/observer/dead/G in player_list) if(G.can_reenter_corpse && G.mind == M.brainmob.mind) - ghost_can_reenter = 1 - break + ghost_can_reenter = 1 //May come in use again at another point. + to_chat(user, "\The [W] is completely unresponsive; though it may be able to auto-resuscitate.") //Jamming a ghosted brain into a borg is likely detrimental, and may result in some problems. + return if(!ghost_can_reenter) user << "\The [W] is completely unresponsive; there's no point." return diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index 6f8e1782eb2..46543b901b6 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -103,7 +103,7 @@ /obj/item/device/paicard, /obj/item/device/violin, /obj/item/weapon/storage/belt/utility/full, - /obj/item/clothing/accessory/horrible) + /obj/item/clothing/accessory/tie/horrible) if(!ispath(gift_type,/obj/item)) return diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 0c7ec201675..cd3aca0f378 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -295,3 +295,22 @@ for(var/i = 1 to 4) new /obj/item/ammo_casing/a145(src) + +/obj/item/weapon/storage/secure/briefcase/fuelrod + name = "heavy briefcase" + desc = "A heavy, locked briefcase." + description_fluff = "The container, upon opening, looks to have a few oddly shaped indentations in its packing." + description_antag = "This case will likely contain a charged fuel rod gun, and a few fuel rods to go with it. It can only hold the fuel rod gun, fuel rods, batteries, a screwdriver, and stock machine parts." + force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it. + can_hold = list(/obj/item/weapon/gun/magnetic/fuelrod, /obj/item/weapon/fuel_assembly, /obj/item/weapon/cell, /obj/item/weapon/stock_parts, /obj/item/weapon/screwdriver) + + +/obj/item/weapon/storage/secure/briefcase/fuelrod/New() + ..() + new /obj/item/weapon/gun/magnetic/fuelrod(src) + new /obj/item/weapon/fuel_assembly/deuterium(src) + new /obj/item/weapon/fuel_assembly/deuterium(src) + new /obj/item/weapon/fuel_assembly/tritium(src) + new /obj/item/weapon/fuel_assembly/tritium(src) + new /obj/item/weapon/fuel_assembly/phoron(src) + new /obj/item/weapon/screwdriver(src) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index e08dba0a0f8..5976c357036 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -1,78 +1,6 @@ -//trees -/obj/structure/flora/tree - name = "tree" - anchored = 1 - density = 1 - pixel_x = -16 - layer = MOB_LAYER // You know what, let's play it safe. - -/obj/structure/flora/tree/pine - name = "pine tree" - icon = 'icons/obj/flora/pinetrees.dmi' - icon_state = "pine_1" - -/obj/structure/flora/tree/pine/New() - ..() - icon_state = "pine_[rand(1, 3)]" - -/obj/structure/flora/tree/pine/xmas - name = "xmas tree" - icon = 'icons/obj/flora/pinetrees.dmi' - icon_state = "pine_c" - -/obj/structure/flora/tree/pine/xmas/New() - ..() - icon_state = "pine_c" - -/obj/structure/flora/tree/dead - icon = 'icons/obj/flora/deadtrees.dmi' - icon_state = "tree_1" - -/obj/structure/flora/tree/dead/New() - ..() - icon_state = "tree_[rand(1, 6)]" - -/obj/structure/flora/tree/sif - name = "glowing tree" - desc = "It's a tree, except this one seems quite alien. It glows a deep blue." - icon = 'icons/obj/flora/deadtrees.dmi' - icon_state = "tree_sif" - -/obj/structure/flora/tree/sif/New() - update_icon() - -/obj/structure/flora/tree/sif/update_icon() - set_light(5, 1, "#33ccff") - overlays.Cut() - overlays.Add(image(icon = 'icons/obj/flora/deadtrees.dmi', icon_state = "[icon_state]_glow", layer = LIGHTING_LAYER + 0.1)) - -//grass -/obj/structure/flora/grass - name = "grass" - icon = 'icons/obj/flora/snowflora.dmi' - anchored = 1 - -/obj/structure/flora/grass/brown - icon_state = "snowgrass1bb" - -/obj/structure/flora/grass/brown/New() - ..() - icon_state = "snowgrass[rand(1, 3)]bb" -/obj/structure/flora/grass/green - icon_state = "snowgrass1gb" -/obj/structure/flora/grass/green/New() - ..() - icon_state = "snowgrass[rand(1, 3)]gb" - -/obj/structure/flora/grass/both - icon_state = "snowgrassall1" - -/obj/structure/flora/grass/both/New() - ..() - icon_state = "snowgrassall[rand(1, 3)]" //bushes diff --git a/code/game/objects/structures/flora/grass.dm b/code/game/objects/structures/flora/grass.dm new file mode 100644 index 00000000000..d5e7e965a87 --- /dev/null +++ b/code/game/objects/structures/flora/grass.dm @@ -0,0 +1,27 @@ +//grass +/obj/structure/flora/grass + name = "grass" + icon = 'icons/obj/flora/snowflora.dmi' + anchored = 1 + +/obj/structure/flora/grass/brown + icon_state = "snowgrass1bb" + +/obj/structure/flora/grass/brown/New() + ..() + icon_state = "snowgrass[rand(1, 3)]bb" + + +/obj/structure/flora/grass/green + icon_state = "snowgrass1gb" + +/obj/structure/flora/grass/green/New() + ..() + icon_state = "snowgrass[rand(1, 3)]gb" + +/obj/structure/flora/grass/both + icon_state = "snowgrassall1" + +/obj/structure/flora/grass/both/New() + ..() + icon_state = "snowgrassall[rand(1, 3)]" \ No newline at end of file diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm new file mode 100644 index 00000000000..d7960b59825 --- /dev/null +++ b/code/game/objects/structures/flora/trees.dm @@ -0,0 +1,202 @@ +//trees +/obj/structure/flora/tree + name = "tree" + anchored = 1 + density = 1 + pixel_x = -16 + layer = MOB_LAYER // You know what, let's play it safe. + var/base_state = null // Used for stumps. + var/health = 200 // Used for chopping down trees. + var/max_health = 200 + var/shake_animation_degrees = 4 // How much to shake the tree when struck. Larger trees should have smaller numbers or it looks weird. + var/obj/item/stack/material/product = null // What you get when chopping this tree down. Generally it will be a type of wood. + var/product_amount = 10 // How much of a stack you get, if the above is defined. + var/is_stump = FALSE // If true, suspends damage tracking and most other effects. + +/obj/structure/flora/tree/attackby(var/obj/item/weapon/W, var/mob/living/user) + if(!istype(W)) + return ..() + + if(is_stump) + return + + visible_message("\The [user] hits \the [src] with \the [W]!") + + var/damage_to_do = W.force + if(!W.sharp && !W.edge) + damage_to_do = round(damage_to_do / 4) + if(damage_to_do > 0) + if(W.sharp && W.edge) + playsound(get_turf(src), 'sound/effects/woodcutting.ogg', 50, 1) + else + playsound(get_turf(src), W.hitsound, 50, 1) + if(damage_to_do > 5) + adjust_health(-damage_to_do) + else + to_chat(user, "\The [W] is ineffective at harming \the [src].") + + hit_animation() + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + user.do_attack_animation(src) + +// Shakes the tree slightly, more or less stolen from lockers. +/obj/structure/flora/tree/proc/hit_animation() + var/init_px = pixel_x + var/shake_dir = pick(-1, 1) + animate(src, transform=turn(matrix(), shake_animation_degrees * shake_dir), pixel_x=init_px + 2*shake_dir, time=1) + animate(transform=null, pixel_x=init_px, time=6, easing=ELASTIC_EASING) + +// Used when the tree gets hurt. +/obj/structure/flora/tree/proc/adjust_health(var/amount) + if(is_stump) + return + + health = between(0, health + amount, max_health) + if(health <= 0) + die() + +// Called when the tree loses all health, for whatever reason. +/obj/structure/flora/tree/proc/die() + if(is_stump) + return + + if(product && product_amount) // Make wooden logs. + var/obj/item/stack/material/M = new product(get_turf(src)) + M.amount = product_amount + M.update_icon() + visible_message("\The [src] is felled!") + stump() + +// Makes the tree into a mostly non-interactive stump. +/obj/structure/flora/tree/proc/stump() + if(is_stump) + return + + is_stump = TRUE + icon_state = "[base_state]_stump" + overlays.Cut() // For the Sif tree and other future glowy trees. + set_light(0) + +/obj/structure/flora/tree/ex_act(var/severity) + adjust_health(-(max_health / severity)) + + +/obj/structure/flora/tree/get_description_interaction() + var/list/results = list() + + if(!is_stump) + results += "[desc_panel_image("hatchet")]to cut down this tree into logs. Any sharp and strong weapon will do." + + results += ..() + + return results + +// Subtypes. + +// Pine trees + +/obj/structure/flora/tree/pine + name = "pine tree" + icon = 'icons/obj/flora/pinetrees.dmi' + icon_state = "pine_1" + base_state = "pine" + product = /obj/item/stack/material/log + shake_animation_degrees = 3 + +/obj/structure/flora/tree/pine/New() + ..() + icon_state = "[base_state]_[rand(1, 3)]" + + +/obj/structure/flora/tree/pine/xmas + name = "xmas tree" + icon = 'icons/obj/flora/pinetrees.dmi' + icon_state = "pine_c" + +/obj/structure/flora/tree/pine/xmas/New() + ..() + icon_state = "pine_c" + +// Palm trees + +/obj/structure/flora/tree/palm + icon = 'icons/obj/flora/palmtrees.dmi' + icon_state = "palm1" + base_state = "palm" + product = /obj/item/stack/material/log + product_amount = 5 + health = 200 + max_health = 200 + pixel_x = 0 + +/obj/structure/flora/tree/palm/New() + ..() + icon_state = "[base_state][rand(1, 2)]" + + +// Dead trees + +/obj/structure/flora/tree/dead + icon = 'icons/obj/flora/deadtrees.dmi' + icon_state = "tree_1" + base_state = "tree" + product = /obj/item/stack/material/log + product_amount = 5 + health = 200 + max_health = 200 + +/obj/structure/flora/tree/dead/New() + ..() + icon_state = "[base_state]_[rand(1, 6)]" + +// Small jungle trees + +/obj/structure/flora/tree/jungle_small + icon = 'icons/obj/flora/jungletreesmall.dmi' + icon_state = "tree" + base_state = "tree" + product = /obj/item/stack/material/log + product_amount = 10 + health = 400 + max_health = 400 + pixel_x = -32 + +/obj/structure/flora/tree/jungle_small/New() + ..() + icon_state = "[base_state][rand(1, 6)]" + +// Big jungle trees + +/obj/structure/flora/tree/jungle + icon = 'icons/obj/flora/jungletree.dmi' + icon_state = "tree" + base_state = "tree" + product = /obj/item/stack/material/log + product_amount = 20 + health = 800 + max_health = 800 + pixel_x = -48 + pixel_y = -16 + shake_animation_degrees = 2 + +/obj/structure/flora/tree/jungle/New() + ..() + icon_state = "[base_state][rand(1, 6)]" + +// Sif trees + +/obj/structure/flora/tree/sif + name = "glowing tree" + desc = "It's a tree, except this one seems quite alien. It glows a deep blue." + icon = 'icons/obj/flora/deadtrees.dmi' + icon_state = "tree_sif" + base_state = "tree_sif" + product = /obj/item/stack/material/log/sif + +/obj/structure/flora/tree/sif/New() + update_icon() + +/obj/structure/flora/tree/sif/update_icon() + set_light(5, 1, "#33ccff") + overlays.Cut() + overlays.Add(image(icon = 'icons/obj/flora/deadtrees.dmi', icon_state = "[icon_state]_glow", layer = LIGHTING_LAYER + 0.1)) \ No newline at end of file diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm index 4cc5394e20e..ea52ed3845b 100644 --- a/code/game/objects/structures/railing.dm +++ b/code/game/objects/structures/railing.dm @@ -1,7 +1,7 @@ // Based on railing.dmi from https://github.com/Endless-Horizon/CEV-Eris /obj/structure/railing name = "railing" - desc = "A standard steel railing. Play stupid games win stupid prizes." + desc = "A standard steel railing. Play stupid games, win stupid prizes." icon = 'icons/obj/railing.dmi' density = 1 throwpass = 1 diff --git a/code/game/turfs/simulated/outdoors/snow.dm b/code/game/turfs/simulated/outdoors/snow.dm index 16678d7c988..22f9085a8c1 100644 --- a/code/game/turfs/simulated/outdoors/snow.dm +++ b/code/game/turfs/simulated/outdoors/snow.dm @@ -25,7 +25,7 @@ /turf/simulated/floor/outdoors/snow/attackby(var/obj/item/W, var/mob/user) if(istype(W, /obj/item/weapon/shovel)) to_chat(user, "You begin to remove \the [src] with your [W].") - if(do_after(user, 4 SECONDS)) + if(do_after(user, 4 SECONDS * W.toolspeed)) to_chat(user, "\The [src] has been dug up, and now lies in a pile nearby.") new /obj/item/stack/material/snow(src) demote() diff --git a/code/game/turfs/simulated/wall_types.dm b/code/game/turfs/simulated/wall_types.dm index 6b793d60612..ce4451ff121 100644 --- a/code/game/turfs/simulated/wall_types.dm +++ b/code/game/turfs/simulated/wall_types.dm @@ -53,6 +53,12 @@ /turf/simulated/wall/sifwood/New(var/newloc) ..(newloc,"alien wood") +/turf/simulated/wall/log/New(var/newloc) + ..(newloc,"log") + +/turf/simulated/wall/log_sif/New(var/newloc) + ..(newloc,"alien log") + // Shuttle Walls /turf/simulated/shuttle/wall name = "autojoin wall" diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index 44a814ac679..ecd61cae71b 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -14,7 +14,8 @@ var/list/gear_datums = list() //create a list of gear datums to sort for(var/geartype in typesof(/datum/gear)-/datum/gear) var/datum/gear/G = geartype - + if(initial(G.type_category) == geartype) + continue var/use_name = initial(G.display_name) var/use_category = initial(G.sort_category) @@ -205,6 +206,7 @@ var/list/gear_datums = list() var/sort_category = "General" var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned. var/exploitable = 0 //Does it go on the exploitable information list? + var/type_category = null /datum/gear/New() ..() diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index bbae19a02a7..6bc944552c6 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -1,42 +1,28 @@ /datum/gear/accessory - display_name = "armband, red" - path = /obj/item/clothing/accessory/armband + display_name = "accessory" slot = slot_tie sort_category = "Accessories" + type_category = /datum/gear/accessory + path = /obj/item/clothing/accessory + cost = 1 -/datum/gear/accessory/cargo - display_name = "armband, cargo" - path = /obj/item/clothing/accessory/armband/cargo +/datum/gear/accessory/armband + display_name = "armband selection" + path = /obj/item/clothing/accessory/armband -/datum/gear/accessory/emt - display_name = "armband, EMT" - path = /obj/item/clothing/accessory/armband/medblue +/datum/gear/accessory/armband/New() + ..() + var/list/armbands = list() + for(var/armband in (typesof(/obj/item/clothing/accessory/armband) - typesof(/obj/item/clothing/accessory/armband/med/color))) + var/obj/item/clothing/accessory/armband_type = armband + armbands[initial(armband_type.name)] = armband_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(armbands)) -/datum/gear/accessory/engineering - display_name = "armband, engineering" - path = /obj/item/clothing/accessory/armband/engine - -/datum/gear/accessory/hydroponics - display_name = "armband, hydroponics" - path = /obj/item/clothing/accessory/armband/hydro - -/datum/gear/accessory/medical - display_name = "armband, medical" - path = /obj/item/clothing/accessory/armband/med - -/datum/gear/accessory/medical/cross - display_name = "armband, medic" - path = /obj/item/clothing/accessory/armband/med/cross - -/datum/gear/accessory/science - display_name = "armband, science" - path = /obj/item/clothing/accessory/armband/science - -/datum/gear/accessory/colored +/datum/gear/accessory/armband/colored display_name = "armband" path = /obj/item/clothing/accessory/armband/med/color -/datum/gear/accessory/colored/New() +/datum/gear/accessory/armband/colored/New() ..() gear_tweaks = list(gear_tweak_free_color_choice) @@ -74,215 +60,109 @@ ..() gear_tweaks = list(gear_tweak_free_color_choice) - /datum/gear/accessory/wcoat - display_name = "waistcoat" + display_name = "waistcoat selection" path = /obj/item/clothing/accessory/wcoat cost = 1 -/datum/gear/accessory/wcoat/red - display_name = "waistcoat, red" - path = /obj/item/clothing/accessory/wcoat/red - -/datum/gear/accessory/wcoat/grey - display_name = "waistcoat, grey" - path = /obj/item/clothing/accessory/wcoat/grey - -/datum/gear/accessory/wcoat/brown - display_name = "waistcoat, brown" - path = /obj/item/clothing/accessory/wcoat/brown - -/datum/gear/accessory/swvest - display_name = "sweatervest, black" - path = /obj/item/clothing/accessory/wcoat/swvest - cost = 1 - -/datum/gear/accessory/swvest/blue - display_name = "sweatervest, blue" - path = /obj/item/clothing/accessory/wcoat/swvest/blue - -/datum/gear/accessory/swvest/red - display_name = "sweatervest, red" - path = /obj/item/clothing/accessory/wcoat/swvest/red +/datum/gear/accessory/wcoat/New() + ..() + var/list/wcoats = list() + for(var/wcoat in typesof(/obj/item/clothing/accessory/wcoat)) + var/obj/item/clothing/accessory/wcoat_type = wcoat + wcoats[initial(wcoat_type.name)] = wcoat_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(wcoats)) /datum/gear/accessory/holster - display_name = "holster, armpit" - path = /obj/item/clothing/accessory/holster/armpit + display_name = "holster selection (Security, CD, HoP)" + path = /obj/item/clothing/accessory/holster allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective") -/datum/gear/accessory/holster/hip - display_name = "holster, hip" - path = /obj/item/clothing/accessory/holster/hip - -/datum/gear/accessory/holster/leg - display_name = "holster, leg" - path = /obj/item/clothing/accessory/holster/leg - -/datum/gear/accessory/holster/waist - display_name = "holster, waist" - path = /obj/item/clothing/accessory/holster/waist +/datum/gear/accessory/holster/New() + ..() + var/list/holsters = list() + for(var/holster in typesof(/obj/item/clothing/accessory/holster)) + var/obj/item/clothing/accessory/holster_type = holster + holsters[initial(holster_type.name)] = holster_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(holsters)) /datum/gear/accessory/tie - display_name = "tie, black" - path = /obj/item/clothing/accessory/black + display_name = "tie selection" + path = /obj/item/clothing/accessory/tie + cost = 1 -/datum/gear/accessory/tie/blue - display_name = "tie, blue" - path = /obj/item/clothing/accessory/blue - -/datum/gear/accessory/tie/blue_clip - display_name = "tie, blue with clip" - path = /obj/item/clothing/accessory/blue_clip - -/datum/gear/accessory/tie/blue_long - display_name = "tie, blue long" - path = /obj/item/clothing/accessory/blue_long - -/datum/gear/accessory/tie/red - display_name = "tie, red" - path = /obj/item/clothing/accessory/red - -/datum/gear/accessory/tie/red_clip - display_name = "tie, red with clip" - path = /obj/item/clothing/accessory/red_clip - -/datum/gear/accessory/tie/red_long - display_name = "tie, red long" - path = /obj/item/clothing/accessory/red_long - -/datum/gear/accessory/tie/yellow - display_name = "tie, yellow" - path = /obj/item/clothing/accessory/yellow - -/datum/gear/accessory/tie/navy - display_name = "tie, navy blue" - path = /obj/item/clothing/accessory/navy - -/datum/gear/accessory/tie/white - display_name = "tie, white" - path = /obj/item/clothing/accessory/white - -/datum/gear/accessory/tie/horrible - display_name = "tie, socially disgraceful" - path = /obj/item/clothing/accessory/horrible +/datum/gear/accessory/tie/New() + ..() + var/list/ties = list() + for(var/tie in typesof(/obj/item/clothing/accessory/tie)) + var/obj/item/clothing/accessory/tie_type = tie + ties[initial(tie_type.name)] = tie_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ties)) /datum/gear/accessory/scarf - display_name = "scarf" + display_name = "scarf selection" path = /obj/item/clothing/accessory/scarf + cost = 1 -/datum/gear/accessory/scarf/red - display_name = "scarf, red" - path = /obj/item/clothing/accessory/scarf/red +/datum/gear/accessory/scarf/New() + ..() + var/list/scarfs = list() + for(var/scarf in typesof(/obj/item/clothing/accessory/scarf)) + var/obj/item/clothing/accessory/scarf_type = scarf + scarfs[initial(scarf_type.name)] = scarf_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(scarfs)) -/datum/gear/accessory/scarf/green - display_name = "scarf, green" - path = /obj/item/clothing/accessory/scarf/green +/datum/gear/accessory/jacket + display_name = "suit jacket selection" + path = /obj/item/clothing/accessory/jacket + cost = 1 -/datum/gear/accessory/scarf/darkblue - display_name = "scarf, dark blue" - path = /obj/item/clothing/accessory/scarf/darkblue - -/datum/gear/accessory/scarf/purple - display_name = "scarf, purple" - path = /obj/item/clothing/accessory/scarf/purple - -/datum/gear/accessory/scarf/yellow - display_name = "scarf, yellow" - path = /obj/item/clothing/accessory/scarf/yellow - -/datum/gear/accessory/scarf/orange - display_name = "scarf, orange" - path = /obj/item/clothing/accessory/scarf/orange - -/datum/gear/accessory/scarf/lightblue - display_name = "scarf, light blue" - path = /obj/item/clothing/accessory/scarf/lightblue - -/datum/gear/accessory/scarf/white - display_name = "scarf, white" - path = /obj/item/clothing/accessory/scarf/white - -/datum/gear/accessory/scarf/black - display_name = "scarf, black" - path = /obj/item/clothing/accessory/scarf/black - -/datum/gear/accessory/scarf/zebra - display_name = "scarf, zebra" - path = /obj/item/clothing/accessory/scarf/zebra - -/datum/gear/accessory/scarf/christmas - display_name = "scarf, christmas" - path = /obj/item/clothing/accessory/scarf/christmas - -/datum/gear/accessory/scarf/stripedred - display_name = "scarf, striped red" - path = /obj/item/clothing/accessory/stripedredscarf - -/datum/gear/accessory/scarf/stripedgreen - display_name = "scarf, striped green" - path = /obj/item/clothing/accessory/stripedgreenscarf - -/datum/gear/accessory/scarf/stripedblue - display_name = "scarf, striped blue" - path = /obj/item/clothing/accessory/stripedbluescarf - -/datum/gear/accessory/suitjacket - display_name = "suit jacket, tan" - path = /obj/item/clothing/accessory/tan_jacket - -/datum/gear/accessory/suitjacket/charcoal - display_name = "suit jacket, charcoal" - path = /obj/item/clothing/accessory/charcoal_jacket - -/datum/gear/accessory/suitjacket/navy - display_name = "suit jacket, navy blue" - path = /obj/item/clothing/accessory/navy_jacket - -/datum/gear/accessory/suitjacket/burgundy - display_name = "suit jacket, burgundy" - path = /obj/item/clothing/accessory/burgundy_jacket - -/datum/gear/accessory/suitjacket/checkered - display_name = "suit jacket, checkered" - path = /obj/item/clothing/accessory/checkered_jacket +/datum/gear/accessory/jacket/New() + ..() + var/list/jackets = list() + for(var/jacket in typesof(/obj/item/clothing/accessory/jacket)) + var/obj/item/clothing/accessory/jacket_type = jacket + jackets[initial(jacket_type.name)] = jacket_type + gear_tweaks += new/datum/gear_tweak/path(sortAssoc(jackets)) /datum/gear/accessory/suitvest display_name = "suit vest" path = /obj/item/clothing/accessory/vest /datum/gear/accessory/brown_vest - display_name = "webbing, engineering" + display_name = "webbing, brown" path = /obj/item/clothing/accessory/storage/brown_vest allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor") /datum/gear/accessory/black_vest - display_name = "webbing, security" + display_name = "webbing, black" path = /obj/item/clothing/accessory/storage/black_vest allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor") /datum/gear/accessory/white_vest - display_name = "webbing, medical" + display_name = "webbing, white" path = /obj/item/clothing/accessory/storage/white_vest allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor") /datum/gear/accessory/brown_drop_pouches - display_name = "drop pouches, engineering" + display_name = "drop pouches, brown" path = /obj/item/clothing/accessory/storage/brown_drop_pouches allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor") /datum/gear/accessory/black_drop_pouches - display_name = "drop pouches, security" + display_name = "drop pouches, black" path = /obj/item/clothing/accessory/storage/black_drop_pouches allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor") /datum/gear/accessory/white_drop_pouches - display_name = "drop pouches, medical" + display_name = "drop pouches, white" path = /obj/item/clothing/accessory/storage/white_drop_pouches allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor") /datum/gear/accessory/fannypack display_name = "fannypack selection" cost = 2 + path = /obj/item/weapon/storage/belt/fannypack /datum/gear/accessory/fannypack/New() ..() diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm index 57345631873..1a894704cad 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm @@ -68,9 +68,9 @@ path = /obj/item/clothing/glasses/sunglasses/medhud/aviator/prescription /datum/gear/eyes/meson - display_name = "Optical Meson Scanners (Engineering)" + display_name = "Optical Meson Scanners (Engineering, Science)" path = /obj/item/clothing/glasses/meson - allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician") + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director") /datum/gear/eyes/meson/prescription display_name = "Optical Meson Scanners, prescription (Engineering)" @@ -115,4 +115,3 @@ /datum/gear/eyes/sun/prescriptionsun display_name = "sunglasses, presciption (Security/Command)" path = /obj/item/clothing/glasses/sunglasses/prescription - cost = 2 diff --git a/code/modules/client/preference_setup/loadout/loadout_gloves.dm b/code/modules/client/preference_setup/loadout/loadout_gloves.dm index 658b2c8e12e..18eb05f8829 100644 --- a/code/modules/client/preference_setup/loadout/loadout_gloves.dm +++ b/code/modules/client/preference_setup/loadout/loadout_gloves.dm @@ -68,7 +68,7 @@ cost = 3 /datum/gear/gloves/forensic - display_name = "gloves, forensic" + display_name = "gloves, forensic (Detective)" path = /obj/item/clothing/gloves/forensic allowed_roles = list("Detective") diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index 16beab3c067..f7737c9dde0 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -136,7 +136,6 @@ /datum/gear/head/cowboy display_name = "cowboy, rodeo" path = /obj/item/clothing/head/cowboy_hat - cost = 3 /datum/gear/head/cowboy/black display_name = "cowboy, black" @@ -268,6 +267,11 @@ ..() gear_tweaks = list(gear_tweak_free_color_choice) + +/datum/gear/head/kitty + display_name = "kitty ears" + path = /obj/item/clothing/head/kitty + /datum/gear/head/beanie display_name = "beanie" path = /obj/item/clothing/head/beanie diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm index 82540018fbb..ba2d995b279 100644 --- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm @@ -195,6 +195,10 @@ ..() gear_tweaks = list(gear_tweak_free_color_choice) +/datum/gear/shoes/slippers + display_name = "bunny slippers" + path = /obj/item/clothing/shoes/slippers + /datum/gear/shoes/boots/winter display_name = "winter boots" path = /obj/item/clothing/shoes/boots/winter @@ -227,7 +231,7 @@ /datum/gear/shoes/boots/winter/medical display_name = "medical winter boots" path = /obj/item/clothing/shoes/boots/winter/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/shoes/boots/winter/mining display_name = "mining winter boots" diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 4216ab50c6c..82631635af3 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -149,7 +149,7 @@ /datum/gear/suit/labcoat/emt display_name = "labcoat, EMT (Medical)" path = /obj/item/clothing/suit/storage/toggle/labcoat/emt - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/roles/surgical_apron display_name = "surgical apron" @@ -182,7 +182,7 @@ /datum/gear/suit/roles/poncho/medical display_name = "poncho, medical" path = /obj/item/clothing/accessory/poncho/roles/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/roles/poncho/engineering display_name = "poncho, engineering" @@ -292,7 +292,7 @@ /datum/gear/suit/wintercoat/medical display_name = "winter coat, medical" path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/wintercoat/science display_name = "winter coat, science" @@ -445,7 +445,7 @@ /datum/gear/suit/snowsuit/medical display_name = "snowsuit, medical" path = /obj/item/clothing/suit/storage/snowsuit/medical - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist") + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist") /datum/gear/suit/snowsuit/science display_name = "snowsuit, science" diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index 9edc5e81a1d..836146d11ff 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -243,7 +243,6 @@ /datum/gear/uniform/scrub display_name = "scrubs selection" path = /obj/item/clothing/under/rank/medical/scrubs - allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Roboticist") /datum/gear/uniform/scrub/New() ..() @@ -455,3 +454,7 @@ /datum/gear/uniform/red_swept_dress display_name = "red swept dress" path = /obj/item/clothing/under/dress/red_swept_dress + +/datum/gear/uniform/bathrobe + display_name = "bathrobe" + path = /obj/item/clothing/under/bathrobe \ No newline at end of file diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 3298541540c..602b8542879 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -594,6 +594,12 @@ obj/item/clothing/suit/storage/toggle/peacoat icon_state = "smw_hoodie" item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black") +/obj/item/clothing/suit/storage/toggle/hoodie/nrti + name = "New Reykjavik Technical Institute hoodie" + desc = "A warm, gray sweatshirt. It bears the letters ‘NRT’ on the back, in reference to Sif's premiere technical institute." + icon_state = "nrti_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey") + /obj/item/clothing/suit/whitedress name = "white dress" desc = "A fancy dress." diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index ee6eba13d67..4392a264927 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -80,51 +80,51 @@ return //we aren't an object on the ground so don't call parent ..() -/obj/item/clothing/accessory/blue +/obj/item/clothing/accessory/tie name = "blue tie" icon_state = "bluetie" -/obj/item/clothing/accessory/red +/obj/item/clothing/accessory/tie/red name = "red tie" icon_state = "redtie" -/obj/item/clothing/accessory/blue_clip +/obj/item/clothing/accessory/tie/blue_clip name = "blue tie with a clip" icon_state = "bluecliptie" -/obj/item/clothing/accessory/blue_long +/obj/item/clothing/accessory/tie/blue_long name = "blue long tie" icon_state = "bluelongtie" -/obj/item/clothing/accessory/red_clip +/obj/item/clothing/accessory/tie/red_clip name = "red tie with a clip" icon_state = "redcliptie" -/obj/item/clothing/accessory/red_long +/obj/item/clothing/accessory/tie/red_long name = "red long tie" icon_state = "redlongtie" -/obj/item/clothing/accessory/black +/obj/item/clothing/accessory/tie/black name = "black tie" icon_state = "blacktie" -/obj/item/clothing/accessory/darkgreen +/obj/item/clothing/accessory/tie/darkgreen name = "dark green tie" icon_state = "dgreentie" -/obj/item/clothing/accessory/yellow +/obj/item/clothing/accessory/tie/yellow name = "yellow tie" icon_state = "yellowtie" -/obj/item/clothing/accessory/navy +/obj/item/clothing/accessory/tie/navy name = "navy tie" icon_state = "navytie" -/obj/item/clothing/accessory/white +/obj/item/clothing/accessory/tie/white name = "white tie" icon_state = "whitetie" -/obj/item/clothing/accessory/horrible +/obj/item/clothing/accessory/tie/horrible name = "horrible tie" desc = "A neosilk clip-on tie. This one is disgusting." icon_state = "horribletie" @@ -237,17 +237,14 @@ //Scarves /obj/item/clothing/accessory/scarf - name = "scarf" + name = "green scarf" desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks." + icon_state = "greenscarf" /obj/item/clothing/accessory/scarf/red name = "red scarf" icon_state = "redscarf" -/obj/item/clothing/accessory/scarf/green - name = "green scarf" - icon_state = "greenscarf" - /obj/item/clothing/accessory/scarf/darkblue name = "dark blue scarf" icon_state = "darkbluescarf" @@ -284,14 +281,14 @@ name = "christmas scarf" icon_state = "christmasscarf" -/obj/item/clothing/accessory/stripedredscarf +/obj/item/clothing/accessory/scarf/stripedred name = "striped red scarf" icon_state = "stripedredscarf" -/obj/item/clothing/accessory/stripedgreenscarf +/obj/item/clothing/accessory/scarf/stripedgreen name = "striped green scarf" icon_state = "stripedgreenscarf" -/obj/item/clothing/accessory/stripedbluescarf +/obj/item/clothing/accessory/scarf/stripedblue name = "striped blue scarf" icon_state = "stripedbluescarf" diff --git a/code/modules/clothing/under/accessories/clothing.dm b/code/modules/clothing/under/accessories/clothing.dm index 363476eb2bd..3f117d6adec 100644 --- a/code/modules/clothing/under/accessories/clothing.dm +++ b/code/modules/clothing/under/accessories/clothing.dm @@ -3,27 +3,27 @@ desc = "Slick black suit vest." icon_state = "det_vest" -/obj/item/clothing/accessory/tan_jacket +/obj/item/clothing/accessory/jacket/ name = "tan suit jacket" desc = "Cozy suit jacket." icon_state = "tan_jacket" -/obj/item/clothing/accessory/charcoal_jacket +/obj/item/clothing/accessory/jacket/charcoal name = "charcoal suit jacket" desc = "Strict suit jacket." icon_state = "charcoal_jacket" -/obj/item/clothing/accessory/navy_jacket +/obj/item/clothing/accessory/jacket/navy name = "navy suit jacket" desc = "Official suit jacket." icon_state = "navy_jacket" -/obj/item/clothing/accessory/burgundy_jacket +/obj/item/clothing/accessory/jacket/burgundy name = "burgundy suit jacket" desc = "Expensive suit jacket." icon_state = "burgundy_jacket" -/obj/item/clothing/accessory/checkered_jacket +/obj/item/clothing/accessory/jacket/checkered name = "checkered suit jacket" desc = "Lucky suit jacket." icon_state = "checkered_jacket" diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 87e6fa5bf97..a9757e30262 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -101,7 +101,7 @@ icon_state = "internalaffairs" item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit") rolled_sleeves = 0 - starting_accessories = list(/obj/item/clothing/accessory/black) + starting_accessories = list(/obj/item/clothing/accessory/tie/black) /obj/item/clothing/under/rank/internalaffairs/skirt desc = "The plain, professional attire of an Internal Affairs Agent. The top button is sewn shut." @@ -156,7 +156,7 @@ desc = "A classy suit." icon_state = "bluesuit" item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue") - starting_accessories = list(/obj/item/clothing/accessory/red) + starting_accessories = list(/obj/item/clothing/accessory/tie/red) /obj/item/clothing/under/lawyer/bluesuit/skirt name = "blue skirt suit" diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 02dde0f8151..9680de48841 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -73,7 +73,7 @@ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 rolled_sleeves = 0 - starting_accessories = list(/obj/item/clothing/accessory/blue_clip) + starting_accessories = list(/obj/item/clothing/accessory/tie/blue_clip) /* /obj/item/clothing/under/det/verb/rollup() @@ -89,13 +89,13 @@ /obj/item/clothing/under/det/grey icon_state = "detective2" desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks." - starting_accessories = list(/obj/item/clothing/accessory/red_long) + starting_accessories = list(/obj/item/clothing/accessory/tie/red_long) /obj/item/clothing/under/det/black icon_state = "detective3" item_state_slots = list(slot_r_hand_str = "sl_suit", slot_l_hand_str = "sl_suit") desc = "An immaculate white dress shirt, paired with a pair of dark grey dress pants, a red tie, and a charcoal vest." - starting_accessories = list(/obj/item/clothing/accessory/red_long, /obj/item/clothing/accessory/vest) + starting_accessories = list(/obj/item/clothing/accessory/tie/red_long, /obj/item/clothing/accessory/vest) /obj/item/clothing/under/det/corporate name = "detective's jumpsuit" @@ -106,12 +106,12 @@ /obj/item/clothing/under/det/waistcoat icon_state = "detective" desc = "A rumpled white dress shirt paired with well-worn grey slacks, complete with a blue striped tie, faux-gold tie clip, and waistcoat." - starting_accessories = list(/obj/item/clothing/accessory/blue_clip, /obj/item/clothing/accessory/wcoat) + starting_accessories = list(/obj/item/clothing/accessory/tie/blue_clip, /obj/item/clothing/accessory/wcoat) /obj/item/clothing/under/det/grey/waistcoat icon_state = "detective2" desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks, complete with a red striped tie and waistcoat." - starting_accessories = list(/obj/item/clothing/accessory/red_long, /obj/item/clothing/accessory/wcoat) + starting_accessories = list(/obj/item/clothing/accessory/tie/red_long, /obj/item/clothing/accessory/wcoat) /obj/item/clothing/under/det/skirt name = "detective's skirt" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 7f9586b6a0d..f9a0a9ab379 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -101,7 +101,7 @@ icon_state = "greensuit" item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom") rolled_sleeves = 0 - starting_accessories = list(/obj/item/clothing/accessory/darkgreen) + starting_accessories = list(/obj/item/clothing/accessory/tie/darkgreen) /obj/item/clothing/under/gov/skirt name = "Green formal skirt uniform" @@ -161,7 +161,7 @@ icon_state = "gentlesuit" item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey") rolled_sleeves = 0 - starting_accessories = list(/obj/item/clothing/accessory/white, /obj/item/clothing/accessory/wcoat/gentleman) + starting_accessories = list(/obj/item/clothing/accessory/tie/white, /obj/item/clothing/accessory/wcoat/gentleman) /obj/item/clothing/under/gentlesuit/skirt name = "lady's suit" @@ -472,7 +472,7 @@ desc = "A charcoal suit and red tie. Very professional." icon_state = "charcoal_suit" item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") - starting_accessories = list(/obj/item/clothing/accessory/navy, /obj/item/clothing/accessory/charcoal_jacket) + starting_accessories = list(/obj/item/clothing/accessory/tie/navy, /obj/item/clothing/accessory/jacket/charcoal) /obj/item/clothing/under/suit_jacket/charcoal/skirt name = "charcoal skirt" @@ -483,7 +483,7 @@ desc = "A navy suit and red tie, intended for the station's finest." icon_state = "navy_suit" item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue") - starting_accessories = list(/obj/item/clothing/accessory/red, /obj/item/clothing/accessory/navy_jacket) + starting_accessories = list(/obj/item/clothing/accessory/tie/red, /obj/item/clothing/accessory/jacket/navy) /obj/item/clothing/under/suit_jacket/navy/skirt name = "navy skirt" @@ -494,7 +494,7 @@ desc = "A burgundy suit and black tie. Somewhat formal." icon_state = "burgundy_suit" item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red") - starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/burgundy_jacket) + starting_accessories = list(/obj/item/clothing/accessory/tie/black, /obj/item/clothing/accessory/jacket/burgundy) /obj/item/clothing/under/suit_jacket/burgundy/skirt name = "burgundy skirt" @@ -505,7 +505,7 @@ desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?" icon_state = "checkered_suit" item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black") - starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/checkered_jacket) + starting_accessories = list(/obj/item/clothing/accessory/tie/black, /obj/item/clothing/accessory/jacket/checkered) /obj/item/clothing/under/suit_jacket/checkered/skirt name = "checkered skirt" @@ -516,7 +516,7 @@ desc = "A tan suit. Smart, but casual." icon_state = "tan_suit" item_state_slots = list(slot_r_hand_str = "tan_suit", slot_l_hand_str = "tan_suit") - starting_accessories = list(/obj/item/clothing/accessory/yellow, /obj/item/clothing/accessory/tan_jacket) + starting_accessories = list(/obj/item/clothing/accessory/tie/yellow, /obj/item/clothing/accessory/jacket) /obj/item/clothing/under/suit_jacket/tan/skirt name = "tan skirt" diff --git a/code/modules/examine/stat_icons.dm b/code/modules/examine/stat_icons.dm index b2ed64032a2..1ece266f0c8 100644 --- a/code/modules/examine/stat_icons.dm +++ b/code/modules/examine/stat_icons.dm @@ -29,4 +29,6 @@ var/global/list/description_icons = list( "power cell" = image(icon='icons/obj/power.dmi',icon_state="hcell"), "device cell" = image(icon='icons/obj/power.dmi',icon_state="dcell"), "weapon cell" = image(icon='icons/obj/power.dmi',icon_state="wcell"), + + "hatchet" = image(icon='icons/obj/weapons.dmi',icon_state="hatchet"), ) diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm index ccda4fc9f64..c0c1eecd9e7 100644 --- a/code/modules/materials/material_recipes.dm +++ b/code/modules/materials/material_recipes.dm @@ -139,6 +139,9 @@ recipes += new/datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0) recipes += new/datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5) +/material/wood/log/generate_recipes() + return // Feel free to add log-only recipes here later if desired. + /material/cardboard/generate_recipes() ..() recipes += new/datum/stack_recipe("box", /obj/item/weapon/storage/box) diff --git a/code/modules/materials/material_sheets.dm b/code/modules/materials/material_sheets.dm index 7ba518f6ef3..f66d2425c6a 100644 --- a/code/modules/materials/material_sheets.dm +++ b/code/modules/materials/material_sheets.dm @@ -203,6 +203,35 @@ icon_state = "sheet-wood" default_type = "wood" +/obj/item/stack/material/log + name = "log" + icon_state = "sheet-log" + default_type = "log" + no_variants = FALSE + color = "#824B28" + max_amount = 25 + w_class = ITEMSIZE_HUGE + +/obj/item/stack/material/log/sif + name = "alien log" + color = "#0099cc" + +/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user) + if(!istype(W)) + return ..() + if(W.sharp && W.edge && use(1)) + to_chat(user, "You cut up a log into planks.") + playsound(get_turf(src), 'sound/effects/woodcutting.ogg', 50, 1) + var/obj/item/stack/material/wood/existing_wood = locate() in user.loc + var/obj/item/stack/material/wood/new_wood = new(user.loc) + new_wood.amount = 2 + if(existing_wood) + if(new_wood.transfer_to(existing_wood)) + to_chat(user, "You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.") + else + return ..() + + /obj/item/stack/material/cloth name = "cloth" icon_state = "sheet-cloth" diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm index 2daa7501c08..0db3a1016ec 100644 --- a/code/modules/materials/materials.dm +++ b/code/modules/materials/materials.dm @@ -680,6 +680,18 @@ var/list/name_to_material sheet_singular_name = "plank" sheet_plural_name = "planks" +/material/wood/log + name = "log" + icon_base = "log" + stack_type = /obj/item/stack/material/log + sheet_singular_name = "log" + sheet_plural_name = "logs" + +/material/wood/log/sif + name = "alien log" + icon_colour = "#0099cc" // Cyan-ish + stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) + /material/wood/holographic name = "holowood" display_name = "wood" diff --git a/code/modules/mining/abandonedcrates.dm b/code/modules/mining/abandonedcrates.dm index a017476af32..8fcba9aee3b 100644 --- a/code/modules/mining/abandonedcrates.dm +++ b/code/modules/mining/abandonedcrates.dm @@ -54,7 +54,7 @@ if(46 to 50) new/obj/item/clothing/under/chameleon(src) for(var/i = 0, i < 7, i++) - new/obj/item/clothing/accessory/horrible(src) + new/obj/item/clothing/accessory/tie/horrible(src) if(51 to 52) // Uncommon, 2% each new/obj/item/weapon/melee/classic_baton(src) if(53 to 54) diff --git a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm index 469f32135f2..97afe227c48 100644 --- a/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm +++ b/code/modules/power/fusion/fuel_assembly/fuel_compressor.dm @@ -25,9 +25,9 @@ thing.reagents.remove_reagent(R.id, R.volume) user.put_in_hands(F) - else if(istype(thing, /obj/machinery/power/supermatter/shard)) + else if(istype(thing, /obj/machinery/power/supermatter)) var/obj/item/weapon/fuel_assembly/F = new(get_turf(src), "supermatter") - visible_message("\The [src] compresses the \[thing] into a new fuel assembly.") + visible_message("\The [src] compresses \the [thing] into a new fuel assembly.") qdel(thing) user.put_in_hands(F) return 1 diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm index 130f4410df2..ae45454a427 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic.dm @@ -4,7 +4,7 @@ icon_state = "coilgun" item_state = "coilgun" icon = 'icons/obj/railgun.dmi' -// one_hand_penalty = 1 +// one_handed_penalty = 1 origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_MAGNET = 4) w_class = ITEMSIZE_LARGE @@ -193,3 +193,66 @@ qdel(src) return new projectile_type(src) + +/obj/item/weapon/gun/magnetic/fuelrod + name = "Fuel-Rod Cannon" + desc = "A bulky weapon designed to fire reactor core fuel rods at absurd velocities... who thought this was a good idea?!" + description_antag = "This device is capable of firing reactor fuel assemblies, acquired from a R-UST fuel compressor and an appropriate fueltype. Be warned, Supermatter rods may have unforseen consequences." + description_fluff = "Morpheus' second entry into the arms manufacturing field, the Morpheus B.F.G, or 'Big Fuel-rod Gun' made some noise when it was initially sent to the market. By noise, they mean it was rapidly declared 'incredibly dangerous to the wielder and civilians within a mile radius alike'." + icon_state = "fuelrodgun" + item_state = "coilgun" + icon = 'icons/obj/railgun.dmi' + origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 4) + w_class = ITEMSIZE_LARGE + + removable_components = TRUE + gun_unreliable = 0 + + load_type = /obj/item/weapon/fuel_assembly + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod + + power_cost = 500 + +/obj/item/weapon/gun/magnetic/fuelrod/consume_next_projectile() + if(!check_ammo() || !capacitor || capacitor.charge < power_cost) + return + + if(loaded) //Safety. + if(istype(loaded, /obj/item/weapon/fuel_assembly)) + var/obj/item/weapon/fuel_assembly/rod = loaded + if(rod.fuel_type == "composite" || rod.fuel_type == "deuterium") //Safety check for rods spawned in without a fueltype. + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod + else if(rod.fuel_type == "tritium") + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/tritium + else if(rod.fuel_type == "phoron") + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/phoron + else if(rod.fuel_type == "supermatter") + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod/supermatter + visible_message("The barrel of \the [src] glows a blinding white!") + spawn(5) + visible_message("\The [src] begins to rattle, its acceleration chamber collapsing in on itself!") + removable_components = FALSE + spawn(15) + audible_message("\The [src]'s power supply begins to overload as the device crumples!") //Why are you still holding this? + playsound(loc, 'sound/effects/grillehit.ogg', 10, 1) + var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread() + var/turf/T = get_turf(src) + sparks.set_up(2, 1, T) + sparks.start() + spawn(15) + visible_message("\The [src] explodes in a blinding white light!") + explosion(src.loc, -1, 1, 2, 3) + qdel(src) + else + projectile_type = /obj/item/projectile/bullet/magnetic/fuelrod + + use_ammo() + capacitor.use(power_cost) + update_icon() + + return new projectile_type(src) + +/obj/item/weapon/gun/magnetic/fuelrod/New() + cell = new /obj/item/weapon/cell/high + capacitor = new /obj/item/weapon/stock_parts/capacitor + . = ..() diff --git a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm index d731512bfaf..fe9aa576ef4 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic_railgun.dm @@ -67,9 +67,9 @@ w_class = ITEMSIZE_NO_CONTAINER firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_hand_penalty=1, burst_accuracy=null, dispersion=null), - list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_hand_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), - list(mode_name="long bursts", burst=6, fire_delay=null, move_delay=10, one_hand_penalty=2, burst_accuracy=list(0,-1,-1,-1,-2), dispersion=list(0.6, 0.6, 1.0, 1.0, 1.2)), + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_handed_penalty=1, burst_accuracy=null, dispersion=null), + list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_handed_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="long bursts", burst=6, fire_delay=null, move_delay=10, one_handed_penalty=2, burst_accuracy=list(0,-1,-1,-1,-2), dispersion=list(0.6, 0.6, 1.0, 1.0, 1.2)), ) /obj/item/weapon/gun/magnetic/railgun/automatic/examine(var/mob/user) @@ -94,8 +94,8 @@ fire_sound = 'sound/weapons/rapidslice.ogg' firemodes = list( - list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_hand_penalty=1, burst_accuracy=null, dispersion=null), - list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_hand_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), + list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, one_handed_penalty=1, burst_accuracy=null, dispersion=null), + list(mode_name="short bursts", burst=3, fire_delay=null, move_delay=5, one_handed_penalty=2, burst_accuracy=list(0,-1,-1), dispersion=list(0.0, 0.6, 1.0)), ) /obj/item/weapon/gun/magnetic/railgun/flechette/out_of_ammo() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 5e599230cfe..a08db6cd9d2 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -333,8 +333,8 @@ else if(!bumped) tracer_effect(effect_transform) - if(incendiary >= 2) - var/trail_volume = (flammability * 0.10) + if(incendiary >= 2 && !istype(src.loc, /turf/simulated/wall)) + var/trail_volume = (flammability * 0.20) new /obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(src.loc, trail_volume, src.dir) if(!hitscan) diff --git a/code/modules/projectiles/projectile/magnetic.dm b/code/modules/projectiles/projectile/magnetic.dm index 35f98833ef4..b4a60a55d7c 100644 --- a/code/modules/projectiles/projectile/magnetic.dm +++ b/code/modules/projectiles/projectile/magnetic.dm @@ -18,4 +18,100 @@ name = "flechette" icon_state = "flechette" damage = 20 - armor_penetration = 100 \ No newline at end of file + armor_penetration = 100 + +/obj/item/projectile/bullet/magnetic/fuelrod + name = "fuel rod" + icon_state = "fuel-deuterium" + damage = 30 + stun = 1 + weaken = 0 + agony = 30 + incendiary = 1 + flammability = 0 //Deuterium and Tritium are both held in water, but the object moving so quickly will ignite the target. + penetrating = 2 + embed_chance = 0 + armor_penetration = 40 + kill_count = 20 + + var/searing = 0 //Does this fuelrod ignore shields? + var/detonate_travel = 0 //Will this fuelrod explode when it reaches maximum distance? + var/detonate_mob = 0 //Will this fuelrod explode when it hits a mob? + var/energetic_impact = 0 //Does this fuelrod cause a bright flash on impact with a mob? + +/obj/item/projectile/bullet/magnetic/fuelrod/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //Future-proofing. Special effects for impact. + if(istype(target,/mob/living)) + var/mob/living/V = target + if(detonate_mob) + if(V.loc) + explosion(V.loc, -1, -1, 2, 3) + + if(energetic_impact) + var/eye_coverage = 0 + for(var/mob/living/carbon/M in viewers(world.view, location)) + eye_coverage = 0 + if(iscarbon(M)) + eye_coverage = M.eyecheck() + if(eye_coverage < 2) + M.flash_eyes() + M.Stun(2) + M.Weaken(10) + + if(searing) + if(blocked) + blocked = 0 + + return ..(target, blocked, def_zone) + +/obj/item/projectile/bullet/magnetic/fuelrod/on_impact(var/atom/A) //Future-proofing, again. In the event new fuel rods are introduced, and have special effects for when they stop flying. + if(src.loc) + if(detonate_travel && detonate_mob) + visible_message("\The [src] shatters in a violent explosion!") + explosion(src.loc, 1, 1, 3, 4) + else if(detonate_travel) + visible_message("\The [src] explodes in a shower of embers!") + explosion(src.loc, -1, 1, 2, 3) + ..(A) + +/obj/item/projectile/bullet/magnetic/fuelrod/tritium + icon_state = "fuel-tritium" + damage = 40 + flammability = -1 + armor_penetration = 50 + penetrating = 3 + +/obj/item/projectile/bullet/magnetic/fuelrod/phoron + name = "blazing fuel rod" + icon_state = "fuel-phoron" + damage = 35 + incendiary = 2 + flammability = 2 + armor_penetration = 60 + penetrating = 5 + irradiate = 20 + detonate_mob = 1 + +/obj/item/projectile/bullet/magnetic/fuelrod/supermatter + name = "painfully incandescent fuel rod" + icon_state = "fuel-supermatter" + damage = 15 + incendiary = 2 + flammability = 4 + weaken = 2 + armor_penetration = 100 + penetrating = 100 //Theoretically, this shouldn't stop flying for a while, unless someone lines it up with a wall or fires it into a mountain. + irradiate = 120 + kill_count = 75 + searing = 1 + detonate_travel = 1 + detonate_mob = 1 + energetic_impact = 1 + +/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null) //You cannot touch the supermatter without disentigrating. Assumedly, this is true for condensed rods of it flying at relativistic speeds. + if(istype(target,/turf/simulated/wall) || istype(target,/mob/living)) + target.visible_message("The [src] burns a perfect hole through \the [target] with a blinding flash!") + playsound(target.loc, 'sound/effects/teleport.ogg', 40, 0) + return ..(target, blocked, def_zone) + +/obj/item/projectile/bullet/magnetic/fuelrod/supermatter/check_penetrate() + return 1 \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 6fb44ad8145..99972f4708a 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -96,7 +96,6 @@ reagent_state = LIQUID color = "#0064C877" metabolism = REM * 10 - mrate_static = TRUE glass_name = "water" glass_desc = "The father of all refreshments." diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index d0be0469c10..51ba5d3782d 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -16,7 +16,6 @@ reagent_state = SOLID color = "#1C1300" ingest_met = REM * 5 - mrate_static = TRUE /datum/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) @@ -74,8 +73,6 @@ var/targ_temp = 310 var/halluci = 0 - mrate_static = TRUE - glass_name = "ethanol" glass_desc = "A well-known alcohol with a variety of applications." diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 3f660ca1643..8d49b4cb4a2 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -7,7 +7,6 @@ taste_mult = 4 reagent_state = SOLID metabolism = REM * 4 - mrate_static = TRUE var/nutriment_factor = 30 // Per unit var/injectable = 0 color = "#664330" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index fcb132642d7..8d09b903b6b 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -9,7 +9,6 @@ color = "#00BFFF" overdose = REAGENTS_OVERDOSE * 2 metabolism = REM * 0.5 - mrate_static = TRUE scannable = 1 /datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) @@ -141,7 +140,6 @@ taste_description = "bitterness" reagent_state = LIQUID color = "#0040FF" - mrate_static = TRUE //Until it's not crazy strong, at least overdose = REAGENTS_OVERDOSE * 0.5 scannable = 1 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index c34f8d94549..708cc4e0810 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -639,6 +639,13 @@ other types of metals and chemistry for reagents). build_path = /obj/item/ammo_casing/chemdart sort_string = "TACAF" +/datum/design/item/weapon/fuelrod + id = "fuelrod_gun" + req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "gold" = 500, "silver" = 500, "uranium" = 1000, "phoron" = 3000, "diamond" = 1000) + build_path = /obj/item/weapon/gun/magnetic/fuelrod + sort_string = "TACBA" + /datum/design/item/weapon/flora_gun id = "flora_gun" req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) diff --git a/code/modules/xenoarcheaology/finds/misc.dm b/code/modules/xenoarcheaology/finds/misc.dm index 4037de5176a..2729872876e 100644 --- a/code/modules/xenoarcheaology/finds/misc.dm +++ b/code/modules/xenoarcheaology/finds/misc.dm @@ -6,10 +6,15 @@ name = "Crystal" icon = 'icons/obj/mining.dmi' icon_state = "crystal" + density = TRUE + anchored = TRUE /obj/machinery/crystal/New() if(prob(50)) icon_state = "crystal2" + set_light(3, 3, "#CC00CC") + else + set_light(3, 3, "#33CC33") //large finds /* diff --git a/code/stylesheet.dm b/code/stylesheet.dm index b376f13aebc..5b3cb80b151 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -73,6 +73,7 @@ h1.alert, h2.alert {color: #000000;} .disarm {color: #990000;} .passive {color: #660000;} +.critical {color: #ff0000; font-weight: bold; font-size: 150%;} .danger {color: #ff0000; font-weight: bold;} .warning {color: #ff0000; font-style: italic;} .rose {color: #ff5050;} diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index d259faec57e..c4a79cf9248 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index f16399d6db0..382f19e8e11 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/flora/deadtrees.dmi b/icons/obj/flora/deadtrees.dmi index 2ae1a5a6e07..7a0b164619c 100644 Binary files a/icons/obj/flora/deadtrees.dmi and b/icons/obj/flora/deadtrees.dmi differ diff --git a/icons/obj/flora/jungleflora.dmi b/icons/obj/flora/jungleflora.dmi new file mode 100644 index 00000000000..9a266e9226e Binary files /dev/null and b/icons/obj/flora/jungleflora.dmi differ diff --git a/icons/obj/flora/jungletree.dmi b/icons/obj/flora/jungletree.dmi new file mode 100644 index 00000000000..51f31413995 Binary files /dev/null and b/icons/obj/flora/jungletree.dmi differ diff --git a/icons/obj/flora/jungletreesmall.dmi b/icons/obj/flora/jungletreesmall.dmi new file mode 100644 index 00000000000..3abd375cc91 Binary files /dev/null and b/icons/obj/flora/jungletreesmall.dmi differ diff --git a/icons/obj/flora/largejungleflora.dmi b/icons/obj/flora/largejungleflora.dmi new file mode 100644 index 00000000000..bba0fd29f62 Binary files /dev/null and b/icons/obj/flora/largejungleflora.dmi differ diff --git a/icons/obj/flora/palmtrees.dmi b/icons/obj/flora/palmtrees.dmi new file mode 100644 index 00000000000..b8708b36d2a Binary files /dev/null and b/icons/obj/flora/palmtrees.dmi differ diff --git a/icons/obj/flora/pinetrees.dmi b/icons/obj/flora/pinetrees.dmi index 9ee04a5baf5..63073046f01 100644 Binary files a/icons/obj/flora/pinetrees.dmi and b/icons/obj/flora/pinetrees.dmi differ diff --git a/icons/obj/flora/rocks.dmi b/icons/obj/flora/rocks.dmi index a1f6a0df0a9..0974360e27b 100644 Binary files a/icons/obj/flora/rocks.dmi and b/icons/obj/flora/rocks.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 67d26ed18b7..90d6dcd1ea9 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/railgun.dmi b/icons/obj/railgun.dmi index 0b00e7a1560..404aa1ea608 100644 Binary files a/icons/obj/railgun.dmi and b/icons/obj/railgun.dmi differ diff --git a/icons/obj/stacks.dmi b/icons/obj/stacks.dmi index 1713cacb671..5cdff4a1f33 100644 Binary files a/icons/obj/stacks.dmi and b/icons/obj/stacks.dmi differ diff --git a/icons/turf/outdoors.dmi b/icons/turf/outdoors.dmi index bcd81c28c9a..31fab0ec95c 100644 Binary files a/icons/turf/outdoors.dmi and b/icons/turf/outdoors.dmi differ diff --git a/icons/turf/outdoors_edge.dmi b/icons/turf/outdoors_edge.dmi index 02a52195c2b..fb0b04168e4 100644 Binary files a/icons/turf/outdoors_edge.dmi and b/icons/turf/outdoors_edge.dmi differ diff --git a/icons/turf/wall_masks.dmi b/icons/turf/wall_masks.dmi index 220e1b87e5d..d67671c4d63 100644 Binary files a/icons/turf/wall_masks.dmi and b/icons/turf/wall_masks.dmi differ diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index ee935ce4b09..e2a422d04c8 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -988,7 +988,7 @@ "sZ" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "ta" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "tb" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"tc" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"tc" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m545,/obj/item/ammo_magazine/m545,/obj/item/ammo_magazine/m545,/obj/item/ammo_magazine/m545,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "td" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "te" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall/dark,/area/shuttle/administration/centcom) "tf" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor/red,/area/shuttle/administration/centcom) diff --git a/polaris.dme b/polaris.dme index 65d29518bbd..ba8a57fde24 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1045,6 +1045,8 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\flora\grass.dm" +#include "code\game\objects\structures\flora\trees.dm" #include "code\game\objects\structures\ghost_pods\ghost_pods.dm" #include "code\game\objects\structures\ghost_pods\silicon.dm" #include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm"