Skip to content

Commit

Permalink
Merge pull request yogstation13#1262 from Cruix/nuclear_war_vote
Browse files Browse the repository at this point in the history
Changes nukeops war to be a vote
  • Loading branch information
oisin100 authored Jun 22, 2016
2 parents a3ec90c + 313fb98 commit 89fce9b
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 7 deletions.
6 changes: 4 additions & 2 deletions code/game/gamemodes/nuclear/nuclear.dm
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@
synd_mind.current << "<B>If you feel you are not up to this task, give your ID to another operative.</B>"
synd_mind.current << "<B>In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.</B>"

var/obj/item/device/nuclear_challenge/challenge = new /obj/item/device/nuclear_challenge
synd_mind.current.equip_to_slot_or_del(challenge, slot_r_hand)
var/obj/item/device/nuclear_challenge/vote/voter = new /obj/item/device/nuclear_challenge/vote()
synd_mind.current.equip_to_slot_or_del(voter, slot_l_hand)

var/list/foundIDs = synd_mind.current.search_contents_for(/obj/item/weapon/card/id)
if(foundIDs.len)
Expand Down Expand Up @@ -179,6 +179,8 @@
if(synd_mob.backbag == 2) synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(synd_mob), slot_back)
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/automatic/pistol(synd_mob), slot_belt)
synd_mob.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(synd_mob.back), slot_in_backpack)
var/obj/item/device/nuclear_challenge/vote/voter = new /obj/item/device/nuclear_challenge/vote()
synd_mob.equip_to_slot_or_del(voter, slot_l_hand)

var/obj/item/device/radio/uplink/U = new /obj/item/device/radio/uplink(synd_mob)
U.hidden_uplink.uplink_owner="[synd_mob.key]"
Expand Down
80 changes: 75 additions & 5 deletions code/game/gamemodes/nuclear/nuclear_challenge.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,94 @@
desc = "Use to send a declaration of hostilities to the target, delaying your shuttle departure for 20 minutes while they prepare for your assault. \
Such a brazen move will attract the attention of powerful benefactors within the Syndicate, who will supply your team with a massive amount of bonus telecrystals. \
Must be used within five minutes, or your benefactors will lose interest."
var/used = 0

/obj/item/device/nuclear_challenge/attack_self(mob/living/user)
if(!doChecks(user))
return

var/are_you_sure = alert(user, "Are you sure you want to alert the enemy crew? You will receive [round(CHALLENGE_TC_PER_PLAYER*player_list.len)] bonus Telecrystals for declaring War.", "Declare war?", "Yes", "No")

if(are_you_sure == "Yes")
if(!doChecks(user))
return
declare_nuclear_war(user)
used = 1
else
user << "On second thought, the element of surprise isn't so bad after all."

/obj/item/device/nuclear_challenge/proc/doChecks(mob/living/user)
if(loc != user)
return 0
if(used)
user << "You have already voted."
return 0
if(player_list.len < CHALLENGE_MIN_PLAYERS)
user << "The enemy crew is too small to be worth declaring war on."
return
return 0
if(user.z != ZLEVEL_CENTCOM)
user << "You have to be at your base to use this."
return
return 0

if(world.time > CHALLENGE_TIME_LIMIT)
user << "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand."
return 0

return 1

//The voting version

/obj/item/device/nuclear_challenge/vote
name = "Declaration of War (Challenge Mode) Voter"
icon_state = "gangtool-yellow"
item_state = "walkietalkie"
desc = "Use to cast your vote for sending a declaration of hostilities to the target, delaying your shuttle departure for 20 minutes while they prepare for your assault. \
Such a brazen move will attract the attention of powerful benefactors within the Syndicate, who will supply your team with a massive amount of bonus telecrystals. \
Must be used within five minutes, or your benefactors will lose interest."
var/global/yesVotes = 0
var/global/noVotes = 0
var/global/votesNeeded = 3

/obj/item/device/nuclear_challenge/vote/attack_self(mob/living/user)
if(!doChecks(user))
return

var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]]. Are you sure you want to alert the enemy crew? You will receive [round(CHALLENGE_TC_PER_PLAYER*player_list.len)] bonus Telecrystals for declaring War.", "Declare war?", "Yes", "No")
if(are_you_sure == "No")
user << "On second thought, the element of surprise isn't so bad after all."
var/are_you_sure = alert(user, "Are you sure you want to vote to alert the enemy crew? You will receive [round(CHALLENGE_TC_PER_PLAYER*player_list.len)] bonus Telecrystals for declaring War. You cannot change your vote if you select Yes or No.", "Declare war?", "Yes", "No", "Cancel Vote")

if(!doChecks(user))
return

if(are_you_sure == "Yes")
used = 1
yesVotes++
announce("[usr.real_name] has voted YES for war. There are [yesVotes] for war and [noVotes] against war.")
if(yesVotes >= votesNeeded)
declare_nuclear_war(user)
else if(are_you_sure == "No")
used = 1
noVotes++
announce("[usr.real_name] has voted NO for war. There are [yesVotes] for war and [noVotes] against war.")
else
user << "You decide to think it over more."

/obj/item/device/nuclear_challenge/vote/doChecks(mob/living/user)
if(!..())
return 0

if(yesVotes >= votesNeeded)
user << "Your vote no longer matters, your comrades have decided for you."
return 0

return 1

/obj/item/device/nuclear_challenge/vote/proc/announce(var/annoucement)
for(var/obj/item/device/nuclear_challenge/vote/V in world)
var/mob/living/mob = get(V.loc,/mob/living)
if(mob)
mob.show_message("\icon[V] [annoucement]", 2)


/proc/declare_nuclear_war(mob/living/user)
var/war_declaration = "[user.real_name] has declared his intent to utterly destroy [station_name()] with a nuclear device, and dares the crew to try and stop them."
priority_announce(war_declaration, title = "Declaration of War", sound = 'sound/machines/Alarm.ogg')
user << "You've attracted the attention of powerful forces within the syndicate. A bonus bundle of telecrystals has been granted to your team. Great things await you if you complete the mission."
Expand Down

0 comments on commit 89fce9b

Please sign in to comment.