diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index d467d8fd9d..741822d546 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -752,6 +752,11 @@
for(var/X in spell_list)
var/obj/effect/proc_holder/spell/S = X
S.action.Grant(new_character)
+ var/datum/antagonist/changeling/changeling = new_character.mind.has_antag_datum(/datum/antagonist/changeling)
+ if(changeling)
+ for(var/P in changeling.purchasedpowers)
+ var/obj/effect/proc_holder/changeling/I = P
+ I.action.Grant(new_character)
/datum/mind/proc/disrupt_spells(delay, list/exceptions = New())
for(var/X in spell_list)
diff --git a/code/modules/antagonists/changeling/cellular_emporium.dm b/code/modules/antagonists/changeling/cellular_emporium.dm
index 2a37a3885d..3cf0a3ee25 100644
--- a/code/modules/antagonists/changeling/cellular_emporium.dm
+++ b/code/modules/antagonists/changeling/cellular_emporium.dm
@@ -72,7 +72,7 @@
name = "Cellular Emporium"
icon_icon = 'icons/obj/drinks.dmi'
button_icon_state = "changelingsting"
- background_icon_state = "bg_alien"
+ background_icon_state = "bg_ling"
var/datum/cellular_emporium/cellular_emporium
/datum/action/innate/cellular_emporium/New(our_target)
diff --git a/code/modules/antagonists/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm
index c89dc50cec..1d4f15ec9d 100644
--- a/code/modules/antagonists/changeling/changeling_power.dm
+++ b/code/modules/antagonists/changeling/changeling_power.dm
@@ -20,10 +20,12 @@
/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec)
+ action.Grant(user)
if(!is_respec)
SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name)
/obj/effect/proc_holder/changeling/proc/on_refund(mob/user)
+ action.Remove(user)
return
/obj/effect/proc_holder/changeling/Click()
diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm
index 2f8fc6943f..34a8231960 100644
--- a/code/modules/antagonists/changeling/powers/absorb.dm
+++ b/code/modules/antagonists/changeling/powers/absorb.dm
@@ -4,6 +4,9 @@
chemical_cost = 0
dna_cost = 0
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_absorb_dna"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user)
if(!..())
diff --git a/code/modules/antagonists/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm
index 34d6e3605b..ede14a23c9 100644
--- a/code/modules/antagonists/changeling/powers/adrenaline.dm
+++ b/code/modules/antagonists/changeling/powers/adrenaline.dm
@@ -6,6 +6,9 @@
dna_cost = 2
req_human = 1
req_stat = UNCONSCIOUS
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_adrenals"
+ action_background_icon_state = "bg_ling"
//Recover from stuns.
/obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user)
diff --git a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
index 5ec5440a2b..6eafeda63f 100644
--- a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
+++ b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm
@@ -8,12 +8,16 @@
chemical_cost = 0
dna_cost = 2 //Would be 1 without thermal vision
active = FALSE
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_augmented_eyesight"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/augmented_eyesight/on_purchase(mob/user) //The ability starts inactive, so we should be protected from flashes.
var/obj/item/organ/eyes/E = user.getorganslot(ORGAN_SLOT_EYES)
if (E)
E.flash_protect = 2 //Adjust the user's eyes' flash protection
to_chat(user, "We adjust our eyes to protect them from bright lights.")
+ action.Grant(user)
else
to_chat(user, "We can't adjust our eyes if we don't have any!")
@@ -42,6 +46,7 @@
/obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user) //Get rid of X-ray vision and flash protection when the user refunds this ability
+ action.Remove(user)
var/obj/item/organ/eyes/E = user.getorganslot(ORGAN_SLOT_EYES)
if(E)
if (active)
diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm
index d1a2cc3891..f58b90d8e6 100644
--- a/code/modules/antagonists/changeling/powers/biodegrade.dm
+++ b/code/modules/antagonists/changeling/powers/biodegrade.dm
@@ -6,6 +6,9 @@
loudness = 1
dna_cost = 2
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_freedom"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/biodegrade/sting_action(mob/living/carbon/human/user)
var/used = FALSE // only one form of shackles removed per use
diff --git a/code/modules/antagonists/changeling/powers/chameleon_skin.dm b/code/modules/antagonists/changeling/powers/chameleon_skin.dm
index 3be5103105..b7545353b2 100644
--- a/code/modules/antagonists/changeling/powers/chameleon_skin.dm
+++ b/code/modules/antagonists/changeling/powers/chameleon_skin.dm
@@ -5,6 +5,9 @@
dna_cost = 2
chemical_cost = 25
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_camouflage"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/chameleon_skin/sting_action(mob/user)
var/mob/living/carbon/human/H = user //SHOULD always be human, because req_human = 1
@@ -18,6 +21,7 @@
return TRUE
/obj/effect/proc_holder/changeling/chameleon_skin/on_refund(mob/user)
+ action.Remove(user)
if(user.has_dna())
var/mob/living/carbon/C = user
var/datum/mutation/human/HM = GLOB.mutations_list[CHAMELEON]
diff --git a/code/modules/antagonists/changeling/powers/digitalcamo.dm b/code/modules/antagonists/changeling/powers/digitalcamo.dm
index e8bad0e215..6a0f78b532 100644
--- a/code/modules/antagonists/changeling/powers/digitalcamo.dm
+++ b/code/modules/antagonists/changeling/powers/digitalcamo.dm
@@ -4,6 +4,9 @@
helptext = "We cannot be tracked by camera or seen by AI units while using this skill. However, humans looking at us will find us... uncanny. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat."
dna_cost = 1
loudness = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_digital_camo"
+ action_background_icon_state = "bg_ling"
//Prevents AIs tracking you but makes you easily detectable to the human-eye.
/obj/effect/proc_holder/changeling/digitalcamo/sting_action(mob/user)
@@ -19,5 +22,6 @@
return TRUE
/obj/effect/proc_holder/changeling/digitalcamo/on_refund(mob/user)
+ action.Remove(user)
user.digitalcamo = 0
user.digitalinvis = 0
\ No newline at end of file
diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm
index 753d858cef..41438bcebd 100644
--- a/code/modules/antagonists/changeling/powers/fakedeath.dm
+++ b/code/modules/antagonists/changeling/powers/fakedeath.dm
@@ -6,6 +6,9 @@
req_dna = 1
req_stat = DEAD
ignores_fakedeath = TRUE
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_regenerative_stasis"
+ action_background_icon_state = "bg_ling"
//Fake our own death and fully heal. You will appear to be dead but regenerate fully after a short delay.
/obj/effect/proc_holder/changeling/fakedeath/sting_action(mob/living/user)
@@ -25,7 +28,9 @@
var/datum/antagonist/changeling/C = user.mind.has_antag_datum(/datum/antagonist/changeling)
if(C && C.purchasedpowers)
to_chat(user, "We are ready to revive.")
- C.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null)
+ var/obj/effect/proc_holder/changeling/revive/RV = new /obj/effect/proc_holder/changeling/revive(null)
+ C.purchasedpowers += RV
+ RV.action.Grant(user)
/obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/living/user)
if(user.has_trait(TRAIT_DEATHCOMA, "changeling"))
diff --git a/code/modules/antagonists/changeling/powers/fleshmend.dm b/code/modules/antagonists/changeling/powers/fleshmend.dm
index 930b756b65..9672d79ee4 100644
--- a/code/modules/antagonists/changeling/powers/fleshmend.dm
+++ b/code/modules/antagonists/changeling/powers/fleshmend.dm
@@ -5,6 +5,9 @@
chemical_cost = 20
dna_cost = 2
req_stat = UNCONSCIOUS
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_fleshmend"
+ action_background_icon_state = "bg_ling"
//Starts healing you every second for 10 seconds.
//Can be used whilst unconscious.
diff --git a/code/modules/antagonists/changeling/powers/headcrab.dm b/code/modules/antagonists/changeling/powers/headcrab.dm
index 8a932dbd62..72d8a127ab 100644
--- a/code/modules/antagonists/changeling/powers/headcrab.dm
+++ b/code/modules/antagonists/changeling/powers/headcrab.dm
@@ -6,6 +6,9 @@
dna_cost = 1
loudness = 2
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_explode"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/headcrab/sting_action(mob/user)
set waitfor = FALSE
diff --git a/code/modules/antagonists/changeling/powers/hivemind.dm b/code/modules/antagonists/changeling/powers/hivemind.dm
index 86926f51a9..b72123da6f 100644
--- a/code/modules/antagonists/changeling/powers/hivemind.dm
+++ b/code/modules/antagonists/changeling/powers/hivemind.dm
@@ -5,6 +5,16 @@
helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives."
dna_cost = 1
chemical_cost = -1
+ action_icon = 'icons/mob/actions/actions_xeno.dmi'
+ action_icon_state = "alien_whisper"
+ action_background_icon_state = "bg_ling"
+
+/obj/effect/proc_holder/changeling/hivemind_comms/sting_action(var/mob/living/user)
+ if (user.has_trait(CHANGELING_HIVEMIND_MUTE))
+ to_chat(user, "The poison in the air hinders our ability to interact with the hivemind.")
+ return
+ var/input = stripped_input(usr, "Please choose a message to transmit.", "Changeling Hivemind", "")
+ user.say(".g[input]")
/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec)
..()
@@ -14,12 +24,15 @@
var/obj/effect/proc_holder/changeling/hivemind_upload/S1 = new
if(!changeling.has_sting(S1))
changeling.purchasedpowers+=S1
+ S1.action.Grant(user)
var/obj/effect/proc_holder/changeling/hivemind_download/S2 = new
if(!changeling.has_sting(S2))
changeling.purchasedpowers+=S2
+ S2.action.Grant(user)
var/obj/effect/proc_holder/changeling/linglink/S3 = new
if(!changeling.has_sting(S3))
changeling.purchasedpowers+=S3
+ S3.action.Grant(user)
// HIVE MIND UPLOAD/DOWNLOAD DNA
GLOBAL_LIST_EMPTY(hivemind_bank)
@@ -29,6 +42,9 @@ GLOBAL_LIST_EMPTY(hivemind_bank)
desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it."
chemical_cost = 10
dna_cost = -1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_upload"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/hivemind_upload/sting_action(var/mob/living/user)
if (user.has_trait(CHANGELING_HIVEMIND_MUTE))
@@ -63,6 +79,9 @@ GLOBAL_LIST_EMPTY(hivemind_bank)
desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives."
chemical_cost = 10
dna_cost = -1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_download"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/hivemind_download/can_sting(mob/living/carbon/user)
if(!..())
diff --git a/code/modules/antagonists/changeling/powers/humanform.dm b/code/modules/antagonists/changeling/powers/humanform.dm
index e04f00308f..a6f7b0b6e9 100644
--- a/code/modules/antagonists/changeling/powers/humanform.dm
+++ b/code/modules/antagonists/changeling/powers/humanform.dm
@@ -3,6 +3,9 @@
desc = "We change into a human."
chemical_cost = 5
req_dna = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_human"
+ action_background_icon_state = "bg_ling"
//Transform into a human.
/obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user)
diff --git a/code/modules/antagonists/changeling/powers/lesserform.dm b/code/modules/antagonists/changeling/powers/lesserform.dm
index 24403b406c..1f9ca0b3ff 100644
--- a/code/modules/antagonists/changeling/powers/lesserform.dm
+++ b/code/modules/antagonists/changeling/powers/lesserform.dm
@@ -5,6 +5,9 @@
dna_cost = 1
loudness = 2
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_lesser"
+ action_background_icon_state = "bg_ling"
//Transform into a monkey.
/obj/effect/proc_holder/changeling/lesserform/sting_action(mob/living/carbon/human/user)
diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm
index baa02ea7c8..70df78e3b4 100644
--- a/code/modules/antagonists/changeling/powers/linglink.dm
+++ b/code/modules/antagonists/changeling/powers/linglink.dm
@@ -4,6 +4,9 @@
chemical_cost = 0
dna_cost = -1
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_link"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/linglink/can_sting(mob/living/carbon/user)
if(!..())
diff --git a/code/modules/antagonists/changeling/powers/mimic_voice.dm b/code/modules/antagonists/changeling/powers/mimic_voice.dm
index 6808ecd61a..170aea1e9c 100644
--- a/code/modules/antagonists/changeling/powers/mimic_voice.dm
+++ b/code/modules/antagonists/changeling/powers/mimic_voice.dm
@@ -5,6 +5,9 @@
chemical_cost = 0 //constant chemical drain hardcoded
dna_cost = 1
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_mimic_voice"
+ action_background_icon_state = "bg_ling"
// Fake Voice
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 9e353a1855..3d6c766307 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -56,6 +56,7 @@
return W
/obj/effect/proc_holder/changeling/weapon/on_refund(mob/user)
+ action.Remove(user)
for(var/obj/item/I in user.held_items)
check_weapon(user, I)
@@ -105,6 +106,7 @@
/obj/effect/proc_holder/changeling/suit/on_refund(mob/user)
if(!ishuman(user))
return
+ action.Remove(user)
var/mob/living/carbon/human/H = user
check_suit(H)
@@ -141,6 +143,9 @@
req_human = 1
weapon_type = /obj/item/melee/arm_blade
weapon_name_simple = "blade"
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_armblade"
+ action_background_icon_state = "bg_ling"
/obj/item/melee/arm_blade
name = "arm blade"
@@ -225,6 +230,9 @@
weapon_type = /obj/item/gun/magic/tentacle
weapon_name_simple = "tentacle"
silent = TRUE
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_tentacle"
+ action_background_icon_state = "bg_ling"
/obj/item/gun/magic/tentacle
name = "tentacle"
@@ -401,6 +409,9 @@
dna_cost = 1
loudness = 1
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_shield"
+ action_background_icon_state = "bg_ling"
weapon_type = /obj/item/shield/changeling
weapon_name_simple = "shield"
@@ -454,6 +465,9 @@
dna_cost = 2
loudness = 1
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_space_suit"
+ action_background_icon_state = "bg_ling"
suit_type = /obj/item/clothing/suit/space/changeling
helmet_type = /obj/item/clothing/head/helmet/space/changeling
@@ -503,6 +517,9 @@
loudness = 2
req_human = 1
recharge_slowdown = 0.25
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_armor"
+ action_background_icon_state = "bg_ling"
suit_type = /obj/item/clothing/suit/armor/changeling
helmet_type = /obj/item/clothing/head/helmet/changeling
diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm
index cb5aba6c99..9f7a36f214 100644
--- a/code/modules/antagonists/changeling/powers/panacea.dm
+++ b/code/modules/antagonists/changeling/powers/panacea.dm
@@ -5,6 +5,9 @@
chemical_cost = 20
dna_cost = 1
req_stat = UNCONSCIOUS
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_anatomic_panacea"
+ action_background_icon_state = "bg_ling"
//Heals the things that the other regenerative abilities don't.
/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user)
diff --git a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm
index c3fe3c9bc0..4995b27807 100644
--- a/code/modules/antagonists/changeling/powers/pheromone_receptors.dm
+++ b/code/modules/antagonists/changeling/powers/pheromone_receptors.dm
@@ -10,6 +10,9 @@
chemical_cost = 0 //Reduces regain rate while active.
dna_cost = 2
var/receptors_active = FALSE
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_pheromone"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/pheromone_receptors/sting_action(mob/living/carbon/user)
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
diff --git a/code/modules/antagonists/changeling/powers/regenerate.dm b/code/modules/antagonists/changeling/powers/regenerate.dm
index c86bf271d4..a1f8e1ef9b 100644
--- a/code/modules/antagonists/changeling/powers/regenerate.dm
+++ b/code/modules/antagonists/changeling/powers/regenerate.dm
@@ -8,6 +8,9 @@
chemical_cost = 10
dna_cost = 0
req_stat = UNCONSCIOUS
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_regenerate"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/regenerate/sting_action(mob/living/user)
to_chat(user, "You feel an itching, both inside and \
diff --git a/code/modules/antagonists/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm
index 937748a7ef..514b7603fd 100644
--- a/code/modules/antagonists/changeling/powers/revive.dm
+++ b/code/modules/antagonists/changeling/powers/revive.dm
@@ -5,6 +5,9 @@
req_stat = DEAD
always_keep = TRUE
ignores_fakedeath = TRUE
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_revive"
+ action_background_icon_state = "bg_ling"
//Revive from revival stasis
/obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user)
@@ -26,6 +29,7 @@
to_chat(user, "We have revived ourselves.")
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
changeling.purchasedpowers -= src
+ src.action.Remove(user)
return TRUE
/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user)
diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm
index f77624d072..65e58ae65b 100644
--- a/code/modules/antagonists/changeling/powers/shriek.dm
+++ b/code/modules/antagonists/changeling/powers/shriek.dm
@@ -6,6 +6,9 @@
dna_cost = 1
loudness = 1
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_resonant"
+ action_background_icon_state = "bg_ling"
//A flashy ability, good for crowd control and sewing chaos.
/obj/effect/proc_holder/changeling/resonant_shriek/sting_action(mob/user)
@@ -36,6 +39,9 @@
chemical_cost = 20
dna_cost = 1
loudness = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_dissonant"
+ action_background_icon_state = "bg_ling"
//A flashy ability, good for crowd control and sewing chaos.
/obj/effect/proc_holder/changeling/dissonant_shriek/sting_action(mob/user)
diff --git a/code/modules/antagonists/changeling/powers/spiders.dm b/code/modules/antagonists/changeling/powers/spiders.dm
index 2bd1bc8a35..489f646b39 100644
--- a/code/modules/antagonists/changeling/powers/spiders.dm
+++ b/code/modules/antagonists/changeling/powers/spiders.dm
@@ -6,6 +6,9 @@
dna_cost = 1
loudness = 4
req_absorbs = 3
+ action_icon = 'icons/effects/effects.dmi'
+ action_icon_state = "spiderling"
+ action_background_icon_state = "bg_ling"
//Makes some spiderlings. Good for setting traps and causing general trouble.
/obj/effect/proc_holder/changeling/spiders/sting_action(mob/user)
diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm
index 832f6073b6..4e8b8adbd1 100644
--- a/code/modules/antagonists/changeling/powers/strained_muscles.dm
+++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm
@@ -10,6 +10,9 @@
req_human = 1
var/stacks = 0 //Increments every 5 seconds; damage increases over time
active = 0 //Whether or not you are a hedgehog
+ action_icon = 'icons/obj/implants.dmi'
+ action_icon_state = "adrenal"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/strained_muscles/sting_action(mob/living/carbon/user)
active = !active
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index 6c9e0c6599..b9abf76fd1 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -70,6 +70,9 @@
dna_cost = 3
loudness = 1
var/datum/changelingprofile/selected_dna = null
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_transform"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/sting/transformation/Click()
var/mob/user = usr
@@ -117,6 +120,9 @@
chemical_cost = 20
dna_cost = 1
loudness = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_fake"
+ action_background_icon_state = "bg_ling"
/obj/item/melee/arm_blade/false
desc = "A grotesque mass of flesh that used to be your arm. Although it looks dangerous at first, you can tell it's actually quite dull and useless."
@@ -169,6 +175,9 @@
sting_icon = "sting_extract"
chemical_cost = 25
dna_cost = 0
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_extract"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/sting/extract_dna/can_sting(mob/user, mob/target)
if(..())
@@ -190,6 +199,9 @@
chemical_cost = 20
dna_cost = 2
loudness = 2
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_mute"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/sting/mute/sting_action(mob/user, mob/living/carbon/target)
log_combat(user, target, "stung", "mute sting")
@@ -204,6 +216,9 @@
chemical_cost = 25
dna_cost = 1
loudness = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_blind"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/sting/blind/sting_action(mob/user, mob/living/carbon/target)
log_combat(user, target, "stung", "blind sting")
@@ -220,6 +235,9 @@
sting_icon = "sting_lsd"
chemical_cost = 10
dna_cost = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_lsd"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target)
log_combat(user, target, "stung", "LSD sting")
@@ -238,6 +256,9 @@
chemical_cost = 15
dna_cost = 2
loudness = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_sting_cryo"
+ action_background_icon_state = "bg_ling"
/obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target)
log_combat(user, target, "stung", "cryo sting")
diff --git a/code/modules/antagonists/changeling/powers/transform.dm b/code/modules/antagonists/changeling/powers/transform.dm
index 1e2b22cdae..767c7d2621 100644
--- a/code/modules/antagonists/changeling/powers/transform.dm
+++ b/code/modules/antagonists/changeling/powers/transform.dm
@@ -5,6 +5,9 @@
dna_cost = 0
req_dna = 1
req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_transform"
+ action_background_icon_state = "bg_ling"
/obj/item/clothing/glasses/changeling
name = "flesh"
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 342ee386b6..5703e2190b 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -96,7 +96,9 @@
mind.transfer_to(O)
var/datum/antagonist/changeling/changeling = O.mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling)
- changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
+ var/obj/effect/proc_holder/changeling/humanform/HF = new /obj/effect/proc_holder/changeling/humanform(null)
+ changeling.purchasedpowers += HF
+ HF.action.Grant(O)
for(var/X in internal_organs)
var/obj/item/organ/I = X
@@ -129,8 +131,9 @@
mind.transfer_to(O)
var/datum/antagonist/changeling/changeling = O.mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling)
- changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
-
+ var/obj/effect/proc_holder/changeling/humanform/HF = new /obj/effect/proc_holder/changeling/humanform(null)
+ changeling.purchasedpowers += HF
+ HF.action.Grant(O)
if (tr_flags & TR_DEFAULTMSG)
to_chat(O, "You are now a monkey.")
diff --git a/icons/mob/actions/actions_changeling.dmi b/icons/mob/actions/actions_changeling.dmi
new file mode 100644
index 0000000000..ce6b81e13b
Binary files /dev/null and b/icons/mob/actions/actions_changeling.dmi differ
diff --git a/icons/mob/actions/backgrounds.dmi b/icons/mob/actions/backgrounds.dmi
index 4303c6fff6..82303c5862 100644
Binary files a/icons/mob/actions/backgrounds.dmi and b/icons/mob/actions/backgrounds.dmi differ