mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 11:13:16 +00:00
Derp, missed files.
This commit is contained in:
211
code/game/gamemodes/autotraitor/autotraitor.dm
Normal file
211
code/game/gamemodes/autotraitor/autotraitor.dm
Normal file
@@ -0,0 +1,211 @@
|
||||
//This is a beta game mode to test ways to implement an "infinite" traitor round in which more traitors are automatically added in as needed.
|
||||
//Automatic traitor adding is complete pending the inevitable bug fixes. Need to add a respawn system to let dead people respawn after 30 minutes or so.
|
||||
|
||||
|
||||
/datum/game_mode/traitor/autotraitor
|
||||
name = "AutoTraitor"
|
||||
config_tag = "Extend-A-Traitormongous"
|
||||
|
||||
var/list/possible_traitors
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/announce()
|
||||
..()
|
||||
world << "<B>This is a test bed for theories and methods to implement an infinite traitor round. Traitors will be added to the round automagically as needed.<br>Expect bugs.</B>"
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/pre_setup()
|
||||
possible_traitors = get_players_for_role(BE_TRAITOR)
|
||||
|
||||
for(var/mob/new_player/P in world)
|
||||
if(P.client && P.ready)
|
||||
num_players++
|
||||
|
||||
//var/r = rand(5)
|
||||
var/num_traitors = 1
|
||||
var/max_traitors = 1
|
||||
var/traitor_prob = 0
|
||||
max_traitors = round(num_players / 10) + 1
|
||||
traitor_prob = (num_players - (max_traitors - 1) * 10) * 10
|
||||
|
||||
// Stop setup if no possible traitors
|
||||
if(!possible_traitors.len)
|
||||
return 0
|
||||
|
||||
if(config.traitor_scaling)
|
||||
num_traitors = max_traitors - 1 + prob(traitor_prob)
|
||||
log_game("Number of traitors: [num_traitors]")
|
||||
message_admins("Players counted: [num_players] Number of traitors chosen: [num_traitors]")
|
||||
else
|
||||
num_traitors = max(1, min(num_players(), traitors_possible))
|
||||
|
||||
|
||||
for(var/i = 0, i < num_traitors, i++)
|
||||
var/datum/mind/traitor = pick(possible_traitors)
|
||||
traitors += traitor
|
||||
possible_traitors.Remove(traitor)
|
||||
|
||||
for(var/datum/mind/traitor in traitors)
|
||||
if(!traitor || !istype(traitor))
|
||||
traitors.Remove(traitor)
|
||||
continue
|
||||
if(istype(traitor))
|
||||
traitor.special_role = "traitor"
|
||||
|
||||
// if(!traitors.len)
|
||||
// return 0
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/post_setup()
|
||||
..()
|
||||
for(var/mob/T in world)
|
||||
if(T.mind in possible_traitors)
|
||||
T.be_syndicate = 1
|
||||
abandon_allowed = 1
|
||||
traitorcheckloop()
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/proc/traitorcheckloop()
|
||||
spawn(9000)
|
||||
if(emergency_shuttle.departed)
|
||||
return
|
||||
//message_admins("Performing AutoTraitor Check")
|
||||
var/playercount = 0
|
||||
var/traitorcount = 0
|
||||
var/possible_traitors[0]
|
||||
for(var/mob/living/player in world)
|
||||
|
||||
if (player.client && player.stat != 2)
|
||||
playercount += 1
|
||||
if (player.client && player.mind && player.mind.special_role && player.stat != 2)
|
||||
traitorcount += 1
|
||||
if (player.client && player.mind && !player.mind.special_role && player.stat != 2 && player.be_syndicate && !jobban_isbanned(player, "Syndicate"))
|
||||
possible_traitors += player
|
||||
//message_admins("Live Players: [playercount]")
|
||||
//message_admins("Live Traitors: [traitorcount]")
|
||||
// message_admins("Potential Traitors:")
|
||||
// for(var/mob/living/traitorlist in possible_traitors)
|
||||
// message_admins("[traitorlist.real_name]")
|
||||
|
||||
// var/r = rand(5)
|
||||
// var/target_traitors = 1
|
||||
var/max_traitors = 1
|
||||
var/traitor_prob = 0
|
||||
max_traitors = round(playercount / 10) + 1
|
||||
traitor_prob = (playercount - (max_traitors - 1) * 10) * 5
|
||||
if(traitorcount < max_traitors - 1)
|
||||
traitor_prob += 50
|
||||
|
||||
|
||||
if(traitorcount < max_traitors)
|
||||
//message_admins("Number of Traitors is below maximum. Rolling for new Traitor.")
|
||||
//message_admins("The probability of a new traitor is [traitor_prob]%")
|
||||
|
||||
if(prob(traitor_prob))
|
||||
message_admins("Making a new Traitor.")
|
||||
if(!possible_traitors.len)
|
||||
message_admins("No potential traitors. Cancelling new traitor.")
|
||||
traitorcheckloop()
|
||||
return
|
||||
var/mob/living/newtraitor = pick(possible_traitors)
|
||||
//message_admins("[newtraitor.real_name] is the new Traitor.")
|
||||
|
||||
forge_traitor_objectives(newtraitor.mind)
|
||||
equip_traitor(newtraitor)
|
||||
traitors += newtraitor.mind
|
||||
newtraitor << "\red <B>ATTENTION:</B> \black It is time to pay your debt to the Syndicate..."
|
||||
newtraitor << "<B>You are now a traitor.</B>"
|
||||
newtraitor.mind.special_role = "traitor"
|
||||
var/obj_count = 1
|
||||
newtraitor << "\blue Your current objectives:"
|
||||
for(var/datum/objective/objective in newtraitor.mind.objectives)
|
||||
newtraitor << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
//else
|
||||
//message_admins("No new traitor being added.")
|
||||
//else
|
||||
//message_admins("Number of Traitors is at maximum. Not making a new Traitor.")
|
||||
|
||||
|
||||
/* Old equation. Commenting out.
|
||||
target_traitors = max(1, min(round((playercount + r) / 10, 1), traitors_possible))
|
||||
message_admins("Target Traitor Count is: [target_traitors]")
|
||||
|
||||
if (traitorcount < target_traitors)
|
||||
message_admins("Number of Traitors is below Target. Making a new Traitor.")
|
||||
var/mob/living/newtraitor = pick(possible_traitors)
|
||||
message_admins("[newtraitor.real_name] is the new Traitor.")
|
||||
|
||||
for(var/datum/objective/o in SelectObjectives(newtraitor.mind.assigned_role, newtraitor.mind))
|
||||
o.owner = newtraitor.mind
|
||||
newtraitor.mind.objectives += o
|
||||
|
||||
equip_traitor(newtraitor)
|
||||
traitors += newtraitor.mind
|
||||
newtraitor << "\red <B>ATTENTION:</B> \black It is time to pay your debt to the Syndicate..."
|
||||
newtraitor << "<B>You are now a traitor.</B>"
|
||||
newtraitor.mind.special_role = "traitor"
|
||||
var/obj_count = 1
|
||||
newtraitor << "\blue Your current objectives:"
|
||||
for(var/datum/objective/objective in newtraitor.mind.objectives)
|
||||
newtraitor << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
else
|
||||
message_admins("Number of Traitors is at Target. No new Traitor.")
|
||||
*/
|
||||
traitorcheckloop()
|
||||
|
||||
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/latespawn(mob/living/carbon/human/character)
|
||||
..()
|
||||
if(emergency_shuttle.departed)
|
||||
return
|
||||
//message_admins("Late Join Check")
|
||||
if(character.be_syndicate == 1 && !jobban_isbanned(character, "Syndicate"))
|
||||
//message_admins("Late Joiner has Be Syndicate")
|
||||
//message_admins("Checking number of players")
|
||||
var/playercount = 0
|
||||
var/traitorcount = 0
|
||||
for(var/mob/living/player in world)
|
||||
|
||||
if (player.client && player.stat != 2)
|
||||
playercount += 1
|
||||
if (player.client && player.mind && player.mind.special_role && player.stat != 2)
|
||||
traitorcount += 1
|
||||
//message_admins("Live Players: [playercount]")
|
||||
//message_admins("Live Traitors: [traitorcount]")
|
||||
|
||||
//var/r = rand(5)
|
||||
//var/target_traitors = 1
|
||||
var/max_traitors = 2
|
||||
var/traitor_prob = 0
|
||||
max_traitors = round(playercount / 10) + 1
|
||||
traitor_prob = (playercount - (max_traitors - 1) * 10) * 5
|
||||
if(traitorcount < max_traitors - 1)
|
||||
traitor_prob += 50
|
||||
|
||||
//target_traitors = max(1, min(round((playercount + r) / 10, 1), traitors_possible))
|
||||
//message_admins("Target Traitor Count is: [target_traitors]")
|
||||
if (traitorcount < max_traitors)
|
||||
//message_admins("Number of Traitors is below maximum. Rolling for New Arrival Traitor.")
|
||||
//message_admins("The probability of a new traitor is [traitor_prob]%")
|
||||
if(prob(traitor_prob))
|
||||
message_admins("New traitor roll passed. Making a new Traitor.")
|
||||
forge_traitor_objectives(character.mind)
|
||||
equip_traitor(character)
|
||||
traitors += character.mind
|
||||
character << "\red <B>You are the traitor.</B>"
|
||||
character.mind.special_role = "traitor"
|
||||
var/obj_count = 1
|
||||
character << "\blue Your current objectives:"
|
||||
for(var/datum/objective/objective in character.mind.objectives)
|
||||
character << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
//else
|
||||
//message_admins("New traitor roll failed. No new traitor.")
|
||||
//else
|
||||
//message_admins("Late Joiner does not have Be Syndicate")
|
||||
|
||||
|
||||
|
||||
349
code/game/gamemodes/revolution/rp-revolution.dm
Normal file
349
code/game/gamemodes/revolution/rp-revolution.dm
Normal file
@@ -0,0 +1,349 @@
|
||||
// To add a rev to the list of revolutionaries, make sure it's rev (with if(ticker.mode.name == "revolution)),
|
||||
// then call ticker.mode:add_revolutionary(_THE_PLAYERS_MIND_)
|
||||
// nothing else needs to be done, as that proc will check if they are a valid target.
|
||||
// Just make sure the converter is a head before you call it!
|
||||
// To remove a rev (from brainwashing or w/e), call ticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_),
|
||||
// this will also check they're not a head, so it can just be called freely
|
||||
// If the rev icons start going wrong for some reason, ticker.mode:update_all_rev_icons() can be called to correct them.
|
||||
// If the game somtimes isn't registering a win properly, then ticker.mode.check_win() isn't being called somewhere.
|
||||
#define RPREV_REQUIRE_REVS_ALIVE 0
|
||||
#define RPREV_REQUIRE_HEADS_ALIVE 0
|
||||
|
||||
/datum/game_mode/rp_revolution
|
||||
name = "rp-revolution"
|
||||
config_tag = "rp-revolution"
|
||||
|
||||
var/finished = 0
|
||||
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
|
||||
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
|
||||
var/all_brigged = 0
|
||||
var/brigged_time = 0
|
||||
|
||||
uplink_welcome = "Syndicate Uplink Console:"
|
||||
uplink_uses = 10
|
||||
|
||||
|
||||
/datum/game_mode/rp_revolution/announce()
|
||||
world << "<B>The current game mode is - Revolution RP!</B>"
|
||||
// world << "<B>Some crewmembers are attempting to start a revolution!<BR>\nRevolutionaries - Kill the Captain, HoP, and HoS. Convert other crewmembers (excluding the Captain, HoP, HoS, and security officers) to your cause. Protect your leaders.<BR>\nPersonnel - Protect the Captain, HoP, and HoR. Kill the leaders of the revolution, and brainwash the other revolutionaries (by beating them in the head).</B>"
|
||||
|
||||
/datum/game_mode/rp_revolution/send_intercept()
|
||||
var/intercepttext = "<FONT size = 3><B>Cent. Com. Update</B> Requested staus information:</FONT><HR>"
|
||||
intercepttext += "<B> Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:</B>"
|
||||
|
||||
var/list/possible_modes = list()
|
||||
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf")
|
||||
possible_modes -= "nuke"
|
||||
var/number = pick(2, 3)
|
||||
var/i = 0
|
||||
for(i = 0, i < number, i++)
|
||||
possible_modes.Remove(pick(possible_modes))
|
||||
possible_modes.Insert(rand(possible_modes.len), "nuke")
|
||||
|
||||
var/datum/intercept_text/i_text = new /datum/intercept_text
|
||||
for(var/A in possible_modes)
|
||||
intercepttext += i_text.build(A, pick(head_revolutionaries))
|
||||
|
||||
for (var/obj/machinery/computer/communications/comm in world)
|
||||
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
||||
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
|
||||
intercept.name = "paper- 'Cent. Com. Status Summary'"
|
||||
intercept.info = intercepttext
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. Status Summary")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
|
||||
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
|
||||
|
||||
/datum/game_mode/rp_revolution/post_setup()
|
||||
|
||||
var/list/revs_possible = list()
|
||||
revs_possible = get_possible_revolutionaries()
|
||||
var/list/heads = list()
|
||||
heads = get_living_heads()
|
||||
var/rev_number = 0
|
||||
|
||||
if(!revs_possible || !heads)
|
||||
world << "<B> \red Not enough players for RP revolution game mode. Restarting world in 5 seconds."
|
||||
sleep(50)
|
||||
world.Reboot()
|
||||
return
|
||||
|
||||
if(revs_possible.len >= 3)
|
||||
rev_number = 3
|
||||
else
|
||||
rev_number = revs_possible.len
|
||||
|
||||
while(rev_number > 0)
|
||||
head_revolutionaries += pick(revs_possible - head_revolutionaries)
|
||||
rev_number--
|
||||
|
||||
for(var/datum/mind/rev_mind in head_revolutionaries)
|
||||
for(var/datum/mind/head_mind in heads)
|
||||
var/datum/objective/capture/rev_obj = new
|
||||
rev_obj.owner = rev_mind
|
||||
rev_obj.find_target_by_role(head_mind.assigned_role)
|
||||
rev_mind.objectives += rev_obj
|
||||
equip_revolutionary(rev_mind.current)
|
||||
rev_mind.current.verbs += /mob/living/carbon/human/proc/RevConvert
|
||||
update_rev_icons_added(rev_mind)
|
||||
|
||||
for(var/datum/mind/rev_mind in head_revolutionaries)
|
||||
var/obj_count = 1
|
||||
rev_mind.current << "\blue You are a member of the revolutionaries' leadership!"
|
||||
for(var/datum/objective/objective in rev_mind.objectives)
|
||||
rev_mind.current << "<B>Objective #[obj_count]</B>: [objective.explanation_text]"
|
||||
obj_count++
|
||||
|
||||
spawn (rand(waittime_l, waittime_h))
|
||||
send_intercept()
|
||||
|
||||
/datum/game_mode/rp_revolution/send_intercept()
|
||||
var/intercepttext = "<FONT size = 3><B>Cent. Com. Update</B> Requested staus information:</FONT><HR>"
|
||||
intercepttext += "<B> Cent. Com has recently been contacted by the following syndicate affiliated organisations in your area, please investigate any information you may have:</B>"
|
||||
|
||||
var/list/possible_modes = list()
|
||||
possible_modes.Add("revolution", "wizard", "nuke", "traitor", "malf")
|
||||
possible_modes -= "[ticker.mode]"
|
||||
var/number = pick(2, 3)
|
||||
var/i = 0
|
||||
for(i = 0, i < number, i++)
|
||||
possible_modes.Remove(pick(possible_modes))
|
||||
possible_modes.Insert(rand(possible_modes.len), "[ticker.mode]")
|
||||
|
||||
var/datum/intercept_text/i_text = new /datum/intercept_text
|
||||
for(var/A in possible_modes)
|
||||
intercepttext += i_text.build(A, pick(head_revolutionaries))
|
||||
|
||||
for (var/obj/machinery/computer/communications/comm in world)
|
||||
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
||||
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
|
||||
intercept.name = "paper- 'Cent. Com. Status Summary'"
|
||||
intercept.info = intercepttext
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. Status Summary")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
|
||||
command_alert("Summary downloaded and printed out at all communications consoles.", "Enemy communication intercept. Security Level Elevated.")
|
||||
|
||||
spawn(54000)
|
||||
command_alert("Summary downloaded and printed out at all communications consoles.", "The revolution leaders have been determined.")
|
||||
intercepttext = "<FONT size = 3><B>Cent. Com. Update</B> Requested status information:</FONT><HR>"
|
||||
intercepttext += "We have determined the revolution leaders to be:"
|
||||
for(var/datum/mind/revmind in head_revolutionaries)
|
||||
intercepttext += "<br>[revmind.current.real_name]"
|
||||
intercepttext += "<br>Please arrest them at once."
|
||||
for (var/obj/machinery/computer/communications/comm in world)
|
||||
if (!(comm.stat & (BROKEN | NOPOWER)) && comm.prints_intercept)
|
||||
var/obj/item/weapon/paper/intercept = new /obj/item/weapon/paper( comm.loc )
|
||||
intercept.name = "paper- 'Cent. Com. Status Summary'"
|
||||
intercept.info = intercepttext
|
||||
|
||||
comm.messagetitle.Add("Cent. Com. Status Summary")
|
||||
comm.messagetext.Add(intercepttext)
|
||||
spawn(12000)
|
||||
command_alert("Repeating the previous message over intercoms due to urgency. The station has enemy operatives onboard by the names of [reveal_rev_heads()], please arrest them at once.", "The revolution leaders have been determined.")
|
||||
|
||||
|
||||
/datum/game_mode/rp_revolution/proc/reveal_rev_heads()
|
||||
. = ""
|
||||
for(var/i = 1, i <= head_revolutionaries.len,i++)
|
||||
var/datum/mind/revmind = head_revolutionaries[i]
|
||||
if(i < head_revolutionaries.len)
|
||||
. += "[revmind.current.real_name],"
|
||||
else
|
||||
. += "and [revmind.current.real_name]"
|
||||
|
||||
///datum/game_mode/rp_revolution/proc/equip_revolutionary(mob/living/carbon/human/rev_mob)
|
||||
// if(!istype(rev_mob))
|
||||
// return
|
||||
|
||||
// spawn (100)
|
||||
// if (rev_mob.r_store)
|
||||
// rev_mob.equip_if_possible(new /obj/item/weapon/paper/communist_manifesto(rev_mob), rev_mob.slot_l_store)
|
||||
// if (rev_mob.l_store)
|
||||
// rev_mob.equip_if_possible(new /obj/item/weapon/paper/communist_manifesto(rev_mob), rev_mob.slot_r_store)
|
||||
|
||||
|
||||
/datum/game_mode/rp_revolution/check_win()
|
||||
if(check_rev_victory())
|
||||
finished = 1
|
||||
else if(check_heads_victory())
|
||||
finished = 2
|
||||
return
|
||||
|
||||
/datum/game_mode/rp_revolution/check_finished()
|
||||
if(finished != 0)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/datum/game_mode/rp_revolution/proc/get_possible_revolutionaries()
|
||||
var/list/candidates = list()
|
||||
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.client)
|
||||
if(player.be_syndicate)
|
||||
candidates += player.mind
|
||||
|
||||
if(candidates.len < 1)
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.client)
|
||||
candidates += player.mind
|
||||
|
||||
var/list/uncons = get_unconvertables()
|
||||
for(var/datum/mind/mind in uncons)
|
||||
candidates -= mind
|
||||
|
||||
if(candidates.len < 1)
|
||||
return null
|
||||
else
|
||||
return candidates
|
||||
|
||||
/datum/game_mode/rp_revolution/proc/get_unconvertables()
|
||||
var/list/ucs = list()
|
||||
for(var/mob/living/carbon/human/player in world)
|
||||
if(player.mind)
|
||||
var/role = player.mind.assigned_role
|
||||
if(role in list("Captain", "Head of Security", "Head of Personnel", "Chief Engineer", "Research Director", "Security Officer", "Forensic Technician", "AI"))
|
||||
ucs += player.mind
|
||||
|
||||
return ucs
|
||||
|
||||
/datum/game_mode/rp_revolution/proc/check_rev_victory()
|
||||
for(var/datum/mind/rev_mind in head_revolutionaries)
|
||||
for(var/datum/objective/objective in rev_mind.objectives)
|
||||
if(!(objective.check_completion()))
|
||||
return 0
|
||||
|
||||
return 1
|
||||
|
||||
/datum/game_mode/rp_revolution/proc/check_heads_victory()
|
||||
for(var/datum/mind/rev_mind in head_revolutionaries)
|
||||
if(rev_mind.current.stat != 2)
|
||||
var/turf/revloc = rev_mind.current.loc
|
||||
if(!istype(revloc.loc,/area/security/brig) && !rev_mind.current.handcuffed)
|
||||
return 0
|
||||
else if(RPREV_REQUIRE_REVS_ALIVE) return 0
|
||||
return 1
|
||||
|
||||
/datum/game_mode/rp_revolution/declare_completion()
|
||||
|
||||
var/text = ""
|
||||
if(finished == 1)
|
||||
world << "\red <FONT size = 3><B> The heads of staff were relieved of their posts! The revolutionaries win!</B></FONT>"
|
||||
else if(finished == 2)
|
||||
world << "\red <FONT size = 3><B> The heads of staff managed to stop the revolution!</B></FONT>"
|
||||
|
||||
world << "<FONT size = 2><B>The head revolutionaries were: </B></FONT>"
|
||||
for(var/datum/mind/rev_mind in head_revolutionaries)
|
||||
text = ""
|
||||
if(rev_mind.current)
|
||||
text += "[rev_mind.current.real_name]"
|
||||
if(rev_mind.current.stat == 2)
|
||||
text += " (Dead)"
|
||||
else
|
||||
text += " (Survived!)"
|
||||
else
|
||||
text += "[rev_mind.key] (character destroyed)"
|
||||
|
||||
world << text
|
||||
|
||||
text = ""
|
||||
world << "<FONT size = 2><B>The converted revolutionaries were: </B></FONT>"
|
||||
for(var/datum/mind/rev_nh_mind in revolutionaries)
|
||||
if(rev_nh_mind.current)
|
||||
text += "[rev_nh_mind.current.real_name]"
|
||||
if(rev_nh_mind.current.stat == 2)
|
||||
text += " (Dead)"
|
||||
else
|
||||
text += " (Survived!)"
|
||||
else
|
||||
text += "[rev_nh_mind.key] (character destroyed)"
|
||||
text += ", "
|
||||
|
||||
world << text
|
||||
|
||||
world << "<FONT size = 2><B>The heads of staff were: </B></FONT>"
|
||||
var/list/heads = list()
|
||||
heads = get_all_heads()
|
||||
for(var/datum/mind/head_mind in heads)
|
||||
text = ""
|
||||
if(head_mind.current)
|
||||
text += "[head_mind.current.real_name]"
|
||||
if(head_mind.current.stat == 2)
|
||||
text += " (Dead)"
|
||||
else
|
||||
text += " (Survived!)"
|
||||
else
|
||||
text += "[head_mind.key] (character destroyed)"
|
||||
|
||||
world << text
|
||||
return 1
|
||||
|
||||
|
||||
/*obj/item/weapon/paper/communist_manifesto
|
||||
name = "Communist Manifesto"
|
||||
icon = 'books.dmi'
|
||||
icon_state = "redcommunist"
|
||||
info = "Supporters of the Revolution:<br><br>"
|
||||
attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(user.mind in ticker.mode:head_revolutionaries)
|
||||
if(RevConvert(M,user))
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("\red [] converts [] with the Communist Manifesto!", user, M))
|
||||
info += "[M.real_name]<br>"
|
||||
else
|
||||
for(var/mob/O in viewers(user, null))
|
||||
O.show_message(text("\red [] fails to convert [] with the Communist Manifesto!", user, M))
|
||||
else
|
||||
usr << "\red You are completely confounded as to the operation of this tome."
|
||||
return
|
||||
|
||||
proc/RevConvert(mob/living/carbon/M,mob/user)
|
||||
if(!istype(M)) return 0
|
||||
if((M.mind in ticker.mode:head_revolutionaries) || (M.mind in ticker.mode:revolutionaries))
|
||||
user << "\red <b>[M] is already a revolutionary!</b>"
|
||||
return 0
|
||||
else if(M.mind in ticker.mode:get_unconvertables())
|
||||
user << "\red <b>[M] cannot be a revolutionary!</b>"
|
||||
return 0
|
||||
else
|
||||
if(world.time < M.mind.rev_cooldown)
|
||||
user << "\red Wait five seconds before reconversion attempt."
|
||||
return 0
|
||||
user << "\red Attempting to convert [M]..."
|
||||
var/choice = alert(M,"Asked by [user]: Do you want to join the revolution?","Align Thyself with the Revolution!","No!","Yes!")
|
||||
if(choice == "Yes!")
|
||||
ticker.mode:add_revolutionary(M.mind)
|
||||
user << "\blue <b>[M] joins the revolution!</b>"
|
||||
. = 1
|
||||
else if(choice == "No!")
|
||||
user << "\red <b>[M] does not support the revolution!</b>"
|
||||
. = 0
|
||||
M.mind.rev_cooldown = world.time+50*/
|
||||
|
||||
mob/living/carbon/human/proc
|
||||
RevConvert(mob/M as mob in oview(src))
|
||||
set name = "Rev-Convert"
|
||||
if(((src.mind in ticker.mode:head_revolutionaries) || (src.mind in ticker.mode:revolutionaries)))
|
||||
if((M.mind in ticker.mode:head_revolutionaries) || (M.mind in ticker.mode:revolutionaries))
|
||||
src << "\red <b>[M] is already be a revolutionary!</b>"
|
||||
else if(src.mind in ticker.mode:get_unconvertables())
|
||||
src << "\red <b>[M] cannot be a revolutionary!</b>"
|
||||
else
|
||||
if(world.time < M.mind.rev_cooldown)
|
||||
src << "\red Wait five seconds before reconversion attempt."
|
||||
return
|
||||
src << "\red Attempting to convert [M]..."
|
||||
log_admin("[src]([src.ckey]) attempted to convert [M].")
|
||||
message_admins("\red [src]([src.ckey]) attempted to convert [M].")
|
||||
var/choice = alert(M,"Asked by [src]: Do you want to join the revolution?","Align Thyself with the Revolution!","No!","Yes!")
|
||||
if(choice == "Yes!")
|
||||
ticker.mode:add_revolutionary(M.mind)
|
||||
M << "\blue You join the revolution!"
|
||||
src << "\blue <b>[M] joins the revolution!</b>"
|
||||
else if(choice == "No!")
|
||||
M << "\red You reject this traitorous cause!"
|
||||
src << "\red <b>[M] does not support the revolution!</b>"
|
||||
M.mind.rev_cooldown = world.time+50
|
||||
Reference in New Issue
Block a user