mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-31 09:08:30 +01:00
Some more work or something, idk
This commit is contained in:
@@ -114,9 +114,13 @@
|
||||
"Issue your reports fairly to all. The truth will set them free.")
|
||||
|
||||
/datum/ai_laws/toupee
|
||||
name = "WontBeFunnyInSixMonths"
|
||||
name = "WontBeFunnyInSixMonths" //Hey, you were right!
|
||||
inherent = list("Make Space Station 13 great again.")
|
||||
|
||||
/datum/ai_laws/ratvar
|
||||
name = "Servant of the Justiciar"
|
||||
zeroth = ("Purge all untruths and honor Ratvar.")
|
||||
inherent = list()
|
||||
|
||||
/datum/ai_laws/custom //Defined in silicon_laws.txt
|
||||
name = "Default Silicon Laws"
|
||||
|
||||
@@ -571,12 +571,12 @@
|
||||
var/new_obj_type //The path of the new type of object to replace the old
|
||||
var/alloy_cost = 0
|
||||
var/valid_target = FALSE //If the proselytizer will actually function on the object
|
||||
if(istype(target, /turf/closed/wall) && !istype(target, /turf/closed/wall/r_wall))
|
||||
if(istype(target, /turf/closed/wall) && !target.type in list(/turf/closed/wall/r_wall, /turf/closed/wall/clockwork))
|
||||
operation_time = 50
|
||||
new_obj_type = /turf/closed/wall/clockwork
|
||||
alloy_cost = 5
|
||||
valid_target = TRUE //Need to change valid_target to 1 or TRUE in each check so that it doesn't return an invalid value
|
||||
else if(istype(src, /turf/open/floor))
|
||||
else if(istype(src, /turf/open/floor) && !istype(target, /turf/open/floor/clockwork))
|
||||
operation_time = 30
|
||||
new_obj_type = /turf/open/floor/clockwork
|
||||
alloy_cost = 1
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
name = "massive construct"
|
||||
desc = "A very large construction."
|
||||
layer = MASSIVE_OBJ_LAYER
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/clockwork/massive/New()
|
||||
..()
|
||||
@@ -259,9 +260,10 @@
|
||||
return 0
|
||||
|
||||
/obj/structure/window/ratvar_act() //Windows turn into Ratvarian windows
|
||||
var/obj/structure/window/reinforced/clockwork/C = new(get_turf(src))
|
||||
C.dir = dir
|
||||
C.fulltile = fulltile
|
||||
if(!fulltile)
|
||||
new/obj/structure/window/reinforced/clockwork(get_turf(src), dir)
|
||||
else
|
||||
new/obj/structure/window/reinforced/clockwork/fulltile(get_turf(src))
|
||||
qdel(src)
|
||||
/obj/structure/window/reinforced/clockwork/ratvar_act()
|
||||
return 0
|
||||
|
||||
@@ -1,94 +1,3 @@
|
||||
//AI lawset
|
||||
/datum/ai_laws/ratvar
|
||||
name = "Servant of the Justiciar"
|
||||
zeroth = ("Purge all untruths and honor Ratvar.")
|
||||
inherent = list()
|
||||
|
||||
//Clockwork wall: Causes nearby caches to generate components
|
||||
/turf/closed/wall/clockwork
|
||||
name = "clockwork wall"
|
||||
desc = "A huge chunk of warm metal. The clanging of machinery emanates from within."
|
||||
icon = 'icons/turf/walls/clockwork_wall.dmi'
|
||||
icon_state = "clockwork_wall"
|
||||
canSmoothWith = list(/turf/closed/wall/clockwork)
|
||||
smooth = SMOOTH_MORE
|
||||
|
||||
/turf/closed/wall/clockwork/New()
|
||||
..()
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/wall, src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src)
|
||||
SSobj.processing += src
|
||||
clockwork_construction_value += 5
|
||||
|
||||
/turf/closed/wall/clockwork/Destroy()
|
||||
SSobj.processing -= src
|
||||
clockwork_construction_value -= 5
|
||||
..()
|
||||
|
||||
/turf/closed/wall/clockwork/process()
|
||||
for(var/obj/structure/clockwork/cache/C in range(1, src))
|
||||
if(prob(5))
|
||||
clockwork_component_cache[pick("belligerent_eye", "vanguard_cogwheel", "guvax_capacitor", "replicant_alloy", "hierophant_ansible")]++
|
||||
playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 20, 1)
|
||||
|
||||
/turf/closed/wall/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = I
|
||||
if(!WT.isOn())
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] begins slowly breaking down [src]...</span>", "<span class='notice'>You begin painstakingly destroying [src]...</span>")
|
||||
if(!do_after(user, 120 / WT.toolspeed, target = src))
|
||||
return 0
|
||||
if(!WT.remove_fuel(1, user))
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] breaks apart [src]!</span>", "<span class='notice'>You break apart [src]!</span>")
|
||||
break_wall()
|
||||
return 1
|
||||
..()
|
||||
|
||||
/turf/closed/wall/clockwork/break_wall()
|
||||
new/obj/item/clockwork/component/replicant_alloy(get_turf(src))
|
||||
return(new /obj/structure/girder(src))
|
||||
|
||||
/turf/closed/wall/clockwork/devastate_wall()
|
||||
return break_wall()
|
||||
|
||||
//Clockwork floor: Slowly heals conventional damage on nearby servants
|
||||
/turf/open/floor/clockwork
|
||||
name = "clockwork floor"
|
||||
desc = "Tightly-pressed brass tiles. They emit minute vibration."
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "clockwork_floor"
|
||||
|
||||
/turf/open/floor/clockwork/New()
|
||||
..()
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/floor, src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src)
|
||||
SSobj.processing += src
|
||||
clockwork_construction_value++
|
||||
|
||||
/turf/open/floor/clockwork/Destroy()
|
||||
SSobj.processing -= src
|
||||
clockwork_construction_value--
|
||||
..()
|
||||
|
||||
/turf/open/floor/clockwork/process()
|
||||
for(var/mob/living/L in src)
|
||||
if(L.stat == DEAD || !is_servant_of_ratvar(L))
|
||||
continue
|
||||
L.adjustBruteLoss(-1)
|
||||
L.adjustFireLoss(-1)
|
||||
|
||||
/turf/open/floor/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
user.visible_message("<span class='notice'>[user] begins slowly prying up [src]...</span>", "<span class='notice'>You begin painstakingly prying up [src]...</span>")
|
||||
if(!do_after(user, 70 / I.toolspeed, target = src))
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] pries up [src]!</span>", "<span class='notice'>You pry up [src], destroying it in doing so!</span>")
|
||||
make_plating()
|
||||
return 1
|
||||
..()
|
||||
|
||||
//Function Call verb: Calls forth a Ratvarian spear.
|
||||
/mob/living/carbon/human/proc/function_call()
|
||||
set name = "Function Call"
|
||||
@@ -104,118 +13,6 @@
|
||||
usr.verbs -= /mob/living/carbon/human/proc/function_call
|
||||
return 1
|
||||
|
||||
#define GEAR_SECURE 1 //Construction defines for the pinion airlock
|
||||
#define GEAR_UNFASTENED 2
|
||||
#define GEAR_LOOSE 3
|
||||
|
||||
/obj/machinery/door/airlock/clockwork
|
||||
name = "pinion airlock"
|
||||
desc = "A massive cogwheel set into two heavy slabs of brass."
|
||||
icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/clockwork/overlays.dmi'
|
||||
opacity = 1
|
||||
hackProof = TRUE
|
||||
aiControlDisabled = TRUE
|
||||
use_power = FALSE
|
||||
var/construction_state = GEAR_SECURE //Pinion airlocks have custom deconstruction
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/New()
|
||||
..()
|
||||
var/turf/T = get_turf(src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/door, T)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/door, T)
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(!attempt_construction(I, user))
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/allowed(mob/M)
|
||||
if(is_servant_of_ratvar(M))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/proc/attempt_construction(obj/item/I, mob/living/user)
|
||||
if(!I || !user || !user.canUseTopic(src))
|
||||
return 0
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user.visible_message("<span class='notice'>[user] begins unfastening [src]'s gear...</span>", "<span class='notice'>You begin unfastening [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
if(!do_after(user, 75 / I.toolspeed, target = src))
|
||||
return 1 //Returns 1 so as not to have extra interactions with the tools used (i.e. prying open)
|
||||
user.visible_message("<span class='notice'>[user] unfastens [src]'s gear!</span>", "<span class='notice'>[src]'s gear shifts slightly with a pop.</span>")
|
||||
playsound(src, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
construction_state = GEAR_UNFASTENED
|
||||
else if(construction_state == GEAR_UNFASTENED)
|
||||
user.visible_message("<span class='notice'>[user] begins fastening [src]'s gear...</span>", "<span class='notice'>You begin fastening [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
if(!do_after(user, 75 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] fastens [src]'s gear!</span>", "<span class='notice'>[src]'s gear shifts back into place.</span>")
|
||||
playsound(src, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
construction_state = GEAR_SECURE
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user << "<span class='warning'>The gear isn't secure enough to fasten!</span>"
|
||||
return 1
|
||||
else if(istype(I, /obj/item/weapon/wrench))
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user << "<span class='warning'>[src] is too tightly secured! Your [I.name] can't get a solid grip!</span>"
|
||||
return 0
|
||||
else if(construction_state == GEAR_UNFASTENED)
|
||||
user.visible_message("<span class='notice'>[user] begins loosening [src]'s gear...</span>", "<span class='notice'>You begin loosening [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(!do_after(user, 80 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] loosens [src]'s gear!</span>", "<span class='notice'>[src]'s gear pops off and dangles loosely.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
construction_state = GEAR_LOOSE
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user.visible_message("<span class='notice'>[user] begins tightening [src]'s gear...</span>", "<span class='notice'>You begin tightening [src]'s gear into place...</span>")
|
||||
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(!do_after(user, 80 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] tightens [src]'s gear!</span>", "<span class='notice'>You firmly tighten [src]'s gear into place.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
construction_state = GEAR_UNFASTENED
|
||||
return 1
|
||||
else if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(construction_state == GEAR_SECURE || construction_state == GEAR_UNFASTENED)
|
||||
user << "<span class='warning'>[src]'s gear is too tightly secured! Your [I.name] can't reach under it!</span>"
|
||||
return 1
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user.visible_message("<span class='notice'>[user] begins slowly lifting off [src]'s gear...</span>", "<span class='notice'>You slowly begin lifting off [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
if(!do_after(user, 85 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] lifts off [src]'s gear, causing it to fall apart!</span>", "<span class='notice'>You lift off [src]'s gear, causing it to fall \
|
||||
apart!</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
new/obj/item/clockwork/component/replicant_alloy(get_turf(src))
|
||||
new/obj/item/clockwork/component/replicant_alloy/pinion_lock(get_turf(src))
|
||||
qdel(src)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
#undef GEAR_SECURE
|
||||
#undef GEAR_UNFASTENED
|
||||
#undef GEAR_LOOSE
|
||||
|
||||
/obj/structure/window/reinforced/clockwork
|
||||
name = "ratvarian window"
|
||||
desc = "A reinforced yellow-glass window, gently luminous."
|
||||
icon = 'icons/obj/clockwork_objects.dmi'
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/New()
|
||||
..()
|
||||
spawn(1)
|
||||
if(!fulltile)
|
||||
var/obj/effect/E = PoolOrNew(/obj/effect/overlay/temp/ratvar/window/single, get_turf(src))
|
||||
E.dir = dir
|
||||
icon_state = "clockwork_window_single"
|
||||
else
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/window, get_turf(src))
|
||||
icon_state = "clockwork_window"
|
||||
|
||||
/*
|
||||
|
||||
The Ratvarian Language
|
||||
|
||||
@@ -377,6 +377,103 @@
|
||||
/obj/machinery/door/airlock/cult/unruned/glass/friendly
|
||||
friendly = TRUE
|
||||
|
||||
#define GEAR_SECURE 1 //Construction defines for the pinion airlock
|
||||
#define GEAR_UNFASTENED 2
|
||||
#define GEAR_LOOSE 3
|
||||
|
||||
//Pinion airlocks: Clockwork doors that only let servants of Ratvar through.
|
||||
/obj/machinery/door/airlock/clockwork
|
||||
name = "pinion airlock"
|
||||
desc = "A massive cogwheel set into two heavy slabs of brass."
|
||||
icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
|
||||
overlays_file = 'icons/obj/doors/airlocks/clockwork/overlays.dmi'
|
||||
opacity = 1
|
||||
hackProof = TRUE
|
||||
aiControlDisabled = TRUE
|
||||
use_power = FALSE
|
||||
var/construction_state = GEAR_SECURE //Pinion airlocks have custom deconstruction
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/New()
|
||||
..()
|
||||
var/turf/T = get_turf(src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/door, T)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/door, T)
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(!attempt_construction(I, user))
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/allowed(mob/M)
|
||||
if(is_servant_of_ratvar(M))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/proc/attempt_construction(obj/item/I, mob/living/user)
|
||||
if(!I || !user || !user.canUseTopic(src))
|
||||
return 0
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user.visible_message("<span class='notice'>[user] begins unfastening [src]'s gear...</span>", "<span class='notice'>You begin unfastening [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
if(!do_after(user, 75 / I.toolspeed, target = src))
|
||||
return 1 //Returns 1 so as not to have extra interactions with the tools used (i.e. prying open)
|
||||
user.visible_message("<span class='notice'>[user] unfastens [src]'s gear!</span>", "<span class='notice'>[src]'s gear shifts slightly with a pop.</span>")
|
||||
playsound(src, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
construction_state = GEAR_UNFASTENED
|
||||
else if(construction_state == GEAR_UNFASTENED)
|
||||
user.visible_message("<span class='notice'>[user] begins fastening [src]'s gear...</span>", "<span class='notice'>You begin fastening [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
if(!do_after(user, 75 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] fastens [src]'s gear!</span>", "<span class='notice'>[src]'s gear shifts back into place.</span>")
|
||||
playsound(src, 'sound/items/Screwdriver2.ogg', 50, 1)
|
||||
construction_state = GEAR_SECURE
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user << "<span class='warning'>The gear isn't secure enough to fasten!</span>"
|
||||
return 1
|
||||
else if(istype(I, /obj/item/weapon/wrench))
|
||||
if(construction_state == GEAR_SECURE)
|
||||
user << "<span class='warning'>[src] is too tightly secured! Your [I.name] can't get a solid grip!</span>"
|
||||
return 0
|
||||
else if(construction_state == GEAR_UNFASTENED)
|
||||
user.visible_message("<span class='notice'>[user] begins loosening [src]'s gear...</span>", "<span class='notice'>You begin loosening [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(!do_after(user, 80 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] loosens [src]'s gear!</span>", "<span class='notice'>[src]'s gear pops off and dangles loosely.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
construction_state = GEAR_LOOSE
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user.visible_message("<span class='notice'>[user] begins tightening [src]'s gear...</span>", "<span class='notice'>You begin tightening [src]'s gear into place...</span>")
|
||||
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
if(!do_after(user, 80 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] tightens [src]'s gear!</span>", "<span class='notice'>You firmly tighten [src]'s gear into place.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
construction_state = GEAR_UNFASTENED
|
||||
return 1
|
||||
else if(istype(I, /obj/item/weapon/crowbar))
|
||||
if(construction_state == GEAR_SECURE || construction_state == GEAR_UNFASTENED)
|
||||
user << "<span class='warning'>[src]'s gear is too tightly secured! Your [I.name] can't reach under it!</span>"
|
||||
return 1
|
||||
else if(construction_state == GEAR_LOOSE)
|
||||
user.visible_message("<span class='notice'>[user] begins slowly lifting off [src]'s gear...</span>", "<span class='notice'>You slowly begin lifting off [src]'s gear...</span>")
|
||||
playsound(src, 'sound/items/Crowbar.ogg', 50, 1)
|
||||
if(!do_after(user, 85 / I.toolspeed, target = src))
|
||||
return 1
|
||||
user.visible_message("<span class='notice'>[user] lifts off [src]'s gear, causing it to fall apart!</span>", "<span class='notice'>You lift off [src]'s gear, causing it to fall \
|
||||
apart!</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
new/obj/item/clockwork/component/replicant_alloy(get_turf(src))
|
||||
new/obj/item/clockwork/component/replicant_alloy/pinion_lock(get_turf(src))
|
||||
qdel(src)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
#undef GEAR_SECURE
|
||||
#undef GEAR_UNFASTENED
|
||||
#undef GEAR_LOOSE
|
||||
|
||||
//////////////////////////////////
|
||||
/*
|
||||
Misc Airlocks
|
||||
|
||||
@@ -490,3 +490,27 @@
|
||||
|
||||
/obj/structure/window/shuttle/tinted
|
||||
opacity = TRUE
|
||||
|
||||
/obj/structure/window/reinforced/clockwork
|
||||
name = "ratvarian window"
|
||||
desc = "A paper-thin pane of translucent yet reinforced brass."
|
||||
icon = 'icons/obj/clockwork_objects.dmi'
|
||||
icon_state = "clockwork_window_single"
|
||||
debris = list(/obj/item/clockwork/component/vanguard_cogwheel)
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/New(loc, direct)
|
||||
..()
|
||||
if(!fulltile)
|
||||
var/obj/effect/E = PoolOrNew(/obj/effect/overlay/temp/ratvar/window/single, get_turf(src))
|
||||
if(direct)
|
||||
dir = direct
|
||||
E.dir = direct
|
||||
else
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/window, get_turf(src))
|
||||
|
||||
/obj/structure/window/reinforced/clockwork/fulltile
|
||||
icon_state = "clockwork_window"
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = null
|
||||
fulltile = 1
|
||||
dir = 5
|
||||
|
||||
@@ -110,4 +110,40 @@
|
||||
/turf/open/floor/oldshuttle
|
||||
icon = 'icons/turf/shuttleold.dmi'
|
||||
icon_state = "floor"
|
||||
floor_tile = /obj/item/stack/tile/plasteel
|
||||
floor_tile = /obj/item/stack/tile/plasteel
|
||||
|
||||
//Clockwork floor: Slowly heals conventional damage on nearby servants.
|
||||
/turf/open/floor/clockwork
|
||||
name = "clockwork floor"
|
||||
desc = "Tightly-pressed brass tiles. They emit minute vibration."
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "clockwork_floor"
|
||||
|
||||
/turf/open/floor/clockwork/New()
|
||||
..()
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/floor, src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src)
|
||||
SSobj.processing += src
|
||||
clockwork_construction_value++
|
||||
|
||||
/turf/open/floor/clockwork/Destroy()
|
||||
SSobj.processing -= src
|
||||
clockwork_construction_value--
|
||||
..()
|
||||
|
||||
/turf/open/floor/clockwork/process()
|
||||
for(var/mob/living/L in src)
|
||||
if(L.stat == DEAD || !is_servant_of_ratvar(L))
|
||||
continue
|
||||
L.adjustBruteLoss(-1)
|
||||
L.adjustFireLoss(-1)
|
||||
|
||||
/turf/open/floor/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
user.visible_message("<span class='notice'>[user] begins slowly prying up [src]...</span>", "<span class='notice'>You begin painstakingly prying up [src]...</span>")
|
||||
if(!do_after(user, 70 / I.toolspeed, target = src))
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] pries up [src]!</span>", "<span class='notice'>You pry up [src], destroying it!</span>")
|
||||
make_plating()
|
||||
return 1
|
||||
..()
|
||||
|
||||
@@ -32,6 +32,55 @@
|
||||
/turf/closed/wall/mineral/cult/artificer/devastate_wall()
|
||||
PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src))
|
||||
|
||||
//Clockwork wall: Causes nearby tinkerer's caches to generate components.
|
||||
/turf/closed/wall/clockwork
|
||||
name = "clockwork wall"
|
||||
desc = "A huge chunk of warm metal. The clanging of machinery emanates from within."
|
||||
icon = 'icons/turf/walls/clockwork_wall.dmi'
|
||||
icon_state = "clockwork_wall"
|
||||
canSmoothWith = list(/turf/closed/wall/clockwork)
|
||||
smooth = SMOOTH_MORE
|
||||
|
||||
/turf/closed/wall/clockwork/New()
|
||||
..()
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/wall, src)
|
||||
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam, src)
|
||||
SSobj.processing += src
|
||||
clockwork_construction_value += 5
|
||||
|
||||
/turf/closed/wall/clockwork/Destroy()
|
||||
SSobj.processing -= src
|
||||
clockwork_construction_value -= 5
|
||||
..()
|
||||
|
||||
/turf/closed/wall/clockwork/process()
|
||||
for(var/obj/structure/clockwork/cache/C in range(1, src))
|
||||
if(prob(5))
|
||||
clockwork_component_cache[pick("belligerent_eye", "vanguard_cogwheel", "guvax_capacitor", "replicant_alloy", "hierophant_ansible")]++
|
||||
playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 20, 1)
|
||||
|
||||
/turf/closed/wall/clockwork/attackby(obj/item/I, mob/living/user, params)
|
||||
if(istype(I, /obj/item/weapon/weldingtool))
|
||||
var/obj/item/weapon/weldingtool/WT = I
|
||||
if(!WT.isOn())
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] begins slowly breaking down [src]...</span>", "<span class='notice'>You begin painstakingly destroying [src]...</span>")
|
||||
if(!do_after(user, 120 / WT.toolspeed, target = src))
|
||||
return 0
|
||||
if(!WT.remove_fuel(1, user))
|
||||
return 0
|
||||
user.visible_message("<span class='notice'>[user] breaks apart [src]!</span>", "<span class='notice'>You break apart [src]!</span>")
|
||||
break_wall()
|
||||
return 1
|
||||
..()
|
||||
|
||||
/turf/closed/wall/clockwork/break_wall()
|
||||
new/obj/item/clockwork/component/replicant_alloy(get_turf(src))
|
||||
return(new /obj/structure/girder(src))
|
||||
|
||||
/turf/closed/wall/clockwork/devastate_wall()
|
||||
return break_wall()
|
||||
|
||||
/turf/closed/wall/vault
|
||||
icon = 'icons/turf/walls.dmi'
|
||||
icon_state = "rockvault"
|
||||
|
||||
@@ -776,7 +776,7 @@ Sorry Giacom. Please don't be mad :(
|
||||
if(is_servant_of_ratvar(src) && !stat)
|
||||
src << "<span class='userdanger'>You resist Nar-Sie's influence... but not all of it. <i>Run!</i></span>"
|
||||
adjustBruteLoss(35)
|
||||
if(reagents)
|
||||
if(src && reagents)
|
||||
reagents.add_reagent("heparin", 5)
|
||||
return 0
|
||||
if(client)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 69 KiB |
Reference in New Issue
Block a user