Merge branch 'master' into upstream-merge-28711
This commit is contained in:
@@ -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)
|
||||
add_view_range(view)
|
||||
|
||||
@@ -162,22 +162,9 @@
|
||||
successful = TRUE
|
||||
ranged_ability_user.visible_message("<span class='warning'>[ranged_ability_user] fires a ray of energy at [target]!</span>", "<span class='nzcrentr'>You fire a volt ray at [target].</span>")
|
||||
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
|
||||
|
||||
@@ -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 <b>clockwork walls,</b> which automatically \"link\" to any nearby Tinkerer's Caches, causing them to <b>slowly \
|
||||
generate components.</b> 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.<br><br>"
|
||||
- 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.<br><br>"
|
||||
- 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.<br><br>"
|
||||
dat += "<font color=#BE8700 size=3>-=-=-=-=-=-</font>"
|
||||
else
|
||||
|
||||
@@ -44,9 +44,3 @@
|
||||
<b>Left-click a target to place a Judicial Marker!\n\
|
||||
Click your slab to cancel.</b></span>"
|
||||
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.<br><b>Maximum 4 chants.</b>"
|
||||
tier = SCRIPTURE_PERIPHERAL
|
||||
quickbind = FALSE
|
||||
|
||||
@@ -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.<br><b>Maximum 4 chants.</b>"
|
||||
quickbind_desc = "Allows you to fire energy rays at target locations.<br><b>Maximum 5 chants.</b>"
|
||||
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 </span><span class='heavy_brass'>\"Click something, you idiot!\"</span><span class='nzcrentr'>.", "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("<span class='warning'>[invoker] is struck by [invoker.p_their()] own [VH.name]!</span>", "<span class='userdanger'>You're struck by your own [VH.name]!</span>")
|
||||
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, "<span class='nzcrentr'>\"[text2ratvar(pick(nzcrentr_insults))]\"</span>")
|
||||
else
|
||||
return FALSE
|
||||
@@ -410,6 +392,3 @@
|
||||
ranged_message = "<span class='nzcrentr_small'><i>You charge the clockwork slab with shocking might.</i>\n\
|
||||
<b>Left-click a target to fire, quickly!</b></span>"
|
||||
timeout_time = 20
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/volt_checker
|
||||
invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 << {"<span class="userdanger">If you can see this, update byond.</span>"}
|
||||
|
||||
|
||||
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", "<br>")
|
||||
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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user