diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 8d61b841478..620bc4cea66 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -364,7 +364,7 @@ if (ticker.mode.config_tag=="wizard") text = uppertext(text) text = "[text]: " - if (src in ticker.mode.wizards) + if ((src in ticker.mode.wizards) || (src in ticker.mode.apprentices)) text += "YES|no" text += "
To lair, undress, dress up, let choose name." if (objectives.len==0) diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 7c5df6a0751..77f14f919f3 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -92,6 +92,15 @@ var/wizard_name_first = pick(wizard_first) var/wizard_name_second = pick(wizard_second) var/randomname = "[wizard_name_first] [wizard_name_second]" + var/datum/objective/protect/new_objective = new /datum/objective/protect + new_objective.owner = M:mind + new_objective:target = usr:mind + new_objective.explanation_text = "Protect [usr.real_name], the wizard." + M.mind.objectives += new_objective + ticker.mode.apprentices += M.mind + M.mind.special_role = "apprentice" + ticker.mode.update_wiz_icons_added(M.mind) + M << sound('sound/effects/magic.ogg') var/newname = copytext(sanitize(input(M, "You are the wizard's apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) if (!newname) newname = randomname @@ -99,15 +108,6 @@ M.real_name = newname M.name = newname M.dna.update_dna_identity() - var/datum/objective/protect/new_objective = new /datum/objective/protect - new_objective.owner = M:mind - new_objective:target = usr:mind - new_objective.explanation_text = "Protect [usr.real_name], the wizard." - M.mind.objectives += new_objective - ticker.mode.traitors += M.mind - M.mind.special_role = "apprentice" - ticker.mode.update_wiz_icons_added(M.mind) - M << sound('sound/effects/magic.ogg') /obj/item/weapon/antag_spawner/contract/equip_antag(mob/target) target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_ears) diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index eacc3e0cc40..1dac752b967 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -1,5 +1,6 @@ /datum/game_mode var/list/datum/mind/wizards = list() + var/list/datum/mind/apprentices = list() /datum/game_mode/wizard name = "wizard" diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index dff4818781c..694f34309d1 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -431,6 +431,18 @@ dat += "Wizard not found!" dat += "" + if(ticker.mode.apprentices.len > 0) + dat += "
" + for(var/datum/mind/apprentice in ticker.mode.apprentices) + var/mob/M = apprentice.current + if(M) + dat += "" + dat += "" + dat += "" + else + dat += "" + dat += "
Apprentice
[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]PMShow Objective
Apprentice not found!
" + if(ticker.mode.cult.len) dat += "
" for(var/datum/mind/N in ticker.mode.cult) diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index e077ef55271..f437ccbe3f9 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -37,7 +37,7 @@ for(var/mob/living/carbon/human/H in living_mob_list) if(ruins_spaceworthiness && (H.z != 1 || istype(H.loc, /turf/space))) continue //#savetheminers - if(ruins_wizard_loadout && H.mind && H.mind in ticker.mode.wizards) continue + if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices))) continue if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry H.gender = FEMALE var/list/slots = list(H.wear_suit, H.shoes, H.head, H.wear_mask, H.r_hand, H.gloves, H.ears) //add new slots as needed to back diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index 6c1d9265213..ec6f4fa06c5 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -35,7 +35,7 @@ I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink(null)) I.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt(null)) - ticker.mode.traitors += I.mind + ticker.mode.apprentices += I.mind I.mind.special_role = "imposter" var/datum/objective/protect/protect_objective = new /datum/objective/protect diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 116a614740d..d9ad09ab906 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -15,7 +15,7 @@ continue var/quality = rand(-5,5) if(quality > 0) - I.name = "[pick(prefixespositive)] [I.name] of [pick(suffixes)] plus [quality]" + I.name = "[pick(prefixespositive)] [I.name] of [pick(suffixes)] +[quality]" else if(quality < 0) I.name = "[pick(prefixesnegative)] [I.name] of [pick(suffixes)] [quality]" else diff --git a/code/modules/events/wizard/shuffle.dm b/code/modules/events/wizard/shuffle.dm index 1e7052961e8..623db831b6a 100644 --- a/code/modules/events/wizard/shuffle.dm +++ b/code/modules/events/wizard/shuffle.dm @@ -77,7 +77,7 @@ var/list/mobs = list() for(var/mob/living/carbon/human/H in living_mob_list) - if(!H.stat || !H.mind || H.mind in ticker.mode.wizards) continue //the wizard(s) are spared on this one + if(!H.stat || !H.mind || (H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)) continue //the wizard(s) are spared on this one mobs += H if(!mobs) return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 04ccdf74c27..6041daadc2e 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -310,6 +310,9 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if("wizard") if(M.mind in ticker.mode.wizards) return 2 + if("apprentice") + if(M.mind in ticker.mode.apprentices) + return 2 if("monkey") if(M.viruses && (locate(/datum/disease/transformation/jungle_fever) in M.viruses)) return 2
Cultists