Merge pull request #8946 from Zuhayr/miningstuff

Wall refactor/mining changes.
This commit is contained in:
Chinsky
2015-05-12 13:13:31 +03:00
130 changed files with 1615 additions and 2261 deletions

View File

@@ -210,7 +210,6 @@
#include "code\game\response_team.dm"
#include "code\game\shuttle_engines.dm"
#include "code\game\skincmd.dm"
#include "code\game\smoothwall.dm"
#include "code\game\sound.dm"
#include "code\game\supplyshuttle.dm"
#include "code\game\antagonist\antagonist.dm"
@@ -368,6 +367,7 @@
#include "code\game\machinery\turret_control.dm"
#include "code\game\machinery\turrets.dm"
#include "code\game\machinery\vending.dm"
#include "code\game\machinery\wall_frames.dm"
#include "code\game\machinery\washing_machine.dm"
#include "code\game\machinery\wishgranter.dm"
#include "code\game\machinery\atmoalter\area_atmos_computer.dm"
@@ -701,7 +701,6 @@
#include "code\game\objects\structures\door_assembly.dm"
#include "code\game\objects\structures\electricchair.dm"
#include "code\game\objects\structures\extinguisher.dm"
#include "code\game\objects\structures\false_walls.dm"
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\grille.dm"
@@ -765,10 +764,10 @@
#include "code\game\turfs\unsimulated.dm"
#include "code\game\turfs\simulated\floor.dm"
#include "code\game\turfs\simulated\floor_types.dm"
#include "code\game\turfs\simulated\wall_attacks.dm"
#include "code\game\turfs\simulated\wall_icon.dm"
#include "code\game\turfs\simulated\wall_types.dm"
#include "code\game\turfs\simulated\walls.dm"
#include "code\game\turfs\simulated\walls_mineral.dm"
#include "code\game\turfs\simulated\walls_misc.dm"
#include "code\game\turfs\simulated\walls_reinforced.dm"
#include "code\game\turfs\space\space.dm"
#include "code\game\turfs\space\transit.dm"
#include "code\game\turfs\unsimulated\beach.dm"
@@ -1039,6 +1038,7 @@
#include "code\modules\maps\reader.dm"
#include "code\modules\maps\swapmaps.dm"
#include "code\modules\maps\writer.dm"
#include "code\modules\materials\materials.dm"
#include "code\modules\mining\abandonedcrates.dm"
#include "code\modules\mining\alloys.dm"
#include "code\modules\mining\coins.dm"
@@ -1048,7 +1048,7 @@
#include "code\modules\mining\machine_unloading.dm"
#include "code\modules\mining\mine_items.dm"
#include "code\modules\mining\mine_turfs.dm"
#include "code\modules\mining\minerals.dm"
#include "code\modules\mining\mineral_effect.dm"
#include "code\modules\mining\mint.dm"
#include "code\modules\mining\money_bag.dm"
#include "code\modules\mining\ore.dm"

View File

@@ -83,7 +83,7 @@
force = 5.0
throwforce = 7.0
w_class = 2.0
matter = list("metal" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("bludgeoned", "whacked", "disciplined", "thrashed")
/obj/item/weapon/cane/concealed
@@ -271,7 +271,7 @@
w_class = 2.0
throw_speed = 4
throw_range = 20
matter = list("metal" = 100)
matter = list(DEFAULT_WALL_MATERIAL = 100)
origin_tech = "magnets=1"
/obj/item/weapon/staff
@@ -321,7 +321,7 @@
var/amount = 1.0
var/laying = 0.0
var/old_lay = null
matter = list("metal" = 40)
matter = list(DEFAULT_WALL_MATERIAL = 40)
attack_verb = list("whipped", "lashed", "disciplined", "tickled")
suicide_act(mob/user)
@@ -345,7 +345,7 @@
name = "power control module"
icon_state = "power_mod"
desc = "Heavy-duty switching circuits for power control."
matter = list("metal" = 50, "glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/obj/item/weapon/module/power_control/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if (istype(W, /obj/item/device/multitool))
@@ -467,35 +467,35 @@
desc = "A basic capacitor used in the construction of a variety of devices."
icon_state = "capacitor"
origin_tech = "powerstorage=1"
matter = list("metal" = 50,"glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
/obj/item/weapon/stock_parts/scanning_module
name = "scanning module"
desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module"
origin_tech = "magnets=1"
matter = list("metal" = 50,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
/obj/item/weapon/stock_parts/manipulator
name = "micro-manipulator"
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "micro_mani"
origin_tech = "materials=1;programming=1"
matter = list("metal" = 30)
matter = list(DEFAULT_WALL_MATERIAL = 30)
/obj/item/weapon/stock_parts/micro_laser
name = "micro-laser"
desc = "A tiny laser used in certain devices."
icon_state = "micro_laser"
origin_tech = "magnets=1"
matter = list("metal" = 10,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 10,"glass" = 20)
/obj/item/weapon/stock_parts/matter_bin
name = "matter bin"
desc = "A container for hold compressed matter awaiting re-construction."
icon_state = "matter_bin"
origin_tech = "materials=1"
matter = list("metal" = 80)
matter = list(DEFAULT_WALL_MATERIAL = 80)
//Rank 2
@@ -504,7 +504,7 @@
desc = "An advanced capacitor used in the construction of a variety of devices."
origin_tech = "powerstorage=3"
rating = 2
matter = list("metal" = 50,"glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
/obj/item/weapon/stock_parts/scanning_module/adv
name = "advanced scanning module"
@@ -512,7 +512,7 @@
icon_state = "scan_module"
origin_tech = "magnets=3"
rating = 2
matter = list("metal" = 50,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
/obj/item/weapon/stock_parts/manipulator/nano
name = "nano-manipulator"
@@ -520,7 +520,7 @@
icon_state = "nano_mani"
origin_tech = "materials=3,programming=2"
rating = 2
matter = list("metal" = 30)
matter = list(DEFAULT_WALL_MATERIAL = 30)
/obj/item/weapon/stock_parts/micro_laser/high
name = "high-power micro-laser"
@@ -528,7 +528,7 @@
icon_state = "high_micro_laser"
origin_tech = "magnets=3"
rating = 2
matter = list("metal" = 10,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 10,"glass" = 20)
/obj/item/weapon/stock_parts/matter_bin/adv
name = "advanced matter bin"
@@ -536,7 +536,7 @@
icon_state = "advanced_matter_bin"
origin_tech = "materials=3"
rating = 2
matter = list("metal" = 80)
matter = list(DEFAULT_WALL_MATERIAL = 80)
//Rating 3
@@ -545,14 +545,14 @@
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
origin_tech = "powerstorage=5;materials=4"
rating = 3
matter = list("metal" = 50,"glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
/obj/item/weapon/stock_parts/scanning_module/phasic
name = "phasic scanning module"
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
origin_tech = "magnets=5"
rating = 3
matter = list("metal" = 50,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
/obj/item/weapon/stock_parts/manipulator/pico
name = "pico-manipulator"
@@ -560,7 +560,7 @@
icon_state = "pico_mani"
origin_tech = "materials=5,programming=2"
rating = 3
matter = list("metal" = 30)
matter = list(DEFAULT_WALL_MATERIAL = 30)
/obj/item/weapon/stock_parts/micro_laser/ultra
name = "ultra-high-power micro-laser"
@@ -568,7 +568,7 @@
desc = "A tiny laser used in certain devices."
origin_tech = "magnets=5"
rating = 3
matter = list("metal" = 10,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 10,"glass" = 20)
/obj/item/weapon/stock_parts/matter_bin/super
name = "super matter bin"
@@ -576,7 +576,7 @@
icon_state = "super_matter_bin"
origin_tech = "materials=5"
rating = 3
matter = list("metal" = 80)
matter = list(DEFAULT_WALL_MATERIAL = 80)
// Subspace stock parts
@@ -585,35 +585,35 @@
icon_state = "subspace_ansible"
desc = "A compact module capable of sensing extradimensional activity."
origin_tech = "programming=3;magnets=5;materials=4;bluespace=2"
matter = list("metal" = 30,"glass" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10)
/obj/item/weapon/stock_parts/subspace/filter
name = "hyperwave filter"
icon_state = "hyperwave_filter"
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
origin_tech = "programming=4;magnets=2"
matter = list("metal" = 30,"glass" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10)
/obj/item/weapon/stock_parts/subspace/amplifier
name = "subspace amplifier"
icon_state = "subspace_amplifier"
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
origin_tech = "programming=3;magnets=4;materials=4;bluespace=2"
matter = list("metal" = 30,"glass" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10)
/obj/item/weapon/stock_parts/subspace/treatment
name = "subspace treatment disk"
icon_state = "treatment_disk"
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
origin_tech = "programming=3;magnets=2;materials=5;bluespace=2"
matter = list("metal" = 30,"glass" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10)
/obj/item/weapon/stock_parts/subspace/analyzer
name = "subspace wavelength analyzer"
icon_state = "wavelength_analyzer"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
origin_tech = "programming=3;magnets=4;materials=4;bluespace=2"
matter = list("metal" = 30,"glass" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 10)
/obj/item/weapon/stock_parts/subspace/crystal
name = "ansible crystal"
@@ -627,7 +627,7 @@
icon_state = "subspace_transmitter"
desc = "A large piece of equipment used to open a window into the subspace dimension."
origin_tech = "magnets=5;materials=5;bluespace=3"
matter = list("metal" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50)
/obj/item/weapon/ectoplasm
name = "ectoplasm"

View File

@@ -8,7 +8,7 @@
item_state = "electronic"
throw_speed = 4
throw_range = 20
matter = list("metal" = 500)
matter = list(DEFAULT_WALL_MATERIAL = 500)
var/obj/item/weapon/disk/nuclear/the_disk = null
var/active = 0

View File

@@ -798,7 +798,7 @@ datum/objective/heist/salvage
choose_target()
switch(rand(1,8))
if(1)
target = "metal"
target = DEFAULT_WALL_MATERIAL
target_amount = 300
if(2)
target = "glass"

View File

@@ -836,8 +836,7 @@
else if(istype(W, /obj/item/weapon/wrench))
user << "You remove the fire alarm assembly from the wall!"
var/obj/item/alarm_frame/frame = new /obj/item/alarm_frame()
frame.loc = user.loc
new /obj/item/frame/air_alarm(get_turf(user))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
qdel(src)
@@ -864,51 +863,7 @@ Just a object used in constructing air alarms
icon_state = "door_electronics"
desc = "Looks like a circuit. Probably is."
w_class = 2.0
matter = list("metal" = 50, "glass" = 50)
/*
AIR ALARM ITEM
Handheld air alarm frame, for placing on walls
Code shamelessly copied from apc_frame
*/
/obj/item/alarm_frame
name = "air alarm frame"
desc = "Used for building Air Alarms"
icon = 'icons/obj/monitors.dmi'
icon_state = "alarm_bitem"
flags = CONDUCT
/obj/item/alarm_frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 )
qdel(src)
return
..()
/obj/item/alarm_frame/proc/try_build(turf/on_wall)
if (get_dist(on_wall,usr)>1)
return
var/ndir = get_dir(on_wall,usr)
if (!(ndir in cardinal))
return
var/turf/loc = get_turf(usr)
var/area/A = loc.loc
if (!istype(loc, /turf/simulated/floor))
usr << "\red Air Alarm cannot be placed on this spot."
return
if (A.requires_power == 0 || A.name == "Space")
usr << "\red Air Alarm cannot be placed in this area."
return
if(gotwallitem(loc, ndir))
usr << "\red There's already an item on this wall!"
return
new /obj/machinery/alarm(loc, ndir, 1)
qdel(src)
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/*
FIRE ALARM
@@ -1019,8 +974,7 @@ FIRE ALARM
else if(istype(W, /obj/item/weapon/wrench))
user << "You remove the fire alarm assembly from the wall!"
var/obj/item/firealarm_frame/frame = new /obj/item/firealarm_frame()
frame.loc = user.loc
new /obj/item/frame/fire_alarm(get_turf(user))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
qdel(src)
return
@@ -1183,53 +1137,7 @@ Just a object used in constructing fire alarms
icon_state = "door_electronics"
desc = "A circuit. It has a label on it, it says \"Can handle heat levels up to 40 degrees celsius!\""
w_class = 2.0
matter = list("metal" = 50, "glass" = 50)
/*
FIRE ALARM ITEM
Handheld fire alarm frame, for placing on walls
Code shamelessly copied from apc_frame
*/
/obj/item/firealarm_frame
name = "fire alarm frame"
desc = "Used for building Fire Alarms"
icon = 'icons/obj/monitors.dmi'
icon_state = "fire_bitem"
flags = CONDUCT
/obj/item/firealarm_frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 )
qdel(src)
return
..()
/obj/item/firealarm_frame/proc/try_build(turf/on_wall)
if (get_dist(on_wall,usr)>1)
return
var/ndir = get_dir(on_wall,usr)
if (!(ndir in cardinal))
return
var/turf/loc = get_turf(usr)
var/area/A = loc.loc
if (!istype(loc, /turf/simulated/floor))
usr << "\red Fire Alarm cannot be placed on this spot."
return
if (A.requires_power == 0 || A.name == "Space")
usr << "\red Fire Alarm cannot be placed in this area."
return
if(gotwallitem(loc, ndir))
usr << "\red There's already an item on this wall!"
return
new /obj/machinery/firealarm(loc, ndir, 1)
qdel(src)
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
/obj/machinery/partyalarm
name = "\improper PARTY BUTTON"

View File

@@ -9,8 +9,8 @@
active_power_usage = 2000
var/list/machine_recipes
var/list/stored_material = list("metal" = 0, "glass" = 0)
var/list/storage_capacity = list("metal" = 0, "glass" = 0)
var/list/stored_material = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0)
var/list/storage_capacity = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0)
var/show_category = "All"
var/hacked = 0
@@ -279,18 +279,20 @@
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
man_rating += M.rating
storage_capacity["metal"] = mb_rating * 25000
storage_capacity[DEFAULT_WALL_MATERIAL] = mb_rating * 25000
storage_capacity["glass"] = mb_rating * 12500
build_time = 50 / man_rating
mat_efficiency = 1.1 - man_rating * 0.1// Normally, price is 1.25 the amount of material, so this shouldn't go higher than 0.8. Maximum rating of parts is 3
/obj/machinery/autolathe/dismantle()
var/list/sheets = list("metal" = /obj/item/stack/sheet/metal, "glass" = /obj/item/stack/sheet/glass)
for(var/mat in stored_material)
var/T = sheets[mat]
var/obj/item/stack/sheet/S = new T
var/material/M = name_to_material[mat]
if(!istype(M))
continue
var/obj/item/stack/sheet/S = new M.stack_type(get_turf(src))
if(stored_material[mat] > S.perunit)
S.amount = round(stored_material[mat] / S.perunit)
S.loc = loc
else
qdel(S)
..()

View File

@@ -6,7 +6,7 @@
w_class = 2
anchored = 0
matter = list("metal" = 700,"glass" = 300)
matter = list(DEFAULT_WALL_MATERIAL = 700,"glass" = 300)
// Motion, EMP-Proof, X-Ray
var/list/obj/item/possible_upgrades = list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/osmium, /obj/item/weapon/stock_parts/scanning_module)

View File

@@ -272,11 +272,7 @@
for(var/turf/simulated/floor/target_tile in range(2,loc))
target_tile.assume_gas("phoron", 35, 400+T0C)
spawn (0) target_tile.hotspot_expose(temperature, 400)
for(var/obj/structure/falsewall/phoron/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
var/turf/T = get_turf(F)
T.ChangeTurf(/turf/simulated/wall/mineral/phoron/)
qdel (F)
for(var/turf/simulated/wall/mineral/phoron/W in range(3,src))
for(var/turf/simulated/wall/W in range(3,src))
W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
D.ignite(temperature/4)
@@ -613,7 +609,7 @@ About the new airlock wires panel:
if (src.isElectrified())
if (istype(mover, /obj/item))
var/obj/item/i = mover
if (i.matter && ("metal" in i.matter) && i.matter["metal"] > 0)
if (i.matter && (DEFAULT_WALL_MATERIAL in i.matter) && i.matter[DEFAULT_WALL_MATERIAL] > 0)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()

View File

@@ -6,7 +6,7 @@
icon_state = "door_electronics"
w_class = 2.0 //It should be tiny! -Agouri
matter = list("metal" = 50,"glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 50)
req_access = list(access_engine)

View File

@@ -22,7 +22,7 @@
if(!M.get_amount())
return
while(metal_amount < 150000 && M.amount)
src.metal_amount += O.matter["metal"] /*O:height * O:width * O:length * 100000.0*/
src.metal_amount += O.matter[DEFAULT_WALL_MATERIAL] /*O:height * O:width * O:length * 100000.0*/
M.use(1)
count++

View File

@@ -0,0 +1,83 @@
/obj/item/frame
name = "frame"
desc = "Used for building machines."
icon = 'icons/obj/monitors.dmi'
icon_state = "fire_bitem"
flags = CONDUCT
var/build_machine_type
var/refund_amt = 2
var/refund_type = /obj/item/stack/sheet/metal
/obj/item/frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
new refund_type( get_turf(src.loc), refund_amt)
qdel(src)
return
..()
/obj/item/frame/proc/try_build(turf/on_wall)
if(!build_machine_type)
return
if (get_dist(on_wall,usr)>1)
return
var/ndir = get_dir(on_wall,usr)
if (!(ndir in cardinal))
return
var/turf/loc = get_turf(usr)
var/area/A = loc.loc
if (!istype(loc, /turf/simulated/floor))
usr << "<span class='danger>\The [src] Alarm cannot be placed on this spot.</span>"
return
if (A.requires_power == 0 || A.name == "Space")
usr << "<span class='danger>\The [src] Alarm cannot be placed in this area.</span>"
return
if(gotwallitem(loc, ndir))
usr << "<span class='danger>There's already an item on this wall!</span>"
return
var/obj/machinery/M = new build_machine_type(loc, ndir, 1)
M.fingerprints = src.fingerprints
M.fingerprintshidden = src.fingerprintshidden
M.fingerprintslast = src.fingerprintslast
qdel(src)
/obj/item/frame/fire_alarm
name = "fire alarm frame"
desc = "Used for building fire alarms."
build_machine_type = /obj/machinery/firealarm
/obj/item/frame/air_alarm
name = "air alarm frame"
desc = "Used for building air alarms."
build_machine_type = /obj/machinery/alarm
/obj/item/frame/light
name = "light fixture frame"
desc = "Used for building lights."
icon = 'icons/obj/lighting.dmi'
icon_state = "tube-construct-item"
build_machine_type = /obj/machinery/light_construct
/obj/item/frame/light/small
name = "small light fixture frame"
icon_state = "bulb-construct-item"
refund_amt = 1
build_machine_type = /obj/machinery/light_construct/small
/obj/item/frame/rust
name = "Fuel Compressor frame"
icon = 'icons/rust.dmi'
icon_state = "fuel_compressor0"
w_class = 4
refund_type = /obj/item/stack/sheet/plasteel
refund_amt = 12
build_machine_type = /obj/machinery/rust_fuel_compressor
/obj/item/frame/rust/assembly
name = "Fuel Assembly Port frame"
icon_state = "port2"
build_machine_type = /obj/machinery/rust_fuel_assembly_port

View File

@@ -9,7 +9,7 @@
force = 5
origin_tech = "materials=2"
construction_time = 100
construction_cost = list("metal"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
var/equip_cooldown = 0
var/equip_ready = 1
var/energy_drain = 0

View File

@@ -6,7 +6,7 @@
origin_tech = "programming=2;biotech=3"
energy_drain = 20
range = MELEE
construction_cost = list("metal"=5000,"glass"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=5000,"glass"=10000)
reliability = 1000
equip_cooldown = 20
var/mob/living/carbon/occupant = null
@@ -394,7 +394,7 @@
equip_cooldown = 10
origin_tech = "materials=3;biotech=4;magnets=4;programming=3"
construction_time = 200
construction_cost = list("metal"=3000,"glass"=2000)
construction_cost = list(DEFAULT_WALL_MATERIAL=3000,"glass"=2000)
required_type = /obj/mecha/medical
New()

View File

@@ -89,8 +89,13 @@
var/C = target.loc //why are these backwards? we may never know -Pete
if(do_after_cooldown(target))
if(T == chassis.loc && src == chassis.selected)
if(istype(target, /turf/simulated/wall/r_wall))
if(istype(target, /turf/simulated/wall))
var/turf/simulated/wall/W = target
if(W.reinf_material)
occupant_message("<span class='warning'>[target] is too durable to drill through.</span>")
else
log_message("Drilled through [target]")
target.ex_act(2)
else if(istype(target, /turf/simulated/mineral))
for(var/turf/simulated/mineral/M in range(chassis,1))
if(get_dir(chassis,M)&chassis.dir)
@@ -123,7 +128,7 @@
desc = "This is an upgraded version of the drill that'll pierce the heavens! (Can be attached to: Combat and Engineering Exosuits)"
icon_state = "mecha_diamond_drill"
origin_tech = "materials=4;engineering=3"
construction_cost = list("metal"=10000,"diamond"=6500)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"diamond"=6500)
equip_cooldown = 20
force = 15
@@ -140,8 +145,9 @@
var/C = target.loc //why are these backwards? we may never know -Pete
if(do_after_cooldown(target))
if(T == chassis.loc && src == chassis.selected)
if(istype(target, /turf/simulated/wall/r_wall))
if(do_after_cooldown(target))//To slow down how fast mechs can drill through the station
if(istype(target, /turf/simulated/wall))
var/turf/simulated/wall/W = target
if(!W.reinf_material || do_after_cooldown(target))//To slow down how fast mechs can drill through the station
log_message("Drilled through [target]")
target.ex_act(3)
else if(istype(target, /turf/simulated/mineral))
@@ -255,7 +261,7 @@
energy_drain = 250
range = MELEE|RANGED
construction_time = 1200
construction_cost = list("metal"=30000,"phoron"=25000,"silver"=20000,"gold"=20000)
construction_cost = list(DEFAULT_WALL_MATERIAL=30000,"phoron"=25000,"silver"=20000,"gold"=20000)
var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock.
var/disabled = 0 //malf
@@ -505,7 +511,7 @@
equip_cooldown = 10
energy_drain = 50
range = 0
construction_cost = list("metal"=20000,"silver"=5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"silver"=5000)
var/deflect_coeff = 1.15
var/damage_coeff = 0.8
@@ -555,7 +561,7 @@
equip_cooldown = 10
energy_drain = 50
range = 0
construction_cost = list("metal"=20000,"gold"=5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"gold"=5000)
var/deflect_coeff = 1.15
var/damage_coeff = 0.8
@@ -626,7 +632,7 @@
equip_cooldown = 20
energy_drain = 100
range = 0
construction_cost = list("metal"=10000,"gold"=1000,"silver"=2000,"glass"=5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"gold"=1000,"silver"=2000,"glass"=5000)
var/health_boost = 2
var/datum/global_iterator/pr_repair_droid
var/icon/droid_overlay
@@ -721,7 +727,7 @@
equip_cooldown = 10
energy_drain = 0
range = 0
construction_cost = list("metal"=10000,"gold"=2000,"silver"=3000,"glass"=2000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"gold"=2000,"silver"=3000,"glass"=2000)
var/datum/global_iterator/pr_energy_relay
var/coeff = 100
var/list/use_channels = list(EQUIP,ENVIRON,LIGHT)
@@ -838,7 +844,7 @@
equip_cooldown = 10
energy_drain = 0
range = MELEE
construction_cost = list("metal"=10000,"silver"=500,"glass"=1000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"silver"=500,"glass"=1000)
var/datum/global_iterator/pr_mech_generator
var/coeff = 100
var/obj/item/stack/sheet/fuel
@@ -978,7 +984,7 @@
desc = "Generates power using uranium. Pollutes the environment."
icon_state = "tesla"
origin_tech = "powerstorage=3;engineering=3"
construction_cost = list("metal"=10000,"silver"=500,"glass"=1000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"silver"=500,"glass"=1000)
max_fuel = 50000
fuel_per_cycle_idle = 10
fuel_per_cycle_active = 30
@@ -1089,7 +1095,7 @@
origin_tech = "engineering=1;biotech=1"
energy_drain = 10
range = MELEE
construction_cost = list("metal"=5000,"glass"=5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=5000,"glass"=5000)
reliability = 1000
equip_cooldown = 20
var/mob/living/carbon/occupant = null

View File

@@ -274,7 +274,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang//Because I am a heartless bastard -Sieve
name = "\improper SOP-6 grenade launcher"
projectile = /obj/item/weapon/grenade/flashbang/clusterbang
construction_cost = list("metal"=20000,"gold"=6000,"uranium"=6000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"gold"=6000,"uranium"=6000)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited/get_equip_info()//Limited version of the clusterbang launcher that can't reload
return "<span style=\"color:[equip_ready?"#0f0":"#f00"];\">*</span>&nbsp;[chassis.selected==src?"<b>":"<a href='?src=\ref[chassis];select_equip=\ref[src]'>"][src.name][chassis.selected==src?"</b>":"</a>"]\[[src.projectiles]\]"

View File

@@ -17,7 +17,7 @@
var/time_coeff = 1.5 //can be upgraded with research
var/resource_coeff = 1.5 //can be upgraded with research
var/list/resources = list(
"metal"=0,
DEFAULT_WALL_MATERIAL=0,
"glass"=0,
"gold"=0,
"silver"=0,
@@ -719,7 +719,7 @@
/obj/machinery/mecha_part_fabricator/proc/remove_material(var/mat_string, var/amount)
var/type
switch(mat_string)
if("metal")
if(DEFAULT_WALL_MATERIAL)
type = /obj/item/stack/sheet/metal
if("glass")
type = /obj/item/stack/sheet/glass
@@ -774,9 +774,9 @@
if(I.reliability != 100 && crit_fail)
I.crit_fail = 1
I.loc = src.loc
if(src.resources["metal"] >= 3750)
if(src.resources[DEFAULT_WALL_MATERIAL] >= 3750)
var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc)
G.amount = round(src.resources["metal"] / G.perunit)
G.amount = round(src.resources[DEFAULT_WALL_MATERIAL] / G.perunit)
if(src.resources["glass"] >= 3750)
var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc)
G.amount = round(src.resources["glass"] / G.perunit)
@@ -816,7 +816,7 @@
if(/obj/item/stack/sheet/mineral/phoron)
material = "phoron"
if(/obj/item/stack/sheet/metal)
material = "metal"
material = DEFAULT_WALL_MATERIAL
if(/obj/item/stack/sheet/glass)
material = "glass"
if(/obj/item/stack/sheet/mineral/uranium)

View File

@@ -70,7 +70,7 @@
icon_state = "motion2"
origin_tech = "programming=2;magnets=2"
construction_time = 50
construction_cost = list("metal"=500)
construction_cost = list(DEFAULT_WALL_MATERIAL=500)
proc/get_mecha_info()
if(!in_mecha())

View File

@@ -12,14 +12,14 @@
flags = CONDUCT
origin_tech = "programming=2;materials=2"
var/construction_time = 100
var/list/construction_cost = list("metal"=20000,"glass"=5000)
var/list/construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"glass"=5000)
/obj/item/mecha_parts/chassis
name="Mecha Chassis"
icon_state = "backbone"
var/datum/construction/construct
construction_cost = list("metal"=20000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000)
flags = CONDUCT
attackby(obj/item/W as obj, mob/user as mob)
@@ -45,7 +45,7 @@
icon_state = "ripley_harness"
origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
construction_time = 200
construction_cost = list("metal"=40000,"glass"=15000)
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"glass"=15000)
/obj/item/mecha_parts/part/ripley_left_arm
name="Ripley Left Arm"
@@ -53,7 +53,7 @@
icon_state = "ripley_l_arm"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 150
construction_cost = list("metal"=25000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
/obj/item/mecha_parts/part/ripley_right_arm
name="Ripley Right Arm"
@@ -61,7 +61,7 @@
icon_state = "ripley_r_arm"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 150
construction_cost = list("metal"=25000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
/obj/item/mecha_parts/part/ripley_left_leg
name="Ripley Left Leg"
@@ -69,7 +69,7 @@
icon_state = "ripley_l_leg"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 150
construction_cost = list("metal"=30000)
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
/obj/item/mecha_parts/part/ripley_right_leg
name="Ripley Right Leg"
@@ -77,13 +77,13 @@
icon_state = "ripley_r_leg"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 150
construction_cost = list("metal"=30000)
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
///////// Gygax
/obj/item/mecha_parts/chassis/gygax
name = "Gygax Chassis"
construction_cost = list("metal"=25000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
New()
..()
@@ -95,7 +95,7 @@
icon_state = "gygax_harness"
origin_tech = "programming=2;materials=2;biotech=3;engineering=3"
construction_time = 300
construction_cost = list("metal"=50000,"glass"=20000)
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"glass"=20000)
/obj/item/mecha_parts/part/gygax_head
name="Gygax Head"
@@ -103,7 +103,7 @@
icon_state = "gygax_head"
origin_tech = "programming=2;materials=2;magnets=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=20000,"glass"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"glass"=10000)
/obj/item/mecha_parts/part/gygax_left_arm
name="Gygax Left Arm"
@@ -111,7 +111,7 @@
icon_state = "gygax_l_arm"
origin_tech = "programming=2;materials=2;engineering=3"
construction_time = 200
construction_cost = list("metal"=30000)
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
/obj/item/mecha_parts/part/gygax_right_arm
name="Gygax Right Arm"
@@ -119,35 +119,35 @@
icon_state = "gygax_r_arm"
origin_tech = "programming=2;materials=2;engineering=3"
construction_time = 200
construction_cost = list("metal"=30000)
construction_cost = list(DEFAULT_WALL_MATERIAL=30000)
/obj/item/mecha_parts/part/gygax_left_leg
name="Gygax Left Leg"
icon_state = "gygax_l_leg"
origin_tech = "programming=2;materials=2;engineering=3"
construction_time = 200
construction_cost = list("metal"=35000)
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
/obj/item/mecha_parts/part/gygax_right_leg
name="Gygax Right Leg"
icon_state = "gygax_r_leg"
origin_tech = "programming=2;materials=2;engineering=3"
construction_time = 200
construction_cost = list("metal"=35000)
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
/obj/item/mecha_parts/part/gygax_armour
name="Gygax Armour Plates"
icon_state = "gygax_armour"
origin_tech = "materials=6;combat=4;engineering=5"
construction_time = 600
construction_cost = list("metal"=50000,"diamond"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"diamond"=10000)
//////////// Durand
/obj/item/mecha_parts/chassis/durand
name = "Durand Chassis"
construction_cost = list("metal"=25000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
New()
..()
@@ -158,49 +158,49 @@
icon_state = "durand_harness"
origin_tech = "programming=2;materials=3;biotech=3;engineering=3"
construction_time = 300
construction_cost = list("metal"=55000,"glass"=20000,"silver"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=55000,"glass"=20000,"silver"=10000)
/obj/item/mecha_parts/part/durand_head
name="Durand Head"
icon_state = "durand_head"
origin_tech = "programming=2;materials=3;magnets=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=25000,"glass"=10000,"silver"=3000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000,"glass"=10000,"silver"=3000)
/obj/item/mecha_parts/part/durand_left_arm
name="Durand Left Arm"
icon_state = "durand_l_arm"
origin_tech = "programming=2;materials=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=35000,"silver"=3000)
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"silver"=3000)
/obj/item/mecha_parts/part/durand_right_arm
name="Durand Right Arm"
icon_state = "durand_r_arm"
origin_tech = "programming=2;materials=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=35000,"silver"=3000)
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"silver"=3000)
/obj/item/mecha_parts/part/durand_left_leg
name="Durand Left Leg"
icon_state = "durand_l_leg"
origin_tech = "programming=2;materials=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=40000,"silver"=3000)
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"silver"=3000)
/obj/item/mecha_parts/part/durand_right_leg
name="Durand Right Leg"
icon_state = "durand_r_leg"
origin_tech = "programming=2;materials=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=40000,"silver"=3000)
construction_cost = list(DEFAULT_WALL_MATERIAL=40000,"silver"=3000)
/obj/item/mecha_parts/part/durand_armour
name="Durand Armour Plates"
icon_state = "durand_armour"
origin_tech = "materials=5;combat=4;engineering=5"
construction_time = 600
construction_cost = list("metal"=50000,"uranium"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=50000,"uranium"=10000)
@@ -248,42 +248,42 @@
name="Phazon Torso"
icon_state = "phazon_harness"
construction_time = 300
construction_cost = list("metal"=35000,"glass"=10000,"phoron"=20000)
construction_cost = list(DEFAULT_WALL_MATERIAL=35000,"glass"=10000,"phoron"=20000)
origin_tech = "programming=5;materials=7;bluespace=6;powerstorage=6"
/obj/item/mecha_parts/part/phazon_head
name="Phazon Head"
icon_state = "phazon_head"
construction_time = 200
construction_cost = list("metal"=15000,"glass"=5000,"phoron"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=15000,"glass"=5000,"phoron"=10000)
origin_tech = "programming=4;materials=5;magnets=6"
/obj/item/mecha_parts/part/phazon_left_arm
name="Phazon Left Arm"
icon_state = "phazon_l_arm"
construction_time = 200
construction_cost = list("metal"=20000,"phoron"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=2;magnets=2"
/obj/item/mecha_parts/part/phazon_right_arm
name="Phazon Right Arm"
icon_state = "phazon_r_arm"
construction_time = 200
construction_cost = list("metal"=20000,"phoron"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=2;magnets=2"
/obj/item/mecha_parts/part/phazon_left_leg
name="Phazon Left Leg"
icon_state = "phazon_l_leg"
construction_time = 200
construction_cost = list("metal"=20000,"phoron"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=3;magnets=3"
/obj/item/mecha_parts/part/phazon_right_leg
name="Phazon Right Leg"
icon_state = "phazon_r_leg"
construction_time = 200
construction_cost = list("metal"=20000,"phoron"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"phoron"=10000)
origin_tech = "materials=5;bluespace=3;magnets=3"
///////// Odysseus
@@ -300,7 +300,7 @@
name="Odysseus Head"
icon_state = "odysseus_head"
construction_time = 100
construction_cost = list("metal"=2000,"glass"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=2000,"glass"=10000)
origin_tech = "programming=3;materials=2"
/obj/item/mecha_parts/part/odysseus_torso
@@ -309,7 +309,7 @@
icon_state = "odysseus_torso"
origin_tech = "programming=2;materials=2;biotech=2;engineering=2"
construction_time = 180
construction_cost = list("metal"=25000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
/obj/item/mecha_parts/part/odysseus_left_arm
name="Odysseus Left Arm"
@@ -317,7 +317,7 @@
icon_state = "odysseus_l_arm"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 120
construction_cost = list("metal"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
/obj/item/mecha_parts/part/odysseus_right_arm
name="Odysseus Right Arm"
@@ -325,7 +325,7 @@
icon_state = "odysseus_r_arm"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 120
construction_cost = list("metal"=10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
/obj/item/mecha_parts/part/odysseus_left_leg
name="Odysseus Left Leg"
@@ -333,7 +333,7 @@
icon_state = "odysseus_l_leg"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 130
construction_cost = list("metal"=15000)
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
/obj/item/mecha_parts/part/odysseus_right_leg
name="Odysseus Right Leg"
@@ -341,11 +341,11 @@
icon_state = "odysseus_r_leg"
origin_tech = "programming=2;materials=2;engineering=2"
construction_time = 130
construction_cost = list("metal"=15000)
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
/*/obj/item/mecha_parts/part/odysseus_armour
name="Odysseus Carapace"
icon_state = "odysseus_armour"
origin_tech = "materials=3;engineering=3"
construction_time = 200
construction_cost = list("metal"=15000)*/
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)*/

View File

@@ -38,3 +38,17 @@
icon = 'icons/turf/space.dmi'
icon_state = "bluespacify"
layer = 10
/obj/effect/overlay/wallrot
name = "wallrot"
desc = "Ick..."
icon = 'icons/effects/wallrot.dmi'
anchored = 1
density = 1
layer = 5
mouse_opacity = 0
/obj/effect/overlay/wallrot/New()
..()
pixel_x += rand(-10, 10)
pixel_y += rand(-10, 10)

View File

@@ -88,9 +88,6 @@ proc/explosion_rec(turf/epicenter, power)
/turf/simulated/wall
explosion_resistance = 10
/turf/simulated/wall/r_wall
explosion_resistance = 25
//Code-wise, a safe value for power is something up to ~25 or ~30.. This does quite a bit of damage to the station.
//direction is the direction that the spread took to come to this tile. So it is pointing in the main blast direction - meaning where this tile should spread most of it's force.
/turf/proc/explosion_spread(power, direction)

View File

@@ -82,7 +82,7 @@
icon_broken = "ashtray_bork_bl"
max_butts = 14
health = 24.0
matter = list("metal" = 30,"glass" = 30)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 30)
empty_desc = "Cheap plastic ashtray."
throwforce = 3.0
die()
@@ -102,7 +102,7 @@
icon_broken = "ashtray_bork_br"
max_butts = 10
health = 72.0
matter = list("metal" = 80)
matter = list(DEFAULT_WALL_MATERIAL = 80)
empty_desc = "Massive bronze ashtray."
throwforce = 10.0

View File

@@ -201,10 +201,6 @@ move an amendment</a> to the drawing.</p>
return BORDER_BETWEEN
if (locate(/obj/machinery/door) in T2)
return BORDER_2NDTILE
if (locate(/obj/structure/falsewall) in T2)
return BORDER_2NDTILE
if (locate(/obj/structure/falserwall) in T2)
return BORDER_2NDTILE
return BORDER_NONE

View File

@@ -17,7 +17,7 @@
throw_speed = 3
desc = "You can use this on airlocks or APCs to try to hack them without cutting wires."
matter = list("metal" = 50,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
origin_tech = "magnets=1;engineering=1"
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage

View File

@@ -194,7 +194,7 @@
desc = "When a problem arises, SCIENCE is the solution."
icon_state = "sflash"
origin_tech = "magnets=2;combat=1"
var/construction_cost = list("metal"=750,"glass"=750)
var/construction_cost = list(DEFAULT_WALL_MATERIAL=750,"glass"=750)
var/construction_time=100
/obj/item/device/flash/synthetic/attack(mob/living/M as mob, mob/user as mob)

View File

@@ -8,7 +8,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
matter = list("metal" = 50,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
icon_action_button = "action_flashlight"
var/on = 0

View File

@@ -16,7 +16,7 @@
throw_speed = 3
desc = "You can use this on airlocks or APCs to try to hack them without cutting wires."
matter = list("metal" = 50,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 50,"glass" = 20)
origin_tech = "magnets=1;engineering=1"
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage

View File

@@ -11,7 +11,7 @@
throw_speed = 1
throw_range = 2
matter = list("metal" = 750,"waste" = 750)
matter = list(DEFAULT_WALL_MATERIAL = 750,"waste" = 750)
origin_tech = "powerstorage=3;syndicate=5"
var/drain_rate = 1500000 // amount of power to drain per tick

View File

@@ -8,7 +8,7 @@
slot_flags = SLOT_BACK
w_class = 5.0
matter = list("metal" = 10000,"glass" = 2500)
matter = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 2500)
var/code = 2

View File

@@ -4,7 +4,7 @@
var/radio_desc = ""
icon_state = "headset"
item_state = "headset"
matter = list("metal" = 75)
matter = list(DEFAULT_WALL_MATERIAL = 75)
subspace_transmission = 1
canhear_range = 0 // can't hear headsets from very far away

View File

@@ -26,7 +26,7 @@
throw_range = 9
w_class = 2
matter = list("glass" = 25,"metal" = 75)
matter = list("glass" = 25,DEFAULT_WALL_MATERIAL = 75)
var/const/FREQ_LISTENING = 1

View File

@@ -16,7 +16,7 @@ REAGENT SCANNER
w_class = 2
item_state = "electronic"
matter = list("metal" = 150)
matter = list(DEFAULT_WALL_MATERIAL = 150)
origin_tech = "magnets=1;engineering=1"
@@ -73,7 +73,7 @@ REAGENT SCANNER
w_class = 2.0
throw_speed = 5
throw_range = 10
matter = list("metal" = 200)
matter = list(DEFAULT_WALL_MATERIAL = 200)
origin_tech = "magnets=1;biotech=1"
var/mode = 1;
@@ -238,7 +238,7 @@ REAGENT SCANNER
throw_speed = 4
throw_range = 20
matter = list("metal" = 30,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
origin_tech = "magnets=1;engineering=1"
@@ -285,7 +285,7 @@ REAGENT SCANNER
throw_speed = 4
throw_range = 20
matter = list("metal" = 30,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
origin_tech = "magnets=2;biotech=2"
var/details = 0
@@ -358,7 +358,7 @@ REAGENT SCANNER
throwforce = 5
throw_speed = 4
throw_range = 20
matter = list("metal" = 30,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
origin_tech = "magnets=2;biotech=2"
var/details = 0
@@ -417,7 +417,7 @@ REAGENT SCANNER
throwforce = 0
throw_speed = 3
throw_range = 7
matter = list("metal" = 30,"glass" = 20)
matter = list(DEFAULT_WALL_MATERIAL = 30,"glass" = 20)
/obj/item/device/slime_scanner/attack(mob/living/M as mob, mob/living/user as mob)
if (!isslime(M))

View File

@@ -5,7 +5,7 @@
item_state = "analyzer"
w_class = 2.0
matter = list("metal" = 60,"glass" = 30)
matter = list(DEFAULT_WALL_MATERIAL = 60,"glass" = 30)
var/emagged = 0.0
var/recording = 0.0

View File

@@ -6,7 +6,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
var/construction_time = 100
var/list/construction_cost = list("metal"=20000,"glass"=5000)
var/list/construction_cost = list(DEFAULT_WALL_MATERIAL=20000,"glass"=5000)
var/list/part = null // Order of args is important for installing robolimbs.
var/sabotaged = 0 //Emagging limbs can have repercussions when installed as prosthetics.
var/model_info
@@ -33,7 +33,7 @@
desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case."
icon_state = "l_arm"
construction_time = 200
construction_cost = list("metal"=18000)
construction_cost = list(DEFAULT_WALL_MATERIAL=18000)
part = list("l_arm","l_hand")
model_info = 1
@@ -42,7 +42,7 @@
desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case."
icon_state = "r_arm"
construction_time = 200
construction_cost = list("metal"=18000)
construction_cost = list(DEFAULT_WALL_MATERIAL=18000)
part = list("r_arm","r_hand")
model_info = 1
@@ -51,7 +51,7 @@
desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case."
icon_state = "l_leg"
construction_time = 200
construction_cost = list("metal"=15000)
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
part = list("l_leg","l_foot")
model_info = 1
@@ -60,7 +60,7 @@
desc = "A skeletal limb wrapped in pseudomuscles, with a low-conductivity case."
icon_state = "r_leg"
construction_time = 200
construction_cost = list("metal"=15000)
construction_cost = list(DEFAULT_WALL_MATERIAL=15000)
part = list("r_leg","r_foot")
model_info = 1
@@ -69,7 +69,7 @@
desc = "A heavily reinforced case containing cyborg logic boards, with space for a standard power cell."
icon_state = "chest"
construction_time = 350
construction_cost = list("metal"=40000)
construction_cost = list(DEFAULT_WALL_MATERIAL=40000)
var/wires = 0.0
var/obj/item/weapon/cell/cell = null
@@ -78,7 +78,7 @@
desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals."
icon_state = "head"
construction_time = 350
construction_cost = list("metal"=25000)
construction_cost = list(DEFAULT_WALL_MATERIAL=25000)
var/obj/item/device/flash/flash1 = null
var/obj/item/device/flash/flash2 = null
@@ -87,7 +87,7 @@
desc = "A complex metal backbone with standard limb sockets and pseudomuscle anchors."
icon_state = "robo_suit"
construction_time = 500
construction_cost = list("metal"=50000)
construction_cost = list(DEFAULT_WALL_MATERIAL=50000)
var/obj/item/robot_parts/l_arm/l_arm = null
var/obj/item/robot_parts/r_arm/r_arm = null
var/obj/item/robot_parts/l_leg/l_leg = null

View File

@@ -7,7 +7,7 @@
icon = 'icons/obj/module.dmi'
icon_state = "cyborg_upgrade"
var/construction_time = 120
var/construction_cost = list("metal"=10000)
var/construction_cost = list(DEFAULT_WALL_MATERIAL=10000)
var/locked = 0
var/require_module = 0
var/installed = 0
@@ -43,7 +43,7 @@
name = "robot reclassification board"
desc = "Used to rename a cyborg."
icon_state = "cyborg_upgrade1"
construction_cost = list("metal"=35000)
construction_cost = list(DEFAULT_WALL_MATERIAL=35000)
var/heldname = "default name"
/obj/item/borg/upgrade/rename/attack_self(mob/user as mob)
@@ -61,7 +61,7 @@
/obj/item/borg/upgrade/restart
name = "robot emergency restart module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
construction_cost = list("metal"=60000 , "glass"=5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=60000 , "glass"=5000)
icon_state = "cyborg_upgrade1"
@@ -85,7 +85,7 @@
/obj/item/borg/upgrade/vtec
name = "robotic VTEC Module"
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=80000 , "glass"=6000 , "gold"= 5000)
icon_state = "cyborg_upgrade2"
require_module = 1
@@ -102,7 +102,7 @@
/obj/item/borg/upgrade/tasercooler
name = "robotic Rapid Taser Cooling Module"
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
construction_cost = list("metal"=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500)
construction_cost = list(DEFAULT_WALL_MATERIAL=80000 , "glass"=6000 , "gold"= 2000, "diamond" = 500)
icon_state = "cyborg_upgrade3"
require_module = 1
@@ -137,7 +137,7 @@
/obj/item/borg/upgrade/jetpack
name = "mining robot jetpack"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
construction_cost = list("metal"=10000,"phoron"=15000,"uranium" = 20000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"phoron"=15000,"uranium" = 20000)
icon_state = "cyborg_upgrade3"
require_module = 1
@@ -159,7 +159,7 @@
/obj/item/borg/upgrade/syndicate/
name = "illegal equipment module"
desc = "Unlocks the hidden, deadlier functions of a robot"
construction_cost = list("metal"=10000,"glass"=15000,"diamond" = 10000)
construction_cost = list(DEFAULT_WALL_MATERIAL=10000,"glass"=15000,"diamond" = 10000)
icon_state = "cyborg_upgrade3"
require_module = 1

View File

@@ -9,7 +9,7 @@
throwforce = 15.0
throw_speed = 5
throw_range = 20
matter = list("metal" = 1875)
matter = list(DEFAULT_WALL_MATERIAL = 1875)
max_amount = 60
attack_verb = list("hit", "bludgeoned", "whacked")

View File

@@ -144,7 +144,7 @@
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
matter = list("metal" = 1875,"glass" = 3750)
matter = list(DEFAULT_WALL_MATERIAL = 1875,"glass" = 3750)
origin_tech = "materials=2"
created_window = /obj/structure/window/reinforced
@@ -200,7 +200,7 @@
desc = "Phoron glass which has been reinforced with metal rods."
singular_name = "reinforced phoron glass sheet"
icon_state = "sheet-phoronrglass"
matter = list("glass" = 7500,"metal" = 1875)
matter = list("glass" = 7500,DEFAULT_WALL_MATERIAL = 1875)
origin_tech = "materials=4;phorontech=2"
created_window = /obj/structure/window/phoronreinforced

View File

@@ -69,29 +69,30 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
), 4), \
null, \
new/datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade), \
new/datum/stack_recipe("light fixture frame", /obj/item/light_fixture_frame, 2), \
new/datum/stack_recipe("small light fixture frame", /obj/item/light_fixture_frame/small, 1), \
new/datum/stack_recipe("light fixture frame", /obj/item/frame/light, 2), \
new/datum/stack_recipe("small light fixture frame", /obj/item/frame/light/small, 1), \
null, \
new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \
new/datum/stack_recipe("air alarm frame", /obj/item/alarm_frame, 2), \
new/datum/stack_recipe("fire alarm frame", /obj/item/firealarm_frame, 2), \
new/datum/stack_recipe("air alarm frame", /obj/item/frame/air_alarm, 2), \
new/datum/stack_recipe("fire alarm frame", /obj/item/frame/fire_alarm, 2), \
null, \
new/datum/stack_recipe("knife blade", /obj/item/butterflyblade, 6, time = 20, one_per_turf = 0, on_floor = 1) \
)
/obj/item/stack/sheet/metal
name = "metal"
desc = "Sheets made out off metal. It has been dubbed Metal Sheets."
name = DEFAULT_WALL_MATERIAL
desc = "Sheets made out off steel."
singular_name = "metal sheet"
icon_state = "sheet-metal"
matter = list("metal" = 3750)
matter = list(DEFAULT_WALL_MATERIAL = 3750)
throwforce = 14.0
flags = CONDUCT
origin_tech = "materials=1"
sheettype = DEFAULT_WALL_MATERIAL
/obj/item/stack/sheet/metal/cyborg
name = "metal synthesizer"
desc = "A device that makes metal sheets."
name = "steel synthesizer"
desc = "A device that makes steel sheets."
gender = NEUTER
matter = null
uses_charge = 1
@@ -109,21 +110,22 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("RUST fuel assembly port frame", /obj/item/rust_fuel_assembly_port_frame, 12, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("RUST fuel compressor frame", /obj/item/rust_fuel_compressor_frame, 12, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("RUST fuel assembly port frame", /obj/item/frame/rust/assembly, 12, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("RUST fuel compressor frame", /obj/item/frame/rust, 12, time = 50, one_per_turf = 1), \
new/datum/stack_recipe("knife grip", /obj/item/butterflyhandle, 4, time = 20, one_per_turf = 0, on_floor = 1),
)
/obj/item/stack/sheet/plasteel
name = "plasteel"
singular_name = "plasteel sheet"
desc = "This sheet is an alloy of iron and phoron."
desc = "This sheet is an alloy of iron and platinum."
icon_state = "sheet-plasteel"
item_state = "sheet-metal"
matter = list("metal" = 7500)
matter = list(DEFAULT_WALL_MATERIAL = 7500)
throwforce = 15.0
flags = CONDUCT
origin_tech = "materials=2"
sheettype = "plasteel"
/obj/item/stack/sheet/plasteel/cyborg
name = "plasteel synthesizer"

View File

@@ -4,7 +4,7 @@
desc = "Those could work as a pretty decent throwing weapon"
icon_state = "tile"
force = 6.0
matter = list("metal" = 937.5)
matter = list(DEFAULT_WALL_MATERIAL = 937.5)
throwforce = 15.0
throw_speed = 5
throw_range = 20

View File

@@ -146,7 +146,7 @@
slot_flags = SLOT_BELT|SLOT_HOLSTER
w_class = 3.0
matter = list("glass" = 10,"metal" = 10)
matter = list("glass" = 10,DEFAULT_WALL_MATERIAL = 10)
attack_verb = list("struck", "pistol whipped", "hit", "bashed")
var/bullets = 7.0
@@ -201,7 +201,7 @@
flags = CONDUCT
w_class = 1.0
matter = list("metal" = 10,"glass" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 10,"glass" = 10)
var/amount_left = 7.0

View File

@@ -13,7 +13,7 @@
throw_speed = 1
throw_range = 5
w_class = 3.0
matter = list("metal" = 50000)
matter = list(DEFAULT_WALL_MATERIAL = 50000)
origin_tech = "engineering=4;materials=2"
var/datum/effect/effect/system/spark_spread/spark_system
var/stored_matter = 0
@@ -105,9 +105,10 @@
build_type = "floor"
build_turf = /turf/simulated/floor/plating/airless
else if(deconstruct && istype(T,/turf/simulated/wall))
var/turf/simulated/wall/W = T
build_delay = deconstruct ? 50 : 40
build_cost = 5
build_type = (!canRwall && istype(T,/turf/simulated/wall/r_wall)) ? null : "wall"
build_type = (!canRwall && W.reinf_material) ? null : "wall"
build_turf = /turf/simulated/floor
else if(istype(T,/turf/simulated/floor))
build_delay = deconstruct ? 50 : 20
@@ -158,7 +159,7 @@
density = 0
anchored = 0.0
origin_tech = "materials=2"
matter = list("metal" = 30000,"glass" = 15000)
matter = list(DEFAULT_WALL_MATERIAL = 30000,"glass" = 15000)
/obj/item/weapon/rcd/borg
canRwall = 1

View File

@@ -11,7 +11,7 @@
throw_speed = 2
throw_range = 10
force = 10.0
matter = list("metal" = 90)
matter = list(DEFAULT_WALL_MATERIAL = 90)
attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed")
var/spray_particles = 6

View File

@@ -10,7 +10,7 @@
throw_speed = 1
throw_range = 5
w_class = 3.0
matter = list("metal" = 500)
matter = list(DEFAULT_WALL_MATERIAL = 500)
origin_tech = "combat=1;phorontech=1"
var/status = 0
var/throw_amount = 100

View File

@@ -10,7 +10,7 @@
w_class = 2.0
throw_speed = 2
throw_range = 5
matter = list("metal" = 500)
matter = list(DEFAULT_WALL_MATERIAL = 500)
origin_tech = "materials=1"
var/dispenser = 0
var/breakouttime = 1200 //Deciseconds = 120s = 2 minutes

View File

@@ -145,7 +145,7 @@
throwforce = 6.0
throw_speed = 3
throw_range = 6
matter = list("metal" = 12000)
matter = list(DEFAULT_WALL_MATERIAL = 12000)
origin_tech = "materials=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -175,7 +175,7 @@
throwforce = 8.0
throw_speed = 3
throw_range = 6
matter = list("metal" = 12000)
matter = list(DEFAULT_WALL_MATERIAL = 12000)
origin_tech = "materials=1"
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharp = 1
@@ -247,7 +247,7 @@
throw_range = 5
w_class = 3.0
flags = CONDUCT
matter = list("metal" = 3000)
matter = list(DEFAULT_WALL_MATERIAL = 3000)
/* // NOPE
var/food_total= 0
var/burger_amt = 0

View File

@@ -9,7 +9,7 @@ var/global/list/cached_icons = list()
icon = 'icons/obj/items.dmi'
icon_state = "paint_neutral"
item_state = "paintcan"
matter = list("metal" = 200)
matter = list(DEFAULT_WALL_MATERIAL = 200)
w_class = 3.0
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(10,20,30,60)

View File

@@ -106,7 +106,6 @@ var/list/tape_roll_applications = list()
var/obj/item/tape/P = new tape_type(cur)
P.icon_state = "[P.icon_base]_[dir]"
cur = get_step_towards(cur,end)
//is_blocked_turf(var/turf/T)
usr << "\blue You finish placing the [src]." //Git Test
/obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity)

View File

@@ -14,9 +14,9 @@
var/maxcharge = 1000
var/rigged = 0 // true if rigged to explode
var/minor_fault = 0 //If not 100% reliable, it will build up faults.
var/construction_cost = list("metal"=750,"glass"=75)
var/construction_cost = list(DEFAULT_WALL_MATERIAL=750,"glass"=75)
var/construction_time=100
matter = list("metal" = 700, "glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50)
suicide_act(mob/user)
viewers(user) << "\red <b>[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.</b>"
@@ -44,7 +44,7 @@
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
origin_tech = "powerstorage=0"
maxcharge = 500
matter = list("metal" = 700, "glass" = 40)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 40)
/obj/item/weapon/cell/crap/empty/New()
..()
@@ -54,7 +54,7 @@
name = "security borg rechargable D battery"
origin_tech = "powerstorage=0"
maxcharge = 600 //600 max charge / 100 charge per shot = six shots
matter = list("metal" = 700, "glass" = 40)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 40)
/obj/item/weapon/cell/secborg/empty/New()
..()
@@ -64,14 +64,14 @@
name = "heavy-duty power cell"
origin_tech = "powerstorage=1"
maxcharge = 5000
matter = list("metal" = 700, "glass" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50)
/obj/item/weapon/cell/high
name = "high-capacity power cell"
origin_tech = "powerstorage=2"
icon_state = "hcell"
maxcharge = 10000
matter = list("metal" = 700, "glass" = 60)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 60)
/obj/item/weapon/cell/high/empty/New()
..()
@@ -82,8 +82,8 @@
origin_tech = "powerstorage=5"
icon_state = "scell"
maxcharge = 20000
matter = list("metal" = 700, "glass" = 70)
construction_cost = list("metal"=750,"glass"=100)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 70)
construction_cost = list(DEFAULT_WALL_MATERIAL=750,"glass"=100)
/obj/item/weapon/cell/super/empty/New()
..()
@@ -94,8 +94,8 @@
origin_tech = "powerstorage=6"
icon_state = "hpcell"
maxcharge = 30000
matter = list("metal" = 700, "glass" = 80)
construction_cost = list("metal"=500,"glass"=150,"gold"=200,"silver"=200)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 80)
construction_cost = list(DEFAULT_WALL_MATERIAL=500,"glass"=150,"gold"=200,"silver"=200)
/obj/item/weapon/cell/hyper/empty/New()
..()
@@ -106,7 +106,7 @@
icon_state = "icell"
origin_tech = null
maxcharge = 30000
matter = list("metal" = 700, "glass" = 80)
matter = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 80)
use()
return 1

View File

@@ -13,7 +13,7 @@
throw_speed = 1
throw_range = 4
w_class = 4.0
matter = list("glass" = 7500, "metal" = 1000)
matter = list("glass" = 7500, DEFAULT_WALL_MATERIAL = 1000)
origin_tech = "materials=2"
attack_verb = list("shoved", "bashed")
var/cooldown = 0 //shield bash cooldown. based on world.time

View File

@@ -16,7 +16,7 @@
desc = "Retracts stuff."
icon = 'icons/obj/surgery.dmi'
icon_state = "retractor"
matter = list("metal" = 10000, "glass" = 5000)
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
flags = CONDUCT
w_class = 2.0
origin_tech = "materials=1;biotech=1"
@@ -29,7 +29,7 @@
desc = "You think you have seen this before."
icon = 'icons/obj/surgery.dmi'
icon_state = "hemostat"
matter = list("metal" = 5000, "glass" = 2500)
matter = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500)
flags = CONDUCT
w_class = 2.0
origin_tech = "materials=1;biotech=1"
@@ -43,7 +43,7 @@
desc = "This stops bleeding."
icon = 'icons/obj/surgery.dmi'
icon_state = "cautery"
matter = list("metal" = 5000, "glass" = 2500)
matter = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500)
flags = CONDUCT
w_class = 2.0
origin_tech = "materials=1;biotech=1"
@@ -58,7 +58,7 @@
icon = 'icons/obj/surgery.dmi'
icon_state = "drill"
hitsound = 'sound/weapons/circsawhit.ogg'
matter = list("metal" = 15000, "glass" = 10000)
matter = list(DEFAULT_WALL_MATERIAL = 15000, "glass" = 10000)
flags = CONDUCT
force = 15.0
w_class = 2.0
@@ -86,7 +86,7 @@
throwforce = 5.0
throw_speed = 3
throw_range = 5
matter = list("metal" = 10000, "glass" = 5000)
matter = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 5000)
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
@@ -140,7 +140,7 @@
throwforce = 9.0
throw_speed = 3
throw_range = 5
matter = list("metal" = 20000,"glass" = 10000)
matter = list(DEFAULT_WALL_MATERIAL = 20000,"glass" = 10000)
origin_tech = "materials=1;biotech=1"
attack_verb = list("attacked", "slashed", "sawed", "cut")
sharp = 1

View File

@@ -6,7 +6,7 @@
gender = PLURAL
icon = 'icons/obj/items.dmi'
icon_state = "table_parts"
matter = list("metal" = 3750)
matter = list(DEFAULT_WALL_MATERIAL = 3750)
flags = CONDUCT
attack_verb = list("slammed", "bashed", "battered", "bludgeoned", "thrashed", "whacked")
@@ -49,7 +49,7 @@
desc = "Hard table parts. Well... harder."
icon = 'icons/obj/items.dmi'
icon_state = "reinf_tableparts"
matter = list("metal" = 7500)
matter = list(DEFAULT_WALL_MATERIAL = 7500)
flags = CONDUCT
stack_types = list(/obj/item/stack/sheet/metal, /obj/item/stack/rods)

View File

@@ -21,7 +21,7 @@
item_state = "electronic"
throw_speed = 4
throw_range = 20
matter = list("metal" = 400)
matter = list(DEFAULT_WALL_MATERIAL = 400)
origin_tech = "magnets=1"
/obj/item/weapon/locator/attack_self(mob/user as mob)
@@ -132,7 +132,7 @@ Frequency:
w_class = 2.0
throw_speed = 3
throw_range = 5
matter = list("metal" = 10000)
matter = list(DEFAULT_WALL_MATERIAL = 10000)
origin_tech = "magnets=1;bluespace=3"
/obj/item/weapon/hand_tele/attack_self(mob/user as mob)

View File

@@ -24,7 +24,7 @@
force = 5.0
throwforce = 7.0
w_class = 2.0
matter = list("metal" = 150)
matter = list(DEFAULT_WALL_MATERIAL = 150)
origin_tech = "materials=1;engineering=1"
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
@@ -44,7 +44,7 @@
throwforce = 5.0
throw_speed = 3
throw_range = 5
matter = list("metal" = 75)
matter = list(DEFAULT_WALL_MATERIAL = 75)
attack_verb = list("stabbed")
suicide_act(mob/user)
@@ -102,7 +102,7 @@
throw_speed = 2
throw_range = 9
w_class = 2.0
matter = list("metal" = 80)
matter = list(DEFAULT_WALL_MATERIAL = 80)
origin_tech = "materials=1;engineering=1"
attack_verb = list("pinched", "nipped")
sharp = 1
@@ -144,7 +144,7 @@
w_class = 2.0
//Cost to make in the autolathe
matter = list("metal" = 70, "glass" = 30)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
//R&D tech level
origin_tech = "engineering=1"
@@ -403,21 +403,21 @@
/obj/item/weapon/weldingtool/largetank
name = "industrial welding tool"
max_fuel = 40
matter = list("metal" = 70, "glass" = 60)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
origin_tech = "engineering=2"
/obj/item/weapon/weldingtool/hugetank
name = "upgraded welding tool"
max_fuel = 80
w_class = 3.0
matter = list("metal" = 70, "glass" = 120)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
origin_tech = "engineering=3"
/obj/item/weapon/weldingtool/experimental
name = "experimental welding tool"
max_fuel = 40
w_class = 3.0
matter = list("metal" = 70, "glass" = 120)
matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
origin_tech = "engineering=4;phorontech=3"
var/last_gen = 0
@@ -444,7 +444,7 @@
throwforce = 7.0
item_state = "crowbar"
w_class = 2.0
matter = list("metal" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50)
origin_tech = "engineering=1"
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")

View File

@@ -185,14 +185,14 @@
desc = "A knife blade. Unusable as a weapon without a grip."
icon = 'icons/obj/buildingobject.dmi'
icon_state = "butterfly2"
matter = list("metal" = 5000)
matter = list(DEFAULT_WALL_MATERIAL = 5000)
/obj/item/butterflyhandle
name = "concealed knife grip"
desc = "A plasteel grip with screw fittings for a blade."
icon = 'icons/obj/buildingobject.dmi'
icon_state = "butterfly1"
matter = list("metal" = 4000)
matter = list(DEFAULT_WALL_MATERIAL = 4000)
/obj/item/butterflyhandle/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/butterflyblade))
@@ -276,7 +276,7 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob)
throw_range = 15
sharp = 1
edge = 1
matter = list("metal" = 500)
matter = list(DEFAULT_WALL_MATERIAL = 500)
var/poisoned = 0

View File

@@ -1,333 +0,0 @@
/*
* False Walls
*/
/obj/structure/falsewall
name = "wall"
desc = "A huge chunk of metal used to seperate rooms."
anchored = 1
icon = 'icons/turf/walls.dmi'
var/mineral = "metal"
var/opening = 0
/obj/structure/falsewall/New()
relativewall_neighbours()
..()
/obj/structure/falsewall/Destroy()
var/temploc = src.loc
spawn(10)
for(var/turf/simulated/wall/W in range(temploc,1))
W.relativewall()
for(var/obj/structure/falsewall/W in range(temploc,1))
W.relativewall()
for(var/obj/structure/falserwall/W in range(temploc,1))
W.relativewall()
..()
/obj/structure/falsewall/relativewall()
if(!density)
icon_state = "[mineral]fwall_open"
return
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
for(var/turf/simulated/wall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve
junction |= get_dir(src,W)
for(var/obj/structure/falsewall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)
junction |= get_dir(src,W)
for(var/obj/structure/falserwall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)
junction |= get_dir(src,W)
icon_state = "[mineral][junction]"
return
/obj/structure/falsewall/attack_hand(mob/user as mob)
if(opening)
return
if(density)
opening = 1
icon_state = "[mineral]fwall_open"
flick("[mineral]fwall_opening", src)
sleep(15)
src.density = 0
set_opacity(0)
opening = 0
else
opening = 1
flick("[mineral]fwall_closing", src)
icon_state = "[mineral]0"
density = 1
sleep(15)
set_opacity(1)
src.relativewall()
opening = 0
/obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
..()
if(density)
icon_state = "[mineral]0"
src.relativewall()
else
icon_state = "[mineral]fwall_open"
/obj/structure/falsewall/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(opening)
user << "\red You must wait until the door has stopped moving."
return
if(density)
var/turf/T = get_turf(src)
if(T.density)
user << "\red The wall is blocked!"
return
if(istype(W, /obj/item/weapon/screwdriver))
user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
if(!mineral || mineral == "metal")
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
qdel(src)
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT:welding )
if(!mineral)
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
if(mineral != "phoron")//Stupid shit keeps me from pushing the attackby() to phoron walls -Sieve
T = get_turf(src)
T.attackby(W,user)
qdel(src)
else
user << "\blue You can't reach, close it first!"
if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
var/turf/T = get_turf(src)
if(!mineral)
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
if(mineral != "phoron")
T = get_turf(src)
T.attackby(W,user)
qdel(src)
//DRILLING
else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
var/turf/T = get_turf(src)
if(!mineral)
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
T = get_turf(src)
T.attackby(W,user)
qdel(src)
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
var/turf/T = get_turf(src)
if(!mineral)
T.ChangeTurf(/turf/simulated/wall)
else
T.ChangeTurf(text2path("/turf/simulated/wall/mineral/[mineral]"))
if(mineral != "phoron")
T = get_turf(src)
T.attackby(W,user)
qdel(src)
/obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
..()
if(density)
icon_state = "[mineral]0"
src.relativewall()
else
icon_state = "[mineral]fwall_open"
/*
* False R-Walls
*/
/obj/structure/falserwall
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to seperate rooms."
icon = 'icons/turf/walls.dmi'
icon_state = "r_wall"
density = 1
opacity = 1
anchored = 1
var/mineral = "metal"
var/opening = 0
/obj/structure/falserwall/New()
relativewall_neighbours()
..()
/obj/structure/falserwall/attack_hand(mob/user as mob)
if(opening)
return
if(density)
opening = 1
// Open wall
icon_state = "frwall_open"
flick("frwall_opening", src)
sleep(15)
density = 0
set_opacity(0)
opening = 0
else
opening = 1
icon_state = "r_wall"
flick("frwall_closing", src)
density = 1
sleep(15)
set_opacity(1)
relativewall()
opening = 0
/obj/structure/falserwall/relativewall()
if(!density)
icon_state = "frwall_open"
return
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
for(var/turf/simulated/wall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve
junction |= get_dir(src,W)
for(var/obj/structure/falsewall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)
junction |= get_dir(src,W)
for(var/obj/structure/falserwall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)
junction |= get_dir(src,W)
icon_state = "rwall[junction]"
return
/obj/structure/falserwall/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(opening)
user << "\red You must wait until the door has stopped moving."
return
if(istype(W, /obj/item/weapon/screwdriver))
var/turf/T = get_turf(src)
user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the wall.")
T.ChangeTurf(/turf/simulated/wall) //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you).
qdel(src)
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/simulated/wall)
T = get_turf(src)
T.attackby(W,user)
qdel(src)
else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/simulated/wall)
T = get_turf(src)
T.attackby(W,user)
qdel(src)
//DRILLING
else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/simulated/wall)
T = get_turf(src)
T.attackby(W,user)
qdel(src)
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
var/turf/T = get_turf(src)
T.ChangeTurf(/turf/simulated/wall)
T = get_turf(src)
T.attackby(W,user)
qdel(src)
/*
* Uranium Falsewalls
*/
/obj/structure/falsewall/uranium
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
icon_state = ""
mineral = "uranium"
var/active = null
var/last_event = 0
/obj/structure/falsewall/uranium/attackby(obj/item/weapon/W as obj, mob/user as mob)
radiate()
..()
/obj/structure/falsewall/uranium/attack_hand(mob/user as mob)
radiate()
..()
/obj/structure/falsewall/uranium/proc/radiate()
if(!active)
if(world.time > last_event+15)
active = 1
for(var/mob/living/L in range(3,src))
L.apply_effect(12,IRRADIATE,0)
for(var/turf/simulated/wall/mineral/uranium/T in range(3,src))
T.radiate()
last_event = world.time
active = null
return
return
/*
* Other misc falsewall types
*/
/obj/structure/falsewall/gold
name = "gold wall"
desc = "A wall with gold plating. Swag!"
icon_state = ""
mineral = "gold"
/obj/structure/falsewall/silver
name = "silver wall"
desc = "A wall with silver plating. Shiny."
icon_state = ""
mineral = "silver"
/obj/structure/falsewall/diamond
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
icon_state = ""
mineral = "diamond"
/obj/structure/falsewall/phoron
name = "phoron wall"
desc = "A wall with phoron plating. This is definately a bad idea."
icon_state = ""
mineral = "phoron"
/obj/structure/falsewall/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating."
icon_state = ""
mineral = "sandstone"

View File

@@ -6,6 +6,13 @@
var/state = 0
var/health = 200
var/cover = 50 //how much cover the girder provides against projectiles.
var/material/reinf_material
/obj/structure/girder/displaced
icon_state = "displaced"
anchored = 0
health = 50
cover = 25
/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
if(!damage || !wallbreaker)
@@ -30,156 +37,165 @@
health -= damage
..()
if(health <= 0)
new /obj/item/stack/sheet/metal(get_turf(src))
qdel(src)
dismantle()
return
/obj/structure/girder/proc/reset_girder()
cover = initial(cover)
health = min(health,initial(health))
state = 0
icon_state = initial(icon_state)
if(reinf_material)
reinforce_girder()
/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench) && state == 0)
if(anchored && !istype(src,/obj/structure/girder/displaced))
if(anchored && !reinf_material)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now disassembling the girder"
user << "<span class='notice'>Now disassembling the girder...</span>"
if(do_after(user,40))
if(!src) return
user << "\blue You dissasembled the girder!"
user << "<span class='notice'>You dissasembled the girder!</span>"
dismantle()
else if(!anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now securing the girder"
user << "<span class='notice'>Now securing the girder...</span>"
if(get_turf(user, 40))
user << "\blue You secured the girder!"
new/obj/structure/girder( src.loc )
qdel(src)
user << "<span class='notice'>You secured the girder!</span>"
reset_girder()
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue Now slicing apart the girder"
user << "<span class='notice'>Now slicing apart the girder...</span>"
if(do_after(user,30))
if(!src) return
user << "\blue You slice apart the girder!"
user << "<span class='notice'>You slice apart the girder!</span>"
dismantle()
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
user << "<span class='notice'>You drill through the girder!</span>"
dismantle()
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
user << "\blue Now unsecuring support struts"
user << "<span class='notice'>Now unsecuring support struts...</span>"
if(do_after(user,40))
if(!src) return
user << "\blue You unsecured the support struts!"
user << "<span class='notice'>You unsecured the support struts!</span>"
state = 1
else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
else if(istype(W, /obj/item/weapon/wirecutters) && state == 1)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
user << "\blue Now removing support struts"
user << "<span class='notice'>Now removing support struts...</span>"
if(do_after(user,40))
if(!src) return
user << "\blue You removed the support struts!"
new/obj/structure/girder( src.loc )
qdel(src)
user << "<span class='notice'>You removed the support struts!</span>"
reinf_material.place_dismantled_product(get_turf(src))
reinf_material = null
reset_girder()
else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored )
else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
user << "\blue Now dislodging the girder"
user << "<span class='notice'>Now dislodging the girder...</span>"
if(do_after(user, 40))
if(!src) return
user << "\blue You dislodged the girder!"
new/obj/structure/girder/displaced( src.loc )
qdel(src)
user << "<span class='notice'>You dislodged the girder!</span>"
icon_state = "displaced"
anchored = 0
health = 50
cover = 25
else if(istype(W, /obj/item/stack/sheet))
var/obj/item/stack/sheet/S = W
switch(S.type)
if(S.get_amount() < 2)
return ..()
if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg)
if(!anchored)
if(S.use(2))
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
new /obj/structure/falsewall (src.loc)
qdel(src)
else
if(S.get_amount() < 2) return ..()
user << "<span class='notice'>Now adding plating...</span>"
if (do_after(user,40))
if (S.use(2))
var/material/M = name_to_material[S.sheettype]
if(!istype(M))
return ..()
var/wall_fake
add_hiddenprint(usr)
if(M.integrity < 50)
user << "<span class='notice'>This material is too soft for use in wall construction.</span>"
return
user << "<span class='notice'>You begin adding the plating...</span>"
if(!do_after(user,40) || !S.use(2))
return
if(anchored)
user << "<span class='notice'>You added the plating!</span>"
else
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
wall_fake = 1
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall)
for(var/turf/simulated/wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
var/turf/simulated/wall/T = get_turf(src)
T.set_material(M, reinf_material)
if(wall_fake)
T.can_open = 1
T.add_hiddenprint(usr)
qdel(src)
return
if(/obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/plasteel/cyborg)
if(!anchored)
if(S.use(2))
user << "\blue You create a false wall! Push on it to open or close the passage."
new /obj/structure/falserwall (src.loc)
qdel(src)
else
if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
if(S.get_amount() < 1) return ..()
user << "<span class='notice'>Now finalising reinforced wall.</span>"
if(do_after(user, 50))
if (S.use(1))
user << "<span class='notice'>Wall fully reinforced!</span>"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall/r_wall)
for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
qdel(src)
return
else
if(S.get_amount() < 1) return ..()
user << "<span class='notice'>Now reinforcing girders...</span>"
if (do_after(user,60))
if(S.use(1))
user << "<span class='notice'>Girders reinforced!</span>"
new/obj/structure/girder/reinforced( src.loc )
qdel(src)
return
if(S.sheettype)
var/M = S.sheettype
// Ugly hack, will suffice for now. Need to fix it upstream as well, may rewrite mineral walls. ~Z
if(M in list("mhydrogen","osmium","tritium","platinum","iron"))
user << "You cannot plate the girder in that material."
return
if(!anchored)
if(S.amount < 2) return
S.use(2)
user << "\blue You create a false wall! Push on it to open or close the passage."
var/F = text2path("/obj/structure/falsewall/[M]")
new F (src.loc)
qdel(src)
else
if(S.amount < 2) return ..()
user << "\blue Now adding plating..."
if (do_after(user,40))
if(!src || !S || S.amount < 2) return
S.use(2)
user << "\blue You added the plating!"
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]"))
for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
if(X) X.add_hiddenprint(usr)
qdel(src)
return
add_hiddenprint(usr)
else if(istype(W, /obj/item/pipe))
var/obj/item/pipe/P = W
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
user.drop_item()
P.loc = src.loc
user << "\blue You fit the pipe into the [src]!"
user << "<span class='notice'>You fit the pipe into the [src]!"
else
..()
/obj/structure/girder/proc/reinforce_girder()
cover = reinf_material.hardness
health = 500
state = 2
icon_state = "reinforced"
/obj/structure/girder/verb/reinforce_with_material()
set name = "Reinforce girder"
set desc = "Reinforce a girder with metal."
set src in view(1)
var/mob/living/user = usr
if(!istype(user) || !(user.l_hand || user.r_hand))
return
if(reinf_material)
user << "\The [src] is already reinforced."
return
var/obj/item/stack/sheet/S = user.l_hand
if(!istype(S))
S = user.r_hand
if(!istype(S))
user << "You cannot plate \the [src] with that."
return
if(S.get_amount() < 2)
user << "There is not enough material here to reinforce the girder."
return
var/material/M = name_to_material[S.sheettype]
if(!istype(M) || M.integrity < 50)
user << "You cannot reinforce \the [src] with that; it is too soft."
return
user << "<span class='notice'>Now reinforcing...</span>"
if (!do_after(user,40) || !S.use(2))
return
user << "<span class='notice'>You added reinforcement!</span>"
reinf_material = M
reinforce_girder()
/obj/structure/girder/proc/dismantle()
new /obj/item/stack/sheet/metal(get_turf(src))
qdel(src)
@@ -203,101 +219,40 @@
return
if(2.0)
if (prob(30))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
dismantle()
return
if(3.0)
if (prob(5))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
dismantle()
return
else
return
/obj/structure/girder/displaced
icon_state = "displaced"
anchored = 0
health = 50
cover = 25
/obj/structure/girder/reinforced
icon_state = "reinforced"
state = 2
health = 500
cover = 80
/obj/structure/cultgirder
/obj/structure/girder/cult
icon= 'icons/obj/cult.dmi'
icon_state= "cultgirder"
anchored = 1
density = 1
layer = 2
var/health = 250
var/cover = 70
health = 250
cover = 70
/obj/structure/cultgirder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
if(!damage || !wallbreaker)
return 0
visible_message("<span class='danger'>[user] [attack_message] the [src]!</span>")
dismantle()
return 1
/obj/structure/cultgirder/proc/dismantle()
/obj/structure/girder/cult/dismantle()
new /obj/effect/decal/remains/human(get_turf(src))
qdel(src)
/obj/structure/cultgirder/attackby(obj/item/W as obj, mob/user as mob)
/obj/structure/girder/cult/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
user << "\blue Now disassembling the girder"
user << "<span class='notice'>Now disassembling the girder...</span>"
if(do_after(user,40))
user << "\blue You dissasembled the girder!"
user << "<span class='notice'>You dissasembled the girder!</span>"
dismantle()
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "\blue Now slicing apart the girder"
user << "<span class='notice'>Now slicing apart the girder..."
if(do_after(user,30))
user << "\blue You slice apart the girder!"
user << "<span class='notice'>You slice apart the girder!</span>"
dismantle()
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "\blue You drill through the girder!"
user << "<span class='notice'>You drill through the girder!</span>"
new /obj/effect/decal/remains/human(get_turf(src))
dismantle()
/obj/structure/cultgirder/blob_act()
if(prob(40))
dismantle()
/obj/structure/cultgirder/bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets?????
//Girders only provide partial cover. There's a chance that the projectiles will just pass through. (unless you are trying to shoot the girder)
if(Proj.original != src && !prob(cover))
return -1 //pass through
//Tasers and the like should not damage cultgirders.
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
return
health -= Proj.damage
..()
if(health <= 0)
dismantle()
return
/obj/structure/cultgirder/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if (prob(30))
dismantle()
return
if(3.0)
if (prob(5))
dismantle()
return
else
return

View File

@@ -10,7 +10,7 @@
icon = 'icons/obj/doors/mineral_doors.dmi'
icon_state = "metal"
var/mineralType = "metal"
var/mineralType = DEFAULT_WALL_MATERIAL
var/state = 0 //closed, 1 == open
var/isSwitchingStates = 0
var/hardness = 1
@@ -119,24 +119,10 @@
Dismantle(1)
proc/Dismantle(devastated = 0)
if(!devastated)
if (mineralType == "metal")
var/ore = /obj/item/stack/sheet/metal
for(var/i = 1, i <= oreAmount, i++)
new ore(get_turf(src))
else
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 1, i <= oreAmount, i++)
new ore(get_turf(src))
else
if (mineralType == "metal")
var/ore = /obj/item/stack/sheet/metal
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
else
var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
for(var/i = 3, i <= oreAmount, i++)
new ore(get_turf(src))
var/material/M = name_to_material[mineralType]
if(istype(M))
for(var/i = (devastated? 1 : 3), i <= oreAmount, i++)
new M.stack_type(get_turf(src))
qdel(src)
ex_act(severity = 1)
@@ -155,7 +141,7 @@
return
/obj/structure/mineral_door/iron
mineralType = "metal"
mineralType = "iron"
hardness = 3
/obj/structure/mineral_door/silver

View File

@@ -1,141 +0,0 @@
//Separate dm because it relates to two types of atoms + ease of removal in case it's needed.
//Also assemblies.dm for falsewall checking for this when used.
//I should really make the shuttle wall check run every time it's moved, but centcom uses unsimulated floors so !effort
/atom/proc/relativewall() //atom because it should be useable both for walls and false walls
if(istype(src,/turf/simulated/floor/vault)||istype(src,/turf/simulated/wall/vault)) //HACK!!!
return
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
if(!istype(src,/turf/simulated/shuttle/wall)) //or else we'd have wacky shuttle merging with walls action
for(var/turf/simulated/wall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
junction |= get_dir(src,W)
for(var/obj/structure/falsewall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
junction |= get_dir(src,W)
for(var/obj/structure/falserwall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
junction |= get_dir(src,W)
/* Commenting this out for now until we figure out what to do with shuttle smooth walls, if anything.
As they are now, they sort of work screwy and may need further coding. Or just be scrapped.*/
/*else
for(var/turf/simulated/shuttle/wall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
junction |= get_dir(src,W)
for(var/obj/machinery/shuttle/W in orange(src,1)) //stuff like engine and propulsion should merge with walls
if(abs(src.x-W.x)-abs(src.y-W.y))
junction |= get_dir(src,W)
for(var/obj/machinery/door/W in orange(src,1)) //doors should not result in diagonal walls, it just looks ugly. checking if area is shuttle so it won't merge with the station
if((abs(src.x-W.x)-abs(src.y-W.y)) && (istype(W.loc.loc,/area/shuttle) || istype(W.loc.loc,/area/supply)))
junction |= get_dir(src,W)
for(var/obj/structure/grille/W in orange(src,1)) //same for grilles. checking if area is shuttle so it won't merge with the station
if((abs(src.x-W.x)-abs(src.y-W.y)) && (istype(W.loc.loc,/area/shuttle) || istype(W.loc.loc,/area/supply)))
junction |= get_dir(src,W)*/
if(istype(src,/turf/simulated/wall))
var/turf/simulated/wall/wall = src
wall.icon_state = "[wall.walltype][junction]"
else if (istype(src,/obj/structure/falserwall))
src.icon_state = "rwall[junction]"
else if (istype(src,/obj/structure/falsewall))
var/obj/structure/falsewall/fwall = src
fwall.icon_state = "[fwall.mineral][junction]"
/* else if(istype(src,/turf/simulated/shuttle/wall))
var/newicon = icon;
var/newiconstate = icon_state;
if(junction!=5 && junction!=6 && junction!=9 && junction!=10) //if it's not diagonal, all is well, no additional calculations needed
src.icon_state = "swall[junction]"
else //if it's diagonal, we need to figure out if we're using the floor diagonal or the space diagonal sprite
var/is_floor = 0
for(var/turf/unsimulated/floor/F in orange(src,1))
if(abs(src.x-F.x)-abs(src.y-F.y))
if((15-junction) & get_dir(src,F)) //if there's a floor in at least one of the empty space directions, return 1
is_floor = 1
newicon = F.icon
newiconstate = F.icon_state //we'll save these for later
for(var/turf/simulated/floor/F in orange(src,1))
if(abs(src.x-F.x)-abs(src.y-F.y))
if((15-junction) & get_dir(src,F)) //if there's a floor in at least one of the empty space directions, return 1
is_floor = 1
newicon = F.icon
newiconstate = F.icon_state //we'll save these for later
for(var/turf/simulated/shuttle/floor/F in orange(src,1))
if(abs(src.x-F.x)-abs(src.y-F.y))
if((15-junction) & get_dir(src,F)) //if there's a floor in at least one of the empty space directions, return 1
is_floor = 1
newicon = F.icon
newiconstate = F.icon_state //we'll save these for later
if(is_floor) //if is_floor = 1, we use the floor diagonal sprite
src.icon = newicon; //we'll set the floor's icon to the floor next to it and overlay the wall segment. shuttle floor sprites have priority
src.icon_state = newiconstate; //
src.overlays += icon('icons/turf/shuttle.dmi',"swall_f[junction]")
else //otherwise, the space one
src.icon_state = "swall_s[junction]"*/
return
/atom/proc/relativewall_neighbours()
for(var/turf/simulated/wall/W in range(src,1))
W.relativewall()
for(var/obj/structure/falsewall/W in range(src,1))
W.relativewall()
W.update_icon()//Refreshes the wall to make sure the icons don't desync
for(var/obj/structure/falserwall/W in range(src,1))
W.relativewall()
return
/turf/simulated/wall/New()
relativewall_neighbours()
..()
/*/turf/simulated/shuttle/wall/New()
spawn(20) //testing if this will make /obj/machinery/shuttle and /door count - It does, it stays.
if(src.icon_state in list("wall1", "wall", "diagonalWall", "wall_floor", "wall_space")) //so wizard den, syndie shuttle etc will remain black
for(var/turf/simulated/shuttle/wall/W in range(src,1))
W.relativewall()
..()*/
/turf/simulated/wall/Destroy()
spawn(10)
for(var/turf/simulated/wall/W in range(src,1))
W.relativewall()
for(var/obj/structure/falsewall/W in range(src,1))
W.relativewall()
for(var/direction in cardinal)
for(var/obj/effect/plant/shroom in get_step(src,direction))
if(!shroom.floor) //shrooms drop to the floor
shroom.floor = 1
shroom.update_icon()
shroom.pixel_x = 0
shroom.pixel_y = 0
..()
/turf/simulated/wall/relativewall()
if(istype(src,/turf/simulated/wall/vault)) //HACK!!!
return
var/junction = 0 //will be used to determine from which side the wall is connected to other walls
for(var/turf/simulated/wall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)//Only 'like' walls connect -Sieve
junction |= get_dir(src,W)
for(var/obj/structure/falsewall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)
junction |= get_dir(src,W)
for(var/obj/structure/falserwall/W in orange(src,1))
if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
if(src.mineral == W.mineral)
junction |= get_dir(src,W)
var/turf/simulated/wall/wall = src
wall.icon_state = "[wall.walltype][junction]"
return

View File

@@ -41,7 +41,7 @@ var/list/wood_icons = list("wood","wood-broken")
var/lava = 0
var/broken = 0
var/burnt = 0
var/mineral = "metal"
var/mineral = DEFAULT_WALL_MATERIAL
var/floor_type = /obj/item/stack/tile/plasteel
var/lightfloor_state // for light floors, this is the state of the tile. 0-7, 0x4 is on-bit - use the helper procs below

View File

@@ -0,0 +1,311 @@
//Interactions
/turf/simulated/wall/proc/toggle_open(var/mob/user)
if(can_open == WALL_OPENING)
return
if(density)
can_open = WALL_OPENING
set_wall_state("[material.icon_base]fwall_open")
//flick("[material.icon_base]fwall_opening", src)
sleep(15)
density = 0
set_light(0)
else
can_open = WALL_OPENING
//flick("[material.icon_base]fwall_closing", src)
set_wall_state("[material.icon_base]0")
density = 1
sleep(15)
set_light(1)
can_open = WALL_CAN_OPEN
update_icon()
/turf/simulated/wall/proc/fail_smash(var/mob/user)
user << "<span class='danger'>You smash against the wall!</span>"
take_damage(rand(25,75))
/turf/simulated/wall/proc/success_smash(var/mob/user)
user << "<span class='danger'>You smash through the wall!</span>"
spawn(1)
dismantle_wall(1)
/turf/simulated/wall/proc/try_touch(var/mob/user, var/rotting)
if(rotting)
if(reinf_material)
user << "<span class='danger'>\The [reinf_material.display_name] feels porous and crumbly.</span>"
else
user << "<span class='danger'>\The [material.display_name] crumbles under your touch!</span>"
dismantle_wall()
return 1
if(..()) return 1
if(!can_open)
user << "<span class='notice'>You push the wall, but nothing happens.</span>"
playsound(src, 'sound/weapons/Genhit.ogg', 25, 1)
else
toggle_open(user)
return 0
/turf/simulated/wall/attack_hand(var/mob/user)
radiate()
add_fingerprint(user)
var/rotting = (locate(/obj/effect/overlay/wallrot) in src)
if (HULK in user.mutations)
if (rotting || !prob(material.hardness))
success_smash(user)
else
fail_smash(user)
return 1
try_touch(user, rotting)
/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/attack_message, var/wallbreaker)
radiate()
var/rotting = (locate(/obj/effect/overlay/wallrot) in src)
if(!damage || !wallbreaker)
try_touch(user, rotting)
return
if(rotting)
return success_smash(user)
if(reinf_material)
if((wallbreaker == 2) || (damage >= max(material.hardness,reinf_material.hardness)))
return success_smash(user)
else if(damage >= material.hardness)
return success_smash(user)
return fail_smash(user)
/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (!user.)
user << "<span class='warning'>You don't have the dexterity to do this!</span>"
return
//get the user's location
if(!istype(user.loc, /turf)) return //can't do this stuff whilst inside objects and such
if(W)
radiate()
if(is_hot(W))
ignite(is_hot(W))
if(locate(/obj/effect/overlay/wallrot) in src)
if(istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
user << "<span class='notice'>You burn away the fungi with \the [WT].</span>"
playsound(src, 'sound/items/Welder.ogg', 10, 1)
for(var/obj/effect/overlay/wallrot/WR in src)
qdel(WR)
return
else if(!is_sharp(W) && W.force >= 10 || W.force >= 20)
user << "<span class='notice'>\The [src] crumbles away under the force of your [W.name].</span>"
src.dismantle_wall(1)
return
//THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects
if(thermite)
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
thermitemelt(user)
return
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
thermitemelt(user)
return
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
var/obj/item/weapon/melee/energy/blade/EB = W
EB.spark_system.start()
user << "<span class='notice'>You slash \the [src] with \the [EB]; the thermite ignites!</span>"
playsound(src, "sparks", 50, 1)
playsound(src, 'sound/weapons/blade1.ogg', 50, 1)
thermitemelt(user)
return
var/turf/T = user.loc //get user's location for delay checks
if(damage && istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.isOn())
return
if(WT.remove_fuel(0,user))
user << "<span class='notice'>You start repairing the damage to [src].</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, max(5, damage / 5)) && WT && WT.isOn())
user << "<span class='notice'>You finish repairing the damage to [src].</span>"
take_damage(-damage)
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return
return
// Basic dismantling.
if(isnull(construction_stage) || !reinf_material)
var/cut_delay = 60 - material.cut_delay
var/dismantle_verb
var/dismantle_sound
if(istype(W,/obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.isOn())
return
if(!WT.remove_fuel(0,user))
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return
dismantle_verb = "cutting"
dismantle_sound = 'sound/items/Welder.ogg'
cut_delay *= 0.7
else if(istype(W,/obj/item/weapon/melee/energy/blade))
dismantle_sound = "sparks"
dismantle_verb = "slicing"
cut_delay *= 0.5
else if(istype(W,/obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/P = W
dismantle_verb = P.drill_verb
dismantle_sound = P.drill_sound
cut_delay -= P.digspeed
if(dismantle_verb)
user << "<span class='notice'>You begin [dismantle_verb] through the outer plating.</span>"
if(dismantle_sound)
playsound(src, dismantle_sound, 100, 1)
if(cut_delay<0)
cut_delay = 0
if(!do_after(user,cut_delay))
return
user << "<span class='notice'>You remove the outer plating.</span>"
dismantle_wall()
user.visible_message("<span class='warning'>The wall was torn open by [user]!</span>")
return
//Reinforced dismantling.
else
switch(construction_stage)
if(6)
if (istype(W, /obj/item/weapon/wirecutters))
playsound(src, 'sound/items/Wirecutter.ogg', 100, 1)
construction_stage = 5
new /obj/item/stack/rods( src )
user << "<span class='notice'>You cut the outer grille.</span>"
set_wall_state()
return
if(5)
if (istype(W, /obj/item/weapon/screwdriver))
user << "<span class='notice'>You begin removing the support lines.</span>"
playsound(src, 'sound/items/Screwdriver.ogg', 100, 1)
if(!do_after(user,40) || !istype(src, /turf/simulated/wall) || construction_stage != 5)
return
construction_stage = 4
set_wall_state()
user << "<span class='notice'>You remove the support lines.</span>"
return
else if( istype(W, /obj/item/stack/rods) )
var/obj/item/stack/O = W
if(O.get_amount()>0)
O.use(1)
construction_stage = 6
set_wall_state()
user << "<span class='notice'>You replace the outer grille.</span>"
return
if(4)
var/cut_cover
if(istype(W,/obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.isOn())
return
if(WT.remove_fuel(0,user))
cut_cover=1
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return
else if (istype(W, /obj/item/weapon/pickaxe/plasmacutter))
cut_cover = 1
if(cut_cover)
user << "<span class='notice'>You begin slicing through the metal cover.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(!do_after(user, 60) || !istype(src, /turf/simulated/wall) || construction_stage != 4)
return
construction_stage = 3
set_wall_state()
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
return
if(3)
if (istype(W, /obj/item/weapon/crowbar))
user << "<span class='notice'>You struggle to pry off the cover.</span>"
playsound(src, 'sound/items/Crowbar.ogg', 100, 1)
if(!do_after(user,100) || !istype(src, /turf/simulated/wall) || construction_stage != 3)
return
construction_stage = 2
set_wall_state()
user << "<span class='notice'>You pry off the cover.</span>"
return
if(2)
if (istype(W, /obj/item/weapon/wrench))
user << "<span class='notice'>You start loosening the anchoring bolts which secure the support rods to their frame.</span>"
playsound(src, 'sound/items/Ratchet.ogg', 100, 1)
if(!do_after(user,40) || !istype(src, /turf/simulated/wall) || construction_stage != 2)
return
construction_stage = 1
set_wall_state()
user << "<span class='notice'>You remove the bolts anchoring the support rods.</span>"
return
if(1)
var/cut_cover
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
cut_cover=1
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
cut_cover = 1
if(cut_cover)
user << "<span class='notice'>You begin slicing through the support rods.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(!do_after(user,70) || !istype(src, /turf/simulated/wall) || construction_stage != 1)
return
construction_stage = 0
set_wall_state()
new /obj/item/stack/rods(src)
user << "<span class='notice'>The support rods drop out as you cut them loose from the frame.</span>"
return
if(0)
if(istype(W, /obj/item/weapon/crowbar))
user << "<span class='notice'>You struggle to pry off the outer sheath.</span>"
playsound(src, 'sound/items/Crowbar.ogg', 100, 1)
sleep(100)
if(!istype(src, /turf/simulated/wall) || !user || !W || !T ) return
if(user.loc == T && user.get_active_hand() == W )
user << "<span class='notice'>You pry off the outer sheath.</span>"
dismantle_wall()
return
if(istype(W,/obj/item/frame))
var/obj/item/frame/F = W
F.try_build(src)
return
else if(!istype(W,/obj/item/weapon/rcd) && !istype(W, /obj/item/weapon/reagent_containers))
return attack_hand(user)

View File

@@ -0,0 +1,130 @@
/turf/simulated/wall/proc/update_material()
if(!material)
return
if(reinf_material)
construction_stage = 6
else
construction_stage = null
if(!material)
material = name_to_material[DEFAULT_WALL_MATERIAL]
if(material)
explosion_resistance = material.explosion_resistance
if(reinf_material && reinf_material.explosion_resistance > explosion_resistance)
explosion_resistance = reinf_material.explosion_resistance
if(reinf_material)
name = "reinforced [material.display_name] wall"
desc = "It seems to be a section of hull reinforced with [reinf_material.display_name] and plated with [material.display_name]."
else
name = "[material.display_name] wall"
desc = "It seems to be a section of hull plated with [material.display_name]."
set_wall_state("[material.icon_base]0")
if(material.opacity > 0.5 && !opacity)
set_light(1)
else if(material.opacity < 0.5 && opacity)
set_light(0)
update_icon()
check_relatives()
/turf/simulated/wall/proc/set_wall_state(var/new_state)
if(!material)
return
if(new_state)
last_state = new_state
else if(last_state)
new_state = last_state
else
return
overlays.Cut()
if(!wall_cache["[new_state]-[material.icon_colour]"])
var/image/I = image(icon='icons/turf/wall_masks.dmi',icon_state="[new_state]")
I.color = material.icon_colour
wall_cache["[new_state]-[material.icon_colour]"] = I
overlays |= wall_cache["[new_state]-[material.icon_colour]"]
if(reinf_material)
var/cache_key = "[material.icon_reinf]-[reinf_material.icon_colour]"
if(!isnull(construction_stage) && construction_stage<6)
cache_key = "reinf_construct-[reinf_material.icon_colour]-[construction_stage]"
if(!wall_cache[cache_key])
var/image/I
if(!isnull(construction_stage) && construction_stage<6)
I = image(icon='icons/turf/wall_masks.dmi',icon_state="reinf_construct-[construction_stage]")
else
I = image(icon='icons/turf/wall_masks.dmi',icon_state="[material.icon_reinf]")
I.color = reinf_material.icon_colour
wall_cache[cache_key] = I
overlays |= wall_cache[cache_key]
/turf/simulated/wall/proc/set_material(var/material/newmaterial, var/material/newrmaterial)
material = newmaterial
reinf_material = newrmaterial
check_relatives()
check_relatives(1)
/turf/simulated/wall/proc/update_icon()
if(!material)
return
if(!damage_overlays[1]) //list hasn't been populated
generate_overlays()
if(density)
check_relatives(1)
else
set_wall_state("[material.icon_base]fwall_open")
var/overlay = round(damage / material.integrity * damage_overlays.len) + 1
if(overlay > damage_overlays.len)
overlay = damage_overlays.len
if(density)
if(damage_overlay && overlay == damage_overlay) //No need to update.
return
overlays += damage_overlays[overlay]
damage_overlay = overlay
return
/turf/simulated/wall/proc/generate_overlays()
var/alpha_inc = 256 / damage_overlays.len
for(var/i = 1; i <= damage_overlays.len; i++)
var/image/img = image(icon = 'icons/turf/walls.dmi', icon_state = "overlay_damage")
img.blend_mode = BLEND_MULTIPLY
img.alpha = (i * alpha_inc) - 1
damage_overlays[i] = img
//Smoothwall code. update_self for relativewall(), not for relativewall_neighbors()
/turf/simulated/wall/proc/check_relatives(var/update_self)
if(!material)
return
var/junction
if(update_self)
junction = 0
for(var/checkdir in cardinal)
var/turf/simulated/wall/T = get_step(src, checkdir)
if(!istype(T) || !T.material)
continue
if(T.material && can_join_with(T))
if(update_self)
junction |= get_dir(src,T) //Not too sure why, but using checkdir just breaks walls.
else
T.check_relatives(1)
if(!isnull(junction))
set_wall_state("[material.icon_base][junction]")
return
/turf/simulated/wall/proc/can_join_with(var/turf/simulated/wall/W)
if(material && W.material && material.name == W.material.name)
return 1
return 0

View File

@@ -0,0 +1,43 @@
/turf/simulated/wall/r_wall
icon_state = "rgeneric"
/turf/simulated/wall/r_wall/New(var/newloc)
..(newloc, DEFAULT_WALL_MATERIAL,"plasteel") //3strong
/turf/simulated/wall/cult
icon_state = "cult"
/turf/simulated/wall/cult/New(var/newloc)
..(newloc,"cult","cult2")
/turf/unsimulated/wall/cult
name = "cult wall"
desc = "Hideous images dance beneath the surface."
icon = 'icons/turf/wall_masks.dmi'
icon_state = "cult"
/turf/simulated/wall/iron/New(var/newloc)
..(newloc,"iron")
/turf/simulated/wall/uranium/New(var/newloc)
..(newloc,"uranium")
/turf/simulated/wall/diamond/New(var/newloc)
..(newloc,"diamond")
/turf/simulated/wall/gold/New(var/newloc)
..(newloc,"gold")
/turf/simulated/wall/silver/New(var/newloc)
..(newloc,"silver")
/turf/simulated/wall/phoron/New(var/newloc)
..(newloc,"phoron")
/turf/simulated/wall/sandstone/New(var/newloc)
..(newloc,"sandstone")
/turf/simulated/wall/ironphoron/New(var/newloc)
..(newloc,"iron","phoron")
/turf/simulated/wall/golddiamond/New(var/newloc)
..(newloc,"gold","diamond")
/turf/simulated/wall/silvergold/New(var/newloc)
..(newloc,"silver","gold")
/turf/simulated/wall/sandstonediamond/New(var/newloc)
..(newloc,"sandstone","diamond")
/turf/simulated/wall/cult/New(var/newloc)
..(newloc,"cult","cult2")

View File

@@ -1,29 +1,47 @@
var/list/global/wall_cache = list()
/turf/simulated/wall
name = "wall"
desc = "A huge chunk of metal used to seperate rooms."
icon = 'icons/turf/walls.dmi'
var/mineral = "metal"
var/rotting = 0
var/damage = 0
var/damage_cap = 150 //Wall will break down to girders if damage reaches this point
var/damage_overlay
var/global/damage_overlays[8]
var/max_temperature = 1800 //K, walls will take damage if they're next to a fire hotter than this
icon = 'icons/turf/wall_masks.dmi'
icon_state = "generic"
opacity = 1
density = 1
blocks_air = 1
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall
var/walltype = "metal"
var/damage = 0
var/damage_overlay
var/global/damage_overlays[8]
var/active
var/last_event
var/can_open = 0
var/material/material
var/material/reinf_material
var/last_state
var/construction_stage
/turf/simulated/wall/New(var/newloc, var/materialtype, var/rmaterialtype)
..(newloc)
icon_state = "blank"
if(!name_to_material)
populate_material_list()
if(!materialtype)
materialtype = DEFAULT_WALL_MATERIAL
material = name_to_material[materialtype]
if(!isnull(rmaterialtype))
reinf_material = name_to_material[rmaterialtype]
update_material()
/turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj)
radiate()
if(istype(Proj,/obj/item/projectile/beam))
ignite(2500)
else if(istype(Proj,/obj/item/projectile/ion))
ignite(500)
// Tasers and stuff? No thanks. Also no clone or tox damage crap.
if(!(Proj.damage_type == BRUTE || Proj.damage_type == BURN))
return
@@ -45,25 +63,29 @@
take_damage(tforce)
/turf/simulated/wall/Destroy()
for(var/obj/effect/E in src) if(E.name == "Wallrot") qdel(E)
..()
/turf/simulated/wall/proc/clear_plants()
for(var/obj/effect/overlay/wallrot/WR in src)
qdel(WR)
for(var/obj/effect/plant/plant in range(src, 1))
if(!plant.floor) //shrooms drop to the floor
plant.floor = 1
plant.update_icon()
plant.pixel_x = 0
plant.pixel_y = 0
plant.update_neighbors()
/turf/simulated/wall/ChangeTurf(var/newtype)
for(var/obj/effect/E in src) if(E.name == "Wallrot") qdel(E)
for(var/obj/effect/plant/plant in range(1))
plant.update_neighbors()
clear_plants()
..(newtype)
//Appearance
/turf/simulated/wall/examine(mob/user)
. = ..(user)
if(!damage)
user << "<span class='notice'>It looks fully intact.</span>"
else
var/dam = damage / damage_cap
var/dam = damage / material.integrity
if(dam <= 0.3)
user << "<span class='warning'>It looks slightly damaged.</span>"
else if(dam <= 0.6)
@@ -71,43 +93,14 @@
else
user << "<span class='danger'>It looks heavily damaged.</span>"
if(rotting)
if(locate(/obj/effect/overlay/wallrot) in src)
user << "<span class='warning'>There is fungus growing on [src].</span>"
/turf/simulated/wall/proc/update_icon()
if(!damage_overlays[1]) //list hasn't been populated
generate_overlays()
if(!damage)
overlays.Cut()
return
var/overlay = round(damage / damage_cap * damage_overlays.len) + 1
if(overlay > damage_overlays.len)
overlay = damage_overlays.len
if(damage_overlay && overlay == damage_overlay) //No need to update.
return
overlays.Cut()
overlays += damage_overlays[overlay]
damage_overlay = overlay
return
/turf/simulated/wall/proc/generate_overlays()
var/alpha_inc = 256 / damage_overlays.len
for(var/i = 1; i <= damage_overlays.len; i++)
var/image/img = image(icon = 'icons/turf/walls.dmi', icon_state = "overlay_damage")
img.blend_mode = BLEND_MULTIPLY
img.alpha = (i * alpha_inc) - 1
damage_overlays[i] = img
//Damage
/turf/simulated/wall/melt()
if(mineral == "diamond")
if(!can_melt())
return
src.ChangeTurf(/turf/simulated/floor/plating)
@@ -127,8 +120,11 @@
return
/turf/simulated/wall/proc/update_damage()
var/cap = damage_cap
if(rotting)
var/cap = material.integrity
if(reinf_material)
cap += reinf_material.integrity
if(locate(/obj/effect/overlay/wallrot) in src)
cap = cap / 10
if(damage >= cap)
@@ -138,52 +134,25 @@
return
/turf/simulated/wall/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
ignite(exposed_temperature)
/turf/simulated/wall/adjacent_fire_act(turf/simulated/floor/adj_turf, datum/gas_mixture/adj_air, adj_temp, adj_volume)
if(adj_temp > max_temperature)
take_damage(log(RAND_F(0.9, 1.1) * (adj_temp - max_temperature)))
ignite(adj_temp)
if(adj_temp > material.melting_point)
take_damage(log(RAND_F(0.9, 1.1) * (adj_temp - material.melting_point)))
return ..()
/turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0)
if(istype(src,/turf/simulated/wall/r_wall))
if(!devastated)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
new /obj/structure/girder/reinforced(src)
new /obj/item/stack/sheet/plasteel( src )
else
new /obj/item/stack/sheet/metal( src )
new /obj/item/stack/sheet/metal( src )
new /obj/item/stack/sheet/plasteel( src )
else if(istype(src,/turf/simulated/wall/cult))
if(!devastated)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
new /obj/effect/decal/cleanable/blood(src)
new /obj/structure/cultgirder(src)
else
new /obj/effect/decal/cleanable/blood(src)
new /obj/effect/decal/remains/human(src)
else
if(!devastated)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
new /obj/structure/girder(src)
if (mineral == "metal")
new /obj/item/stack/sheet/metal( src )
new /obj/item/stack/sheet/metal( src )
if(reinf_material)
reinf_material.place_dismantled_girder(src, reinf_material)
reinf_material.place_dismantled_product(src,devastated)
else
var/M = text2path("/obj/item/stack/sheet/mineral/[mineral]")
new M( src )
new M( src )
else
if (mineral == "metal")
new /obj/item/stack/sheet/metal( src )
new /obj/item/stack/sheet/metal( src )
new /obj/item/stack/sheet/metal( src )
else
var/M = text2path("/obj/item/stack/sheet/mineral/[mineral]")
new M( src )
new M( src )
new /obj/item/stack/sheet/metal( src )
material.place_dismantled_girder(src)
material.place_dismantled_product(src,devastated)
for(var/obj/O in src.contents) //Eject contents!
if(istype(O,/obj/structure/sign/poster))
@@ -215,24 +184,19 @@
// Wall-rot effect, a nasty fungus that destroys walls.
/turf/simulated/wall/proc/rot()
if(!rotting)
rotting = 1
if(locate(/obj/effect/overlay/wallrot) in src)
return
var/number_rots = rand(2,3)
for(var/i=0, i<number_rots, i++)
var/obj/effect/overlay/O = new/obj/effect/overlay( src )
O.name = "Wallrot"
O.desc = "Ick..."
O.icon = 'icons/effects/wallrot.dmi'
O.pixel_x += rand(-10, 10)
O.pixel_y += rand(-10, 10)
O.anchored = 1
O.density = 1
O.layer = 5
O.mouse_opacity = 0
new/obj/effect/overlay/wallrot(src)
/turf/simulated/wall/proc/can_melt()
if(material.unmeltable)
return 0
return 1
/turf/simulated/wall/proc/thermitemelt(mob/user as mob)
if(mineral == "diamond")
if(!can_melt())
return
var/obj/effect/overlay/O = new/obj/effect/overlay( src )
O.name = "Thermite"
@@ -251,11 +215,13 @@
user << "<span class='warning'>The thermite starts melting through the wall.</span>"
spawn(100)
if(O) qdel(O)
if(O)
qdel(O)
// F.sd_LumReset() //TODO: ~Carn
return
/turf/simulated/wall/meteorhit(obj/M as obj)
var/rotting = (locate(/obj/effect/overlay/wallrot) in src)
if (prob(15) && !rotting)
dismantle_wall()
else if(prob(70) && !rotting)
@@ -264,232 +230,51 @@
ReplaceWithLattice()
return 0
/turf/simulated/wall
var/hulk_destroy_prob = 40
var/hulk_take_damage = 1
var/rotting_destroy_touch = 1
var/rotting_touch_message = "\blue The wall crumbles under your touch."
//Interactions
/turf/simulated/wall/attack_hand(mob/user as mob)
if (HULK in user.mutations)
if (prob(hulk_destroy_prob) || rotting)
usr << text("\blue You smash through the wall.")
usr.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
dismantle_wall(1)
return 1
else
usr << text("\blue You punch the wall.")
if(hulk_take_damage)
take_damage(rand(25, 75))
return 1
if(rotting)
user << rotting_touch_message
if(rotting_destroy_touch)
dismantle_wall()
return 1
if(..()) return 1
user << "\blue You push the wall but nothing happens!"
playsound(src, 'sound/weapons/Genhit.ogg', 25, 1)
src.add_fingerprint(user)
return 0
/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/attack_message, var/wallbreaker)
if(!damage || !wallbreaker)
user << "You push the wall but nothing happens."
/turf/simulated/wall/proc/radiate()
var/material/M = name_to_material[material]
if(!istype(M) || !M.radioactivity)
return
if(rotting || prob(40))
user << "You smash through the wall!"
spawn(1) dismantle_wall(1)
else
user << "You smash against the wall."
take_damage(rand(25,75))
return 1
/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
user << "<span class='warning'>You don't have the dexterity to do this!</span>"
return
//get the user's location
if( !istype(user.loc, /turf) ) return //can't do this stuff whilst inside objects and such
if(rotting)
if(istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
user << "<span class='notice'>You burn away the fungi with \the [WT].</span>"
playsound(src, 'sound/items/Welder.ogg', 10, 1)
for(var/obj/effect/E in src) if(E.name == "Wallrot")
qdel(E)
rotting = 0
return
else if(!is_sharp(W) && W.force >= 10 || W.force >= 20)
user << "<span class='notice'>\The [src] crumbles away under the force of your [W.name].</span>"
src.dismantle_wall(1)
return
//THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects
if( thermite )
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
thermitemelt(user)
return
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
thermitemelt(user)
return
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
var/obj/item/weapon/melee/energy/blade/EB = W
EB.spark_system.start()
user << "<span class='notice'>You slash \the [src] with \the [EB]; the thermite ignites!</span>"
playsound(src, "sparks", 50, 1)
playsound(src, 'sound/weapons/blade1.ogg', 50, 1)
thermitemelt(user)
return
var/turf/T = user.loc //get user's location for delay checks
//DECONSTRUCTION
if( istype(W, /obj/item/weapon/weldingtool) )
var/response = "Dismantle"
if(damage)
response = alert(user, "Would you like to repair or dismantle [src]?", "[src]", "Repair", "Dismantle")
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
if(response == "Repair")
user << "<span class='notice'>You start repairing the damage to [src].</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, max(5, damage / 5)) && WT && WT.isOn())
user << "<span class='notice'>You finish repairing the damage to [src].</span>"
take_damage(-damage)
else if(response == "Dismantle")
user << "<span class='notice'>You begin slicing through the outer plating.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(!do_after(user,100))
return
if(WT.isOn())
user << "<span class='notice'>You remove the outer plating.</span>"
dismantle_wall()
for(var/mob/O in viewers(user, 5))
O.show_message("<span class='warning'>The wall was sliced apart by [user]!</span>", 1, "<span class='warning'>You hear metal being sliced apart.</span>", 2)
if(!active)
if(world.time > last_event+15)
active = 1
for(var/mob/living/L in range(3,src))
L.apply_effect(M.radioactivity,IRRADIATE,0)
for(var/turf/simulated/wall/T in range(3,src))
T.radiate()
last_event = world.time
active = null
return
return
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
/turf/simulated/wall/proc/burn(temperature)
spawn(2)
new /obj/structure/girder(src)
src.ChangeTurf(/turf/simulated/floor)
for(var/turf/simulated/floor/target_tile in range(0,src))
if(material == "phoron") //ergh
target_tile.assume_gas("phoron", 20, 400+T0C)
spawn (0) target_tile.hotspot_expose(temperature, 400)
for(var/turf/simulated/wall/W in range(3,src))
W.ignite((temperature/4))
for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
D.ignite(temperature/4)
/turf/simulated/wall/proc/ignite(var/exposed_temperature)
var/material/M = name_to_material[material]
if(!istype(M) || !isnull(M.ignition_point))
return
else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
user << "<span class='notice'>You begin slicing through the outer plating.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
var/delay = 60
if(mineral == "diamond")
delay += 60
if(!do_after(user,delay))
if(exposed_temperature > M.ignition_point)//If the temperature of the object is over 300, then ignite
burn(exposed_temperature)
return
..()
user << "<span class='notice'>You remove the outer plating.</span>"
dismantle_wall()
for(var/mob/O in viewers(user, 5))
O.show_message("<span class='warning'>The wall was sliced apart by [user]!</span>", 1, "<span class='warning'>You hear metal being sliced apart.</span>", 2)
return
/turf/simulated/wall/Bumped(AM as mob|obj)
radiate()
..()
//DRILLING
else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "<span class='notice'>You begin to drill though the wall.</span>"
var/delay = 60
if(mineral == "diamond")
delay += 60
if(!do_after(user,delay))
return
user << "<span class='notice'>Your drill tears though the last of the reinforced plating.</span>"
dismantle_wall()
for(var/mob/O in viewers(user, 5))
O.show_message("<span class='warning'>The wall was drilled through by [user]!</span>", 1, "<span class='warning'>You hear the grinding of metal.</span>", 2)
return
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
var/obj/item/weapon/melee/energy/blade/EB = W
EB.spark_system.start()
user << "<span class='notice'>You stab \the [EB] into the wall and begin to slice it apart.</span>"
playsound(src, "sparks", 50, 1)
sleep(70)
if(mineral == "diamond")
sleep(70)
if( !istype(src, /turf/simulated/wall) || !user || !EB || !T ) return
if( user.loc == T && user.get_active_hand() == W )
EB.spark_system.start()
playsound(src, "sparks", 50, 1)
playsound(src, 'sound/weapons/blade1.ogg', 50, 1)
dismantle_wall(1)
for(var/mob/O in viewers(user, 5))
O.show_message("<span class='warning'>The wall was sliced apart by [user]!</span>", 1, "<span class='warning'>You hear metal being sliced apart and sparks flying.</span>", 2)
return
else if(istype(W,/obj/item/apc_frame))
var/obj/item/apc_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/alarm_frame))
var/obj/item/alarm_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/firealarm_frame))
var/obj/item/firealarm_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/light_fixture_frame))
var/obj/item/light_fixture_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/light_fixture_frame/small))
var/obj/item/light_fixture_frame/small/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/rust_fuel_compressor_frame))
var/obj/item/rust_fuel_compressor_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/rust_fuel_assembly_port_frame))
var/obj/item/rust_fuel_assembly_port_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/weapon/rcd)) //I bitterly resent having to write this. ~Z
return
else if(istype(W, /obj/item/weapon/reagent_containers))
return // They tend to have meaningful afterattack - let them apply it without destroying a rotting wall
else
return attack_hand(user)
return
/turf/simulated/wall/Destroy()
clear_plants()
check_relatives()
..()

View File

@@ -1,130 +0,0 @@
/turf/simulated/wall/mineral
name = "mineral wall"
desc = "This shouldn't exist"
icon_state = ""
var/last_event = 0
var/active = null
/turf/simulated/wall/mineral/gold
name = "gold wall"
desc = "A wall with gold plating. Swag!"
icon_state = "gold0"
walltype = "gold"
mineral = "gold"
//var/electro = 1
//var/shocked = null
/turf/simulated/wall/mineral/silver
name = "silver wall"
desc = "A wall with silver plating. Shiny!"
icon_state = "silver0"
walltype = "silver"
mineral = "silver"
//var/electro = 0.75
//var/shocked = null
/turf/simulated/wall/mineral/diamond
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
icon_state = "diamond0"
walltype = "diamond"
mineral = "diamond"
/turf/simulated/wall/mineral/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating."
icon_state = "sandstone0"
walltype = "sandstone"
mineral = "sandstone"
/turf/simulated/wall/mineral/uranium
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
icon_state = "uranium0"
walltype = "uranium"
mineral = "uranium"
/turf/simulated/wall/mineral/uranium/proc/radiate()
if(!active)
if(world.time > last_event+15)
active = 1
for(var/mob/living/L in range(3,src))
L.apply_effect(12,IRRADIATE,0)
for(var/turf/simulated/wall/mineral/uranium/T in range(3,src))
T.radiate()
last_event = world.time
active = null
return
return
/turf/simulated/wall/mineral/uranium/attack_hand(mob/user as mob)
radiate()
..()
/turf/simulated/wall/mineral/uranium/attackby(obj/item/weapon/W as obj, mob/user as mob)
radiate()
..()
/turf/simulated/wall/mineral/uranium/Bumped(AM as mob|obj)
radiate()
..()
/turf/simulated/wall/mineral/phoron
name = "phoron wall"
desc = "A wall with phoron plating. This is definately a bad idea."
icon_state = "phoron0"
walltype = "phoron"
mineral = "phoron"
/turf/simulated/wall/mineral/phoron/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
ignite(is_hot(W))
return
..()
/turf/simulated/wall/mineral/phoron/proc/PhoronBurn(temperature)
spawn(2)
new /obj/structure/girder(src)
src.ChangeTurf(/turf/simulated/floor)
for(var/turf/simulated/floor/target_tile in range(0,src))
target_tile.assume_gas("phoron", 20, 400+T0C)
spawn (0) target_tile.hotspot_expose(temperature, 400)
for(var/obj/structure/falsewall/phoron/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve
var/turf/T = get_turf(F)
T.ChangeTurf(/turf/simulated/wall/mineral/phoron/)
qdel(F)
for(var/turf/simulated/wall/mineral/phoron/W in range(3,src))
W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame
for(var/obj/machinery/door/airlock/phoron/D in range(3,src))
D.ignite(temperature/4)
/turf/simulated/wall/mineral/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :(
if(exposed_temperature > 300)
PhoronBurn(exposed_temperature)
/turf/simulated/wall/mineral/phoron/proc/ignite(exposed_temperature)
if(exposed_temperature > 300)
PhoronBurn(exposed_temperature)
/turf/simulated/wall/mineral/phoron/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj,/obj/item/projectile/beam))
PhoronBurn(2500)
else if(istype(Proj,/obj/item/projectile/ion))
PhoronBurn(500)
..()
/*
/turf/simulated/wall/mineral/proc/shock()
if (electrocute_mob(user, C, src))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
s.start()
return 1
else
return 0
/turf/simulated/wall/mineral/proc/attackby(obj/item/weapon/W as obj, mob/user as mob)
if((mineral == "gold") || (mineral == "silver"))
if(shocked)
shock()
*/

View File

@@ -1,8 +0,0 @@
/turf/simulated/wall/cult
name = "wall"
desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick"
icon_state = "cult"
walltype = "cult"
/turf/unsimulated/wall/cult/cultify()
return

View File

@@ -1,307 +0,0 @@
/turf/simulated/wall/r_wall
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to seperate rooms."
icon_state = "r_wall"
opacity = 1
density = 1
damage_cap = 800
max_temperature = 6000
walltype = "rwall"
var/d_state = 0
/turf/simulated/wall/r_wall
hulk_destroy_prob = 10
hulk_take_damage = 0
rotting_destroy_touch = 0
rotting_touch_message = "\blue This wall feels rather unstable."
/turf/simulated/wall/r_wall/attack_generic(var/mob/user, var/damage, var/attack_message, var/wallbreaker)
if(!rotting && wallbreaker < 2)
user << "You push the wall but nothing happens."
return
return ..()
/turf/simulated/wall/r_wall/attackby(obj/item/W as obj, mob/user as mob)
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
user << "<span class='warning'>You don't have the dexterity to do this!</span>"
return
//get the user's location
if( !istype(user.loc, /turf) ) return //can't do this stuff whilst inside objects and such
if(rotting)
if(istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
user << "<span class='notice'>You burn away the fungi with \the [WT].</span>"
playsound(src, 'sound/items/Welder.ogg', 10, 1)
for(var/obj/effect/E in src) if(E.name == "Wallrot")
qdel(E)
rotting = 0
return
else if(!is_sharp(W) && W.force >= 10 || W.force >= 20)
user << "<span class='notice'>\The [src] crumbles away under the force of your [W.name].</span>"
src.dismantle_wall()
return
//THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects
if( thermite )
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
thermitemelt(user)
return
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
thermitemelt(user)
return
else if( istype(W, /obj/item/weapon/melee/energy/blade) )
var/obj/item/weapon/melee/energy/blade/EB = W
EB.spark_system.start()
user << "<span class='notice'>You slash \the [src] with \the [EB]; the thermite ignites!</span>"
playsound(src, "sparks", 50, 1)
playsound(src, 'sound/weapons/blade1.ogg', 50, 1)
thermitemelt(user)
return
else if(istype(W, /obj/item/weapon/melee/energy/blade))
user << "<span class='notice'>This wall is too thick to slice through. You will need to find a different path.</span>"
return
if(damage && istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
user << "<span class='notice'>You start repairing the damage to [src].</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, max(5, damage / 5)) && WT && WT.isOn())
user << "<span class='notice'>You finish repairing the damage to [src].</span>"
take_damage(-damage)
return
else
user << "<span class='warning'>You need more welding fuel to complete this task.</span>"
return
var/turf/T = user.loc //get user's location for delay checks
//DECONSTRUCTION
switch(d_state)
if(0)
if (istype(W, /obj/item/weapon/wirecutters))
playsound(src, 'sound/items/Wirecutter.ogg', 100, 1)
src.d_state = 1
src.icon_state = "r_wall-1"
PoolOrNew(/obj/item/stack/rods, src)
user << "<span class='notice'>You cut the outer grille.</span>"
return
if(1)
if (istype(W, /obj/item/weapon/screwdriver))
user << "<span class='notice'>You begin removing the support lines.</span>"
playsound(src, 'sound/items/Screwdriver.ogg', 100, 1)
sleep(40)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( d_state == 1 && user.loc == T && user.get_active_hand() == W )
src.d_state = 2
src.icon_state = "r_wall-2"
user << "<span class='notice'>You remove the support lines.</span>"
return
//REPAIRING (replacing the outer grille for cosmetic damage)
else if( istype(W, /obj/item/stack/rods) )
var/obj/item/stack/O = W
src.d_state = 0
src.icon_state = "r_wall"
relativewall_neighbours() //call smoothwall stuff
user << "<span class='notice'>You replace the outer grille.</span>"
if (O.amount > 1)
O.amount--
else
qdel(O)
return
if(2)
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
user << "<span class='notice'>You begin slicing through the metal cover.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
sleep(60)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return
if( d_state == 2 && user.loc == T && user.get_active_hand() == WT )
src.d_state = 3
src.icon_state = "r_wall-3"
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return
if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
user << "<span class='notice'>You begin slicing through the metal cover.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
sleep(40)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( d_state == 2 && user.loc == T && user.get_active_hand() == W )
src.d_state = 3
src.icon_state = "r_wall-3"
user << "<span class='notice'>You press firmly on the cover, dislodging it.</span>"
return
if(3)
if (istype(W, /obj/item/weapon/crowbar))
user << "<span class='notice'>You struggle to pry off the cover.</span>"
playsound(src, 'sound/items/Crowbar.ogg', 100, 1)
sleep(100)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( d_state == 3 && user.loc == T && user.get_active_hand() == W )
src.d_state = 4
src.icon_state = "r_wall-4"
user << "<span class='notice'>You pry off the cover.</span>"
return
if(4)
if (istype(W, /obj/item/weapon/wrench))
user << "<span class='notice'>You start loosening the anchoring bolts which secure the support rods to their frame.</span>"
playsound(src, 'sound/items/Ratchet.ogg', 100, 1)
sleep(40)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( d_state == 4 && user.loc == T && user.get_active_hand() == W )
src.d_state = 5
src.icon_state = "r_wall-5"
user << "<span class='notice'>You remove the bolts anchoring the support rods.</span>"
return
if(5)
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
user << "<span class='notice'>You begin slicing through the support rods.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
sleep(100)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !WT || !WT.isOn() || !T ) return
if( d_state == 5 && user.loc == T && user.get_active_hand() == WT )
src.d_state = 6
src.icon_state = "r_wall-6"
PoolOrNew(/obj/item/stack/rods, src)
user << "<span class='notice'>The support rods drop out as you cut them loose from the frame.</span>"
else
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return
if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
user << "<span class='notice'>You begin slicing through the support rods.</span>"
playsound(src, 'sound/items/Welder.ogg', 100, 1)
sleep(70)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( d_state == 5 && user.loc == T && user.get_active_hand() == W )
src.d_state = 6
src.icon_state = "r_wall-6"
PoolOrNew(/obj/item/stack/rods, src)
user << "<span class='notice'>The support rods drop out as you cut them loose from the frame.</span>"
return
if(6)
if( istype(W, /obj/item/weapon/crowbar) )
user << "<span class='notice'>You struggle to pry off the outer sheath.</span>"
playsound(src, 'sound/items/Crowbar.ogg', 100, 1)
sleep(100)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( user.loc == T && user.get_active_hand() == W )
user << "<span class='notice'>You pry off the outer sheath.</span>"
dismantle_wall()
return
//vv OK, we weren't performing a valid deconstruction step or igniting thermite,let's check the other possibilities vv
//DRILLING
if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "<span class='notice'>You begin to drill though the wall.</span>"
sleep(200)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T ) return
if( user.loc == T && user.get_active_hand() == W )
user << "<span class='notice'>Your drill tears though the last of the reinforced plating.</span>"
dismantle_wall()
//REPAIRING
else if( istype(W, /obj/item/stack/sheet/metal) && d_state )
var/obj/item/stack/sheet/metal/MS = W
user << "<span class='notice'>You begin patching-up the wall with \a [MS].</span>"
sleep( max(20*d_state,100) ) //time taken to repair is proportional to the damage! (max 10 seconds)
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !MS || !T ) return
if( user.loc == T && user.get_active_hand() == MS && d_state )
src.d_state = 0
src.icon_state = "r_wall"
relativewall_neighbours() //call smoothwall stuff
user << "<span class='notice'>You repair the last of the damage.</span>"
if (MS.amount > 1)
MS.amount--
else
qdel(MS)
//APC
else if( istype(W,/obj/item/apc_frame) )
var/obj/item/apc_frame/AH = W
AH.try_build(src)
else if( istype(W,/obj/item/alarm_frame) )
var/obj/item/alarm_frame/AH = W
AH.try_build(src)
else if(istype(W,/obj/item/firealarm_frame))
var/obj/item/firealarm_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/light_fixture_frame))
var/obj/item/light_fixture_frame/AH = W
AH.try_build(src)
return
else if(istype(W,/obj/item/light_fixture_frame/small))
var/obj/item/light_fixture_frame/small/AH = W
AH.try_build(src)
return
else if(istype(W, /obj/item/weapon/reagent_containers))
return // They tend to have meaningful afterattack - let them apply it without destroying a rotting wall
//Finally, CHECKING FOR FALSE WALLS if it isn't damaged
else if(!d_state)
return attack_hand(user)
return

View File

@@ -237,10 +237,7 @@
if(S.zone) S.zone.rebuild()
if(ispath(N, /turf/simulated/floor))
var/turf/simulated/W = new N( locate(src.x, src.y, src.z) )
//W.Assimilate_Air()
if(old_fire)
fire = old_fire

View File

@@ -5,7 +5,7 @@
icon_state = ""
flags = CONDUCT
w_class = 2.0
matter = list("metal" = 100)
matter = list(DEFAULT_WALL_MATERIAL = 100)
throwforce = 2
throw_speed = 3
throw_range = 10

View File

@@ -2,7 +2,7 @@
name = "igniter"
desc = "A small electronic device able to ignite combustable substances."
icon_state = "igniter"
matter = list("metal" = 500, "glass" = 50, "waste" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
origin_tech = "magnets=1"
secured = 1

View File

@@ -4,7 +4,7 @@
name = "infrared emitter"
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted."
icon_state = "infrared"
matter = list("metal" = 1000, "glass" = 500, "waste" = 100)
matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500, "waste" = 100)
origin_tech = "magnets=2"
wires = WIRE_PULSE

View File

@@ -2,7 +2,7 @@
name = "mousetrap"
desc = "A handy little spring-loaded trap for catching pesty rodents."
icon_state = "mousetrap"
matter = list("metal" = 100, "waste" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 100, "waste" = 10)
origin_tech = "combat=1"
var/armed = 0

View File

@@ -2,7 +2,7 @@
name = "proximity sensor"
desc = "Used for scanning and alerting when someone enters a certain proximity."
icon_state = "prox"
matter = list("metal" = 800, "glass" = 200, "waste" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 800, "glass" = 200, "waste" = 50)
origin_tech = "magnets=1"
wires = WIRE_PULSE

View File

@@ -3,7 +3,7 @@
desc = "Used to remotely activate devices."
icon_state = "signaller"
item_state = "signaler"
matter = list("metal" = 1000, "glass" = 200, "waste" = 100)
matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 200, "waste" = 100)
origin_tech = "magnets=1"
wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE

View File

@@ -2,7 +2,7 @@
name = "timer"
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
icon_state = "timer"
matter = list("metal" = 500, "glass" = 50, "waste" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
origin_tech = "magnets=1"
wires = WIRE_PULSE

View File

@@ -2,7 +2,7 @@
name = "voice analyzer"
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
icon_state = "voice"
matter = list("metal" = 500, "glass" = 50, "waste" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 50, "waste" = 10)
origin_tech = "magnets=1"
var/listening = 0
var/recorded //the activation message

View File

@@ -17,7 +17,7 @@
icon_state = "welding"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
item_state = "welding"
matter = list("metal" = 3000, "glass" = 1000)
matter = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000)
var/up = 0
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE)

View File

@@ -13,7 +13,7 @@
desc = "It looks pretty sciency."
icon = 'icons/obj/rig_modules.dmi'
icon_state = "module"
matter = list("metal" = 20000, "plastic" = 30000, "glass" = 5000)
matter = list(DEFAULT_WALL_MATERIAL = 20000, "plastic" = 30000, "glass" = 5000)
var/damage = 0
var/obj/item/weapon/rig/holder

View File

@@ -58,7 +58,7 @@
force = 5.0
throwforce = 7.0
w_class = 2.0
matter = list("metal" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("slashed", "sliced", "cut", "clawed")

View File

@@ -215,7 +215,7 @@
force = 5.0
throwforce = 7.0
w_class = 2.0
matter = list("metal" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50)
attack_verb = list("slashed", "sliced", "cut", "clawed")
//Hatchets and things to kill kudzu
@@ -232,7 +232,7 @@
throw_range = 4
sharp = 1
edge = 1
matter = list("metal" = 15000)
matter = list(DEFAULT_WALL_MATERIAL = 15000)
origin_tech = "materials=2;combat=1"
attack_verb = list("chopped", "torn", "cut")

View File

@@ -0,0 +1,170 @@
var/list/name_to_material
/proc/populate_material_list()
name_to_material = list()
for(var/type in typesof(/material) - /material)
var/material/new_mineral = new type
if(!new_mineral.name)
continue
name_to_material[lowertext(new_mineral.name)] = new_mineral
return 1
/*
Valid sprite masks:
stone
metal
solid
cult
*/
/material
var/name // Tag for use in overlay generation/list population .
var/display_name
var/icon_base = "metal"
var/icon_colour
var/icon_reinf = "reinf_metal"
var/stack_type
var/unmeltable
var/cut_delay = 0
var/radioactivity
var/ignition_point
var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this
var/integrity = 150 // Damage before wall falls apart, essentially.
var/hardness = 60 // Used to determine if a hulk can punch through this wall.
var/rotting_touch_message = "crumbles under your touch"
var/opacity = 1
var/explosion_resistance = 5
/material/New()
..()
if(!display_name)
display_name = name
/material/proc/place_dismantled_girder(var/turf/target, var/material/reinf_material)
var/obj/structure/girder/G = new(target)
if(reinf_material)
G.reinf_material = reinf_material
G.reinforce_girder()
/material/proc/place_dismantled_product(var/turf/target,var/is_devastated)
for(var/x=1;x<(is_devastated?2:3);x++)
place_sheet(target)
/material/proc/place_sheet(var/turf/target)
if(stack_type)
new stack_type(target)
/material/uranium
name = "uranium"
stack_type = /obj/item/stack/sheet/mineral/uranium
radioactivity = 12
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_colour = "#007A00"
/material/diamond
name = "diamond"
stack_type = /obj/item/stack/sheet/mineral/diamond
unmeltable = 1
cut_delay = 60
icon_colour = "#00FFE1"
opacity = 0.4
/material/gold
name = "gold"
stack_type = /obj/item/stack/sheet/mineral/gold
icon_colour = "#EDD12F"
/material/silver
name = "silver"
stack_type = /obj/item/stack/sheet/mineral/silver
icon_colour = "#D1E6E3"
/material/phoron
name = "phoron"
stack_type = /obj/item/stack/sheet/mineral/phoron
ignition_point = 300
icon_base = "stone"
icon_colour = "#FC2BC5"
/material/sandstone
name = "sandstone"
stack_type = /obj/item/stack/sheet/mineral/sandstone
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_colour = "#D9C179"
/material/steel
name = DEFAULT_WALL_MATERIAL
stack_type = /obj/item/stack/sheet/metal
icon_base = "solid"
icon_reinf = "reinf_over"
icon_colour = "#666666"
/material/plasteel
name = "plasteel"
stack_type = /obj/item/stack/sheet/plasteel
integrity = 800
melting_point = 6000
icon_base = "solid"
icon_reinf = "reinf_over"
icon_colour = "#777777"
explosion_resistance = 25
/material/glass
name = "glass"
stack_type = /obj/item/stack/sheet/glass
icon_colour = "#00E1FF"
opacity = 0.3
/material/plastic
name = "plastic"
stack_type = /obj/item/stack/sheet/mineral/plastic
icon_base = "solid"
icon_reinf = "reinf_over"
icon_colour = "#CCCCCC"
/material/osmium
name = "osmium"
stack_type = /obj/item/stack/sheet/mineral/osmium
icon_colour = "#9999FF"
/material/tritium
name = "tritium"
stack_type = /obj/item/stack/sheet/mineral/tritium
icon_colour = "#777777"
/material/mhydrogen
name = "mhydrogen"
stack_type = /obj/item/stack/sheet/mineral/mhydrogen
icon_colour = "#E6C5DE"
/material/platinum
name = "platinum"
stack_type = /obj/item/stack/sheet/mineral/platinum
icon_colour = "#9999FF"
/material/iron
name = "iron"
stack_type = /obj/item/stack/sheet/mineral/iron
icon_colour = "#5C5454"
/material/cult
name = "cult"
display_name = "disturbing stone"
icon_base = "cult"
icon_colour = "#402821"
icon_reinf = "reinf_cult"
/material/cult/place_dismantled_girder(var/turf/target)
new /obj/structure/girder/cult(target)
/material/cult/place_dismantled_product(var/turf/target)
new /obj/effect/decal/cleanable/blood(target)
/material/cult/reinf
name = "cult2"
display_name = "human remains"
/material/cult/reinf/place_dismantled_product(var/turf/target)
new /obj/effect/decal/remains/human(target)

View File

@@ -19,7 +19,7 @@
product = /obj/item/stack/sheet/plasteel
/datum/alloy/steel
metaltag = "steel"
metaltag = DEFAULT_WALL_MATERIAL
requires = list(
"coal" = 1,
"hematite" = 1

View File

@@ -4,7 +4,7 @@
icon = 'icons/obj/device.dmi'
icon_state = "forensic0-old" //GET A BETTER SPRITE.
item_state = "electronic"
matter = list("metal" = 150)
matter = list(DEFAULT_WALL_MATERIAL = 150)
origin_tech = "magnets=1;engineering=1"
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)

View File

@@ -42,8 +42,9 @@
for(var/ore in machine.ores_processing)
if(!machine.ores_stored[ore] && !show_all_ores) continue
dat += "<tr><td width = 40><b>[capitalize(ore)]</b></td><td width = 30>[machine.ores_stored[ore]]</td><td width = 100><font color='"
var/ore/O = ore_data[ore]
if(!O) continue
dat += "<tr><td width = 40><b>[capitalize(O.display_name)]</b></td><td width = 30>[machine.ores_stored[ore]]</td><td width = 100><font color='"
if(machine.ores_processing[ore])
switch(machine.ores_processing[ore])
if(0)
@@ -111,7 +112,6 @@
var/sheets_per_tick = 10
var/list/ores_processing[0]
var/list/ores_stored[0]
var/list/ore_data[0]
var/list/alloy_data[0]
var/active = 0
@@ -123,11 +123,12 @@
for(var/alloytype in typesof(/datum/alloy)-/datum/alloy)
alloy_data += new alloytype()
for(var/oretype in typesof(/datum/ore)-/datum/ore)
var/datum/ore/OD = new oretype()
ore_data[OD.oretag] = OD
ores_processing[OD.oretag] = 0
ores_stored[OD.oretag] = 0
if(!ore_data || !ore_data.len)
for(var/oretype in typesof(/ore)-/ore)
var/ore/OD = new oretype()
ore_data[OD.name] = OD
ores_processing[OD.name] = 0
ores_stored[OD.name] = 0
//Locate our output and input machinery.
spawn(5)
@@ -150,8 +151,10 @@
for(var/i = 0,i<sheets_per_tick,i++)
var/obj/item/weapon/ore/O = locate() in input.loc
if(!O) break
if(!isnull(ores_stored[O.oretag])) ores_stored[O.oretag]++
O.loc = null
if(!isnull(ores_stored[O.material]))
ores_stored[O.material]++
qdel(O)
if(!active)
return
@@ -164,7 +167,7 @@
if(ores_stored[metal] > 0 && ores_processing[metal] != 0)
var/datum/ore/O = ore_data[metal]
var/ore/O = ore_data[metal]
if(!O) continue
@@ -206,24 +209,28 @@
var/can_make = Clamp(ores_stored[metal],0,sheets_per_tick-sheets)
if(can_make%2>0) can_make--
if(!can_make || ores_stored[metal] < 1)
var/material/M = name_to_material[O.compresses_to]
if(!istype(M) || !can_make || ores_stored[metal] < 1)
continue
for(var/i=0,i<can_make,i+=2)
ores_stored[metal]-=2
sheets+=2
new O.compresses_to(output.loc)
new M.stack_type(output.loc)
else if(ores_processing[metal] == 1 && O.smelts_to) //Smelting.
var/can_make = Clamp(ores_stored[metal],0,sheets_per_tick-sheets)
if(!can_make || ores_stored[metal] < 1)
var/material/M = name_to_material[O.smelts_to]
if(!istype(M) || !can_make || ores_stored[metal] < 1)
continue
for(var/i=0,i<can_make,i++)
ores_stored[metal]--
sheets++
new O.smelts_to(output.loc)
new M.stack_type(output.loc)
else
ores_stored[metal]--
sheets++

View File

@@ -89,8 +89,8 @@
stack_storage["glass"] = 0
stack_paths["glass"] = /obj/item/stack/sheet/glass
stack_storage["metal"] = 0
stack_paths["metal"] = /obj/item/stack/sheet/metal
stack_storage[DEFAULT_WALL_MATERIAL] = 0
stack_paths[DEFAULT_WALL_MATERIAL] = /obj/item/stack/sheet/metal
stack_storage["plasteel"] = 0
stack_paths["plasteel"] = /obj/item/stack/sheet/plasteel

View File

@@ -1,12 +1,3 @@
/**********************Light************************/
//this item is intended to give the effect of entering the mine, so that light gradually fades
/obj/effect/light_emitter
name = "Light-emtter"
anchored = 1
unacidable = 1
light_range = 8
/**********************Miner Lockers**************************/
/obj/structure/closet/secure_closet/miner
@@ -35,8 +26,7 @@
new /obj/item/device/flashlight/lantern(src)
new /obj/item/weapon/shovel(src)
new /obj/item/weapon/pickaxe(src)
new /obj/item/clothing/glasses/meson(src)
new /obj/item/clothing/glasses/material(src)
/******************************Lantern*******************************/
@@ -59,7 +49,7 @@
icon_state = "pickaxe"
item_state = "jackhammer"
w_class = 4.0
matter = list("metal" = 3750)
matter = list(DEFAULT_WALL_MATERIAL = 3750)
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
origin_tech = "materials=1;engineering=1"
attack_verb = list("hit", "pierced", "sliced", "attacked")
@@ -119,6 +109,7 @@
origin_tech = "materials=4;phorontech=3;engineering=3"
desc = "A rock cutter that uses bursts of hot plasma. You could use it to cut limbs off of xenos! Or, you know, mine stuff."
drill_verb = "cutting"
drill_sound = 'sound/items/Welder.ogg'
sharp = 1
edge = 1
@@ -161,7 +152,7 @@
throwforce = 4.0
item_state = "shovel"
w_class = 3.0
matter = list("metal" = 50)
matter = list(DEFAULT_WALL_MATERIAL = 50)
origin_tech = "materials=1;engineering=1"
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
sharp = 0

View File

@@ -11,7 +11,7 @@
density = 1
blocks_air = 1
temperature = T0C
var/mineral/mineral
var/ore/mineral
var/mined_ore = 0
var/last_act = 0
var/emitter_blasts_taken = 0 // EMITTER MINING! Muhehe.
@@ -95,13 +95,13 @@
/turf/simulated/mineral/proc/UpdateMineral()
clear_ore_effects()
if(!mineral)
name = "\improper Rock"
icon_state = "rock"
return
name = "\improper [mineral.display_name] deposit"
overlays.Cut()
overlays += "rock_[mineral.name]"
new /obj/effect/mineral(src, mineral)
//Not even going to touch this pile of spaghetti
/turf/simulated/mineral/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -234,10 +234,15 @@
else
return attack_hand(user)
/turf/simulated/mineral/proc/clear_ore_effects()
for(var/obj/effect/mineral/M in contents)
qdel(M)
/turf/simulated/mineral/proc/DropMineral()
if(!mineral)
return
clear_ore_effects()
var/obj/item/weapon/ore/O = new mineral.ore (src)
if(istype(O))
geologic_data.UpdateNearbyArtifactInfo(src)
@@ -274,6 +279,7 @@
var/list/step_overlays = list("n" = NORTH, "s" = SOUTH, "e" = EAST, "w" = WEST)
//Add some rubble, you did just clear out a big chunk of rock.
var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid)
N.overlay_detail = "asteroid[rand(0,9)]"
@@ -369,12 +375,9 @@
/turf/simulated/mineral/random/New()
if (prob(mineralChance) && !mineral)
var/mineral_name = pickweight(mineralSpawnChanceList) //temp mineral name
if(!name_to_mineral)
SetupMinerals()
if (mineral_name && mineral_name in name_to_mineral)
mineral = name_to_mineral[mineral_name]
mineral_name = lowertext(mineral_name)
if (mineral_name && (mineral_name in ore_data))
mineral = ore_data[mineral_name]
UpdateMineral()
. = ..()

View File

@@ -0,0 +1,26 @@
/obj/effect/mineral
name = "mineral vein"
icon = 'icons/obj/mining.dmi'
desc = "Shiny."
mouse_opacity = 0
density = 0
anchored = 1
var/ore_key
var/image/scanner_image
/obj/effect/mineral/New(var/newloc, var/ore/M)
..(newloc)
name = "[M.display_name] deposit"
ore_key = M.name
icon_state = "rock_[ore_key]"
var/turf/T = get_turf(src)
layer = T.layer+0.1
/obj/effect/mineral/proc/get_scan_overlay()
if(!scanner_image)
var/ore/O = ore_data[ore_key]
if(O)
scanner_image = image(icon, loc = get_turf(src), icon_state = (O.scan_icon ? O.scan_icon : icon_state))
else
world << "No ore data for [src]!"
return scanner_image

View File

@@ -1,72 +0,0 @@
var/list/name_to_mineral
/proc/SetupMinerals()
name_to_mineral = list()
for(var/type in typesof(/mineral) - /mineral)
var/mineral/new_mineral = new type
if(!new_mineral.name)
continue
name_to_mineral[new_mineral.name] = new_mineral
return 1
/mineral
var/name // Tag for use in overlay generation/list population .
var/display_name // What am I called?
var/result_amount // How much ore?
var/spread = 1 // Does this type of deposit spread?
var/spread_chance // Chance of spreading in any direction
var/ore // Path to the ore produced when tile is mined.
/mineral/New()
. = ..()
if(!display_name)
display_name = name
/mineral/uranium
name = "Uranium"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/uranium
/mineral/platinum
name = "Platinum"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/osmium
/mineral/iron
name = "Iron"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/iron
/mineral/coal
name = "Coal"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/coal
/mineral/diamond
name = "Diamond"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/diamond
/mineral/gold
name = "Gold"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/gold
/mineral/silver
name = "Silver"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/silver
/mineral/phoron
name = "Phoron"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/phoron

View File

@@ -17,7 +17,7 @@
var/amt_uranium = 0
var/newCoins = 0 //how many coins the machine made in it's last load
var/processing = 0
var/chosen = "metal" //which material will be used to make coins
var/chosen = DEFAULT_WALL_MATERIAL //which material will be used to make coins
var/coinsToProduce = 10
@@ -81,7 +81,7 @@
else
dat += text("<A href='?src=\ref[src];choose=silver'>Choose</A>")
dat += text("<br><font color='#555555'><b>Iron inserted: </b>[amt_iron]</font> ")
if (chosen == "metal")
if (chosen == DEFAULT_WALL_MATERIAL)
dat += text("chosen")
else
dat += text("<A href='?src=\ref[src];choose=metal'>Choose</A>")
@@ -133,7 +133,7 @@
icon_state = "coinpress1"
var/obj/item/weapon/moneybag/M
switch(chosen)
if("metal")
if(DEFAULT_WALL_MATERIAL)
while(amt_iron > 0 && coinsToProduce > 0)
if (locate(/obj/item/weapon/moneybag,output.loc))
M = locate(/obj/item/weapon/moneybag,output.loc)

View File

@@ -4,71 +4,71 @@
icon_state = "ore2"
w_class = 2
var/datum/geosample/geologic_data
var/oretag
var/material
/obj/item/weapon/ore/uranium
name = "pitchblende"
icon_state = "Uranium ore"
icon_state = "ore_uranium"
origin_tech = "materials=5"
oretag = "uranium"
material = "uranium"
/obj/item/weapon/ore/iron
name = "hematite"
icon_state = "Iron ore"
icon_state = "ore_iron"
origin_tech = "materials=1"
oretag = "hematite"
material = "hematite"
/obj/item/weapon/ore/coal
name = "carbonaceous rock"
icon_state = "Coal ore"
name = "raw carbon"
icon_state = "ore_coal"
origin_tech = "materials=1"
oretag = "coal"
material = "carbon"
/obj/item/weapon/ore/glass
name = "impure silicates"
icon_state = "Glass ore"
icon_state = "ore_glass"
origin_tech = "materials=1"
oretag = "sand"
material = "sand"
/obj/item/weapon/ore/phoron
name = "phoron crystals"
icon_state = "Phoron ore"
icon_state = "ore_phoron"
origin_tech = "materials=2"
oretag = "phoron"
material = "phoron"
/obj/item/weapon/ore/silver
name = "native silver ore"
icon_state = "Silver ore"
icon_state = "ore_silver"
origin_tech = "materials=3"
oretag = "silver"
material = "silver"
/obj/item/weapon/ore/gold
name = "native gold ore"
icon_state = "Gold ore"
icon_state = "ore_gold"
origin_tech = "materials=4"
oretag = "gold"
material = "gold"
/obj/item/weapon/ore/diamond
name = "diamonds"
icon_state = "Diamond ore"
icon_state = "ore_diamond"
origin_tech = "materials=6"
oretag = "diamond"
material = "diamond"
/obj/item/weapon/ore/osmium
name = "raw platinum"
icon_state = "Platinum ore"
oretag = "platinum"
icon_state = "ore_platinum"
material = "platinum"
/obj/item/weapon/ore/hydrogen
name = "raw hydrogen"
icon_state = "Phazon"
oretag = "hydrogen"
icon_state = "ore_hydrogen"
material = "mhydrogen"
/obj/item/weapon/ore/slag
name = "Slag"
desc = "Completely useless"
desc = "Someone screwed up..."
icon_state = "slag"
oretag = "slag"
material = null
/obj/item/weapon/ore/New()
pixel_x = rand(0,16)-8

View File

@@ -1,52 +1,133 @@
/datum/ore
var/oretag
var/global/list/ore_data = list()
/ore
var/name
var/display_name
var/alloy
var/smelts_to
var/compresses_to
var/result_amount // How much ore?
var/spread = 1 // Does this type of deposit spread?
var/spread_chance // Chance of spreading in any direction
var/ore // Path to the ore produced when tile is mined.
var/scan_icon // Overlay for ore scanners.
// Xenoarch stuff. No idea what it's for, just refactored it to be less awful.
var/list/xarch_ages = list(
"thousand" = 999,
"million" = 999
)
var/xarch_source_mineral = "iron"
/datum/ore/uranium
smelts_to = /obj/item/stack/sheet/mineral/uranium
oretag = "uranium"
/ore/New()
. = ..()
if(!display_name)
display_name = name
/datum/ore/iron
smelts_to = /obj/item/stack/sheet/mineral/iron
/ore/uranium
name = "uranium"
display_name = "pitchblende"
smelts_to = "uranium"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/uranium
scan_icon = "mineral_uncommon"
xarch_ages = list(
"thousand" = 999,
"million" = 704
)
xarch_source_mineral = "potassium"
/ore/hematite
name = "hematite"
display_name = "hematite"
smelts_to = "iron"
alloy = 1
oretag = "hematite"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/iron
scan_icon = "mineral_common"
/datum/ore/coal
smelts_to = /obj/item/stack/sheet/mineral/plastic
/ore/coal
name = "carbon"
display_name = "raw carbon"
smelts_to = "plastic"
alloy = 1
oretag = "coal"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/coal
scan_icon = "mineral_common"
/datum/ore/glass
smelts_to = /obj/item/stack/sheet/glass
compresses_to = /obj/item/stack/sheet/mineral/sandstone
oretag = "sand"
/ore/glass
name = "sand"
display_name = "impure silicates"
smelts_to = "glass"
compresses_to = "sandstone"
/datum/ore/phoron
/ore/phoron
name = "phoron"
display_name = "phoron crystals"
compresses_to = "phoron"
//smelts_to = something that explodes violently on the conveyor, huhuhuhu
compresses_to = /obj/item/stack/sheet/mineral/phoron
oretag = "phoron"
result_amount = 5
spread_chance = 25
ore = /obj/item/weapon/ore/phoron
scan_icon = "mineral_uncommon"
xarch_ages = list(
"thousand" = 999,
"million" = 999,
"billion" = 13,
"billion_lower" = 10
)
xarch_source_mineral = "phoron"
/datum/ore/silver
smelts_to = /obj/item/stack/sheet/mineral/silver
oretag = "silver"
/ore/silver
name = "silver"
display_name = "native silver"
smelts_to = "silver"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/silver
scan_icon = "mineral_uncommon"
/datum/ore/gold
smelts_to = /obj/item/stack/sheet/mineral/gold
oretag = "gold"
/ore/gold
smelts_to = "gold"
name = "gold"
display_name = "native gold"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/gold
scan_icon = "mineral_uncommon"
xarch_ages = list(
"thousand" = 999,
"million" = 999,
"billion" = 4,
"billion_lower" = 3
)
/datum/ore/diamond
compresses_to = /obj/item/stack/sheet/mineral/diamond
oretag = "diamond"
/ore/diamond
name = "diamond"
display_name = "diamond"
compresses_to = "diamond"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/diamond
scan_icon = "mineral_rare"
xarch_source_mineral = "nitrogen"
/datum/ore/osmium
smelts_to = /obj/item/stack/sheet/mineral/platinum
compresses_to = /obj/item/stack/sheet/mineral/osmium
/ore/platinum
name = "platinum"
display_name = "raw platinum"
smelts_to = "platinum"
compresses_to = "osmium"
alloy = 1
oretag = "platinum"
result_amount = 5
spread_chance = 10
ore = /obj/item/weapon/ore/osmium
scan_icon = "mineral_rare"
/datum/ore/hydrogen
smelts_to = /obj/item/stack/sheet/mineral/tritium
compresses_to = /obj/item/stack/sheet/mineral/mhydrogen
oretag = "hydrogen"
/ore/hydrogen
name = "mhydrogen"
display_name = "metallic hydrogen"
smelts_to = "tritium"
compresses_to = "mhydrogen"
scan_icon = "mineral_rare"

View File

@@ -25,7 +25,7 @@
w_class = 3
origin_tech = "biotech=3"
var/list/construction_cost = list("metal"=1000,"glass"=500)
var/list/construction_cost = list(DEFAULT_WALL_MATERIAL=1000,"glass"=500)
var/construction_time = 75
//these vars are so the mecha fabricator doesn't shit itself anymore. --NEO

View File

@@ -6,7 +6,7 @@
w_class = 3
origin_tech = "engineering=4;materials=4;bluespace=2;programming=4"
construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"phoron"=100,"diamond"=10)
construction_cost = list(DEFAULT_WALL_MATERIAL=500,"glass"=500,"silver"=200,"gold"=200,"phoron"=100,"diamond"=10)
construction_time = 75
var/searching = 0
var/askDelay = 10 * 60 * 1

View File

@@ -134,13 +134,20 @@
return
// OBJ CHECK
var/cannot_melt
if(isobj(O))
var/obj/I = O
if(I.unacidable) //So the aliens don't destroy energy fields/singularies/other aliens/etc with their acid.
src << "<span class='alium'>You cannot dissolve this object.</span>"
return
// TURF CHECK
else if(istype(O, /turf/simulated/wall/r_wall) || istype(O, /turf/simulated/floor/engine))
if(I.unacidable)
cannot_melt = 1
else
if(istype(O, /turf/simulated/wall))
var/turf/simulated/wall/W = O
if(W.material.unmeltable)
cannot_melt = 1
else if(istype(O, /turf/simulated/floor/engine))
cannot_melt = 1
if(cannot_melt)
src << "<span class='alium'>You cannot dissolve this object.</span>"
return

View File

@@ -12,7 +12,7 @@
w_class = 2.0
throw_speed = 5
throw_range = 10
matter = list("metal" = 500, "glass" = 200)
matter = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 200)
origin_tech = "magnets=2;biotech=1;engineering=2"
var/mode = 1;

View File

@@ -218,7 +218,7 @@
icon = 'icons/obj/robot_component.dmi'
icon_state = "working"
construction_time = 200
construction_cost = list("metal"=5000)
construction_cost = list(DEFAULT_WALL_MATERIAL=5000)
var/brute = 0
var/burn = 0
var/icon_state_broken = "broken"

View File

@@ -16,10 +16,7 @@
/obj/item/weapon/airlock_electronics,
/obj/item/weapon/module/power_control,
/obj/item/weapon/stock_parts,
/obj/item/light_fixture_frame,
/obj/item/apc_frame,
/obj/item/alarm_frame,
/obj/item/firealarm_frame,
/obj/item/frame,
/obj/item/weapon/table_parts,
/obj/item/weapon/table_parts/rack,
/obj/item/weapon/camera_assembly,

View File

@@ -137,10 +137,9 @@
proc/AttemptToEat(var/atom/target)
if(istype(target,/turf/simulated/wall))
if((!istype(target,/turf/simulated/wall/r_wall) && eatingDuration >= 100) || eatingDuration >= 200) //need 20 ticks to eat an rwall, 10 for a regular one
var/turf/simulated/wall/wall = target
wall.ChangeTurf(/turf/simulated/floor)
new /obj/item/stack/sheet/metal(src, flatPlasmaValue)
var/turf/simulated/wall/W = target
if((!W.reinf_material && eatingDuration >= 100) || eatingDuration >= 200) //need 20 ticks to eat an rwall, 10 for a regular one
W.dismantle_wall()
return 1
else if(istype(target,/atom/movable))
if(istype(target,/mob) || eatingDuration >= 50) //5 ticks to eat stuff like airlocks

View File

@@ -20,7 +20,7 @@
w_class = 1.0
throw_speed = 7
throw_range = 15
matter = list("metal" = 10)
matter = list(DEFAULT_WALL_MATERIAL = 10)
var/colour = "black" //what colour the ink is!
pressure_resistance = 2

View File

@@ -124,7 +124,7 @@ var/global/photo_count = 0
w_class = 2.0
flags = CONDUCT
slot_flags = SLOT_BELT
matter = list("metal" = 2000)
matter = list(DEFAULT_WALL_MATERIAL = 2000)
var/pictures_max = 10
var/pictures_left = 10
var/on = 1

View File

@@ -8,7 +8,7 @@
w_class = 1.0
throw_speed = 7
throw_range = 15
matter = list("metal" = 60)
matter = list(DEFAULT_WALL_MATERIAL = 60)
pressure_resistance = 2
attack_verb = list("stamped")

Some files were not shown because too many files have changed in this diff Show More