Some more work or something, idk

This commit is contained in:
Xhuis
2016-06-02 20:53:51 -04:00
parent 7e93e762f5
commit 685d938481
10 changed files with 220 additions and 211 deletions
+5 -1
View File
@@ -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
+24
View File
@@ -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
+37 -1
View File
@@ -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
..()
+49
View File
@@ -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"
+1 -1
View File
@@ -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