Merge pull request #328 from ktccd/Syndicate_borer
Syndicate borer added
This commit is contained in:
@@ -292,3 +292,57 @@
|
||||
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 = 'icons/obj/device.dmi' //Temporary? Doesn't really look like a container for xenofauna... but IDK what else could work.
|
||||
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
|
||||
new_objective.explanation_text = "You are a modified cortical borer. You obey [owner.real_name] and must assist them in completing their objectives."
|
||||
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)
|
||||
@@ -696,7 +701,8 @@ var/total_borer_hosts_needed = 10
|
||||
controlling = TRUE
|
||||
|
||||
victim.verbs += /mob/living/carbon/proc/release_control
|
||||
victim.verbs += /mob/living/carbon/proc/spawn_larvae
|
||||
if(is_team_borer)
|
||||
victim.verbs += /mob/living/carbon/proc/spawn_larvae
|
||||
victim.verbs -= /mob/living/proc/borer_comm
|
||||
victim.verbs += /mob/living/proc/trapped_mind_comm
|
||||
GrantControlActions()
|
||||
@@ -821,7 +827,8 @@ var/total_borer_hosts_needed = 10
|
||||
controlling = FALSE
|
||||
|
||||
victim.verbs -= /mob/living/carbon/proc/release_control
|
||||
victim.verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
if(is_team_borer)
|
||||
victim.verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
victim.verbs += /mob/living/proc/borer_comm
|
||||
victim.verbs -= /mob/living/proc/trapped_mind_comm
|
||||
RemoveControlActions()
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/mob/living/simple_animal/borer/syndi_borer
|
||||
var/mob/owner = null
|
||||
is_team_borer = FALSE
|
||||
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)
|
||||
@@ -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.
|
||||
|
||||
@@ -822,6 +822,17 @@ 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 = 10
|
||||
surplus = 20 //Let's not have this be too common
|
||||
exclude_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
//Space Suits and Hardsuits
|
||||
/datum/uplink_item/suits
|
||||
category = "Space Suits and Hardsuits"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user