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."