Merge branch 'master' into development
@@ -450,10 +450,10 @@ Define for getting a bitfield of adjacent turfs that meet a condition.
|
||||
|
||||
|
||||
// Z-controller stuff - see basic.dm to see why the fuck this is the way it is.
|
||||
#define IS_VALID_ZINDEX(z) !((z) > world.maxz || z > 17 || z < 2)
|
||||
#define IS_VALID_ZINDEX(z) !((z) > world.maxz || (z) > 17)
|
||||
|
||||
#define HAS_ABOVE(z) (IS_VALID_ZINDEX(z) && z_levels & (1 << (z - 1)))
|
||||
#define HAS_BELOW(z) (IS_VALID_ZINDEX(z) && z_levels & (1 << (z - 2)))
|
||||
#define HAS_ABOVE(z) (IS_VALID_ZINDEX(z) && SSatlas.z_levels & (1 << (z - 1)))
|
||||
#define HAS_BELOW(z) (IS_VALID_ZINDEX(z) && (z) != 1 && SSatlas.z_levels & (1 << (z - 2)))
|
||||
|
||||
#define GET_ABOVE(A) (HAS_ABOVE(A:z) ? get_step(A, UP) : null)
|
||||
#define GET_BELOW(A) (HAS_BELOW(A:z) ? get_step(A, DOWN) : null)
|
||||
|
||||
@@ -800,7 +800,6 @@
|
||||
SearchVar(ntnet_card_uid)
|
||||
SearchVar(ntnet_global)
|
||||
SearchVar(ntnrc_uid)
|
||||
SearchVar(z_levels)
|
||||
SearchVar(BLOOD_VOLUME_SAFE)
|
||||
SearchVar(BLOOD_VOLUME_OKAY)
|
||||
SearchVar(BLOOD_VOLUME_BAD)
|
||||
|
||||
@@ -18,6 +18,10 @@ var/datum/controller/subsystem/atlas/SSatlas
|
||||
var/list/spawn_locations = list()
|
||||
|
||||
var/list/connected_z_cache = list()
|
||||
var/z_levels = 0 // Each bit represents a connection between adjacent levels. So the first bit means levels 1 and 2 are connected.
|
||||
|
||||
/datum/controller/subsystem/atlas/stat_entry()
|
||||
..("W:{X:[world.maxx] Y:[world.maxy] Z:[world.maxz]} ZL:[z_levels]")
|
||||
|
||||
/datum/controller/subsystem/atlas/New()
|
||||
NEW_SS_GLOBAL(SSatlas)
|
||||
@@ -112,6 +116,7 @@ var/datum/controller/subsystem/atlas/SSatlas
|
||||
/datum/controller/subsystem/atlas/proc/setup_multiz()
|
||||
for (var/thing in height_markers)
|
||||
var/obj/effect/landmark/map_data/marker = thing
|
||||
log_debug("atlas: setting up Z marker on level [marker.z] with height [marker.height].")
|
||||
marker.setup()
|
||||
|
||||
connected_z_cache.Cut()
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
flags = SS_FIRE_IN_LOBBY
|
||||
|
||||
var/list/queued_turfs = list()
|
||||
var/list/qt_idex = 1
|
||||
var/qt_idex = 1
|
||||
var/list/queued_overlays = list()
|
||||
var/list/qo_idex = 1
|
||||
var/qo_idex = 1
|
||||
|
||||
var/list/openspace_overlays = list()
|
||||
var/list/openspace_turfs = list()
|
||||
|
||||
@@ -407,6 +407,12 @@
|
||||
desc = "Weaponry Permission"
|
||||
region = ACCESS_REGION_SECURITY
|
||||
|
||||
var/const/access_journalist = 70//journalist's office access
|
||||
/datum/access/journalist
|
||||
id = access_journalist
|
||||
desc = "Journalist Office"
|
||||
region = ACCESS_REGION_GENERAL
|
||||
|
||||
/******************
|
||||
* Central Command *
|
||||
******************/
|
||||
@@ -470,12 +476,6 @@
|
||||
desc = "Merchant Access"
|
||||
access_type = ACCESS_TYPE_CENTCOM
|
||||
|
||||
var/const/access_journalist = 111//journalist's office access
|
||||
/datum/access/journalist
|
||||
id = access_journalist
|
||||
desc = "Journalist Access"
|
||||
access_type = ACCESS_REGION_GENERAL
|
||||
|
||||
/***************
|
||||
* Antag access *
|
||||
***************/
|
||||
|
||||
@@ -78,12 +78,12 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
|
||||
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction,
|
||||
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics,
|
||||
access_chapel_office, access_library, access_research, access_mining, access_mining_station, access_janitor,
|
||||
access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons)
|
||||
access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_journalist)
|
||||
minimal_access = list(access_sec_doors, access_medical, access_engine, access_change_ids, access_eva, access_heads,
|
||||
access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction,
|
||||
access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics,
|
||||
access_chapel_office, access_library, access_research, access_mining, access_mining_station, access_janitor,
|
||||
access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons)
|
||||
access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_journalist)
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -105,7 +105,7 @@ var/list/civilian_positions = list(
|
||||
"Chef",
|
||||
"Janitor",
|
||||
"Librarian",
|
||||
"Journalist",
|
||||
"Corporate Reporter",
|
||||
"Chaplain",
|
||||
"Assistant"
|
||||
)
|
||||
|
||||
@@ -453,7 +453,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
src.updateUsrDialog()
|
||||
|
||||
else if(href_list["set_new_message"])
|
||||
src.msg = pencode2html(sanitize(input(usr, "Write your Feed story", "Network Channel Handler", "") as message, encode = 0, trim = 0, extra = 0))
|
||||
src.msg = pencode2html(sanitize(input(usr, "Write your Feed story", "Network Channel Handler", "") as message, max_length = MAX_BOOK_MESSAGE_LEN, encode = 0, trim = 0, extra = 0))
|
||||
src.updateUsrDialog()
|
||||
|
||||
else if(href_list["set_attachment"])
|
||||
@@ -469,7 +469,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
src.screen=6
|
||||
else
|
||||
if(paper_data)
|
||||
src.msg += "</BR>Attachment Name: [paper_name]</BR>Attachment:<PRE><CODE>[paper_data]</CODE></PRE>"
|
||||
src.msg += "</BR>Attachment Name: [paper_name]</BR>Attachment:<PRE><BLOCKQUOTE style=\"border: 1px black solid;\">[paper_data]</BLOCKQUOTE></PRE>"
|
||||
var/image = photo_data ? photo_data.photo : null
|
||||
feedback_inc("newscaster_stories",1)
|
||||
var/datum/feed_channel/ch = SSnews.GetFeedChannel(src.channel_name)
|
||||
|
||||
@@ -438,7 +438,9 @@
|
||||
/obj/item/seeds/towermycelium = 3,
|
||||
/obj/item/seeds/watermelonseed = 3,
|
||||
/obj/item/seeds/wheatseed = 3,
|
||||
/obj/item/seeds/whitebeetseed = 3
|
||||
/obj/item/seeds/whitebeetseed = 3,
|
||||
/obj/item/seeds/earthenroot = 2,
|
||||
/obj/item/seeds/nifberries = 2
|
||||
)
|
||||
contraband = list(
|
||||
/obj/item/seeds/amanitamycelium = 3,
|
||||
@@ -486,7 +488,9 @@
|
||||
/obj/item/seeds/towermycelium = 20,
|
||||
/obj/item/seeds/watermelonseed = 30,
|
||||
/obj/item/seeds/wheatseed = 20,
|
||||
/obj/item/seeds/whitebeetseed = 20
|
||||
/obj/item/seeds/whitebeetseed = 20,
|
||||
/obj/item/seeds/earthenroot = 70,
|
||||
/obj/item/seeds/nifberries = 70
|
||||
)
|
||||
restock_items = 1
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
else
|
||||
R = new /obj/structure/closet/airbubble(user.loc)
|
||||
if(!used)
|
||||
internal_tank = new /obj/item/weapon/tank/emergency_oxygen/double(src)
|
||||
internal_tank = new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
internal_tank.air_contents.adjust_gas("oxygen", (42*ONE_ATMOSPHERE)/(R_IDEAL_GAS_EQUATION*T20C))
|
||||
R.internal_tank = internal_tank
|
||||
if(!isnull(internal_tank))
|
||||
internal_tank.forceMove(R)
|
||||
@@ -82,7 +83,7 @@
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/airbubble/can_close()
|
||||
/obj/structure/closet/airbubble/can_close(mob/user as mob)
|
||||
if(zipped)
|
||||
return 0
|
||||
var/turf/T = get_turf(src)
|
||||
@@ -93,7 +94,7 @@
|
||||
for(var/mob/living/M in T)
|
||||
mob_num += 1
|
||||
if(mob_num > 1)
|
||||
user << "<span class='warning'>[src] can only fit one person.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] can only fit one person.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -125,7 +126,7 @@
|
||||
|
||||
/obj/structure/closet/airbubble/toggle(mob/user as mob)
|
||||
if(!(opened ? close(user) : open(user)))
|
||||
user << "<span class='notice'>It won't budge!</span>"
|
||||
to_chat(user, "<span class='notice'>It won't budge!</span>")
|
||||
return
|
||||
update_icon()
|
||||
return 1
|
||||
@@ -139,9 +140,6 @@
|
||||
|
||||
dump_contents()
|
||||
|
||||
if(!do_after(user, 0.35 SECONDS, act_target = src))
|
||||
return
|
||||
|
||||
icon_state = icon_opened
|
||||
opened = 1
|
||||
playsound(loc, open_sound, 15, 1, -3)
|
||||
@@ -151,14 +149,11 @@
|
||||
/obj/structure/closet/airbubble/close(mob/user as mob)
|
||||
if(!opened)
|
||||
return 0
|
||||
if(!can_close())
|
||||
if(!can_close(user))
|
||||
return 0
|
||||
|
||||
var/stored_units = 0
|
||||
|
||||
if(!do_after(user, 0.35 SECONDS, act_target = src))
|
||||
return
|
||||
|
||||
if(store_misc)
|
||||
stored_units += store_misc(stored_units)
|
||||
if(store_items)
|
||||
@@ -274,6 +269,12 @@
|
||||
var/datum/gas_mixture/t_air = get_turf_air()
|
||||
t_air.merge(inside_air)
|
||||
|
||||
// When we shoot bubble, make it rip.
|
||||
/obj/structure/closet/airbubble/bullet_act(var/obj/item/projectile/Proj)
|
||||
..()
|
||||
ripped = TRUE
|
||||
update_icon()
|
||||
|
||||
// Change valve on internal tank
|
||||
/obj/structure/closet/airbubble/verb/set_internals()
|
||||
set src in oview(1)
|
||||
@@ -296,7 +297,7 @@
|
||||
START_PROCESSING(SSfast_process, src)
|
||||
use_internal_tank = !use_internal_tank
|
||||
else
|
||||
usr << "<span class='notice'>[src] has no internal tank.</span>"
|
||||
to_chat(usr, "<span class='notice'>[src] has no internal tank.</span>")
|
||||
|
||||
// Remove tank from bubble
|
||||
/obj/structure/closet/airbubble/verb/take_tank()
|
||||
@@ -321,7 +322,7 @@
|
||||
update_icon()
|
||||
STOP_PROCESSING(SSfast_process, src)
|
||||
else
|
||||
usr << "<span class='warning'>[src] already has no tank.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] already has no tank.</span>")
|
||||
|
||||
// Handle most of things: restraining, cutting restrains, attaching tank.
|
||||
/obj/structure/closet/airbubble/attackby(W as obj, mob/user as mob)
|
||||
@@ -345,7 +346,7 @@
|
||||
START_PROCESSING(SSfast_process, src)
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>[src] already has a tank attached.</span>"
|
||||
to_chat(user, "<span class='warning'>[src] already has a tank attached.</span>")
|
||||
if(opened)
|
||||
if(istype(W, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = W
|
||||
@@ -357,6 +358,9 @@
|
||||
return
|
||||
user.drop_item()
|
||||
else if(istype(W, /obj/item/weapon/handcuffs/cable))
|
||||
if(zipped)
|
||||
to_chat(user, "<span class='warning'>[src]'s zipper is already restrained.</span>")
|
||||
return
|
||||
user.visible_message(
|
||||
"<span class='warning'>[user] begins putting cable restrains on zipper of [src].</span>",
|
||||
"<span class='notice'>You begin putting cable restrains on zipper of [src].</span>"
|
||||
@@ -374,6 +378,10 @@
|
||||
qdel(W)
|
||||
update_icon()
|
||||
else if(istype(W, /obj/item/weapon/wirecutters))
|
||||
if(!zipped)
|
||||
to_chat(user, "<span class='warning'>[src] has no cables to cut.</span>")
|
||||
attack_hand(user)
|
||||
return
|
||||
user.visible_message(
|
||||
"<span class='warning'>[user] begins cutting cable restrains on zipper of [src].</span>",
|
||||
"<span class='notice'>You begin cutting cable restrains on zipper of [src].</span>"
|
||||
|
||||
@@ -412,7 +412,7 @@ BREATH ANALYZER
|
||||
/obj/item/device/breath_analyzer/attack(mob/living/carbon/human/H, mob/living/user as mob)
|
||||
|
||||
if (!istype(H))
|
||||
to_chat(user,"<span class='warning'>You can't find a way to use the [src] on [H]!</span>")
|
||||
to_chat(user,"<span class='warning'>You can't find a way to use \the [src] on [H]!</span>")
|
||||
return
|
||||
|
||||
if ( ((CLUMSY in user.mutations) || (DUMB in user.mutations)) && prob(20))
|
||||
@@ -433,7 +433,7 @@ BREATH ANALYZER
|
||||
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
|
||||
user.do_attack_animation(H)
|
||||
|
||||
user.visible_message("<span class='notice'>[user] is trying to take a breath sample from [H].</span>","<span class='notice'>You gently insert the [src] into [H]'s mouth.</span>")
|
||||
user.visible_message("<span class='notice'>[user] is trying to take a breath sample from [H].</span>","<span class='notice'>You gently insert \the [src] into [H]'s mouth.</span>")
|
||||
|
||||
if (!LAZYLEN(src.other_DNA))
|
||||
LAZYADD(src.other_DNA, H.dna.unique_enzymes)
|
||||
@@ -443,7 +443,7 @@ BREATH ANALYZER
|
||||
to_chat(user,"<span class='notice'>You and the target need to be standing still in order to take a breath sample.</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>[user] takes a breath sample from [H].</span>","<span class='notice'>The [src] clicks as it finishes reading [H]'s breath sample.</span>")
|
||||
user.visible_message("<span class='notice'>[user] takes a breath sample from [H].</span>","<span class='notice'>\The [src] clicks as it finishes reading [H]'s breath sample.</span>")
|
||||
|
||||
to_chat(user,"<b>Breath Sample Results:</b>")
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if (!H.species || !isipc(H) || !H.organs_by_name["groin"])
|
||||
if (!H.species || !isipc(H) || !H.organs_by_name["head"])
|
||||
user << "<span class = 'warning'>You cannot use this on a non-synthetic organism!</span>"
|
||||
return
|
||||
|
||||
@@ -178,9 +178,9 @@
|
||||
|
||||
user.show_message("<span class = 'warning'>You implanted the implant into [M].</span>")
|
||||
|
||||
ipc_tag.replaced(H, H.organs_by_name["groin"])
|
||||
|
||||
qdel(ipc_tag)
|
||||
ipc_tag.replaced(H, H.organs_by_name["head"])
|
||||
|
||||
ipc_tag = null
|
||||
|
||||
update()
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
coat = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/coatrack/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
/obj/structure/coatrack/attackby(obj/item/W as obj, mob/user as mob)
|
||||
var/can_hang = 0
|
||||
if(is_type_in_list(W, allowed))
|
||||
can_hang = 1
|
||||
@@ -51,4 +51,9 @@
|
||||
/obj/structure/coatrack/update_icon()
|
||||
cut_overlays()
|
||||
if (coat)
|
||||
if(istype(coat, /obj/item/clothing/suit/storage/toggle))
|
||||
var/obj/item/clothing/suit/storage/toggle/T = coat
|
||||
if(T.icon_state == T.icon_open) // avoid icon conflicts
|
||||
T.icon_state = T.icon_closed
|
||||
T.item_state = T.icon_closed
|
||||
add_overlay("coat_[coat.icon_state]")
|
||||
|
||||
@@ -125,8 +125,8 @@
|
||||
return
|
||||
else
|
||||
user.put_in_hands(stored_item)
|
||||
stored_item = null
|
||||
to_chat(user,"<span class='notice'>You take \the [stored_item] from [src].</span>")
|
||||
stored_item = null
|
||||
return
|
||||
|
||||
/obj/structure/flora/pottedplant/bullet_act(var/obj/item/projectile/Proj)
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
if(!T.decals) T.decals = list()
|
||||
T.decals |= floor_decals[cache_key]
|
||||
T.add_overlay(floor_decals[cache_key])
|
||||
if(desc)
|
||||
T.desc += "<br>There is \a [src] on it with the following inscription:<br><i>[desc]</i>"
|
||||
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
if (!mapload)
|
||||
make_plating(defer_icon_update = 1)
|
||||
flooring = newflooring
|
||||
//Set the initial strings
|
||||
name = flooring.name
|
||||
desc = flooring.desc
|
||||
if (mapload)
|
||||
queue_icon_update()
|
||||
else
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
var/list/to_add = list()
|
||||
|
||||
if(flooring)
|
||||
// Set initial icon and strings.
|
||||
name = flooring.name
|
||||
desc = flooring.desc
|
||||
// Set initial icon.
|
||||
icon = flooring.icon
|
||||
|
||||
if(flooring_override)
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
gear_tweaks += new/datum/gear_tweak/path(surgical)
|
||||
|
||||
/datum/gear/head/headbando
|
||||
display_name = "Basic Headband"
|
||||
display_name = "basic headband"
|
||||
path = /obj/item/clothing/head/headbando
|
||||
|
||||
/datum/gear/head/headbando/New()
|
||||
|
||||
@@ -507,7 +507,7 @@ BLIND // can't see anything
|
||||
|
||||
//from verkister
|
||||
/obj/item/clothing/glasses/spiffygogs
|
||||
name = "Orange Goggles"
|
||||
name = "orange goggles"
|
||||
desc = "You can almost feel the raw power radiating off these strange specs."
|
||||
icon_state = "spiffygogs"
|
||||
item_state = "spiffygogs"
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
if(contained_sprite)
|
||||
tmp_icon_state = "[tmp_icon_state]"
|
||||
inv_overlay = image("icon" = icon, "icon_state" = "[tmp_icon_state]_w", dir = SOUTH)
|
||||
if(color)
|
||||
inv_overlay.color = color
|
||||
return inv_overlay
|
||||
|
||||
/obj/item/clothing/accessory/proc/get_mob_overlay()
|
||||
@@ -43,6 +45,8 @@
|
||||
mob_overlay = image("icon" = icon, "icon_state" = "[tmp_icon_state]")
|
||||
else
|
||||
mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]")
|
||||
if(color)
|
||||
mob_overlay.color = color
|
||||
return mob_overlay
|
||||
|
||||
//when user attached an accessory to S
|
||||
|
||||
@@ -111,14 +111,15 @@
|
||||
new /obj/item/weapon/material/hatchet/unathiknife(hold)
|
||||
|
||||
/obj/item/clothing/accessory/storage/bayonet
|
||||
name = "bayonet sheat"
|
||||
desc = "A leather sheat designated to hold a bayonet."
|
||||
name = "bayonet sheath"
|
||||
desc = "A leather sheath designated to hold a bayonet."
|
||||
icon_state = "holster_machete"
|
||||
slots = 1
|
||||
|
||||
/obj/item/clothing/accessory/storage/bayonet/Initialize()
|
||||
. = ..()
|
||||
hold.max_storage_space = 2
|
||||
hold.max_storage_space = 4
|
||||
hold.max_w_class = 3
|
||||
hold.can_hold = list(
|
||||
/obj/item/weapon/material/knife/bayonet
|
||||
)
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel01
|
||||
name = "standard core KA power converter"
|
||||
build_name = "'Standard'"
|
||||
desc = "A very standard kinetic accelerator energy converter and barrel assembly. Has poor range, but gets the job done."
|
||||
desc = "A very standard kinetic accelerator energy converter and barrel assembly. Has poor range and firerate, but gets the job done."
|
||||
icon_state = "barrel01"
|
||||
damage_increase = 10
|
||||
firedelay_increase = 0.75 SECONDS
|
||||
range_increase = 2
|
||||
damage_increase = 15
|
||||
firedelay_increase = 1 SECONDS
|
||||
range_increase = 3
|
||||
recoil_increase = 2
|
||||
cost_increase = 1
|
||||
cell_increase = 0
|
||||
capacity_increase = -1
|
||||
fire_sound = 'sound/weapons/Kenetic_accel.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2,TECH_MAGNET = 2)
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 1, TECH_PHORON = 2)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel02
|
||||
name = "professional core KA power converter"
|
||||
@@ -20,15 +20,15 @@
|
||||
desc = "A more advanced kinetic accelerator energy converter and barrel assembly intended for professional miners out on the rock."
|
||||
icon_state = "barrel02"
|
||||
damage_increase = 15
|
||||
firedelay_increase = 0.75 SECONDS
|
||||
range_increase = 3
|
||||
firedelay_increase = 0.5 SECONDS
|
||||
range_increase = 4
|
||||
recoil_increase = 3
|
||||
cost_increase = 1
|
||||
cell_increase = 0
|
||||
capacity_increase = -2
|
||||
fire_sound = 'sound/weapons/Kenetic_accel.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3,TECH_MAGNET = 3)
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 3, TECH_PHORON = 2)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel03
|
||||
name = "meteor core KA power converter"
|
||||
@@ -37,14 +37,14 @@
|
||||
icon_state = "barrel03"
|
||||
damage_increase = 20
|
||||
firedelay_increase = 0.75 SECONDS
|
||||
range_increase = 4
|
||||
range_increase = 5
|
||||
recoil_increase = 4
|
||||
cost_increase = 2
|
||||
cell_increase = 0
|
||||
capacity_increase = -3
|
||||
fire_sound = 'sound/weapons/resonator_fire.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4,TECH_MAGNET = 4)
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 3,TECH_MAGNET = 3, TECH_PHORON = 3)
|
||||
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel04
|
||||
@@ -54,14 +54,14 @@
|
||||
icon_state = "barrel04"
|
||||
damage_increase = 25
|
||||
firedelay_increase = 1 SECONDS
|
||||
range_increase = 5
|
||||
range_increase = 6
|
||||
recoil_increase = 6
|
||||
cost_increase = 5
|
||||
cell_increase = 0
|
||||
capacity_increase = -4
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5,TECH_MAGNET = 5)
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 3,TECH_MAGNET = 5, TECH_PHORON = 4)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/barrel05
|
||||
name = "experimental core KA power converter"
|
||||
@@ -70,14 +70,14 @@
|
||||
icon_state = "barrel05"
|
||||
damage_increase = 30
|
||||
firedelay_increase = 1 SECONDS
|
||||
range_increase = 6
|
||||
range_increase = 7
|
||||
recoil_increase = 10
|
||||
cost_increase = 10
|
||||
cell_increase = 0
|
||||
capacity_increase = -5
|
||||
fire_sound = 'sound/weapons/resonator_blast.ogg'
|
||||
projectile_type = /obj/item/projectile/kinetic
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 6,TECH_MAGNET = 6)
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 5,TECH_MAGNET = 6, TECH_PHORON = 5)
|
||||
|
||||
/obj/item/custom_ka_upgrade/barrels/illegal
|
||||
name = "laser KA power converter"
|
||||
@@ -87,8 +87,8 @@
|
||||
damage_increase = 15
|
||||
firedelay_increase = 1.5 SECONDS
|
||||
range_increase = 64
|
||||
recoil_increase = 6
|
||||
cost_increase = 4
|
||||
recoil_increase = 0
|
||||
cost_increase = 10
|
||||
cell_increase = 0
|
||||
capacity_increase = 0
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
|
||||
@@ -21,49 +21,46 @@
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cell01
|
||||
//Pump Action
|
||||
name = "pump action KA cell"
|
||||
build_name = "pump-action"
|
||||
desc = "A very basic power cell and pump action combo that stores a single charge. A pump is required after each shot, however it deals increased damage and has increased range."
|
||||
name = "pump recharging KA cell"
|
||||
build_name = "pump-recharging"
|
||||
desc = "A very basic power cell and pump action combo that stores 4 charges. Low capacity however it has slightly increased range."
|
||||
icon_state = "cell01"
|
||||
damage_increase = 5
|
||||
firedelay_increase = 0.25 SECONDS
|
||||
range_increase = 3
|
||||
recoil_increase = -1
|
||||
cost_increase = -100 //Always have a single charge
|
||||
cell_increase = 1
|
||||
range_increase = 2
|
||||
recoil_increase = -3
|
||||
cell_increase = 4
|
||||
capacity_increase = -1
|
||||
mod_limit_increase = 0
|
||||
|
||||
pump_restore = 1
|
||||
pump_delay = 0.4 SECONDS
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2,TECH_MAGNET = 2,TECH_POWER = 2)
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 1,TECH_POWER = 1)
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cell02
|
||||
//Pump Action
|
||||
name = "pump recharging KA cell"
|
||||
name = "advanced pump recharging KA cell"
|
||||
build_name = "pump-recharging"
|
||||
desc = "A somewhat more advanced, standard issue pump and cell assembly that allows the user to 'pre-pump' their charges, up to a capacity of 12. Can fire quite quickly."
|
||||
desc = "A somewhat more advanced, standard issue pump and cell assembly that stores charges up to a capacity of 12. Can fire and pump quite quickly."
|
||||
icon_state = "cell02"
|
||||
firedelay_increase = 0
|
||||
firedelay_increase = 0.1 SECONDS
|
||||
recoil_increase = 1
|
||||
cell_increase = 12
|
||||
capacity_increase = -2
|
||||
mod_limit_increase = 0
|
||||
|
||||
pump_restore = 1
|
||||
pump_delay = 0.5 SECONDS
|
||||
pump_delay = 0.3 SECONDS
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3,TECH_MAGNET = 3,TECH_POWER = 3)
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 1,TECH_MAGNET = 1,TECH_POWER = 3)
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cell03
|
||||
name = "kinetic charging KA cell"
|
||||
build_name = "kinetic-reloading"
|
||||
desc = "A complex pump and cell assembly that uses the kinetic energy of an initial pump to significantly charge the cell. Deals increased damage at the cost of severely increased recoil and reduced firerate."
|
||||
build_name = "kinetic"
|
||||
desc = "A complex pump and cell assembly that uses the kinetic energy of an initial pump to significantly charge the cell. Deals increased damage at the cost of reduced firerate."
|
||||
icon_state = "cell03"
|
||||
damage_increase = 10
|
||||
firedelay_increase = 0.5 SECONDS
|
||||
recoil_increase = 4
|
||||
cost_increase = -1
|
||||
cell_increase = 40
|
||||
capacity_increase = -3
|
||||
@@ -72,13 +69,14 @@
|
||||
pump_restore = 40
|
||||
pump_delay = 1 SECONDS
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4,TECH_MAGNET = 4,TECH_POWER = 4)
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 3,TECH_MAGNET = 2,TECH_POWER = 3)
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cell04
|
||||
name = "uranium charging KA cell"
|
||||
build_name = "recharging"
|
||||
desc = "A pumpless cell assembly that containes a miniaturized nuclear reactor housed safely inside the assembly. Recharges the cell shortly over time, however deals slightly reduced damage."
|
||||
icon_state = "cell04"
|
||||
firedelay_increase = 0.1 SECONDS
|
||||
damage_increase = -5
|
||||
recoil_increase = 0
|
||||
cost_increase = 0
|
||||
@@ -89,7 +87,7 @@
|
||||
pump_restore = 0
|
||||
pump_delay = 0
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5,TECH_MAGNET = 5,TECH_POWER = 5)
|
||||
origin_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 4,TECH_MAGNET = 3,TECH_POWER = 5)
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cell04/on_update(var/obj/item/weapon/gun/custom_ka/the_gun)
|
||||
stored_charge = min(stored_charge + 3,cell_increase)
|
||||
@@ -110,7 +108,7 @@
|
||||
pump_restore = 5
|
||||
pump_delay = 0.5 SECONDS
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 6,TECH_MAGNET = 6,TECH_POWER = 6)
|
||||
origin_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 6,TECH_MAGNET = 5,TECH_POWER = 5, TECH_PHORON = 5)
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cell05/on_fire(var/obj/item/weapon/gun/custom_ka/the_gun)
|
||||
if(the_gun.recoil_increase > 0)
|
||||
@@ -132,7 +130,7 @@
|
||||
pump_restore = 0
|
||||
pump_delay = 0
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5,TECH_MAGNET = 5,TECH_POWER = 5)
|
||||
origin_tech = list()
|
||||
|
||||
/obj/item/custom_ka_upgrade/cells/cyborg/on_update(var/obj/item/weapon/gun/custom_ka/the_gun)
|
||||
var/mob/living/silicon/robot/owner_robot = the_gun.loc
|
||||
@@ -147,18 +145,18 @@
|
||||
/obj/item/custom_ka_upgrade/cells/illegal
|
||||
//Pump Action
|
||||
name = "pump action KA cell"
|
||||
build_name = "static"
|
||||
desc = "A clusterfuck of circuitry and battery parts all snuggly fit inside a solid, static plastisteel frame."
|
||||
build_name = "pump-action"
|
||||
desc = "A clusterfuck of circuitry and battery parts all snuggly fit inside a solid, static plastisteel frame. A single pump is enough for any shot of any weapon."
|
||||
icon_state = "cell_illegal"
|
||||
firedelay_increase = 0
|
||||
recoil_increase = 0
|
||||
cost_increase = 0
|
||||
stored_charge = 20
|
||||
cell_increase = 20
|
||||
cost_increase = -100
|
||||
stored_charge = 1
|
||||
cell_increase = 1
|
||||
capacity_increase = 0
|
||||
mod_limit_increase = 0
|
||||
|
||||
pump_restore = 20
|
||||
pump_delay = 0.5 SECONDS
|
||||
pump_restore = 1
|
||||
pump_delay = 0.3 SECONDS
|
||||
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3,TECH_MAGNET = 3,TECH_POWER = 3, TECH_ILLEGAL = 4)
|
||||
@@ -5,7 +5,7 @@
|
||||
w_class = 3
|
||||
capacity_increase = 3
|
||||
mod_limit_increase = 2
|
||||
origin_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2)
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1)
|
||||
slot_flags = SLOT_BELT
|
||||
|
||||
/obj/item/weapon/gun/custom_ka/frame02
|
||||
@@ -16,7 +16,7 @@
|
||||
recoil_increase = -1
|
||||
capacity_increase = 5
|
||||
mod_limit_increase = 3
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3)
|
||||
origin_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/weapon/gun/custom_ka/frame03
|
||||
name = "medium kinetic accelerator frame"
|
||||
@@ -26,7 +26,7 @@
|
||||
recoil_increase = -2
|
||||
capacity_increase = 7
|
||||
mod_limit_increase = 4
|
||||
origin_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4)
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3)
|
||||
|
||||
/obj/item/weapon/gun/custom_ka/frame04
|
||||
name = "heavy kinetic accelerator frame"
|
||||
@@ -36,7 +36,7 @@
|
||||
recoil_increase = -5
|
||||
capacity_increase = 9
|
||||
mod_limit_increase = 5
|
||||
origin_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5)
|
||||
origin_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 5)
|
||||
|
||||
/obj/item/weapon/gun/custom_ka/frame05
|
||||
name = "tactical kinetic accelerator frame"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/custom_ka_upgrade/upgrade_chips/damage
|
||||
name = "upgrade chip - damage increase"
|
||||
desc = "Increases damage and recoil."
|
||||
desc = "Increases damage and recoil, reduces accuracy."
|
||||
icon_state = "upgrade_chip"
|
||||
damage_increase = 10
|
||||
recoil_increase = 3
|
||||
@@ -54,7 +54,6 @@
|
||||
name = "illegal custom KA upgrade chip"
|
||||
desc = "Overrides safety settings for a custom kinetic accelerator. What's the worst that could happen?"
|
||||
icon_state = "upgrade_chip_illegal"
|
||||
damage_increase = 10
|
||||
firedelay_increase = -0.5 SECONDS
|
||||
recoil_increase = 4
|
||||
cost_increase = 1
|
||||
|
||||
@@ -2041,20 +2041,12 @@ obj/item/clothing/suit/storage/hooded/fluff/make_poncho //Raincoat Poncho - M.A.
|
||||
icon_state = "nikit_zippo"
|
||||
|
||||
|
||||
/obj/item/clothing/under/dress/fluff/marwani_dress_front //Unathi Purple Dress - Ilaeza Marwani - burgerbb
|
||||
/obj/item/clothing/suit/fluff/marwani_dress //Unathi Purple Dress - Ilaeza Marwani - burgerbb
|
||||
name = "unathi purple dress"
|
||||
desc = "A strange purple dress designed to fit very tall female unathi, suitable for indoor wear in warmer climate. This is the front piece."
|
||||
desc = "A strange purple dress designed to fit very tall female unathi, suitable for indoor wear in warmer climate. Attached to it is some sort of giant iron emblem."
|
||||
icon = 'icons/obj/custom_items/marwani_dress.dmi'
|
||||
icon_state = "mar_front_dress"
|
||||
item_state = "mar_front_dress"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/suit/fluff/marwani_dress_back //Unathi Purple Dress - Ilaeza Marwani - burgerbb
|
||||
name = "unathi purple dress"
|
||||
desc = "A strange purple dress designed to fit very tall female unathi, suitable for indoor wear in warmer climate. This is the back piece."
|
||||
icon = 'icons/obj/custom_items/marwani_dress.dmi'
|
||||
icon_state = "mar_back_dress"
|
||||
item_state = "mar_back_dress"
|
||||
icon_state = "mar_dress"
|
||||
item_state = "mar_dress"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/shoes/jackboots/unathi/fluff/marwani_shoes //Unathi Purple Boots - Ilaeza Marwani - burgerbb
|
||||
@@ -2073,14 +2065,6 @@ obj/item/clothing/suit/storage/hooded/fluff/make_poncho //Raincoat Poncho - M.A.
|
||||
item_state = "mar_gloves"
|
||||
contained_sprite = TRUE
|
||||
|
||||
/obj/item/clothing/accessory/fluff/marwani_armor //Clan Marwani Emblem - Ilaeza Marwani - burgerbb
|
||||
name = "clan marwani armor"
|
||||
desc = "A large, decorative iron and brass alloyed breastplate signifying the industrial strength of Clan Marwani."
|
||||
icon = 'icons/obj/custom_items/marwani_dress.dmi'
|
||||
icon_state = "mar_emblem"
|
||||
item_state = "mar_emblem"
|
||||
contained_sprite = TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/deck/tarot/fluff/klavdiya_cards //Adhomian Divination Cards Deck - Klavdiya Tikhomirov - alberyk
|
||||
name = "adhomian divination cards deck"
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
var/author = query_books.item[1]
|
||||
var/title = query_books.item[2]
|
||||
var/content = query_books.item[3]
|
||||
var/obj/item/weapon/book/B = new(src.loc)
|
||||
var/obj/item/weapon/book/B = new(src)
|
||||
B.name = "Book: [title]"
|
||||
B.title = title
|
||||
B.author = author
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
// If is_brittle() returns true, these are only good for a single strike.
|
||||
recipes += new/datum/stack_recipe("[display_name] baseball bat", /obj/item/weapon/material/twohanded/baseballbat, 10, time = 20, one_per_turf = 0, on_floor = 1, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/ring/material, 1, on_floor = 1, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 3, time = 20, on_floor = 1, supplied_material = "[name]")
|
||||
@@ -19,7 +18,8 @@
|
||||
recipes += new/datum/stack_recipe("[display_name] stool", /obj/item/weapon/stool, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
|
||||
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]")
|
||||
|
||||
if(hardness>=10)
|
||||
recipes += new/datum/stack_recipe("[display_name] ashtray", /obj/item/weapon/material/ashtray, 2, 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]")
|
||||
recipes += new/datum/stack_recipe("[display_name] knife", /obj/item/weapon/material/kitchen/utensil/knife/plastic, 1, on_floor = 1, supplied_material = "[name]")
|
||||
|
||||
@@ -136,8 +136,11 @@ var/global/list/minevendor_list = list( //keep in order of price
|
||||
if(istype(inserted_id))
|
||||
if(href_list["choice"] == "eject")
|
||||
inserted_id.loc = loc
|
||||
if(!usr.get_active_hand())
|
||||
usr.put_in_hands(inserted_id)
|
||||
if(ishuman(usr))
|
||||
if(!usr.get_active_hand())
|
||||
usr.put_in_hands(inserted_id)
|
||||
else
|
||||
inserted_id.forceMove(get_turf(src))
|
||||
inserted_id = null
|
||||
else if(href_list["choice"] == "insert")
|
||||
var/obj/item/weapon/card/id/I = usr.get_active_hand()
|
||||
|
||||
@@ -29,7 +29,9 @@
|
||||
dat += "<B>Maintenance Units</B><BR>"
|
||||
|
||||
for(var/mob/living/silicon/robot/drone/D in silicon_mob_list)
|
||||
if(D.z != src.z)
|
||||
if(src.z in current_map.station_levels && !(D.z in current_map.station_levels)) //If the console is on a station level, then list all drones on the station levels
|
||||
continue
|
||||
else if (!(src.z in current_map.station_levels) && src.z != D.z) //If the console is not on the station, only list drones on the current level
|
||||
continue
|
||||
dat += "<BR>[D.real_name] ([D.stat == 2 ? "<font color='red'>INACTIVE</FONT>" : "<font color='green'>ACTIVE</FONT>"])"
|
||||
dat += "<font dize = 9><BR>Cell charge: [D.cell.charge]/[D.cell.maxcharge]."
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
var/mob/master = null //undisputed master. Their commands hold ultimate sway and ultimate power.
|
||||
var/list/allowed_targets = list() //WHO CAN I KILL D:
|
||||
var/retribution = 1 //whether or not they will attack us if we attack them like some kinda dick.
|
||||
var/list/sad_emote = list("whimpers")
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/Initialize()
|
||||
..()
|
||||
@@ -55,7 +56,7 @@
|
||||
var/mode = "specific"
|
||||
if(allowed_targets[1] == "everyone") //we have been given the golden gift of murdering everything. Except our master, of course. And our friends. So just mostly everyone.
|
||||
mode = "everyone"
|
||||
for(var/atom/A in ListTargets(10))
|
||||
for(var/atom/A in targets)
|
||||
var/mob/M = null
|
||||
if(A == src)
|
||||
continue
|
||||
@@ -141,8 +142,7 @@
|
||||
allowed_targets = list("everyone")//everyone? EVERYONE
|
||||
return 1
|
||||
|
||||
var/list/targets = get_targets_by_name(text)
|
||||
allowed_targets += targets
|
||||
allowed_targets += get_targets_by_name(text)
|
||||
if(emote_hear && emote_hear.len)
|
||||
audible_emote("[pick(emote_hear)].",0)
|
||||
return targets.len != 0
|
||||
@@ -190,6 +190,13 @@
|
||||
/mob/living/simple_animal/hostile/commanded/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
|
||||
//if they attack us, we want to kill them. None of that "you weren't given a command so free kill" bullshit.
|
||||
. = ..()
|
||||
|
||||
// We forgive our master
|
||||
if(user == master)
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
target_mob = null
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
return
|
||||
if(!. && retribution)
|
||||
stance = HOSTILE_STANCE_ATTACK
|
||||
target_mob = user
|
||||
@@ -200,9 +207,57 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/attack_hand(mob/living/carbon/human/M as mob)
|
||||
..()
|
||||
|
||||
// We forgive our master
|
||||
if(M == master)
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
target_mob = null
|
||||
if(M.a_intent == I_HURT)
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
return
|
||||
|
||||
if(M.a_intent == I_HURT && retribution) //assume he wants to hurt us.
|
||||
|
||||
target_mob = M
|
||||
allowed_targets += M
|
||||
stance = HOSTILE_STANCE_ATTACK
|
||||
if(M in friends)
|
||||
friends -= M
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/attack_generic(var/mob/user, var/damage, var/attack_message)
|
||||
..()
|
||||
|
||||
// We forgive our master
|
||||
if(user == master)
|
||||
target_mob = null
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/bullet_act(var/obj/item/projectile/P, var/def_zone)
|
||||
..()
|
||||
|
||||
// We forgive our master
|
||||
if (ismob(P.firer) && P.firer == master)
|
||||
target_mob = null
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/attackby(var/obj/item/O, var/mob/user)
|
||||
..()
|
||||
|
||||
// We forgive our master
|
||||
if(user == master)
|
||||
target_mob = null
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
|
||||
mob/living/simple_animal/hostile/commanded/hitby(atom/movable/AM as mob|obj,var/speed = THROWFORCE_SPEED_DIVISOR)//Standardization and logging -Sieve
|
||||
..()
|
||||
|
||||
if(istype(AM,/obj/))
|
||||
var/obj/O = AM
|
||||
if(ismob(O.thrower))
|
||||
if(O.thrower == master)
|
||||
target_mob = null
|
||||
stance = HOSTILE_STANCE_IDLE
|
||||
audible_emote("[pick(sad_emote)].",0)
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
speak = list("Woof!", "Bark!", "AUUUUUU!","AwooOOOoo!")
|
||||
speak_emote = list("barks", "woofs")
|
||||
emote_hear = list("barks", "woofs")
|
||||
sad_emote = list("whines")
|
||||
|
||||
attacktext = "bitten"
|
||||
attack_sound = 'sound/misc/dog_bark.ogg'
|
||||
@@ -42,16 +43,7 @@
|
||||
|
||||
var/name_changed = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/dog/hit_with_weapon(obj/item/O, mob/living/user, var/effective_force, var/hit_zone)
|
||||
. = ..()
|
||||
if(!.)
|
||||
src.emote("barks!")
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/dog/attack_hand(mob/living/carbon/human/M as mob)
|
||||
..()
|
||||
if(M.a_intent == I_HURT)
|
||||
src.emote("barks!")
|
||||
|
||||
destroy_surroundings = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/commanded/dog/verb/befriend()
|
||||
set name = "Befriend Dog"
|
||||
|
||||
@@ -62,8 +62,10 @@
|
||||
|
||||
for(var/datum/computer_file/program/P in idle_threads)
|
||||
P.event_idremoved(1)
|
||||
|
||||
user.put_in_hands(card_slot.stored_card)
|
||||
if(ishuman(user))
|
||||
user.put_in_hands(card_slot.stored_card)
|
||||
else
|
||||
card_slot.stored_card.forceMove(get_turf(src))
|
||||
card_slot.stored_card = null
|
||||
update_uis()
|
||||
to_chat(user, "You remove the card from \the [src]")
|
||||
@@ -88,7 +90,10 @@
|
||||
to_chat(user, "There is no intellicard connected to \the [src].")
|
||||
return
|
||||
|
||||
user.put_in_hands(ai_slot.stored_card)
|
||||
if(ishuman(user))
|
||||
user.put_in_hands(ai_slot.stored_card)
|
||||
else
|
||||
ai_slot.stored_card.forceMove(get_turf(src))
|
||||
ai_slot.stored_card = null
|
||||
ai_slot.update_power_usage()
|
||||
update_uis()
|
||||
@@ -157,7 +162,7 @@
|
||||
playsound(user, 'sound/items/Ratchet.ogg', 100, 1)
|
||||
if (do_after(user, 20))
|
||||
new /obj/item/stack/material/steel(get_turf(src.loc), steel_sheet_cost)
|
||||
src.visible_message("\The [user] disassembles \the [src].",
|
||||
src.visible_message("\The [user] disassembles \the [src].",
|
||||
"You disassemble \the [src].",
|
||||
"You hear a ratchet.")
|
||||
qdel(src)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
// If you add a more comprehensive system, just untick this file.
|
||||
// WARNING: Only works for up to 17 z-levels!
|
||||
var/z_levels = 0 // Each bit represents a connection between adjacent levels. So the first bit means levels 1 and 2 are connected.
|
||||
|
||||
// If the height is more than 1, we mark all contained levels as connected.
|
||||
/obj/effect/landmark/map_data/New()
|
||||
@@ -10,7 +9,7 @@ var/z_levels = 0 // Each bit represents a connection between adjacent levels. S
|
||||
ASSERT(height <= z)
|
||||
// Due to the offsets of how connections are stored v.s. how z-levels are indexed, some magic number silliness happened.
|
||||
for(var/i = (z - height) to (z - 2))
|
||||
z_levels |= (1 << i)
|
||||
SSatlas.z_levels |= (1 << i)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/map_data/Destroy()
|
||||
@@ -26,9 +25,13 @@ var/z_levels = 0 // Each bit represents a connection between adjacent levels. S
|
||||
|
||||
// Thankfully, no bitwise magic is needed here.
|
||||
/proc/GetAbove(atom/A)
|
||||
if (!A.z)
|
||||
A = get_turf(A)
|
||||
return A ? GET_ABOVE(A) : null
|
||||
|
||||
/proc/GetBelow(atom/A)
|
||||
if (!A.z)
|
||||
A = get_turf(A)
|
||||
return A ? GET_BELOW(A) : null
|
||||
|
||||
/proc/GetConnectedZlevels(z)
|
||||
@@ -57,7 +60,11 @@ var/z_levels = 0 // Each bit represents a connection between adjacent levels. S
|
||||
|
||||
return new_entry[zB]
|
||||
|
||||
/proc/get_zstep(ref, dir)
|
||||
/proc/get_zstep(atom/ref, dir)
|
||||
if (!isloc(ref))
|
||||
CRASH("Expected atom.")
|
||||
if (!ref.z)
|
||||
ref = get_turf(ref)
|
||||
switch (dir)
|
||||
if (UP)
|
||||
. = GET_ABOVE(ref)
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
transplant_data["blood_DNA"] = transplant_blood.data["blood_DNA"]
|
||||
|
||||
owner = target
|
||||
loc = owner
|
||||
src.forceMove(owner)
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
target.internal_organs |= src
|
||||
affected.internal_organs |= src
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/obj/item/ammo_magazine/ammo_magazine
|
||||
var/magazine_type = /obj/item/ammo_magazine/minigun
|
||||
|
||||
/obj/item/minigunpack/update_icon(var/mob/user)
|
||||
/obj/item/minigunpack/update_icon()
|
||||
..()
|
||||
if(armed)
|
||||
icon_state = "notholstered"
|
||||
@@ -23,7 +23,6 @@
|
||||
else
|
||||
icon_state = "holstered"
|
||||
item_state = "holstered"
|
||||
user.update_inv_back()
|
||||
|
||||
/obj/item/minigunpack/Initialize()
|
||||
. = ..()
|
||||
@@ -72,12 +71,14 @@
|
||||
return
|
||||
|
||||
armed = TRUE
|
||||
update_icon(user)
|
||||
update_icon()
|
||||
user.update_inv_back()
|
||||
|
||||
/obj/item/minigunpack/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot != slot_back)
|
||||
remove_gun()
|
||||
user.update_inv_back()
|
||||
|
||||
/obj/item/minigunpack/proc/remove_gun()
|
||||
if(!gun)
|
||||
@@ -85,7 +86,7 @@
|
||||
if(ismob(gun.loc))
|
||||
var/mob/M = gun.loc
|
||||
if(M.drop_from_inventory(gun, src))
|
||||
update_icon(M)
|
||||
update_icon()
|
||||
else
|
||||
gun.forceMove(src)
|
||||
update_icon()
|
||||
@@ -160,7 +161,8 @@
|
||||
if(source)
|
||||
to_chat(user, "<span class='notice'>\The [src] snaps back onto \the [source].</span>")
|
||||
addtimer(CALLBACK(source, /obj/item/minigunpack/.proc/remove_gun), 0)
|
||||
source.update_icon(user)
|
||||
source.update_icon()
|
||||
user.update_inv_back()
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/rifle/minigun/Move()
|
||||
..()
|
||||
|
||||
@@ -442,28 +442,28 @@
|
||||
//Frames
|
||||
/datum/design/item/weapon/ka_frame01
|
||||
id = "ka_frame01"
|
||||
req_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2)
|
||||
req_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000)
|
||||
build_path = /obj/item/weapon/gun/custom_ka/frame01
|
||||
sort_string = "TZZFA"
|
||||
|
||||
/datum/design/item/weapon/ka_frame02
|
||||
id = "ka_frame02"
|
||||
req_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "silver" = 1000)
|
||||
req_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000)
|
||||
build_path = /obj/item/weapon/gun/custom_ka/frame02
|
||||
sort_string = "TZZFB"
|
||||
|
||||
/datum/design/item/weapon/ka_frame03
|
||||
id = "ka_frame03"
|
||||
req_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4)
|
||||
req_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "silver" = 2000)
|
||||
build_path = /obj/item/weapon/gun/custom_ka/frame03
|
||||
sort_string = "TZZFC"
|
||||
|
||||
/datum/design/item/weapon/ka_frame04
|
||||
id = "ka_frame04"
|
||||
req_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5)
|
||||
req_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "silver" = 2000, "diamond" = 1000)
|
||||
build_path = /obj/item/weapon/gun/custom_ka/frame04
|
||||
sort_string = "TZZFD"
|
||||
@@ -478,35 +478,35 @@
|
||||
//Cells
|
||||
/datum/design/item/weapon/ka_cell01
|
||||
id = "ka_cell01"
|
||||
req_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2,TECH_MAGNET = 2,TECH_POWER = 2)
|
||||
req_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 1,TECH_POWER = 1)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/cells/cell01
|
||||
sort_string = "TZZGA"
|
||||
|
||||
/datum/design/item/weapon/ka_cell02
|
||||
id = "ka_cell02"
|
||||
req_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3,TECH_MAGNET = 3,TECH_POWER = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 1000)
|
||||
req_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 1,TECH_MAGNET = 1,TECH_POWER = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/cells/cell02
|
||||
sort_string = "TZZGB"
|
||||
|
||||
/datum/design/item/weapon/ka_cell03
|
||||
id = "ka_cell03"
|
||||
req_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4,TECH_MAGNET = 4,TECH_POWER = 4)
|
||||
req_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 3,TECH_MAGNET = 2,TECH_POWER = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 3000, "silver" = 3000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/cells/cell03
|
||||
sort_string = "TZZGC"
|
||||
|
||||
/datum/design/item/weapon/ka_cell04
|
||||
id = "ka_cell04"
|
||||
req_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5,TECH_MAGNET = 5,TECH_POWER = 5)
|
||||
req_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 4,TECH_MAGNET = 3,TECH_POWER = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 3000, "silver" = 3000, "gold" = 1000, "uranium" = 5000)
|
||||
build_path = /obj/item/custom_ka_upgrade/cells/cell04
|
||||
sort_string = "TZZGD"
|
||||
|
||||
/datum/design/item/weapon/ka_cell05
|
||||
id = "ka_cell05"
|
||||
req_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 6,TECH_MAGNET = 6,TECH_POWER = 6)
|
||||
req_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 6,TECH_MAGNET = 5,TECH_POWER = 5, TECH_PHORON = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 3000, "silver" = 3000, "gold" = 1000, "phoron" = 5000)
|
||||
build_path = /obj/item/custom_ka_upgrade/cells/cell05
|
||||
sort_string = "TZZGE"
|
||||
@@ -514,35 +514,35 @@
|
||||
//Barrels
|
||||
/datum/design/item/weapon/ka_barrel01
|
||||
id = "ka_barrel01"
|
||||
req_tech = list(TECH_MATERIAL = 2,TECH_ENGINEERING = 2,TECH_MAGNET = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "gold" = 1000, "phoron" = 500)
|
||||
req_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 1, TECH_PHORON = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "phoron" = 500)
|
||||
build_path = /obj/item/custom_ka_upgrade/barrels/barrel01
|
||||
sort_string = "TZZHA"
|
||||
|
||||
/datum/design/item/weapon/ka_barrel02
|
||||
id = "ka_barrel02"
|
||||
req_tech = list(TECH_MATERIAL = 3,TECH_ENGINEERING = 3,TECH_MAGNET = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "gold" = 1000, "phoron" = 500)
|
||||
req_tech = list(TECH_MATERIAL = 1,TECH_ENGINEERING = 1,TECH_MAGNET = 3, TECH_PHORON = 2)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 2000, "phoron" = 500)
|
||||
build_path = /obj/item/custom_ka_upgrade/barrels/barrel02
|
||||
sort_string = "TZZHB"
|
||||
|
||||
/datum/design/item/weapon/ka_barrel03
|
||||
id = "ka_barrel03"
|
||||
req_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 4,TECH_MAGNET = 4)
|
||||
req_tech = list(TECH_MATERIAL = 4,TECH_ENGINEERING = 3,TECH_MAGNET = 3, TECH_PHORON = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "gold" = 2000, "phoron" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/barrels/barrel03
|
||||
sort_string = "TZZHC"
|
||||
|
||||
/datum/design/item/weapon/ka_barrel04
|
||||
id = "ka_barrel04"
|
||||
req_tech = list(TECH_MATERIAL = 5,TECH_ENGINEERING = 5,TECH_MAGNET = 5)
|
||||
req_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 3,TECH_MAGNET = 5, TECH_PHORON = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 3000, "gold" = 3000, "phoron" = 3000, "diamond" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/barrels/barrel04
|
||||
sort_string = "TZZHD"
|
||||
|
||||
/datum/design/item/weapon/ka_barrel05
|
||||
id = "ka_barrel05"
|
||||
req_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 6,TECH_MAGNET = 6)
|
||||
req_tech = list(TECH_MATERIAL = 6,TECH_ENGINEERING = 5,TECH_MAGNET = 6, TECH_PHORON = 5)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 4000, "gold" = 4000, "phoron" = 4000, "diamond" = 2000)
|
||||
build_path = /obj/item/custom_ka_upgrade/barrels/barrel05
|
||||
sort_string = "TZZHE"
|
||||
@@ -551,48 +551,48 @@
|
||||
/datum/design/item/weapon/ka_upgrade01
|
||||
id = "ka_upgrade01"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/damage
|
||||
sort_string = "TZZIA"
|
||||
|
||||
/datum/design/item/weapon/ka_upgrade02
|
||||
id = "ka_upgrade02"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/firerate
|
||||
sort_string = "TZZIB"
|
||||
|
||||
/datum/design/item/weapon/ka_upgrade03
|
||||
id = "ka_upgrade03"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/effeciency
|
||||
sort_string = "TZZIC"
|
||||
|
||||
/datum/design/item/weapon/ka_upgrade04
|
||||
id = "ka_upgrade04"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/recoil
|
||||
sort_string = "TZZID"
|
||||
|
||||
/datum/design/item/weapon/ka_upgrade05
|
||||
id = "ka_upgrade05"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/focusing
|
||||
sort_string = "TZZIE"
|
||||
|
||||
/datum/design/item/weapon/ka_upgrade06
|
||||
id = "ka_upgrade06"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/capacity
|
||||
sort_string = "TZZIF"
|
||||
|
||||
/datum/design/item/weapon/ka_upgrade07
|
||||
id = "ka_upgrade07"
|
||||
req_tech = list(TECH_POWER = 4,TECH_MAGNET = 4, TECH_DATA = 4)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000, "diamond" = 1000)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 2000, "gold" = 1000)
|
||||
build_path = /obj/item/custom_ka_upgrade/upgrade_chips/explosive
|
||||
sort_string = "TZZIF"
|
||||
@@ -13,6 +13,9 @@
|
||||
verbs -= /obj/structure/table/verb/do_flip
|
||||
verbs -= /obj/structure/table/proc/do_put
|
||||
|
||||
/obj/structure/table/rack/remove_material(obj/item/weapon/wrench/W, mob/user)
|
||||
src.dismantle(W, user)
|
||||
|
||||
/obj/structure/table/rack/update_connections()
|
||||
return
|
||||
|
||||
|
||||
@@ -56,6 +56,47 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">27 June 2018</h2>
|
||||
<h3 class="author">Arrow768 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="maptweak">Various plaques have been placed around the station to memorize the odin murders.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">26 June 2018</h2>
|
||||
<h3 class="author">Lohikar updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">RIG actuator Z-climbing now actually works. Probably.</li>
|
||||
</ul>
|
||||
<h3 class="author">PoZe updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixed commanded mobs. They will no longer attack people they follow, destroy things around them.</li>
|
||||
<li class="tweak">Commanded mobs will not attack their master even if they are being attacked by their own master.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">24 June 2018</h2>
|
||||
<h3 class="author">PoZe updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Airbubble comes now with fully filled engineering extended airtank(6 liters max). Instead of double emergency airtank(10 liters max). It lasts around the same time, even slightly longer(40 minutes).</li>
|
||||
<li class="tweak">Airbubble now gets ripped and leaks after being shot with projectile weapons.</li>
|
||||
<li class="bugfix">Airbubbles no longer produces infinite cable restrains.</li>
|
||||
<li class="bugfix">Users of airbubble can no longer 'magically' get out of bubble with it still remaining closed.</li>
|
||||
<li class="tweak">No longer it takes time to get in and out of Airbubble.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">22 June 2018</h2>
|
||||
<h3 class="author">Arrow768 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">The drone console now lists drones on different station levels.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">20 June 2018</h2>
|
||||
<h3 class="author">BurgerBB updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Readds disposal spread in disposals. Re-fixes the scrubber vent in the warehouse mail room.</li>
|
||||
<li class="maptweak">Adds holopads to missing areas without holopads.</li>
|
||||
<li class="bugfix">Fixed hull shields not covering departures properly.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">18 June 2018</h2>
|
||||
<h3 class="author">Alberyk updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -77,6 +118,10 @@
|
||||
<li class="rscadd">Gave wrenches to mining drones and mining cyborgs, so synthetics can tinker with custom KAs.</li>
|
||||
<li class="maptweak">Improved the shuttle and docks design.</li>
|
||||
<li class="bugfix">Users will now be automatically threatened with a day ban if they mention the phrase 'Organ Damage'.</li>
|
||||
<li class="bugfix">Fixed library books spawning outside of shelves.</li>
|
||||
<li class="bugfix">Fixed kinetic accelerators displaying an error when equipped on the waist.</li>
|
||||
<li class="balance">Balances kinetic accelerator research to prevent easy research exploit. Balances traitor kinetic accelerator to be less powerful.</li>
|
||||
<li class="maptweak">Tweaked the new library to be more aesthetically pleasing. Removed empty mediwall from the command section of the shuttle. Removed floating light near departures and on the shuttle. Removed pointless holopad on the evac shuttle.</li>
|
||||
</ul>
|
||||
<h3 class="author">Code - PoZe, Sprites - DronzTheWolf updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -114,6 +159,9 @@
|
||||
<li class="tweak">IPCs can not be convertable to cult.</li>
|
||||
<li class="balance">IPCs can no longer draw runes, since they have no blood. They still can use talismans</li>
|
||||
<li class="tweak">Cultist IPCs are immune to cultist EMP from runes or talismans.</li>
|
||||
<li class="bugfix">Fixed Journalist Office missing power cables.</li>
|
||||
<li class="maptweak">Journalist Office is now connected to the bridge subgrid, instead of main grid.</li>
|
||||
<li class="maptweak">Shuttle wall structures that are on the corners have been moved one tile in different directions, so that it looks good.</li>
|
||||
</ul>
|
||||
<h3 class="author">Scheveningen updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -121,6 +169,10 @@
|
||||
<li class="rscdel">Direct flashes no longer stun those who are -not- sentient trees, robots, or bugpeople.</li>
|
||||
<li class="tweak">Changed how flash break mechanics work. Crappy budget NT tech is more likely to break from overuse.</li>
|
||||
</ul>
|
||||
<h3 class="author">ben10083 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="maptweak">Following multiple security breaches and thefts from the vault, NanoTrasen has increased security in the main vault.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">16 June 2018</h2>
|
||||
<h3 class="author">Arrow768 updated:</h3>
|
||||
|
||||
@@ -5561,6 +5561,13 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- maptweak: Improved the shuttle and docks design.
|
||||
- bugfix: Users will now be automatically threatened with a day ban if they mention
|
||||
the phrase 'Organ Damage'.
|
||||
- bugfix: Fixed library books spawning outside of shelves.
|
||||
- bugfix: Fixed kinetic accelerators displaying an error when equipped on the waist.
|
||||
- balance: Balances kinetic accelerator research to prevent easy research exploit.
|
||||
Balances traitor kinetic accelerator to be less powerful.
|
||||
- maptweak: Tweaked the new library to be more aesthetically pleasing. Removed empty
|
||||
mediwall from the command section of the shuttle. Removed floating light near
|
||||
departures and on the shuttle. Removed pointless holopad on the evac shuttle.
|
||||
Code - PoZe, Sprites - DronzTheWolf:
|
||||
- rscadd: Adds airbubble(oxyball) into the game. It is used to protect user inside
|
||||
from decompressed environment for 30 minutes. Has an air tank attached to it
|
||||
@@ -5604,9 +5611,48 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- balance: IPCs can no longer draw runes, since they have no blood. They still can
|
||||
use talismans
|
||||
- tweak: Cultist IPCs are immune to cultist EMP from runes or talismans.
|
||||
- bugfix: Fixed Journalist Office missing power cables.
|
||||
- maptweak: Journalist Office is now connected to the bridge subgrid, instead of
|
||||
main grid.
|
||||
- maptweak: Shuttle wall structures that are on the corners have been moved one
|
||||
tile in different directions, so that it looks good.
|
||||
Scheveningen:
|
||||
- balance: Blinding sources are significantly increased in duration.
|
||||
- rscdel: Direct flashes no longer stun those who are -not- sentient trees, robots,
|
||||
or bugpeople.
|
||||
- tweak: Changed how flash break mechanics work. Crappy budget NT tech is more likely
|
||||
to break from overuse.
|
||||
ben10083:
|
||||
- maptweak: Following multiple security breaches and thefts from the vault, NanoTrasen
|
||||
has increased security in the main vault.
|
||||
2018-06-20:
|
||||
BurgerBB:
|
||||
- bugfix: Readds disposal spread in disposals. Re-fixes the scrubber vent in the
|
||||
warehouse mail room.
|
||||
- maptweak: Adds holopads to missing areas without holopads.
|
||||
- bugfix: Fixed hull shields not covering departures properly.
|
||||
2018-06-22:
|
||||
Arrow768:
|
||||
- bugfix: The drone console now lists drones on different station levels.
|
||||
2018-06-24:
|
||||
PoZe:
|
||||
- tweak: Airbubble comes now with fully filled engineering extended airtank(6 liters
|
||||
max). Instead of double emergency airtank(10 liters max). It lasts around the
|
||||
same time, even slightly longer(40 minutes).
|
||||
- tweak: Airbubble now gets ripped and leaks after being shot with projectile weapons.
|
||||
- bugfix: Airbubbles no longer produces infinite cable restrains.
|
||||
- bugfix: Users of airbubble can no longer 'magically' get out of bubble with it
|
||||
still remaining closed.
|
||||
- tweak: No longer it takes time to get in and out of Airbubble.
|
||||
2018-06-26:
|
||||
Lohikar:
|
||||
- bugfix: RIG actuator Z-climbing now actually works. Probably.
|
||||
PoZe:
|
||||
- bugfix: Fixed commanded mobs. They will no longer attack people they follow, destroy
|
||||
things around them.
|
||||
- tweak: Commanded mobs will not attack their master even if they are being attacked
|
||||
by their own master.
|
||||
2018-06-27:
|
||||
Arrow768:
|
||||
- maptweak: Various plaques have been placed around the station to memorize the
|
||||
odin murders.
|
||||
|
||||
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 5.5 KiB |
@@ -14356,6 +14356,7 @@
|
||||
/obj/machinery/status_display{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/turf/simulated/shuttle/floor{
|
||||
icon_state = "floor3"
|
||||
},
|
||||
@@ -15315,6 +15316,7 @@
|
||||
/obj/machinery/status_display{
|
||||
pixel_y = -32
|
||||
},
|
||||
/obj/machinery/light,
|
||||
/turf/simulated/shuttle/floor{
|
||||
icon_state = "floor3"
|
||||
},
|
||||
@@ -22389,6 +22391,22 @@
|
||||
icon_state = "wood_siding1"
|
||||
},
|
||||
/area/centcom/spawning)
|
||||
"Xp" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/obj/structure/closet/medical_wall{
|
||||
pixel_x = -32
|
||||
},
|
||||
/turf/simulated/floor/tiled/ramp,
|
||||
/area/shuttle/escape/centcom)
|
||||
"Xq" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4;
|
||||
status = 2
|
||||
},
|
||||
/turf/simulated/floor/tiled/ramp,
|
||||
/area/shuttle/escape/centcom)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -64458,7 +64476,7 @@ CG
|
||||
CQ
|
||||
VC
|
||||
Fu
|
||||
Ga
|
||||
GQ
|
||||
CP
|
||||
CP
|
||||
OX
|
||||
@@ -64716,8 +64734,8 @@ CQ
|
||||
Fn
|
||||
Fz
|
||||
GN
|
||||
HL
|
||||
GO
|
||||
GQ
|
||||
Xp
|
||||
VH
|
||||
CP
|
||||
VQ
|
||||
@@ -65751,7 +65769,7 @@ VE
|
||||
Ds
|
||||
Ds
|
||||
Ds
|
||||
DA
|
||||
Ds
|
||||
Ds
|
||||
Ds
|
||||
Ds
|
||||
@@ -66001,8 +66019,8 @@ CQ
|
||||
Ft
|
||||
FO
|
||||
Ig
|
||||
Ma
|
||||
GO
|
||||
GQ
|
||||
Xq
|
||||
VH
|
||||
CP
|
||||
Ds
|
||||
@@ -66257,7 +66275,7 @@ CG
|
||||
CQ
|
||||
DK
|
||||
VF
|
||||
Ga
|
||||
GQ
|
||||
CP
|
||||
CP
|
||||
CP
|
||||
|
||||
@@ -2516,7 +2516,7 @@
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/mine/explored)
|
||||
/area/hallway/secondary/exit)
|
||||
"eK" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
@@ -2528,13 +2528,18 @@
|
||||
/area/hallway/secondary/exit)
|
||||
"eL" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/door/firedoor{
|
||||
dir = 2
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/window/reinforced{
|
||||
icon_state = "rwindow";
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/mine/explored)
|
||||
/area/hallway/secondary/exit)
|
||||
"eM" = (
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||
dir = 4
|
||||
@@ -2752,18 +2757,16 @@
|
||||
/area/hallway/secondary/exit)
|
||||
"fg" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/door/firedoor{
|
||||
dir = 2
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
icon_state = "rwindow";
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/mine/explored)
|
||||
/area/hallway/secondary/exit)
|
||||
"fh" = (
|
||||
/obj/machinery/airlock_sensor{
|
||||
frequency = 1380;
|
||||
@@ -5754,9 +5757,6 @@
|
||||
"ks" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/universal,
|
||||
/obj/effect/floor_decal/industrial/warning/cee,
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/hallway/secondary/exit)
|
||||
"kt" = (
|
||||
@@ -19308,30 +19308,15 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/secondary/exit)
|
||||
"JH" = (
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/door/firedoor{
|
||||
dir = 2
|
||||
},
|
||||
/obj/structure/window/reinforced{
|
||||
icon_state = "rwindow";
|
||||
dir = 4
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/mine/explored)
|
||||
"JI" = (
|
||||
/obj/machinery/alarm{
|
||||
dir = 4;
|
||||
icon_state = "alarm0";
|
||||
pixel_x = -22;
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/effect/floor_decal/corner/red{
|
||||
icon_state = "corner_white";
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/secondary/exit)
|
||||
"JJ" = (
|
||||
@@ -19401,6 +19386,29 @@
|
||||
/obj/machinery/space_heater,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/secondary/exit)
|
||||
"JQ" = (
|
||||
/obj/effect/floor_decal/corner/red/full,
|
||||
/obj/machinery/alarm{
|
||||
dir = 4;
|
||||
icon_state = "alarm0";
|
||||
pixel_x = -22;
|
||||
pixel_y = 0
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/secondary/exit)
|
||||
"NI" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
|
||||
/obj/structure/cable/green{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/effect/floor_decal/plaque{
|
||||
desc = "Harley O'Ryan Memorial Hall<br>O'Ryan is memorialized here as the first victim of the Odin Killer. She was always in a good mood. She was brought down before her time. <br>August 2439 - May 2460"
|
||||
},
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/hallway/secondary/entry/fore)
|
||||
|
||||
(1,1,1) = {"
|
||||
aa
|
||||
@@ -46000,7 +46008,7 @@ jq
|
||||
pZ
|
||||
kP
|
||||
qv
|
||||
kP
|
||||
NI
|
||||
qO
|
||||
kP
|
||||
rd
|
||||
@@ -47766,7 +47774,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
ab
|
||||
eI
|
||||
fT
|
||||
jU
|
||||
kY
|
||||
@@ -48035,7 +48043,7 @@ jx
|
||||
kr
|
||||
Jf
|
||||
lB
|
||||
kZ
|
||||
JQ
|
||||
lb
|
||||
Jz
|
||||
Jz
|
||||
@@ -48280,7 +48288,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
eL
|
||||
eK
|
||||
fR
|
||||
JA
|
||||
hC
|
||||
@@ -48296,7 +48304,7 @@ la
|
||||
lx
|
||||
JA
|
||||
kZ
|
||||
eL
|
||||
eK
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -48537,7 +48545,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
eL
|
||||
eK
|
||||
fU
|
||||
gD
|
||||
iW
|
||||
@@ -48553,7 +48561,7 @@ ja
|
||||
lw
|
||||
Jr
|
||||
JK
|
||||
eL
|
||||
eK
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -48794,7 +48802,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
eL
|
||||
eK
|
||||
gB
|
||||
gG
|
||||
iY
|
||||
@@ -48810,7 +48818,7 @@ lz
|
||||
Ju
|
||||
Jy
|
||||
JL
|
||||
eL
|
||||
eK
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -49051,7 +49059,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
eL
|
||||
eK
|
||||
fU
|
||||
kw
|
||||
kq
|
||||
@@ -49067,7 +49075,7 @@ iZ
|
||||
Jv
|
||||
kw
|
||||
JM
|
||||
eL
|
||||
eK
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -49308,7 +49316,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
eL
|
||||
eK
|
||||
fU
|
||||
kw
|
||||
Jp
|
||||
@@ -49324,7 +49332,7 @@ ja
|
||||
JE
|
||||
kw
|
||||
JM
|
||||
eL
|
||||
eK
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -49565,7 +49573,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
eL
|
||||
eK
|
||||
Jh
|
||||
JF
|
||||
hA
|
||||
@@ -49581,7 +49589,7 @@ JC
|
||||
Js
|
||||
JJ
|
||||
JN
|
||||
eL
|
||||
eK
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -49822,7 +49830,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
fg
|
||||
eL
|
||||
is
|
||||
gA
|
||||
kt
|
||||
@@ -49838,7 +49846,7 @@ jX
|
||||
Jw
|
||||
Jx
|
||||
is
|
||||
JH
|
||||
fg
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
full_name = "Runtime Debugging Station"
|
||||
path = "runtime"
|
||||
|
||||
station_levels = list(1)
|
||||
station_levels = list(1, 2, 3)
|
||||
admin_levels = list()
|
||||
contact_levels = list(1)
|
||||
player_levels = list(1)
|
||||
accessible_z_levels = list()
|
||||
contact_levels = list(1, 2, 3)
|
||||
player_levels = list(1, 2, 3)
|
||||
accessible_z_levels = list(1, 2, 3)
|
||||
|
||||
station_name = "NSS Runtime"
|
||||
station_short = "Runtime"
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/effect/landmark/map_data{
|
||||
height = 2
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
"b" = (
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/obj/effect/landmark/map_data{
|
||||
height = 2
|
||||
height = 3
|
||||
},
|
||||
/turf/template_noop,
|
||||
/area/template_noop)
|
||||
|
||||