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 64ee6199a7..c813c83634 100644 Binary files a/icons/mob/inhands/antag/clockwork_righthand.dmi and b/icons/mob/inhands/antag/clockwork_righthand.dmi differ