From 88154f037429e06c575e30436b59c3f9478f3063 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 20 Apr 2020 12:07:45 -0400 Subject: [PATCH] Adds rutile (titanium ore) and other materials --- code/__defines/misc_vr.dm | 4 + .../items/weapons/material/shards_vr.dm | 5 + code/game/objects/structures/window_vr.dm | 37 +++++ code/modules/materials/material_sheets_vr.dm | 46 ++++++ code/modules/materials/materials_vr.dm | 50 ++++++ code/modules/mining/alloys_vr.dm | 19 +++ code/modules/mining/mine_turfs.dm | 7 +- code/modules/mining/mineral_effect.dm | 2 +- code/modules/mining/ore_datum_vr.dm | 9 ++ code/modules/mining/ore_vr.dm | 6 + code/modules/vore/eating/living_vr.dm | 1 + icons/obj/mining_vr.dmi | Bin 583 -> 8928 bytes icons/obj/stacks_vr.dmi | Bin 813 -> 4102 bytes maps/tether/submaps/aerostat/_aerostat.dm | 2 +- maps/tether/submaps/om_ships/aro2.dmm | 147 +++++++++--------- vorestation.dme | 6 + 16 files changed, 260 insertions(+), 81 deletions(-) create mode 100644 code/game/objects/items/weapons/material/shards_vr.dm create mode 100644 code/game/objects/structures/window_vr.dm create mode 100644 code/modules/materials/material_sheets_vr.dm create mode 100644 code/modules/mining/alloys_vr.dm create mode 100644 code/modules/mining/ore_datum_vr.dm create mode 100644 code/modules/mining/ore_vr.dm diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm index 71589e80c1..55b92bd490 100644 --- a/code/__defines/misc_vr.dm +++ b/code/__defines/misc_vr.dm @@ -59,3 +59,7 @@ #define PTO_CIVILIAN "Civilian" #define DEPARTMENT_TALON "ITV Talon" + +#define MAT_TITANIUMGLASS "ti-glass" +#define MAT_PLASTITANIUM "plastitanium" +#define MAT_PLASTANIUMGLASS "plastitanium glass" \ No newline at end of file diff --git a/code/game/objects/items/weapons/material/shards_vr.dm b/code/game/objects/items/weapons/material/shards_vr.dm new file mode 100644 index 0000000000..e59966c9b1 --- /dev/null +++ b/code/game/objects/items/weapons/material/shards_vr.dm @@ -0,0 +1,5 @@ +/obj/item/weapon/material/shard/titaniumglass/New(loc) + ..(loc, MAT_TITANIUMGLASS) + +/obj/item/weapon/material/shard/plastitaniumglass/New(loc) + ..(loc, MAT_PLASTANIUMGLASS) \ No newline at end of file diff --git a/code/game/objects/structures/window_vr.dm b/code/game/objects/structures/window_vr.dm new file mode 100644 index 0000000000..8a13a9c50d --- /dev/null +++ b/code/game/objects/structures/window_vr.dm @@ -0,0 +1,37 @@ +/obj/structure/window/titanium + name = "ti-glass window" + desc = "A titanium alloy window, combining the strength of titanium with the transparency of glass. It seems to be very strong." + basestate = "window" + icon_state = "window" + color = "#A7A3A6" + shardtype = /obj/item/weapon/material/shard/titaniumglass + glasstype = /obj/item/stack/material/glass/titanium + reinf = 0 + maximal_heat = T0C + 5000 + damage_per_fire_tick = 1.0 + maxhealth = 100.0 + force_threshold = 10 + +/obj/structure/window/titanium/full + icon_state = "window-full" + maxhealth = 200 + fulltile = TRUE + +/obj/structure/window/plastitanium + name = "plastanium glass window" + desc = "A plastitanium alloy window, combining the strength of plastitanium with the transparency of glass. It seems to be very strong." + basestate = "window" + icon_state = "window" + color = "#676366" + shardtype = /obj/item/weapon/material/shard/plastitaniumglass + glasstype = /obj/item/stack/material/glass/plastitanium + reinf = 0 + maximal_heat = T0C + 7000 + damage_per_fire_tick = 1.0 + maxhealth = 120.0 + force_threshold = 10 + +/obj/structure/window/plastitanium/full + icon_state = "window-full" + maxhealth = 250 + fulltile = TRUE \ No newline at end of file diff --git a/code/modules/materials/material_sheets_vr.dm b/code/modules/materials/material_sheets_vr.dm new file mode 100644 index 0000000000..38eba49263 --- /dev/null +++ b/code/modules/materials/material_sheets_vr.dm @@ -0,0 +1,46 @@ +/obj/item/stack/material/titanium + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-titanium" + no_variants = FALSE + +/obj/fiftyspawner/titanium + name = "stack of titanium" + type_to_spawn = /obj/item/stack/material/titanium + +/obj/item/stack/material/glass/titanium + name = "ti-glass sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-titaniumglass" + item_state = "sheet-silver" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + default_type = MAT_TITANIUMGLASS + +/obj/fiftyspawner/titanium_glass + name = "stack of ti-glass" + type_to_spawn = /obj/item/stack/material/glass/titanium + +/obj/item/stack/material/plastitanium + name = "plas-tanium sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitanium" + item_state = "sheet-silver" + no_variants = FALSE + default_type = MAT_PLASTITANIUM + +/obj/fiftyspawner/plastitanium + name = "stack of plastitanium" + type_to_spawn = /obj/item/stack/material/plastitanium + +/obj/item/stack/material/glass/plastitanium + name = "plas-tanium glass sheets" + icon = 'icons/obj/stacks_vr.dmi' + icon_state = "sheet-plastitaniumglass" + item_state = "sheet-silver" + no_variants = FALSE + drop_sound = 'sound/items/drop/glass.ogg' + default_type = MAT_PLASTANIUMGLASS + +/obj/fiftyspawner/plastitanium_glass + name = "stack of plastitanium glass" + type_to_spawn = /obj/item/stack/material/glass/plastitanium \ No newline at end of file diff --git a/code/modules/materials/materials_vr.dm b/code/modules/materials/materials_vr.dm index e89aca0521..ec06e880e9 100644 --- a/code/modules/materials/materials_vr.dm +++ b/code/modules/materials/materials_vr.dm @@ -30,3 +30,53 @@ display_name = "fancyblack" icon_base = "fancyblack" icon_colour = "#FFFFFF" + +/material/glass/titaniumglass + name = MAT_TITANIUMGLASS + display_name = "titanium glass" + stack_type = /obj/item/stack/material/glass/titanium + integrity = 150 + hardness = 50 + weight = 50 + flags = MATERIAL_BRITTLE + icon_colour = "#A7A3A6" + stack_origin_tech = list(TECH_MATERIAL = 5) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/titanium + created_fulltile_window = /obj/structure/window/titanium/full + wire_product = null + rod_product = /obj/item/stack/material/glass/titanium + composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) + +/material/plastitanium + name = MAT_PLASTITANIUM + stack_type = /obj/item/stack/material/plastitanium + integrity = 600 + melting_point = 9000 + icon_base = "solid" + icon_reinf = "reinf_over" + icon_colour = "#585658" + explosion_resistance = 35 + hardness = 90 + weight = 40 + protectiveness = 30 + conductivity = 7 + stack_origin_tech = list(TECH_MATERIAL = 5) + composite_material = list(MAT_TITANIUM = SHEET_MATERIAL_AMOUNT, MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT) + +/material/glass/plastaniumglass + name = MAT_PLASTANIUMGLASS + display_name = "plas-titanium glass" + stack_type = /obj/item/stack/material/glass/plastitanium + integrity = 200 + hardness = 60 + weight = 80 + flags = MATERIAL_BRITTLE + icon_colour = "#676366" + stack_origin_tech = list(TECH_MATERIAL = 6) + window_options = list("One Direction" = 1, "Full Window" = 4) + created_window = /obj/structure/window/plastitanium + created_fulltile_window = /obj/structure/window/plastitanium/full + wire_product = null + rod_product = /obj/item/stack/material/glass/plastitanium + composite_material = list(MAT_PLASTITANIUM = SHEET_MATERIAL_AMOUNT, "glass" = SHEET_MATERIAL_AMOUNT) \ No newline at end of file diff --git a/code/modules/mining/alloys_vr.dm b/code/modules/mining/alloys_vr.dm new file mode 100644 index 0000000000..f25d976505 --- /dev/null +++ b/code/modules/mining/alloys_vr.dm @@ -0,0 +1,19 @@ +/datum/alloy/tiglass + metaltag = MAT_TITANIUMGLASS + requires = list( + "rutile" = 1, + "sand" = 2 + ) + product_mod = 1 + product = /obj/item/stack/material/glass/titanium + +/datum/alloy/plastiglass + metaltag = MAT_PLASTANIUMGLASS + requires = list( + "rutile" = 1, + "sand" = 2, + "platinum" = 1, + "carbon" = 2, + ) + product_mod = 1 + product = /obj/item/stack/material/glass/plastitanium \ No newline at end of file diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index a86d99434f..e9c7f5db26 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -53,7 +53,8 @@ var/list/mining_overlay_cache = list() "carbon" = /obj/item/weapon/ore/coal, "verdantium" = /obj/item/weapon/ore/verdantium, "marble" = /obj/item/weapon/ore/marble, - "lead" = /obj/item/weapon/ore/lead + "lead" = /obj/item/weapon/ore/lead, + "rutile" = /obj/item/weapon/ore/rutile //VOREStation Add ) has_resources = 1 @@ -638,10 +639,10 @@ turf/simulated/mineral/floor/light_corner var/mineral_name if(rare_ore) - mineral_name = pickweight(list("marble" = 5, "uranium" = 10, "platinum" = 10, "hematite" = 20, "carbon" = 20, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 5, "verdantium" = 1)) + mineral_name = pickweight(list("marble" = 5, "uranium" = 10, "platinum" = 10, "hematite" = 20, "carbon" = 20, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 5, "verdantium" = 1, "rutile" = 4)) //VOREStation Edit else - mineral_name = pickweight(list("marble" = 3, "uranium" = 10, "platinum" = 10, "hematite" = 70, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 2, "verdantium" = 1)) + mineral_name = pickweight(list("marble" = 3, "uranium" = 10, "platinum" = 10, "hematite" = 70, "carbon" = 70, "diamond" = 2, "gold" = 10, "silver" = 10, "phoron" = 20, "lead" = 2, "verdantium" = 1, "rutile" = 4)) //VOREStation Edit if(mineral_name && (mineral_name in ore_data)) mineral = ore_data[mineral_name] diff --git a/code/modules/mining/mineral_effect.dm b/code/modules/mining/mineral_effect.dm index 5f8daed8d1..b5b3d1a192 100644 --- a/code/modules/mining/mineral_effect.dm +++ b/code/modules/mining/mineral_effect.dm @@ -1,6 +1,6 @@ /obj/effect/mineral name = "mineral vein" - icon = 'icons/obj/mining.dmi' + icon = 'icons/obj/mining_vr.dmi' //VOREStation Edit desc = "Shiny." mouse_opacity = 0 density = 0 diff --git a/code/modules/mining/ore_datum_vr.dm b/code/modules/mining/ore_datum_vr.dm new file mode 100644 index 0000000000..91171367f4 --- /dev/null +++ b/code/modules/mining/ore_datum_vr.dm @@ -0,0 +1,9 @@ +/ore/rutile + name = "rutile" + display_name = "rutile" + smelts_to = "titanium" + alloy = 1 + result_amount = 5 + spread_chance = 10 + ore = /obj/item/weapon/ore/rutile + scan_icon = "mineral_rare" \ No newline at end of file diff --git a/code/modules/mining/ore_vr.dm b/code/modules/mining/ore_vr.dm new file mode 100644 index 0000000000..fe7d23a579 --- /dev/null +++ b/code/modules/mining/ore_vr.dm @@ -0,0 +1,6 @@ +/obj/item/weapon/ore/rutile + name = "rutile" + icon = 'icons/obj/mining_vr.dmi' + icon_state = "ore_rutile" + origin_tech = list(TECH_MATERIAL = 2) + material = "rutile" \ No newline at end of file diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 52ee90ca03..0947d6d30a 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -741,6 +741,7 @@ "diamond" = list("nutrition" = 50, "remark" = "The heavenly taste of [O] almost brings a tear to your eye. Its glimmering gloriousness is even better on the tongue than you imagined, so you savour it fondly."), "platinum" = list("nutrition" = 40, "remark" = "A bit tangy but elegantly balanced with a long faintly sour finish. Delectible."), "mhydrogen" = list("nutrition" = 30, "remark" = "Quite sweet on the tongue, you savour the light and easy to chew [O], finishing it quickly."), + "rutile" = list("nutrition" = 50, "remark" = "A little... angular, you savour the light but chewy [O], finishing it quickly."), MAT_VERDANTIUM = list("nutrition" = 50, "remark" = "You taste scientific mystery and a rare delicacy. Your tastebuds tingle pleasantly as you eat [O] and the feeling warmly blossoms in your chest for a moment."), MAT_LEAD = list("nutrition" = 40, "remark" = "It takes some work to break down [O] but you manage it, unlocking lasting tangy goodness in the process. Yum."), ) diff --git a/icons/obj/mining_vr.dmi b/icons/obj/mining_vr.dmi index 070a2bf8daddd0eef672fb9ff2a9e5ccddb7e33f..e53e6fcb2f18ccda5c803e0e084704067588a96d 100644 GIT binary patch literal 8928 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 literal 583 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 TD{!)Z>;WhHD|XG$oA>_(Bo)1i literal 813 zcmV+|1JeA7P)C0000>P)t-s|Ns9o z69#lM5`s1nu1_0PA`JV-l|~;92`nESYf>I`Sty@-5llD5^5PUxJ`qAP|Ns9zZ$nwn zlR~6fm+i_;O-+M?i<_I9Vqs&i5=BP<0004WQchCV=-0C=30(oG7&Fc1acb#jW(?xlZ-F5F0qbYZU$MjCA>O(mJu>su@s5G2#x%jrCrvLx}&q+iJ|@aHD6WO-3)L6ZYmdW_b^-pm{joSFI;lfa2k7SABVc1t=a)x9b9(Qoz24 z^Zl|w*L7k6f@ZL(^=Xayz`}q}aM30Sd zBYM=5Pv43OA%qY@2!U@ZVGrhe`1t^u@8RbIXtsm1A)0RCbd2VE`1!y&b|C3B0Oou6 z`M{FjTP5GWM~J>v{mwD`$?vt2@82UtU#mXch?2KrLI@#*kd@~%u2&OCSUU{T1gO^w7^l%j^q(m}7=RZrP2vowKT?1bCa|j)2FRb+*LRb1ZrYsz^?CuL z>j!B8&>tya=;Z|