diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index 520c192db97..d4e78501639 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -153,6 +153,16 @@ structure_check() searches for nearby cultist structures required for the invoca
L.changeNext_move(CLICK_CD_MELEE)//THIS IS WHY WE CAN'T HAVE NICE THINGS
do_invoke_glow()
+/obj/effect/rune/proc/burn_invokers(var/list/mobstoburn)
+ for(var/M in mobstoburn)
+ var/mob/living/L = M
+ to_chat(L, "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"")
+ if(L.reagents)
+ L.reagents.add_reagent("hell_water", 10)
+ L.Weaken(7)
+ L.Stun(7)
+ fail_invoke()
+
/obj/effect/rune/proc/do_invoke_glow()
var/oldtransform = transform
spawn(0) //animate is a delay, we want to avoid being delayed
@@ -476,16 +486,13 @@ var/list/teleport_runes = list()
return
var/mob/living/user = invokers[1]
var/datum/game_mode/cult/cult_mode = ticker.mode
+ if(!(CULT_ELDERGOD in cult_mode.objectives))
+ message_admins("[key_name_admin(user)] tried to summonn an eldritch horror when the objective was wrong")
+ burn_invokers(invokers)
+ log_game("Summon Nar-Sie rune failed - improper objective")
if(!is_station_level(user.z))
message_admins("[key_name_admin(user)] tried to summon an eldritch horror off station")
- for(var/M in invokers)
- var/mob/living/L = M
- to_chat(L, "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"")
- if(L.reagents)
- L.reagents.add_reagent("hell_water", 10)
- L.Weaken(7)
- L.Stun(7)
- fail_invoke()
+ burn_invokers(invokers)
log_game("Summon Nar-Sie rune failed - off station Z level")
return
if(!cult_mode.eldergod)
@@ -566,26 +573,12 @@ var/list/teleport_runes = list()
var/datum/game_mode/cult/cult_mode = ticker.mode
if(!(CULT_SLAUGHTER in cult_mode.objectives))
message_admins("[usr.real_name]([user.ckey]) tried to summon demons when the objective was wrong")
- for(var/M in invokers)
- var/mob/living/L = M
- to_chat(L, "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"")
- if(L.reagents)
- L.reagents.add_reagent("hell_water", 10)
- L.Weaken(7)
- L.Stun(7)
- fail_invoke()
+ burn_invokers(invokers)
log_game("Summon Demons rune failed - improper objective")
return
if(!is_station_level(user.z))
message_admins("[user.real_name]([user.ckey]) tried to summon demons off station")
- for(var/M in invokers)
- var/mob/living/L = M
- to_chat(L, "\"YOUR SOUL BURNS WITH YOUR ARROGANCE!!!\"")
- if(L.reagents)
- L.reagents.add_reagent("hell_water", 10)
- L.Weaken(7)
- L.Stun(7)
- fail_invoke()
+ burn_invokers(invokers)
log_game("Summon demons rune failed - off station Z level")
return
if(cult_mode.demons_summoned)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 1634ebdc4a0..2a11b4a8836 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -369,7 +369,7 @@ What a mess.*/
var/counter = 1
while(active2.fields[text("com_[]", counter)])
counter++
- active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], 2557
[t1]")
+ active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [worldtime2text()]
[t1]")
if("Delete Record (ALL)")
if(active1)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 020ae026e54..6e155779aa5 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -833,6 +833,8 @@
/obj/mecha/proc/attacked_by(obj/item/I, mob/user)
log_message("Attacked by [I]. Attacker - [user]")
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
var/deflection = deflect_chance
var/dam_coeff = 1
for(var/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster/B in equipment)
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 07c7e54bb3c..3cc0f9b6023 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -53,7 +53,7 @@
By submitting this form, you accept any fines, fees, or personal injury/death that may occur during construction."
w_class = 1
-/obj/item/areaeditor/permit/attack_self(mob/user as mob)
+/obj/item/areaeditor/permit/attack_self(mob/user)
. = ..()
var/area/A = get_area()
if(get_area_type() == AREA_STATION)
@@ -85,7 +85,7 @@
return ..()
-/obj/item/areaeditor/blueprints/attack_self(mob/user as mob)
+/obj/item/areaeditor/blueprints/attack_self(mob/user)
. = ..()
var/area/A = get_area()
if(get_area_type() == AREA_STATION)
@@ -305,3 +305,10 @@
return ROOM_ERR_SPACE
found+=T
return found
+
+//Blueprint Subtypes
+
+/obj/item/areaeditor/blueprints/cyborg
+ name = "station schematics"
+ desc = "A digital copy of the station blueprints stored in your memory."
+ fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from the station."
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 478ecba8f0e..e213c555c43 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -16,6 +16,7 @@
var/cutting_sound = 'sound/items/Welder.ogg'
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate then open it in a populated area to crash clients.
var/material_drop = /obj/item/stack/sheet/metal
+ var/material_drop_amount = 2
/obj/structure/closet/New()
..()
@@ -256,7 +257,7 @@
"You cut \the [src] apart with \the [WT].",
"You hear welding.")
var/turf/T = get_turf(src)
- new material_drop(T)
+ new material_drop(T, material_drop_amount)
qdel(src)
return
if(isrobot(user))
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 39f73310566..152ed03fec8 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -204,7 +204,7 @@
modules += new /obj/item/weapon/gripper(src)
modules += new /obj/item/weapon/matter_decompiler(src)
modules += new /obj/item/device/floor_painter(src)
-
+ modules += new /obj/item/areaeditor/blueprints/cyborg(src)
emag = new /obj/item/borg/stun(src)
for(var/G in stacktypes) //Attempt to unify Engi-Borg material stacks into fewer lines. See Line 492 for example. Variables changed out of paranoia.
diff --git a/html/changelog.html b/html/changelog.html
index aff225745b3..69e14852b52 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,20 @@
-->