diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index cbdce196c47..30dec267502 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -274,3 +274,12 @@ mineral = "metal" walltype = "iron" canSmoothWith = list(/obj/structure/falsewall/iron, /turf/simulated/wall/mineral/iron) + +/obj/structure/falsewall/abductor + name = "alien wall" + desc = "A wall with alien alloy plating." + icon = 'icons/turf/walls/abductor_wall.dmi' + icon_state = "abductor" + mineral = "abductor" + walltype = "abductor" + canSmoothWith = list(/obj/structure/falsewall/abductor, /turf/simulated/wall/mineral/abductor) \ No newline at end of file diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm index fa12e8b0ec2..8a36ea5af6b 100644 --- a/code/game/turfs/simulated/walls_mineral.dm +++ b/code/game/turfs/simulated/walls_mineral.dm @@ -175,4 +175,14 @@ icon_state = "iron" walltype = "iron" mineral = "rods" - canSmoothWith = list(/turf/simulated/wall/mineral/iron, /obj/structure/falsewall/iron) \ No newline at end of file + canSmoothWith = list(/turf/simulated/wall/mineral/iron, /obj/structure/falsewall/iron) + +/turf/simulated/wall/mineral/abductor + name = "alien wall" + desc = "A wall with alien alloy plating." + icon = 'icons/turf/walls/abductor_wall.dmi' + icon_state = "abductor" + walltype = "abductor" + mineral = "abductor" + explosion_block = 3 + canSmoothWith = list(/turf/simulated/wall/mineral/abductor, /obj/structure/falsewall/abductor) \ No newline at end of file diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm index c3e8ea38c96..81182661384 100644 --- a/code/modules/research/designs/stock_parts_designs.dm +++ b/code/modules/research/designs/stock_parts_designs.dm @@ -230,4 +230,14 @@ build_type = PROTOLATHE materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore build_path = /obj/item/weapon/storage/part_replacer/bluespace + category = list("Stock Parts") + +/datum/design/alienalloy + name = "Alien Alloy" + desc = "A sheet of reverse-engineered alien alloy." + id = "alienalloy" + req_tech = list("abductor" = 1, "materials" = 7, "plasmatech" = 2) + build_type = PROTOLATHE + materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000) + build_path = /obj/item/stack/sheet/mineral/abductor category = list("Stock Parts") \ No newline at end of file diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index c294ad8cff1..58c1cf7fe6f 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -438,8 +438,9 @@ proc/CallMaterialName(ID) if( new_item.type == /obj/item/weapon/storage/backpack/holding ) new_item.investigate_log("built by [key]","singulo") new_item.reliability = 100 - new_item.materials[MAT_METAL] /= coeff - new_item.materials[MAT_GLASS] /= coeff + if(!istype(new_item, /obj/item/stack/sheet)) // To avoid materials dupe glitches + new_item.materials[MAT_METAL] /= coeff + new_item.materials[MAT_GLASS] /= coeff if(O) var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) new_item.loc = L @@ -706,6 +707,8 @@ proc/CallMaterialName(ID) dat += "Main Menu" dat += "

Current Research Levels:


" for(var/datum/tech/T in files.known_tech) + if(T.level <= 0) + continue dat += "[T.name]
" dat += "* Level: [T.level]
" dat += "* Summary: [T.desc]
" @@ -733,6 +736,8 @@ proc/CallMaterialName(ID) dat += "Return to Disk Operations
" dat += "

Load Technology to Disk:


" for(var/datum/tech/T in files.known_tech) + if(T.level <= 0) + continue dat += "[T.name] " dat += "Copy to Disk
" dat += "
" diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index c34124af594..e4b91505669 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -117,7 +117,7 @@ research holder datum. if(DesignHasReqs(PD)) AddDesign2Known(PD) for(var/datum/tech/T in known_tech) - T = Clamp(T.level, 1, 20) + T = Clamp(T.level, 0, 20) for(var/datum/design/D in known_designs) D.CalcReliability(known_tech) return @@ -242,6 +242,13 @@ datum/tech/syndicate max_level = 0 // Don't count towards maxed research, since it's illegal. rare = 4 +/datum/tech/abductor + name = "Alien Technologies Research" + desc = "The study of technologies used by the advanced alien race known as Abductors." + id = "abductor" + rare = 5 + level = 0 + /* datum/tech/arcane name = "Arcane Research" @@ -278,8 +285,7 @@ datum/tech/robotics return 0 var/cost = 0 - var/i - for(i=current_level+1, i<=level, i++) + for(var/i=current_level+1, i<=level, i++) if(i == initial(level)) continue cost += i*5*rare diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index 3bd5bad2f57..fe135490e3d 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -315,6 +315,8 @@ dat += "[temp_server.name] Data ManagementP

" dat += "Known Technologies
" for(var/datum/tech/T in temp_server.files.known_tech) + if(T.level <= 0) + continue dat += "* [T.name] " dat += "(Reset)
" //FYI, these are all strings. dat += "Known Designs
" diff --git a/icons/turf/walls/abductor_wall.dmi b/icons/turf/walls/abductor_wall.dmi new file mode 100644 index 00000000000..5d0f47046b3 Binary files /dev/null and b/icons/turf/walls/abductor_wall.dmi differ