Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-02-01

# Conflicts:
#	.travis.yml
#	code/_away_mission_tests.dm
#	code/modules/admin/verbs/mapping.dm
#	code/modules/mob/living/carbon/human/update_icons.dm
#	html/changelogs/.all_changelog.yml
#	maps/southern_cross/southern_cross-1.dmm
#	maps/southern_cross/southern_cross-3.dmm
#	maps/southern_cross/southern_cross-6.dmm
#	nano/images/nanomap_z1.png
#	nano/images/nanomap_z10.png
#	nano/images/nanomap_z2.png
#	nano/images/nanomap_z3.png
#	nano/images/nanomap_z5.png
#	nano/images/nanomap_z6.png
This commit is contained in:
Leshana
2018-02-01 23:55:47 -05:00
123 changed files with 2135 additions and 17043 deletions
+2 -2
View File
@@ -72,7 +72,6 @@ What is the naming convention for planes or layers?
//#define FLY_LAYER 5 //For easy recordkeeping; this is a byond define
#define LIGHTING_LAYER 11 //Layer that lighting used to be on (now it's on a plane)
#define HUD_LAYER 20 //Above lighting, but below obfuscation. For in-game HUD effects (whereas SCREEN_LAYER is for abstract/OOC things like inventory slots)
#define OBFUSCATION_LAYER 21 //Where images covering the view for eyes are put
#define SCREEN_LAYER 22 //Mob HUD/effects layer
#define PLANE_LIGHTING 5 //Where the lighting (and darkness) lives
@@ -96,7 +95,8 @@ What is the naming convention for planes or layers?
#define PLANE_MESONS 30 //Stuff seen with mesons, like open ceilings. This is 30 for downstreams.
//Fullscreen overlays under inventory
#define PLANE_FULLSCREEN 90 //Blindness, mesons, druggy, etc
#define PLANE_FULLSCREEN 90 //Blindness, mesons, druggy, etc
#define OBFUSCATION_LAYER 5 //Where images covering the view for eyes are put
#define FULLSCREEN_LAYER 18
#define DAMAGE_LAYER 18.1
#define BLIND_LAYER 18.2
+1 -1
View File
@@ -53,7 +53,7 @@ var/global/defer_powernet_rebuild = 0 // True if net rebuild will be called
#define NETWORK_PRISON "Prison"
#define NETWORK_SECURITY "Security"
#define NETWORK_INTERROGATION "Interrogation"
#define NETWORK_TELECOM "Tcomsat"
#define NETWORK_TELECOM "Tcomms"
#define NETWORK_THUNDER "Thunderdome"
#define NETWORK_COMMUNICATORS "Communicators"
+1 -1
View File
@@ -7,4 +7,4 @@
* Should you wish to edit set AWAY_MISSION_TEST to 1 like so:
* #define AWAY_MISSION_TEST 1
*/
#define AWAY_MISSION_TEST 0
#define AWAY_MISSION_TEST 0
+16
View File
@@ -248,3 +248,19 @@ Proc for attack log creation, because really why not
if (progbar)
qdel(progbar)
/atom/proc/living_mobs(var/range = world.view)
var/list/viewers = oviewers(src,range)
var/list/living = list()
for(var/mob/living/L in viewers)
living += L
return living
/atom/proc/human_mobs(var/range = world.view)
var/list/viewers = oviewers(src,range)
var/list/humans = list()
for(var/mob/living/carbon/human/H in viewers)
humans += H
return humans
-7
View File
@@ -1,7 +0,0 @@
/atom/proc/living_mobs(var/range = world.view)
var/list/viewers = oviewers(src,range)
var/list/living = list()
for(var/mob/living/L in viewers)
living += L
return living
+12
View File
@@ -137,6 +137,18 @@ var/global/list/PDA_Manifest = list()
if(!department && !(name in heads))
misc[++misc.len] = list("name" = name, "rank" = rank, "active" = isactive)
// Synthetics don't have actual records, so we will pull them from here.
// Synths don't have records, which is the means by which isactive is retrieved, so I'm hardcoding it to active, don't really have any better means
for(var/mob/living/silicon/ai/ai in mob_list)
bot[++bot.len] = list("name" = ai.real_name, "rank" = "Artificial Intelligence", "active" = "Active")
for(var/mob/living/silicon/robot/robot in mob_list)
// No combat/syndicate cyborgs, no drones.
if(robot.module && robot.module.hide_on_manifest)
continue
bot[++bot.len] = list("name" = robot.real_name, "rank" = "[robot.modtype] [robot.braintype]", "active" = "Active")
PDA_Manifest = list(
list("cat" = "Command", "elems" = heads),
+3 -3
View File
@@ -83,8 +83,8 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
minimal_player_age = 5
economic_modifier = 7
access = list(access_heads)
minimal_access = list(access_heads)
access = list(access_heads, access_keycard_auth)
minimal_access = list(access_heads, access_keycard_auth)
outfit_type = /decl/hierarchy/outfit/job/secretary
alt_titles = list("Command Liaison", "Bridge Secretary")
alt_titles = list("Command Liaison", "Bridge Secretary")
+18 -12
View File
@@ -40,19 +40,19 @@
if(!usr || usr.stat || usr.lying) return
if(scan)
usr << "You remove \the [scan] from \the [src]."
to_chat(usr, "You remove \the [scan] from \the [src].")
scan.forceMove(get_turf(src))
if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human))
usr.put_in_hands(scan)
scan = null
else if(modify)
usr << "You remove \the [modify] from \the [src]."
to_chat(usr, "You remove \the [modify] from \the [src].")
modify.forceMove(get_turf(src))
if(!usr.get_active_hand() && istype(usr,/mob/living/carbon/human))
usr.put_in_hands(modify)
modify = null
else
usr << "There is nothing to remove from the console."
to_chat(usr, "There is nothing to remove from the console.")
return
/obj/machinery/computer/card/attackby(obj/item/weapon/card/id/id_card, mob/user)
@@ -82,12 +82,15 @@
/obj/machinery/computer/card/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
user.set_machine(src)
if(data_core)
data_core.get_manifest_list()
var/data[0]
data["src"] = "\ref[src]"
data["station_name"] = station_name()
data["mode"] = mode
data["printing"] = printing
data["manifest"] = data_core ? data_core.get_manifest(0) : null
data["manifest"] = PDA_Manifest
data["target_name"] = modify ? modify.name : "-----"
data["target_owner"] = modify && modify.registered_name ? modify.registered_name : "-----"
data["target_rank"] = get_target_rank()
@@ -99,13 +102,16 @@
data["all_centcom_access"] = null
data["regions"] = null
data["engineering_jobs"] = format_jobs(engineering_positions)
data["medical_jobs"] = format_jobs(medical_positions)
data["science_jobs"] = format_jobs(science_positions)
data["security_jobs"] = format_jobs(security_positions)
data["cargo_jobs"] = format_jobs(cargo_positions)
data["civilian_jobs"] = format_jobs(civilian_positions)
data["centcom_jobs"] = format_jobs(get_all_centcom_jobs())
data["jobs"] = list(
list("cat" = "Engineering", "jobs" = format_jobs(engineering_positions)),
list("cat" = "Medical", "jobs" = format_jobs(medical_positions)),
list("cat" = "Science", "jobs" = format_jobs(science_positions)),
list("cat" = "Security", "jobs" = format_jobs(security_positions)),
list("cat" = "Cargo", "jobs" = format_jobs(cargo_positions)),
list("cat" = "Planetside", "jobs" = format_jobs(planet_positions)),
list("cat" = "Civilian", "jobs" = format_jobs(civilian_positions)),
list("cat" = "CentCom", "jobs" = format_jobs(get_all_centcom_jobs()))
)
if (modify && is_centcom())
var/list/all_centcom_access = list()
@@ -209,7 +215,7 @@
jobdatum = J
break
if(!jobdatum)
usr << "<span class='warning'>No log exists for this job: [t1]</span>"
to_chat(usr, "<span class='warning'>No log exists for this job: [t1]</span>")
return
access = jobdatum.get_access()
+12 -2
View File
@@ -12,6 +12,7 @@
var/lit = 0
var/id = null
var/on_icon = "sign_on"
var/off_icon = "sign_off"
/obj/machinery/holosign/proc/toggle()
if(stat & (BROKEN|NOPOWER))
@@ -22,7 +23,7 @@
/obj/machinery/holosign/update_icon()
if(!lit)
icon_state = "sign_off"
icon_state = off_icon
else
icon_state = on_icon
@@ -40,7 +41,16 @@
/obj/machinery/holosign/exit
name = "exit holosign"
desc = "Small wall-mounted holographic projector. This one reads EXIT."
on_icon = "exit"
on_icon = "emergencyexit"
/obj/machinery/holosign/bar
name = "bar holosign"
desc = "Small wall-mounted holographic projector. This one reads OPEN."
icon_state = "barclosed"
on_icon = "baropen"
off_icon = "barclosed"
////////////////////SWITCH///////////////////////////////////////
/obj/machinery/button/holosign
+3 -1
View File
@@ -62,6 +62,7 @@
var/wrenching = 0
var/last_target //last target fired at, prevents turrets from erratically firing at all valid targets in range
var/timeout = 10 // When a turret pops up, then finds nothing to shoot at, this number decrements until 0, when it pops down.
var/can_salvage = TRUE // If false, salvaging doesn't give you anything.
/obj/machinery/porta_turret/crescent
enabled = 0
@@ -102,6 +103,7 @@
desc = "A very tough looking turret made by alien hands. This one looks destroyed, thankfully."
icon_state = "destroyed_target_prism"
stat = BROKEN
can_salvage = FALSE // So you need to actually kill a turret to get the alien gun.
/obj/machinery/porta_turret/New()
..()
@@ -325,7 +327,7 @@ var/list/turret_icons
//try and salvage its components
user << "<span class='notice'>You begin prying the metal coverings off.</span>"
if(do_after(user, 20))
if(prob(70))
if(can_salvage && prob(70))
user << "<span class='notice'>You remove the turret and salvage some components.</span>"
if(installation)
var/obj/item/weapon/gun/energy/Gun = new installation(loc)
@@ -180,6 +180,13 @@
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/heads/captain
/obj/item/device/radio/headset/heads/captain/sfr
name = "SFR headset"
desc = "A headset belonging to a Sif Free Radio DJ. SFR, best tunes in the wilderness."
icon_state = "com_headset_alt"
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/heads/captain
/obj/item/device/radio/headset/heads/ai_integrated //No need to care about icons, it should be hidden inside the AI anyway.
name = "\improper AI subspace transceiver"
desc = "Integrated AI radio transceiver."
+34
View File
@@ -18,3 +18,37 @@
/obj/item/poi/pascalb/Destroy()
processing_objects -= src
return ..()
/obj/structure/closet/crate/oldreactor
name = "fission reactor rack"
desc = "Used in older models of nuclear reactors, essentially a cooling rack for high volumes of radioactive material."
icon = 'icons/obj/objects.dmi'
icon_state = "poireactor"
icon_opened = "poireactor_open"
icon_closed = "poireactor"
climbable = 0
/obj/structure/closet/crate/oldreactor/New()
..()
new /obj/item/weapon/fuel_assembly/deuterium(src)
new /obj/item/weapon/fuel_assembly/deuterium(src)
new /obj/item/weapon/fuel_assembly/deuterium(src)
new /obj/item/weapon/fuel_assembly/deuterium(src)
new /obj/item/weapon/fuel_assembly/deuterium(src)
new /obj/item/weapon/fuel_assembly/deuterium(src)
/obj/item/poi/brokenoldreactor
icon_state = "poireactor_broken"
name = "ruptured fission reactor rack"
desc = "This broken hunk of machinery looks extremely dangerous."
/obj/item/poi/brokenoldreactor/New()
processing_objects += src
return ..()
/obj/item/poi/brokenoldreactor/process()
radiation_repository.radiate(src, 25)
/obj/item/poi/brokenoldreactor/Destroy()
processing_objects -= src
return ..()
@@ -399,28 +399,28 @@
return
if(!parachute) //This packs the parachute
visible_message("<span class='notice'>\The [H] starts to pack \the [src]!</span>", \
H.visible_message("<span class='notice'>\The [H] starts to pack \the [src]!</span>", \
"<span class='notice'>You start to pack \the [src]!</span>", \
"You hear the shuffling of cloth.")
if(do_after(H, 50))
visible_message("<span class='notice'>\The [H] finishes packing \the [src]!</span>", \
H.visible_message("<span class='notice'>\The [H] finishes packing \the [src]!</span>", \
"<span class='notice'>You finish packing \the [src]!</span>", \
"You hear the shuffling of cloth.")
parachute = TRUE
else
visible_message("<span class='notice'>\The [src] gives up on packing \the [src]!</span>", \
H.visible_message("<span class='notice'>\The [src] gives up on packing \the [src]!</span>", \
"<span class='notice'>You give up on packing \the [src]!</span>")
return
else //This unpacks the parachute
visible_message("<span class='notice'>\The [src] starts to unpack \the [src]!</span>", \
H.visible_message("<span class='notice'>\The [src] starts to unpack \the [src]!</span>", \
"<span class='notice'>You start to unpack \the [src]!</span>", \
"You hear the shuffling of cloth.")
if(do_after(H, 25))
visible_message("<span class='notice'>\The [src] finishes unpacking \the [src]!</span>", \
H.visible_message("<span class='notice'>\The [src] finishes unpacking \the [src]!</span>", \
"<span class='notice'>You finish unpacking \the [src]!</span>", \
"You hear the shuffling of cloth.")
parachute = FALSE
else
visible_message("<span class='notice'>\The [src] decides not to unpack \the [src]!</span>", \
H.visible_message("<span class='notice'>\The [src] decides not to unpack \the [src]!</span>", \
"<span class='notice'>You decide not to unpack \the [src]!</span>")
return
+17
View File
@@ -902,6 +902,18 @@ something, make sure it's not in one of the other lists.*/
prob(1);/obj/item/weapon/beartrap,
prob(2);/obj/item/weapon/handcuffs,)
/obj/random/sfr
name = "random SFR headset"
desc = "This is a headset spawn."
icon = 'icons/misc/mark.dmi'
icon_state = "rup"
/obj/random/sfr/item_to_spawn()
return pick(prob(25);/obj/item/device/radio/headset/heads/captain/sfr,
prob(25);/obj/item/device/radio/headset/headset_cargo/alt,
prob(25);/obj/item/device/radio/headset/headset_com/alt,
prob(25);/obj/item/device/radio/headset)
/obj/random/rigsuit
name = "Random rigsuit"
desc = "This is a random rigsuit."
@@ -1013,6 +1025,11 @@ var/list/multi_point_spawns
id = "Captain's spare id"
item_path = /obj/item/weapon/card/id/gold/captain/spare
/obj/random_multi/single_item/sfr_headset
name = "Multi Point - headset"
id = "SFR headset"
item_path = /obj/random/sfr
//Multiple Object Spawn
/obj/random/multiple
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/guncabinet
name = "gun cabinet"
req_access = list(access_armory)
req_one_access = list(access_armory)
icon = 'icons/obj/guncabinet.dmi'
icon_state = "base"
icon_off ="base"
+8
View File
@@ -0,0 +1,8 @@
/obj/structure/dogbed
name = "dog bed"
desc = "A bed made especially for dogs, or other similarly sized pets."
icon = 'icons/obj/furniture.dmi'
icon_state = "dogbed"
can_buckle = 1
buckle_dir = SOUTH
buckle_lying = 1
@@ -73,6 +73,7 @@
return
is_stump = TRUE
density = FALSE
icon_state = "[base_state]_stump"
overlays.Cut() // For the Sif tree and other future glowy trees.
set_light(0)
+127 -39
View File
@@ -6,9 +6,65 @@
w_class = ITEMSIZE_HUGE
var/state = 0
var/health = 200
var/max_health = 200
var/displaced_health = 50
var/current_damage = 0
var/cover = 50 //how much cover the girder provides against projectiles.
var/default_material = DEFAULT_WALL_MATERIAL
var/material/girder_material
var/material/reinf_material
var/reinforcing = 0
var/applies_material_colour = 1
/obj/structure/girder/New(var/newloc, var/material_key)
..(newloc)
if(!material_key)
material_key = default_material
set_material(material_key)
update_icon()
/obj/structure/girder/Destroy()
if(girder_material.products_need_process())
processing_objects -= src
. = ..()
/obj/structure/girder/process()
if(!radiate())
processing_objects -= src
return
/obj/structure/girder/proc/radiate()
var/total_radiation = girder_material.radioactivity + (reinf_material ? reinf_material.radioactivity / 2 : 0)
if(!total_radiation)
return
radiation_repository.radiate(src, total_radiation)
return total_radiation
/obj/structure/girder/proc/set_material(var/new_material)
girder_material = get_material_by_name(new_material)
if(!girder_material)
qdel(src)
name = "[girder_material.display_name] [initial(name)]"
max_health = round(girder_material.integrity) //Should be 150 with default integrity (steel). Weaker than ye-olden Girders now.
health = max_health
displaced_health = round(max_health/4)
if(applies_material_colour)
color = girder_material.icon_colour
if(girder_material.products_need_process()) //Am I radioactive or some other? Process me!
processing_objects |= src
else if(src in processing_objects) //If I happened to be radioactive or s.o. previously, and am not now, stop processing.
processing_objects -= src
/obj/structure/girder/get_material()
return girder_material
/obj/structure/girder/update_icon()
if(anchored)
icon_state = "girder"
else
icon_state = "displaced"
/obj/structure/girder/displaced
icon_state = "displaced"
@@ -16,6 +72,17 @@
health = 50
cover = 25
/obj/structure/girder/displaced/New(var/newloc, var/material_key)
..(newloc, material_key)
displace()
/obj/structure/girder/proc/displace()
name = "displaced [girder_material.display_name] [initial(name)]"
icon_state = "displaced"
anchored = 0
health = (displaced_health - round(current_damage / 4))
cover = 25
/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker)
if(!damage || !wallbreaker)
return 0
@@ -36,6 +103,25 @@
if(!istype(Proj, /obj/item/projectile/beam))
damage *= 0.4 //non beams do reduced damage
else if(girder_material && girder_material.reflectivity >= 0.5) // Reflect lasers.
var/new_damage = damage * girder_material.reflectivity
var/outgoing_damage = damage - new_damage
damage = round(new_damage)
Proj.damage = outgoing_damage
visible_message("<span class='danger'>\The [src] reflects \the [Proj]!</span>")
// Find a turf near or on the original location to bounce to
var/new_x = Proj.starting.x + pick(0, 0, 0, -1, 1, -2, 2)
var/new_y = Proj.starting.y + pick(0, 0, 0, -1, 1, -2, 2)
//var/turf/curloc = get_turf(src)
var/turf/curloc = get_step(src, get_dir(src, Proj.starting))
Proj.penetrating += 1 // Needed for the beam to get out of the girder.
// redirect the projectile
Proj.redirect(new_x, new_y, curloc, null)
health -= damage
..()
if(health <= 0)
@@ -47,9 +133,10 @@
dismantle()
/obj/structure/girder/proc/reset_girder()
name = "[girder_material.display_name] [initial(name)]"
anchored = 1
cover = initial(cover)
health = min(health,initial(health))
health = min(max_health - current_damage,max_health)
state = 0
icon_state = initial(icon_state)
reinforcing = 0
@@ -60,62 +147,59 @@
if(istype(W, /obj/item/weapon/wrench) && state == 0)
if(anchored && !reinf_material)
playsound(src, W.usesound, 100, 1)
user << "<span class='notice'>Now disassembling the girder...</span>"
if(do_after(user,40 * W.toolspeed))
to_chat(user, "<span class='notice'>Now disassembling the girder...</span>")
if(do_after(user,(35 + round(max_health/50)) * W.toolspeed))
if(!src) return
user << "<span class='notice'>You dissasembled the girder!</span>"
to_chat(user, "<span class='notice'>You dissasembled the girder!</span>")
dismantle()
else if(!anchored)
playsound(src, W.usesound, 100, 1)
user << "<span class='notice'>Now securing the girder...</span>"
to_chat(user, "<span class='notice'>Now securing the girder...</span>")
if(do_after(user, 40 * W.toolspeed, src))
user << "<span class='notice'>You secured the girder!</span>"
to_chat(user, "<span class='notice'>You secured the girder!</span>")
reset_girder()
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "<span class='notice'>Now slicing apart the girder...</span>"
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30 * W.toolspeed))
if(!src) return
user << "<span class='notice'>You slice apart the girder!</span>"
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "<span class='notice'>You drill through the girder!</span>"
to_chat(user, "<span class='notice'>You drill through the girder!</span>")
dismantle()
else if(istype(W, /obj/item/weapon/screwdriver))
if(state == 2)
playsound(src, W.usesound, 100, 1)
user << "<span class='notice'>Now unsecuring support struts...</span>"
to_chat(user, "<span class='notice'>Now unsecuring support struts...</span>")
if(do_after(user,40 * W.toolspeed))
if(!src) return
user << "<span class='notice'>You unsecured the support struts!</span>"
to_chat(user, "<span class='notice'>You unsecured the support struts!</span>")
state = 1
else if(anchored && !reinf_material)
playsound(src, W.usesound, 100, 1)
reinforcing = !reinforcing
user << "<span class='notice'>\The [src] can now be [reinforcing? "reinforced" : "constructed"]!</span>"
to_chat(user, "<span class='notice'>\The [src] can now be [reinforcing? "reinforced" : "constructed"]!</span>")
else if(istype(W, /obj/item/weapon/wirecutters) && state == 1)
playsound(src, W.usesound, 100, 1)
user << "<span class='notice'>Now removing support struts...</span>"
to_chat(user, "<span class='notice'>Now removing support struts...</span>")
if(do_after(user,40 * W.toolspeed))
if(!src) return
user << "<span class='notice'>You removed the support struts!</span>"
to_chat(user, "<span class='notice'>You removed the support struts!</span>")
reinf_material.place_dismantled_product(get_turf(src))
reinf_material = null
reset_girder()
else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored)
playsound(src, W.usesound, 100, 1)
user << "<span class='notice'>Now dislodging the girder...</span>"
to_chat(user, "<span class='notice'>Now dislodging the girder...</span>")
if(do_after(user, 40 * W.toolspeed))
if(!src) return
user << "<span class='notice'>You dislodged the girder!</span>"
icon_state = "displaced"
anchored = 0
health = 50
cover = 25
to_chat(user, "<span class='notice'>You dislodged the girder!</span>")
displace()
else if(istype(W, /obj/item/stack/material))
if(reinforcing && !reinf_material)
@@ -130,14 +214,16 @@
/obj/structure/girder/proc/take_damage(var/damage)
health -= damage
if(health <= 0)
dismantle()
else
current_damage = current_damage + damage //Rather than calculate this every time we need to use it, just calculate it here and save it.
/obj/structure/girder/proc/construct_wall(obj/item/stack/material/S, mob/user)
var/amount_to_use = reinf_material ? 1 : 2
if(S.get_amount() < amount_to_use)
user << "<span class='notice'>There isn't enough material here to construct a wall.</span>"
to_chat(user, "<span class='notice'>There isn't enough material here to construct a wall.</span>")
return 0
var/material/M = name_to_material[S.default_type]
@@ -148,24 +234,24 @@
add_hiddenprint(usr)
if(M.integrity < 50)
user << "<span class='notice'>This material is too soft for use in wall construction.</span>"
to_chat(user, "<span class='notice'>This material is too soft for use in wall construction.</span>")
return 0
user << "<span class='notice'>You begin adding the plating...</span>"
to_chat(user, "<span class='notice'>You begin adding the plating...</span>")
if(!do_after(user,40) || !S.use(amount_to_use))
return 1 //once we've gotten this far don't call parent attackby()
if(anchored)
user << "<span class='notice'>You added the plating!</span>"
to_chat(user, "<span class='notice'>You added the plating!</span>")
else
user << "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>"
to_chat(user, "<span class='notice'>You create a false wall! Push on it to open or close the passage.</span>")
wall_fake = 1
var/turf/Tsrc = get_turf(src)
Tsrc.ChangeTurf(/turf/simulated/wall)
var/turf/simulated/wall/T = get_turf(src)
T.set_material(M, reinf_material)
T.set_material(M, reinf_material, girder_material)
if(wall_fake)
T.can_open = 1
T.add_hiddenprint(usr)
@@ -174,22 +260,22 @@
/obj/structure/girder/proc/reinforce_with_material(obj/item/stack/material/S, mob/user) //if the verb is removed this can be renamed.
if(reinf_material)
user << "<span class='notice'>\The [src] is already reinforced.</span>"
to_chat(user, "<span class='notice'>\The [src] is already reinforced.</span>")
return 0
if(S.get_amount() < 1)
user << "<span class='notice'>There isn't enough material here to reinforce the girder.</span>"
to_chat(user, "<span class='notice'>There isn't enough material here to reinforce the girder.</span>")
return 0
var/material/M = name_to_material[S.default_type]
if(!istype(M) || M.integrity < 50)
user << "You cannot reinforce \the [src] with that; it is too soft."
to_chat(user, "You cannot reinforce \the [src] with that; it is too soft.")
return 0
user << "<span class='notice'>Now reinforcing...</span>"
to_chat(user, "<span class='notice'>Now reinforcing...</span>")
if (!do_after(user,40) || !S.use(1))
return 1 //don't call parent attackby() past this point
user << "<span class='notice'>You added reinforcement!</span>"
to_chat(user, "<span class='notice'>You added reinforcement!</span>")
reinf_material = M
reinforce_girder()
@@ -197,13 +283,13 @@
/obj/structure/girder/proc/reinforce_girder()
cover = reinf_material.hardness
health = 500
health = health + round(reinf_material.integrity/2)
state = 2
icon_state = "reinforced"
reinforcing = 0
/obj/structure/girder/proc/dismantle()
new /obj/item/stack/material/steel(get_turf(src))
girder_material.place_dismantled_product(get_turf(src))
qdel(src)
/obj/structure/girder/attack_hand(mob/user as mob)
@@ -235,6 +321,8 @@
icon_state= "cultgirder"
health = 250
cover = 70
girder_material = DEFAULT_WALL_MATERIAL
applies_material_colour = 0
/obj/structure/girder/cult/dismantle()
new /obj/effect/decal/remains/human(get_turf(src))
@@ -243,18 +331,18 @@
/obj/structure/girder/cult/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
playsound(src, W.usesound, 100, 1)
user << "<span class='notice'>Now disassembling the girder...</span>"
to_chat(user, "<span class='notice'>Now disassembling the girder...</span>")
if(do_after(user,40 * W.toolspeed))
user << "<span class='notice'>You dissasembled the girder!</span>"
to_chat(user, "<span class='notice'>You dissasembled the girder!</span>")
dismantle()
else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
user << "<span class='notice'>Now slicing apart the girder...</span>"
to_chat(user, "<span class='notice'>Now slicing apart the girder...</span>")
if(do_after(user,30 * W.toolspeed))
user << "<span class='notice'>You slice apart the girder!</span>"
to_chat(user, "<span class='notice'>You slice apart the girder!</span>")
dismantle()
else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
user << "<span class='notice'>You drill through the girder!</span>"
to_chat(user, "<span class='notice'>You drill through the girder!</span>")
new /obj/effect/decal/remains/human(get_turf(src))
dismantle()
+13
View File
@@ -156,6 +156,9 @@
/obj/structure/sign/warning/docking_area
name = "\improper KEEP CLEAR: DOCKING AREA"
/obj/structure/sign/warning/evac
name = "\improper KEEP CLEAR: EVAC DOCKING AREA"
icon_state = "evac"
/obj/structure/sign/warning/engineering_access
@@ -777,3 +780,13 @@
/obj/structure/sign/atmos/air
name = "\improper AIR"
icon_state = "atmos_air"
/obj/structure/sign/poi/engineleft
name = "I.C.V."
desc = "The charred name of a cargo ship of some description."
icon_state = "poi_engine1"
/obj/structure/sign/poi/engineright
name = "I.C.V."
desc = "The charred name of a cargo ship of some description."
icon_state = "poi_engine2"
+1
View File
@@ -4,6 +4,7 @@ var/image/no_ceiling_image = null
/hook/startup/proc/setup_no_ceiling_image()
cache_no_ceiling_image()
return TRUE
/proc/cache_no_ceiling_image()
no_ceiling_image = image(icon = 'icons/turf/open_space.dmi', icon_state = "no_ceiling", layer = OVERTURF_LAYER)
+5 -1
View File
@@ -31,9 +31,13 @@
update_icon()
/turf/simulated/wall/proc/set_material(var/material/newmaterial, var/material/newrmaterial)
/turf/simulated/wall/proc/set_material(var/material/newmaterial, var/material/newrmaterial, var/material/newgmaterial)
material = newmaterial
reinf_material = newrmaterial
if(!newgmaterial)
girder_material = DEFAULT_WALL_MATERIAL
else
girder_material = newgmaterial
update_material()
/turf/simulated/wall/update_icon()
+23 -13
View File
@@ -14,6 +14,7 @@
var/global/damage_overlays[16]
var/active
var/can_open = 0
var/material/girder_material
var/material/material
var/material/reinf_material
var/last_state
@@ -26,12 +27,15 @@
for(var/obj/O in src)
O.hide(1)
/turf/simulated/wall/New(var/newloc, var/materialtype, var/rmaterialtype)
/turf/simulated/wall/New(var/newloc, var/materialtype, var/rmaterialtype, var/girdertype)
..(newloc)
icon_state = "blank"
if(!materialtype)
materialtype = DEFAULT_WALL_MATERIAL
material = get_material_by_name(materialtype)
if(!girdertype)
girdertype = DEFAULT_WALL_MATERIAL
girder_material = get_material_by_name(girdertype)
if(!isnull(rmaterialtype))
reinf_material = get_material_by_name(rmaterialtype)
update_material()
@@ -120,18 +124,18 @@
. = ..(user)
if(!damage)
user << "<span class='notice'>It looks fully intact.</span>"
to_chat(user, "<span class='notice'>It looks fully intact.</span>")
else
var/dam = damage / material.integrity
if(dam <= 0.3)
user << "<span class='warning'>It looks slightly damaged.</span>"
to_chat(user, "<span class='warning'>It looks slightly damaged.</span>")
else if(dam <= 0.6)
user << "<span class='warning'>It looks moderately damaged.</span>"
to_chat(user, "<span class='warning'>It looks moderately damaged.</span>")
else
user << "<span class='danger'>It looks heavily damaged.</span>"
to_chat(user, "<span class='danger'>It looks heavily damaged.</span>")
if(locate(/obj/effect/overlay/wallrot) in src)
user << "<span class='warning'>There is fungus growing on [src].</span>"
to_chat(user, "<span class='warning'>There is fungus growing on [src].</span>")
//Damage
@@ -186,9 +190,9 @@
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(!no_product)
if(reinf_material)
reinf_material.place_dismantled_girder(src, reinf_material)
reinf_material.place_dismantled_girder(src, reinf_material, girder_material)
else
material.place_dismantled_girder(src)
material.place_dismantled_girder(src, null, girder_material)
if(!devastated)
material.place_dismantled_product(src)
if (!reinf_material)
@@ -204,6 +208,7 @@
clear_plants()
material = get_material_by_name("placeholder")
reinf_material = null
girder_material = null
update_connections(1)
ChangeTurf(/turf/simulated/floor/plating)
@@ -211,6 +216,8 @@
/turf/simulated/wall/ex_act(severity)
switch(severity)
if(1.0)
if(girder_material.explosion_resistance >= 25 && prob(girder_material.explosion_resistance))
new /obj/structure/girder/displaced(src, girder_material.name)
src.ChangeTurf(get_base_turf_by_area(src))
if(2.0)
if(prob(75))
@@ -247,12 +254,15 @@
O.density = 1
O.layer = 5
src.ChangeTurf(/turf/simulated/floor/plating)
if(girder_material.integrity >= 150 && !girder_material.is_brittle()) //Strong girders will remain in place when a wall is melted.
dismantle_wall(1,1)
else
src.ChangeTurf(/turf/simulated/floor/plating)
var/turf/simulated/floor/F = src
F.burn_tile()
F.icon_state = "wall_thermite"
user << "<span class='warning'>The thermite starts melting through the wall.</span>"
F.icon_state = "dmg[rand(1,4)]"
to_chat(user, "<span class='warning'>The thermite starts melting through the wall.</span>")
spawn(100)
if(O)
@@ -261,7 +271,7 @@
return
/turf/simulated/wall/proc/radiate()
var/total_radiation = material.radioactivity + (reinf_material ? reinf_material.radioactivity / 2 : 0)
var/total_radiation = material.radioactivity + (reinf_material ? reinf_material.radioactivity / 2 : 0) + (girder_material ? girder_material.radioactivity / 2 : 0)
if(!total_radiation)
return
@@ -271,7 +281,7 @@
/turf/simulated/wall/proc/burn(temperature)
if(material.combustion_effect(src, temperature, 0.7))
spawn(2)
new /obj/structure/girder(src)
new /obj/structure/girder(src, girder_material.name)
src.ChangeTurf(/turf/simulated/floor)
for(var/turf/simulated/wall/W in range(3,src))
W.burn((temperature/4))
+1 -1
View File
@@ -91,7 +91,7 @@ turf/attackby(obj/item/weapon/W as obj, mob/user as mob)
return
if(istype(O, /obj/screen))
return
if(user.restrained() || user.stat || user.stunned || user.paralysis)
if(user.restrained() || user.stat || user.stunned || user.paralysis || (!user.lying && !istype(user, /mob/living/silicon/robot)))
return
if((!(istype(O, /atom/movable)) || O.anchored || !Adjacent(user) || !Adjacent(O) || !user.Adjacent(O)))
return
+1 -1
View File
@@ -162,7 +162,7 @@ var/list/debug_verbs = list (
,/datum/admins/proc/setup_supermatter
,/client/proc/atmos_toggle_debug
,/client/proc/spawn_tanktransferbomb
,/client/proc/debug_process_scheduler
,/client/proc/debug_process_scheduler // VOREStation Edit - Nice
,/client/proc/take_picture
)
+1 -1
View File
@@ -87,7 +87,7 @@
/obj/effect/landmark/corpse/syndicatesoldier
name = "Syndicate Operative"
name = "Mercenary"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseshoes = /obj/item/clothing/shoes/boots/swat
+3
View File
@@ -23,6 +23,7 @@ var/list/global/map_templates = list()
it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. \
Set to -1 to force the submap to always be made.
var/allow_duplicates = FALSE // If false, only one map template will be spawned by the game. Doesn't affect admins spawning then manually.
var/discard_prob = 0 // If non-zero, there is a chance that the map seeding algorithm will skip this template when selecting potential templates to use.
var/static/dmm_suite/maploader = new
@@ -202,6 +203,8 @@ var/list/global/map_templates = list()
continue
if(!istype(MT, desired_map_template_type)) // Not the type wanted.
continue
if(MT.discard_prob && prob(MT.discard_prob))
continue
if(MT.cost && MT.cost < 0) // Negative costs always get spawned.
priority_submaps += MT
else
+1 -1
View File
@@ -22,6 +22,7 @@
recipes += new/datum/stack_recipe("[display_name] chair", /obj/structure/bed/chair, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] double bed", /obj/structure/bed/double, 4, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
recipes += new/datum/stack_recipe("[display_name] wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
if(hardness>50)
recipes += new/datum/stack_recipe("[display_name] fork", /obj/item/weapon/material/kitchen/utensil/fork/plastic, 1, on_floor = 1, supplied_material = "[name]")
@@ -57,7 +58,6 @@
recipes += new/datum/stack_recipe("mirror frame", /obj/item/frame/mirror, 1, time = 5, one_per_turf = 0, on_floor = 1)
recipes += new/datum/stack_recipe("fire extinguisher cabinet frame", /obj/item/frame/extinguisher_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1)
//recipes += new/datum/stack_recipe("fire axe cabinet frame", /obj/item/frame/fireaxe_cabinet, 4, time = 5, one_per_turf = 0, on_floor = 1)
recipes += new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 50, one_per_turf = 1, on_floor = 1)
recipes += new/datum/stack_recipe("railing", /obj/structure/railing, 2, time = 50, one_per_turf = 0, on_floor = 1)
recipes += new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1)
recipes += new/datum/stack_recipe_list("airlock assemblies", list( \
+6 -1
View File
@@ -192,11 +192,16 @@ var/list/name_to_material
name = "placeholder"
// Places a girder object when a wall is dismantled, also applies reinforced material.
/material/proc/place_dismantled_girder(var/turf/target, var/material/reinf_material)
/material/proc/place_dismantled_girder(var/turf/target, var/material/reinf_material, var/material/girder_material)
var/obj/structure/girder/G = new(target)
if(reinf_material)
G.reinf_material = reinf_material
G.reinforce_girder()
if(girder_material)
if(istype(girder_material, /material))
girder_material = girder_material.name
G.set_material(girder_material)
// General wall debris product placement.
// Not particularly necessary aside from snowflakey cult girders.
+2 -2
View File
@@ -1,6 +1,6 @@
//This is the proc for gibbing a mob. Cannot gib ghosts.
//added different sort of gibs and animations. N
/mob/proc/gib(anim="gibbed-m",do_gibs)
/mob/proc/gib(anim="gibbed-m", do_gibs, gib_file = 'icons/mob/mob.dmi')
death(1)
transforming = 1
canmove = 0
@@ -12,7 +12,7 @@
var/atom/movable/overlay/animation = null
animation = new(loc)
animation.icon_state = "blank"
animation.icon = 'icons/mob/mob.dmi'
animation.icon = gib_file
animation.master = src
flick(anim, animation)
+6 -2
View File
@@ -101,7 +101,9 @@
var/turf/t = turf
if(obscuredTurfs[t])
if(!t.obfuscations[obfuscation.type])
t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
var/image/ob_image = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
ob_image.plane = PLANE_FULLSCREEN
t.obfuscations[obfuscation.type] = ob_image
obscured += t.obfuscations[obfuscation.type]
for(var/eye in seenby)
@@ -140,7 +142,9 @@
for(var/turf in obscuredTurfs)
var/turf/t = turf
if(!t.obfuscations[obfuscation.type])
t.obfuscations[obfuscation.type] = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
var/image/ob_image = image(obfuscation.icon, t, obfuscation.icon_state, OBFUSCATION_LAYER)
ob_image.plane = PLANE_FULLSCREEN
t.obfuscations[obfuscation.type] = ob_image
obscured += t.obfuscations[obfuscation.type]
#undef UPDATE_BUFFER
+1 -1
View File
@@ -1,4 +1,4 @@
/mob/living/carbon/human/verb/give(var/mob/living/carbon/target in view(1)-usr)
/mob/living/carbon/human/verb/give(var/mob/living/carbon/target in living_mobs(1))
set category = "IC"
set name = "Give"
@@ -24,7 +24,7 @@
drop_from_inventory(I)
I.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/I.w_class))
..(species.gibbed_anim)
..(species.gibbed_anim) // uses the default mob.dmi file for these, so we only need to specify the first argument
gibs(loc, dna, null, species.get_flesh_colour(src), species.get_blood_colour(src))
/mob/living/carbon/human/dust()
@@ -13,7 +13,7 @@
secondary_langs = list(LANGUAGE_SOL_COMMON)
name_language = null // Use the first-name last-name generator rather than a language scrambler
min_age = 17
max_age = 110
max_age = 130
health_hud_intensity = 1.5
spawn_flags = SPECIES_CAN_JOIN
@@ -61,6 +61,9 @@
/mob/living/simple_animal/hostile/malf_drone/Process_Spacemove(var/check_drift = 0)
return 1
/mob/living/simple_animal/hostile/malf_drone/isSynthetic()
return TRUE
//self repair systems have a chance to bring the drone back to life
/mob/living/simple_animal/hostile/malf_drone/Life()
@@ -150,6 +153,7 @@
disabled = rand(150, 600)
hostile = 0
walk(src,0)
..()
/mob/living/simple_animal/hostile/malf_drone/death()
..(null,"suddenly breaks apart.")
@@ -4,7 +4,6 @@
icon_state = "goose"
icon_living = "goose"
icon_dead = "goose_dead"
icon_gib = "generic_gib"
faction = "geese"
intelligence_level = SA_ANIMAL
@@ -4,7 +4,6 @@
icon_state = "penguin"
icon_living = "penguin"
icon_dead = "penguin_dead"
icon_gib = "generic_gib"
intelligence_level = SA_ANIMAL
maxHealth = 20
@@ -86,7 +86,7 @@
//List of different corpse types
/obj/effect/landmark/mobcorpse/syndicatesoldier
name = "Syndicate Operative"
name = "Mercenary"
corpseuniform = /obj/item/clothing/under/syndicate
corpsesuit = /obj/item/clothing/suit/armor/vest
corpseshoes = /obj/item/clothing/shoes/boots/swat
@@ -84,7 +84,7 @@
sparks.start()
/mob/living/simple_animal/hostile/mecha/death()
..(0,"is explodes!")
..(0,"explodes!")
sparks.start()
explosion(get_turf(src), 0, 0, 1, 3)
qdel(src)
@@ -93,3 +93,26 @@
/mob/living/simple_animal/hostile/mecha/Move()
..()
playsound(src,'sound/mecha/mechstep.ogg',40,1)
/mob/living/simple_animal/hostile/mecha/malf_drone
intelligence_level = SA_ROBOTIC
faction = "malf_drone"
speak_chance = 1
speak = list(
"Resuming task: Protect area.",
"No threats found.",
"Error: No targets found."
)
emote_hear = list("humms ominously", "whirrs softly", "grinds a gear")
emote_see = list("looks around the area", "turns from side to side")
say_understood = list("Affirmative.", "Positive.")
say_cannot = list("Denied.", "Negative.")
say_maybe_target = list("Possible threat detected. Investigating.", "Motion detected.", "Investigating.")
say_got_target = list("Threat detected.", "New task: Remove threat.", "Threat removal engaged.", "Engaging target.")
/mob/living/simple_animal/hostile/mecha/malf_drone/isSynthetic()
return TRUE
/mob/living/simple_animal/hostile/mecha/malf_drone/speech_bubble_appearance()
return "synthetic_evil"
@@ -1,5 +1,5 @@
/mob/living/simple_animal/hostile/syndicate
name = "syndicate operative"
name = "mercenary"
desc = "Death to the Company."
icon_state = "syndicate"
icon_living = "syndicate"
@@ -20,7 +20,7 @@
//Mob icon/appearance settings
var/icon_living = "" // The iconstate if we're alive, required
var/icon_dead = "" // The iconstate if we're dead, required
var/icon_gib = null // The iconstate for being gibbed, optional
var/icon_gib = "generic_gib" // The iconstate for being gibbed, optional. Defaults to a generic gib animation.
var/icon_rest = null // The iconstate for resting, optional
var/image/modifier_overlay = null // Holds overlays from modifiers.
@@ -490,7 +490,7 @@
purge -= 1
/mob/living/simple_animal/gib()
..(icon_gib,1)
..(icon_gib,1,icon) // we need to specify where the gib animation is stored
/mob/living/simple_animal/emote(var/act, var/type, var/desc)
if(act)
+1 -1
View File
@@ -251,7 +251,7 @@ datum/weather/sif
WEATHER_OVERCAST = 5
)
/datum/weather/sif/rain/process_effects()
/datum/weather/sif/storm/process_effects()
for(var/mob/living/L in living_mob_list)
if(L.z in holder.our_planet.expected_z_levels)
var/turf/T = get_turf(L)
+16 -12
View File
@@ -18,6 +18,8 @@ var/list/fusion_cores = list()
active_power_usage = 500 //multiplied by field strength
anchored = 0
circuit = /obj/item/weapon/circuitboard/fusion_core
var/obj/effect/fusion_em_field/owned_field
var/field_strength = 1//0.01
var/id_tag
@@ -27,8 +29,12 @@ var/list/fusion_cores = list()
/obj/machinery/power/fusion_core/initialize()
. = ..()
connect_to_network()
fusion_cores += src
default_apply_parts()
/obj/machinery/power/fusion_core/mapped/initialize()
. = ..()
connect_to_network()
/obj/machinery/power/fusion_core/Destroy()
for(var/obj/machinery/computer/fusion_core_control/FCC in machines)
@@ -47,6 +53,7 @@ var/list/fusion_cores = list()
owned_field.radiation_scale()
owned_field.temp_dump()
owned_field.temp_color()
/obj/machinery/power/fusion_core/Topic(href, href_list)
if(..())
return 1
@@ -106,23 +113,20 @@ var/list/fusion_cores = list()
to_chat(user,"<span class='warning'>Shut \the [src] off first!</span>")
return
if(default_deconstruction_screwdriver(user, W))
return
if(default_deconstruction_crowbar(user, W))
return
if(default_part_replacement(user, W))
return
if(ismultitool(W))
var/new_ident = input("Enter a new ident tag.", "Fusion Core", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
return
else if(iswrench(W))
anchored = !anchored
playsound(src, W.usesound, 75, 1)
if(anchored)
user.visible_message("[user.name] secures [src.name] to the floor.", \
"You secure the [src.name] to the floor.", \
"You hear a ratchet")
else
user.visible_message("[user.name] unsecures [src.name] from the floor.", \
"You unsecure the [src.name] from the floor.", \
"You hear a ratchet")
if(default_unfasten_wrench(user, W))
return
return ..()
@@ -6,6 +6,12 @@
anchored = 1
layer = 4
circuit = /obj/item/weapon/circuitboard/fusion_fuel_compressor
/obj/machinery/fusion_fuel_compressor/initialize()
. = ..()
default_apply_parts()
/obj/machinery/fusion_fuel_compressor/MouseDrop_T(var/atom/movable/target, var/mob/user)
if(user.incapacitated() || !user.Adjacent(src))
return
@@ -34,6 +40,14 @@
return 0
/obj/machinery/fusion_fuel_compressor/attackby(var/obj/item/thing, var/mob/user)
if(default_deconstruction_screwdriver(user, thing))
return
if(default_deconstruction_crowbar(user, thing))
return
if(default_part_replacement(user, thing))
return
if(istype(thing, /obj/item/stack/material))
var/obj/item/stack/material/M = thing
var/material/mat = M.get_material()
@@ -11,15 +11,17 @@ var/list/fuel_injectors = list()
idle_power_usage = 10
active_power_usage = 500
circuit = /obj/item/weapon/circuitboard/fusion_injector
var/fuel_usage = 0.0001
var/id_tag
var/injecting = 0
var/obj/item/weapon/fuel_assembly/cur_assembly
/obj/machinery/fusion_fuel_injector/New()
..()
/obj/machinery/fusion_fuel_injector/initialize()
. = ..()
fuel_injectors += src
tag = null
default_apply_parts()
/obj/machinery/fusion_fuel_injector/Destroy()
if(cur_assembly)
@@ -66,17 +68,18 @@ var/list/fuel_injectors = list()
cur_assembly = W
return
if(iswrench(W))
if(iswrench(W) || isscrewdriver(W) || iscrowbar(W) || istype(W, /obj/item/weapon/storage/part_replacer))
if(injecting)
to_chat(user, "<span class='warning'>Shut \the [src] off first!</span>")
return
anchored = !anchored
playsound(src, W.usesound, 75, 1)
if(anchored)
user.visible_message("\The [user] secures \the [src] to the floor.")
else
user.visible_message("\The [user] unsecures \the [src] from the floor.")
return
if(default_unfasten_wrench(user, W))
return
if(default_deconstruction_screwdriver(user, W))
return
if(default_deconstruction_crowbar(user, W))
return
if(default_part_replacement(user, W))
return
return ..()
@@ -122,7 +125,6 @@ var/list/fuel_injectors = list()
var/obj/effect/accelerated_particle/A = new/obj/effect/accelerated_particle(get_turf(src), dir)
A.particle_type = reagent
A.additional_particles = numparticles - 1
A.move(1)
if(cur_assembly)
cur_assembly.rod_quantities[reagent] -= amount
amount_left += cur_assembly.rod_quantities[reagent]
@@ -150,4 +152,4 @@ var/list/fuel_injectors = list()
if (usr.incapacitated() || usr.restrained() || anchored)
return
src.dir = turn(src.dir, 90)
src.dir = turn(src.dir, 90)
@@ -38,8 +38,6 @@
return 0
/obj/effect/fusion_particle_catcher/CanPass(var/atom/movable/mover, var/turf/target, var/height=0, var/air_group=0)
if(istype(mover, /obj/item/projectile/beam))
return 0
if(istype(mover, /obj/effect/accelerated_particle))
return 0
if(istype(mover, /obj/effect/accelerated_particle) || istype(mover, /obj/item/projectile/beam))
return !density
return 1
@@ -9,6 +9,8 @@ var/list/gyrotrons = list()
use_power = 1
active_power_usage = 50000
circuit = /obj/item/weapon/circuitboard/gyrotron
var/id_tag
var/rate = 3
var/mega_energy = 1
@@ -21,6 +23,7 @@ var/list/gyrotrons = list()
/obj/machinery/power/emitter/gyrotron/initialize()
gyrotrons += src
active_power_usage = mega_energy * 50000
default_apply_parts()
. = ..()
/obj/machinery/power/emitter/gyrotron/Destroy()
@@ -54,4 +57,12 @@ var/list/gyrotrons = list()
if(new_ident && user.Adjacent(src))
id_tag = new_ident
return
if(default_deconstruction_screwdriver(user, W))
return
if(default_deconstruction_crowbar(user, W))
return
if(default_part_replacement(user, W))
return
return ..()
@@ -4,7 +4,7 @@
name = "Accelerated Particles"
desc = "Small things moving very fast."
icon = 'icons/obj/machines/particle_accelerator2.dmi'
icon_state = "particle"//Need a new icon for this
icon_state = "particle1"//Need a new icon for this
anchored = 1
density = 1
var/movement_range = 10
@@ -19,22 +19,25 @@
var/movetotarget = 1
/obj/effect/accelerated_particle/weak
icon_state = "particle0"
movement_range = 8
energy = 5
/obj/effect/accelerated_particle/strong
icon_state = "particle2"
movement_range = 15
energy = 15
/obj/effect/accelerated_particle/powerful
icon_state = "particle3"
movement_range = 25
energy = 50
/obj/effect/accelerated_particle/New(loc, dir = 2)
src.loc = loc
src.set_dir(dir)
if(movement_range > 20)
movement_range = 20
spawn(0)
move(1)
return
/obj/effect/accelerated_particle/Bump(atom/A)
@@ -58,18 +61,15 @@
PC.parent.plasma_temperature += mega_energy
PC.parent.energy += energy
loc = null
return
/obj/effect/accelerated_particle/Bumped(atom/A)
if(ismob(A))
Bump(A)
return
/obj/effect/accelerated_particle/ex_act(severity)
qdel(src)
return
/obj/effect/accelerated_particle/singularity_act()
return
@@ -79,7 +79,6 @@
M.apply_effect((radiation*3),IRRADIATE,0)
M.updatehealth()
//M << "<font color='red'>You feel odd.</font>"
return
/obj/effect/accelerated_particle/proc/move(var/lag)
@@ -3,8 +3,4 @@
desc_holder = "This is where the Alpha particles are accelerated to <b><i>radical speeds</i></b>."
icon = 'icons/obj/machines/particle_accelerator2.dmi'
icon_state = "fuel_chamber"
reference = "fuel_chamber"
/obj/structure/particle_accelerator/fuel_chamber/update_icon()
..()
return
reference = "fuel_chamber"
@@ -56,11 +56,10 @@
active = 0
connected_parts = list()
return
/obj/machinery/particle_accelerator/control_box/update_icon()
if(active)
icon_state = "[reference]p1"
icon_state = "[reference]p[strength]"
else
if(use_power)
if(assembled)
@@ -77,7 +76,6 @@
icon_state = "[reference]w"
else
icon_state = "[reference]c"
return
/obj/machinery/particle_accelerator/control_box/Topic(href, href_list)
..()
@@ -94,9 +92,9 @@
if(href_list["togglep"])
if(!wires.IsIndexCut(PARTICLE_TOGGLE_WIRE))
src.toggle_power()
toggle_power()
else if(href_list["scan"])
src.part_scan()
part_scan()
else if(href_list["strengthup"])
if(!wires.IsIndexCut(PARTICLE_STRENGTH_WIRE))
@@ -106,9 +104,8 @@
if(!wires.IsIndexCut(PARTICLE_STRENGTH_WIRE))
remove_strength()
src.updateDialog()
src.update_icon()
return
updateDialog()
update_icon()
/obj/machinery/particle_accelerator/control_box/proc/strength_change()
for(var/obj/structure/particle_accelerator/part in connected_parts)
@@ -144,7 +141,6 @@
update_use_power(0)
else if(!stat && construction_state == 3)
update_use_power(1)
return
/obj/machinery/particle_accelerator/control_box/process()
@@ -152,13 +148,12 @@
//a part is missing!
if( length(connected_parts) < 6 )
investigate_log("lost a connected part; It <font color='red'>powered down</font>.","singulo")
src.toggle_power()
toggle_power()
return
//emit some particles
for(var/obj/structure/particle_accelerator/particle_emitter/PE in connected_parts)
if(PE)
PE.emit_particle(src.strength)
return
/obj/machinery/particle_accelerator/control_box/proc/part_scan()
@@ -211,11 +206,11 @@
/obj/machinery/particle_accelerator/control_box/proc/toggle_power()
src.active = !src.active
active = !active
investigate_log("turned [active?"<font color='red'>ON</font>":"<font color='green'>OFF</font>"] by [usr ? usr.key : "outside forces"]","singulo")
message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [key_name(usr, usr.client)](<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("PA Control Computer turned [active ?"ON":"OFF"] by [usr.ckey]([usr]) in ([x],[y],[z])")
if(src.active)
if(active)
update_use_power(2)
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = src.strength
@@ -20,20 +20,16 @@
icon_state = "emitter_right"
reference = "emitter_right"
/obj/structure/particle_accelerator/particle_emitter/update_icon()
..()
return
/obj/structure/particle_accelerator/particle_emitter/proc/set_delay(var/delay)
if(delay && delay >= 0)
src.fire_delay = delay
fire_delay = delay
return 1
return 0
/obj/structure/particle_accelerator/particle_emitter/proc/emit_particle(var/strength = 0)
if((src.last_shot + src.fire_delay) <= world.time)
src.last_shot = world.time
if((last_shot + fire_delay) <= world.time)
last_shot = world.time
var/obj/effect/accelerated_particle/A = null
var/turf/T = get_step(src,dir)
switch(strength)
@@ -43,6 +39,8 @@
A = new/obj/effect/accelerated_particle(T, dir)
if(2)
A = new/obj/effect/accelerated_particle/strong(T, dir)
if(3)
A = new/obj/effect/accelerated_particle/powerful(T, dir)
if(A)
A.set_dir(src.dir)
return 1
@@ -3,8 +3,4 @@
desc_holder = "This uses electromagnetic waves to focus the Alpha-Particles."
icon = 'icons/obj/machines/particle_accelerator2.dmi'
icon_state = "power_box"
reference = "power_box"
/obj/structure/particle_accelerator/power_box/update_icon()
..()
return
reference = "power_box"
+5 -3
View File
@@ -1,6 +1,6 @@
// BUILDABLE SMES(Superconducting Magnetic Energy Storage) UNIT
//
// Last Change 1.1.2015 by Atlantis - Happy New Year!
// Last Change 1.26.2018 by Neerti. Also signing this is dumb.
//
// This is subtype of SMES that should be normally used. It can be constructed, deconstructed and hacked.
// It also supports RCON System which allows you to operate it remotely, if properly set.
@@ -55,8 +55,10 @@
component_parts += new /obj/item/weapon/smes_coil(src)
recalc_coils()
// Pre-installed and pre-charged SMES hidden from the station, for use in submaps.
/obj/machinery/power/smes/buildable/point_of_interest/New()
..(1)
charge = 1e6 // Should be enough for an individual POI.
@@ -562,6 +562,7 @@
name = "Rezadone"
id = "rezadone"
description = "A powder with almost magical properties, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects."
taste_description = "bitterness"
reagent_state = SOLID
color = "#669900"
overdose = REAGENTS_OVERDOSE
@@ -654,27 +655,6 @@
M << "<span class='warning'>Your mind breaks apart...</span>"
M.hallucination += 200
/datum/reagent/rezadone
name = "Rezadone"
id = "rezadone"
description = "A powder with almost magical properties, this substance can effectively treat genetic damage in humanoids, though excessive consumption has side effects."
taste_description = "bitterness"
reagent_state = SOLID
color = "#669900"
overdose = REAGENTS_OVERDOSE
scannable = 1
/datum/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.adjustCloneLoss(-20 * removed)
M.adjustOxyLoss(-2 * removed)
M.heal_organ_damage(20 * removed, 20 * removed)
M.adjustToxLoss(-20 * removed)
if(dose > 3)
M.status_flags &= ~DISFIGURED
if(dose > 10)
M.make_dizzy(5)
M.make_jittery(5)
/datum/reagent/qerr_quem
name = "Qerr-quem"
id = "querr_quem"
@@ -1988,7 +1988,7 @@
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/onionrings
name = "Onion Soup"
name = "Onion Rings"
desc = "Crispy rings."
icon_state = "onionrings"
trash = /obj/item/trash/plate
@@ -3508,9 +3508,9 @@
..()
// potato + knife = raw sticks
/obj/item/weapon/reagent_containers/food/snacks/grown/potato/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/material/knife))
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(src)
/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user)
if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife))
new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src))
user << "You cut the potato."
qdel(src)
else
+3 -1
View File
@@ -39,8 +39,10 @@
exempt_from_atmos += using_map.unit_test_exempt_from_atmos.Copy()
exempt_from_apc += using_map.unit_test_exempt_from_apc.Copy()
var/list/zs_to_test = using_map.unit_test_z_levels || list(1) //Either you set it, or you just get z1
for(var/area/A in world)
if(A.z == 1 && !(A.type in exempt_areas))
if((A.z in zs_to_test) && !(A.type in exempt_areas))
area_test_count++
var/area_good = 1
var/bad_msg = "--------------- [A.name]([A.type])"
+65
View File
@@ -53,6 +53,71 @@
-->
<div class="commit sansserif">
<h2 class="date">25 January 2018</h2>
<h3 class="author">Anewbe updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Southern Cross Map is now live</li>
</ul>
<h3 class="author">Arokha updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Remove borg hud items as they have normal huds as their sensor augs now, and can see records with them.</li>
</ul>
<h3 class="author">Atermonera updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Communicators have a flashlight under the settings menu, functions as the PDA one</li>
<li class="rscadd">Station-bound synthetics now have gps units</li>
</ul>
<h3 class="author">Cerebulon updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added 19 food recipes from /tg/station</li>
</ul>
<h3 class="author">Leshana updated:</h3>
<ul class="changes bgimages16">
<li class="soundadd">Sounds of Tesla engine lighting bolts</li>
<li class="imageadd">Sprites for grounding rod and Tesla coil</li>
<li class="imageadd">Sprites for lighting bolts</li>
<li class="rscadd">The Tesla Engine, Tesla Coils, and Grounding Rods</li>
<li class="rscadd">Wiki search URL is now configurable in config.txt</li>
<li class="rscadd">Breaker boxes can be constructed in game.</li>
<li class="bugfix">Construction of heat exchange pipes, vents, and scrubbers now works properly again.</li>
<li class="tweak">Fix singularity energy balance so it is stable under normal operation.</li>
<li class="bugfix">Fix emitter beams and PA effects from being grav pulled or consumed.</li>
<li class="rscadd">Added the operating manual book for the Tesla Engine.</li>
</ul>
<h3 class="author">Mechoid updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Brains can be set to be a source of genetic information.</li>
<li class="rscadd">Promethean cores can be inserted into a cloning scanner to be cloned. This gives them a worse modifier upon completion.</li>
<li class="rscadd">Promethean cores can now have chemicals added or removed from them. Base for future slime cloner.</li>
<li class="rscadd">Species-based cloning sicknesses possible.</li>
<li class="spellcheck">Cyboernetic - > Cybernetic</li>
</ul>
<h3 class="author">Neerti updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds boats that can be ridden by multiple people, which use oars. Can be crafted with large amounts of wooden planks.</li>
<li class="rscadd">Adds autopilot functionality to Southern Cross Shuttle One and Shuttle Two.</li>
<li class="rscadd">Adds ability to rename certain shuttles on the Southern Cross.</li>
<li class="rscadd">Areas about to be occupied by a shuttle will display a visual warning, of a bunch of circles growing over five seconds.</li>
</ul>
<h3 class="author">SunnyDaff updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added new food items.</li>
<li class="rscadd">Added Cider.</li>
<li class="rscadd">Added Apple Juice to bar vending machine.</li>
<li class="bugfix">Fixed Vodka recipe.</li>
<li class="bugfix">Fixed Apple and Carrot cake recipes</li>
<li class="tweak">Changed Cake recipes to not include fruit juice</li>
</ul>
<h3 class="author">ZeroBits updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added the ability to have multiple loadouts per character.</li>
</ul>
<h3 class="author">battlefieldCommander updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds a communicator watch, a variant of the communicator you can wear on your wrist.</li>
<li class="rscadd">Replaces the communicator in the loadout with a communicator selection. Choose either the traditional communicator, or the new commwatch.</li>
</ul>
<h2 class="date">12 January 2018</h2>
<h3 class="author">Atermonera updated:</h3>
<ul class="changes bgimages16">
+54
View File
@@ -3745,3 +3745,57 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
also do this with other movable objects, if you really wanted to.
- tweak: Conscious mobs lying on the ground can now buckle themselves to chairs/beds.
This includes people missing legs.
2018-01-25:
Anewbe:
- rscadd: Southern Cross Map is now live
Arokha:
- tweak: Remove borg hud items as they have normal huds as their sensor augs now,
and can see records with them.
Atermonera:
- rscadd: Communicators have a flashlight under the settings menu, functions as
the PDA one
- rscadd: Station-bound synthetics now have gps units
Cerebulon:
- rscadd: Added 19 food recipes from /tg/station
Leshana:
- soundadd: Sounds of Tesla engine lighting bolts
- imageadd: Sprites for grounding rod and Tesla coil
- imageadd: Sprites for lighting bolts
- rscadd: The Tesla Engine, Tesla Coils, and Grounding Rods
- rscadd: Wiki search URL is now configurable in config.txt
- rscadd: Breaker boxes can be constructed in game.
- bugfix: Construction of heat exchange pipes, vents, and scrubbers now works properly
again.
- tweak: Fix singularity energy balance so it is stable under normal operation.
- bugfix: Fix emitter beams and PA effects from being grav pulled or consumed.
- rscadd: Added the operating manual book for the Tesla Engine.
Mechoid:
- rscadd: Brains can be set to be a source of genetic information.
- rscadd: Promethean cores can be inserted into a cloning scanner to be cloned.
This gives them a worse modifier upon completion.
- rscadd: Promethean cores can now have chemicals added or removed from them. Base
for future slime cloner.
- rscadd: Species-based cloning sicknesses possible.
- spellcheck: Cyboernetic - > Cybernetic
Neerti:
- rscadd: Adds boats that can be ridden by multiple people, which use oars. Can
be crafted with large amounts of wooden planks.
- rscadd: Adds autopilot functionality to Southern Cross Shuttle One and Shuttle
Two.
- rscadd: Adds ability to rename certain shuttles on the Southern Cross.
- rscadd: Areas about to be occupied by a shuttle will display a visual warning,
of a bunch of circles growing over five seconds.
SunnyDaff:
- rscadd: Added new food items.
- rscadd: Added Cider.
- rscadd: Added Apple Juice to bar vending machine.
- bugfix: Fixed Vodka recipe.
- bugfix: Fixed Apple and Carrot cake recipes
- tweak: Changed Cake recipes to not include fruit juice
ZeroBits:
- rscadd: Added the ability to have multiple loadouts per character.
battlefieldCommander:
- rscadd: Adds a communicator watch, a variant of the communicator you can wear
on your wrist.
- rscadd: Replaces the communicator in the loadout with a communicator selection.
Choose either the traditional communicator, or the new commwatch.
-4
View File
@@ -1,4 +0,0 @@
author: Arokha
delete-after: True
changes:
- tweak: "Remove borg hud items as they have normal huds as their sensor augs now, and can see records with them."
@@ -1,5 +0,0 @@
author: Atermonera
delete-after: True
- rscadd: "Communicators have a flashlight under the settings menu, functions as the PDA one"
+6
View File
@@ -0,0 +1,6 @@
author: Atermonera
delete-after: True
changes:
- tweak: "ID computer can set command secretary and IAA access"
- tweak: "Command secretary has keycard auth. access"
-5
View File
@@ -1,5 +0,0 @@
author: Atermonera
delete-after: True
- rscadd: "Station-bound synthetics now have gps units"
-7
View File
@@ -1,7 +0,0 @@
author: Cerebulon
delete-after: True
changes:
- rscadd: "Added 19 food recipes from /tg/station"
@@ -0,0 +1,7 @@
author: Cerebulon
delete-after: True
changes:
- rscadd: "Added toggleable 'Open' sign to bar hallway so you can tell if it's open without walking inside."
-4
View File
@@ -1,4 +0,0 @@
author: Leshana
delete-after: True
changes:
- rscadd: "Breaker boxes can be constructed in game."
-4
View File
@@ -1,4 +0,0 @@
author: Leshana
delete-after: True
changes:
- bugfix: "Construction of heat exchange pipes, vents, and scrubbers now works properly again."
-5
View File
@@ -1,5 +0,0 @@
author: Leshana
delete-after: True
changes:
- tweak: "Fix singularity energy balance so it is stable under normal operation."
- bugfix: "Fix emitter beams and PA effects from being grav pulled or consumed."
-4
View File
@@ -1,4 +0,0 @@
author: Leshana
delete-after: True
changes:
- rscadd: "Added the operating manual book for the Tesla Engine."
-6
View File
@@ -1,6 +0,0 @@
author: Leshana
delete-after: True
- soundadd: "Sounds of Tesla engine lighting bolts"
- imageadd: "Sprites for grounding rod and Tesla coil"
- imageadd: "Sprites for lighting bolts"
- rscadd: "The Tesla Engine, Tesla Coils, and Grounding Rods"
-4
View File
@@ -1,4 +0,0 @@
author: Leshana
delete-after: True
changes:
- rscadd: "Wiki search URL is now configurable in config.txt"
@@ -0,0 +1,11 @@
author: Mechoid
delete-after: True
changes:
- rscadd: "Adds material girders."
- tweak: "Girder decon time is now partially dependant on material. Stronger girders take slightly longer."
- tweak: "Wall girders are now under the integrity-based construction listing. Material-Name Wall Girder."
- rscadd: "Explosive-resistant girders in walls have a chance to survive as an unanchored girder, if their wall is destroyed."
- rscadd: "Radioactive girders affect the completed wall's radioactivity."
@@ -1,11 +0,0 @@
author: Mechoid
delete-after: True
changes:
- rscadd: "Brains can be set to be a source of genetic information."
- rscadd: "Promethean cores can be inserted into a cloning scanner to be cloned. This gives them a worse modifier upon completion."
- rscadd: "Promethean cores can now have chemicals added or removed from them. Base for future slime cloner."
- rscadd: "Species-based cloning sicknesses possible."
- spellcheck: "Cyboernetic - > Cybernetic"
-36
View File
@@ -1,36 +0,0 @@
################################
# 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: Neerti
# 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:
- rscadd: "Adds boats that can be ridden by multiple people, which use oars. Can be crafted with large amounts of wooden planks."
-38
View File
@@ -1,38 +0,0 @@
################################
# 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: Neerti
# 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:
- rscadd: "Adds autopilot functionality to Southern Cross Shuttle One and Shuttle Two."
- rscadd: "Adds ability to rename certain shuttles on the Southern Cross."
- rscadd: "Areas about to be occupied by a shuttle will display a visual warning, of a bunch of circles growing over five seconds."
@@ -1,4 +0,0 @@
author: ZeroBits
delete-after: True
changes:
- rscadd: "Added the ability to have multiple loadouts per character."
@@ -1,10 +0,0 @@
author: SunnyDaff
delete-after: True
- rscadd: Added new food items.
- rscadd: Added Cider.
- rscadd: Added Apple Juice to bar vending machine.
- bugfix: Fixed Vodka recipe.
- bugfix: Fixed Apple and Carrot cake recipes
- tweak: Changed Cake recipes to not include fruit juice
@@ -1,5 +0,0 @@
author: battlefieldCommander
delete-after: True
changes:
- rscadd: "Adds a communicator watch, a variant of the communicator you can wear on your wrist."
- rscadd: "Replaces the communicator in the loadout with a communicator selection. Choose either the traditional communicator, or the new commwatch."
-5
View File
@@ -1,5 +0,0 @@
author: Belsima
delete-after: True
- tweak: "Maintenance drones may now ventcrawl."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

@@ -7,6 +7,9 @@
worn_state = "pilot1"
item_icons = list(slot_w_uniform_str = 'maps/southern_cross/icons/mob/sc_under.dmi')
icon = 'maps/southern_cross/icons/obj/sc_uniforms.dmi'
sprite_sheets = list(
"Teshari" = 'maps/southern_cross/icons/mob/species/teshari/sc_uniform.dmi'
)
starting_accessories = list(/obj/item/clothing/accessory/storage/webbing/pilot1)
/obj/item/clothing/under/rank/pilot2
@@ -0,0 +1,4 @@
/datum/gear/head/pilot
display_name = "helmet, pilot (Pilot)"
path = /obj/item/clothing/head/pilot/alt
allowed_roles = list("Pilot")
@@ -0,0 +1,3 @@
/datum/gear/suit/bomber_pilot
display_name = "bomber jacket, pilot"
path = /obj/item/clothing/suit/storage/toggle/bomber/pilot
@@ -0,0 +1,5 @@
// Uniform slot
/datum/gear/uniform/pilot
display_name = "uniform, pilot (Pilot)"
path = /obj/item/clothing/under/rank/pilot2
allowed_roles = list("Pilot")
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -1
View File
@@ -420,6 +420,7 @@
"id" = (/obj/structure/cable/ender{icon_state = "1-2"; id = "surface_cave"},/turf/simulated/floor/plating{tag = "icon-asteroidplating2"; icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
"ie" = (/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/normal)
"if" = (/obj/effect/step_trigger/teleporter/mine/from_mining,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/space)
"ig" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -550,7 +551,7 @@ aaababababababababababababababababababababababababababababababababababababababab
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacacababababababababababababababacacacababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacacababababababababababababababacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacabababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacacacacababababababababababababababacacababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacacabacacababababababababababababababababababababababababababababababababababababababababababababababababababaa
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafigaeaeaeaeaeaeaeaeaeaeafafafafafigaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeigafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeaeaeaeaeaeafafafaeaeaeafafafaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafaeaeafafaeaeafafaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafafaeaeaeaeaeaeaeaeaeafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaead
File diff suppressed because it is too large Load Diff
+4
View File
@@ -15,6 +15,10 @@
#include "shuttles/ninja.dm"
#include "shuttles/ert.dm"
#include "loadout/loadout_head.dm"
#include "loadout/loadout_suit.dm"
#include "loadout/loadout_uniform.dm"
#include "items/encryptionkey_sc.dm"
#include "items/headset_sc.dm"
#include "items/clothing/sc_suit.dm"
+21 -1
View File
@@ -39,7 +39,27 @@
emergency_shuttle_called_message = "An emergency evacuation shuttle has been called. It will arrive at docks one and two in approximately %ETA%"
emergency_shuttle_recall_message = "The emergency shuttle has been recalled."
station_networks = list()
// Networks that will show up as options in the camera monitor program
station_networks = list(
NETWORK_CARGO,
NETWORK_CIVILIAN,
NETWORK_COMMAND,
NETWORK_ENGINE,
NETWORK_ENGINEERING,
NETWORK_ENGINEERING_OUTPOST,
NETWORK_FIRST_DECK,
NETWORK_SECOND_DECK,
NETWORK_THIRD_DECK,
NETWORK_MAIN_OUTPOST,
NETWORK_MEDICAL,
NETWORK_MINE,
NETWORK_RESEARCH,
NETWORK_RESEARCH_OUTPOST,
NETWORK_ROBOTS,
NETWORK_PRISON,
NETWORK_SECURITY,
NETWORK_TELECOM
)
allowed_spawns = list("Arrivals Shuttle","Gateway", "Cryogenic Storage", "Cyborg Storage")
unit_test_exempt_areas = list(/area/ninja_dojo, /area/ninja_dojo/firstdeck, /area/ninja_dojo/arrivals_dock)
@@ -4,24 +4,6 @@ var/const/NETWORK_FIRST_DECK = "First Deck"
var/const/NETWORK_SUPPLY = "Supply"
var/const/NETWORK_MAIN_OUTPOST = "Main Outpost"
/datum/map/southern_cross
// Networks that will show up as options in the camera monitor program
station_networks = list(
NETWORK_ENGINE,
NETWORK_THIRD_DECK,
NETWORK_SECOND_DECK,
NETWORK_FIRST_DECK,
NETWORK_ROBOTS,
NETWORK_SUPPLY,
NETWORK_COMMAND,
NETWORK_ENGINEERING,
NETWORK_MEDICAL,
NETWORK_MAIN_OUTPOST,
NETWORK_RESEARCH,
NETWORK_SECURITY,
NETWORK_THUNDER,
)
//
// Cameras
//
@@ -12,7 +12,7 @@
/obj/structure/closet/secure_closet/guncabinet/rifle
name = "rifle cabinet"
req_access = list(access_explorer)
req_one_access = list(access_explorer,access_brig)
/obj/structure/closet/secure_closet/guncabinet/rifle/New()
..()
@@ -1,7 +1,7 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/template_noop,/area/submap/Rockb1)
"c" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/Rockb1)
"d" = (/turf/simulated/mineral/ignore_mapgen/sif,/area/submap/Rockb1)
"d" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rockb1)
"e" = (/turf/simulated/wall/r_wall,/area/submap/Rockb1)
"f" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/turf/simulated/floor/lino,/area/submap/Rockb1)
"g" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"},/obj/item/weapon/gun/projectile/pistol,/obj/item/ammo_magazine/m9mm/compact,/obj/item/ammo_magazine/m9mm/compact,/turf/simulated/floor/lino,/area/submap/Rockb1)
@@ -24,22 +24,26 @@
"x" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"y" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"z" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"A" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"B" = (/obj/machinery/power/apc{operating = 0; pixel_x = 31},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"C" = (/obj/machinery/door/airlock,/turf/space,/area/submap/Rockb1)
"D" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/hydro,/area/submap/Rockb1)
"E" = (/obj/structure/toilet{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/hydro,/area/submap/Rockb1)
"F" = (/obj/structure/table/standard,/obj/item/weapon/pickaxe/drill,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"G" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"H" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/excavation,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"I" = (/obj/structure/table/standard,/obj/item/stack/material/cyborg/steel,/obj/item/stack/material/cyborg/glass,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"J" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"K" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"L" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"M" = (/turf/simulated/floor/plating,/area/submap/Rockb1)
"N" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/plating,/area/submap/Rockb1)
"O" = (/obj/effect/decal/cleanable/greenglow,/turf/simulated/floor/plating,/area/submap/Rockb1)
"P" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/plating,/area/submap/Rockb1)
"A" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"B" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"C" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"D" = (/obj/machinery/power/apc{operating = 0; pixel_x = 31},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"E" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/submap/Rockb1)
"F" = (/obj/machinery/door/airlock,/turf/space,/area/submap/Rockb1)
"G" = (/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/hydro,/area/submap/Rockb1)
"H" = (/obj/structure/toilet{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/hydro,/area/submap/Rockb1)
"I" = (/obj/machinery/power/smes/buildable/point_of_interest,/obj/structure/cable,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"J" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/toolcloset,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"K" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/excavation,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"L" = (/obj/structure/table/standard,/obj/item/weapon/pickaxe/drill,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"M" = (/obj/structure/table/standard,/obj/item/stack/material/cyborg/steel,/obj/item/stack/material/cyborg/glass,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"N" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"O" = (/obj/structure/table/standard,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"P" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/tiled,/area/submap/Rockb1)
"Q" = (/turf/simulated/floor/plating,/area/submap/Rockb1)
"R" = (/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/plating,/area/submap/Rockb1)
"S" = (/obj/effect/decal/cleanable/greenglow,/turf/simulated/floor/plating,/area/submap/Rockb1)
"T" = (/obj/structure/loot_pile/maint/trash,/turf/simulated/floor/plating,/area/submap/Rockb1)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaa
@@ -53,10 +57,10 @@ abcddepqrestmetumvedcccba
abcddeeewemtteweeeeecccba
accddemtxmmtttttxyzycccba
abdddeweeeeeeeweeeeecccba
abdddettABetAmtCDEedcccba
abdddeFGHmetIJKeeeedcccba
abcddeeeeeeLeeeeddddcccba
abccddddddeMNOPedddccccba
abdddeABCDetEmtFGHedcccba
abdddeIJKLetMNOeeeedcccba
abcddeeeeeePeeeeddddcccba
abccddddddeQRSTedddccccba
abccddddddeeeeeedccccccba
abcccccccddddddddddccccba
abbcccccccccccccccccccbba
@@ -14,6 +14,7 @@
#include "lost_explorer.dmm"
#include "CaveTrench.dmm"
#include "Cavelake.dmm"
#include "Rockb1.dmm"
#endif
// The 'mountains' is the mining z-level, and has a lot of caves.
@@ -88,6 +89,12 @@
cost = 5
allow_duplicates = TRUE
/datum/map_template/surface/mountains/normal/Rockb1
name = "Rocky Base 1"
desc = "Someones underground hidey hole"
mappath = 'maps/submaps/surface_submaps/mountains/Rockb1.dmm'
cost = 15
/**************
* Deep Caves *
**************/
@@ -104,6 +111,7 @@
desc = "A (formerly) flying saucer that is now embedded into the mountain, yet it still seems to be running..."
mappath = 'maps/submaps/surface_submaps/mountains/crashed_ufo.dmm'
cost = 40
discard_prob = 50
/datum/map_template/surface/mountains/deep/Scave1
name = "Spider Cave 1"
@@ -113,7 +121,7 @@
/datum/map_template/surface/mountains/deep/CaveTrench
name = "Cave River"
desc = "A strange underground river"
desc = "A strange underground river."
mappath = 'maps/submaps/surface_submaps/mountains/CaveTrench.dmm'
cost = 20
@@ -0,0 +1,42 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/template_noop,/area/submap/Field1)
"c" = (/obj/structure/flora/tree/sif,/turf/template_noop,/area/submap/Field1)
"d" = (/turf/simulated/floor/outdoors/dirt,/area/submap/Field1)
"e" = (/obj/structure/ore_box,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1)
"f" = (/obj/item/device/radio,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1)
"g" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1)
"h" = (/obj/vehicle/train/cargo/engine,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1)
"i" = (/obj/item/device/flashlight,/turf/simulated/floor/outdoors/dirt,/area/submap/Field1)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaabbbbbbbbbbbbbbba
abbaaaaaaaaaabbbbbbbbbbbbbbbaa
abbaaaaaabbbbbbcbbbbbbbbbcbbaa
abbbaaabbbbbbbbbbbbbbbbbbbbaaa
abbbbbbbbbbbbbbbbbbcbbbbbbbaaa
abbbbbbbbbbbbbbbbbbbbbbbbbbaaa
abbbbbbbbbbbbbbbbbbbbbbbbbaaaa
abbbcbbbbbbbbbbbbbbbbbbbbbaaaa
aabbbbbbbbbbbbbbbbbbbbbbbbaaaa
aabbbbbbbbbbbbbbbbbbbbbbbbbaaa
aaabbbbbbbbbbbdddbbbbbbbbbbaaa
aaabbbbbbbbbddddddddddbbbbbbba
aaaabbbbbbbddddddddddddbbbbbba
aaaabbbbbbbddddddddddddbbbbcba
aaaabbbbbbbdddedfddddbbbbbbbba
aaabbbbbbbbbdegghdddbbbbbbbbba
aaabbbbbbbbbbbdibdbbbbbbbbbbba
aabbbbbbbbbbbbbbbbbbbbbbbcbbba
abbbcbbbbbbbbbbbbbbbbbbbbbbbba
abbbbbbbbbbbbbbbbbbbbbbbbbbbba
abbbbbbbbbbbbbbbbbbbbbbbbbbbba
abbbbbbbbbbbbbbbbbbbbbbbbbbbba
abbbbbbbcbbbbbbbbbbbbbbbbbbbba
abbbbbbbbbbbbbbbbbbbbbbbbbbbba
abbbbbbbbbbbbbbbbbbbbbbbcbbbba
aabbbbbbcbbbbaaaabaaabbbbbbcba
aaaaaaabbbbbaaaaaaaaaabbbbbbba
aaaaaaaaabbaaaaaaaaaaabbbbbbba
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
@@ -0,0 +1,16 @@
"a" = (/turf/template_noop,/area/template_noop)
"b" = (/turf/template_noop,/area/submap/Rocky5)
"c" = (/turf/simulated/mineral/ignore_mapgen,/area/submap/Rocky5)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaa
abbccccccbbbbbbbbcba
accccccccbbbbbbbbcba
abcccccbbbbbbbbbccca
abbcccbbbbbbbbbbccca
abbbbbbbbccbbbbbccca
abbbbbbbbccbbbbbbcca
abbbbbbbbcccbbbbbcba
abbbbbbbccccccbbbbba
aaaaaaaaaaaaaaaaaaaa
"}

Some files were not shown because too many files have changed in this diff Show More