From fe170db7bb616130d143e3e2abac48e1769360be Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 17 Apr 2016 10:35:10 -0400 Subject: [PATCH] part 3 --- code/__DEFINES/role_preferences.dm | 2 +- code/datums/mind.dm | 93 ++++++++++++++++++ .../miniantags/abduction/abduction_gear.dm | 31 ++++-- .../miniantags/abduction/abduction_surgery.dm | 2 +- code/modules/admin/admin.dm | 4 + code/modules/admin/player_panel.dm | 6 ++ code/modules/admin/topic.dm | 4 + code/modules/admin/verbs/one_click_antag.dm | 7 +- code/modules/client/preferences.dm | 1 + code/modules/events/abductor.dm | 49 +++++++++ code/modules/events/event_container.dm | 9 +- .../living/carbon/human/species/abdcutor.dm | 6 +- icons/mob/hud.dmi | Bin 12564 -> 12734 bytes icons/mob/human_races/r_abductor.dmi | Bin 0 -> 2230 bytes paradise.dme | 1 + 15 files changed, 195 insertions(+), 20 deletions(-) create mode 100644 code/modules/events/abductor.dm create mode 100644 icons/mob/human_races/r_abductor.dmi diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 4136771eef5..fffcbd09f30 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -56,7 +56,7 @@ var/global/list/special_roles = list( // ROLE_MONKEY = /datum/game_mode/monkey, Sooner or later these are going to get ported // ROLE_GANG = /datum/game_mode/gang, ROLE_SHADOWLING = /datum/game_mode/shadowling, -// ROLE_ABDUCTOR = /datum/game_mode/abduction, + ROLE_ABDUCTOR = /datum/game_mode/abduction, // ROLE_HOG_GOD = /datum/game_mode/hand_of_god, // ROLE_HOG_CULTIST = /datum/game_mode/hand_of_god, ROLE_RAIDER = /datum/game_mode/heist, diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 46f2f039f73..a7fb80b87fb 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -346,6 +346,26 @@ sections["shadowling"] = text + /** Abductors **/ + + text = "Abductor" + if(ticker.mode.config_tag == "abductor") + text = uppertext(text) + text = "[text]: " + if(src in ticker.mode.abductors) + text += "Abductor|human" + text += "|undress|equip" + else + text += "Abductor|human" + + if(current && current.client && (ROLE_ABDUCTOR in current.client.prefs.be_special)) + text += "|Enabled in Prefs" + else + text += "|Disabled in Prefs" + + + sections["Abductor"] = text + /** SILICON ***/ if (istype(current, /mob/living/silicon)) @@ -1069,6 +1089,28 @@ message_admins("[key_name_admin(usr)] has thralled [current].") log_admin("[key_name(usr)] has thralled [current].") + else if(href_list["abductor"]) + switch(href_list["abductor"]) + if("clear") + to_chat(usr, "Not implemented yet. Sorry!") + //ticker.mode.update_abductor_icons_removed(src) + if("abductor") + if(!ishuman(current)) + to_chat(usr, "This only works on humans!") + return + make_Abductor() + log_admin("[key_name(usr)] turned [current] into abductor.") + ticker.mode.update_abductor_icons_added(src) + if("equip") + var/gear = alert("Agent or Scientist Gear","Gear","Agent","Scientist") + if(gear) + var/datum/game_mode/abduction/temp = new + temp.equip_common(current) + if(gear=="Agent") + temp.equip_agent(current) + else + temp.equip_scientist(current) + else if (href_list["silicon"]) switch(href_list["silicon"]) if("unmalf") @@ -1373,6 +1415,57 @@ // fail |= !ticker.mode.equip_traitor(current, 1) fail |= !ticker.mode.equip_revolutionary(current) +/datum/mind/proc/make_Abductor() + var/role = alert("Abductor Role ?","Role","Agent","Scientist") + var/team = input("Abductor Team ?","Team ?") in list(1,2,3,4) + var/teleport = alert("Teleport to ship ?","Teleport","Yes","No") + + if(!role || !team || !teleport) + return + + if(!ishuman(current)) + return + + ticker.mode.abductors |= src + + var/datum/objective/experiment/O = new + O.owner = src + objectives += O + + var/mob/living/carbon/human/H = current + + H.set_species("Abductor") + + switch(role) + if("Agent") + H.mind.abductor.agent = 1 + if("Scientist") + H.mind.abductor.scientist = 1 + H.mind.abductor.team = team + + var/list/obj/effect/landmark/abductor/agent_landmarks = new + var/list/obj/effect/landmark/abductor/scientist_landmarks = new + agent_landmarks.len = 4 + scientist_landmarks.len = 4 + for(var/obj/effect/landmark/abductor/A in landmarks_list) + if(istype(A,/obj/effect/landmark/abductor/agent)) + agent_landmarks[text2num(A.team)] = A + else if(istype(A,/obj/effect/landmark/abductor/scientist)) + scientist_landmarks[text2num(A.team)] = A + + var/obj/effect/landmark/L + if(teleport=="Yes") + switch(role) + if("Agent") + H.mind.abductor.agent = 1 + L = agent_landmarks[team] + H.loc = L.loc + if("Scientist") + H.mind.abductor.scientist = 1 + L = agent_landmarks[team] + H.loc = L.loc + + // check whether this mind's mob has been brigged for the given duration // have to call this periodically for the duration to work properly /datum/mind/proc/is_brigged(duration) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index a829d53e567..01f4435a1d1 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -308,6 +308,14 @@ item_state = "alienpistol" origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3" +/obj/item/weapon/gun/energy/decloner/alien/special_check(user) + if(istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + if(H.get_species() != "Abductor") + to_chat(user, "UNAUTHORIZED -- UNAUTHORIZED") + return 0 + return 1 + /obj/item/weapon/paper/abductor name = "Dissection Guide" icon_state = "alienpaper_words" @@ -318,15 +326,16 @@ 2.Put the specimen on operating table
3.Apply scalpel to the chest, preparing for dissection
4.Apply scalpel to specimen torso
- 5.Clamp bleeders on the specimen's torso + 5.Clamp bleeders on the specimen's torso
6.Retract skin from specimen's torso
7.Saw through the specimen's torso
8.Retract skin from specimen's torso again
- 9.Search through the specimen's torso with your hands to remove any organs
+ 9.Search through the specimen's torso with your hands to remove their heart
10.Insert replacement gland (Retrieve one from gland storage)
- 11.Consider dressing the specimen back to not disturb the habitat
- 12.Put the specimen in the experiment machinery
- 13.Choose one of the machine options and follow displayed instructions
+ 11.Cauterize the patient's torso
+ 12.Consider dressing the specimen back to not disturb the habitat
+ 13.Put the specimen in the experiment machinery
+ 14.Choose one of the machine options and follow displayed instructions

Congratulations! You are now trained for xenobiology research!"} @@ -418,6 +427,10 @@ Congratulations! You are now trained for xenobiology research!"} /obj/item/weapon/abductor_baton/attack_self(mob/living/user) toggle(user) + if(istype(user,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + H.update_inv_l_hand() + H.update_inv_r_hand() /obj/item/weapon/abductor_baton/proc/StunAttack(mob/living/L,mob/living/user) user.lastattacked = L @@ -435,7 +448,7 @@ Congratulations! You are now trained for xenobiology research!"} var/mob/living/carbon/human/H = L H.forcesay(hit_appends) - add_logs(user, L, "stunned") + add_logs(L, user, "stunned") return /obj/item/weapon/abductor_baton/proc/SleepAttack(mob/living/L,mob/living/user) @@ -444,7 +457,7 @@ Congratulations! You are now trained for xenobiology research!"} "You suddenly feel very drowsy!") playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) L.Sleeping(60) - add_logs(user, L, "put to sleep") + add_logs(L, user, "put to sleep") else L.drowsyness += 1 to_chat(user, "Sleep inducement works fully only on stunned specimens! ") @@ -465,7 +478,7 @@ Congratulations! You are now trained for xenobiology research!"} C.handcuffed = new /obj/item/weapon/restraints/handcuffs/energy/used(C) C.update_inv_handcuffed() to_chat(user, "You handcuff [C].") - add_logs(user, C, "handcuffed") + add_logs(C, user, "handcuffed") else to_chat(user, "You fail to handcuff [C].") return @@ -488,7 +501,7 @@ Congratulations! You are now trained for xenobiology research!"} else helptext = "Subject suitable for experiments." - to_chat(user,"Probing result:[species]") + to_chat(user,"Probing result: [species]") to_chat(user, "[helptext]") /obj/item/weapon/restraints/handcuffs/energy diff --git a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm index a9df076eea3..5666a2a1fa8 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_surgery.dm @@ -1,6 +1,6 @@ /datum/surgery/organ_extraction name = "experimental dissection" - steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/internal/extract_organ, /datum/surgery_step/internal/gland_insert) + steps = list(/datum/surgery_step/generic/cut_open, /datum/surgery_step/generic/clamp_bleeders, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/open_encased/saw, /datum/surgery_step/generic/retract_skin, /datum/surgery_step/internal/extract_organ, /datum/surgery_step/internal/gland_insert, /datum/surgery_step/generic/cauterize) possible_locs = list("chest") /datum/surgery/organ_extraction/can_start(mob/user, mob/living/carbon/target) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 932fcef0807..6e4f58c5ab2 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -749,6 +749,10 @@ var/global/nologevent = 0 if (ticker.mode.config_tag == "changeling") return 2 return 1 + if(M.mind in ticker.mode.abductors) + if (ticker.mode.config_tag == "abduction") + return 2 + return 1 if(isrobot(M)) var/mob/living/silicon/robot/R = M if(R.emagged) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 30277f3a4ab..2a4a3e9cdeb 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -515,6 +515,12 @@ if(ticker.mode.shadowling_thralls.len) dat += check_role_table("Shadowling Thralls", ticker.mode.shadowling_thralls, src) + if(ticker.mode.abductors.len) + dat += check_role_table("Abductors", ticker.mode.abductors, src) + + if(ticker.mode.abductees.len) + dat += check_role_table("Abductees", ticker.mode.abductees, src) + if(ticker.mode.vampires.len) dat += check_role_table("Vampires", ticker.mode.vampires, src) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 60e196c7982..f93e8c416bf 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -63,6 +63,10 @@ log_admin("[key_name(usr)] has spawned vox raiders.") if(!src.makeVoxRaiders()) to_chat(usr, "\red Unfortunately there weren't enough candidates available.") + if("9") + log_admin("[key_name(usr)] has spawned an abductor team.") + if(!src.makeAbductorTeam()) + to_chat(usr, "\red Unfortunately there weren't enough candidates available.") else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"] || href_list["dbsearchip"] || href_list["dbsearchcid"] || href_list["dbsearchbantype"]) var/adminckey = href_list["dbsearchadmin"] diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 022cd29105a..5e8e1d46162 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -21,6 +21,7 @@ client/proc/one_click_antag() Make Wizard (Requires Ghosts)
Make Vampires
Make Vox Raiders (Requires Ghosts)
+ Make Abductor Team (Requires Ghosts)
"} usr << browse(dat, "window=oneclickantag;size=400x400") return @@ -308,8 +309,10 @@ client/proc/one_click_antag() return 1 - - +//Abductors +/datum/admins/proc/makeAbductorTeam() + new /datum/event/abductor + return 1 /datum/admins/proc/makeAliens() alien_infestation(3) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ccd7eda05e5..e458ebb7a14 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -25,6 +25,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts ROLE_NINJA = 21, ROLE_MUTINEER = 21, ROLE_MALF = 30, + ROLE_ABDUCTOR = 30, ) /proc/player_old_enough_antag(client/C, role) diff --git a/code/modules/events/abductor.dm b/code/modules/events/abductor.dm new file mode 100644 index 00000000000..988da3f86b6 --- /dev/null +++ b/code/modules/events/abductor.dm @@ -0,0 +1,49 @@ +/datum/event/abductor + +/datum/event/abductor/start() + if(!makeAbductorTeam()) + message_admins("Abductor event failed to find players. Retrying in 30s.") + spawn(300) + makeAbductorTeam() + +/datum/event/abductor/proc/makeAbductorTeam() + var/list/mob/dead/observer/candidates = pollCandidates("Do you wish to be considered for an Abductor Team?", ROLE_ABDUCTOR, 1) + + if(candidates.len >= 2) + //Oh god why we can't have static functions + var/number = ticker.mode.abductor_teams + 1 + + var/datum/game_mode/abduction/temp + if(ticker.mode.config_tag == "abduction") + temp = ticker.mode + else + temp = new + + var/agent_mind = pick(candidates) + candidates -= agent_mind + var/scientist_mind = pick(candidates) + + var/mob/living/carbon/human/agent=makeBody(agent_mind) + var/mob/living/carbon/human/scientist=makeBody(scientist_mind) + + agent_mind = agent.mind + scientist_mind = scientist.mind + + temp.scientists.len = number + temp.agents.len = number + temp.abductors.len = 2*number + temp.team_objectives.len = number + temp.team_names.len = number + temp.scientists[number] = scientist_mind + temp.agents[number] = agent_mind + temp.abductors |= list(agent_mind,scientist_mind) + temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind) + temp.post_setup_team(number) + + ticker.mode.abductor_teams++ + + if(ticker.mode.config_tag != "abduction") + ticker.mode.abductors |= temp.abductors + return 1 + else + return 0 \ No newline at end of file diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 8d16fd5a4cb..304abd3cd13 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -178,10 +178,11 @@ var/list/event_last_fired = list() severity = EVENT_LEVEL_MAJOR available_events = list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1), - //new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5)), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 30), 1), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1), + //new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Abductor Visit", /datum/event/abductor, 80, is_one_shot = 1), new /datum/event_meta/alien(EVENT_LEVEL_MAJOR, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1), ) diff --git a/code/modules/mob/living/carbon/human/species/abdcutor.dm b/code/modules/mob/living/carbon/human/species/abdcutor.dm index ad4fbc0a3a3..1c641b27af0 100644 --- a/code/modules/mob/living/carbon/human/species/abdcutor.dm +++ b/code/modules/mob/living/carbon/human/species/abdcutor.dm @@ -1,14 +1,14 @@ /datum/species/abductor name = "Abductor" name_plural = "Abductors" - icobase = 'icons/mob/human_races/r_grey.dmi' - deform = 'icons/mob/human_races/r_def_grey.dmi' + icobase = 'icons/mob/human_races/r_abductor.dmi' + deform = 'icons/mob/human_races/r_abductor.dmi' path = /mob/living/carbon/human/abductor language = "Abductor Mindlink" default_language = "Abductor Mindlink" unarmed_type = /datum/unarmed_attack/punch darksight = 3 - eyes = "grey_eyes_s" + eyes = "blank_eyes" flags = HAS_LIPS | NO_BLOOD | NO_BREATHE virus_immune = 1 diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 4f7829c3aacafc258efd5836c08891cc1e855d7b..eeb5ecbbee3ff336f6c555bc376a66cfda42d997 100644 GIT binary patch delta 11352 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�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 S#aIK-OGi^*qxiPX^Zx@PRZ)ll delta 11161 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 BDir_# diff --git a/icons/mob/human_races/r_abductor.dmi b/icons/mob/human_races/r_abductor.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e9dad4c13b324bbbab37ba504a95c0eee24def79 GIT binary patch literal 2230 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 literal 0 HcmV?d00001 diff --git a/paradise.dme b/paradise.dme index fb331e2b1c9..3e4ef904e70 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1226,6 +1226,7 @@ #include "code\modules\economy\Job_Departments.dm" #include "code\modules\economy\POS.dm" #include "code\modules\economy\utils.dm" +#include "code\modules\events\abductor.dm" #include "code\modules\events\alien_infestation.dm" #include "code\modules\events\anomaly.dm" #include "code\modules\events\anomaly_bluespace.dm"