diff --git a/code/game/objects/items/bells.dm b/code/game/objects/items/bells.dm
index 43046d22b7..c7aa08a440 100644
--- a/code/game/objects/items/bells.dm
+++ b/code/game/objects/items/bells.dm
@@ -10,6 +10,7 @@
attack_verb = list("annoyed")
var/static/radial_examine = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_examine")
var/static/radial_use = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_use")
+ var/static/radial_pickup = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_pickup")
/obj/item/weapon/deskbell/examine(mob/user)
..()
@@ -26,6 +27,7 @@
//This defines the radials and what call we're assiging to them.
var/list/options = list()
options["examine"] = radial_examine
+ options["pick up"] = radial_pickup
if(!broken)
options["use"] = radial_use
@@ -54,6 +56,9 @@
ring(user)
add_fingerprint(user)
+ if("pick up")
+ ..()
+
/obj/item/weapon/deskbell/proc/ring(mob/user)
if(user.a_intent == "harm")
playsound(user.loc, 'sound/effects/deskbell_rude.ogg', 50, 1)
@@ -78,9 +83,16 @@
to_chat(user,"You are not able to ring [src].")
return 0
-/obj/item/weapon/deskbell/attackby(obj/item/i, mob/user, params)
- if(!istype(i))
+/obj/item/weapon/deskbell/attackby(obj/item/W, mob/user, params)
+ if(!istype(W))
return
+ if(W.is_wrench() && isturf(loc))
+ if(do_after(5))
+ if(!src) return
+ to_chat(user, "You dissasemble the desk bell")
+ new /obj/item/stack/material/steel(get_turf(src), 1)
+ qdel(src)
+ return
if(!broken)
ring(user)
diff --git a/code/game/objects/structures/crates_lockers/largecrate_vr.dm b/code/game/objects/structures/crates_lockers/largecrate_vr.dm
index c151409e62..6886a08a3c 100644
--- a/code/game/objects/structures/crates_lockers/largecrate_vr.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate_vr.dm
@@ -50,7 +50,7 @@
/mob/living/simple_mob/animal/wolf,
/mob/living/simple_mob/animal/space/bear;0.5,
/mob/living/simple_mob/animal/space/carp,
- /mob/living/simple_mob/animal/space/mimic,
+ /mob/living/simple_mob/vore/aggressive/mimic,
/mob/living/simple_mob/vore/aggressive/rat,
/mob/living/simple_mob/vore/aggressive/rat/tame,
// /mob/living/simple_mob/otie;0.5
diff --git a/code/global_vr.dm b/code/global_vr.dm
index 9506dd62d3..cfa9186b1d 100644
--- a/code/global_vr.dm
+++ b/code/global_vr.dm
@@ -6,6 +6,10 @@
robot_module_types += "Pupdozer"
return 1
+var/list/shell_module_types = list(
+ "Standard", "Service", "Clerical"
+)
+
var/global/list/acceptable_fruit_types= list(
"ambrosia",
"apple",
diff --git a/code/modules/admin/verbs/smite_vr.dm b/code/modules/admin/verbs/smite_vr.dm
index 0d048dde2d..b0d4b8aa8c 100644
--- a/code/modules/admin/verbs/smite_vr.dm
+++ b/code/modules/admin/verbs/smite_vr.dm
@@ -18,7 +18,6 @@
feedback_add_details("admin_verb","SMITEV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
switch(smite_choice)
- /*
if(SMITE_SHADEKIN_ATTACK)
var/turf/Tt = get_turf(target) //Turf for target
@@ -35,22 +34,22 @@
if(!Ts)
return //Didn't find shadekin spawn turf
- var/mob/living/simple_mob/shadekin/red/shadekin = new(Ts)
+ var/mob/living/simple_mob/shadekin/red/ai/shadekin = new(Ts)
//Abuse of shadekin
shadekin.real_name = shadekin.name
shadekin.init_vore()
shadekin.ability_flags |= 0x1
- shadekin.specific_targets = TRUE //Don't attack others
shadekin.phase_shift()
- shadekin.target_mob = target
- shadekin.stance = STANCE_ATTACK
+ shadekin.ai_holder.give_target(target)
+ shadekin.ai_holder.hostile = FALSE
+ shadekin.ai_holder.mauling = TRUE
shadekin.Life()
//Remove when done
spawn(10 SECONDS)
if(shadekin)
- shadekin.death()*/ //VORESTATION AI TEMPORARY REMOVAL
+ shadekin.death()
- /*if(SMITE_SHADEKIN_NOMF)
+ if(SMITE_SHADEKIN_NOMF)
var/list/kin_types = list(
"Red Eyes (Dark)" = /mob/living/simple_mob/shadekin/red/dark,
"Red Eyes (Light)" = /mob/living/simple_mob/shadekin/red/white,
@@ -93,7 +92,6 @@
shadekin.real_name = shadekin.name
shadekin.init_vore()
shadekin.can_be_drop_pred = TRUE
- shadekin.ai_inactive = TRUE
shadekin.dir = SOUTH
shadekin.ability_flags |= 0x1
shadekin.phase_shift() //Homf
@@ -119,7 +117,7 @@
target.ghostize()
qdel(target)
qdel(shadekin)
- */
+
if(SMITE_REDSPACE_ABDUCT)
redspace_abduction(target, src)
diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm
index 3d5fc13004..67080dd1e0 100644
--- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm
@@ -105,7 +105,7 @@
else if(W.is_wrench())
if(!air_supply)
- to_chat(user, "There is not tank to remove.")
+ to_chat(user, "There is no tank to remove.")
return
if(user.r_hand && user.l_hand)
@@ -137,7 +137,7 @@
if("cell")
if(cell)
- to_chat(user, "You detatch \the [cell] from \the [src]'s battery mount.")
+ to_chat(user, "You detach \the [cell] from \the [src]'s battery mount.")
for(var/obj/item/rig_module/module in installed_modules)
module.deactivate()
if(user.r_hand && user.l_hand)
@@ -165,7 +165,7 @@
return
var/obj/item/rig_module/removed = possible_removals[removal_choice]
- to_chat(user, "You detatch \the [removed] from \the [src].")
+ to_chat(user, "You detach \the [removed] from \the [src].")
removed.forceMove(get_turf(src))
removed.removed()
installed_modules -= removed
diff --git a/code/modules/materials/material_recipes.dm b/code/modules/materials/material_recipes.dm
index 687e5df27e..465d4ecc39 100644
--- a/code/modules/materials/material_recipes.dm
+++ b/code/modules/materials/material_recipes.dm
@@ -14,7 +14,6 @@
recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] bracelet", /obj/item/clothing/accessory/bracelet/material, 1, on_floor = 1, supplied_material = "[name]")
- recipes += new/datum/stack_recipe("[display_name] deskbell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]")
if(integrity>=50)
recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
@@ -101,6 +100,7 @@
new/datum/stack_recipe("tall filing cabinet", /obj/structure/filingcabinet/filingcabinet, 4, time = 20, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("chest drawer", /obj/structure/filingcabinet/chestdrawer, 4, time = 20, one_per_turf = 1, on_floor = 1), \
))
+ recipes += new/datum/stack_recipe("desk bell", /obj/item/weapon/deskbell, 1, on_floor = 1, supplied_material = "[name]")
/material/plasteel/generate_recipes()
..()
diff --git a/code/modules/mob/living/bot/secbot.dm b/code/modules/mob/living/bot/secbot.dm
index 1d52b591fd..1210d41e91 100644
--- a/code/modules/mob/living/bot/secbot.dm
+++ b/code/modules/mob/living/bot/secbot.dm
@@ -34,15 +34,20 @@
var/list/threat_found_sounds = list('sound/voice/bcriminal.ogg', 'sound/voice/bjustice.ogg', 'sound/voice/bfreeze.ogg')
var/list/preparing_arrest_sounds = list('sound/voice/bgod.ogg', 'sound/voice/biamthelaw.ogg', 'sound/voice/bsecureday.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bcreep.ogg')
var/list/fighting_sounds = list('sound/voice/biamthelaw.ogg', 'sound/voice/bradio.ogg', 'sound/voice/bjustice.ogg')
-//VOREStation Add - They don't like being pulled. This is going to fuck with slimesky, but meh.
+//VOREStation Add - They don't like being pulled. This is going to fuck with slimesky, but meh. //Screw you. Just screw you and your 'meh'
/mob/living/bot/secbot/Life()
..()
if(health > 0 && on && pulledby)
if(isliving(pulledby))
- var/mob/living/L = pulledby
- UnarmedAttack(L)
- say("Do not interfere with active law enforcement routines!")
- global_announcer.autosay("[src] was interfered with in [get_area(src)], activating defense routines.", "[src]", "Security")
+ var/pull_allowed = FALSE
+ for(var/A in req_one_access)
+ if(A in pulledby.GetAccess())
+ pull_allowed = TRUE
+ if(!pull_allowed)
+ var/mob/living/L = pulledby
+ UnarmedAttack(L)
+ say("Do not interfere with active law enforcement routines!")
+ global_announcer.autosay("[src] was interfered with in [get_area(src)], activating defense routines.", "[src]", "Security")
//VOREStation Add End
/mob/living/bot/secbot/beepsky
name = "Officer Beepsky"
diff --git a/code/modules/mob/living/living_vr.dm b/code/modules/mob/living/living_vr.dm
index 3e11087773..7616ac61d5 100644
--- a/code/modules/mob/living/living_vr.dm
+++ b/code/modules/mob/living/living_vr.dm
@@ -1,6 +1,6 @@
/mob/living/verb/customsay()
set category = "IC"
- set name = "Customise Say Verbs"
+ set name = "Customise Speech Verbs"
set desc = "Customise the text which appears when you type- e.g. 'says', 'asks', 'exclaims'."
if(src.client)
@@ -22,4 +22,4 @@
else if(sayselect == "Exclaim/Shout/Yell (!)")
custom_exclaim = sanitize(input(usr, "This word or phrase will appear instead of 'exclaims', 'shouts' or 'yells': [src] exclaims, \"Hi!\"", "Custom Exclaim", null) as text)
else
- return
\ No newline at end of file
+ return
diff --git a/code/modules/mob/living/silicon/ai/ai_remote_control.dm b/code/modules/mob/living/silicon/ai/ai_remote_control.dm
index cef8cec7e8..3e97678425 100644
--- a/code/modules/mob/living/silicon/ai/ai_remote_control.dm
+++ b/code/modules/mob/living/silicon/ai/ai_remote_control.dm
@@ -27,7 +27,7 @@
for(var/borgie in GLOB.available_ai_shells)
var/mob/living/silicon/robot/R = borgie
- if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) )
+ if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) && !(using_map.ai_shell_restricted && !(R.z in using_map.ai_shell_allowed_levels)) ) //VOREStation Edit: shell restrictions
possible += R
if(!LAZYLEN(possible))
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index ea851806c3..a9097f8913 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -259,11 +259,16 @@
if(module)
return
var/list/modules = list()
- modules.Add(robot_module_types)
- if(crisis || security_level == SEC_LEVEL_RED || crisis_override) // VOREStation Edit
- to_chat(src, "Crisis mode active. Combat module available.")
- modules+="Combat"
- modules+="ERT" //VOREStation Edit
+ //VOREStatation Edit Start: shell restrictions
+ if(shell)
+ modules.Add(shell_module_types)
+ else
+ modules.Add(robot_module_types)
+ if(crisis || security_level == SEC_LEVEL_RED || crisis_override)
+ to_chat(src, "Crisis mode active. Combat module available.")
+ modules+="Combat"
+ modules+="ERT"
+ //VOREStatation Edit End: shell restrictions
modtype = input("Please, select a module!", "Robot module", null, null) as null|anything in modules
if(module)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index ca21aa5f7e..c7ce79bb32 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -48,6 +48,8 @@ var/global/list/robot_modules = list(
apply_status_flags(R)
if(R.radio)
+ if(R.shell)
+ channels = R.mainframe.aiRadio.channels
R.radio.recalculateChannels()
vr_add_sprites() //Vorestation Edit: For vorestation only sprites
diff --git a/code/modules/mob/living/silicon/robot/robot_remote_control.dm b/code/modules/mob/living/silicon/robot/robot_remote_control.dm
index 90d74b2638..35ad010b97 100644
--- a/code/modules/mob/living/silicon/robot/robot_remote_control.dm
+++ b/code/modules/mob/living/silicon/robot/robot_remote_control.dm
@@ -69,11 +69,14 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
// Languages and comms.
languages = AI.languages.Copy()
speech_synthesizer_langs = AI.speech_synthesizer_langs.Copy()
- if(radio && AI.aiRadio) //AI keeps all channels, including Syndie if it is an Infiltrator.
+ //VOREStation Edit Start
+ if(radio && AI.aiRadio && module) //AI keeps all channels, including Syndie if it is an Infiltrator.
// if(AI.radio.syndie)
// radio.make_syndie()
radio.subspace_transmission = TRUE
- radio.channels = AI.aiRadio.channels
+ module.channels = AI.aiRadio.channels
+ radio.recalculateChannels()
+ //VOREStation Edit End
// Called after the AI transfers over.
/mob/living/silicon/robot/proc/post_deploy()
@@ -94,7 +97,8 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
mainframe.deployed_shell = null
SetName("[modtype] AI Shell [num2text(ident)]")
// undeployment_action.Remove(src)
- if(radio) //Return radio to normal
+ if(radio && module) //Return radio to normal //VOREStation Edit
+ module.channels = initial(module.channels) //VOREStation Edit
radio.recalculateChannels()
if(!QDELETED(camera))
camera.c_tag = real_name //update the camera name too
diff --git a/code/modules/mob/living/silicon/robot/robot_vr.dm b/code/modules/mob/living/silicon/robot/robot_vr.dm
index e66ad05ec9..e3264aee4e 100644
--- a/code/modules/mob/living/silicon/robot/robot_vr.dm
+++ b/code/modules/mob/living/silicon/robot/robot_vr.dm
@@ -258,3 +258,10 @@
return
if(buckle_mob(M))
visible_message("[M] starts riding [name]!")
+
+/mob/living/silicon/robot/onTransitZ(old_z, new_z)
+ if(shell)
+ if(deployed && using_map.ai_shell_restricted && !(new_z in using_map.ai_shell_allowed_levels))
+ to_chat(src,"Your connection with the shell is suddenly interrupted!")
+ undeploy()
+ ..()
diff --git a/code/modules/mob/living/simple_animal/aliens/hivebot.dm b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
index 12851c5af3..fbb0b8909b 100644
--- a/code/modules/mob/living/simple_animal/aliens/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/aliens/hivebot.dm
@@ -87,7 +87,7 @@
/mob/living/simple_mob/hostile/hivebot/range/ion
name = "engineering hivebot"
desc = "A robot. It has a tool which emits focused electromagnetic pulses, which are deadly to synthetic adverseries."
- projectiletype = /obj/item/projectile/ion/small //VOREStation Edit
+ projectiletype = /obj/item/projectile/ion/pistol //VOREStation Edit
projectilesound = 'sound/weapons/Laser.ogg'
icon_living = "engi"
ranged = TRUE
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm
index 36253dce84..e7bb82bb5d 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/mercs/mercs_vr.dm
@@ -5,5 +5,9 @@
/mob/living/simple_mob/humanoid/merc/melee/sword/space
name = "mercenary commando"
+ maxbodytemp = 700
+
/mob/living/simple_mob/humanoid/merc/ranged/space
- name = "mercenary commando"
\ No newline at end of file
+ name = "mercenary commando"
+
+ maxbodytemp = 700
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
index 84af3fcc3c..13764d20fd 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm
@@ -140,6 +140,13 @@
if(L.getCloneLoss() >= L.getMaxHealth() * 1.5)
to_chat(src, "This subject does not have an edible life energy...")
return FALSE
+ //VOREStation Addition start
+ if(istype(L, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = L
+ if(H.species.flags & NO_SCAN)
+ to_chat(src, "This subject's life energy is beyond my reach...")
+ return FALSE
+ //VOREStation Addition end
if(L.has_buckled_mobs())
for(var/A in L.buckled_mobs)
if(istype(A, /mob/living/simple_mob/slime/xenobio))
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm
index e67717403d..43cec1e80c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/subtypes_vr.dm
@@ -1,2 +1,6 @@
-/mob/living/simple_mob/slime/xenobio/rainbow/kendrick
- mob_bump_flag = 0
\ No newline at end of file
+/mob/living/simple_mob/slime/xenobio
+ mob_bump_flag = 0
+
+/mob/living/simple_mob/slime/xenobio/Initialize(mapload, var/mob/living/simple_mob/slime/xenobio/my_predecessor)
+ ..()
+ Weaken(10)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm
index 00a18feaad..5093caad4c 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/mimic.dm
@@ -58,7 +58,7 @@
desc = "A rectangular steel crate."
icon_state = "crate"
icon_living = "crate"
- icon = 'icons/obj/storage.dmi'
+ icon = 'icons/obj/storage_vr.dmi'
faction = "mimic"
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm
index 9520d9a3ac..b5a3bc2c60 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/zz_vore_overrides.dm
@@ -121,7 +121,7 @@
health = 80 // Increase health to compensate
maxHealth = 80
*/
-
+/*
/mob/living/simple_mob/animal/space/mimic
vore_active = 1
// NO VORE SPRITES
@@ -130,7 +130,7 @@
// Overrides to non-vore version
maxHealth = 60
health = 60
-
+*/
/mob/living/simple_mob/animal/passive/cat
vore_active = 1
// NO VORE SPRITES
diff --git a/html/changelogs/Heroman3003 - bellfixes.yml b/html/changelogs/Heroman3003 - bellfixes.yml
new file mode 100644
index 0000000000..dd3a5a712e
--- /dev/null
+++ b/html/changelogs/Heroman3003 - bellfixes.yml
@@ -0,0 +1,38 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Heroman3003
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "Desk bells can now be picked up like normal items."
+ - tweak: "Desk bells can now be deconstructed with a wrench while on the ground."
+ - tweak: "Desk bells can now only be made out of steel."
diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm
index 54be1e79cc..00aea0934e 100644
--- a/maps/tether/tether_defines.dm
+++ b/maps/tether/tether_defines.dm
@@ -150,6 +150,23 @@
list("Debris Field - Z1 Space")
)
+ ai_shell_restricted = TRUE
+ ai_shell_allowed_levels = list(
+ Z_LEVEL_SURFACE_LOW,
+ Z_LEVEL_SURFACE_MID,
+ Z_LEVEL_SURFACE_HIGH,
+ Z_LEVEL_TRANSIT,
+ Z_LEVEL_SPACE_LOW,
+ Z_LEVEL_SPACE_MID,
+ Z_LEVEL_SPACE_HIGH,
+ Z_LEVEL_SURFACE_MINE,
+ Z_LEVEL_SOLARS,
+ Z_LEVEL_CENTCOM,
+ Z_LEVEL_MISC,
+ Z_LEVEL_SHIPS,
+ Z_LEVEL_BEACH
+ )
+
lateload_single_pick = null //Nothing right now.
/datum/map/tether/perform_map_generation()
diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm
index 90e6d068b8..fe0ef3972b 100644
--- a/maps/~map_system/maps.dm
+++ b/maps/~map_system/maps.dm
@@ -59,6 +59,8 @@ var/list/all_maps = list()
var/list/holomap_legend_x = list()
var/list/holomap_legend_y = list()
var/list/meteor_strike_areas // VOREStation Edit - Areas meteor strikes may choose to hit.
+ var/ai_shell_restricted = FALSE //VOREStation Addition - are there z-levels restricted?
+ var/ai_shell_allowed_levels = list() //VOREStation Addition - which z-levels ARE we allowed to visit?
var/station_name = "BAD Station"
var/station_short = "Baddy"