diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm
index 5b26067725..4a5993047f 100644
--- a/code/_onclick/click.dm
+++ b/code/_onclick/click.dm
@@ -325,6 +325,8 @@
/mob/living/carbon/human/CtrlClick(mob/user)
if(ishuman(user) && Adjacent(user))
+ if(world.time < user.next_move)
+ return
var/mob/living/carbon/human/H = user
H.dna.species.grab(H, src, H.mind.martial_art)
H.changeNext_move(CLICK_CD_MELEE)
@@ -465,4 +467,4 @@
view = -1
else
view = 1
- add_view_range(view)
\ No newline at end of file
+ add_view_range(view)
diff --git a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm b/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm
index f909215711..d90111a7bf 100644
--- a/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm
+++ b/code/game/gamemodes/clock_cult/clock_helpers/slab_abilities.dm
@@ -162,22 +162,9 @@
successful = TRUE
ranged_ability_user.visible_message("[ranged_ability_user] fires a ray of energy at [target]!", "You fire a volt ray at [target].")
playsound(ranged_ability_user, 'sound/effects/light_flicker.ogg', 50, 1)
- var/turf/targetturf = get_turf(target)
- var/obj/structure/destructible/clockwork/powered/volt_checker/VC = new/obj/structure/destructible/clockwork/powered/volt_checker(get_turf(ranged_ability_user))
- var/multiplier = 1
- var/usable_power = min(Floor(VC.total_accessable_power() * 0.2, MIN_CLOCKCULT_POWER), 1000)
- if(VC.try_use_power(usable_power))
- multiplier += (usable_power * 0.001) //should be a multiplier of 2 at maximum power usage
- if(iscyborg(ranged_ability_user))
- var/mob/living/silicon/robot/C = ranged_ability_user
- if(C.cell)
- var/prev_power = usable_power //we don't want to increase the multiplier past 2
- usable_power = min(Floor(C.cell.charge * 0.2, MIN_CLOCKCULT_POWER), 1000) - prev_power
- if(usable_power > 0 && C.cell.use(usable_power))
- multiplier += (usable_power * 0.001)
- qdel(VC)
- new/obj/effect/temp_visual/ratvar/volt_hit/true(targetturf, ranged_ability_user, multiplier)
- add_logs(ranged_ability_user, targetturf, "fired a volt ray")
+ T = get_turf(target)
+ new/obj/effect/temp_visual/ratvar/volt_hit(T, ranged_ability_user)
+ add_logs(ranged_ability_user, T, "fired a volt ray")
remove_ranged_ability()
return TRUE
diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm.rej b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm.rej
index 013142ec2a..e69de29bb2 100644
--- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm.rej
+++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm.rej
@@ -1,13 +0,0 @@
-diff a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm (rejected hunks)
-@@ -539,9 +539,9 @@
- effects and are often crucial. The most noteworthy are clockwork walls, which automatically \"link\" to any nearby Tinkerer's Caches, causing them to slowly \
- generate components. This is incredibly useful for obvious reasons, and creating a clockwork wall near every Tinkerer's Cache should be prioritized. Clockwork floors \
- will slowly heal any toxin damage suffered by Servants standing on them, and clockwork airlocks can only be opened by Servants.
"
-- dat += "The replica fabricator itself is also worth nothing. In addition to converting objects, it can also create brass sheets at the cost of power by using the \
-+ dat += "The replica fabricator itself is also worth noting. In addition to replacing objects, it can also create brass sheets at the cost of power by using the \
- fabricator in-hand. It can also be used to repair any damaged clockwork structures.
"
-- dat += "Converting objects is almost as, if not as important as, converting new Servants. A base is impossible to manage without clockwork walls at the very least, and \
-+ dat += "Replacing objects is almost as, if not as important as, converting new Servants. A base is impossible to manage without clockwork walls at the very least, and \
- once the cult has been outed and the crew are actively searching, there is little reason not to use as many as possible.
"
- dat += "-=-=-=-=-=-"
- else
diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm
index db5260a8a0..2989857f0d 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_cyborg.dm
@@ -44,9 +44,3 @@
Left-click a target to place a Judicial Marker!\n\
Click your slab to cancel."
timeout_time = 50
-
-//Volt Void, but with a different quickbind desc
-/datum/clockwork_scripture/channeled/volt_void/cyborg
- quickbind_desc = "Allows you to fire energy rays at target locations using your own power. Failing to fire causes backlash.
Maximum 4 chants."
- tier = SCRIPTURE_PERIPHERAL
- quickbind = FALSE
diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
index c6eba3e3c9..2c6da828ea 100644
--- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
+++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm
@@ -347,27 +347,27 @@
return slab.procure_gateway(invoker, duration, portal_uses)
-//Volt Void: Channeled for up to five times over ten seconds to fire up to five rays of energy at target locations.
-/datum/clockwork_scripture/channeled/volt_void
+//Volt Blaster: Channeled for up to five times over ten seconds to fire up to five rays of energy at target locations.
+/datum/clockwork_scripture/channeled/volt_blaster
descname = "Channeled, Targeted Energy Blasts"
- name = "Volt Void" //Alternative name: "On all levels but physical, I am a power sink"
- desc = "Allows you to fire energy rays at target locations; more power consumed causes more damage. Channeled every fifth of a second for a maximum of ten seconds."
+ name = "Volt Blaster"
+ desc = "Allows you to fire five energy rays at target locations. Channeled every fourth of a second for a maximum of ten seconds."
channel_time = 30
invocations = list("Amperage...", "...grant me your power!")
chant_invocations = list("Use charge to kill!", "Slay with power!", "Hunt with energy!")
- chant_amount = 4
- chant_interval = 5
+ chant_amount = 5
+ chant_interval = 4
consumed_components = list(GEIS_CAPACITOR = 1, HIEROPHANT_ANSIBLE = 2)
usage_tip = "Though it requires you to stand still, this scripture can do massive damage."
tier = SCRIPTURE_SCRIPT
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 10
quickbind = TRUE
- quickbind_desc = "Allows you to fire energy rays at target locations. Failing to fire causes backlash.
Maximum 4 chants."
+ quickbind_desc = "Allows you to fire energy rays at target locations.
Maximum 5 chants."
var/static/list/nzcrentr_insults = list("You're not very good at aiming.", "You hunt badly.", "What a waste of energy.", "Almost funny to watch.",
"Boss says \"Click something, you idiot!\".", "Stop wasting components if you can't aim.")
-/datum/clockwork_scripture/channeled/volt_void/chant_effects(chant_number)
+/datum/clockwork_scripture/channeled/volt_blaster/chant_effects(chant_number)
slab.busy = null
var/datum/clockwork_scripture/ranged_ability/volt_ray/ray = new
ray.slab = slab
@@ -375,24 +375,6 @@
var/turf/T = get_turf(invoker)
if(!ray.run_scripture() && slab && invoker)
if(can_recite() && T == get_turf(invoker))
- if(!GLOB.ratvar_awakens)
- var/obj/structure/destructible/clockwork/powered/volt_checker/VC = new/obj/structure/destructible/clockwork/powered/volt_checker(get_turf(invoker))
- var/multiplier = 0.5
- var/usable_power = min(Floor(VC.total_accessable_power() * 0.2, MIN_CLOCKCULT_POWER), 1000)
- if(VC.try_use_power(usable_power))
- multiplier += (usable_power * 0.0005) //at maximum power, should be 1 multiplier
- qdel(VC)
- if(iscyborg(invoker))
- var/mob/living/silicon/robot/C = invoker
- if(C.cell)
- var/prev_power = usable_power //we don't want to increase the multiplier past 1
- usable_power = min(Floor(C.cell.charge * 0.2, MIN_CLOCKCULT_POWER), 1000) - prev_power
- if(usable_power > 0 && C.cell.use(usable_power))
- multiplier += (usable_power * 0.0005)
- var/obj/effect/temp_visual/ratvar/volt_hit/VH = new /obj/effect/temp_visual/ratvar/volt_hit(get_turf(invoker), null, multiplier)
- invoker.visible_message("[invoker] is struck by [invoker.p_their()] own [VH.name]!", "You're struck by your own [VH.name]!")
- invoker.adjustFireLoss(VH.damage) //you have to fail all five blasts to die to this
- playsound(invoker, 'sound/machines/defib_zap.ogg', VH.damage, 1, -1)
to_chat(invoker, "\"[text2ratvar(pick(nzcrentr_insults))]\"")
else
return FALSE
@@ -410,6 +392,3 @@
ranged_message = "You charge the clockwork slab with shocking might.\n\
Left-click a target to fire, quickly!"
timeout_time = 20
-
-/obj/structure/destructible/clockwork/powered/volt_checker
- invisibility = INVISIBILITY_ABSTRACT
diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm
index 2f591daf19..ff788ef580 100644
--- a/code/game/objects/effects/temporary_visuals/clockcult.dm
+++ b/code/game/objects/effects/temporary_visuals/clockcult.dm
@@ -81,21 +81,15 @@
/obj/effect/temp_visual/ratvar/volt_hit
name = "volt blast"
layer = ABOVE_MOB_LAYER
- duration = 5
+ duration = 8
icon_state = "volt_hit"
light_range = 1.5
light_power = 2
light_color = LIGHT_COLOR_ORANGE
var/mob/user
- var/damage = 20
+ var/damage = 25
-/obj/effect/temp_visual/ratvar/volt_hit/Initialize(mapload, caster, multiplier)
- if(multiplier)
- damage *= multiplier
- duration = max(round(damage * 0.2), 1)
- . = ..()
-
-/obj/effect/temp_visual/ratvar/volt_hit/true/Initialize(mapload, caster, multiplier)
+/obj/effect/temp_visual/ratvar/volt_hit/Initialize(mapload, caster)
. = ..()
user = caster
if(user)
diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm
index 191da98ea1..aa5c69e079 100644
--- a/code/modules/goonchat/browserOutput.dm
+++ b/code/modules/goonchat/browserOutput.dm
@@ -98,10 +98,10 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
messageQueue = null
sendClientData()
-
+
//do not convert to to_chat()
owner << {"If you can see this, update byond."}
-
+
pingLoop()
/datum/chatOutput/proc/showChat()
@@ -152,7 +152,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
if (found.len > 0)
//TODO: add a new evasion ban for the CURRENT client details, using the matched row details
message_admins("[key_name(src.owner)] has a cookie from a banned account! (Matched: [found["ckey"]], [found["ip"]], [found["compid"]])")
- log_admin("[key_name(src.owner)] has a cookie from a banned account! (Matched: [found["ckey"]], [found["ip"]], [found["compid"]])")
+ log_admin_private("[key_name(owner)] has a cookie from a banned account! (Matched: [found["ckey"]], [found["ip"]], [found["compid"]])")
cookieSent = TRUE
@@ -243,17 +243,17 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic
message = replacetext(message, "\proper", "")
message = replacetext(message, "\n", "
")
message = replacetext(message, "\t", "[GLOB.TAB][GLOB.TAB]")
-
+
for(var/I in targets)
//Grab us a client if possible
var/client/C = grab_client(I)
-
+
if (!C)
continue
-
+
//Send it to the old style output window.
C << original_message
-
+
if(!C.chatOutput || C.chatOutput.broken) // A player who hasn't updated his skin file.
continue
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index 3a38b1818d..96ab93180b 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -847,8 +847,8 @@
/obj/docking_port/mobile/pod/on_emergency_dock()
if(launch_status == ENDGAME_LAUNCHED)
dock(SSshuttle.getDock("[id]_away")) //Escape pods dock at centcomm
- launch_status = SHUTTLE_ENDGAME
-
+ mode = SHUTTLE_ENDGAME
+
/obj/docking_port/mobile/emergency/on_emergency_dock()
return
diff --git a/html/changelogs/AutoChangeLog-pr-1447.yml b/html/changelogs/AutoChangeLog-pr-1447.yml
new file mode 100644
index 0000000000..8b31000e90
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-1447.yml
@@ -0,0 +1,6 @@
+author: "Joan"
+delete-after: True
+changes:
+ - spellcheck: "Renamed Volt Void to Volt Blaster."
+ - tweak: "Volt Blaster does not consume power when firing and does not cause backlash if you don't fire.
+balance: Volt Blaster does 25 damage, from 20-40 depending on power, and has 5 shots, from 4, over its duration."