Enthralled subjects are now antagonists (they were before, but now actually show up in check antags) with a protect objective on their vampire. Yes, it's possible for the enthralled one to succeed while the vampire fails.

Made the traitor panel look less shit as far as Enthralled goes, it no longer sticks out compared to the rest by being the only one not italicized, and no longer colors the word NO.

Ghosts that can see huds now see the enthralled icon instead of the vamp icon for enthralled people.

Fixes round end report with Enthralled being badly formatted (missing a <br>).

I have tested this locally with a friend, it does what it says.
This commit is contained in:
Intigracy
2015-06-30 18:51:00 -07:00
parent 71b0b35fca
commit 2cd1665e5b
5 changed files with 54 additions and 9 deletions

View File

@@ -266,12 +266,12 @@
text += "<br>Objectives are empty! <a href='?src=\ref[src];vampire=autoobjectives'>Randomize!</a>" text += "<br>Objectives are empty! <a href='?src=\ref[src];vampire=autoobjectives'>Randomize!</a>"
else else
text += "<a href='?src=\ref[src];vampire=vampire'>yes</a>|<b>NO</b>" text += "<a href='?src=\ref[src];vampire=vampire'>yes</a>|<b>NO</b>"
/** Enthralled ***/ /** ENTHRALLED ***/
text += "<br><b>enthralled</b>" text += "<br><i><b>enthralled</b></i>: "
if(src in ticker.mode.enthralled) if(src in ticker.mode.enthralled)
text += " <b><font color='#FF0000'>YES</font></b> | no" text += "<b><font color='#FF0000'>YES</font></b>|no"
else else
text += " yes | <font color='#00FF00'>NO</font></b>" text += "yes|<b>NO</b>"
sections["vampire"] = text sections["vampire"] = text
/** NUCLEAR ***/ /** NUCLEAR ***/

View File

@@ -158,8 +158,10 @@
var/icon/logo = icon('icons/mob/mob.dmi', "thrall-logo") var/icon/logo = icon('icons/mob/mob.dmi', "thrall-logo")
end_icons += logo end_icons += logo
var/tempstate = end_icons.len var/tempstate = end_icons.len
text += {"<FONT size = 2><img src="logo_[tempstate].png"> <B>The Enthralled were:</B> <img src="logo_[tempstate].png"></FONT>"} text += {"<br><FONT size = 2><img src="logo_[tempstate].png"> <B>The Enthralled were:</B> <img src="logo_[tempstate].png"></FONT>"}
for(var/datum/mind/Mind in enthralled) for(var/datum/mind/Mind in enthralled)
var/traitorwin = 1
if(Mind.current) if(Mind.current)
var/icon/flat = getFlatIcon(Mind.current, SOUTH, 1, 1) var/icon/flat = getFlatIcon(Mind.current, SOUTH, 1, 1)
end_icons += flat end_icons += flat
@@ -181,11 +183,33 @@
text += "body destroyed" text += "body destroyed"
text += ")" text += ")"
if(Mind.objectives.len)//If the traitor had no objectives, don't need to process this.
var/count = 1
for(var/datum/objective/objective in Mind.objectives)
if(objective.check_completion())
text += "<br><B>Objective #[count]</B>: [objective.explanation_text] <font color='green'><B>Success!</B></font>"
feedback_add_details("traitor_objective","[objective.type]|SUCCESS")
else
text += "<br><B>Objective #[count]</B>: [objective.explanation_text] <font color='red'>Fail.</font>"
feedback_add_details("traitor_objective","[objective.type]|FAIL")
traitorwin = 0
count++
var/special_role_text
if(Mind.special_role)
special_role_text = lowertext(Mind.special_role)
else
special_role_text = "antagonist"
if(Mind.total_TC) if(Mind.total_TC)
if(Mind.spent_TC) if(Mind.spent_TC)
text += "<br><span class='sinister'>TC Remaining: [Mind.total_TC - Mind.spent_TC]/[Mind.total_TC] - The tools used by the Enthralled were: [list2text(Mind.uplink_items_bought, ", ")]</span>" text += "<br><span class='sinister'>TC Remaining: [Mind.total_TC - Mind.spent_TC]/[Mind.total_TC] - The tools used by the Enthralled were: [list2text(Mind.uplink_items_bought, ", ")]</span>"
else else
text += "<span class='sinister'>The Enthralled was a smooth operator this round (did not purchase any uplink items)</span>" text += "<span class='sinister'>The Enthralled was a smooth operator this round (did not purchase any uplink items)</span>"
if(traitorwin)
text += "<br><font color='green'><B>The [special_role_text] was successful!</B></font>"
feedback_add_details("traitor_success","SUCCESS")
else
text += "<br><font color='red'><B>The [special_role_text] has failed!</B></font>"
feedback_add_details("traitor_success","FAIL")
text += "<BR><HR>" text += "<BR><HR>"
else else
if(text) if(text)

View File

@@ -374,7 +374,7 @@
if(!C.vampire_affected(mind)) if(!C.vampire_affected(mind))
C.visible_message("<span class='warning'>[C] seems to resist the takeover!</span>", "<span class='notice'>Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil</span>") C.visible_message("<span class='warning'>[C] seems to resist the takeover!</span>", "<span class='notice'>Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil</span>")
if(!ishuman(C)) if(!ishuman(C))
src << "<span class='warning'>You can only enthrall humans!" src << "<span class='warning'>You can only enthrall humanoids!"
return 0 return 0
return 1 return 1
@@ -387,10 +387,15 @@
ticker.mode.thralls[ref] = list(H.mind) ticker.mode.thralls[ref] = list(H.mind)
else else
ticker.mode.thralls[ref] += H.mind ticker.mode.thralls[ref] += H.mind
var/datum/objective/protect/new_objective = new /datum/objective/protect
new_objective.owner = H.mind
new_objective.target = src.mind
new_objective.explanation_text = "You have been Enthralled by [src.name], the vampire. Follow their every command."
H.mind.objectives += new_objective
ticker.mode.enthralled.Add(H.mind) ticker.mode.enthralled.Add(H.mind)
ticker.mode.enthralled[H.mind] = src.mind ticker.mode.enthralled[H.mind] = src.mind
H.mind.special_role = "VampThrall" H.mind.special_role = "VampThrall"
H << "<span class='sinister'>You have been Enthralled by [name]. Follow their every command.</span>" H << "<span class='sinister'>You have been Enthralled by [src.name]. Follow their every command.</span>"
src << "<span class='warning'>You have successfully Enthralled [H.name]. <i>If they refuse to do as you say just adminhelp.</i></span>" src << "<span class='warning'>You have successfully Enthralled [H.name]. <i>If they refuse to do as you say just adminhelp.</i></span>"
ticker.mode.update_vampire_icons_added(H.mind) ticker.mode.update_vampire_icons_added(H.mind)
ticker.mode.update_vampire_icons_added(src.mind) ticker.mode.update_vampire_icons_added(src.mind)

View File

@@ -628,6 +628,22 @@
// END AUTOFIX // END AUTOFIX
else else
dat += "<tr><td><i>Vampire not found!</i></td></tr>" dat += "<tr><td><i>Vampire not found!</i></td></tr>"
if(ticker.mode.enthralled.len > 0)
dat += "<br><table cellspacing=5><tr><td><B>Thralls</B></td><td></td><td></td></tr>"
for(var/datum/mind/Mind in ticker.mode.enthralled)
var/mob/M = Mind.current
if(M)
// AUTOFIXED BY fix_string_idiocy.py
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\admin\player_panel.dm:521: dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += {"<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>
<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>
<td><A HREF='?src=\ref[src];traitor=\ref[M]'>Show Objective</A></td></tr>"}
// END AUTOFIX
else
dat += "<tr><td><i>Enthralled not found!</i></td></tr>"
if(ticker.mode.traitors.len > 0) if(ticker.mode.traitors.len > 0)
dat += "<br><table cellspacing=5><tr><td><B>Traitors</B></td><td></td><td></td></tr>" dat += "<br><table cellspacing=5><tr><td><B>Traitors</B></td><td></td><td></td></tr>"
for(var/datum/mind/traitor in ticker.mode.traitors) for(var/datum/mind/traitor in ticker.mode.traitors)

View File

@@ -256,7 +256,7 @@ Works together with spawning an observer, noted above.
if("Vampire") if("Vampire")
U.client.images += image(tempHud,target,"vampire") U.client.images += image(tempHud,target,"vampire")
if("VampThrall") if("VampThrall")
U.client.images += image(tempHud,target,"vampire") U.client.images += image(tempHud,target,"vampthrall")
else//If we don't know what role they have but they have one. else//If we don't know what role they have but they have one.
U.client.images += image(tempHud,target,"hudunknown1") U.client.images += image(tempHud,target,"hudunknown1")
else if(issilicon(target))//If the silicon mob has no law datum, no inherent laws, or a law zero, add them to the hud. else if(issilicon(target))//If the silicon mob has no law datum, no inherent laws, or a law zero, add them to the hud.