From ab5cffc3605a26381b4cf377360c1bcb2751a157 Mon Sep 17 00:00:00 2001 From: Dan-Neposh Date: Thu, 14 Jan 2021 12:56:55 -0500 Subject: [PATCH] Various edits in order to get this PR out finally --- code/_onclick/hud/clockwork_marauder.dm | 2 +- code/datums/skills/modifiers/job.dm | 3 + .../clockcult/clock_helpers/leader_helpers.dm | 120 ------------------ .../clock_mobs/clockwork_guardian.dm | 5 +- .../antagonists/clockcult/clockcult.dm | 15 +-- .../mob/inhands/antag/clockwork_righthand.dmi | Bin 3311 -> 3283 bytes 6 files changed, 9 insertions(+), 136 deletions(-) delete mode 100644 code/modules/antagonists/clockcult/clock_helpers/leader_helpers.dm diff --git a/code/_onclick/hud/clockwork_marauder.dm b/code/_onclick/hud/clockwork_marauder.dm index b1b24cc58b..fdf4ee2db2 100644 --- a/code/_onclick/hud/clockwork_marauder.dm +++ b/code/_onclick/hud/clockwork_marauder.dm @@ -42,4 +42,4 @@ if(G.is_in_host()) G.try_emerge() else - G.return_to_host() + G.return_to_host() \ No newline at end of file diff --git a/code/datums/skills/modifiers/job.dm b/code/datums/skills/modifiers/job.dm index e989ab11e3..8321ec8213 100644 --- a/code/datums/skills/modifiers/job.dm +++ b/code/datums/skills/modifiers/job.dm @@ -34,3 +34,6 @@ /datum/skill_modifier/job/level/wiring/basic level_mod = JOB_SKILL_BASIC + +/datum/skill_modifier/job/level/dwarfy/blacksmithing + target_skills = /datum/skill/level/dwarfy/blacksmithing \ No newline at end of file diff --git a/code/modules/antagonists/clockcult/clock_helpers/leader_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/leader_helpers.dm deleted file mode 100644 index 702612c0da..0000000000 --- a/code/modules/antagonists/clockcult/clock_helpers/leader_helpers.dm +++ /dev/null @@ -1,120 +0,0 @@ -/datum/action/innate/eminence_ascend - name = "Ascend as the Eminence" - button_icon_state = "eminence_action" - background_icon_state = "bg_clock" - buttontooltipstyle = "clockcult" - var/mob/eminence_nominee - var/selection_timer //Timer ID; this is canceled if the vote is canceled - var/kingmaking - -/datum/action/innate/eminence_ascend/Activate() - var/datum/antagonist/clockcult/C = owner.mind.has_antag_datum(/datum/antagonist/clockcult) - if(!C || !C.clock_team) - return - if(C.clock_team.eminence) - to_chat(owner, "There's already an Eminence!") - return - if(eminence_nominee) //This could be one large proc, but is split into three for ease of reading - if(eminence_nominee == owner) - cancelation(owner) - else - objection(owner) - else - nomination(owner) -/* -/datum/action/innate/eminence_ascend/activate() - if(!is_(owner)) - to_chat(owner, "You feel the omniscient gaze turn into a puzzled frown. Perhaps you should just stick to building.") - return -*/ - var/datum/mind/rando = locate() in get_antag_minds(/datum/antagonist/clockcult) //if theres no cultists new team without eminence will be created anyway. - if(rando) - var/datum/antagonist/clockcult/random_cultist = rando.has_antag_datum(/datum/antagonist/clockcult) - if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence) - to_chat(owner, "There's already an Eminence - too late!") - return - if(!GLOB.servants_active) - to_chat(owner, "The Ark must be active first!") - return - if(alert(owner, "Become the Eminence using admin?", "Become Eminence", "Yes", "No") != "Yes") - return - message_admins("Admin [key_name_admin(owner)] directly became the Eminence of the cult!") - log_admin("Admin [key_name(owner)] made themselves the Eminence.") - var/mob/camera/eminence/eminence = new(get_turf(src)) - owner.transfer_ckey(eminence, FALSE) - hierophant_message("Ratvar has directly assigned the Eminence!") - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/eminence_selected.ogg', 50, FALSE) - -/datum/action/innate/eminence_ascend/proc/nomination(mob/living/nominee) //A owner is nominating themselves or ghosts to become Eminence - var/nomination_choice = alert(nominee, "Who would you like to nominate?", "Eminence Nomination", "Nominate Yourself", "Nominate Ghosts", "Cancel") - if(!is_servant_of_ratvar(nominee) || !nominee.canUseTopic(src) || eminence_nominee) - return - switch(nomination_choice) - if("Cancel") - return - if("Nominate Yourself") - eminence_nominee = nominee - hierophant_message("[nominee] nominates [nominee.p_them()]self as the Eminence! You may object by interacting with the eminence spire. The vote will otherwise pass in 30 seconds.") - if("Nominate Ghosts") - eminence_nominee = "ghosts" - hierophant_message("[nominee] proposes selecting an Eminence from ghosts! You may object by interacting with the eminence spire. The vote will otherwise pass in 30 seconds.") - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/ocularwarden-target.ogg', 50, FALSE) - selection_timer = addtimer(CALLBACK(src, .proc/kingmaker), 300, TIMER_STOPPABLE) - -/datum/action/innate/eminence_ascend/proc/objection(mob/living/wright) - if(alert(wright, "Object to the selection of [eminence_nominee] as Eminence?", "Objection!", "Object", "Cancel") == "Cancel" || !is_servant_of_ratvar(wright) || !wright.canUseTopic(src) || !eminence_nominee) - return - hierophant_message("[wright] objects to the nomination of [eminence_nominee]! The eminence spire has been reset.") - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/integration_cog_install.ogg', 50, FALSE) - eminence_nominee = null - deltimer(selection_timer) - -/datum/action/innate/eminence_ascend/proc/cancelation(mob/living/cold_feet) - if(alert(cold_feet, "Cancel your nomination?", "Cancel Nomination", "Withdraw Nomination", "Cancel") == "Cancel" || !is_servant_of_ratvar(cold_feet) || !cold_feet.canUseTopic(src) || !eminence_nominee) - return - hierophant_message("[eminence_nominee] has withdrawn their nomination! The eminence spire has been reset.") - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/integration_cog_install.ogg', 50, FALSE) - eminence_nominee = null - deltimer(selection_timer) - -/datum/action/innate/eminence_ascend/proc/kingmaker() - if(!eminence_nominee) - return - if(ismob(eminence_nominee)) - if(!eminence_nominee.client || !eminence_nominee.mind) - hierophant_message("[eminence_nominee] somehow lost their sentience! The eminence spire has been reset.") - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/integration_cog_install.ogg', 50, FALSE) - eminence_nominee = null - return - playsound(eminence_nominee, 'sound/machines/clockcult/ark_damage.ogg', 50, FALSE) - eminence_nominee.visible_message("A blast of white-hot light flows into [eminence_nominee], vaporizing [eminence_nominee.p_them()] in an instant!", \ - "allthelightintheuniverseflowing.into.YOU") - for(var/obj/item/I in eminence_nominee) - eminence_nominee.dropItemToGround(I) - var/mob/camera/eminence/eminence = new(get_turf(src)) - eminence_nominee.mind.transfer_to(eminence) - eminence_nominee.dust() - hierophant_message("[eminence_nominee] has ascended into the Eminence!") - else if(eminence_nominee == "ghosts") - kingmaking = TRUE - hierophant_message("The eminence spire is now selecting a ghost to be the Eminence...") - var/list/candidates = pollGhostCandidates("Would you like to play as the servants' Eminence?", ROLE_SERVANT_OF_RATVAR, null, ROLE_SERVANT_OF_RATVAR, poll_time = 100) - kingmaking = FALSE - if(!LAZYLEN(candidates)) - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/integration_cog_install.ogg', 50, FALSE) - hierophant_message("No ghosts accepted the offer! The eminence spire has been reset.") - eminence_nominee = null - return - var/mob/camera/eminence/eminence = new(get_turf(src)) - eminence_nominee = pick(candidates) - eminence_nominee.transfer_ckey(eminence) - hierophant_message("A ghost has ascended into the Eminence!") - for(var/mob/M in servants_and_ghosts()) - M.playsound_local(M, 'sound/machines/clockcult/eminence_selected.ogg', 50, FALSE) - eminence_nominee = null \ No newline at end of file diff --git a/code/modules/antagonists/clockcult/clock_mobs/clockwork_guardian.dm b/code/modules/antagonists/clockcult/clock_mobs/clockwork_guardian.dm index a2bfdcd153..356d23432c 100644 --- a/code/modules/antagonists/clockcult/clock_mobs/clockwork_guardian.dm +++ b/code/modules/antagonists/clockcult/clock_mobs/clockwork_guardian.dm @@ -1,7 +1,7 @@ //Clockwork guardian: Slow but with high damage, resides inside of a servant. Created via the Memory Allocation scripture. /mob/living/simple_animal/hostile/clockwork/guardian name = "clockwork guardian" - desc = "A stalwart apparition of a soldier, blazing with crimson flames. It's armed with a gladius and shield and stands ready by its master." + desc = "A stalwart apparition of a soldier, blazing with magenta flames. It's armed with a gladius and shield and stands ready by its master." icon_state = "clockwork_marauder" health = 300 maxHealth = 300 @@ -23,6 +23,7 @@ var/blockchance = 17 //chance to block attacks entirely var/counterchance = 30 //chance to counterattack after blocking var/static/list/damage_heal_order = list(OXY, BURN, BRUTE, TOX) //we heal our host's damage in this order + light_color = "#AF0AAF" light_range = 2 light_power = 1.1 playstyle_string = "You are a clockwork guardian, a living extension of Sevtug's will. As a guardian, you are somewhat slow, but may block attacks, \ @@ -319,7 +320,7 @@ var/resulthealth = round((host.health / host.maxHealth) * 100, 0.5) if(iscarbon(host)) resulthealth = round((abs(HEALTH_THRESHOLD_DEAD - host.health) / abs(HEALTH_THRESHOLD_DEAD - host.maxHealth)) * 100) - host.visible_message("[host]'s skin flashes crimson!", "You feel [true_name]'s consciousness settle in your mind.") + host.visible_message("[host]'s skin flashes magenta!", "You feel [true_name]'s consciousness settle in your mind.") visible_message("[src] suddenly disappears!", "You return to [host].") forceMove(host) if(resulthealth > GUARDIAN_EMERGE_THRESHOLD && health != maxHealth) diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm index 44b150ce58..ce343dbdfa 100644 --- a/code/modules/antagonists/clockcult/clockcult.dm +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -5,7 +5,7 @@ antagpanel_category = "Clockcult" job_rank = ROLE_SERVANT_OF_RATVAR antag_moodlet = /datum/mood_event/cult - skill_modifiers = list(/datum/skill_modifier/job/level/wiring) + skill_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/level/dwarfy/blacksmithing) var/datum/action/innate/hierophant/hierophant_network = new var/datum/action/innate/eminence_ascend = new threat = 3 @@ -31,23 +31,11 @@ show_in_roundend = FALSE make_team = FALSE -/datum/antagonist/clockcult/eminence - name = "Eminence" - var/datum/action/innate/eminence/mass_recall = new - var/datum/action/innate/eminence/obelisk_jump = new - var/datum/action/innate/eminence/ark_jump = new - /datum/antagonist/clockcult/Destroy() qdel(hierophant_network) qdel(eminence_ascend) return ..() -/datum/antagonist/clockcult/eminence/Destroy() - qdel(mass_recall) - qdel(obelisk_jump) - qdel(ark_jump) - return ..() - /datum/antagonist/clockcult/get_team() return clock_team @@ -150,6 +138,7 @@ hierophant_network.span_for_name = "nezbere" hierophant_network.span_for_message = "brass" hierophant_network.Grant(current) + eminence_ascend.Grant(current) current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar if(G && G.active && ishuman(current)) diff --git a/icons/mob/inhands/antag/clockwork_righthand.dmi b/icons/mob/inhands/antag/clockwork_righthand.dmi index 64ee6199a7e7264bb512aa7f1acab20ba8c1de57..c813c836349a462cd4b02373e86544400bea3662 100644 GIT binary patch delta 2811 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 delta 2778 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 b;=gRJl&TY}CRAq|5NBDM+n7~c{yXVEC!VqG