mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-17 05:03:28 +00:00
Adds a few turf istype helpers (#20754)
* a very calming act when the world is too much, too fast * i'm tired but i have to be efficient, infinite * lick your lips at the sight of me a fantasy made reality
This commit is contained in:
@@ -4,13 +4,32 @@
|
|||||||
|
|
||||||
#define in_range(source, user) (get_dist(source, user) <= 1)
|
#define in_range(source, user) (get_dist(source, user) <= 1)
|
||||||
|
|
||||||
#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable
|
#define ismovableatom(A) (istype(A, /atom/movable))
|
||||||
|
|
||||||
// MOB HELPERS
|
//Turfs
|
||||||
|
#define isopenturf(A) (istype(A, /turf/open))
|
||||||
|
|
||||||
|
#define isspaceturf(A) (istype(A, /turf/open/space))
|
||||||
|
|
||||||
|
#define isfloorturf(A) (istype(A, /turf/open/floor))
|
||||||
|
|
||||||
|
#define isclosedturf(A) (istype(A, /turf/closed))
|
||||||
|
|
||||||
|
#define iswallturf(A) (istype(A, /turf/closed/wall))
|
||||||
|
|
||||||
|
#define ismineralturf(A) (istype(A, /turf/closed/mineral))
|
||||||
|
|
||||||
|
//Mobs
|
||||||
|
#define isliving(A) (istype(A, /mob/living))
|
||||||
|
|
||||||
|
#define isbrain(A) (istype(A, /mob/living/brain))
|
||||||
|
|
||||||
|
//Carbon mobs
|
||||||
|
#define iscarbon(A) (istype(A, /mob/living/carbon))
|
||||||
|
|
||||||
#define ishuman(A) (istype(A, /mob/living/carbon/human))
|
#define ishuman(A) (istype(A, /mob/living/carbon/human))
|
||||||
|
|
||||||
// Human sub-species
|
//Human sub-species
|
||||||
#define isabductor(A) (is_species(A, /datum/species/abductor))
|
#define isabductor(A) (is_species(A, /datum/species/abductor))
|
||||||
#define isgolem(A) (is_species(A, /datum/species/golem))
|
#define isgolem(A) (is_species(A, /datum/species/golem))
|
||||||
#define islizard(A) (is_species(A, /datum/species/lizard))
|
#define islizard(A) (is_species(A, /datum/species/lizard))
|
||||||
@@ -22,80 +41,78 @@
|
|||||||
#define iszombie(A) (is_species(A, /datum/species/zombie))
|
#define iszombie(A) (is_species(A, /datum/species/zombie))
|
||||||
#define ishumanbasic(A) (is_species(A, /datum/species/human))
|
#define ishumanbasic(A) (is_species(A, /datum/species/human))
|
||||||
|
|
||||||
|
//more carbon mobs
|
||||||
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
|
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
|
||||||
|
|
||||||
#define isbrain(A) (istype(A, /mob/living/brain))
|
|
||||||
|
|
||||||
#define isalien(A) (istype(A, /mob/living/carbon/alien))
|
#define isalien(A) (istype(A, /mob/living/carbon/alien))
|
||||||
|
|
||||||
#define isalienadult(A) (istype(A, /mob/living/carbon/alien/humanoid))
|
|
||||||
|
|
||||||
#define islarva(A) (istype(A, /mob/living/carbon/alien/larva))
|
#define islarva(A) (istype(A, /mob/living/carbon/alien/larva))
|
||||||
|
|
||||||
#define isslime(A) (istype(A, /mob/living/simple_animal/slime))
|
#define isalienadult(A) (istype(A, /mob/living/carbon/alien/humanoid))
|
||||||
|
|
||||||
#define isrobot(A) (istype(A, /mob/living/silicon/robot))
|
//Silicon mobs
|
||||||
|
#define issilicon(A) (istype(A, /mob/living/silicon))
|
||||||
|
|
||||||
#define isanimal(A) (istype(A, /mob/living/simple_animal))
|
#define iscyborg(A) (istype(A, /mob/living/silicon/robot))
|
||||||
|
|
||||||
#define iscorgi(A) (istype(A, /mob/living/simple_animal/pet/dog/corgi))
|
|
||||||
|
|
||||||
#define iscrab(A) (istype(A, /mob/living/simple_animal/crab))
|
|
||||||
|
|
||||||
#define iscat(A) (istype(A, /mob/living/simple_animal/pet/cat))
|
|
||||||
|
|
||||||
#define ismouse(A) (istype(A, /mob/living/simple_animal/mouse))
|
|
||||||
|
|
||||||
#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct))
|
|
||||||
|
|
||||||
#define isclockmob(A) (istype(A, /mob/living/simple_animal/hostile/clockwork))
|
|
||||||
|
|
||||||
#define ismegafauna(A) (istype(A, /mob/living/simple_animal/hostile/megafauna))
|
|
||||||
|
|
||||||
#define isshade(A) (istype(A, /mob/living/simple_animal/shade))
|
|
||||||
|
|
||||||
#define isbear(A) (istype(A, /mob/living/simple_animal/hostile/bear))
|
|
||||||
|
|
||||||
#define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp))
|
|
||||||
|
|
||||||
#define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown))
|
|
||||||
|
|
||||||
#define isAI(A) (istype(A, /mob/living/silicon/ai))
|
#define isAI(A) (istype(A, /mob/living/silicon/ai))
|
||||||
|
|
||||||
#define ispAI(A) (istype(A, /mob/living/silicon/pai))
|
#define ispAI(A) (istype(A, /mob/living/silicon/pai))
|
||||||
|
|
||||||
#define iscarbon(A) (istype(A, /mob/living/carbon))
|
//Simple animals
|
||||||
|
#define isanimal(A) (istype(A, /mob/living/simple_animal))
|
||||||
|
|
||||||
#define issilicon(A) (istype(A, /mob/living/silicon))
|
#define isbot(A) (istype(A, /mob/living/simple_animal/bot))
|
||||||
|
|
||||||
#define iscyborg(A) (istype(A, /mob/living/silicon/robot))
|
#define iscrab(A) (istype(A, /mob/living/simple_animal/crab))
|
||||||
|
|
||||||
#define isliving(A) (istype(A, /mob/living))
|
#define isshade(A) (istype(A, /mob/living/simple_animal/shade))
|
||||||
|
|
||||||
|
#define ismouse(A) (istype(A, /mob/living/simple_animal/mouse))
|
||||||
|
|
||||||
|
#define isslime(A) (istype(A, /mob/living/simple_animal/slime))
|
||||||
|
|
||||||
|
#define isdrone(A) (istype(A, /mob/living/simple_animal/drone))
|
||||||
|
|
||||||
|
#define iscat(A) (istype(A, /mob/living/simple_animal/pet/cat))
|
||||||
|
|
||||||
|
#define isdog(A) (istype(A, /mob/living/simple_animal/pet/dog))
|
||||||
|
|
||||||
|
#define iscorgi(A) (istype(A, /mob/living/simple_animal/pet/dog/corgi))
|
||||||
|
|
||||||
|
#define ishostile(A) (istype(A, /mob/living/simple_animal/hostile))
|
||||||
|
|
||||||
|
#define isbear(A) (istype(A, /mob/living/simple_animal/hostile/bear))
|
||||||
|
|
||||||
|
#define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp))
|
||||||
|
|
||||||
|
#define isswarmer(A) (istype(A, /mob/living/simple_animal/hostile/swarmer))
|
||||||
|
|
||||||
|
#define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian))
|
||||||
|
|
||||||
|
#define isclockmob(A) (istype(A, /mob/living/simple_animal/hostile/clockwork))
|
||||||
|
|
||||||
|
#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct))
|
||||||
|
|
||||||
|
#define ismegafauna(A) (istype(A, /mob/living/simple_animal/hostile/megafauna))
|
||||||
|
|
||||||
|
#define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown))
|
||||||
|
|
||||||
|
//Misc mobs
|
||||||
#define isobserver(A) (istype(A, /mob/dead/observer))
|
#define isobserver(A) (istype(A, /mob/dead/observer))
|
||||||
|
|
||||||
#define isnewplayer(A) (istype(A, /mob/new_player))
|
#define isnewplayer(A) (istype(A, /mob/new_player))
|
||||||
|
|
||||||
#define isovermind(A) (istype(A, /mob/camera/blob))
|
#define isovermind(A) (istype(A, /mob/camera/blob))
|
||||||
|
|
||||||
#define isdrone(A) (istype(A, /mob/living/simple_animal/drone))
|
//Objects
|
||||||
|
#define isobj(A) istype(A, /obj) //override the byond proc because it returns true on children of /atom/movable that aren't objs
|
||||||
#define isswarmer(A) (istype(A, /mob/living/simple_animal/hostile/swarmer))
|
|
||||||
|
|
||||||
#define isguardian(A) (istype(A, /mob/living/simple_animal/hostile/guardian))
|
|
||||||
|
|
||||||
#define ishostile(A) (istype(A, /mob/living/simple_animal/hostile))
|
|
||||||
|
|
||||||
#define islimb(A) (istype(A, /obj/item/bodypart))
|
#define islimb(A) (istype(A, /obj/item/bodypart))
|
||||||
|
|
||||||
#define isbot(A) (istype(A, /mob/living/simple_animal/bot))
|
#define is_cleanable(A) (istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/rune)) //if something is cleanable
|
||||||
|
|
||||||
#define ismovableatom(A) (istype(A, /atom/movable))
|
|
||||||
|
|
||||||
#define isobj(A) istype(A, /obj) //override the byond proc because it returns true on children of /atom/movable that aren't objs
|
|
||||||
|
|
||||||
// ASSEMBLY HELPERS
|
|
||||||
|
|
||||||
|
//Assemblies
|
||||||
#define isassembly(O) (istype(O, /obj/item/device/assembly))
|
#define isassembly(O) (istype(O, /obj/item/device/assembly))
|
||||||
|
|
||||||
#define isigniter(O) (istype(O, /obj/item/device/assembly/igniter))
|
#define isigniter(O) (istype(O, /obj/item/device/assembly/igniter))
|
||||||
|
|||||||
@@ -166,7 +166,7 @@
|
|||||||
if(T && (T.density || T.smooth))
|
if(T && (T.density || T.smooth))
|
||||||
T = get_step(src, turn(adjacencies, 225))
|
T = get_step(src, turn(adjacencies, 225))
|
||||||
|
|
||||||
if(istype(T, /turf/open/space) && !istype(T, /turf/open/space/transit))
|
if(isspaceturf(T) && !istype(T, /turf/open/space/transit))
|
||||||
underlays += image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER)
|
underlays += image('icons/turf/space.dmi', SPACE_ICON_STATE, layer=TURF_LAYER)
|
||||||
else if(T && !T.density && !T.smooth)
|
else if(T && !T.density && !T.smooth)
|
||||||
underlays += T
|
underlays += T
|
||||||
|
|||||||
@@ -133,7 +133,7 @@
|
|||||||
if(isAI(usr))
|
if(isAI(usr))
|
||||||
var/mob/living/silicon/ai/AI = usr
|
var/mob/living/silicon/ai/AI = usr
|
||||||
AI.aicamera.toggle_camera_mode()
|
AI.aicamera.toggle_camera_mode()
|
||||||
else if(isrobot(usr))
|
else if(iscyborg(usr))
|
||||||
var/mob/living/silicon/robot/R = usr
|
var/mob/living/silicon/robot/R = usr
|
||||||
R.aicamera.toggle_camera_mode()
|
R.aicamera.toggle_camera_mode()
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@
|
|||||||
if(isAI(usr))
|
if(isAI(usr))
|
||||||
var/mob/living/silicon/ai/AI = usr
|
var/mob/living/silicon/ai/AI = usr
|
||||||
AI.aicamera.viewpictures()
|
AI.aicamera.viewpictures()
|
||||||
else if(isrobot(usr))
|
else if(iscyborg(usr))
|
||||||
var/mob/living/silicon/robot/R = usr
|
var/mob/living/silicon/robot/R = usr
|
||||||
R.aicamera.viewpictures()
|
R.aicamera.viewpictures()
|
||||||
|
|
||||||
|
|||||||
@@ -179,7 +179,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/datum/hud/proc/toggle_show_robot_modules()
|
/datum/hud/proc/toggle_show_robot_modules()
|
||||||
if(!isrobot(mymob)) return
|
if(!iscyborg(mymob)) return
|
||||||
|
|
||||||
var/mob/living/silicon/robot/R = mymob
|
var/mob/living/silicon/robot/R = mymob
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
update_robot_modules_display()
|
update_robot_modules_display()
|
||||||
|
|
||||||
/datum/hud/proc/update_robot_modules_display(mob/viewer)
|
/datum/hud/proc/update_robot_modules_display(mob/viewer)
|
||||||
if(!isrobot(mymob)) return
|
if(!iscyborg(mymob)) return
|
||||||
|
|
||||||
var/mob/living/silicon/robot/R = mymob
|
var/mob/living/silicon/robot/R = mymob
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ var/datum/subsystem/minimap/SSminimap
|
|||||||
var/obj/obj
|
var/obj/obj
|
||||||
var/list/obj_icons
|
var/list/obj_icons
|
||||||
// Don't use icons for space, just add objects in space if they exist.
|
// Don't use icons for space, just add objects in space if they exist.
|
||||||
if(istype(tile, /turf/open/space))
|
if(isspaceturf(tile))
|
||||||
obj = locate(/obj/structure/lattice/catwalk) in tile
|
obj = locate(/obj/structure/lattice/catwalk) in tile
|
||||||
if(obj)
|
if(obj)
|
||||||
tile_icon = new /icon('icons/obj/smooth_structures/catwalk.dmi', "catwalk", SOUTH)
|
tile_icon = new /icon('icons/obj/smooth_structures/catwalk.dmi', "catwalk", SOUTH)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ var/datum/subsystem/persistence/SSpersistence
|
|||||||
|
|
||||||
var/list/free_satchels = list()
|
var/list/free_satchels = list()
|
||||||
for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION)))) //Nontrivially expensive but it's roundstart only
|
for(var/turf/T in shuffle(block(locate(TRANSITIONEDGE,TRANSITIONEDGE,ZLEVEL_STATION), locate(world.maxx-TRANSITIONEDGE,world.maxy-TRANSITIONEDGE,ZLEVEL_STATION)))) //Nontrivially expensive but it's roundstart only
|
||||||
if(istype(T,/turf/open/floor) && !istype(T,/turf/open/floor/plating/))
|
if(isfloorturf(T) && !istype(T,/turf/open/floor/plating/))
|
||||||
free_satchels += new /obj/item/weapon/storage/backpack/satchel/flat/secret(T)
|
free_satchels += new /obj/item/weapon/storage/backpack/satchel/flat/secret(T)
|
||||||
if(!isemptylist(free_satchels) && ((free_satchels.len + placed_satchels) >= (50 - expanded_old_satchels.len) * 0.1)) //up to six tiles, more than enough to kill anything that moves
|
if(!isemptylist(free_satchels) && ((free_satchels.len + placed_satchels) >= (50 - expanded_old_satchels.len) * 0.1)) //up to six tiles, more than enough to kill anything that moves
|
||||||
break
|
break
|
||||||
@@ -60,7 +60,7 @@ var/datum/subsystem/persistence/SSpersistence
|
|||||||
F.x = text2num(chosen_satchel[1])
|
F.x = text2num(chosen_satchel[1])
|
||||||
F.y = text2num(chosen_satchel[2])
|
F.y = text2num(chosen_satchel[2])
|
||||||
F.z = ZLEVEL_STATION
|
F.z = ZLEVEL_STATION
|
||||||
if(istype(F.loc,/turf/open/floor) && !istype(F.loc,/turf/open/floor/plating/))
|
if(isfloorturf(F.loc) && !istype(F.loc,/turf/open/floor/plating/))
|
||||||
F.hide(1)
|
F.hide(1)
|
||||||
new path(F)
|
new path(F)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ var/datum/subsystem/shuttle/SSshuttle
|
|||||||
for(var/i in block(A, B))
|
for(var/i in block(A, B))
|
||||||
var/turf/T = i
|
var/turf/T = i
|
||||||
// Only dying the "pure" space, not the transit tiles
|
// Only dying the "pure" space, not the transit tiles
|
||||||
if(!(T.type == /turf/open/space))
|
if(istype(T, /turf/open/space/transit) || !isspaceturf(T))
|
||||||
continue
|
continue
|
||||||
if((T.x == A.x) || (T.x == B.x) || (T.y == A.y) || (T.y == B.y))
|
if((T.x == A.x) || (T.x == B.x) || (T.y == A.y) || (T.y == B.y))
|
||||||
T.color = "#ffff00"
|
T.color = "#ffff00"
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
owner.attack_log += "\[[time_stamp()]\] <span class='brass'>Has been converted to the cult of Ratvar!</span>"
|
owner.attack_log += "\[[time_stamp()]\] <span class='brass'>Has been converted to the cult of Ratvar!</span>"
|
||||||
if(issilicon(owner))
|
if(issilicon(owner))
|
||||||
var/mob/living/silicon/S = owner
|
var/mob/living/silicon/S = owner
|
||||||
if(isrobot(S) && !silent_update)
|
if(iscyborg(S) && !silent_update)
|
||||||
S << "<span class='boldwarning'>You have been desynced from your master AI. In addition, your onboard camera is no longer active and your safeties have been disabled.</span>"
|
S << "<span class='boldwarning'>You have been desynced from your master AI. In addition, your onboard camera is no longer active and your safeties have been disabled.</span>"
|
||||||
S << "<span class='heavy_brass'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>"
|
S << "<span class='heavy_brass'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>"
|
||||||
else if(isbrain(owner) || isclockmob(owner))
|
else if(isbrain(owner) || isclockmob(owner))
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
owner.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them for whatever reason, we need to update buttons
|
owner.update_action_buttons_icon() //because a few clockcult things are action buttons and we may be wearing/holding them for whatever reason, we need to update buttons
|
||||||
if(issilicon(owner))
|
if(issilicon(owner))
|
||||||
var/mob/living/silicon/S = owner
|
var/mob/living/silicon/S = owner
|
||||||
if(isrobot(S))
|
if(iscyborg(S))
|
||||||
var/mob/living/silicon/robot/R = S
|
var/mob/living/silicon/robot/R = S
|
||||||
R.UnlinkSelf()
|
R.UnlinkSelf()
|
||||||
R.emagged = 1
|
R.emagged = 1
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
qdel(F)
|
qdel(F)
|
||||||
if(issilicon(owner))
|
if(issilicon(owner))
|
||||||
var/mob/living/silicon/S = owner
|
var/mob/living/silicon/S = owner
|
||||||
if(isrobot(S))
|
if(iscyborg(S))
|
||||||
var/mob/living/silicon/robot/R = S
|
var/mob/living/silicon/robot/R = S
|
||||||
R.emagged = initial(R.emagged)
|
R.emagged = initial(R.emagged)
|
||||||
S.make_laws()
|
S.make_laws()
|
||||||
@@ -128,6 +128,6 @@
|
|||||||
owner.mind.memory = "" //Not sure if there's a better way to do this
|
owner.mind.memory = "" //Not sure if there's a better way to do this
|
||||||
owner.mind.special_role = null
|
owner.mind.special_role = null
|
||||||
owner.attack_log += "\[[time_stamp()]\] <span class='brass'>Has renounced the cult of Ratvar!</span>"
|
owner.attack_log += "\[[time_stamp()]\] <span class='brass'>Has renounced the cult of Ratvar!</span>"
|
||||||
if(isrobot(owner))
|
if(iscyborg(owner))
|
||||||
owner << "<span class='warning'>Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking.</span>"
|
owner << "<span class='warning'>Despite your freedom from Ratvar's influence, you are still irreparably damaged and no longer possess certain functions such as AI linking.</span>"
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -185,7 +185,7 @@
|
|||||||
var/z = pick(zlevels)
|
var/z = pick(zlevels)
|
||||||
var/random_location = locate(x,y,z)
|
var/random_location = locate(x,y,z)
|
||||||
|
|
||||||
if(!(istype(random_location, /turf/open/floor)))
|
if(!isfloorturf(random_location))
|
||||||
continue
|
continue
|
||||||
var/turf/open/floor/F = random_location
|
var/turf/open/floor/F = random_location
|
||||||
if(!F.air)
|
if(!F.air)
|
||||||
|
|||||||
@@ -484,7 +484,7 @@
|
|||||||
else
|
else
|
||||||
user.take_bodypart_damage(2*force)
|
user.take_bodypart_damage(2*force)
|
||||||
return
|
return
|
||||||
if(isrobot(target))
|
if(iscyborg(target))
|
||||||
return ..()
|
return ..()
|
||||||
if(!isliving(target))
|
if(!isliving(target))
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -353,7 +353,7 @@
|
|||||||
if(!T || !isturf(T))
|
if(!T || !isturf(T))
|
||||||
T = get_turf(src)
|
T = get_turf(src)
|
||||||
var/area/A = get_area(T)
|
var/area/A = get_area(T)
|
||||||
if(istype(T, /turf/open/space)) // Turf never has gravity
|
if(isspaceturf(T)) // Turf never has gravity
|
||||||
return 0
|
return 0
|
||||||
else if(A && A.has_gravity) // Areas which always has gravity
|
else if(A && A.has_gravity) // Areas which always has gravity
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ var/list/blood_splatter_icons = list()
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
/atom/proc/isinspace()
|
/atom/proc/isinspace()
|
||||||
if(istype(get_turf(src), /turf/open/space))
|
if(isspaceturf(get_turf(src)))
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -57,13 +57,13 @@
|
|||||||
/datum/station_state/proc/count(count_territories)
|
/datum/station_state/proc/count(count_territories)
|
||||||
for(var/turf/T in block(locate(1,1,1), locate(world.maxx,world.maxy,1)))
|
for(var/turf/T in block(locate(1,1,1), locate(world.maxx,world.maxy,1)))
|
||||||
|
|
||||||
if(istype(T,/turf/open/floor))
|
if(isfloorturf(T))
|
||||||
if(!(T:burnt))
|
if(!(T:burnt))
|
||||||
src.floor += 12
|
src.floor += 12
|
||||||
else
|
else
|
||||||
src.floor += 1
|
src.floor += 1
|
||||||
|
|
||||||
if(istype(T, /turf/closed/wall))
|
if(iswallturf(T))
|
||||||
if(T:intact)
|
if(T:intact)
|
||||||
src.wall += 2
|
src.wall += 2
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -180,7 +180,7 @@
|
|||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
var/area/A = get_area(NewLoc)
|
var/area/A = get_area(NewLoc)
|
||||||
if(istype(NewLoc, /turf/open/space) || istype(A, /area/shuttle)) //if unplaced, can't go on shuttles or space tiles
|
if(isspaceturf(NewLoc) || istype(A, /area/shuttle)) //if unplaced, can't go on shuttles or space tiles
|
||||||
return 0
|
return 0
|
||||||
loc = NewLoc
|
loc = NewLoc
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -194,7 +194,7 @@
|
|||||||
src << "<span class='userdanger'>You have no core and are about to die! May you rest in peace.</span>"
|
src << "<span class='userdanger'>You have no core and are about to die! May you rest in peace.</span>"
|
||||||
return
|
return
|
||||||
var/area/A = get_area(T)
|
var/area/A = get_area(T)
|
||||||
if(istype(T, /turf/open/space) || A && !A.blob_allowed)
|
if(isspaceturf(T) || A && !A.blob_allowed)
|
||||||
src << "<span class='warning'>You cannot relocate your core here!</span>"
|
src << "<span class='warning'>You cannot relocate your core here!</span>"
|
||||||
return
|
return
|
||||||
if(!can_buy(80))
|
if(!can_buy(80))
|
||||||
|
|||||||
@@ -143,7 +143,7 @@
|
|||||||
/obj/structure/blob/proc/ConsumeTile()
|
/obj/structure/blob/proc/ConsumeTile()
|
||||||
for(var/atom/A in loc)
|
for(var/atom/A in loc)
|
||||||
A.blob_act(src)
|
A.blob_act(src)
|
||||||
if(istype(loc, /turf/closed/wall))
|
if(iswallturf(loc))
|
||||||
loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it
|
loc.blob_act(src) //don't ask how a wall got on top of the core, just eat it
|
||||||
|
|
||||||
/obj/structure/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom
|
/obj/structure/blob/proc/blob_attack_animation(atom/A = null, controller) //visually attacks an atom
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
return 0
|
return 0
|
||||||
var/make_blob = TRUE //can we make a blob?
|
var/make_blob = TRUE //can we make a blob?
|
||||||
|
|
||||||
if(istype(T, /turf/open/space) && !(locate(/obj/structure/lattice) in T) && prob(80))
|
if(isspaceturf(T) && !(locate(/obj/structure/lattice) in T) && prob(80))
|
||||||
make_blob = FALSE
|
make_blob = FALSE
|
||||||
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) //Let's give some feedback that we DID try to spawn in space, since players are used to it
|
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) //Let's give some feedback that we DID try to spawn in space, since players are used to it
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ Judgement: 10 servants, 100 CV, and any existing AIs are converted or destroyed
|
|||||||
|
|
||||||
/datum/clockwork_scripture/create_object/check_special_requirements()
|
/datum/clockwork_scripture/create_object/check_special_requirements()
|
||||||
var/turf/T = get_turf(invoker)
|
var/turf/T = get_turf(invoker)
|
||||||
if(!space_allowed && istype(T, /turf/open/space))
|
if(!space_allowed && isspaceturf(T))
|
||||||
invoker << "<span class='warning'>You need solid ground to place this object!</span>"
|
invoker << "<span class='warning'>You need solid ground to place this object!</span>"
|
||||||
return 0
|
return 0
|
||||||
if(one_per_tile && (locate(prevent_path) in T))
|
if(one_per_tile && (locate(prevent_path) in T))
|
||||||
|
|||||||
@@ -346,10 +346,10 @@
|
|||||||
user << "<span class='warning'>You need one brass sheet to do this!</span>"
|
user << "<span class='warning'>You need one brass sheet to do this!</span>"
|
||||||
return
|
return
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(istype(T, /turf/closed/wall))
|
if(iswallturf(T))
|
||||||
user << "<span class='warning'>There is already a wall present!</span>"
|
user << "<span class='warning'>There is already a wall present!</span>"
|
||||||
return
|
return
|
||||||
if(!istype(T, /turf/open/floor))
|
if(!isfloorturf(T))
|
||||||
user << "<span class='warning'>A floor must be present to build a [anchored ? "false ":""]wall!</span>"
|
user << "<span class='warning'>A floor must be present to build a [anchored ? "false ":""]wall!</span>"
|
||||||
return
|
return
|
||||||
if(locate(/obj/structure/falsewall) in T.contents)
|
if(locate(/obj/structure/falsewall) in T.contents)
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ This file contains the arcane tome files.
|
|||||||
entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in possible_runes
|
entered_rune_name = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in possible_runes
|
||||||
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
|
if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated())
|
||||||
return
|
return
|
||||||
if(istype(Turf, /turf/open/space))
|
if(isspaceturf(Turf))
|
||||||
user << "<span class='warning'>You cannot scribe runes in space!</span>"
|
user << "<span class='warning'>You cannot scribe runes in space!</span>"
|
||||||
return
|
return
|
||||||
for(var/T in typesof(/obj/effect/rune))
|
for(var/T in typesof(/obj/effect/rune))
|
||||||
|
|||||||
@@ -404,7 +404,7 @@ var/list/teleport_runes = list()
|
|||||||
return 1
|
return 1
|
||||||
|
|
||||||
/obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers)
|
/obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers)
|
||||||
if((((ishuman(sacrificial) || isrobot(sacrificial)) && sacrificial.stat != DEAD) || is_sacrifice_target(sacrificial.mind)) && invokers.len < 3)
|
if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || is_sacrifice_target(sacrificial.mind)) && invokers.len < 3)
|
||||||
for(var/M in invokers)
|
for(var/M in invokers)
|
||||||
M << "<span class='cultitalic'>[sacrificial] is too greatly linked to the world! You need three acolytes!</span>"
|
M << "<span class='cultitalic'>[sacrificial] is too greatly linked to the world! You need three acolytes!</span>"
|
||||||
log_game("Offer rune failed - not enough acolytes and target is living or sac target")
|
log_game("Offer rune failed - not enough acolytes and target is living or sac target")
|
||||||
@@ -423,7 +423,7 @@ var/list/teleport_runes = list()
|
|||||||
if(sacrifice_fulfilled)
|
if(sacrifice_fulfilled)
|
||||||
M << "<span class='cultlarge'>\"Yes! This is the one I desire! You have done well.\"</span>"
|
M << "<span class='cultlarge'>\"Yes! This is the one I desire! You have done well.\"</span>"
|
||||||
else
|
else
|
||||||
if(ishuman(sacrificial) || isrobot(sacrificial))
|
if(ishuman(sacrificial) || iscyborg(sacrificial))
|
||||||
M << "<span class='cultlarge'>\"I accept this sacrifice.\"</span>"
|
M << "<span class='cultlarge'>\"I accept this sacrifice.\"</span>"
|
||||||
else
|
else
|
||||||
M << "<span class='cultlarge'>\"I accept this meager sacrifice.\"</span>"
|
M << "<span class='cultlarge'>\"I accept this meager sacrifice.\"</span>"
|
||||||
@@ -435,7 +435,7 @@ var/list/teleport_runes = list()
|
|||||||
stone.invisibility = 0
|
stone.invisibility = 0
|
||||||
|
|
||||||
if(sacrificial)
|
if(sacrificial)
|
||||||
if(isrobot(sacrificial))
|
if(iscyborg(sacrificial))
|
||||||
playsound(sacrificial, 'sound/magic/Disable_Tech.ogg', 100, 1)
|
playsound(sacrificial, 'sound/magic/Disable_Tech.ogg', 100, 1)
|
||||||
sacrificial.dust() //To prevent the MMI from remaining
|
sacrificial.dust() //To prevent the MMI from remaining
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -258,7 +258,7 @@
|
|||||||
|
|
||||||
var/area/usrarea = get_area(usr.loc)
|
var/area/usrarea = get_area(usr.loc)
|
||||||
var/usrturf = get_turf(usr.loc)
|
var/usrturf = get_turf(usr.loc)
|
||||||
if(initial(usrarea.name) == "Space" || istype(usrturf,/turf/open/space) || usr.z != 1)
|
if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != 1)
|
||||||
usr << "<span class='warning'>You can only use this on the station!</span>"
|
usr << "<span class='warning'>You can only use this on the station!</span>"
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -372,7 +372,7 @@
|
|||||||
for(var/n=1;n<4,n++)
|
for(var/n=1;n<4,n++)
|
||||||
var/fail
|
var/fail
|
||||||
var/turf/T = turfs[n]
|
var/turf/T = turfs[n]
|
||||||
if(!istype(T, /turf/open/floor))
|
if(!isfloorturf(T))
|
||||||
fail = 1
|
fail = 1
|
||||||
var/datum/camerachunk/C = cameranet.getCameraChunk(T.x, T.y, T.z)
|
var/datum/camerachunk/C = cameranet.getCameraChunk(T.x, T.y, T.z)
|
||||||
if(!C.visibleTurfs[T])
|
if(!C.visibleTurfs[T])
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
var/turf/pickedstart
|
var/turf/pickedstart
|
||||||
var/turf/pickedgoal
|
var/turf/pickedgoal
|
||||||
var/max_i = 10//number of tries to spawn meteor.
|
var/max_i = 10//number of tries to spawn meteor.
|
||||||
while (!istype(pickedstart, /turf/open/space))
|
while(!isspaceturf(pickedstart))
|
||||||
var/startSide = pick(cardinal)
|
var/startSide = pick(cardinal)
|
||||||
pickedstart = spaceDebrisStartLoc(startSide, 1)
|
pickedstart = spaceDebrisStartLoc(startSide, 1)
|
||||||
pickedgoal = spaceDebrisFinishLoc(startSide, 1)
|
pickedgoal = spaceDebrisFinishLoc(startSide, 1)
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
var/turf/T = get_turf(loc)
|
var/turf/T = get_turf(loc)
|
||||||
ram_turf(T)
|
ram_turf(T)
|
||||||
|
|
||||||
if(prob(10) && !istype(T, /turf/open/space))//randomly takes a 'hit' from ramming
|
if(prob(10) && !isspaceturf(T))//randomly takes a 'hit' from ramming
|
||||||
get_hit()
|
get_hit()
|
||||||
|
|
||||||
/obj/effect/meteor/Destroy()
|
/obj/effect/meteor/Destroy()
|
||||||
@@ -292,7 +292,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/effect/meteor/meaty/ram_turf(turf/T)
|
/obj/effect/meteor/meaty/ram_turf(turf/T)
|
||||||
if(!istype(T, /turf/open/space))
|
if(!isspaceturf(T))
|
||||||
new /obj/effect/decal/cleanable/blood(T)
|
new /obj/effect/decal/cleanable/blood(T)
|
||||||
|
|
||||||
/obj/effect/meteor/meaty/Bump(atom/A)
|
/obj/effect/meteor/meaty/Bump(atom/A)
|
||||||
@@ -310,7 +310,7 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
|
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
|
||||||
if(!istype(T, /turf/open/space))
|
if(!isspaceturf(T))
|
||||||
new /obj/effect/decal/cleanable/xenoblood(T)
|
new /obj/effect/decal/cleanable/xenoblood(T)
|
||||||
|
|
||||||
//Station buster Tunguska
|
//Station buster Tunguska
|
||||||
|
|||||||
@@ -392,7 +392,7 @@ Congratulations! You are now trained for xenobiology research!"}
|
|||||||
if(!isabductor(user))
|
if(!isabductor(user))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(isrobot(target))
|
if(iscyborg(target))
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -257,14 +257,14 @@
|
|||||||
|
|
||||||
/turf/closed/wall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
/turf/closed/wall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||||
for(var/turf/T in range(1, src))
|
for(var/turf/T in range(1, src))
|
||||||
if(istype(T, /turf/open/space) || istype(T.loc, /area/space))
|
if(isspaceturf(T) || istype(T.loc, /area/space))
|
||||||
S << "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>"
|
S << "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>"
|
||||||
return
|
return
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/structure/window/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
/obj/structure/window/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||||
for(var/turf/T in range(1, src))
|
for(var/turf/T in range(1, src))
|
||||||
if(istype(T, /turf/open/space) || istype(T.loc, /area/space))
|
if(isspaceturf(T) || istype(T.loc, /area/space))
|
||||||
S << "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>"
|
S << "<span class='warning'>Destroying this object has the potential to cause a hull breach. Aborting.</span>"
|
||||||
return
|
return
|
||||||
..()
|
..()
|
||||||
@@ -482,7 +482,7 @@
|
|||||||
if(!istype(L, /mob/living/simple_animal/hostile/swarmer))
|
if(!istype(L, /mob/living/simple_animal/hostile/swarmer))
|
||||||
playsound(loc,'sound/effects/snap.ogg',50, 1, -1)
|
playsound(loc,'sound/effects/snap.ogg',50, 1, -1)
|
||||||
L.electrocute_act(0, src, 1, 1)
|
L.electrocute_act(0, src, 1, 1)
|
||||||
if(isrobot(L))
|
if(iscyborg(L))
|
||||||
L.Weaken(5)
|
L.Weaken(5)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -284,7 +284,7 @@
|
|||||||
if(!src)
|
if(!src)
|
||||||
return
|
return
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(istype(T, /turf/closed))
|
if(isclosedturf(T))
|
||||||
src << "<span class='revenwarning'>You cannot use abilities from inside of a wall.</span>"
|
src << "<span class='revenwarning'>You cannot use abilities from inside of a wall.</span>"
|
||||||
return 0
|
return 0
|
||||||
for(var/obj/O in T)
|
for(var/obj/O in T)
|
||||||
|
|||||||
@@ -248,7 +248,7 @@
|
|||||||
if(T.flags & NOJAUNT)
|
if(T.flags & NOJAUNT)
|
||||||
T.flags -= NOJAUNT
|
T.flags -= NOJAUNT
|
||||||
PoolOrNew(/obj/effect/overlay/temp/revenant, T)
|
PoolOrNew(/obj/effect/overlay/temp/revenant, T)
|
||||||
if(!istype(T, /turf/open/floor/plating) && !istype(T, /turf/open/floor/engine/cult) && istype(T, /turf/open/floor) && prob(15))
|
if(!istype(T, /turf/open/floor/plating) && !istype(T, /turf/open/floor/engine/cult) && isfloorturf(T) && prob(15))
|
||||||
var/turf/open/floor/floor = T
|
var/turf/open/floor/floor = T
|
||||||
if(floor.intact && floor.floor_tile)
|
if(floor.intact && floor.floor_tile)
|
||||||
PoolOrNew(floor.floor_tile, floor)
|
PoolOrNew(floor.floor_tile, floor)
|
||||||
|
|||||||
@@ -136,7 +136,7 @@
|
|||||||
/proc/near_camera(mob/living/M)
|
/proc/near_camera(mob/living/M)
|
||||||
if (!isturf(M.loc))
|
if (!isturf(M.loc))
|
||||||
return 0
|
return 0
|
||||||
if(isrobot(M))
|
if(iscyborg(M))
|
||||||
var/mob/living/silicon/robot/R = M
|
var/mob/living/silicon/robot/R = M
|
||||||
if(!(R.camera && R.camera.can_use()) && !cameranet.checkCameraVis(M))
|
if(!(R.camera && R.camera.can_use()) && !cameranet.checkCameraVis(M))
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
if(!Adjacent(user))
|
if(!Adjacent(user))
|
||||||
user.unset_machine()
|
user.unset_machine()
|
||||||
return
|
return
|
||||||
else if(isrobot(user))
|
else if(iscyborg(user))
|
||||||
var/list/viewing = viewers(src)
|
var/list/viewing = viewers(src)
|
||||||
if(!viewing.Find(user))
|
if(!viewing.Find(user))
|
||||||
user.unset_machine()
|
user.unset_machine()
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
var/camera_fail = 0
|
var/camera_fail = 0
|
||||||
if(!C.can_use() || user.machine != src || user.eye_blind || user.incapacitated())
|
if(!C.can_use() || user.machine != src || user.eye_blind || user.incapacitated())
|
||||||
camera_fail = 1
|
camera_fail = 1
|
||||||
else if(isrobot(user))
|
else if(iscyborg(user))
|
||||||
var/list/viewing = viewers(src)
|
var/list/viewing = viewers(src)
|
||||||
if(!viewing.Find(user))
|
if(!viewing.Find(user))
|
||||||
camera_fail = 1
|
camera_fail = 1
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ var/global/datum/crewmonitor/crewmonitor = new
|
|||||||
|
|
||||||
if (hclient.client.mob && hclient.client.mob.stat == 0 && hclient.client.mob.z == text2num(z))
|
if (hclient.client.mob && hclient.client.mob.stat == 0 && hclient.client.mob.z == text2num(z))
|
||||||
if (isAI(hclient.client.mob)) return TRUE
|
if (isAI(hclient.client.mob)) return TRUE
|
||||||
else if (isrobot(hclient.client.mob))
|
else if (iscyborg(hclient.client.mob))
|
||||||
return (locate(/obj/machinery/computer/crew, range(world.view, hclient.client.mob))) || (locate(/obj/item/device/sensor_device, hclient.client.mob.contents))
|
return (locate(/obj/machinery/computer/crew, range(world.view, hclient.client.mob))) || (locate(/obj/item/device/sensor_device, hclient.client.mob.contents))
|
||||||
else
|
else
|
||||||
return (locate(/obj/machinery/computer/crew, range(1, hclient.client.mob))) || (locate(/obj/item/device/sensor_device, hclient.client.mob.contents))
|
return (locate(/obj/machinery/computer/crew, range(1, hclient.client.mob))) || (locate(/obj/item/device/sensor_device, hclient.client.mob.contents))
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
user << "[src.current.name] selected for law changes."
|
user << "[src.current.name] selected for law changes."
|
||||||
|
|
||||||
/obj/machinery/computer/upload/borg/can_upload_to(mob/living/silicon/robot/B)
|
/obj/machinery/computer/upload/borg/can_upload_to(mob/living/silicon/robot/B)
|
||||||
if(!B || !isrobot(B))
|
if(!B || !iscyborg(B))
|
||||||
return 0
|
return 0
|
||||||
if(B.scrambledcodes || B.emagged)
|
if(B.scrambledcodes || B.emagged)
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
|
|
||||||
var/loc_display = "Unknown"
|
var/loc_display = "Unknown"
|
||||||
var/mob/living/carbon/M = T.imp_in
|
var/mob/living/carbon/M = T.imp_in
|
||||||
if(Tr.z == ZLEVEL_STATION && !istype(M.loc, /turf/open/space))
|
if(Tr.z == ZLEVEL_STATION && !isspaceturf(M.loc))
|
||||||
var/turf/mob_loc = get_turf(M)
|
var/turf/mob_loc = get_turf(M)
|
||||||
loc_display = mob_loc.loc
|
loc_display = mob_loc.loc
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
/obj/machinery/door/poddoor/shuttledock/proc/check()
|
/obj/machinery/door/poddoor/shuttledock/proc/check()
|
||||||
var/turf/T = get_step(src, checkdir)
|
var/turf/T = get_step(src, checkdir)
|
||||||
if(!istype(T,/turf/open/space))
|
if(!isspaceturf(T))
|
||||||
addtimer(src, "open", 0, TRUE)
|
addtimer(src, "open", 0, TRUE)
|
||||||
else
|
else
|
||||||
addtimer(src, "close", 0, TRUE)
|
addtimer(src, "close", 0, TRUE)
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ Class Procs:
|
|||||||
|
|
||||||
|
|
||||||
/obj/machinery/attack_ai(mob/user)
|
/obj/machinery/attack_ai(mob/user)
|
||||||
if(isrobot(user))// For some reason attack_robot doesn't work
|
if(iscyborg(user))// For some reason attack_robot doesn't work
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
if(R.client && R.client.eye == R && !R.low_power_mode)// This is to stop robots from using cameras to remotely control machines; and from using machines when the borg has no power.
|
if(R.client && R.client.eye == R && !R.low_power_mode)// This is to stop robots from using cameras to remotely control machines; and from using machines when the borg has no power.
|
||||||
return attack_hand(user)
|
return attack_hand(user)
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
for(var/turf/target_tile in range(shield_range, src))
|
for(var/turf/target_tile in range(shield_range, src))
|
||||||
if (istype(target_tile,/turf/open/space) && !(locate(/obj/machinery/shield) in target_tile))
|
if(isspaceturf(target_tile) && !(locate(/obj/machinery/shield) in target_tile))
|
||||||
if(!(stat & BROKEN) || prob(33))
|
if(!(stat & BROKEN) || prob(33))
|
||||||
deployed_shields += new /obj/machinery/shield(target_tile)
|
deployed_shields += new /obj/machinery/shield(target_tile)
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@
|
|||||||
/obj/machinery/syndicatebomb/attackby(obj/item/I, mob/user, params)
|
/obj/machinery/syndicatebomb/attackby(obj/item/I, mob/user, params)
|
||||||
if(istype(I, /obj/item/weapon/wrench))
|
if(istype(I, /obj/item/weapon/wrench))
|
||||||
if(!anchored)
|
if(!anchored)
|
||||||
if(!isturf(src.loc) || istype(src.loc, /turf/open/space))
|
if(!isturf(loc) || isspaceturf(loc))
|
||||||
user << "<span class='notice'>The bomb must be placed on solid ground to attach it.</span>"
|
user << "<span class='notice'>The bomb must be placed on solid ground to attach it.</span>"
|
||||||
else
|
else
|
||||||
user << "<span class='notice'>You firmly wrench the bomb to the floor.</span>"
|
user << "<span class='notice'>You firmly wrench the bomb to the floor.</span>"
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
else if(isAI(user))
|
else if(isAI(user))
|
||||||
var/mob/living/silicon/ai/U = user
|
var/mob/living/silicon/ai/U = user
|
||||||
P = U.aiMulti
|
P = U.aiMulti
|
||||||
else if(isrobot(user) && in_range(user, src))
|
else if(iscyborg(user) && in_range(user, src))
|
||||||
if(istype(user.get_active_held_item(), /obj/item/device/multitool))
|
if(istype(user.get_active_held_item(), /obj/item/device/multitool))
|
||||||
P = user.get_active_held_item()
|
P = user.get_active_held_item()
|
||||||
return P
|
return P
|
||||||
|
|||||||
@@ -120,10 +120,10 @@
|
|||||||
|
|
||||||
//East
|
//East
|
||||||
var/turf/east = locate(T.x + 1, T.y, T.z)
|
var/turf/east = locate(T.x + 1, T.y, T.z)
|
||||||
if(istype(east, /turf/open/floor))
|
if(isfloorturf(east))
|
||||||
new /obj/machinery/conveyor/auto(east, WEST)
|
new /obj/machinery/conveyor/auto(east, WEST)
|
||||||
|
|
||||||
// West
|
// West
|
||||||
var/turf/west = locate(T.x - 1, T.y, T.z)
|
var/turf/west = locate(T.x - 1, T.y, T.z)
|
||||||
if(istype(west, /turf/open/floor))
|
if(isfloorturf(west))
|
||||||
new /obj/machinery/conveyor/auto(west, WEST)
|
new /obj/machinery/conveyor/auto(west, WEST)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
|
/obj/item/mecha_parts/mecha_equipment/drill/action(atom/target)
|
||||||
if(!action_checks(target))
|
if(!action_checks(target))
|
||||||
return
|
return
|
||||||
if(istype(target, /turf/open/space))
|
if(isspaceturf(target))
|
||||||
return
|
return
|
||||||
if(isobj(target))
|
if(isobj(target))
|
||||||
var/obj/target_obj = target
|
var/obj/target_obj = target
|
||||||
|
|||||||
@@ -216,14 +216,14 @@
|
|||||||
|
|
||||||
switch(mode)
|
switch(mode)
|
||||||
if(0)
|
if(0)
|
||||||
if (istype(target, /turf/closed/wall))
|
if(iswallturf(target))
|
||||||
var/turf/closed/wall/W = target
|
var/turf/closed/wall/W = target
|
||||||
occupant_message("Deconstructing [W]...")
|
occupant_message("Deconstructing [W]...")
|
||||||
if(do_after_cooldown(W))
|
if(do_after_cooldown(W))
|
||||||
chassis.spark_system.start()
|
chassis.spark_system.start()
|
||||||
W.ChangeTurf(/turf/open/floor/plating)
|
W.ChangeTurf(/turf/open/floor/plating)
|
||||||
playsound(W, 'sound/items/Deconstruct.ogg', 50, 1)
|
playsound(W, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||||
else if (istype(target, /turf/open/floor))
|
else if(isfloorturf(target))
|
||||||
var/turf/open/floor/F = target
|
var/turf/open/floor/F = target
|
||||||
occupant_message("Deconstructing [F]...")
|
occupant_message("Deconstructing [F]...")
|
||||||
if(do_after_cooldown(target))
|
if(do_after_cooldown(target))
|
||||||
@@ -237,14 +237,14 @@
|
|||||||
qdel(target)
|
qdel(target)
|
||||||
playsound(target, 'sound/items/Deconstruct.ogg', 50, 1)
|
playsound(target, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||||
if(1)
|
if(1)
|
||||||
if(istype(target, /turf/open/space))
|
if(isspaceturf(target))
|
||||||
var/turf/open/space/S = target
|
var/turf/open/space/S = target
|
||||||
occupant_message("Building Floor...")
|
occupant_message("Building Floor...")
|
||||||
if(do_after_cooldown(S))
|
if(do_after_cooldown(S))
|
||||||
S.ChangeTurf(/turf/open/floor/plating)
|
S.ChangeTurf(/turf/open/floor/plating)
|
||||||
playsound(S, 'sound/items/Deconstruct.ogg', 50, 1)
|
playsound(S, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||||
chassis.spark_system.start()
|
chassis.spark_system.start()
|
||||||
else if(istype(target, /turf/open/floor))
|
else if(isfloorturf(target))
|
||||||
var/turf/open/floor/F = target
|
var/turf/open/floor/F = target
|
||||||
occupant_message("Building Wall...")
|
occupant_message("Building Wall...")
|
||||||
if(do_after_cooldown(F))
|
if(do_after_cooldown(F))
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
playsound(F, 'sound/items/Deconstruct.ogg', 50, 1)
|
playsound(F, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||||
chassis.spark_system.start()
|
chassis.spark_system.start()
|
||||||
if(2)
|
if(2)
|
||||||
if(istype(target, /turf/open/floor))
|
if(isfloorturf(target))
|
||||||
occupant_message("Building Airlock...")
|
occupant_message("Building Airlock...")
|
||||||
if(do_after_cooldown(target))
|
if(do_after_cooldown(target))
|
||||||
chassis.spark_system.start()
|
chassis.spark_system.start()
|
||||||
@@ -386,7 +386,7 @@
|
|||||||
last_piece = null
|
last_piece = null
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/dismantleFloor(var/turf/new_turf)
|
/obj/item/mecha_parts/mecha_equipment/cable_layer/proc/dismantleFloor(var/turf/new_turf)
|
||||||
if(istype(new_turf, /turf/open/floor))
|
if(isfloorturf(new_turf))
|
||||||
var/turf/open/floor/T = new_turf
|
var/turf/open/floor/T = new_turf
|
||||||
if(!istype(T, /turf/open/floor/plating))
|
if(!istype(T, /turf/open/floor/plating))
|
||||||
if(!T.broken && !T.burnt)
|
if(!T.broken && !T.burnt)
|
||||||
|
|||||||
@@ -50,15 +50,15 @@
|
|||||||
T.dump_contents()
|
T.dump_contents()
|
||||||
qdel(target)
|
qdel(target)
|
||||||
|
|
||||||
if(istype(target, /turf/closed/mineral))
|
if(ismineralturf(target))
|
||||||
var/turf/closed/mineral/M = target
|
var/turf/closed/mineral/M = target
|
||||||
M.ChangeTurf(M.baseturf)
|
M.ChangeTurf(M.baseturf)
|
||||||
|
|
||||||
if(istype(target, /turf/open/floor))
|
if(isfloorturf(target))
|
||||||
var/turf/open/floor/F = target
|
var/turf/open/floor/F = target
|
||||||
F.ChangeTurf(F.baseturf)
|
F.ChangeTurf(F.baseturf)
|
||||||
|
|
||||||
if(istype(target, /turf/closed/wall))
|
if(iswallturf(target))
|
||||||
var/turf/closed/wall/W = target
|
var/turf/closed/wall/W = target
|
||||||
W.dismantle_wall(1)
|
W.dismantle_wall(1)
|
||||||
|
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ list(name = "- Carbon Dioxide", desc = " This informational poster teaches the v
|
|||||||
if(!D)
|
if(!D)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(istype(src,/turf/closed/wall) && user && user.loc == temp_loc) //Let's check if everything is still there
|
if(iswallturf(src) && user && user.loc == temp_loc) //Let's check if everything is still there
|
||||||
user << "<span class='notice'>You place the poster!</span>"
|
user << "<span class='notice'>You place the poster!</span>"
|
||||||
else
|
else
|
||||||
D.roll_and_drop(temp_loc,D.official)
|
D.roll_and_drop(temp_loc,D.official)
|
||||||
|
|||||||
@@ -157,7 +157,7 @@
|
|||||||
var/blast = 0
|
var/blast = 0
|
||||||
|
|
||||||
/datum/effect_system/smoke_spread/freezing/proc/Chilled(atom/A)
|
/datum/effect_system/smoke_spread/freezing/proc/Chilled(atom/A)
|
||||||
if(istype(A,/turf/open))
|
if(isopenturf(A))
|
||||||
var/turf/open/T = A
|
var/turf/open/T = A
|
||||||
if(T.air)
|
if(T.air)
|
||||||
var/datum/gas_mixture/G = T.air
|
var/datum/gas_mixture/G = T.air
|
||||||
|
|||||||
@@ -133,7 +133,7 @@
|
|||||||
//------- TURF FIRES -------
|
//------- TURF FIRES -------
|
||||||
|
|
||||||
if(T)
|
if(T)
|
||||||
if(flame_dist && prob(40) && !istype(T, /turf/open/space) && !T.density)
|
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
|
||||||
PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience!
|
PoolOrNew(/obj/effect/hotspot, T) //Mostly for ambience!
|
||||||
if(dist > 0)
|
if(dist > 0)
|
||||||
T.ex_act(dist)
|
T.ex_act(dist)
|
||||||
|
|||||||
@@ -284,7 +284,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
|
|||||||
/obj/item/attack_ai(mob/user)
|
/obj/item/attack_ai(mob/user)
|
||||||
if(istype(src.loc, /obj/item/weapon/robot_module))
|
if(istype(src.loc, /obj/item/weapon/robot_module))
|
||||||
//If the item is part of a cyborg module, equip it
|
//If the item is part of a cyborg module, equip it
|
||||||
if(!isrobot(user))
|
if(!iscyborg(user))
|
||||||
return
|
return
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
if(!R.low_power_mode) //can't equip modules with an empty cell.
|
if(!R.low_power_mode) //can't equip modules with an empty cell.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
return
|
return
|
||||||
var/turf/loc = get_turf(usr)
|
var/turf/loc = get_turf(usr)
|
||||||
var/area/A = loc.loc
|
var/area/A = loc.loc
|
||||||
if(!istype(loc, /turf/open/floor))
|
if(!isfloorturf(loc))
|
||||||
usr << "<span class='warning'>You cannot place [src] on this spot!</span>"
|
usr << "<span class='warning'>You cannot place [src] on this spot!</span>"
|
||||||
return
|
return
|
||||||
if(A.requires_power == 0 || istype(A, /area/space))
|
if(A.requires_power == 0 || istype(A, /area/space))
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
if(istype(W, /obj/item/weapon/screwdriver))
|
if(istype(W, /obj/item/weapon/screwdriver))
|
||||||
// For camera-building borgs
|
// For camera-building borgs
|
||||||
var/turf/T = get_step(get_turf(user), user.dir)
|
var/turf/T = get_step(get_turf(user), user.dir)
|
||||||
if(istype(T, /turf/closed/wall))
|
if(iswallturf(T))
|
||||||
T.attackby(src, user, params)
|
T.attackby(src, user, params)
|
||||||
|
|
||||||
var/metal_amt = round(materials[MAT_METAL]/MINERAL_MATERIAL_AMOUNT)
|
var/metal_amt = round(materials[MAT_METAL]/MINERAL_MATERIAL_AMOUNT)
|
||||||
|
|||||||
@@ -710,7 +710,7 @@
|
|||||||
|
|
||||||
/obj/item/toy/crayon/spraycan/borg/afterattack(atom/target,mob/user,proximity)
|
/obj/item/toy/crayon/spraycan/borg/afterattack(atom/target,mob/user,proximity)
|
||||||
var/diff = ..()
|
var/diff = ..()
|
||||||
if(!isrobot(user))
|
if(!iscyborg(user))
|
||||||
user << "<span class='notice'>How did you get this?</span>"
|
user << "<span class='notice'>How did you get this?</span>"
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
master.disrupt()
|
master.disrupt()
|
||||||
|
|
||||||
/obj/effect/dummy/chameleon/relaymove(mob/user, direction)
|
/obj/effect/dummy/chameleon/relaymove(mob/user, direction)
|
||||||
if(istype(loc, /turf/open/space) || !direction)
|
if(isspaceturf(loc) || !direction)
|
||||||
return //No magical space movement!
|
return //No magical space movement!
|
||||||
|
|
||||||
if(can_move)
|
if(can_move)
|
||||||
|
|||||||
@@ -106,7 +106,7 @@
|
|||||||
outmsg = "<span class='warning'>You fail to blind [C] by shining [src] at their eyes!</span>"
|
outmsg = "<span class='warning'>You fail to blind [C] by shining [src] at their eyes!</span>"
|
||||||
|
|
||||||
//robots
|
//robots
|
||||||
else if(isrobot(target))
|
else if(iscyborg(target))
|
||||||
var/mob/living/silicon/S = target
|
var/mob/living/silicon/S = target
|
||||||
//20% chance to actually hit the sensors
|
//20% chance to actually hit the sensors
|
||||||
if(prob(effectchance * diode.rating))
|
if(prob(effectchance * diode.rating))
|
||||||
|
|||||||
@@ -277,7 +277,7 @@
|
|||||||
jobname = "AI"
|
jobname = "AI"
|
||||||
|
|
||||||
// --- Cyborg ---
|
// --- Cyborg ---
|
||||||
else if(isrobot(M))
|
else if(iscyborg(M))
|
||||||
var/mob/living/silicon/robot/B = M
|
var/mob/living/silicon/robot/B = M
|
||||||
jobname = "[B.designation] Cyborg"
|
jobname = "[B.designation] Cyborg"
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
if(H.check_shields(0, "[M]'s [name]", src, MELEE_ATTACK))
|
if(H.check_shields(0, "[M]'s [name]", src, MELEE_ATTACK))
|
||||||
playsound(M, 'sound/weapons/Genhit.ogg', 50, 1)
|
playsound(M, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||||
return 0
|
return 0
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
if(!R.cell.use(charge_cost))
|
if(!R.cell.use(charge_cost))
|
||||||
return
|
return
|
||||||
@@ -43,7 +43,7 @@
|
|||||||
var/shockallowed = 0//Can it be a stunarm when emagged. Only PK borgs get this by default.
|
var/shockallowed = 0//Can it be a stunarm when emagged. Only PK borgs get this by default.
|
||||||
|
|
||||||
/obj/item/borg/cyborghug/attack_self(mob/living/user)
|
/obj/item/borg/cyborghug/attack_self(mob/living/user)
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/P = user
|
var/mob/living/silicon/robot/P = user
|
||||||
if(P.emagged&&shockallowed == 1)
|
if(P.emagged&&shockallowed == 1)
|
||||||
if(mode < 3)
|
if(mode < 3)
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
"<span class='danger'>You electrocute [M] with your touch!</span>")
|
"<span class='danger'>You electrocute [M] with your touch!</span>")
|
||||||
M.update_canmove()
|
M.update_canmove()
|
||||||
else
|
else
|
||||||
if(!isrobot(M))
|
if(!iscyborg(M))
|
||||||
M.adjustFireLoss(10)
|
M.adjustFireLoss(10)
|
||||||
user.visible_message("<span class='userdanger'>[user] shocks [M]!</span>", \
|
user.visible_message("<span class='userdanger'>[user] shocks [M]!</span>", \
|
||||||
"<span class='danger'>You shock [M]!</span>")
|
"<span class='danger'>You shock [M]!</span>")
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/item/borg/charger/afterattack(obj/item/target, mob/living/silicon/robot/user, proximity_flag)
|
/obj/item/borg/charger/afterattack(obj/item/target, mob/living/silicon/robot/user, proximity_flag)
|
||||||
if(!proximity_flag || !isrobot(user))
|
if(!proximity_flag || !iscyborg(user))
|
||||||
return
|
return
|
||||||
if(mode == "draw")
|
if(mode == "draw")
|
||||||
if(is_type_in_list(target, charge_machines))
|
if(is_type_in_list(target, charge_machines))
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
user << "<font color='red'>The device is still recharging!</font>"
|
user << "<font color='red'>The device is still recharging!</font>"
|
||||||
return
|
return
|
||||||
|
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
if(R.cell.charge < 1200)
|
if(R.cell.charge < 1200)
|
||||||
user << "<font color='red'>You don't have enough charge to do this!</font>"
|
user << "<font color='red'>You don't have enough charge to do this!</font>"
|
||||||
@@ -302,7 +302,7 @@
|
|||||||
playsound(get_turf(src), 'sound/AI/harmalarm.ogg', 70, 3)
|
playsound(get_turf(src), 'sound/AI/harmalarm.ogg', 70, 3)
|
||||||
cooldown = world.time + 200
|
cooldown = world.time + 200
|
||||||
log_game("[user.ckey]([user]) used a Cyborg Harm Alarm in ([user.x],[user.y],[user.z])")
|
log_game("[user.ckey]([user]) used a Cyborg Harm Alarm in ([user.x],[user.y],[user.z])")
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
R.connected_ai << "<br><span class='notice'>NOTICE - Peacekeeping 'HARM ALARM' used by: [user]</span><br>"
|
R.connected_ai << "<br><span class='notice'>NOTICE - Peacekeeping 'HARM ALARM' used by: [user]</span><br>"
|
||||||
|
|
||||||
|
|||||||
@@ -78,12 +78,6 @@
|
|||||||
var/title as text
|
var/title as text
|
||||||
var/can_build = 1
|
var/can_build = 1
|
||||||
can_build = can_build && (max_multiplier>0)
|
can_build = can_build && (max_multiplier>0)
|
||||||
/*
|
|
||||||
if (R.one_per_turf)
|
|
||||||
can_build = can_build && !(locate(R.result_type) in usr.loc)
|
|
||||||
if (R.on_floor)
|
|
||||||
can_build = can_build && istype(usr.loc, /turf/open/floor)
|
|
||||||
*/
|
|
||||||
if (R.res_amount>1)
|
if (R.res_amount>1)
|
||||||
title+= "[R.res_amount]x [R.title]\s"
|
title+= "[R.res_amount]x [R.title]\s"
|
||||||
else
|
else
|
||||||
@@ -168,7 +162,7 @@
|
|||||||
if (R.one_per_turf && (locate(R.result_type) in usr.loc))
|
if (R.one_per_turf && (locate(R.result_type) in usr.loc))
|
||||||
usr << "<span class='warning'>There is another [R.title] here!</span>"
|
usr << "<span class='warning'>There is another [R.title] here!</span>"
|
||||||
return 0
|
return 0
|
||||||
if (R.on_floor && !istype(usr.loc, /turf/open/floor))
|
if(R.on_floor && !isfloorturf(usr.loc))
|
||||||
usr << "<span class='warning'>\The [R.title] must be constructed on the floor!</span>"
|
usr << "<span class='warning'>\The [R.title] must be constructed on the floor!</span>"
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ RCD
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params)
|
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params)
|
||||||
if(isrobot(user)) //Make sure cyborgs can't load their RCDs
|
if(iscyborg(user)) //Make sure cyborgs can't load their RCDs
|
||||||
return
|
return
|
||||||
var/loaded = 0
|
var/loaded = 0
|
||||||
if(istype(W, /obj/item/weapon/rcd_ammo))
|
if(istype(W, /obj/item/weapon/rcd_ammo))
|
||||||
@@ -307,7 +307,7 @@ RCD
|
|||||||
|
|
||||||
switch(mode)
|
switch(mode)
|
||||||
if(1)
|
if(1)
|
||||||
if(istype(A, /turf/open/space))
|
if(isspaceturf(A))
|
||||||
var/turf/open/space/S = A
|
var/turf/open/space/S = A
|
||||||
if(useResource(floorcost, user))
|
if(useResource(floorcost, user))
|
||||||
user << "<span class='notice'>You start building floor...</span>"
|
user << "<span class='notice'>You start building floor...</span>"
|
||||||
@@ -316,7 +316,7 @@ RCD
|
|||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(istype(A, /turf/open/floor))
|
if(isfloorturf(A))
|
||||||
var/turf/open/floor/F = A
|
var/turf/open/floor/F = A
|
||||||
if(checkResource(wallcost, user))
|
if(checkResource(wallcost, user))
|
||||||
user << "<span class='notice'>You start building wall...</span>"
|
user << "<span class='notice'>You start building wall...</span>"
|
||||||
@@ -330,7 +330,7 @@ RCD
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(2)
|
if(2)
|
||||||
if(istype(A, /turf/open/floor))
|
if(isfloorturf(A))
|
||||||
if(checkResource(airlockcost, user))
|
if(checkResource(airlockcost, user))
|
||||||
var/door_check = 1
|
var/door_check = 1
|
||||||
for(var/obj/machinery/door/D in A)
|
for(var/obj/machinery/door/D in A)
|
||||||
@@ -370,12 +370,12 @@ RCD
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(3)
|
if(3)
|
||||||
if(istype(A, /turf/closed/wall))
|
if(iswallturf(A))
|
||||||
var/turf/closed/wall/W = A
|
var/turf/closed/wall/W = A
|
||||||
if(istype(W, /turf/closed/wall/r_wall) && !canRturf)
|
if(istype(W, /turf/closed/wall/r_wall) && !canRturf)
|
||||||
return 0
|
return 0
|
||||||
if(checkResource(deconwallcost, user))
|
if(checkResource(deconwallcost, user))
|
||||||
user << "<span class='notice'>You start deconstructing wall...</span>"
|
user << "<span class='notice'>You start deconstructing [W]...</span>"
|
||||||
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
|
||||||
if(do_after(user, deconwalldelay, target = A))
|
if(do_after(user, deconwalldelay, target = A))
|
||||||
if(!useResource(deconwallcost, user)) return 0
|
if(!useResource(deconwallcost, user)) return 0
|
||||||
@@ -384,7 +384,7 @@ RCD
|
|||||||
return 1
|
return 1
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(istype(A, /turf/open/floor))
|
if(isfloorturf(A))
|
||||||
var/turf/open/floor/F = A
|
var/turf/open/floor/F = A
|
||||||
if(istype(F, /turf/open/floor/engine) && !canRturf)
|
if(istype(F, /turf/open/floor/engine) && !canRturf)
|
||||||
return 0
|
return 0
|
||||||
@@ -435,7 +435,7 @@ RCD
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if (4)
|
if (4)
|
||||||
if(istype(A, /turf/open/floor))
|
if(isfloorturf(A))
|
||||||
if(checkResource(grillecost, user))
|
if(checkResource(grillecost, user))
|
||||||
if(locate(/obj/structure/grille) in A)
|
if(locate(/obj/structure/grille) in A)
|
||||||
user << "<span class='warning'>There is already a grille there!</span>"
|
user << "<span class='warning'>There is already a grille there!</span>"
|
||||||
@@ -504,7 +504,7 @@ RCD
|
|||||||
canRturf = 1
|
canRturf = 1
|
||||||
|
|
||||||
/obj/item/weapon/rcd/borg/useResource(amount, mob/user)
|
/obj/item/weapon/rcd/borg/useResource(amount, mob/user)
|
||||||
if(!isrobot(user))
|
if(!iscyborg(user))
|
||||||
return 0
|
return 0
|
||||||
var/mob/living/silicon/robot/borgy = user
|
var/mob/living/silicon/robot/borgy = user
|
||||||
if(!borgy.cell)
|
if(!borgy.cell)
|
||||||
@@ -517,7 +517,7 @@ RCD
|
|||||||
return .
|
return .
|
||||||
|
|
||||||
/obj/item/weapon/rcd/borg/checkResource(amount, mob/user)
|
/obj/item/weapon/rcd/borg/checkResource(amount, mob/user)
|
||||||
if(!isrobot(user))
|
if(!iscyborg(user))
|
||||||
return 0
|
return 0
|
||||||
var/mob/living/silicon/robot/borgy = user
|
var/mob/living/silicon/robot/borgy = user
|
||||||
if(!borgy.cell)
|
if(!borgy.cell)
|
||||||
|
|||||||
@@ -64,13 +64,13 @@ RSF
|
|||||||
/obj/item/weapon/rsf/afterattack(atom/A, mob/user, proximity)
|
/obj/item/weapon/rsf/afterattack(atom/A, mob/user, proximity)
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
if (!(istype(A, /obj/structure/table) || istype(A, /turf/open/floor)))
|
if (!(istype(A, /obj/structure/table) || isfloorturf(A)))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(matter < 1)
|
if(matter < 1)
|
||||||
user << "<span class='warning'>\The [src] doesn't have enough matter left.</span>"
|
user << "<span class='warning'>\The [src] doesn't have enough matter left.</span>"
|
||||||
return
|
return
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
if(!R.cell || R.cell.charge < 200)
|
if(!R.cell || R.cell.charge < 200)
|
||||||
user << "<span class='warning'>You do not have enough power to use [src].</span>"
|
user << "<span class='warning'>You do not have enough power to use [src].</span>"
|
||||||
@@ -105,7 +105,7 @@ RSF
|
|||||||
use_matter(10, user)
|
use_matter(10, user)
|
||||||
|
|
||||||
/obj/item/weapon/rsf/proc/use_matter(charge, mob/user)
|
/obj/item/weapon/rsf/proc/use_matter(charge, mob/user)
|
||||||
if (isrobot(user))
|
if (iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
R.cell.charge -= charge
|
R.cell.charge -= charge
|
||||||
else
|
else
|
||||||
@@ -141,7 +141,7 @@ RSF
|
|||||||
|
|
||||||
/obj/item/weapon/cookiesynth/attack_self(mob/user)
|
/obj/item/weapon/cookiesynth/attack_self(mob/user)
|
||||||
var/mob/living/silicon/robot/P = null
|
var/mob/living/silicon/robot/P = null
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
P = user
|
P = user
|
||||||
if(emagged&&!toxin)
|
if(emagged&&!toxin)
|
||||||
toxin = 1
|
toxin = 1
|
||||||
@@ -162,12 +162,12 @@ RSF
|
|||||||
return
|
return
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
if (!(istype(A, /obj/structure/table) || istype(A, /turf/open/floor)))
|
if (!(istype(A, /obj/structure/table) || isfloorturf(A)))
|
||||||
return
|
return
|
||||||
if(matter < 1)
|
if(matter < 1)
|
||||||
user << "<span class='warning'>The [src] doesn't have enough matter left. Wait for it to recharge!</span>"
|
user << "<span class='warning'>The [src] doesn't have enough matter left. Wait for it to recharge!</span>"
|
||||||
return
|
return
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
if(!R.cell || R.cell.charge < 400)
|
if(!R.cell || R.cell.charge < 400)
|
||||||
user << "<span class='warning'>You do not have enough power to use [src].</span>"
|
user << "<span class='warning'>You do not have enough power to use [src].</span>"
|
||||||
@@ -178,7 +178,7 @@ RSF
|
|||||||
var/obj/item/weapon/reagent_containers/food/snacks/cookie/S = new /obj/item/weapon/reagent_containers/food/snacks/cookie(T)
|
var/obj/item/weapon/reagent_containers/food/snacks/cookie/S = new /obj/item/weapon/reagent_containers/food/snacks/cookie(T)
|
||||||
if(toxin)
|
if(toxin)
|
||||||
S.reagents.add_reagent("chloralhydrate2", 10)
|
S.reagents.add_reagent("chloralhydrate2", 10)
|
||||||
if (isrobot(user))
|
if (iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
R.cell.charge -= 100
|
R.cell.charge -= 100
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
// Find out if there is an open turf in front of us,
|
// Find out if there is an open turf in front of us,
|
||||||
// and if not, pick the turf we are standing on.
|
// and if not, pick the turf we are standing on.
|
||||||
var/turf/T = get_step(get_turf(src), user.dir)
|
var/turf/T = get_step(get_turf(src), user.dir)
|
||||||
if(!istype(T, /turf/open))
|
if(!isopenturf(T))
|
||||||
T = get_turf(src)
|
T = get_turf(src)
|
||||||
|
|
||||||
// they managed to lose their lungs between then and
|
// they managed to lose their lungs between then and
|
||||||
|
|||||||
@@ -353,7 +353,7 @@
|
|||||||
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
|
||||||
return
|
return
|
||||||
if(!wielded)
|
if(!wielded)
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
user << "<span class='warning'>You must activate the paddles in your active module before you can use them on someone!</span>"
|
user << "<span class='warning'>You must activate the paddles in your active module before you can use them on someone!</span>"
|
||||||
else
|
else
|
||||||
user << "<span class='warning'>You need to wield the paddles in both hands before you can use them on someone!</span>"
|
user << "<span class='warning'>You need to wield the paddles in both hands before you can use them on someone!</span>"
|
||||||
|
|||||||
@@ -172,7 +172,7 @@
|
|||||||
reagents.clear_reagents()
|
reagents.clear_reagents()
|
||||||
|
|
||||||
var/turf/T = get_turf(loc)
|
var/turf/T = get_turf(loc)
|
||||||
if(istype(T, /turf/open))
|
if(isopenturf(T))
|
||||||
var/turf/open/theturf = T
|
var/turf/open/theturf = T
|
||||||
theturf.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
|
theturf.MakeSlippery(min_wet_time = 10, wet_time_to_add = 5)
|
||||||
|
|
||||||
|
|||||||
@@ -29,25 +29,25 @@
|
|||||||
icon_state = "frag"
|
icon_state = "frag"
|
||||||
|
|
||||||
/obj/item/weapon/grenade/gluon
|
/obj/item/weapon/grenade/gluon
|
||||||
desc = "An advanced grenade that releases a harmful stream of gluons inducing radiation in those nearby. These gluon streams will also make victims feel exhausted, and induce shivering. This extreme coldness will also likely wet any nearby floors."
|
desc = "An advanced grenade that releases a harmful stream of gluons inducing radiation in those nearby. These gluon streams will also make victims feel exhausted, and induce shivering. This extreme coldness will also likely wet any nearby floors."
|
||||||
name = "gluon frag grenade"
|
name = "gluon frag grenade"
|
||||||
icon = 'icons/obj/grenade.dmi'
|
icon = 'icons/obj/grenade.dmi'
|
||||||
icon_state = "bluefrag"
|
icon_state = "bluefrag"
|
||||||
item_state = "flashbang"
|
item_state = "flashbang"
|
||||||
var/freeze_range = 4
|
var/freeze_range = 4
|
||||||
var/rad_damage = 35
|
var/rad_damage = 35
|
||||||
var/stamina_damage = 30
|
var/stamina_damage = 30
|
||||||
|
|
||||||
/obj/item/weapon/grenade/gluon/prime()
|
/obj/item/weapon/grenade/gluon/prime()
|
||||||
update_mob()
|
update_mob()
|
||||||
playsound(loc, 'sound/effects/EMPulse.ogg', 50, 1)
|
playsound(loc, 'sound/effects/EMPulse.ogg', 50, 1)
|
||||||
radiation_pulse(loc,freeze_range,freeze_range+1,rad_damage)
|
radiation_pulse(loc,freeze_range,freeze_range+1,rad_damage)
|
||||||
for(var/turf/T in view(freeze_range,loc))
|
for(var/turf/T in view(freeze_range,loc))
|
||||||
if(istype(T,/turf/open/floor))
|
if(isfloorturf(T))
|
||||||
var/turf/open/floor/F = T
|
var/turf/open/floor/F = T
|
||||||
F.wet = TURF_WET_PERMAFROST
|
F.wet = TURF_WET_PERMAFROST
|
||||||
addtimer(F, "MakeDry", rand(3000, 3100), 0, TURF_WET_PERMAFROST)
|
addtimer(F, "MakeDry", rand(3000, 3100), 0, TURF_WET_PERMAFROST)
|
||||||
for(var/mob/living/carbon/L in T)
|
for(var/mob/living/carbon/L in T)
|
||||||
L.adjustStaminaLoss(stamina_damage)
|
L.adjustStaminaLoss(stamina_damage)
|
||||||
L.bodytemperature -= 230
|
L.bodytemperature -= 230
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -186,7 +186,7 @@
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
|
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
if(!C.handcuffed)
|
if(!C.handcuffed)
|
||||||
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
|
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
|
||||||
C.visible_message("<span class='danger'>[user] is trying to put zipties on [C]!</span>", \
|
C.visible_message("<span class='danger'>[user] is trying to put zipties on [C]!</span>", \
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
var/shock = 0
|
var/shock = 0
|
||||||
|
|
||||||
/obj/item/weapon/holosign_creator/cyborg/attack_self(mob/user)
|
/obj/item/weapon/holosign_creator/cyborg/attack_self(mob/user)
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
var/mob/living/silicon/robot/R = user
|
var/mob/living/silicon/robot/R = user
|
||||||
|
|
||||||
if(shock)
|
if(shock)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
else
|
else
|
||||||
user.take_bodypart_damage(2*force)
|
user.take_bodypart_damage(2*force)
|
||||||
return
|
return
|
||||||
if(isrobot(target))
|
if(iscyborg(target))
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
if(!isliving(target))
|
if(!isliving(target))
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
if (user.a_intent == "harm")
|
if (user.a_intent == "harm")
|
||||||
if(!..())
|
if(!..())
|
||||||
return
|
return
|
||||||
if(!isrobot(target))
|
if(!iscyborg(target))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
if(cooldown <= world.time)
|
if(cooldown <= world.time)
|
||||||
@@ -190,7 +190,7 @@
|
|||||||
consume_everything(target)
|
consume_everything(target)
|
||||||
else
|
else
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
if(!istype(T,/turf/open/space))
|
if(!isspaceturf(T))
|
||||||
consume_turf(T)
|
consume_turf(T)
|
||||||
|
|
||||||
/obj/item/weapon/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag)
|
/obj/item/weapon/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ obj/item/weapon/mop/proc/clean(turf/A)
|
|||||||
for(var/obj/effect/O in A)
|
for(var/obj/effect/O in A)
|
||||||
if(is_cleanable(O))
|
if(is_cleanable(O))
|
||||||
qdel(O)
|
qdel(O)
|
||||||
if(istype(A, /turf/closed))
|
if(isclosedturf(A))
|
||||||
var/turf/closed/C = A
|
var/turf/closed/C = A
|
||||||
C.thermite = 0
|
C.thermite = 0
|
||||||
reagents.reaction(A, TOUCH, 10) //Needed for proper floor wetting.
|
reagents.reaction(A, TOUCH, 10) //Needed for proper floor wetting.
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
if(paintleft <= 0)
|
if(paintleft <= 0)
|
||||||
icon_state = "paint_empty"
|
icon_state = "paint_empty"
|
||||||
return
|
return
|
||||||
if(!istype(target) || istype(target, /turf/open/space))
|
if(!istype(target) || isspaceturf(target))
|
||||||
return
|
return
|
||||||
target.color = "#" + item_color
|
target.color = "#" + item_color
|
||||||
|
|
||||||
|
|||||||
@@ -302,7 +302,7 @@
|
|||||||
/obj/item/weapon/storage/backpack/satchel/flat/secret/New()
|
/obj/item/weapon/storage/backpack/satchel/flat/secret/New()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
if(istype(loc,/turf/open/floor) && !istype(loc,/turf/open/floor/plating/))
|
if(isfloorturf(loc) && !istype(loc,/turf/open/floor/plating/))
|
||||||
hide(1)
|
hide(1)
|
||||||
|
|
||||||
/obj/item/weapon/storage/backpack/satchel/flat/secret/hide(intact)
|
/obj/item/weapon/storage/backpack/satchel/flat/secret/hide(intact)
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "
|
|||||||
/obj/item/weapon/storage/book/bible/afterattack(atom/A, mob/user, proximity)
|
/obj/item/weapon/storage/book/bible/afterattack(atom/A, mob/user, proximity)
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
if (istype(A, /turf/open/floor))
|
if(isfloorturf(A))
|
||||||
user << "<span class='notice'>You hit the floor with the bible.</span>"
|
user << "<span class='notice'>You hit the floor with the bible.</span>"
|
||||||
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
if(user.mind && (user.mind.assigned_role == "Chaplain"))
|
||||||
for(var/obj/effect/rune/R in orange(2,user))
|
for(var/obj/effect/rune/R in orange(2,user))
|
||||||
|
|||||||
@@ -386,7 +386,7 @@
|
|||||||
if(labeler.mode)
|
if(labeler.mode)
|
||||||
return 0
|
return 0
|
||||||
. = 1 //no afterattack
|
. = 1 //no afterattack
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
return //Robots can't interact with storage items.
|
return //Robots can't interact with storage items.
|
||||||
|
|
||||||
if(!can_be_inserted(W, 0 , user))
|
if(!can_be_inserted(W, 0 , user))
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
deductcharge(hitcost)
|
deductcharge(hitcost)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(isrobot(M))
|
if(iscyborg(M))
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
if(H.check_shields(0, "[user]'s [name]", src, MELEE_ATTACK)) //No message; check_shields() handles that
|
if(H.check_shields(0, "[user]'s [name]", src, MELEE_ATTACK)) //No message; check_shields() handles that
|
||||||
playsound(L, 'sound/weapons/Genhit.ogg', 50, 1)
|
playsound(L, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||||
return 0
|
return 0
|
||||||
if(isrobot(loc))
|
if(iscyborg(loc))
|
||||||
var/mob/living/silicon/robot/R = loc
|
var/mob/living/silicon/robot/R = loc
|
||||||
if(!R || !R.cell || !R.cell.use(hitcost))
|
if(!R || !R.cell || !R.cell.use(hitcost))
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
else //something wrong
|
else //something wrong
|
||||||
name = "[initial(name)]"
|
name = "[initial(name)]"
|
||||||
update_icon()
|
update_icon()
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
user << "<span class='notice'>You free up your module.</span>"
|
user << "<span class='notice'>You free up your module.</span>"
|
||||||
else if(istype(src, /obj/item/weapon/twohanded/required))
|
else if(istype(src, /obj/item/weapon/twohanded/required))
|
||||||
user << "<span class='notice'>You drop \the [name].</span>"
|
user << "<span class='notice'>You drop \the [name].</span>"
|
||||||
@@ -71,7 +71,7 @@
|
|||||||
force = force_wielded
|
force = force_wielded
|
||||||
name = "[name] (Wielded)"
|
name = "[name] (Wielded)"
|
||||||
update_icon()
|
update_icon()
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
user << "<span class='notice'>You dedicate your module to [name].</span>"
|
user << "<span class='notice'>You dedicate your module to [name].</span>"
|
||||||
else
|
else
|
||||||
user << "<span class='notice'>You grab the [name] with both hands.</span>"
|
user << "<span class='notice'>You grab the [name] with both hands.</span>"
|
||||||
@@ -362,7 +362,7 @@
|
|||||||
/obj/item/weapon/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
|
/obj/item/weapon/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
if(istype(AM, /turf/open)) //So you can actually melee with it
|
if(isopenturf(AM)) //So you can actually melee with it
|
||||||
return
|
return
|
||||||
if(explosive && wielded)
|
if(explosive && wielded)
|
||||||
user.say("[war_cry]")
|
user.say("[war_cry]")
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
return
|
return
|
||||||
if ((!( istype(O, /obj/item/weapon) ) || user.get_active_held_item() != O))
|
if ((!( istype(O, /obj/item/weapon) ) || user.get_active_held_item() != O))
|
||||||
return
|
return
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
return
|
return
|
||||||
if(!user.drop_item())
|
if(!user.drop_item())
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -195,7 +195,7 @@
|
|||||||
if(3)
|
if(3)
|
||||||
icon = 'icons/obj/smooth_structures/alien/weeds3.dmi'
|
icon = 'icons/obj/smooth_structures/alien/weeds3.dmi'
|
||||||
linked_node = node
|
linked_node = node
|
||||||
if(istype(loc, /turf/open/space))
|
if(isspaceturf(loc))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
addtimer(src, "Life", rand(150, 200))
|
addtimer(src, "Life", rand(150, 200))
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
set background = BACKGROUND_ENABLED
|
set background = BACKGROUND_ENABLED
|
||||||
var/turf/U = get_turf(src)
|
var/turf/U = get_turf(src)
|
||||||
|
|
||||||
if(istype(U, /turf/open/space))
|
if(isspaceturf(U))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
|
|
||||||
for(var/turf/T in U.GetAtmosAdjacentTurfs())
|
for(var/turf/T in U.GetAtmosAdjacentTurfs())
|
||||||
|
|
||||||
if (locate(/obj/structure/alien/weeds) in T || istype(T, /turf/open/space))
|
if (locate(/obj/structure/alien/weeds) in T || isspaceturf(T))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
new /obj/structure/alien/weeds(T, linked_node)
|
new /obj/structure/alien/weeds(T, linked_node)
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(isrobot(user) || isalien(user))
|
if(iscyborg(user) || isalien(user))
|
||||||
return
|
return
|
||||||
if(istype(I, /obj/item/weapon/extinguisher))
|
if(istype(I, /obj/item/weapon/extinguisher))
|
||||||
if(!has_extinguisher && opened)
|
if(!has_extinguisher && opened)
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/structure/extinguisher_cabinet/attack_hand(mob/user)
|
/obj/structure/extinguisher_cabinet/attack_hand(mob/user)
|
||||||
if(isrobot(user) || isalien(user))
|
if(iscyborg(user) || isalien(user))
|
||||||
return
|
return
|
||||||
if(has_extinguisher)
|
if(has_extinguisher)
|
||||||
user.put_in_hands(has_extinguisher)
|
user.put_in_hands(has_extinguisher)
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
if(T.density)
|
if(T.density)
|
||||||
user << "<span class='warning'>[src] is blocked!</span>"
|
user << "<span class='warning'>[src] is blocked!</span>"
|
||||||
return
|
return
|
||||||
if(!istype(T, /turf/open/floor))
|
if(!isfloorturf(T))
|
||||||
user << "<span class='warning'>[src] bolts must be tightened on the floor!</span>"
|
user << "<span class='warning'>[src] bolts must be tightened on the floor!</span>"
|
||||||
return
|
return
|
||||||
user.visible_message("<span class='notice'>[user] tightens some bolts on the wall.</span>", "<span class='notice'>You tighten the bolts on the wall.</span>")
|
user.visible_message("<span class='notice'>[user] tightens some bolts on the wall.</span>", "<span class='notice'>You tighten the bolts on the wall.</span>")
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params)
|
/obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params)
|
||||||
if(isrobot(user) || istype(I,/obj/item/device/multitool))
|
if(iscyborg(user) || istype(I,/obj/item/device/multitool))
|
||||||
toggle_lock(user)
|
toggle_lock(user)
|
||||||
return
|
return
|
||||||
if(open || health <= 0)
|
if(open || health <= 0)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
else if(istype(W, /obj/item/weapon/wrench))
|
else if(istype(W, /obj/item/weapon/wrench))
|
||||||
if(state == GIRDER_DISPLACED)
|
if(state == GIRDER_DISPLACED)
|
||||||
if(!istype(loc, /turf/open/floor))
|
if(!isfloorturf(loc))
|
||||||
user << "<span class='warning'>A floor must be present to secure the girder!</span>"
|
user << "<span class='warning'>A floor must be present to secure the girder!</span>"
|
||||||
return
|
return
|
||||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
|
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
|
||||||
@@ -86,10 +86,10 @@
|
|||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
else if(istype(W, /obj/item/stack))
|
else if(istype(W, /obj/item/stack))
|
||||||
if (istype(src.loc, /turf/closed/wall))
|
if(iswallturf(loc))
|
||||||
user << "<span class='warning'>There is already a wall present!</span>"
|
user << "<span class='warning'>There is already a wall present!</span>"
|
||||||
return
|
return
|
||||||
if (!istype(src.loc, /turf/open/floor))
|
if(!isfloorturf(src.loc))
|
||||||
user << "<span class='warning'>A floor must be present to build a false wall!</span>"
|
user << "<span class='warning'>A floor must be present to build a false wall!</span>"
|
||||||
return
|
return
|
||||||
if (locate(/obj/structure/falsewall) in src.loc.contents)
|
if (locate(/obj/structure/falsewall) in src.loc.contents)
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
add_overlay("[icon_state]_door")
|
add_overlay("[icon_state]_door")
|
||||||
|
|
||||||
/obj/structure/guncase/attackby(obj/item/I, mob/user, params)
|
/obj/structure/guncase/attackby(obj/item/I, mob/user, params)
|
||||||
if(isrobot(user) || isalien(user))
|
if(iscyborg(user) || isalien(user))
|
||||||
return
|
return
|
||||||
if(istype(I, gun_category))
|
if(istype(I, gun_category))
|
||||||
if(contents.len < capacity && open)
|
if(contents.len < capacity && open)
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
/obj/structure/guncase/attack_hand(mob/user)
|
/obj/structure/guncase/attack_hand(mob/user)
|
||||||
if(isrobot(user) || isalien(user))
|
if(iscyborg(user) || isalien(user))
|
||||||
return
|
return
|
||||||
if(contents.len && open)
|
if(contents.len && open)
|
||||||
ShowWindow(user)
|
ShowWindow(user)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
/obj/structure/mineral_door/attack_ai(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral
|
/obj/structure/mineral_door/attack_ai(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral
|
||||||
if(isAI(user)) //so the AI can't open it
|
if(isAI(user)) //so the AI can't open it
|
||||||
return
|
return
|
||||||
else if(isrobot(user)) //but cyborgs can
|
else if(iscyborg(user)) //but cyborgs can
|
||||||
if(get_dist(user,src) <= 1) //not remotely though
|
if(get_dist(user,src) <= 1) //not remotely though
|
||||||
return TryToSwitchState(user)
|
return TryToSwitchState(user)
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
"<span class='notice'>You loosen the [name]'s bolts!</span>")
|
"<span class='notice'>You loosen the [name]'s bolts!</span>")
|
||||||
anchored = 0
|
anchored = 0
|
||||||
else
|
else
|
||||||
if (!istype(src.loc, /turf/open/floor))
|
if(!isfloorturf(src.loc))
|
||||||
user.visible_message("<span class='warning'>A floor must be present to secure the [name]!</span>")
|
user.visible_message("<span class='warning'>A floor must be present to secure the [name]!</span>")
|
||||||
return
|
return
|
||||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
|
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
|
||||||
|
|||||||
@@ -182,7 +182,7 @@
|
|||||||
mob.client.Move(get_step(loc, direction), direction)
|
mob.client.Move(get_step(loc, direction), direction)
|
||||||
mob.reset_perspective(null)
|
mob.reset_perspective(null)
|
||||||
|
|
||||||
//if(moving && istype(loc, /turf/open/space))
|
//if(moving && isspaceturf(loc))
|
||||||
// Todo: If you get out of a moving pod in space, you should move as well.
|
// Todo: If you get out of a moving pod in space, you should move as well.
|
||||||
// Same direction as pod? Direcion you moved? Halfway between?
|
// Same direction as pod? Direcion you moved? Halfway between?
|
||||||
|
|
||||||
|
|||||||
@@ -208,7 +208,7 @@
|
|||||||
else
|
else
|
||||||
wash_obj(G)
|
wash_obj(G)
|
||||||
else
|
else
|
||||||
if(istype(loc, /turf/open))
|
if(isopenturf(loc))
|
||||||
var/turf/open/tile = loc
|
var/turf/open/tile = loc
|
||||||
tile.MakeSlippery(min_wet_time = 5, wet_time_to_add = 1)
|
tile.MakeSlippery(min_wet_time = 5, wet_time_to_add = 1)
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,7 @@
|
|||||||
qdel(O)
|
qdel(O)
|
||||||
|
|
||||||
var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in src)
|
var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in src)
|
||||||
if(hotspot && !istype(src, /turf/open/space))
|
if(hotspot && !isspaceturf(src))
|
||||||
air.temperature = max(min(air.temperature-2000,air.temperature/2),0)
|
air.temperature = max(min(air.temperature-2000,air.temperature/2),0)
|
||||||
qdel(hotspot)
|
qdel(hotspot)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -112,10 +112,10 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
|
|||||||
/turf/open/floor/proc/make_plating()
|
/turf/open/floor/proc/make_plating()
|
||||||
return ChangeTurf(/turf/open/floor/plating)
|
return ChangeTurf(/turf/open/floor/plating)
|
||||||
|
|
||||||
/turf/open/floor/ChangeTurf(turf/open/floor/T)
|
/turf/open/floor/ChangeTurf(new_path)
|
||||||
if(!istype(src,/turf/open/floor))
|
if(!isfloorturf(src))
|
||||||
return ..() //fucking turfs switch the fucking src of the fucking running procs
|
return ..() //fucking turfs switch the fucking src of the fucking running procs
|
||||||
if(!ispath(T,/turf/open/floor))
|
if(!ispath(new_path, /turf/open/floor))
|
||||||
return ..()
|
return ..()
|
||||||
var/old_icon = icon_regular_floor
|
var/old_icon = icon_regular_floor
|
||||||
var/old_dir = dir
|
var/old_dir = dir
|
||||||
|
|||||||
@@ -71,10 +71,10 @@
|
|||||||
for(var/F in RANGE_TURFS(1, src) - src)
|
for(var/F in RANGE_TURFS(1, src) - src)
|
||||||
var/turf/T = F
|
var/turf/T = F
|
||||||
var/area/new_area = get_area(T)
|
var/area/new_area = get_area(T)
|
||||||
if(!T || (T.density && !istype(T, /turf/closed/mineral)) || istype(T, /turf/open/indestructible) || (whitelisted_area && !istype(new_area, whitelisted_area)))
|
if(!T || (T.density && !ismineralturf(T)) || istype(T, /turf/open/indestructible) || (whitelisted_area && !istype(new_area, whitelisted_area)))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if(!logged_turf_type && istype(T, /turf/closed/mineral))
|
if(!logged_turf_type && ismineralturf(T))
|
||||||
var/turf/closed/mineral/M = T
|
var/turf/closed/mineral/M = T
|
||||||
logged_turf_type = M.turf_type
|
logged_turf_type = M.turf_type
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
var/turf/T = F
|
var/turf/T = F
|
||||||
if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type))
|
if(!istype(T, logged_turf_type) && prob(probability) && T.ChangeTurf(type))
|
||||||
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
|
T.Spread(probability - prob_loss, prob_loss, whitelisted_area)
|
||||||
else if(istype(T, /turf/closed/mineral))
|
else if(ismineralturf(T))
|
||||||
var/turf/closed/mineral/M = T
|
var/turf/closed/mineral/M = T
|
||||||
M.ChangeTurf(M.turf_type)
|
M.ChangeTurf(M.turf_type)
|
||||||
|
|
||||||
|
|||||||
@@ -179,7 +179,7 @@
|
|||||||
user << "<span class='notice'>You begin slicing through the outer plating...</span>"
|
user << "<span class='notice'>You begin slicing through the outer plating...</span>"
|
||||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||||
if(do_after(user, slicing_duration/W.toolspeed, target = src))
|
if(do_after(user, slicing_duration/W.toolspeed, target = src))
|
||||||
if( !istype(src, /turf/closed/wall) || !user || !WT || !WT.isOn() || !T )
|
if(!iswallturf(src) || !user || !WT || !WT.isOn() || !T)
|
||||||
return 1
|
return 1
|
||||||
if( user.loc == T && user.get_active_held_item() == WT )
|
if( user.loc == T && user.get_active_held_item() == WT )
|
||||||
user << "<span class='notice'>You remove the outer plating.</span>"
|
user << "<span class='notice'>You remove the outer plating.</span>"
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
user << "<span class='notice'>You begin slicing through the outer plating...</span>"
|
user << "<span class='notice'>You begin slicing through the outer plating...</span>"
|
||||||
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
playsound(src, 'sound/items/Welder.ogg', 100, 1)
|
||||||
if(do_after(user, slicing_duration*0.6, target = src)) // plasma cutter is faster than welding tool
|
if(do_after(user, slicing_duration*0.6, target = src)) // plasma cutter is faster than welding tool
|
||||||
if( !istype(src, /turf/closed/wall) || !user || !W || !T )
|
if(!iswallturf(src) || !user || !W || !T)
|
||||||
return 1
|
return 1
|
||||||
if( user.loc == T && user.get_active_held_item() == W )
|
if( user.loc == T && user.get_active_held_item() == W )
|
||||||
user << "<span class='notice'>You remove the outer plating.</span>"
|
user << "<span class='notice'>You remove the outer plating.</span>"
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
/turf/closed/wall/proc/try_destroy(obj/item/weapon/W, mob/user, turf/T)
|
/turf/closed/wall/proc/try_destroy(obj/item/weapon/W, mob/user, turf/T)
|
||||||
if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
|
if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
|
||||||
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
|
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
|
||||||
if( !istype(src, /turf/closed/wall) || !user || !W || !T )
|
if(!iswallturf(src) || !user || !W || !T)
|
||||||
return 1
|
return 1
|
||||||
if( user.loc == T && user.get_active_held_item() == W )
|
if( user.loc == T && user.get_active_held_item() == W )
|
||||||
D.playDigSound()
|
D.playDigSound()
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
/turf/open/space/proc/update_starlight()
|
/turf/open/space/proc/update_starlight()
|
||||||
if(config.starlight)
|
if(config.starlight)
|
||||||
for(var/t in RANGE_TURFS(1,src)) //RANGE_TURFS is in code\__HELPERS\game.dm
|
for(var/t in RANGE_TURFS(1,src)) //RANGE_TURFS is in code\__HELPERS\game.dm
|
||||||
if(istype(t, /turf/open/space))
|
if(isspaceturf(t))
|
||||||
//let's NOT update this that much pls
|
//let's NOT update this that much pls
|
||||||
continue
|
continue
|
||||||
SetLuminosity(4,1)
|
SetLuminosity(4,1)
|
||||||
|
|||||||
@@ -688,7 +688,7 @@ var/global/BSACooldown = 0
|
|||||||
ai_number++
|
ai_number++
|
||||||
if(isAI(S))
|
if(isAI(S))
|
||||||
usr << "<b>AI [key_name(S, usr)]'s laws:</b>"
|
usr << "<b>AI [key_name(S, usr)]'s laws:</b>"
|
||||||
else if(isrobot(S))
|
else if(iscyborg(S))
|
||||||
var/mob/living/silicon/robot/R = S
|
var/mob/living/silicon/robot/R = S
|
||||||
usr << "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independant)"]: laws:</b>"
|
usr << "<b>CYBORG [key_name(S, usr)] [R.connected_ai?"(Slaved to: [R.connected_ai])":"(Independant)"]: laws:</b>"
|
||||||
else if (ispAI(S))
|
else if (ispAI(S))
|
||||||
|
|||||||
@@ -244,7 +244,7 @@
|
|||||||
M_job = "AI"
|
M_job = "AI"
|
||||||
else if(ispAI(M))
|
else if(ispAI(M))
|
||||||
M_job = "pAI"
|
M_job = "pAI"
|
||||||
else if(isrobot(M))
|
else if(iscyborg(M))
|
||||||
M_job = "Cyborg"
|
M_job = "Cyborg"
|
||||||
else
|
else
|
||||||
M_job = "Silicon-based"
|
M_job = "Silicon-based"
|
||||||
|
|||||||
@@ -1929,7 +1929,7 @@
|
|||||||
|
|
||||||
switch(where)
|
switch(where)
|
||||||
if("inhand")
|
if("inhand")
|
||||||
if (!iscarbon(usr) && !isrobot(usr))
|
if (!iscarbon(usr) && !iscyborg(usr))
|
||||||
usr << "Can only spawn in hand when you're a carbon mob or cyborg."
|
usr << "Can only spawn in hand when you're a carbon mob or cyborg."
|
||||||
where = "onfloor"
|
where = "onfloor"
|
||||||
target = usr
|
target = usr
|
||||||
@@ -1972,7 +1972,7 @@
|
|||||||
var/mob/living/L = usr
|
var/mob/living/L = usr
|
||||||
var/obj/item/I = O
|
var/obj/item/I = O
|
||||||
L.put_in_hands(I)
|
L.put_in_hands(I)
|
||||||
if(isrobot(L))
|
if(iscyborg(L))
|
||||||
var/mob/living/silicon/robot/R = L
|
var/mob/living/silicon/robot/R = L
|
||||||
if(R.module)
|
if(R.module)
|
||||||
R.module.add_module(I)
|
R.module.add_module(I)
|
||||||
|
|||||||
@@ -244,20 +244,20 @@
|
|||||||
if(BASIC_BUILDMODE)
|
if(BASIC_BUILDMODE)
|
||||||
if(istype(object,/turf) && left_click && !alt_click && !ctrl_click)
|
if(istype(object,/turf) && left_click && !alt_click && !ctrl_click)
|
||||||
var/turf/T = object
|
var/turf/T = object
|
||||||
if(istype(object,/turf/open/space))
|
if(isspaceturf(object))
|
||||||
T.ChangeTurf(/turf/open/floor/plasteel)
|
T.ChangeTurf(/turf/open/floor/plasteel)
|
||||||
else if(istype(object,/turf/open/floor))
|
else if(isfloorturf(object))
|
||||||
T.ChangeTurf(/turf/closed/wall)
|
T.ChangeTurf(/turf/closed/wall)
|
||||||
else if(istype(object,/turf/closed/wall))
|
else if(iswallturf(object))
|
||||||
T.ChangeTurf(/turf/closed/wall/r_wall)
|
T.ChangeTurf(/turf/closed/wall/r_wall)
|
||||||
log_admin("Build Mode: [key_name(user)] built [T] at ([T.x],[T.y],[T.z])")
|
log_admin("Build Mode: [key_name(user)] built [T] at ([T.x],[T.y],[T.z])")
|
||||||
return
|
return
|
||||||
else if(right_click)
|
else if(right_click)
|
||||||
log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
|
log_admin("Build Mode: [key_name(user)] deleted [object] at ([object.x],[object.y],[object.z])")
|
||||||
if(istype(object,/turf/closed/wall))
|
if(iswallturf(object))
|
||||||
var/turf/T = object
|
var/turf/T = object
|
||||||
T.ChangeTurf(/turf/open/floor/plasteel)
|
T.ChangeTurf(/turf/open/floor/plasteel)
|
||||||
else if(istype(object,/turf/open/floor))
|
else if(isfloorturf(object))
|
||||||
var/turf/T = object
|
var/turf/T = object
|
||||||
T.ChangeTurf(/turf/open/space)
|
T.ChangeTurf(/turf/open/space)
|
||||||
else if(istype(object,/turf/closed/wall/r_wall))
|
else if(istype(object,/turf/closed/wall/r_wall))
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
var/datum/gas_mixture/GM = target.return_air()
|
var/datum/gas_mixture/GM = target.return_air()
|
||||||
var/list/GM_gases
|
var/list/GM_gases
|
||||||
var/burning = 0
|
var/burning = 0
|
||||||
if(istype(target, /turf/open))
|
if(isopenturf(target))
|
||||||
var/turf/open/T = target
|
var/turf/open/T = target
|
||||||
if(T.active_hotspot)
|
if(T.active_hotspot)
|
||||||
burning = 1
|
burning = 1
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ var/pipenetwarnings = 10
|
|||||||
var/target_temperature
|
var/target_temperature
|
||||||
var/target_heat_capacity
|
var/target_heat_capacity
|
||||||
|
|
||||||
if(istype(target, /turf/open))
|
if(isopenturf(target))
|
||||||
|
|
||||||
var/turf/open/modeled_location = target
|
var/turf/open/modeled_location = target
|
||||||
target_temperature = modeled_location.GetTemperature()
|
target_temperature = modeled_location.GetTemperature()
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
ruins_wizard_loadout = 1
|
ruins_wizard_loadout = 1
|
||||||
|
|
||||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||||
if(ruins_spaceworthiness && (H.z != 1 || istype(H.loc, /turf/open/space) || isplasmaman(H)))
|
if(ruins_spaceworthiness && (H.z != 1 || isspaceturf(H.loc) || isplasmaman(H)))
|
||||||
continue //#savetheminers
|
continue //#savetheminers
|
||||||
if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)))
|
if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)))
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||||
user << "<span class='notice'>You transfer [trans] units of the solution to [target].</span>"
|
user << "<span class='notice'>You transfer [trans] units of the solution to [target].</span>"
|
||||||
|
|
||||||
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
if(iscyborg(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
|
||||||
var/mob/living/silicon/robot/bro = user
|
var/mob/living/silicon/robot/bro = user
|
||||||
bro.cell.use(30)
|
bro.cell.use(30)
|
||||||
addtimer(reagents, "add_reagent", 600, FALSE, refill, trans)
|
addtimer(reagents, "add_reagent", 600, FALSE, refill, trans)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
for(var/obj/effect/landmark/R in landmarks_list)
|
for(var/obj/effect/landmark/R in landmarks_list)
|
||||||
if(R.name != "blobspawn")
|
if(R.name != "blobspawn")
|
||||||
if(prob(35))
|
if(prob(35))
|
||||||
if(istype(R.loc,/turf/open/space))
|
if(isspaceturf(R.loc))
|
||||||
new /mob/living/simple_animal/chicken/rabbit/space(R.loc)
|
new /mob/living/simple_animal/chicken/rabbit/space(R.loc)
|
||||||
else
|
else
|
||||||
new /mob/living/simple_animal/chicken/rabbit(R.loc)
|
new /mob/living/simple_animal/chicken/rabbit(R.loc)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if(platingRequired)
|
if(platingRequired)
|
||||||
if(istype(B, /turf/open/space))
|
if(isspaceturf(B))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
var/old_dir1 = T.dir
|
var/old_dir1 = T.dir
|
||||||
|
|||||||
@@ -143,7 +143,7 @@
|
|||||||
|
|
||||||
/obj/machinery/computer/holodeck/proc/floorcheck()
|
/obj/machinery/computer/holodeck/proc/floorcheck()
|
||||||
for(var/turf/T in linked)
|
for(var/turf/T in linked)
|
||||||
if(!T.intact || istype(T,/turf/open/space))
|
if(!T.intact || isspaceturf(T))
|
||||||
return 0
|
return 0
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@
|
|||||||
return
|
return
|
||||||
if(default_deconstruction_crowbar(I))
|
if(default_deconstruction_crowbar(I))
|
||||||
return
|
return
|
||||||
if(isrobot(user))
|
if(iscyborg(user))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(istype(I, /obj/item/seeds))
|
if(istype(I, /obj/item/seeds))
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
return (BRUTELOSS)
|
return (BRUTELOSS)
|
||||||
|
|
||||||
/obj/item/seeds/kudzu/proc/plant(mob/user)
|
/obj/item/seeds/kudzu/proc/plant(mob/user)
|
||||||
if(istype(user.loc,/turf/open/space))
|
if(isspaceturf(user.loc))
|
||||||
return
|
return
|
||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
message_admins("Kudzu planted by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) at ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>)",0,1)
|
message_admins("Kudzu planted by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) at ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>(JMP)</a>)",0,1)
|
||||||
|
|||||||
@@ -168,7 +168,7 @@
|
|||||||
origin_tech = "biotech=4;programming=5"
|
origin_tech = "biotech=4;programming=5"
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user)
|
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom/attack_self(mob/user)
|
||||||
if(istype(user.loc,/turf/open/space))
|
if(isspaceturf(user.loc))
|
||||||
return
|
return
|
||||||
var/mob/living/simple_animal/hostile/mushroom/M = new /mob/living/simple_animal/hostile/mushroom(user.loc)
|
var/mob/living/simple_animal/hostile/mushroom/M = new /mob/living/simple_animal/hostile/mushroom(user.loc)
|
||||||
M.maxHealth += round(seed.endurance / 4)
|
M.maxHealth += round(seed.endurance / 4)
|
||||||
@@ -241,7 +241,7 @@
|
|||||||
origin_tech = "biotech=4;plasmatech=6"
|
origin_tech = "biotech=4;plasmatech=6"
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
|
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/glowshroom/attack_self(mob/user)
|
||||||
if(istype(user.loc,/turf/open/space))
|
if(isspaceturf(user.loc))
|
||||||
return
|
return
|
||||||
var/obj/structure/glowshroom/planted = new effect_path(user.loc)
|
var/obj/structure/glowshroom/planted = new effect_path(user.loc)
|
||||||
planted.delay = planted.delay - seed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
planted.delay = planted.delay - seed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
||||||
|
|||||||
@@ -124,7 +124,7 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack_self(mob/user)
|
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack_self(mob/user)
|
||||||
if(awakening || istype(user.loc,/turf/open/space))
|
if(awakening || isspaceturf(user.loc))
|
||||||
return
|
return
|
||||||
user << "<span class='notice'>You begin to awaken the Killer Tomato...</span>"
|
user << "<span class='notice'>You begin to awaken the Killer Tomato...</span>"
|
||||||
awakening = 1
|
awakening = 1
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/obj/structure/bonfire/proc/CheckOxygen()
|
/obj/structure/bonfire/proc/CheckOxygen()
|
||||||
if(istype(loc,/turf/open))
|
if(isopenturf(loc))
|
||||||
var/turf/open/O = loc
|
var/turf/open/O = loc
|
||||||
if(O.air)
|
if(O.air)
|
||||||
var/G = O.air.gases
|
var/G = O.air.gases
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user