diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 88fade901ab..56aec67a7a1 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -229,6 +229,39 @@ datum/mind
// text += "
All the changelings are dead! Restart in [round((changeling.TIME_TO_GET_REVIVED-(world.time-changeling.changelingdeathtime))/10)] seconds."
sections["changeling"] = text
+ /** NINJA ***/
+ text = "ninja"
+ if (ticker.mode.config_tag=="ninja")
+ text = uppertext(text)
+ text = "[text]: "
+ if (src in ticker.mode.ninjas)
+ text += "YES|no"
+ text += "
To outpost, undress, dress up."
+ //if (objectives.len==0)
+ //text += "
Objectives are empty! Randomize!"
+ else
+ text += "yes|NO"
+ sections["ninja"] = text
+
+ /** CHANGELING ***/
+ text = "changeling"
+ if (ticker.mode.config_tag=="changeling" || ticker.mode.config_tag=="traitorchan")
+ text = uppertext(text)
+ text = "[text]: "
+ if (src in ticker.mode.changelings)
+ text += "YES|no"
+ if (objectives.len==0)
+ text += "
Objectives are empty! Randomize!"
+ if( changeling && changeling.absorbed_dna.len && (current.real_name != changeling.absorbed_dna[1]) )
+ text += "
Transform to initial appearance."
+ else
+ text += "yes|NO"
+// var/datum/game_mode/changeling/changeling = ticker.mode
+// if (istype(changeling) && changeling.changelingdeath)
+// text += "
All the changelings are dead! Restart in [round((changeling.TIME_TO_GET_REVIVED-(world.time-changeling.changelingdeathtime))/10)] seconds."
+ sections["changeling"] = text
+
+
/** VAMPIRE ***/
text = "vampire"
if (ticker.mode.config_tag=="vampire")
@@ -751,6 +784,27 @@ datum/mind
ticker.mode.forge_wizard_objectives(src)
usr << "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually."
+ else if (href_list["ninja"])
+ current.hud_updateflag |= (1 << SPECIALROLE_HUD)
+
+ switch(href_list["ninja"])
+ if("clear")
+ if(src in ticker.mode.ninjas)
+ ticker.mode.ninjas -= src
+ special_role = null
+ current << "\red You have been brainwashed! You are no longer a Ninja!"
+ log_admin("[key_name_admin(usr)] has de-ninja'ed [current].")
+ if("ninja")
+ if(!(src in ticker.mode.ninjas))
+ ticker.mode.ninjas += src
+ special_role = "Ninja"
+ current << "\blue Your mind awakens, your true potential is realized! You are a Space Ninja!"
+ log_admin("[key_name_admin(usr)] has ninja'ed [current].")
+ if("outpost")
+ current.loc = pick(ninjastart)
+ if("dressup")
+ current:equip_space_ninja()
+
else if (href_list["changeling"])
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
switch(href_list["changeling"])
diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm
index 0d94cab437a..9a07e32335c 100644
--- a/code/game/gamemodes/events/ninja_equipment.dm
+++ b/code/game/gamemodes/events/ninja_equipment.dm
@@ -38,7 +38,19 @@ ________________________________________________________________________________
for(var/reagent_id in reagent_list)
reagent_id == "uranium" ? reagents.add_reagent(reagent_id, r_maxamount+(a_boost*a_transfer)) : reagents.add_reagent(reagent_id, r_maxamount)//It will take into account uranium used for adrenaline boosting.
cell = new/obj/item/weapon/cell/high//The suit should *always* have a battery because so many things rely on it.
- cell.charge = 9000//Starting charge should not be higher than maximum charge. It leads to problems with recharging.
+ cell.charge = 9990//Starting charge should not be higher than maximum charge. It leads to problems with recharging.
+ cell.maxcharge = 10000 // Due to Ponies' overhaul Ninjas began starting with a 15000 energy cell. This should fix that issue.
+
+ /*switch(s_rank) In preparation for Ninja overhaul, differeing starting charge levels for each rank of Ninja.
+ if("Initiate")
+ cell.charge = 7490
+ cell.maxcharge = 7500
+ if("Assassin")
+ cell.charge = 9990
+ cell.maxcharge = 10000
+ if("Master")
+ cell.maxcharge = 15000
+ cell.charge = 14990*/
/obj/item/clothing/suit/space/space_ninja/Destroy()
if(affecting)//To make sure the window is closed.
diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm
index 33a7be0484d..6f24bf194ac 100644
--- a/code/game/gamemodes/events/space_ninja.dm
+++ b/code/game/gamemodes/events/space_ninja.dm
@@ -452,7 +452,8 @@ As such, it's hard-coded for now. No reason for it not to be, really.
if(ishuman(M))
log_admin("[key_name(src)] turned [M.key] into a Space Ninja.")
spawn(10)
- M:create_mind_space_ninja()
+ M.mind.assigned_role = "MODE"
+ M.mind.special_role = "Ninja"
M:equip_space_ninja(1)
if(istype(M:wear_suit, /obj/item/clothing/suit/space/space_ninja))
M:wear_suit:randomize_param()
@@ -521,7 +522,8 @@ As such, it's hard-coded for now. No reason for it not to be, really.
mind.assigned_role = "MODE"
mind.special_role = "Ninja"
- //ticker.mode.ninjas |= mind
+ ticker.mode.ninjas += mind
+
return 1
/mob/living/carbon/human/proc/equip_space_ninja(safety=0)//Safety in case you need to unequip stuff for existing characters.
diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm
index 3c281767fd7..bdf85cdd5e4 100644
--- a/code/modules/clothing/spacesuits/ninja.dm
+++ b/code/modules/clothing/spacesuits/ninja.dm
@@ -43,6 +43,7 @@
var/s_delay = 40.0//How fast the suit does certain things, lower is faster. Can be overridden in specific procs. Also determines adverse probability.
var/a_transfer = 20.0//How much reagent is transferred when injecting.
var/r_maxamount = 80.0//How much reagent in total there is.
+ //var/s_rank = "Master" The three ranks are "Initiate", "Assassin", and "Master". Master is the base case.
//Support function variables.
var/spideros = 0//Mode of SpiderOS. This can change so I won't bother listing the modes here (0 is hub). Check ninja_equipment.dm for how it all works.
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index abe214a411b..4b57b96768b 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ