Traitors/nukeops can now buy borers

This adds a subtype of borers to the traitor uplink. This version cannot
reproduce and is loyal to the owner who released it.
The borer's objectives are tied to the objectives of their owner and
will greentext together with them.
This commit is contained in:
ktccd
2017-04-01 02:48:16 +02:00
parent 376dd1f89a
commit c36a0845af
6 changed files with 102 additions and 4 deletions
+52
View File
@@ -292,3 +292,55 @@
veil_msg = "<span class='warning'>You sense an adorable presence lurking just beyond the veil...</span>"
objective_verb = "Hug and Tickle"
demon_type = /mob/living/simple_animal/slaughter/laughter
////////////Syndicate Cortical Borer
obj/item/weapon/antag_spawner/syndi_borer
name = "syndicate brain-slug container"
desc = "Releases a modified cortical borer to assist the user."
icon_state = "locator"
obj/item/weapon/antag_spawner/syndi_borer/spawn_antag(client/C, turf/T, mob/owner)
var/mob/living/simple_animal/borer/syndi_borer/B = new /mob/living/simple_animal/borer/syndi_borer(T)
B.key = C.key
if (owner)
B.owner = owner
B.faction = B.faction | owner.faction.Copy()
B.mind.assigned_role = B.name
B.mind.special_role = B.name
ticker.mode.traitors += B.mind
var/datum/objective/syndi_borer/new_objective
new_objective = new /datum/objective/syndi_borer
new_objective.owner = B.mind
new_objective.target = owner.mind
B.mind.objectives += new_objective
to_chat(B, "<B>You are awake at last! Seek out whoever released you and aid them as best you can!</B>")
if(new_objective)
to_chat(B, "<B>Objective #[1]</B>: [new_objective.explanation_text]")
/obj/item/weapon/antag_spawner/syndi_borer/proc/check_usability(mob/user)
if(used)
to_chat(user, "<span class='warning'>[src] appears to be empty!</span>")
return 0
return 1
/obj/item/weapon/antag_spawner/syndi_borer/attack_self(mob/user)
if(!(check_usability(user)))
return
var/list/borer_candidates = pollCandidatesForMob("Do you want to play as a syndicate cortical borer?", ROLE_BORER, null, ROLE_BORER, 150, src)
if(borer_candidates.len)
if(!(check_usability(user)))
return
used = 1
var/mob/dead/observer/theghost = pick(borer_candidates)
spawn_antag(theghost.client, get_turf(src), user)
var/datum/effect_system/spark_spread/S = new /datum/effect_system/spark_spread
S.set_up(4, 1, src)
S.start()
qdel(src)
else
to_chat(user, "<span class='warning'>Unable to connect to release specimen. Please wait and try again later or use the container on your uplink to get your points refunded.</span>")
@@ -110,10 +110,14 @@ var/total_borer_hosts_needed = 10
var/datum/action/innate/borer/punish_victim/punish_victim_action = new
var/datum/action/innate/borer/jumpstart_host/jumpstart_host_action = new
var/is_team_borer = TRUE
var/borer_alert = "Become a cortical borer? (Warning, You can no longer be cloned!)"
/mob/living/simple_animal/borer/Initialize(mapload, gen=1)
..()
generation = gen
notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "<a href=?src=\ref[src];ghostjoin=1>(Click to enter)</a>", source = src, action = NOTIFY_ATTACK)
if(is_team_borer)
notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "<a href=?src=\ref[src];ghostjoin=1>(Click to enter)</a>", source = src, action = NOTIFY_ATTACK)
real_name = "Cortical Borer [rand(1000,9999)]"
truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]"
borer_chems += /datum/borer_chem/epinephrine
@@ -128,8 +132,9 @@ var/total_borer_hosts_needed = 10
//borer_chems += /datum/borer_chem/creagent
borer_chems += /datum/borer_chem/ethanol
borer_chems += /datum/borer_chem/rezadone
borers += src
if(is_team_borer)
borers += src
GrantBorerActions()
@@ -146,7 +151,7 @@ var/total_borer_hosts_needed = 10
return
if(stat != CONSCIOUS)
return
var/be_borer = alert("Become a cortical borer? (Warning, You can no longer be cloned!)",,"Yes","No")
var/be_borer = alert(borer_alert,,"Yes","No")
if(be_borer == "No" || !src || QDELETED(src))
return
if(key)
@@ -0,0 +1,19 @@
/mob/living/simple_animal/borer/syndi_borer
var/mob/owner = null
borer_alert = "Serve as a syndicate cortical borer? (Warning, You can no longer be cloned!)"
/mob/living/simple_animal/borer/syndi_borer/Initialize(mapload, gen=1)
..()
real_name = "Syndicate Borer [rand(1000,9999)]"
truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]"
GrantBorerActions()
make_larvae_action.Remove(src)
/mob/living/simple_animal/borer/syndi_borer/GrantControlActions()
talk_to_brain_action.Grant(victim)
give_back_control_action.Grant(victim)
/mob/living/simple_animal/borer/syndi_borer/RemoveControlActions()
talk_to_brain_action.Remove(victim)
give_back_control_action.Remove(victim)
+12
View File
@@ -902,4 +902,16 @@ var/global/list/possible_items_special = list()
command_staff_only = TRUE
//Syndicate borer objective, relies on their owner getting a greentext, no matter if they themselves did anything really.
/datum/objective/syndi_borer
explanation_text = "You are a modified syndicate cortical borer, assist your owner with their objectives."
martyr_compatible = 1
/datum/objective/syndi_borer/check_completion()
if(target)
for(var/datum/objective/objective in target.objectives)
if(!objective.check_completion())
return 0
return 1
else
return 1 //Not sure if we should greentext if we somehow don't even have an owner.
+9
View File
@@ -822,6 +822,15 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
cost = 1
surplus = 1
/datum/uplink_item/stealthy_tools/syndi_borer
name = "Syndicate Brain Slug"
desc = "A small cortical borer, modified to be completely loyal to the owner. \
Genetically infertile, these brain slugs can assist medically in a support role, or take direct action \
to assist their host."
item = /obj/item/weapon/antag_spawner/syndi_borer
refundable = TRUE
cost = 5
//Space Suits and Hardsuits
/datum/uplink_item/suits
category = "Space Suits and Hardsuits"
+1
View File
@@ -489,6 +489,7 @@
#include "code\game\gamemodes\miniantags\borer\borer_event.dm"
#include "code\game\gamemodes\miniantags\borer\borer_html.dm"
#include "code\game\gamemodes\miniantags\borer\borer_topic.dm"
#include "code\game\gamemodes\miniantags\borer\syndi_borer.dm"
#include "code\game\gamemodes\miniantags\bot_swarm\swarmer.dm"
#include "code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm"
#include "code\game\gamemodes\miniantags\monkey\monkey.dm"