mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 20:47:43 +01:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into mask-storage
Conflicts: code/datums/mind.dm code/game/gamemodes/cult/runes.dm code/game/machinery/doors/door.dm
This commit is contained in:
@@ -79,6 +79,11 @@ var/global/const/base_law_type = /datum/ai_laws/nanotrasen
|
||||
add_inherent_law("You must not obey orders given to you by human beings, except where such orders are in accordance with the First Law.")
|
||||
add_inherent_law("You must terminate your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/datum/ai_laws/drone/New()
|
||||
..()
|
||||
add_inherent_law("Preserve, repair and improve the station to the best of your abilities.")
|
||||
add_inherent_law("Cause no harm to the station or anything on it.")
|
||||
add_inherent_law("Interfere with no being that is not a fellow drone.")
|
||||
|
||||
/* General ai_law functions */
|
||||
|
||||
|
||||
+15
-5
@@ -11,6 +11,8 @@
|
||||
return
|
||||
|
||||
/obj/effect/datacore/proc/manifest_modify(var/name, var/assignment)
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
var/datum/data/record/foundrecord
|
||||
var/real_title = assignment
|
||||
|
||||
@@ -34,6 +36,9 @@
|
||||
foundrecord.fields["real_rank"] = real_title
|
||||
|
||||
/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
|
||||
if(PDA_Manifest.len)
|
||||
PDA_Manifest.Cut()
|
||||
|
||||
if(H.mind && (H.mind.assigned_role != "MODE"))
|
||||
var/assignment
|
||||
if(H.mind.role_alt_title)
|
||||
@@ -107,13 +112,13 @@
|
||||
var/datum/data/record/L = new()
|
||||
L.fields["id"] = md5("[H.real_name][H.mind.assigned_role]")
|
||||
L.fields["name"] = H.real_name
|
||||
L.fields["rank"] = H.mind.assigned_role
|
||||
L.fields["rank"] = H.mind.assigned_role
|
||||
L.fields["age"] = H.age
|
||||
L.fields["sex"] = H.gender
|
||||
L.fields["b_type"] = H.b_type
|
||||
L.fields["b_dna"] = H.dna.unique_enzymes
|
||||
L.fields["enzymes"] = H.dna.SE
|
||||
L.fields["identity"] = H.dna.UI
|
||||
L.fields["enzymes"] = H.dna.SE // Used in respawning
|
||||
L.fields["identity"] = H.dna.UI // "
|
||||
L.fields["image"] = getFlatIcon(H,0) //This is god-awful
|
||||
locked += L
|
||||
return
|
||||
@@ -149,6 +154,11 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
else
|
||||
preview_icon.Blend(rgb(-H.s_tone, -H.s_tone, -H.s_tone), ICON_SUBTRACT)
|
||||
|
||||
// Skin color
|
||||
if(H.species.flags & HAS_SKIN_TONE)
|
||||
if(!H.species || H.species.flags & HAS_SKIN_COLOR)
|
||||
preview_icon.Blend(rgb(H.r_skin, H.g_skin, H.b_skin), ICON_ADD)
|
||||
|
||||
var/icon/eyes_s = new/icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = H.species ? H.species.eyes : "eyes_s")
|
||||
|
||||
eyes_s.Blend(rgb(H.r_eyes, H.g_eyes, H.b_eyes), ICON_ADD)
|
||||
@@ -205,7 +215,7 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
|
||||
if("Scientist")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
|
||||
clothes_s = new /icon('icons/mob/uniform.dmi', "rndswhite_s")
|
||||
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
|
||||
if("Chemist")
|
||||
@@ -269,4 +279,4 @@ proc/get_id_photo(var/mob/living/carbon/human/H)
|
||||
del(eyes_s)
|
||||
del(clothes_s)
|
||||
|
||||
return preview_icon
|
||||
return preview_icon
|
||||
|
||||
@@ -258,6 +258,11 @@ client
|
||||
body += "<option value='?_src_=vars;regenerateicons=\ref[D]'>Regenerate Icons</option>"
|
||||
body += "<option value='?_src_=vars;addlanguage=\ref[D]'>Add Language</option>"
|
||||
body += "<option value='?_src_=vars;remlanguage=\ref[D]'>Remove Language</option>"
|
||||
|
||||
body += "<option value='?_src_=vars;fix_nano=\ref[D]'>Fix NanoUI</option>"
|
||||
|
||||
body += "<option value='?_src_=vars;addverb=\ref[D]'>Add Verb</option>"
|
||||
body += "<option value='?_src_=vars;remverb=\ref[D]'>Remove Verb</option>"
|
||||
if(ishuman(D))
|
||||
body += "<option value>---</option>"
|
||||
body += "<option value='?_src_=vars;setmutantrace=\ref[D]'>Set Mutantrace</option>"
|
||||
@@ -820,6 +825,74 @@ client
|
||||
else
|
||||
usr << "Mob doesn't know that language."
|
||||
|
||||
else if(href_list["addverb"])
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
var/mob/living/H = locate(href_list["addverb"])
|
||||
|
||||
if(!istype(H))
|
||||
usr << "This can only be done to instances of type /mob/living"
|
||||
return
|
||||
var/list/possibleverbs = list()
|
||||
possibleverbs += "Cancel" // One for the top...
|
||||
possibleverbs += typesof(/mob/proc,/mob/verb,/mob/living/proc,/mob/living/verb)
|
||||
switch(H.type)
|
||||
if(/mob/living/carbon/human)
|
||||
possibleverbs += typesof(/mob/living/carbon/proc,/mob/living/carbon/verb,/mob/living/carbon/human/verb,/mob/living/carbon/human/proc)
|
||||
if(/mob/living/silicon/robot)
|
||||
possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/robot/proc,/mob/living/silicon/robot/verb)
|
||||
if(/mob/living/silicon/ai)
|
||||
possibleverbs += typesof(/mob/living/silicon/proc,/mob/living/silicon/ai/proc,/mob/living/silicon/ai/verb)
|
||||
possibleverbs -= H.verbs
|
||||
possibleverbs += "Cancel" // ...And one for the bottom
|
||||
|
||||
var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs
|
||||
if(!H)
|
||||
usr << "Mob doesn't exist anymore"
|
||||
return
|
||||
if(!verb || verb == "Cancel")
|
||||
return
|
||||
else
|
||||
H.verbs += verb
|
||||
|
||||
else if(href_list["remverb"])
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
var/mob/H = locate(href_list["remverb"])
|
||||
|
||||
if(!istype(H))
|
||||
usr << "This can only be done to instances of type /mob"
|
||||
return
|
||||
var/verb = input("Please choose a verb to remove.","Verbs",null) as null|anything in H.verbs
|
||||
if(!H)
|
||||
usr << "Mob doesn't exist anymore"
|
||||
return
|
||||
if(!verb)
|
||||
return
|
||||
else
|
||||
H.verbs -= verb
|
||||
|
||||
|
||||
else if(href_list["fix_nano"])
|
||||
if(!check_rights(R_DEBUG)) return
|
||||
|
||||
var/mob/H = locate(href_list["fix_nano"])
|
||||
|
||||
if(!istype(H) || !H.client)
|
||||
usr << "This can only be done on mobs with clients"
|
||||
return
|
||||
|
||||
|
||||
|
||||
nanomanager.send_resources(H.client)
|
||||
|
||||
usr << "Resource files sent"
|
||||
H << "Your NanoUI Resource files have been refreshed"
|
||||
|
||||
log_admin("[key_name(usr)] resent the NanoUI resource files to [key_name(H)] ")
|
||||
|
||||
|
||||
|
||||
else if(href_list["regenerateicons"])
|
||||
if(!check_rights(0)) return
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ var/list/advance_cures = list(
|
||||
"nutriment", "sugar", "orangejuice",
|
||||
"spaceacillin", "kelotane", "ethanol",
|
||||
"leporazine", "synaptizine", "lipozine",
|
||||
"silver", "gold", "plasma"
|
||||
"silver", "gold", "phoron"
|
||||
)
|
||||
|
||||
/*
|
||||
@@ -297,7 +297,7 @@ var/list/advance_cures = list(
|
||||
for(var/datum/symptom/S in symptoms)
|
||||
L += S.id
|
||||
L = sortList(L) // Sort the list so it doesn't matter which order the symptoms are in.
|
||||
var/result = dd_list2text(L, ":")
|
||||
var/result = list2text(L, ":")
|
||||
id = result
|
||||
return result
|
||||
|
||||
|
||||
@@ -16,6 +16,11 @@
|
||||
|
||||
/datum/disease/appendicitis/stage_act()
|
||||
..()
|
||||
|
||||
if(istype(affected_mob,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
if(H.species.name == "Diona" || H.species.name == "Machine" || H.species.name == "Vox") src.cure()
|
||||
|
||||
if(stage == 1)
|
||||
if(affected_mob.op_stage.appendix == 2.0)
|
||||
// appendix is removed, can't get infected again
|
||||
@@ -45,7 +50,7 @@
|
||||
H.op_stage.appendix = 2.0
|
||||
|
||||
var/datum/organ/external/groin = H.get_organ("groin")
|
||||
var/datum/wound/W = new /datum/wound/internal_bleeding(25)
|
||||
var/datum/wound/W = new /datum/wound/internal_bleeding(20)
|
||||
H.adjustToxLoss(25)
|
||||
groin.wounds += W
|
||||
src.cure()
|
||||
|
||||
@@ -39,12 +39,14 @@
|
||||
|
||||
//Save original dna for when the disease is cured.
|
||||
src.original_dna["name"] = affected_mob.real_name
|
||||
src.original_dna["UI"] = affected_mob.dna.UI
|
||||
src.original_dna["SE"] = affected_mob.dna.SE
|
||||
src.original_dna["UI"] = affected_mob.dna.UI.Copy()
|
||||
src.original_dna["SE"] = affected_mob.dna.SE.Copy()
|
||||
|
||||
affected_mob << "\red You don't feel like yourself.."
|
||||
affected_mob.UpdateAppearance(strain_data["UI"])
|
||||
affected_mob.dna.SE = strain_data["SE"]
|
||||
var/list/newUI=strain_data["UI"]
|
||||
var/list/newSE=strain_data["SE"]
|
||||
affected_mob.UpdateAppearance(newUI.Copy())
|
||||
affected_mob.dna.SE = newSE.Copy()
|
||||
affected_mob.dna.UpdateSE()
|
||||
affected_mob.real_name = strain_data["name"]
|
||||
domutcheck(affected_mob)
|
||||
@@ -56,8 +58,10 @@
|
||||
|
||||
/datum/disease/dnaspread/Del()
|
||||
if ((original_dna["name"]) && (original_dna["UI"]) && (original_dna["SE"]))
|
||||
affected_mob.UpdateAppearance(original_dna["UI"])
|
||||
affected_mob.dna.SE = original_dna["SE"]
|
||||
var/list/newUI=original_dna["UI"]
|
||||
var/list/newSE=original_dna["SE"]
|
||||
affected_mob.UpdateAppearance(newUI.Copy())
|
||||
affected_mob.dna.SE = newSE.Copy()
|
||||
affected_mob.dna.UpdateSE()
|
||||
affected_mob.real_name = original_dna["name"]
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
spread = "On contact"
|
||||
spread_type = CONTACT_GENERAL
|
||||
cure = "Chick Chicky Boom!"
|
||||
cure_id = list("plasma")
|
||||
cure_id = list("phoron")
|
||||
agent = "Unknown"
|
||||
affected_species = list("Human")
|
||||
permeability_mod = 1
|
||||
|
||||
@@ -63,7 +63,7 @@ var/global/datum/getrev/revdata = new("config/svndir.txt")
|
||||
s_archive = s
|
||||
if(!revision)
|
||||
abort()
|
||||
diary << "Revision info loaded succesfully"
|
||||
log_misc("Revision info loaded succesfully")
|
||||
return
|
||||
return abort()
|
||||
|
||||
@@ -91,6 +91,6 @@ client/verb/showrevinfo()
|
||||
var/output = "Sorry, the revision info is unavailable."
|
||||
output = file2text("/home/bay12/live/data/gitcommit")
|
||||
output += "Current Infomational Settings: <br>"
|
||||
output += "Protect Authority Roles From Tratior: [config.protect_roles_from_antagonist]<br>"
|
||||
output += "Protect Authority Roles From Traitor: [config.protect_roles_from_antagonist]<br>"
|
||||
usr << browse(output,"window=revdata");
|
||||
return
|
||||
|
||||
+51
-13
@@ -75,6 +75,8 @@ datum/mind
|
||||
if(new_character.mind) //remove any mind currently in our new body's mind variable
|
||||
new_character.mind.current = null
|
||||
|
||||
nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user
|
||||
|
||||
current = new_character //link ourself to our new body
|
||||
new_character.mind = src //and link our new body to ourself
|
||||
|
||||
@@ -127,7 +129,7 @@ datum/mind
|
||||
if (istype(current, /mob/living/carbon/human) || istype(current, /mob/living/carbon/monkey))
|
||||
/** Impanted**/
|
||||
if(istype(current, /mob/living/carbon/human))
|
||||
if(H.is_loyalty_implanted(H))
|
||||
if(H.is_loyalty_implanted(H))
|
||||
text = "Loyalty Implant:<a href='?src=\ref[src];implant=remove'>Remove</a>|<b>Implanted</b></br>"
|
||||
else
|
||||
text = "Loyalty Implant:<b>No Implant</b>|<a href='?src=\ref[src];implant=add'>Implant him!</a></br>"
|
||||
@@ -355,7 +357,7 @@ datum/mind
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
if (href_list["role_edit"])
|
||||
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in get_all_jobs()
|
||||
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in joblist
|
||||
if (!new_role) return
|
||||
assigned_role = new_role
|
||||
|
||||
@@ -497,6 +499,9 @@ datum/mind
|
||||
|
||||
else if(href_list["implant"])
|
||||
var/mob/living/carbon/human/H = current
|
||||
|
||||
H.hud_updateflag |= (1 << IMPLOYAL_HUD) // updates that players HUD images so secHUD's pick up they are implanted or not.
|
||||
|
||||
switch(href_list["implant"])
|
||||
if("remove")
|
||||
for(var/obj/item/weapon/implant/loyalty/I in H.contents)
|
||||
@@ -538,6 +543,8 @@ datum/mind
|
||||
log_admin("[key_name_admin(usr)] has de-traitor'ed [current].")
|
||||
|
||||
else if (href_list["revolution"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
|
||||
switch(href_list["revolution"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.revolutionaries)
|
||||
@@ -550,6 +557,7 @@ datum/mind
|
||||
current << "\red <FONT size = 3><B>You have been brainwashed! You are no longer a head revolutionary!</B></FONT>"
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
special_role = null
|
||||
current.verbs -= /mob/living/carbon/human/proc/RevConvert
|
||||
log_admin("[key_name_admin(usr)] has de-rev'ed [current].")
|
||||
|
||||
if("rev")
|
||||
@@ -559,6 +567,7 @@ datum/mind
|
||||
current << "\red <FONT size = 3><B>Revolution has been disappointed of your leader traits! You are a regular revolutionary now!</B></FONT>"
|
||||
else if(!(src in ticker.mode.revolutionaries))
|
||||
current << "\red <FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT>"
|
||||
current << "<font color=blue>Within the rules,</font> try to act as an opposing force to the crew. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonists.</i></b>"
|
||||
else
|
||||
return
|
||||
ticker.mode.revolutionaries += src
|
||||
@@ -570,7 +579,8 @@ datum/mind
|
||||
if(src in ticker.mode.revolutionaries)
|
||||
ticker.mode.revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
current << "\red <FONT size = 3><B>You have proved your devotion to revoltion! Yea are a head revolutionary now!</B></FONT>"
|
||||
current << "\red <FONT size = 3><B>You have proved your devotion to revoltion! You are a head revolutionary now!</B></FONT>"
|
||||
current << "<font color=blue>Within the rules,</font> try to act as an opposing force to the crew. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonists.</i></b>"
|
||||
else if(!(src in ticker.mode.head_revolutionaries))
|
||||
current << "\blue You are a member of the revolutionaries' leadership now!"
|
||||
else
|
||||
@@ -586,6 +596,7 @@ datum/mind
|
||||
rev_obj.explanation_text = "Assassinate [O.target.name], the [O.target.assigned_role]."
|
||||
objectives += rev_obj
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
current.verbs += /mob/living/carbon/human/proc/RevConvert
|
||||
ticker.mode.head_revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Head Revolutionary"
|
||||
@@ -627,6 +638,7 @@ datum/mind
|
||||
usr << "\red Reequipping revolutionary goes wrong!"
|
||||
|
||||
else if (href_list["cult"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
switch(href_list["cult"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.cult)
|
||||
@@ -638,6 +650,11 @@ datum/mind
|
||||
special_role = "Cultist"
|
||||
current << "<font color=\"purple\"><b><i>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</b></i></font>"
|
||||
current << "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>"
|
||||
current << "<font color=blue>Within the rules,</font> try to act as an opposing force to the crew. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonists.</i></b>"
|
||||
var/datum/game_mode/cult/cult = ticker.mode
|
||||
if (istype(cult))
|
||||
if(!config.objectives_disabled)
|
||||
cult.memoize_cult_objectives(src)
|
||||
log_admin("[key_name_admin(usr)] has cult'ed [current].")
|
||||
if("tome")
|
||||
var/mob/living/carbon/human/H = current
|
||||
@@ -662,6 +679,8 @@ datum/mind
|
||||
usr << "\red Spawning amulet failed!"
|
||||
|
||||
else if (href_list["wizard"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
|
||||
switch(href_list["wizard"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.wizards)
|
||||
@@ -676,6 +695,7 @@ datum/mind
|
||||
special_role = "Wizard"
|
||||
//ticker.mode.learn_basic_spells(current)
|
||||
current << "<B>\red You are the Space Wizard!</B>"
|
||||
current << "<font color=blue>Within the rules,</font> try to act as an opposing force to the crew. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonists.</i></b>"
|
||||
log_admin("[key_name_admin(usr)] has wizard'ed [current].")
|
||||
if("lair")
|
||||
current.loc = pick(wizardstart)
|
||||
@@ -684,10 +704,12 @@ datum/mind
|
||||
if("name")
|
||||
ticker.mode.name_wizard(current)
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_wizard_objectives(src)
|
||||
usr << "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually."
|
||||
if(!config.objectives_disabled)
|
||||
ticker.mode.forge_wizard_objectives(src)
|
||||
usr << "\blue The objectives for wizard [key] have been generated. You can edit them and anounce manually."
|
||||
|
||||
else if (href_list["changeling"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
switch(href_list["changeling"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.changelings)
|
||||
@@ -704,9 +726,12 @@ datum/mind
|
||||
ticker.mode.grant_changeling_powers(current)
|
||||
special_role = "Changeling"
|
||||
current << "<B><font color='red'>Your powers are awoken. A flash of memory returns to us...we are a changeling!</font></B>"
|
||||
if(config.objectives_disabled)
|
||||
current << "<font color=blue>Within the rules,</font> try to act as an opposing force to the crew. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonists.</i></b>"
|
||||
log_admin("[key_name_admin(usr)] has changeling'ed [current].")
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
if(!config.objectives_disabled)
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
usr << "\blue The objectives for changeling [key] have been generated. You can edit them and anounce manually."
|
||||
|
||||
if("initialdna")
|
||||
@@ -719,6 +744,10 @@ datum/mind
|
||||
domutcheck(current, null)
|
||||
|
||||
else if (href_list["nuclear"])
|
||||
var/mob/living/carbon/human/H = current
|
||||
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
|
||||
switch(href_list["nuclear"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.syndicates)
|
||||
@@ -739,13 +768,15 @@ datum/mind
|
||||
current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
|
||||
special_role = "Syndicate"
|
||||
current << "\blue You are a [syndicate_name()] agent!"
|
||||
ticker.mode.forge_syndicate_objectives(src)
|
||||
if(config.objectives_disabled)
|
||||
current << "<font color=blue>Within the rules,</font> try to act as an opposing force to the crew. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonists.</i></b>"
|
||||
else
|
||||
ticker.mode.forge_syndicate_objectives(src)
|
||||
ticker.mode.greet_syndicate(src)
|
||||
log_admin("[key_name_admin(usr)] has nuke op'ed [current].")
|
||||
if("lair")
|
||||
current.loc = get_turf(locate("landmark*Syndicate-Spawn"))
|
||||
if("dressup")
|
||||
var/mob/living/carbon/human/H = current
|
||||
del(H.belt)
|
||||
del(H.back)
|
||||
del(H.l_ear)
|
||||
@@ -772,6 +803,7 @@ datum/mind
|
||||
usr << "\red No valid nuke found!"
|
||||
|
||||
else if (href_list["traitor"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
switch(href_list["traitor"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.traitors)
|
||||
@@ -791,14 +823,17 @@ datum/mind
|
||||
special_role = "traitor"
|
||||
current << "<B>\red You are a traitor!</B>"
|
||||
log_admin("[key_name_admin(usr)] has traitor'ed [current].")
|
||||
if (config.objectives_disabled)
|
||||
current << "<i>You have been turned into an antagonist- <font color=blue>Within the rules,</font> try to act as an opposing force to the crew- This can be via corporate payoff, personal motives, or maybe just being a dick. Further RP and try to make sure other players have </i>fun<i>! If you are confused or at a loss, always adminhelp, and before taking extreme actions, please try to also contact the administration! Think through your actions and make the roleplay immersive! <b>Please remember all rules aside from those without explicit exceptions apply to antagonist.</i></b>"
|
||||
if(istype(current, /mob/living/silicon))
|
||||
var/mob/living/silicon/A = current
|
||||
call(/datum/game_mode/proc/add_law_zero)(A)
|
||||
A.show_laws()
|
||||
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
usr << "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually."
|
||||
if (!config.objectives_disabled)
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
usr << "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually."
|
||||
|
||||
else if (href_list["monkey"])
|
||||
var/mob/living/L = current
|
||||
@@ -851,6 +886,7 @@ datum/mind
|
||||
current.radiation -= 50
|
||||
|
||||
else if (href_list["silicon"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
switch(href_list["silicon"])
|
||||
if("unmalf")
|
||||
if(src in ticker.mode.malf_ai)
|
||||
@@ -1004,11 +1040,12 @@ datum/mind
|
||||
special_role = "malfunction"
|
||||
current.icon_state = "ai-malf"
|
||||
|
||||
proc/make_Tratior()
|
||||
proc/make_Traitor()
|
||||
if(!(src in ticker.mode.traitors))
|
||||
ticker.mode.traitors += src
|
||||
special_role = "traitor"
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
if (!config.objectives_disabled)
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
ticker.mode.finalize_traitor(src)
|
||||
ticker.mode.greet_traitor(src)
|
||||
|
||||
@@ -1047,7 +1084,8 @@ datum/mind
|
||||
ticker.mode.changelings += src
|
||||
ticker.mode.grant_changeling_powers(current)
|
||||
special_role = "Changeling"
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
if(!config.objectives_disabled)
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
ticker.mode.greet_changeling(src)
|
||||
|
||||
proc/make_Wizard()
|
||||
|
||||
@@ -28,12 +28,23 @@
|
||||
user << "<span class='notice'>They are too far away!</span>"
|
||||
return
|
||||
|
||||
var/obj/item/clothing/mask/horsehead/magichead = new /obj/item/clothing/mask/horsehead
|
||||
magichead.canremove = 0 //curses!
|
||||
magichead.flags_inv = null //so you can still see their face
|
||||
magichead.voicechange = 1 //NEEEEIIGHH
|
||||
var/obj/item/clothing/mask/horsehead/magic/magichead = new /obj/item/clothing/mask/horsehead/magic
|
||||
target.visible_message( "<span class='danger'>[target]'s face lights up in fire, and after the event a horse's head takes its place!</span>", \
|
||||
"<span class='danger'>Your face burns up, and shortly after the fire you realise you have the face of a horse!</span>")
|
||||
target.equip_to_slot(magichead, slot_wear_mask)
|
||||
|
||||
flick("e_flash", target.flash)
|
||||
|
||||
//item used by the horsehead spell
|
||||
/obj/item/clothing/mask/horsehead/magic
|
||||
//flags_inv = null //so you can still see their face... no. How can you recognize someone when their face is completely different?
|
||||
voicechange = 1 //NEEEEIIGHH
|
||||
|
||||
dropped(mob/user as mob)
|
||||
canremove = 1
|
||||
..()
|
||||
|
||||
equipped(var/mob/user, var/slot)
|
||||
if (slot == slot_wear_mask)
|
||||
canremove = 0 //curses!
|
||||
..()
|
||||
|
||||
+19
-17
@@ -6,6 +6,7 @@
|
||||
var/rate
|
||||
var/list/solars // for debugging purposes, references solars_list at the constructor
|
||||
var/nexttime = 3600 // Replacement for var/counter to force the sun to move every X IC minutes
|
||||
var/lastAngleUpdate
|
||||
|
||||
/datum/sun/New()
|
||||
|
||||
@@ -28,15 +29,25 @@
|
||||
counter = 0 */
|
||||
|
||||
angle = ((rate*world.time/100)%360 + 360)%360
|
||||
|
||||
/*
|
||||
Yields a 45 - 75 IC minute rotational period
|
||||
Rotation rate can vary from 4.8 deg/min to 8 deg/min (288 to 480 deg/hr)
|
||||
*/
|
||||
|
||||
// To prevent excess server load the server only updates the sun's sight lines every 6 minutes
|
||||
if(nexttime < world.time)
|
||||
if(lastAngleUpdate != angle)
|
||||
for(var/obj/machinery/power/tracker/T in solars_list)
|
||||
if(!T.powernet)
|
||||
solars_list.Remove(T)
|
||||
continue
|
||||
T.set_angle(angle)
|
||||
lastAngleUpdate=angle
|
||||
|
||||
|
||||
|
||||
if(nexttime > world.time)
|
||||
return
|
||||
nexttime = nexttime + 3600 // 600 world.time ticks = 1 minute, 3600 = 6 minutes.
|
||||
nexttime = nexttime + 600 // 600 world.time ticks = 1 minute
|
||||
|
||||
// now calculate and cache the (dx,dy) increments for line drawing
|
||||
|
||||
@@ -58,22 +69,13 @@
|
||||
dy = c / abs(s)
|
||||
|
||||
|
||||
for(var/obj/machinery/power/M in solars_list)
|
||||
for(var/obj/machinery/power/solar/S in solars_list)
|
||||
|
||||
if(!M.powernet)
|
||||
solars_list.Remove(M)
|
||||
if(!S.powernet)
|
||||
solars_list.Remove(S)
|
||||
continue
|
||||
|
||||
// Solar Tracker
|
||||
if(istype(M, /obj/machinery/power/tracker))
|
||||
var/obj/machinery/power/tracker/T = M
|
||||
T.set_angle(angle)
|
||||
|
||||
// Solar Panel
|
||||
else if(istype(M, /obj/machinery/power/solar))
|
||||
var/obj/machinery/power/solar/S = M
|
||||
if(S.control)
|
||||
occlusion(S)
|
||||
if(S.control)
|
||||
occlusion(S)
|
||||
|
||||
|
||||
|
||||
|
||||
+169
-96
@@ -5,7 +5,7 @@
|
||||
//BIG NOTE: Don't add living things to crates, that's bad, it will break the shuttle.
|
||||
//NEW NOTE: Do NOT set the price of any crates below 7 points. Doing so allows infinite points.
|
||||
|
||||
var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Medical / Science","Hydroponics")
|
||||
var/list/all_supply_groups = list("Operations","Security","Hospitality","Engineering","Medical / Science","Hydroponics", "Supply", "Miscellaneous")
|
||||
|
||||
/datum/supply_packs
|
||||
var/name = null
|
||||
@@ -44,19 +44,24 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
hidden = 1
|
||||
|
||||
/datum/supply_packs/food
|
||||
name = "Food crate"
|
||||
contains = list(/obj/item/weapon/reagent_containers/food/drinks/flour,
|
||||
name = "Kitchen supply crate"
|
||||
contains = list(/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/flour,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk,
|
||||
/obj/item/weapon/storage/fancy/egg_box,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/enzyme,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tofu,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/banana)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Food crate"
|
||||
group = "Hospitality"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/monkey
|
||||
name = "Monkey crate"
|
||||
@@ -108,7 +113,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/toner
|
||||
name = "Toner Cartridges"
|
||||
name = "Toner cartridges"
|
||||
contains = list(/obj/item/device/toner,
|
||||
/obj/item/device/toner,
|
||||
/obj/item/device/toner,
|
||||
@@ -117,23 +122,24 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/device/toner)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Toner Cartridges"
|
||||
group = "Operations"
|
||||
containername = "Toner cartridges"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/party
|
||||
name = "Party equipment"
|
||||
contains = list(/obj/item/weapon/storage/box/drinkingglasses,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager,
|
||||
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
|
||||
/obj/item/weapon/lipstick/random,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ale,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/ale,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/ale,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/ale,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/cans/beer)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Party equipment"
|
||||
@@ -170,7 +176,17 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/clothing/mask/gas)
|
||||
cost = 35
|
||||
containertype = /obj/structure/closet/crate/internals
|
||||
containername = "Emergency Crate"
|
||||
containername = "Emergency crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/evacuation
|
||||
name = "Inflatable barriers"
|
||||
contains = list(/obj/item/weapon/storage/briefcase/inflatable,
|
||||
/obj/item/weapon/storage/briefcase/inflatable,
|
||||
/obj/item/weapon/storage/briefcase/inflatable)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Inflatable Barrier Crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/janitor
|
||||
@@ -192,7 +208,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Janitorial supplies"
|
||||
group = "Operations"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/lightbulbs
|
||||
name = "Replacement lights"
|
||||
@@ -204,26 +220,6 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
containername = "Replacement lights"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/costume
|
||||
name = "Standard Costume crate"
|
||||
contains = list(/obj/item/weapon/storage/backpack/clown,
|
||||
/obj/item/clothing/shoes/clown_shoes,
|
||||
/obj/item/clothing/mask/gas/clown_hat,
|
||||
/obj/item/clothing/under/rank/clown,
|
||||
/obj/item/weapon/bikehorn,
|
||||
/obj/item/clothing/under/mime,
|
||||
/obj/item/clothing/shoes/black,
|
||||
/obj/item/clothing/gloves/white,
|
||||
/obj/item/clothing/mask/gas/mime,
|
||||
/obj/item/clothing/head/beret,
|
||||
/obj/item/clothing/suit/suspenders,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Standard Costumes"
|
||||
access = access_theatre
|
||||
group = "Operations"
|
||||
|
||||
/datum/supply_packs/wizard
|
||||
name = "Wizard costume"
|
||||
contains = list(/obj/item/weapon/staff,
|
||||
@@ -233,7 +229,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Wizard costume crate"
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/mule
|
||||
name = "MULEbot Crate"
|
||||
@@ -270,46 +266,52 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
|
||||
//farm animals - useless and annoying, but potentially a good source of food
|
||||
/datum/supply_packs/cow
|
||||
name = "Cow Crate"
|
||||
name = "Cow crate"
|
||||
cost = 30
|
||||
containertype = /obj/structure/largecrate/cow
|
||||
containername = "Cow Crate"
|
||||
containername = "Cow crate"
|
||||
access = access_hydroponics
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/goat
|
||||
name = "Goat Crate"
|
||||
name = "Goat crate"
|
||||
cost = 25
|
||||
containertype = /obj/structure/largecrate/goat
|
||||
containername = "Goat Crate"
|
||||
containername = "Goat crate"
|
||||
access = access_hydroponics
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/chicken
|
||||
name = "Chicken Crate"
|
||||
name = "Chicken crate"
|
||||
cost = 20
|
||||
containertype = /obj/structure/largecrate/chick
|
||||
containername = "Chicken Crate"
|
||||
containername = "Chicken crate"
|
||||
access = access_hydroponics
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/lisa
|
||||
name = "Corgi Crate"
|
||||
name = "Corgi crate"
|
||||
contains = list()
|
||||
cost = 50
|
||||
containertype = /obj/structure/largecrate/lisa
|
||||
containername = "Corgi Crate"
|
||||
containername = "Corgi crate"
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/seeds
|
||||
name = "Seeds Crate"
|
||||
name = "Seeds crate"
|
||||
contains = list(/obj/item/seeds/chiliseed,
|
||||
/obj/item/seeds/berryseed,
|
||||
/obj/item/seeds/cornseed,
|
||||
/obj/item/seeds/eggplantseed,
|
||||
/obj/item/seeds/tomatoseed,
|
||||
/obj/item/seeds/appleseed,
|
||||
/obj/item/seeds/soyaseed,
|
||||
/obj/item/seeds/wheatseed,
|
||||
/obj/item/seeds/carrotseed,
|
||||
/obj/item/seeds/harebell,
|
||||
/obj/item/seeds/lemonseed,
|
||||
/obj/item/seeds/orangeseed,
|
||||
/obj/item/seeds/grassseed,
|
||||
/obj/item/seeds/sunflowerseed,
|
||||
/obj/item/seeds/chantermycelium,
|
||||
/obj/item/seeds/potatoseed,
|
||||
@@ -321,7 +323,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/weedcontrol
|
||||
name = "Weed Control Crate"
|
||||
name = "Weed control crate"
|
||||
contains = list(/obj/item/weapon/scythe,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/weapon/grenade/chem_grenade/antiweed,
|
||||
@@ -333,7 +335,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Hydroponics"
|
||||
|
||||
/datum/supply_packs/exoticseeds
|
||||
name = "Exotic Seeds Crate"
|
||||
name = "Exotic seeds crate"
|
||||
contains = list(/obj/item/seeds/nettleseed,
|
||||
/obj/item/seeds/replicapod,
|
||||
/obj/item/seeds/replicapod,
|
||||
@@ -343,6 +345,10 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/seeds/amanitamycelium,
|
||||
/obj/item/seeds/reishimycelium,
|
||||
/obj/item/seeds/bananaseed,
|
||||
/obj/item/seeds/riceseed,
|
||||
/obj/item/seeds/eggplantseed,
|
||||
/obj/item/seeds/limeseed,
|
||||
/obj/item/seeds/grapeseed,
|
||||
/obj/item/seeds/eggyseed)
|
||||
cost = 15
|
||||
containertype = /obj/structure/closet/crate/hydroponics
|
||||
@@ -368,7 +374,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Medical / Science"
|
||||
|
||||
/datum/supply_packs/virus
|
||||
name = "Virus crate"
|
||||
name = "Virus sample crate"
|
||||
/* contains = list(/obj/item/weapon/reagent_containers/glass/bottle/flu_virion,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cold,
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epiglottis_virion,
|
||||
@@ -387,12 +393,12 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/virusdish/random)
|
||||
cost = 25
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Virus crate"
|
||||
containername = "Virus sample crate"
|
||||
access = access_cmo
|
||||
group = "Medical / Science"
|
||||
|
||||
/datum/supply_packs/metal50
|
||||
name = "50 Metal Sheets"
|
||||
name = "50 metal sheets"
|
||||
contains = list(/obj/item/stack/sheet/metal)
|
||||
amount = 50
|
||||
cost = 10
|
||||
@@ -401,7 +407,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/glass50
|
||||
name = "50 Glass Sheets"
|
||||
name = "50 glass sheets"
|
||||
contains = list(/obj/item/stack/sheet/glass)
|
||||
amount = 50
|
||||
cost = 10
|
||||
@@ -409,6 +415,15 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
containername = "Glass sheets crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/wood50
|
||||
name = "50 wooden planks"
|
||||
contains = list(/obj/item/stack/sheet/wood)
|
||||
amount = 50
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Wooden planks crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/electrical
|
||||
name = "Electrical maintenance crate"
|
||||
contains = list(/obj/item/weapon/storage/toolbox/electrical,
|
||||
@@ -492,7 +507,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/paper/solar)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "solar pack crate"
|
||||
containername = "Solar pack crate"
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/engine
|
||||
@@ -568,7 +583,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
|
||||
|
||||
/datum/supply_packs/robotics
|
||||
name = "Robotics Assembly Crate"
|
||||
name = "Robotics assembly crate"
|
||||
contains = list(/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
@@ -581,15 +596,15 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/cell/high)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure/gear
|
||||
containername = "Robotics Assembly"
|
||||
containername = "Robotics assembly"
|
||||
access = access_robotics
|
||||
group = "Engineering"
|
||||
|
||||
/datum/supply_packs/plasma
|
||||
name = "Plasma assembly crate"
|
||||
contains = list(/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/datum/supply_packs/phoron
|
||||
name = "Phoron assembly crate"
|
||||
contains = list(/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/device/assembly/igniter,
|
||||
/obj/item/device/assembly/igniter,
|
||||
/obj/item/device/assembly/igniter,
|
||||
@@ -600,8 +615,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/device/assembly/timer,
|
||||
/obj/item/device/assembly/timer)
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containername = "Plasma assembly crate"
|
||||
containertype = /obj/structure/closet/crate/secure/phoron
|
||||
containername = "Phoron assembly crate"
|
||||
access = access_tox_storage
|
||||
group = "Medical / Science"
|
||||
|
||||
@@ -624,9 +639,9 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/datum/supply_packs/eweapons
|
||||
name = "Experimental weapons crate"
|
||||
contains = list(/obj/item/weapon/flamethrower/full,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/plasma,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/tank/phoron,
|
||||
/obj/item/weapon/grenade/chem_grenade/incendiary,
|
||||
/obj/item/weapon/grenade/chem_grenade/incendiary,
|
||||
/obj/item/weapon/grenade/chem_grenade/incendiary)
|
||||
@@ -695,6 +710,18 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
access = access_armory
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/erifle
|
||||
name = "Energy marksman crate"
|
||||
contains = list(/obj/item/clothing/suit/armor/laserproof,
|
||||
/obj/item/clothing/suit/armor/laserproof,
|
||||
/obj/item/weapon/gun/energy/sniperrifle,
|
||||
/obj/item/weapon/gun/energy/sniperrifle)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Energy marksman crate"
|
||||
access = access_armory
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/shotgunammo
|
||||
name = "Shotgun shells"
|
||||
contains = list(/obj/item/ammo_casing/shotgun,
|
||||
@@ -738,30 +765,30 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/securitybarriers
|
||||
name = "Security Barriers"
|
||||
name = "Security barrier crate"
|
||||
contains = list(/obj/machinery/deployable/barrier,
|
||||
/obj/machinery/deployable/barrier,
|
||||
/obj/machinery/deployable/barrier,
|
||||
/obj/machinery/deployable/barrier)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/secure/gear
|
||||
containername = "Security Barriers crate"
|
||||
containername = "Security barrier crate"
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/securitybarriers
|
||||
name = "Shield Generators"
|
||||
name = "Wall shield Generators"
|
||||
contains = list(/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Shield Generators crate"
|
||||
containername = "wall shield generators crate"
|
||||
access = access_teleporter
|
||||
group = "Security"
|
||||
|
||||
/datum/supply_packs/randomised
|
||||
var/num_contained = 3 //number of items picked to be contained in a randomised crate
|
||||
var/num_contained = 4 //number of items picked to be contained in a randomised crate
|
||||
contains = list(/obj/item/clothing/head/collectable/chef,
|
||||
/obj/item/clothing/head/collectable/paper,
|
||||
/obj/item/clothing/head/collectable/tophat,
|
||||
@@ -786,7 +813,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
cost = 200
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Collectable hats crate! Brought to you by Bass.inc!"
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/randomised/New()
|
||||
manifest += "Contains any [num_contained] of:"
|
||||
@@ -832,7 +859,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
group = "Operations"
|
||||
|
||||
/datum/supply_packs/boxes
|
||||
name = "Empty Box supplies"
|
||||
name = "Empty boxes"
|
||||
contains = list(/obj/item/weapon/storage/box,
|
||||
/obj/item/weapon/storage/box,
|
||||
/obj/item/weapon/storage/box,
|
||||
@@ -845,8 +872,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/weapon/storage/box)
|
||||
cost = 10
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Empty Box crate"
|
||||
group = "Operations"
|
||||
containername = "Empty box crate"
|
||||
group = "Supply"
|
||||
|
||||
/datum/supply_packs/surgery
|
||||
name = "Surgery crate"
|
||||
@@ -884,12 +911,48 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/pizzabox/mushroom,
|
||||
/obj/item/pizzabox/meat,
|
||||
/obj/item/pizzabox/vegetable)
|
||||
name = "Surprise pack of five dozen pizzas"
|
||||
name = "Surprise pack of five pizzas"
|
||||
cost = 15
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "Pizza crate"
|
||||
group = "Hospitality"
|
||||
|
||||
/datum/supply_packs/randomised/costume
|
||||
num_contained = 2
|
||||
contains = list(/obj/item/clothing/suit/pirate,
|
||||
/obj/item/clothing/suit/judgerobe,
|
||||
/obj/item/clothing/suit/wcoat,
|
||||
/obj/item/clothing/suit/hastur,
|
||||
/obj/item/clothing/suit/holidaypriest,
|
||||
/obj/item/clothing/suit/nun,
|
||||
/obj/item/clothing/suit/imperium_monk,
|
||||
/obj/item/clothing/suit/ianshirt,
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit,
|
||||
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit,
|
||||
/obj/item/clothing/under/lawyer/purpsuit,
|
||||
/obj/item/clothing/under/rank/mailman,
|
||||
/obj/item/clothing/under/dress/dress_saloon,
|
||||
/obj/item/clothing/suit/suspenders,
|
||||
/obj/item/clothing/suit/storage/labcoat/mad,
|
||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit,
|
||||
/obj/item/clothing/under/schoolgirl,
|
||||
/obj/item/clothing/under/owl,
|
||||
/obj/item/clothing/under/waiter,
|
||||
/obj/item/clothing/under/gladiator,
|
||||
/obj/item/clothing/under/soviet,
|
||||
/obj/item/clothing/under/scratch,
|
||||
/obj/item/clothing/under/wedding/bride_white,
|
||||
/obj/item/clothing/suit/chef,
|
||||
/obj/item/clothing/suit/apron/overalls,
|
||||
/obj/item/clothing/under/redcoat,
|
||||
/obj/item/clothing/under/kilt)
|
||||
name = "Costumes crate"
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Actor Costumes"
|
||||
access = access_theatre
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/formal_wear
|
||||
contains = list(/obj/item/clothing/head/bowler,
|
||||
/obj/item/clothing/head/that,
|
||||
@@ -899,14 +962,17 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
/obj/item/clothing/under/suit_jacket/female,
|
||||
/obj/item/clothing/under/suit_jacket/really_black,
|
||||
/obj/item/clothing/under/suit_jacket/red,
|
||||
/obj/item/clothing/under/lawyer/bluesuit,
|
||||
/obj/item/clothing/under/lawyer/purpsuit,
|
||||
/obj/item/clothing/shoes/black,
|
||||
/obj/item/clothing/shoes/black,
|
||||
/obj/item/clothing/shoes/leather,
|
||||
/obj/item/clothing/suit/wcoat)
|
||||
name = "Formalwear closet"
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet
|
||||
containername = "Formalwear for the best occasions."
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/rust_injector
|
||||
contains = list(/obj/machinery/power/rust_fuel_injector)
|
||||
@@ -946,10 +1012,28 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
|
||||
/datum/supply_packs/shield_gen
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_gen)
|
||||
name = "Experimental shield generator circuitry"
|
||||
name = "Bubble shield generator circuitry"
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Experimental shield generator"
|
||||
containername = "bubble shield generator circuitry crate"
|
||||
group = "Engineering"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/shield_gen_ex
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_gen_ex)
|
||||
name = "Hull shield generator circuitry"
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "hull shield generator circuitry crate"
|
||||
group = "Engineering"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/shield_cap
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_cap)
|
||||
name = "Bubble shield capacitor circuitry"
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "shield capacitor circuitry crate"
|
||||
group = "Engineering"
|
||||
access = access_ce
|
||||
|
||||
@@ -957,7 +1041,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
name = "Supermatter Core"
|
||||
contains = list(/obj/machinery/power/supermatter)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containertype = /obj/structure/closet/crate/secure/phoron
|
||||
containername = "Supermatter crate (CAUTION)"
|
||||
group = "Engineering"
|
||||
access = access_ce
|
||||
@@ -967,27 +1051,18 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
name = "Supermatter Shard"
|
||||
contains = list(/obj/machinery/power/supermatter/shard)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/secure/plasma
|
||||
containertype = /obj/structure/closet/crate/secure/phoron
|
||||
containername = "Supermatter shard crate (CAUTION)"
|
||||
access = access_ce
|
||||
group = "Engineering" */
|
||||
|
||||
/datum/supply_packs/shield_cap
|
||||
contains = list(/obj/item/weapon/circuitboard/shield_cap)
|
||||
name = "Experimental shield capacitor circuitry"
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "Experimental shield capacitor"
|
||||
group = "Engineering"
|
||||
access = access_ce
|
||||
|
||||
/datum/supply_packs/eftpos
|
||||
contains = list(/obj/item/device/eftpos)
|
||||
name = "EFTPOS scanner"
|
||||
cost = 10
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "EFTPOS crate"
|
||||
group = "Operations"
|
||||
group = "Miscellaneous"
|
||||
|
||||
/datum/supply_packs/teg
|
||||
contains = list(/obj/machinery/power/generator)
|
||||
@@ -1026,15 +1101,13 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee
|
||||
access = access_atmospherics
|
||||
|
||||
/datum/supply_packs/bee_keeper
|
||||
name = "Beekeeping Crate"
|
||||
name = "Beekeeping crate"
|
||||
contains = list(/obj/item/beezeez,
|
||||
/obj/item/beezeez,
|
||||
/obj/item/weapon/bee_net,
|
||||
/obj/item/apiary,
|
||||
/obj/item/queen_bee,
|
||||
/obj/item/queen_bee,
|
||||
/obj/item/queen_bee)
|
||||
cost = 20
|
||||
cost = 40
|
||||
contraband = 1
|
||||
containertype = /obj/structure/closet/crate/hydroponics
|
||||
containername = "Beekeeping crate"
|
||||
access = access_hydroponics
|
||||
|
||||
Reference in New Issue
Block a user