mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
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:
@@ -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 ***/
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user