mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-17 18:13:34 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into construction
# Conflicts: # _maps/map_files/cyberiad/cyberiad.dmm
This commit is contained in:
@@ -363,7 +363,8 @@
|
||||
break
|
||||
|
||||
/obj/structure/alien/egg/bullet_act(obj/item/projectile/Proj)
|
||||
health -= Proj.damage
|
||||
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
|
||||
health -= Proj.damage
|
||||
..()
|
||||
healthcheck()
|
||||
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
name = "tank transfer valve"
|
||||
icon_state = "valve_1"
|
||||
item_state = "ttv"
|
||||
desc = "Regulates the transfer of air between two tanks"
|
||||
var/obj/item/weapon/tank/tank_one
|
||||
var/obj/item/weapon/tank/tank_two
|
||||
var/obj/item/device/attached_device
|
||||
var/mob/attacher = null
|
||||
var/obj/item/weapon/tank/tank_one = null
|
||||
var/obj/item/weapon/tank/tank_two = null
|
||||
var/obj/item/device/assembly/attached_device = null
|
||||
var/mob/living/attacher = null
|
||||
var/valve_open = 0
|
||||
var/toggle = 1
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
@@ -21,75 +22,79 @@
|
||||
if(attached_device)
|
||||
qdel(attached_device)
|
||||
attached_device = null
|
||||
attacher = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
|
||||
|
||||
/obj/item/device/transfer_valve/IsAssemblyHolder()
|
||||
return 1
|
||||
|
||||
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user, params)
|
||||
if(istype(item, /obj/item/weapon/tank))
|
||||
/obj/item/device/transfer_valve/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/tank))
|
||||
if(tank_one && tank_two)
|
||||
to_chat(user, "<span class='warning'>There are already two tanks attached, remove one first.</span>")
|
||||
return
|
||||
|
||||
if(!tank_one)
|
||||
tank_one = item
|
||||
user.drop_item()
|
||||
item.loc = src
|
||||
if(!user.unEquip(I))
|
||||
return
|
||||
tank_one = I
|
||||
I.forceMove(src)
|
||||
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
|
||||
if(I.w_class > w_class)
|
||||
w_class = I.w_class
|
||||
else if(!tank_two)
|
||||
tank_two = item
|
||||
user.drop_item()
|
||||
item.loc = src
|
||||
if(!user.unEquip(I))
|
||||
return
|
||||
tank_two = I
|
||||
I.forceMove(src)
|
||||
to_chat(user, "<span class='notice'>You attach the tank to the transfer valve.</span>")
|
||||
if(I.w_class > w_class)
|
||||
w_class = I.w_class
|
||||
|
||||
update_icon()
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
//TODO: Have this take an assemblyholder
|
||||
else if(isassembly(item))
|
||||
var/obj/item/device/assembly/A = item
|
||||
else if(isassembly(I))
|
||||
var/obj/item/device/assembly/A = I
|
||||
if(A.secured)
|
||||
to_chat(user, "<span class='notice'>The device is secured.</span>")
|
||||
return
|
||||
if(attached_device)
|
||||
to_chat(user, "<span class='warning'>There is already a device attached to the valve, remove it first.</span>")
|
||||
return
|
||||
user.remove_from_mob(item)
|
||||
user.remove_from_mob(A)
|
||||
attached_device = A
|
||||
A.loc = src
|
||||
to_chat(user, "<span class='notice'>You attach the [item] to the valve controls and secure it.</span>")
|
||||
A.forceMove(src)
|
||||
to_chat(user, "<span class='notice'>You attach the [A] to the valve controls and secure it.</span>")
|
||||
A.holder = src
|
||||
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
||||
|
||||
bombers += "[key_name(user)] attached a [item] to a transfer valve."
|
||||
msg_admin_attack("[key_name_admin(user)]attached [item] to a transfer valve.")
|
||||
log_game("[key_name_admin(user)] attached [item] to a transfer valve.")
|
||||
bombers += "[key_name(user)] attached a [A] to a transfer valve."
|
||||
msg_admin_attack("[key_name_admin(user)]attached [A] to a transfer valve.")
|
||||
log_game("[key_name_admin(user)] attached [A] to a transfer valve.")
|
||||
attacher = user
|
||||
nanomanager.update_uis(src) // update all UIs attached to src
|
||||
return
|
||||
|
||||
|
||||
/obj/item/device/transfer_valve/HasProximity(atom/movable/AM as mob|obj)
|
||||
if(!attached_device) return
|
||||
/obj/item/device/transfer_valve/HasProximity(atom/movable/AM)
|
||||
if(!attached_device)
|
||||
return
|
||||
attached_device.HasProximity(AM)
|
||||
return
|
||||
|
||||
/obj/item/device/transfer_valve/hear_talk(mob/living/M as mob, msg)
|
||||
/obj/item/device/transfer_valve/hear_talk(mob/living/M, msg)
|
||||
..()
|
||||
for(var/obj/O in contents)
|
||||
O.hear_talk(M, msg)
|
||||
|
||||
/obj/item/device/transfer_valve/hear_message(mob/living/M as mob, msg)
|
||||
/obj/item/device/transfer_valve/hear_message(mob/living/M, msg)
|
||||
..()
|
||||
for(var/obj/O in contents)
|
||||
O.hear_message(M, msg)
|
||||
|
||||
/obj/item/device/transfer_valve/attack_self(mob/user as mob)
|
||||
/obj/item/device/transfer_valve/attack_self(mob/user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/item/device/transfer_valve/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
@@ -113,36 +118,40 @@
|
||||
|
||||
/obj/item/device/transfer_valve/Topic(href, href_list)
|
||||
..()
|
||||
if( usr.stat || usr.restrained() )
|
||||
if(usr.incapacitated())
|
||||
return 0
|
||||
if(src.loc != usr)
|
||||
if(loc != usr)
|
||||
return 0
|
||||
if(tank_one && href_list["tankone"])
|
||||
split_gases()
|
||||
valve_open = 0
|
||||
tank_one.loc = get_turf(src)
|
||||
tank_one.forceMove(get_turf(src))
|
||||
tank_one = null
|
||||
update_icon()
|
||||
if((!tank_two || tank_two.w_class < 4) && (w_class > 3))
|
||||
w_class = 3
|
||||
else if(tank_two && href_list["tanktwo"])
|
||||
split_gases()
|
||||
valve_open = 0
|
||||
tank_two.loc = get_turf(src)
|
||||
tank_two.forceMove(get_turf(src))
|
||||
tank_two = null
|
||||
update_icon()
|
||||
if((!tank_one || tank_one.w_class < 4) && (w_class > 3))
|
||||
w_class = 3
|
||||
else if(href_list["open"])
|
||||
toggle_valve()
|
||||
else if(attached_device)
|
||||
if(href_list["rem_device"])
|
||||
attached_device.loc = get_turf(src)
|
||||
attached_device:holder = null
|
||||
attached_device.forceMove(get_turf(src))
|
||||
attached_device.holder = null
|
||||
attached_device = null
|
||||
update_icon()
|
||||
if(href_list["device"])
|
||||
attached_device.attack_self(usr)
|
||||
src.add_fingerprint(usr)
|
||||
add_fingerprint(usr)
|
||||
return 1 // Returning 1 sends an update to attached UIs
|
||||
|
||||
/obj/item/device/transfer_valve/process_activation(var/obj/item/device/D)
|
||||
/obj/item/device/transfer_valve/proc/process_activation(obj/item/device/D)
|
||||
if(toggle)
|
||||
toggle = 0
|
||||
toggle_valve()
|
||||
@@ -188,7 +197,7 @@
|
||||
*/
|
||||
|
||||
/obj/item/device/transfer_valve/proc/toggle_valve()
|
||||
if(valve_open==0 && (tank_one && tank_two))
|
||||
if(!valve_open && tank_one && tank_two)
|
||||
valve_open = 1
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
@@ -206,17 +215,12 @@
|
||||
log_game("Bomb valve opened at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with [attached_device ? attached_device : "no device"], attached by [attacher_name]. Last touched by: [key_name(mob)]")
|
||||
merge_gases()
|
||||
spawn(20) // In case one tank bursts
|
||||
for(var/i=0,i<5,i++)
|
||||
src.update_icon()
|
||||
for(var/i in 1 to 5)
|
||||
update_icon()
|
||||
sleep(10)
|
||||
src.update_icon()
|
||||
update_icon()
|
||||
|
||||
else if(valve_open==1 && (tank_one && tank_two))
|
||||
else if(valve_open && tank_one && tank_two)
|
||||
split_gases()
|
||||
valve_open = 0
|
||||
src.update_icon()
|
||||
|
||||
// this doesn't do anything but the timer etc. expects it to be here
|
||||
// eventually maybe have it update icon to show state (timer, prox etc.) like old bombs
|
||||
/obj/item/device/transfer_valve/proc/c_state()
|
||||
return
|
||||
update_icon()
|
||||
@@ -3,6 +3,7 @@
|
||||
gender = PLURAL
|
||||
singular_name = "wired glass floor tile"
|
||||
desc = "A glass tile, which is wired, somehow."
|
||||
icon = 'icons/obj/tiles.dmi'
|
||||
icon_state = "glass_wire"
|
||||
w_class = 3
|
||||
force = 3.0
|
||||
|
||||
@@ -12,9 +12,6 @@ Mineral Sheets
|
||||
- Tranqillite
|
||||
- Enriched Uranium
|
||||
- Platinum
|
||||
- Metallic Hydrogen
|
||||
- Tritium
|
||||
- Osmium
|
||||
*/
|
||||
|
||||
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
@@ -24,23 +21,34 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
|
||||
var/global/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/diamond_recipes = list ( \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/crown, 5), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/plasma_recipes = list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/plastic_recipes = list ( \
|
||||
@@ -61,13 +69,24 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/bananium_recipes = list ( \
|
||||
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \
|
||||
null, \
|
||||
new/datum/stack_recipe("bananium computer frame", /obj/structure/computerframe/HONKputer, 50, time = 25, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("bananium grenade casing", /obj/item/weapon/grenade/bananade/casing, 4, on_floor = 1), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
new/datum/stack_recipe("silent tile", /obj/item/stack/tile/silent, 1, 4, 20), \
|
||||
new/datum/stack_recipe("invisible wall", /obj/structure/barricade/mime, 5, one_per_turf = 1, on_floor = 1, time = 50), \
|
||||
null, \
|
||||
new/datum/stack_recipe("silent tile", /obj/item/stack/tile/mineral/tranquillite, 1, 4, 20), \
|
||||
)
|
||||
|
||||
var/global/list/datum/stack_recipe/abductor_recipes = list ( \
|
||||
new/datum/stack_recipe("alien bed", /obj/structure/stool/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 1, time = 15, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("alien table frame", /obj/structure/abductor_tableframe, 1, time = 15, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20), \
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral
|
||||
@@ -100,11 +119,11 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
/obj/item/stack/sheet/mineral/diamond
|
||||
name = "diamond"
|
||||
icon_state = "sheet-diamond"
|
||||
singular_name = "diamond"
|
||||
origin_tech = "materials=6"
|
||||
sheettype = "diamond"
|
||||
materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
|
||||
/obj/item/stack/sheet/mineral/diamond/New()
|
||||
..()
|
||||
recipes = diamond_recipes
|
||||
@@ -112,6 +131,7 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
/obj/item/stack/sheet/mineral/uranium
|
||||
name = "uranium"
|
||||
icon_state = "sheet-uranium"
|
||||
singular_name = "uranium sheet"
|
||||
origin_tech = "materials=5"
|
||||
sheettype = "uranium"
|
||||
materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT)
|
||||
@@ -123,6 +143,7 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
/obj/item/stack/sheet/mineral/plasma
|
||||
name = "solid plasma"
|
||||
icon_state = "sheet-plasma"
|
||||
singular_name = "plasma sheet"
|
||||
origin_tech = "plasmatech=2;materials=2"
|
||||
sheettype = "plasma"
|
||||
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
|
||||
@@ -161,6 +182,7 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
/obj/item/stack/sheet/mineral/gold
|
||||
name = "gold"
|
||||
icon_state = "sheet-gold"
|
||||
singular_name = "gold bar"
|
||||
origin_tech = "materials=4"
|
||||
sheettype = "gold"
|
||||
materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT)
|
||||
@@ -172,6 +194,7 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
/obj/item/stack/sheet/mineral/silver
|
||||
name = "silver"
|
||||
icon_state = "sheet-silver"
|
||||
singular_name = "silver bar"
|
||||
origin_tech = "materials=3"
|
||||
sheettype = "silver"
|
||||
materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT)
|
||||
@@ -183,23 +206,24 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
/obj/item/stack/sheet/mineral/bananium
|
||||
name = "bananium"
|
||||
icon_state = "sheet-clown"
|
||||
singular_name = "bananium sheet"
|
||||
origin_tech = "materials=4"
|
||||
sheettype = "bananium"
|
||||
materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/sheet/mineral/bananium/New(var/loc, var/amount=null)
|
||||
/obj/item/stack/sheet/mineral/bananium/New(loc, amount=null)
|
||||
..()
|
||||
recipes = bananium_recipes
|
||||
|
||||
/obj/item/stack/sheet/mineral/tranquillite
|
||||
name = "tranquillite"
|
||||
singular_name = "beret"
|
||||
icon_state = "sheet-mime"
|
||||
singular_name = "beret"
|
||||
origin_tech = "materials=4"
|
||||
sheettype = "tranquillite"
|
||||
materials = list(MAT_TRANQUILLITE=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
/obj/item/stack/sheet/mineral/tranquillite/New(var/loc, var/amount=null)
|
||||
/obj/item/stack/sheet/mineral/tranquillite/New(loc, amount=null)
|
||||
..()
|
||||
recipes = tranquillite_recipes
|
||||
|
||||
@@ -209,9 +233,7 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
origin_tech = "materials=6"
|
||||
materials = list(MAT_URANIUM=3000)
|
||||
|
||||
/*
|
||||
* Alien Alloy
|
||||
*/
|
||||
//Alien Alloy
|
||||
/obj/item/stack/sheet/mineral/abductor
|
||||
name = "alien alloy"
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
@@ -225,14 +247,6 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
|
||||
origin_tech = "materials=6;abductor=1"
|
||||
sheettype = "abductor"
|
||||
|
||||
var/global/list/datum/stack_recipe/abductor_recipes = list ( \
|
||||
new/datum/stack_recipe("alien bed", /obj/structure/stool/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 1, time = 15, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("alien table frame", /obj/structure/abductor_tableframe, 1, time = 15, one_per_turf = 1, on_floor = 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20), \
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/mineral/abductor/New(var/loc, var/amount=null)
|
||||
/obj/item/stack/sheet/mineral/abductor/New(loc, amount=null)
|
||||
recipes = abductor_recipes
|
||||
..()
|
||||
@@ -1,3 +1,68 @@
|
||||
/obj/item/stack/tile/mineral/plasma
|
||||
name = "plasma tile"
|
||||
singular_name = "plasma floor tile"
|
||||
desc = "A tile made out of highly flammable plasma. This can only end well."
|
||||
icon_state = "tile_plasma"
|
||||
origin_tech = "plasmatech=1"
|
||||
turf_type = /turf/simulated/floor/mineral/plasma
|
||||
mineralType = "plasma"
|
||||
materials = list(MAT_PLASMA=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/uranium
|
||||
name = "uranium tile"
|
||||
singular_name = "uranium floor tile"
|
||||
desc = "A tile made out of uranium. You feel a bit woozy."
|
||||
icon_state = "tile_uranium"
|
||||
turf_type = /turf/simulated/floor/mineral/uranium
|
||||
mineralType = "uranium"
|
||||
materials = list(MAT_URANIUM=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/gold
|
||||
name = "gold tile"
|
||||
singular_name = "gold floor tile"
|
||||
desc = "A tile made out of gold, the swag seems strong here."
|
||||
icon_state = "tile_gold"
|
||||
turf_type = /turf/simulated/floor/mineral/gold
|
||||
mineralType = "gold"
|
||||
materials = list(MAT_GOLD=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/silver
|
||||
name = "silver tile"
|
||||
singular_name = "silver floor tile"
|
||||
desc = "A tile made out of silver, the light shining from it is blinding."
|
||||
icon_state = "tile_silver"
|
||||
turf_type = /turf/simulated/floor/mineral/silver
|
||||
mineralType = "silver"
|
||||
materials = list(MAT_SILVER=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/diamond
|
||||
name = "diamond tile"
|
||||
singular_name = "diamond floor tile"
|
||||
desc = "A tile made out of diamond. Wow, just, wow."
|
||||
icon_state = "tile_diamond"
|
||||
origin_tech = "materials=2"
|
||||
turf_type = /turf/simulated/floor/mineral/diamond
|
||||
mineralType = "diamond"
|
||||
materials = list(MAT_DIAMOND=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/bananium
|
||||
name = "bananium tile"
|
||||
singular_name = "bananium floor tile"
|
||||
desc = "A tile made out of bananium, HOOOOOOOOONK!"
|
||||
icon_state = "tile_bananium"
|
||||
turf_type = /turf/simulated/floor/mineral/bananium
|
||||
mineralType = "bananium"
|
||||
materials = list(MAT_BANANIUM=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/tranquillite
|
||||
name = "silent tile"
|
||||
singular_name = "silent floor tile"
|
||||
desc = "A tile made out of tranquillite, SHHHHHHHHH!"
|
||||
icon_state = "tile_tranquillite"
|
||||
turf_type = /turf/simulated/floor/mineral/tranquillite
|
||||
mineralType = "tranquillite"
|
||||
materials = list(MAT_TRANQUILLITE=500)
|
||||
|
||||
/obj/item/stack/tile/mineral/abductor
|
||||
name = "alien floor tile"
|
||||
singular_name = "alien floor tile"
|
||||
|
||||
@@ -1,19 +1,8 @@
|
||||
/* Different misc types of tiles
|
||||
* Contains:
|
||||
* Grass
|
||||
* Wood
|
||||
* Carpet
|
||||
* Plasteel
|
||||
* Light
|
||||
* Fakespace
|
||||
* High-traction
|
||||
\\ If you don't update the contains list, I'm going to shank you
|
||||
*/
|
||||
/obj/item/stack/tile
|
||||
name = "broken tile"
|
||||
singular_name = "broken tile"
|
||||
desc = "A broken tile. This should not exist."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/tiles.dmi'
|
||||
icon_state = "tile"
|
||||
item_state = "tile"
|
||||
w_class = 3
|
||||
@@ -23,12 +12,64 @@
|
||||
throw_range = 20
|
||||
max_amount = 60
|
||||
flags = CONDUCT
|
||||
origin_tech = "materials=1"
|
||||
var/turf_type = null
|
||||
var/mineralType = null
|
||||
|
||||
/*
|
||||
* Grass
|
||||
*/
|
||||
/obj/item/stack/tile/New(loc, amount)
|
||||
..()
|
||||
pixel_x = rand(-3, 3)
|
||||
pixel_y = rand(-3, 3) //randomize a little
|
||||
|
||||
/obj/item/stack/tile/attackby(obj/item/W, mob/user, params)
|
||||
if(iswelder(W))
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
|
||||
if(is_hot(W) && !mineralType)
|
||||
to_chat(user, "<span class='warning'>You can not reform this!</span>")
|
||||
return
|
||||
|
||||
if(get_amount() < 4)
|
||||
to_chat(user, "<span class='warning'>You need at least four tiles to do this!</span>")
|
||||
return
|
||||
|
||||
if(WT.remove_fuel(0,user))
|
||||
|
||||
if(mineralType == "plasma")
|
||||
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 5)
|
||||
user.visible_message("<span class='warning'>[user.name] sets the plasma tiles on fire!</span>", \
|
||||
"<span class='warning'>You set the plasma tiles on fire!</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if (mineralType == "metal")
|
||||
var/obj/item/stack/sheet/metal/new_item = new(user.loc)
|
||||
user.visible_message("[user.name] shaped [src] into metal with the welding tool.", \
|
||||
"<span class='notice'>You shaped [src] into metal with the welding tool.</span>", \
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
var/obj/item/stack/rods/R = src
|
||||
src = null
|
||||
var/replace = (user.get_inactive_hand()==R)
|
||||
R.use(4)
|
||||
if(!R && replace)
|
||||
user.put_in_hands(new_item)
|
||||
|
||||
else
|
||||
var/sheet_type = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
|
||||
var/obj/item/stack/sheet/mineral/new_item = new sheet_type(user.loc)
|
||||
user.visible_message("[user.name] shaped [src] into a sheet with the welding tool.", \
|
||||
"<span class='notice'>You shaped [src] into a sheet with the welding tool.</span>", \
|
||||
"<span class='italics'>You hear welding.</span>")
|
||||
var/obj/item/stack/rods/R = src
|
||||
src = null
|
||||
var/replace = (user.get_inactive_hand()==R)
|
||||
R.use(4)
|
||||
if (!R && replace)
|
||||
user.put_in_hands(new_item)
|
||||
else
|
||||
return ..()
|
||||
|
||||
//Grass
|
||||
/obj/item/stack/tile/grass
|
||||
name = "grass tiles"
|
||||
gender = PLURAL
|
||||
@@ -39,21 +80,18 @@
|
||||
turf_type = /turf/simulated/floor/grass
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Wood
|
||||
*/
|
||||
//Wood
|
||||
/obj/item/stack/tile/wood
|
||||
name = "wood floor tiles"
|
||||
gender = PLURAL
|
||||
singular_name = "wood floor tile"
|
||||
desc = "an easy to fit wood floor tile"
|
||||
icon_state = "tile-wood"
|
||||
origin_tech = "biotech=1"
|
||||
turf_type = /turf/simulated/floor/wood
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Carpets
|
||||
*/
|
||||
//Carpets
|
||||
/obj/item/stack/tile/carpet
|
||||
name = "carpet"
|
||||
singular_name = "carpet"
|
||||
@@ -62,9 +100,7 @@
|
||||
turf_type = /turf/simulated/floor/carpet
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/*
|
||||
* Plasteel
|
||||
*/
|
||||
//Plasteel
|
||||
/obj/item/stack/tile/plasteel
|
||||
name = "floor tiles"
|
||||
gender = PLURAL
|
||||
@@ -80,9 +116,7 @@
|
||||
turf_type = /turf/simulated/floor/plasteel
|
||||
mineralType = "metal"
|
||||
|
||||
/*
|
||||
* Light
|
||||
*/
|
||||
//Light
|
||||
/obj/item/stack/tile/light
|
||||
name = "light tiles"
|
||||
gender = PLURAL
|
||||
@@ -94,9 +128,7 @@
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed")
|
||||
turf_type = /turf/simulated/floor/light
|
||||
|
||||
/*
|
||||
* Fakespace
|
||||
*/
|
||||
//Fakespace
|
||||
/obj/item/stack/tile/fakespace
|
||||
name = "astral carpet"
|
||||
singular_name = "astral carpet"
|
||||
@@ -120,16 +152,6 @@
|
||||
/obj/item/stack/tile/noslip/loaded
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/silent
|
||||
name = "silent tile"
|
||||
singular_name = "silent floor tile"
|
||||
desc = "A tile made out of tranquillite, SHHHHHHHHH!"
|
||||
icon_state = "tile-silent"
|
||||
origin_tech = "materials=1"
|
||||
turf_type = /turf/simulated/floor/silent
|
||||
mineralType = "tranquillite"
|
||||
materials = list(MAT_TRANQUILLITE=500)
|
||||
|
||||
//Pod floor
|
||||
/obj/item/stack/tile/pod
|
||||
name = "pod floor tile"
|
||||
|
||||
@@ -43,14 +43,20 @@
|
||||
/obj/item/toy/balloon/attack(mob/living/carbon/human/M as mob, mob/user as mob)
|
||||
return
|
||||
|
||||
/obj/item/toy/balloon/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1)
|
||||
A.reagents.trans_to(src, 10)
|
||||
to_chat(user, "<span class='notice'>You fill the balloon with the contents of [A].</span>")
|
||||
desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
update_icon()
|
||||
return
|
||||
/obj/item/toy/balloon/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(istype(A, /obj/structure/reagent_dispensers))
|
||||
var/obj/structure/reagent_dispensers/RD = A
|
||||
if(RD.reagents.total_volume <= 0)
|
||||
to_chat(user, "<span class='warning'>[RD] is empty.</span>")
|
||||
else if(reagents.total_volume >= 10)
|
||||
to_chat(user, "<span class='warning'>[src] is full.</span>")
|
||||
else
|
||||
A.reagents.trans_to(src, 10)
|
||||
to_chat(user, "<span class='notice'>You fill the balloon with the contents of [A].</span>")
|
||||
desc = "A translucent balloon with some form of liquid sloshing around in it."
|
||||
update_icon()
|
||||
|
||||
/obj/item/toy/balloon/wash(mob/user, atom/source)
|
||||
if(reagents.total_volume < 10)
|
||||
@@ -877,7 +883,7 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
|
||||
/obj/item/toy/minimeteor
|
||||
name = "Mini-Meteor"
|
||||
desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor"
|
||||
desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "minimeteor"
|
||||
w_class = 2
|
||||
|
||||
@@ -49,6 +49,10 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/implant/storage/proc/get_contents() //Used for swiftly returning a list of the implant's contents i.e. for checking a theft objective's completion.
|
||||
if(storage && storage.contents)
|
||||
return storage.contents
|
||||
|
||||
/obj/item/weapon/implanter/storage
|
||||
name = "implanter (storage)"
|
||||
|
||||
|
||||
@@ -30,6 +30,14 @@
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/on_varedit(modified_var)
|
||||
if(modified_var == "self_recharge")
|
||||
if(self_recharge)
|
||||
processing_objects.Add(src)
|
||||
else
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/suicide_act(mob/user)
|
||||
to_chat(viewers(user), "<span class='suicide'>[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
return (FIRELOSS)
|
||||
|
||||
@@ -391,59 +391,32 @@
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube")
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src)
|
||||
/obj/item/weapon/storage/box/farwacubes
|
||||
var/monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/New()
|
||||
..()
|
||||
for(var/i in 1 to 5)
|
||||
new monkey_cube_type(src)
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/farwacubes
|
||||
name = "farwa cube box"
|
||||
desc = "Drymate brand farwa cubes. Just add water!"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube")
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube(src)
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube
|
||||
|
||||
/obj/item/weapon/storage/box/stokcubes
|
||||
/obj/item/weapon/storage/box/monkeycubes/stokcubes
|
||||
name = "stok cube box"
|
||||
desc = "Drymate brand stok cubes. Just add water!"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube")
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube(src)
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube
|
||||
|
||||
/obj/item/weapon/storage/box/neaeracubes
|
||||
/obj/item/weapon/storage/box/monkeycubes/neaeracubes
|
||||
name = "neaera cube box"
|
||||
desc = "Drymate brand neaera cubes. Just add water!"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube")
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube(src)
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube
|
||||
|
||||
|
||||
/obj/item/weapon/storage/box/wolpincubes
|
||||
/obj/item/weapon/storage/box/monkeycubes/wolpincubes
|
||||
name = "wolpin cube box"
|
||||
desc = "Drymate brand wolpin cubes. Just add water!"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "monkeycubebox"
|
||||
storage_slots = 7
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube")
|
||||
New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/wolpincube(src)
|
||||
|
||||
monkey_cube_type = /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wolpincube
|
||||
|
||||
/obj/item/weapon/storage/box/permits
|
||||
name = "box of construction permits"
|
||||
|
||||
@@ -266,22 +266,9 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if(istype(O, /obj/structure/reagent_dispensers/fueltank) && in_range(src, O))
|
||||
if(!welding)
|
||||
O.reagents.trans_to(src, max_fuel)
|
||||
to_chat(user, "<span class='notice'>[src] refueled.</span>")
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion.")
|
||||
to_chat(user, "<span class='warning'>That was stupid of you.</span>")
|
||||
O.ex_act()
|
||||
return
|
||||
|
||||
/obj/item/weapon/weldingtool/afterattack(atom/O, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(welding)
|
||||
remove_fuel(1)
|
||||
var/turf/location = get_turf(user)
|
||||
@@ -289,7 +276,9 @@
|
||||
|
||||
if(isliving(O))
|
||||
var/mob/living/L = O
|
||||
L.IgniteMob()
|
||||
if(L.IgniteMob())
|
||||
message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire")
|
||||
log_game("[key_name(user)] set [key_name(L)] on fire")
|
||||
|
||||
/obj/item/weapon/weldingtool/attack_self(mob/user)
|
||||
toggle(user)
|
||||
|
||||
@@ -572,3 +572,38 @@
|
||||
new /obj/item/weapon/storage/box/beakers(src)
|
||||
new /obj/item/weapon/hand_labeler(src)
|
||||
new /obj/item/weapon/hand_labeler(src)
|
||||
|
||||
/obj/structure/closet/crate/sci
|
||||
name = "science crate"
|
||||
desc = "A science crate."
|
||||
icon_state = "scicrate"
|
||||
icon_opened = "scicrateopen"
|
||||
icon_closed = "scicrate"
|
||||
|
||||
/obj/structure/closet/crate/secure/scisec
|
||||
name = "secure science crate"
|
||||
desc = "A crate with a lock on it, painted in the scheme of the station's scientists."
|
||||
icon_state = "scisecurecrate"
|
||||
icon_opened = "scisecurecrateopen"
|
||||
icon_closed = "scisecurecrate"
|
||||
|
||||
/obj/structure/closet/crate/engineering
|
||||
name = "engineering crate"
|
||||
desc = "An engineering crate."
|
||||
icon_state = "engicrate"
|
||||
icon_opened = "engicrateopen"
|
||||
icon_closed = "engicrate"
|
||||
|
||||
/obj/structure/closet/crate/secure/engineering
|
||||
name = "secure engineering crate"
|
||||
desc = "A crate with a lock on it, painted in the scheme of the station's engineers."
|
||||
icon_state = "engisecurecrate"
|
||||
icon_opened = "engisecurecrateopen"
|
||||
icon_closed = "engisecurecrate"
|
||||
|
||||
/obj/structure/closet/crate/engineering/electrical
|
||||
name = "electrical engineering crate"
|
||||
desc = "An electrical engineering crate."
|
||||
icon_state = "electricalcrate"
|
||||
icon_opened = "electricalcrateopen"
|
||||
icon_closed = "electricalcrate"
|
||||
|
||||
Reference in New Issue
Block a user