Merge branch 'master' into computer_tweaks

# Conflicts:
#	code/game/jobs/job/ship_crew.dm
This commit is contained in:
alberyk
2021-10-10 13:18:14 -03:00
229 changed files with 3237 additions and 502 deletions
+2 -3
View File
@@ -9,7 +9,7 @@ clone:
environment:
MACRO_COUNT: 0
GENDER_COUNT: 6
TO_WORLD_COUNT: 207
TO_WORLD_COUNT: 211
trigger:
branch:
@@ -176,8 +176,7 @@ steps:
- echo "Unit Tests Completed"
---
kind: signature
hmac: 4c1d9a24db26e0276f48ce58568906d03fe26cc0f2651fa39d6696b6942f570e
hmac: 94a7efc91e95836b0456049170edfd6e68055cf481ef925347ffe6206eb8305a
...
+1 -1
View File
@@ -8,7 +8,7 @@ env:
BYOND_MINOR="1517"
MACRO_COUNT=0
GENDER_COUNT=6
TO_WORLD_COUNT=207
TO_WORLD_COUNT=211
FLYWAY_BUILD="5.2.4"
NODE_VERSION=10
RUST_G_VERSION="0.4.2+a2"
+7
View File
@@ -41,6 +41,7 @@
#include "code\__defines\guns.dm"
#include "code\__defines\hydroponics.dm"
#include "code\__defines\items_clothing.dm"
#include "code\__defines\jobs.dm"
#include "code\__defines\lighting.dm"
#include "code\__defines\lists.dm"
#include "code\__defines\machinery.dm"
@@ -2159,6 +2160,7 @@
#include "code\modules\mob\living\carbon\human\species\station\ipc\ipc.dm"
#include "code\modules\mob\living\carbon\human\species\station\ipc\ipc_subspecies.dm"
#include "code\modules\mob\living\carbon\human\species\station\skrell\skrell.dm"
#include "code\modules\mob\living\carbon\human\species\station\skrell\skrell_subspecies.dm"
#include "code\modules\mob\living\carbon\human\species\station\tajara\tajara.dm"
#include "code\modules\mob\living\carbon\human\species\station\tajara\tajaran_subspecies.dm"
#include "code\modules\mob\living\carbon\human\species\station\unathi\unathi.dm"
@@ -2843,6 +2845,7 @@
#include "code\modules\shieldgen\shield_gen_external.dm"
#include "code\modules\shieldgen\shieldwallgen.dm"
#include "code\modules\shuttles\antagonist.dm"
#include "code\modules\shuttles\city.dm"
#include "code\modules\shuttles\departmental.dm"
#include "code\modules\shuttles\escape_pods.dm"
#include "code\modules\shuttles\landmarks.dm"
@@ -3027,6 +3030,10 @@
#include "maps\aurora\code\aurora_lifts.dm"
#include "maps\aurora\code\aurora_shuttles.dm"
#include "maps\aurora\code\aurora_unittest.dm"
#include "maps\event\code\event.dm"
#include "maps\event\rooftop\code\rooftop.dm"
#include "maps\event\rooftop\code\rooftop_areas.dm"
#include "maps\event\rooftop\code\rooftop_shuttles.dm"
#include "maps\exodus\code\exodus.dm"
#include "maps\exodus\code\exodus_areas.dm"
#include "maps\exodus\code\exodus_holodeck.dm"
+3
View File
@@ -16,6 +16,7 @@
#define SPAN_BOLD(X) ("<span class='bold'>" + X + "</span>")
#define SPAN_SUBTLE(X) ("<span class='subtle'>" + X + "</span>")
#define SPAN_SOGHUN(X) ("<span class='soghun'>" + X + "</span>")
#define SPAN_VOTE(X) ("<span class='vote'>" + X + "</span>")
#define FONT_SIZE_SMALL 1
#define FONT_SIZE_NORMAL 2
@@ -90,6 +91,8 @@
#define isprojectile(A) istype(A, /obj/item/projectile)
#define isclothing(A) istype(A, /obj/item/clothing)
/// General I/O helpers
#define to_target(target, payload) target << (payload)
#define from_target(target, receiver) target >> (receiver)
+19
View File
@@ -0,0 +1,19 @@
#define COMMAND_ROLES list(/datum/job/captain, /datum/job/hop, /datum/job/chief_engineer, /datum/job/cmo, /datum/job/rd, /datum/job/hos)
#define ENGINEERING_ROLES list(/datum/job/engineer, /datum/job/atmos, /datum/job/intern_eng)
#define SERVICE_ROLES list(/datum/job/chaplain, /datum/job/bartender, /datum/job/chef, /datum/job/hydro, /datum/job/janitor, /datum/job/journalist, /datum/job/librarian)
#define CARGO_ROLES list(/datum/job/qm, /datum/job/cargo_tech, /datum/job/mining)
#define MEDICAL_ROLES list(/datum/job/doctor, /datum/job/surgeon, /datum/job/pharmacist, /datum/job/psychiatrist, /datum/job/med_tech, /datum/job/intern_med)
#define SCIENCE_ROLES list(/datum/job/scientist, /datum/job/xenobiologist, /datum/job/roboticist, /datum/job/intern_sci)
#define SECURITY_ROLES list(/datum/job/warden, /datum/job/investigator, /datum/job/officer, /datum/job/intern_sec)
#define SMALL_ROLES list(/datum/job/assistant, /datum/job/visitor)
#define INDEP_ROLES list(/datum/job/merchant, /datum/job/visitor, /datum/job/consular, /datum/job/journalist)
#define ALL_FACTION_ROLES list(/datum/job/assistant, /datum/job/visitor, /datum/job/representative)
#define MISC_ROLE list(/datum/job/assistant, /datum/job/representative)
#define ALL_JOBS list(COMMAND_ROLES, ENGINEERING_ROLES, SERVICE_ROLES, CARGO_ROLES, MEDICAL_ROLES, SCIENCE_ROLES, SECURITY_ROLES, INDEP_ROLES, MISC_ROLE)
#define IDRIS_ROLES list(SECURITY_ROLES, SERVICE_ROLES, CARGO_ROLES, ALL_FACTION_ROLES)
#define ZAVOD_ROLES list(SECURITY_ROLES, SCIENCE_ROLES, ENGINEERING_ROLES, ALL_FACTION_ROLES)
#define EPMC_ROLES list(SECURITY_ROLES, MEDICAL_ROLES, ALL_FACTION_ROLES)
#define NT_ROLES list(SCIENCE_ROLES, MEDICAL_ROLES, SERVICE_ROLES, ALL_FACTION_ROLES)
#define ZENG_ROLES list(SCIENCE_ROLES, MEDICAL_ROLES, ALL_FACTION_ROLES)
#define HEPH_ROLES list(CARGO_ROLES, ENGINEERING_ROLES, ALL_FACTION_ROLES)
+1
View File
@@ -65,6 +65,7 @@
#define PARALLAX_IS_STATIC 0x8
#define FLOATING_MESSAGES 0x10
#define HOTKEY_DEFAULT 0x20
#define FULLSCREEN_MODE 0x40
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC|CHAT_GHOSTLOOC)
+5 -1
View File
@@ -1,9 +1,11 @@
#define SPECIES_HUMAN "Human"
#define SPECIES_HUMAN_OFFWORLD "Off-Worlder Human"
#define SPECIES_SKRELL "Skrell"
#define SPECIES_UNATHI "Unathi"
#define SPECIES_DIONA "Diona"
#define SPECIES_SKRELL "Skrell"
#define SPECIES_SKRELL_AXIORI "Axiori"
#define SPECIES_TAJARA "Tajara"
#define SPECIES_TAJARA_ZHAN "Zhan-Khazan Tajara"
#define SPECIES_TAJARA_MSAI "M'sai Tajara"
@@ -12,6 +14,7 @@
#define SPECIES_VAURCA_WARRIOR "Vaurca Warrior"
#define SPECIES_VAURCA_BREEDER "Vaurca Breeder"
#define SPECIES_VAURCA_WARFORM "Vaurca Warform"
#define SPECIES_VAURCA_BULWARK "Vaurca Bulwark"
#define SPECIES_IPC "Baseline Frame"
#define SPECIES_IPC_SHELL "Shell Frame"
@@ -77,6 +80,7 @@
#define BODYTYPE_VAURCA "Vaurca"
#define BODYTYPE_VAURCA_BREEDER "Vaurca Breeder"
#define BODYTYPE_VAURCA_BULWARK "Vaurca Bulwark"
#define BODYTYPE_VAURCA_WARFORM "Vaurca Warform"
#define BODYTYPE_IPC "Machine"
+1
View File
@@ -15,6 +15,7 @@ var/global/list/topic_commands = list() //List of all API commands available
var/global/list/topic_commands_names = list() //List of all API commands available
var/global/list/landmarks_list = list() //list of all landmarks created
var/global/list/force_spawnpoints //assoc list of force spawnpoints for event maps
var/global/list/side_effects = list() //list of all medical sideeffects types by thier names |BS12
var/global/list/mechas_list = list() //list of all mechs. Used by hostile mobs target tracking.
var/global/list/joblist = list() //list of all jobstypes, minus borg and AI
+45 -30
View File
@@ -423,7 +423,7 @@
break
Debug("ER/([H]): Completed.")
H.megavend = 1
return H
/mob/living/carbon/human
@@ -500,7 +500,7 @@
Debug("EP/([H]): Abort, H is AI.")
return EquipRank(H, rank, 1)
if(!current_map.command_spawn_enabled || spawning_at != "Arrivals Shuttle")
if(!current_map.command_spawn_enabled || spawning_at != "Arrivals Shuttle" && spawning_at != "Cryogenic Storage")
return EquipRank(H, rank, 1)
H.centcomm_despawn_timer = addtimer(CALLBACK(H, /mob/living/.proc/centcomm_timeout), 10 MINUTES, TIMER_STOPPABLE)
@@ -509,11 +509,12 @@
H.job = rank
if(spawning_at != "Arrivals Shuttle" || job.latejoin_at_spawnpoints)
if(spawning_at != "Arrivals Shuttle" && spawning_at != "Cryogenic Storage" || job.latejoin_at_spawnpoints)
return EquipRank(H, rank, 1)
var/list/spawn_in_storage = list()
to_chat(H,"<span class='notice'>You have ten minutes to reach the station before you will be forced there.</span>")
if(spawning_at == "Arrivals Shuttle")
to_chat(H,SPAN_NOTICE("You have ten minutes to reach the station before you will be forced there."))
if(H.needs_wheelchair())
H.equip_wheelchair()
@@ -560,7 +561,8 @@
BITSET(H.hud_updateflag, IMPLOYAL_HUD)
BITSET(H.hud_updateflag, SPECIALROLE_HUD)
to_chat(H, "<b>[current_map.command_spawn_message]</b>")
if(spawning_at == "Arrivals Shuttle")
to_chat(H, "<b>[current_map.command_spawn_message]</b>")
Debug("EP/([H]): Completed.")
@@ -654,38 +656,44 @@
H.job = rank
if(job.latejoin_at_spawnpoints)
for (var/thing in landmarks_list)
var/obj/effect/landmark/L = thing
if(istype(L))
if(L.name == "LateJoin[rank]")
H.forceMove(L.loc)
return
if(current_map.force_spawnpoint && LAZYLEN(force_spawnpoints))
if(force_spawnpoints[rank])
H.forceMove(pick(force_spawnpoints[rank]))
else
H.forceMove(pick(force_spawnpoints["Anyone"]))
else
if(job.latejoin_at_spawnpoints)
for (var/thing in landmarks_list)
var/obj/effect/landmark/L = thing
if(istype(L))
if(L.name == "LateJoin[rank]")
H.forceMove(L.loc)
return
var/datum/spawnpoint/spawnpos
var/datum/spawnpoint/spawnpos
if(H.client.prefs.spawnpoint)
spawnpos = SSatlas.spawn_locations[H.client.prefs.spawnpoint]
if(H.client.prefs.spawnpoint)
spawnpos = SSatlas.spawn_locations[H.client.prefs.spawnpoint]
if(spawnpos && istype(spawnpos))
if(spawnpos.check_job_spawning(rank))
if(istype(spawnpos, /datum/spawnpoint/cryo) && (rank in command_positions))
var/datum/spawnpoint/cryo/C = spawnpos
if(length(C.command_turfs))
H.forceMove(pick(C.command_turfs))
if(spawnpos && istype(spawnpos))
if(spawnpos.check_job_spawning(rank))
if(istype(spawnpos, /datum/spawnpoint/cryo) && (rank in command_positions))
var/datum/spawnpoint/cryo/C = spawnpos
if(length(C.command_turfs))
H.forceMove(pick(C.command_turfs))
else
H.forceMove(pick(spawnpos.turfs))
else
H.forceMove(pick(spawnpos.turfs))
. = spawnpos.msg
spawnpos.after_join(H)
else
H.forceMove(pick(spawnpos.turfs))
. = spawnpos.msg
spawnpos.after_join(H)
to_chat(H, "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead.")
H.forceMove(pick(latejoin))
. = "is inbound from the [current_map.dock_name]"
else
to_chat(H, "Your chosen spawnpoint ([spawnpos.display_name]) is unavailable for your chosen job. Spawning you at the Arrivals shuttle instead.")
H.forceMove(pick(latejoin))
. = "is inbound from the [current_map.dock_name]"
else
H.forceMove(pick(latejoin))
. = "is inbound from the [current_map.dock_name]"
H.mind.selected_faction = SSjobs.GetFaction(H)
@@ -971,9 +979,16 @@
if(!uniform) // silicons don't have uniforms or gear
return
var/datum/outfit/U = new uniform
var/spawned_uniform = FALSE
var/spawned_suit = FALSE
for(var/item in prefs.gear)
var/datum/gear/L = gear_datums[item]
if(L.slot == slot_w_uniform)
H.equip_or_collect(new U.uniform(H), H.back)
break
if(U.uniform && !spawned_uniform)
H.equip_or_collect(new U.uniform(H), H.back)
spawned_uniform = TRUE
if(L.slot == slot_wear_suit)
if(U.suit && !spawned_suit)
H.equip_or_collect(new U.suit(H), H.back)
spawned_suit = TRUE
#undef Debug
+1 -1
View File
@@ -55,7 +55,7 @@
var/db_log_id = null // ID of the db entry used to track that antagonist
// Used for setting appearance.
var/list/valid_species = list(SPECIES_UNATHI,SPECIES_TAJARA,SPECIES_SKRELL,SPECIES_HUMAN)
var/list/valid_species = list(SPECIES_UNATHI,SPECIES_TAJARA,SPECIES_SKRELL,SPECIES_SKRELL_AXIORI,SPECIES_HUMAN)
// Runtime vars.
var/datum/mind/leader // Current leader, if any.
+2 -1
View File
@@ -27,7 +27,8 @@
/datum/species/skrell,
/datum/species/tajaran,
/datum/species/unathi,
/datum/species/bug,
/datum/species/bug = TRUE,
/datum/species/bug/type_b = TRUE,
/datum/species/machine
)
+16 -6
View File
@@ -26,13 +26,23 @@
. = list()
for (var/path in allowed_role_types)
var/datum/job/role = SSjobs.type_occupations[path]
if(LAZYACCESS(job_species_blacklist, role.title))
role.blacklisted_species = job_species_blacklist[role.title]
if(islist(path))
for(var/role_path in path)
var/datum/job/role = SSjobs.type_occupations[role_path]
if(LAZYACCESS(job_species_blacklist, role.title))
role.blacklisted_species = job_species_blacklist[role.title]
else
var/datum/job/J = new role.type
role.blacklisted_species = J.blacklisted_species
. += role
else
var/datum/job/J = new role.type
role.blacklisted_species = J.blacklisted_species
. += role
var/datum/job/role = SSjobs.type_occupations[path]
if(LAZYACCESS(job_species_blacklist, role.title))
role.blacklisted_species = job_species_blacklist[role.title]
else
var/datum/job/J = new role.type
role.blacklisted_species = J.blacklisted_species
. += role
/datum/faction/proc/get_selection_error(datum/preferences/prefs)
if (!length(allowed_species_types))
+5 -2
View File
@@ -41,7 +41,9 @@
/datum/species/skrell,
/datum/species/machine,
/datum/species/unathi,
/datum/species/bug,
/datum/species/bug = TRUE,
/datum/species/bug/type_b = TRUE,
/datum/species/bug/type_e = TRUE,
/datum/species/tajaran,
/datum/species/diona
)
@@ -50,7 +52,8 @@
job_species_blacklist = list(
"Corporate Liaison" = list(
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_BULWARK
)
)
+2 -2
View File
@@ -21,8 +21,8 @@
generate with NanoTrasen the better. Just think of that bonus.</li>
<li><b>Idris Reclamation Unit X3265FH</b>: As a shell belonging to Idris you
are not free. You are programmed to defer to NT security and the Head of
Security. Your customer service skills are excellent however your notorious
"strong arm" skills can be utilised the security team if authorised. Your
Security. Your customer service skills are excellent, however your notorious
"strong arm" skills can also be utilised by the security team if authorised. Your
default state is good customer service. That being said your programming prioritises
the protection and safety of other Idris employees so long as this will not
breach NT regulations. You are programmed to never strong arm an Idris employee.
+1
View File
@@ -10,6 +10,7 @@
SPECIES_DIONA,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
SPECIES_VAURCA_BULWARK,
SPECIES_TAJARA_ZHAN,
SPECIES_TAJARA_MSAI
)
+1 -1
View File
@@ -19,7 +19,7 @@
professional through-and-through, and consider yourself a (literal) cut above whatever washouts
NanoTrasen can hire as surgeons. Just remember, you need to prove that you're better than Zeng-Hu.
We need these medical contracts, lest we have to cut back the medical division just like the genetics one.</li>
<li><b>Personal Security Professional</b>:Excellent customer service and client
<li><b>Personal Security Professional</b>: Excellent customer service and client
care is why Zavodskoi's private security personnel win security contracts and
you know this. A cut above the rest, you are clear, calm, concise and polite when
working. As a security force you were voted the most professional private security
+3 -1
View File
@@ -33,7 +33,9 @@
/datum/species/human,
/datum/species/skrell,
/datum/species/machine,
/datum/species/bug,
/datum/species/bug = TRUE,
/datum/species/bug/type_b = TRUE,
/datum/species/bug/type_e = TRUE,
/datum/species/diona
)
+2 -2
View File
@@ -22,7 +22,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
outfit = /datum/outfit/job/captain
blacklisted_species = list(SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
blacklisted_species = list(SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_UNATHI, SPECIES_DIONA, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/captain
name = "Captain"
@@ -102,7 +102,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1)
access_crematorium, access_kitchen, access_hydroponics, access_chapel_office, access_library, access_research,
access_janitor, access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_journalist)
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_DIONA, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_DIONA, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/xo
name = "Executive Officer"
+3
View File
@@ -51,6 +51,7 @@
minimal_access = list(access_bar)
alt_titles = list("Barista")
outfit = /datum/outfit/job/bartender
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/bartender
name = "Bartender"
@@ -85,6 +86,7 @@
access = list(access_hydroponics, access_bar, access_kitchen)
minimal_access = list(access_kitchen)
outfit = /datum/outfit/job/chef
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/chef
name = "Chef"
@@ -206,6 +208,7 @@
alt_outfits = list("Freelance Journalist" = /datum/outfit/job/journalistf)
title_accesses = list("Corporate Reporter" = list(access_medical, access_sec_doors, access_research, access_engine))
outfit = /datum/outfit/job/journalist
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/journalist
name = "Corporate Reporter"
+1 -1
View File
@@ -27,7 +27,7 @@
minimal_player_age = 7
outfit = /datum/outfit/job/chief_engineer
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/chief_engineer
name = "Chief Engineer"
+7 -2
View File
@@ -26,7 +26,7 @@
ideal_character_age = 50
outfit = /datum/outfit/job/cmo
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/cmo
name = "Chief Medical Officer"
@@ -70,6 +70,7 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_genetics, access_eva)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_genetics, access_eva)
outfit = /datum/outfit/job/doctor
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/job/surgeon
title = "Surgeon"
@@ -89,6 +90,7 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_genetics, access_eva)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_genetics, access_eva)
outfit = /datum/outfit/job/doctor/surgeon
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/doctor
name = "Physician"
@@ -154,6 +156,7 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_genetics)
minimal_access = list(access_medical, access_medical_equip, access_pharmacy, access_virology)
outfit = /datum/outfit/job/pharmacist
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/pharmacist
name = "Pharmacist"
@@ -197,6 +200,7 @@
alt_titles = list("Psychologist")
outfit = /datum/outfit/job/psychiatrist
alt_outfits = list("Psychologist" = /datum/outfit/job/psychiatrist/psycho)
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/psychiatrist
name = "Psychiatrist"
@@ -238,7 +242,7 @@
access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_pharmacy, access_virology, access_eva, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_external_airlocks, access_psychiatrist, access_first_responder)
minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_eva, access_maint_tunnels, access_engine, access_research, access_sec_doors, access_external_airlocks, access_first_responder)
outfit = /datum/outfit/job/med_tech
blacklisted_species = list(SPECIES_DIONA, SPECIES_IPC_G2)
blacklisted_species = list(SPECIES_DIONA, SPECIES_IPC_G2, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/med_tech
name = "First Responder"
@@ -281,6 +285,7 @@
minimal_access = list(access_medical, access_surgery, access_medical_equip)
minimum_character_age = 18
outfit = /datum/outfit/job/intern_med
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/intern_med
name = "Medical Intern"
+1
View File
@@ -23,6 +23,7 @@
latejoin_at_spawnpoints = TRUE
outfit = /datum/outfit/job/merchant
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/job/merchant/announce(mob/living/carbon/human/H)
to_chat(H,"You are a merchant heading to the [station_name()] to make profit, your main objective is to sell and trade with the crew.")
@@ -15,6 +15,7 @@
access = list(access_lawyer, access_maint_tunnels)
minimal_access = list(access_lawyer)
outfit = /datum/outfit/job/representative
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/representative
name = "NanoTrasen Corporate Liaison"
@@ -95,6 +96,7 @@
access = list(access_consular, access_maint_tunnels)
minimal_access = list(access_consular)
outfit = /datum/outfit/job/representative/consular
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/job/consular/get_outfit(mob/living/carbon/human/H, alt_title = null)
var/datum/citizenship/citizenship = SSrecords.citizenships[H.citizenship]
+3 -1
View File
@@ -27,7 +27,7 @@
ideal_character_age = 50
outfit = /datum/outfit/job/rd
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
blacklisted_species = list(SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/rd
name = "Research Director"
@@ -75,6 +75,7 @@
minimal_player_age = 14
outfit = /datum/outfit/job/scientist
alt_outfits = list("Xenoarcheologist"=/datum/outfit/job/scientist/xenoarcheologist)
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/scientist
name = "Scientist"
@@ -148,6 +149,7 @@
access = list(access_research, access_tox)
minimal_access = list(access_research, access_tox)
outfit = /datum/outfit/job/intern_sci
blacklisted_species = list(SPECIES_VAURCA_BULWARK)
/datum/outfit/job/intern_sci
name = "Lab Assistant"
+5 -5
View File
@@ -26,7 +26,7 @@
minimal_player_age = 14
outfit = /datum/outfit/job/hos
blacklisted_species = list(SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA_ZHAN, SPECIES_DIONA, SPECIES_IPC_G2, SPECIES_IPC_ZENGHU, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
blacklisted_species = list(SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA_ZHAN, SPECIES_DIONA, SPECIES_IPC_G2, SPECIES_IPC_ZENGHU, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/hos
name = "Head of Security"
@@ -88,7 +88,7 @@
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_external_airlocks, access_weapons)
minimal_player_age = 7
outfit = /datum/outfit/job/warden
blacklisted_species = list(SPECIES_IPC_ZENGHU)
blacklisted_species = list(SPECIES_IPC_ZENGHU, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/warden
name = "Warden"
@@ -144,7 +144,7 @@
minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_weapons)
minimal_player_age = 3
outfit = /datum/outfit/job/forensics
blacklisted_species = list(SPECIES_IPC_ZENGHU)
blacklisted_species = list(SPECIES_IPC_ZENGHU, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/forensics
name = "Investigator"
@@ -198,7 +198,7 @@
minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_external_airlocks, access_weapons)
minimal_player_age = 7
outfit = /datum/outfit/job/officer
blacklisted_species = list(SPECIES_IPC_ZENGHU)
blacklisted_species = list(SPECIES_IPC_ZENGHU, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/officer
name = "Security Officer"
@@ -249,7 +249,7 @@
minimal_access = list(access_security, access_sec_doors)
outfit = /datum/outfit/job/intern_sec
minimum_character_age = 18
blacklisted_species = list(SPECIES_IPC_ZENGHU)
blacklisted_species = list(SPECIES_IPC_ZENGHU, SPECIES_VAURCA_BULWARK)
/datum/outfit/job/intern_sec
name = "Security Cadet"
+2
View File
@@ -13,6 +13,7 @@
access = list() //See /datum/job/assistant/get_access()
minimal_access = list() //See /datum/job/assistant/get_access()
outfit = /datum/outfit/job/assistant
blacklisted_species = null
/datum/job/assistant/get_access(selected_title)
if(config.assistant_maint && selected_title == "Assistant")
@@ -42,6 +43,7 @@
minimal_access = list()
outfit = /datum/outfit/job/visitor
alt_titles = list("Passenger")
blacklisted_species = null
/datum/outfit/job/visitor
name = "Visitor"
+1
View File
@@ -29,6 +29,7 @@
SPECIES_HUMAN,
SPECIES_HUMAN_OFFWORLD,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
+23 -12
View File
@@ -937,21 +937,32 @@ About the new airlock wires panel:
user.visible_message(SPAN_WARNING("[user] headbutts the airlock. Good thing they're wearing a helmet."))
return
if(H.species.can_shred(H))
if(H.a_intent == I_HURT)
var/shredding = H.species.can_shred(H)
var/can_crowbar = H.default_attack?.crowbar_door && (stat & (BROKEN|NOPOWER))
if(shredding || can_crowbar)
if(!density)
return
if(!src.density)
H.visible_message("<b>[H]</b> begins to pry open \the [src]!", SPAN_NOTICE("You begin to pry open \the [src]!"), SPAN_WARNING("You hear the sound of an airlock being forced open."))
if(!do_after(H, 120, 1, act_target = src))
return
var/check = src.open(1)
if(shredding)
src.do_animate("spark")
src.stat |= BROKEN
H.visible_message("<b>[H]</b> slices \the [src]'s controls, [check ? "ripping it open" : "breaking it"]!", SPAN_NOTICE("You slice \the [src]'s controls, [check ? "ripping it open" : "breaking it"]!"), SPAN_WARNING("You hear something sparking."))
return
H.visible_message("<b>[H]</b> begins to pry open \the [src]!", SPAN_NOTICE("You begin to pry open \the [src]!"), SPAN_WARNING("You hear the sound of an airlock being forced open."))
if(!do_after(H, 120, 1, act_target = src))
if(H.default_attack?.attack_door && !(stat & (BROKEN|NOPOWER)))
user.visible_message(SPAN_DANGER("\The [user] forcefully strikes \the [src] with their [H.default_attack.attack_name]!"))
user.do_attack_animation(src, null)
playsound(loc, hitsound, 60, 1)
take_damage(H.default_attack.attack_door)
user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
return
src.do_animate("spark")
src.stat |= BROKEN
var/check = src.open(1)
H.visible_message("<b>[H]</b> slices \the [src]'s controls, [check ? "ripping it open" : "breaking it"]!", SPAN_NOTICE("You slice \the [src]'s controls, [check ? "ripping it open" : "breaking it"]!"), SPAN_WARNING("You hear something sparking."))
return
if(src.p_open)
user.set_machine(src)
wires.Interact(user)
+1 -3
View File
@@ -208,9 +208,7 @@
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.species.can_shred(H))
if(H.species.can_shred(H) || H.default_attack?.crowbar_door)
if(src.density)
visible_message("<span class='danger'>\The [H] forces \the [src] open!</span>")
open(1)
+42 -3
View File
@@ -12,10 +12,11 @@
var/last_reply = 0
var/last_slogan = 0 //When did we last pitch?
var/slogan_delay = 6000 //How long until we can pitch again?
var/change_message = "You feel a pleasant breeze as the autolocker whisks away all of your clothes, packing them neatly in a box."
// Stuff relating vocalizations
var/list/slogan_list = list("Don't deploy just yet! Grab your gear!","Forgetting something?","Don't hop on in your skivvies, mate!","It's not Casual Friday, y'know?","Heaven's above, put some clothes on!")
var/shut_up = 0 //Stop spouting those godawful pitches!
var/shut_up = FALSE //Stop spouting those godawful pitches!
/obj/machinery/megavendor/machinery_process()
if(((src.last_slogan + src.slogan_delay) <= world.time) && (src.slogan_list.len > 0) && (!src.shut_up) && prob(5))
@@ -36,8 +37,14 @@
return
var/obj/item/storage/box/gearbox = new(null, TRUE)
var/list/AC
var/obj/BE
LAZYINITLIST(AC)
gearbox.name = "personal possessions box"
gearbox.desc = "All of the personal effects of [H.real_name], packaged neatly by the AutoDrobe."
if(H.belt)
BE = H.belt
for(var/obj/item/W in H.contents) //Strip 'em
if(istype(W,/obj/item/organ))
continue
@@ -45,12 +52,17 @@
continue
if(!W.canremove)
continue
if(isclothing(W))
var/obj/item/clothing/U = W
for(var/obj/item/clothing/accessory/A in U.accessories)
U.remove_accessory(H, A)
LAZYADD(AC, A)
H.drop_from_inventory(W,gearbox)
to_chat(H,"<span class='notice'>You feel a pleasant breeze as the autolocker whisks away all of your clothes, packing them neatly in a box.</span>")
to_chat(H, SPAN_NOTICE(change_message))
SSjobs.EquipRank(H, H.job, 1, 1) //Equip 'em
H.megavend = 1
//Give them the box
if(istype(H.back,/obj/item/storage/backpack))
@@ -60,4 +72,31 @@
else
H.put_in_any_hand_if_possible(gearbox)
for(var/obj/item/clothing/accessory/A as anything in AC)
H.remove_from_mob(A)
H.equip_to_slot(A, slot_tie, FALSE)
LAZYREMOVE(AC, A)
if(BE)
H.equip_to_slot_if_possible(BE, slot_belt, disable_warning = TRUE)
return
/obj/machinery/megavendor/vendor
name = "\improper NanoTrasen AutoDrobe Vendor"
desc = "A NanoTrasen AutoDrobe machine to help through the trouble of getting dressed for work in the spur of a moment!"
icon_state = "clothing"
shut_up = TRUE
density = 1
change_message = "The autolocker issues your equipment and you quickly get changed."
/obj/machinery/megavendor/vendor/Crossed(O)
return
/obj/machinery/megavendor/vendor/attack_hand(mob/user)
..()
if(ishuman(user) && Adjacent(user))
var/mob/living/carbon/human/H = user
if(!H.megavend)
playsound(src,'sound/effects/sparks4.ogg',50,1)
megavend(H)
else
to_chat(user, "\The [src]'s screen lights up a brief message: 'Equipment already claimed. Have a nice day!'")
+5 -1
View File
@@ -75,6 +75,7 @@
/obj/item/reagent_containers/food/drinks/bottle/champagne = 5,
/obj/item/reagent_containers/food/drinks/bottle/vodka = 5,
/obj/item/reagent_containers/food/drinks/bottle/vodka/mushroom = 2,
/obj/item/reagent_containers/food/drinks/bottle/pulque = 5,
/obj/item/reagent_containers/food/drinks/bottle/fireball = 2,
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 5,
/obj/item/reagent_containers/food/drinks/bottle/victorygin = 2,
@@ -652,7 +653,8 @@
/obj/item/storage/box/evidence = 6,
/obj/item/device/holowarrant = 5,
/obj/item/device/flashlight/maglight = 5,
/obj/item/device/hailer = 5
/obj/item/device/hailer = 5,
/obj/item/reagent_containers/food/snacks/donut/normal = 6
)
premium = list(
/obj/item/storage/box/fancy/donut = 2
@@ -761,6 +763,7 @@
/obj/item/seeds/tobaccoseed = 3,
/obj/item/seeds/tomatoseed = 3,
/obj/item/seeds/towermycelium = 3,
/obj/item/seeds/vanilla = 3,
/obj/item/seeds/watermelonseed = 3,
/obj/item/seeds/wheatseed = 3,
/obj/item/seeds/whitebeetseed = 3,
@@ -830,6 +833,7 @@
/obj/item/seeds/tobaccoseed = 40,
/obj/item/seeds/tomatoseed = 30,
/obj/item/seeds/towermycelium = 20,
/obj/item/seeds/vanilla = 30,
/obj/item/seeds/watermelonseed = 30,
/obj/item/seeds/wheatseed = 20,
/obj/item/seeds/whitebeetseed = 20,
+11 -1
View File
@@ -11,7 +11,10 @@
/obj/effect/landmark/New()
..()
tag = text("landmark*[]", name)
do_landmark_effect()
return 1
/obj/effect/landmark/proc/do_landmark_effect()
switch(name) //some of these are probably obsolete
if("monkey")
monkeystart += loc
@@ -93,7 +96,6 @@
return
landmarks_list += src
return 1
/obj/effect/landmark/proc/delete()
delete_me = 1
@@ -257,3 +259,11 @@
/obj/effect/landmark/distress_team_equipment
name = "distress equipment"
/obj/effect/landmark/force_spawnpoint
name = "force spawnpoint"
var/job_tag = "Anyone"
/obj/effect/landmark/force_spawnpoint/do_landmark_effect()
LAZYINITLIST(force_spawnpoints)
LAZYADD(force_spawnpoints[job_tag], loc)
+1 -1
View File
@@ -12,7 +12,7 @@
. = ..()
if(force || !istype(H) || slot != slot_wear_suit)
return
if(H.species.get_bodytype() in list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_UNATHI)) //gtfo stinky bugs
if(H.species.get_bodytype() in list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_SKRELL, BODYTYPE_UNATHI)) //gtfo stinky bugs
return
else
return FALSE
@@ -10,6 +10,7 @@
var/list/decals = list(
"quarter-turf" = list("path" = /obj/effect/floor_decal/corner, "precise" = 1, "coloured" = 1),
"full quarter-turf" = list("path" = /obj/effect/floor_decal/corner_full, "precise" = 1, "coloured" = 1),
"hazard stripes" = list("path" = /obj/effect/floor_decal/industrial/warning),
"corner, hazard" = list("path" = /obj/effect/floor_decal/industrial/warning/corner),
"hatched marking" = list("path" = /obj/effect/floor_decal/industrial/hatch, "coloured" = 1),
@@ -67,12 +67,12 @@
<br><small><i>This document serves as a notice and permits the sanctioned arrest of
the denoted employee of the NanoTrasen Civilian Branch of Operation by the
Security Department of the denoted facility. </br>
In accordance with Corporate Regulation, the denoted employee must be presented with signed and stamped or
digitally autorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff is expected to offer full co-operation.</br>
In accordance with Corporate Regulations, the denoted employee must be presented with a signed and stamped or
digitally authorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff are expected to offer full co-operation.</br>
In the event of the Suspect attempting to resist or flee, resisting arrest charges need to be applied !</br>
In the event of staff attempting to interfere with a lawful arrest, they are to be detained as an accomplice !</br>
In the event of no warrant being displayed <b>prior</b> to the arrest, security personell performing the arrest are subject to illegal detention charges !
In the event of no warrant being displayed <b>prior</b> to the arrest, security personnel performing the arrest are subject to illegal detention charges !
</i></small>
<br>
<br><b>Suspect's name: </b>
@@ -104,11 +104,11 @@
the Suspect's person/belongings/premises and/or Department for any items and materials
that could be connected to the suspected regulation violation described below,
pending an investigation in progress. </br>
The Security Officer(s) are obligated to remove any and all such items from the Suspects posession
The Security Officer(s) are obligated to remove any and all such items from the Suspect's posession
and/or Department and file it as evidence. </br>
In accordance with Corporate Regulation, the denoted employee must be presented with signed and stamped or
digitally autorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff is expected to offer full co-operation.</br>
In accordance with Corporate Regulations, the denoted employee must be presented with a signed and stamped or
digitally authorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff are expected to offer full co-operation.</br>
In the event of the Suspect/Department staff attempting to resist/impede this search or flee, they must be taken into custody immediately! </br>
All confiscated items must be filed and taken to Evidence!</small></i></br>
<br><b>Suspect's/location name: </b>
@@ -63,3 +63,10 @@
/obj/item/device/flashlight/lamp/lava/yellow
light_color = COLOR_YELLOW
/obj/item/device/flashlight/lamp/stage
name = "stage lamp"
desc = "A portable, beautiful and flashy stage light!"
light_color = COLOR_ORANGE
icon_state = "stage"
item_state = "stage"
@@ -113,3 +113,9 @@
desc = "Something that should not exist."
icon_state = "megaphone_clown"
item_state = "megaphone_clown"
/obj/item/device/megaphone/stagemicrophone
name = "dazzling stage microphone"
desc = "A glamorous looking stage microphone, complete with running lights and holographic effects around it."
icon_state = "stagemicrophone"
item_state = "stagemicrophone"
+2 -2
View File
@@ -75,7 +75,7 @@
name = "voidsuit kit"
icon = 'icons/obj/device.dmi'
icon_state = "modkit"
desc = "A simple cardboard box containing the requisition forms, permits, and decal kits a Himean voidsuit."
desc = "A simple cardboard box containing the requisition forms, permits, and decal kits for a Himean voidsuit."
desc_info = "In order to convert a voidsuit simply click on voidsuit or helmet with this item\
The same process can be used to convert the voidsuit back into a regular voidsuit. Make sure not to have a helmet or tank in the suit\
or else it will be deleted."
@@ -119,7 +119,7 @@
var/obj/item/P = new voidsuit_product(get_turf(W))
if(!reconverting)
to_chat(user, SPAN_NOTICE("Your permit for a [P] has been processed. Enjoy!"))
to_chat(user, SPAN_NOTICE("Your permit for [P] has been processed. Enjoy!"))
else
to_chat(user, SPAN_NOTICE("Your voidsuit part has been reconverted into [P]."))
+28 -7
View File
@@ -4,9 +4,13 @@ var/list/mob_icon_icon_states = list()
// If we don't actually need to offset this, don't bother with any of the generation/caching.
if(!mob_icon_icon_states[mob_icon])
mob_icon_icon_states[mob_icon] = icon_states(mob_icon)
if(LAZYLEN(H.species.equip_adjust) && H.species.equip_adjust[slot] && length(H.species.equip_adjust[slot]) && (mob_state in mob_icon_icon_states[mob_icon]))
var/needs_shift = !(H.species.bodytype in sprite_sheets)
if(!needs_shift && length(item_icons))
needs_shift = (slot in item_icons)
if(LAZYLEN(H.species.equip_adjust) && H.species.equip_adjust[slot] && length(H.species.equip_adjust[slot]) && (mob_state in mob_icon_icon_states[mob_icon]) && needs_shift)
// Check the cache for previously made icons.
var/image_key = "[mob_icon]-[mob_state]-[color]-[slot]"
var/image_key_mod = get_image_key_mod()
var/image_key = "[mob_icon]-[mob_state]-[color]-[slot][!isnull(image_key_mod) ? "-[image_key_mod]" : ""]"
if(!LAZYISIN(H.species.equip_overlays, image_key))
var/icon/final_I = new(H.species.icon_template ? H.species.icon_template : 'icons/mob/human.dmi',"blank")
var/list/shifts = H.species.equip_adjust[slot]
@@ -18,9 +22,7 @@ var/list/mob_icon_icon_states = list()
var/icon/equip = new(mob_icon, icon_state = mob_state, dir = use_dir)
var/icon/canvas = new(H.species.icon_template ? H.species.icon_template : 'icons/mob/human.dmi',"blank")
canvas.Blend(equip, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
if(build_from_parts)
var/icon/parts_icon = new(mob_icon, icon_state = "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", dir = use_dir)
canvas.Blend(parts_icon, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
canvas = build_shifted_additional_parts(H, mob_icon, slot, canvas, facing_list, use_dir)
final_I.Insert(canvas, dir = use_dir)
LAZYINITLIST(H.species.equip_overlays)
var/image/final_image = overlay_image(final_I, color = color, flags = RESET_COLOR|RESET_ALPHA)
@@ -29,6 +31,25 @@ var/list/mob_icon_icon_states = list()
I.appearance = H.species.equip_overlays[image_key]
return I
var/image/I = overlay_image(mob_icon, mob_state, color, RESET_COLOR|RESET_ALPHA)
if(build_from_parts)
I.add_overlay(overlay_image(mob_icon, "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", null, RESET_COLOR|RESET_ALPHA))
var/image/additional_parts = build_additional_parts(H, mob_icon)
if(additional_parts)
I.add_overlay(additional_parts)
return I
/obj/item/proc/get_image_key_mod()
return
/obj/item/proc/build_shifted_additional_parts(mob/living/carbon/human/H, mob_icon, slot, var/icon/canvas, var/list/facing_list, use_dir)
if(!canvas)
return
if(build_from_parts)
var/icon/parts_icon = new(mob_icon, icon_state = "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", dir = use_dir)
canvas.Blend(parts_icon, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
return canvas
/obj/item/proc/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
var/image/I
if(build_from_parts)
I = overlay_image(mob_icon, "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", null, RESET_COLOR|RESET_ALPHA)
return I
@@ -17,7 +17,7 @@
throwforce = 10
w_class = ITEMSIZE_SMALL
var/cooldown = 0 // floor tap cooldown
var/static/list/nullchoices = list("Null Rod" = /obj/item/nullrod/, "Null Staff" = /obj/item/nullrod/staff, "Null Orb" = /obj/item/nullrod/orb, "Null Athame" = /obj/item/nullrod/athame, "Tribunal Rod" = /obj/item/nullrod/dominia)
var/static/list/nullchoices = list("Null Rod" = /obj/item/nullrod/, "Null Staff" = /obj/item/nullrod/staff, "Null Orb" = /obj/item/nullrod/orb, "Null Athame" = /obj/item/nullrod/athame, "Tribunal Rod" = /obj/item/nullrod/dominia, "Tajaran charm" = /obj/item/nullrod/charm)
/obj/item/nullrod/dominia
name = "tribunalist purification rod"
@@ -49,6 +49,24 @@
icon_state = "nullathame"
item_state = "nullathame"
/obj/item/nullrod/charm
name = "obsidian charm"
desc = "A tajaran charm created from obsidian created to ward off the supernatural and bring good fortune."
desc_fluff = "Talismans and charms are common among religious and superstitious tajara, with many believing them to be able to bring good fortune or ward off raskara and other evils."
icon = 'icons/obj/tajara_items.dmi'
contained_sprite = TRUE
item_icons = null
icon_state = "stone_talisman"
item_state = "stone_talisman"
force = 4
throw_range = 7
throwforce = 2
slot_flags = SLOT_MASK | SLOT_WRISTS | SLOT_EARS | SLOT_TIE
w_class = ITEMSIZE_TINY
/obj/item/nullrod/charm/get_mask_examine_text(mob/user)
return "around [user.get_pronoun("his")] neck"
/obj/item/nullrod/obsidianshards
name = "obsidian shards"
desc = "A loose pile of obsidian shards, waiting to be assembled into a religious focus."
@@ -224,7 +224,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
set_light(2, 0.25, "#E38F46")
START_PROCESSING(SSprocessing, src)
/obj/item/clothing/mask/smokable/proc/die(var/no_message = 0)
/obj/item/clothing/mask/smokable/proc/die(var/no_message = FALSE, var/intentionally = FALSE)
var/turf/T = get_turf(src)
set_light(0)
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
@@ -235,15 +235,19 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/mob/living/M = loc
if(!no_message)
to_chat(M, SPAN_NOTICE("Your [name] goes out."))
if(M.wear_mask)
if(intentionally)
butt.loc = T
else if(M.wear_mask == src)
M.remove_from_mob(src) //un-equip it so the overlays can update
M.update_inv_wear_mask(0)
M.equip_to_slot_if_possible(butt, slot_wear_mask)
if(!(M.equip_to_slot_if_possible(butt, slot_wear_mask, ignore_blocked = TRUE)))
M.put_in_hands(butt) // In case the above somehow fails, ensure it is placed somewhere
else
M.remove_from_mob(src) // if it dies in your hand.
M.update_inv_l_hand(0)
M.update_inv_r_hand(1)
M.put_in_hands(butt)
STOP_PROCESSING(SSprocessing, src)
qdel(src)
else
@@ -359,7 +363,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(lit)
user.visible_message(SPAN_NOTICE("<b>[user]</b> calmly drops and treads on the lit [src], putting it out instantly."), SPAN_NOTICE("You calmly drop and tread on the lit [src], putting it out instantly."))
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
die(TRUE)
die(TRUE, TRUE)
else // Cigarette packing. For compulsive smokers.
user.visible_message(SPAN_NOTICE("<b>[user]</b> taps \the [src] against their palm."), SPAN_NOTICE("You tap \the [src] against your palm."))
return ..()
@@ -18,6 +18,9 @@
slot_l_hand_str = "backpack",
slot_r_hand_str = "backpack"
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/back.dmi'
)
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
max_w_class = ITEMSIZE_NORMAL
@@ -498,7 +501,7 @@
/obj/item/storage/backpack/typec
icon = 'icons/mob/species/breeder/inventory.dmi'
name = "type c wings"
name = "type c zo'ra wings"
desc = "The wings of a CB Caste Vaurca. They are far too small at this stage to permit sustained periods of flight in most situations."
icon_state = "wings"
item_state = "wings"
@@ -509,6 +512,32 @@
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi')
/obj/item/storage/backpack/typec_klax
icon = 'icons/mob/species/breeder/inventory.dmi'
name = "type c k'lax wings"
desc = "The wings of a CB Caste Vaurca. They are far too small at this stage to permit sustained periods of flight in most situations."
icon_state = "wings_klax"
item_state = "wings_klax"
w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BACK
max_storage_space = 12
canremove = 0
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi')
/obj/item/storage/backpack/typec_cthur
icon = 'icons/mob/species/breeder/inventory.dmi'
name = "type c c'thur wings"
desc = "The wings of a CB Caste Vaurca. They are far too small at this stage to permit sustained periods of flight in most situations."
icon_state = "wings_cthur"
item_state = "wings_cthur"
w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BACK
max_storage_space = 12
canremove = 0
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi')
/obj/item/storage/backpack/service
name = "idris service backpack"
desc = "The infamously Idris Service Standard refers to this monstrous, self-stabilizing back-mounted utensil and service item holder, not anything professional."
@@ -28,8 +28,10 @@
add_overlay(I.get_belt_overlay())
..()
/obj/item/storage/belt/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
/obj/item/storage/belt/build_additional_parts(H, mob_icon, slot)
var/image/I = ..()
if(!I)
I = image(null)
for(var/obj/item/i in contents)
var/c_state
var/c_icon
@@ -44,7 +44,8 @@
var/list/glove_types = list(
"Standard Gloves" = /obj/item/clothing/gloves/latex/nitrile,
"Unathi Gloves" = /obj/item/clothing/gloves/latex/nitrile/unathi,
"Tajara Gloves" = /obj/item/clothing/gloves/latex/nitrile/tajara
"Tajara Gloves" = /obj/item/clothing/gloves/latex/nitrile/tajara,
"Vaurca Gloves" = /obj/item/clothing/gloves/latex/nitrile/vaurca
)
var/chosen_type = input(user, "Which pair of gloves would you like?", capitalize_first_letters(name)) as null|anything in glove_types
if(!chosen_type)
@@ -17,7 +17,7 @@
desc = "A basic screw on filter attached beneath the mouthparts of the common Vaurca."
name = "filter port"
icon_state = "filterport"
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BREEDER)
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_WARFORM, BODYTYPE_VAURCA_BREEDER, BODYTYPE_VAURCA_BULWARK)
item_state = 0
/obj/item/clothing/head/shaper
@@ -16,7 +16,7 @@
new /obj/item/storage/backpack/satchel_cap(src)
// Armor
new /obj/item/clothing/head/helmet(src)
new /obj/item/clothing/suit/armor/carrier/generic(src)
new /obj/item/clothing/suit/armor/carrier/officer(src)
//Tools
new /obj/item/device/radio/headset/heads/captain(src)
new /obj/item/device/radio/headset/heads/captain/alt(src)
@@ -74,7 +74,7 @@
new /obj/item/storage/box/fancy/keypouch/service(src)
//Appearance
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/suit/armor/carrier/generic(src)
new /obj/item/clothing/suit/armor/carrier/officer(src)
new /obj/item/clothing/head/helmet(src)
new /obj/item/clothing/accessory/holster/waist(src)
//Tools
@@ -224,6 +224,7 @@
name = "roller bed"
icon = 'icons/obj/rollerbed.dmi'
icon_state = "standard_down"
item_state = "rollerbed"
anchored = FALSE
var/base_state = "standard"
var/item_bedpath = /obj/item/roller
@@ -418,7 +419,12 @@
name = "roller bed"
desc = "A collapsed roller bed that can be carried around."
icon = 'icons/obj/rollerbed.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_medical.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_medical.dmi'
)
icon_state = "standard_folded"
item_state = "rollerbed"
drop_sound = 'sound/items/drop/axe.ogg'
pickup_sound = 'sound/items/pickup/axe.ogg'
center_of_mass = list("x" = 17,"y" = 7)
@@ -367,6 +367,9 @@
/obj/effect/floor_decal/corner_wide/grey/full
icon_state = "wide_corner_full"
/obj/effect/floor_decal/corner_full
name = "full corner"
icon_state = "full_corner"
/obj/effect/floor_decal/spline/plain
name = "spline - plain"
+24
View File
@@ -899,6 +899,17 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(alert(src, "Are you sure?", "Confirm", "Yes", "No") != "Yes")
return
if(current_map.shuttle_call_restarts)
if(current_map.shuttle_call_restart_timer)
to_chat(usr, SPAN_WARNING("The shuttle round restart timer is already active!"))
return
feedback_add_details("admin_verb","CSHUT")
current_map.shuttle_call_restart_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reboot_world), 10 MINUTES, TIMER_UNIQUE|TIMER_STOPPABLE)
log_game("[key_name(usr)] has admin-called the 'shuttle' round restart.")
message_admins("[key_name_admin(usr)] has admin-called the 'shuttle' round restart.", 1)
to_world(FONT_LARGE(SPAN_VOTE(current_map.shuttle_called_message)))
return
if(SSticker.mode.auto_recall_shuttle)
if(input("The evacuation will just be cancelled if you call it. Call anyway?") in list("Confirm", "Cancel") != "Confirm")
return
@@ -923,6 +934,19 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!ROUND_IS_STARTED || !evacuation_controller)
return
if(current_map.shuttle_call_restarts)
if(!current_map.shuttle_call_restart_timer)
to_chat(usr, SPAN_WARNING("The restart timer for this map isn't active!"))
return
feedback_add_details("admin_verb","CCSHUT")
deltimer(current_map.shuttle_call_restart_timer)
current_map.shuttle_call_restart_timer = null
log_game("[key_name(usr)] has admin-stopped the 'shuttle' round restart.", key_name(usr))
message_admins("[key_name_admin(usr)] has admin-stopped the 'shuttle' round restart.", 1)
to_world(FONT_LARGE(SPAN_VOTE(current_map.shuttle_recall_message)))
return
evacuation_controller.cancel_evacuation()
feedback_add_details("admin_verb","CCSHUT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] admin-cancelled the evacuation.",admin_key=key_name(usr))
@@ -66,6 +66,7 @@
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
@@ -173,6 +174,7 @@
SPECIES_IPC_XION,
SPECIES_IPC_ZENGHU,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
@@ -18,6 +18,7 @@
SPECIES_HUMAN_OFFWORLD,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
@@ -21,6 +21,7 @@
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
@@ -73,6 +74,7 @@
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
@@ -126,6 +128,7 @@
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_UNATHI,
SPECIES_VAURCA_WORKER,
SPECIES_VAURCA_WARRIOR,
@@ -20,6 +20,7 @@
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
@@ -21,6 +21,7 @@
SPECIES_IPC_ZENGHU,
SPECIES_DIONA,
SPECIES_SKRELL,
SPECIES_SKRELL_AXIORI,
SPECIES_TAJARA,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
-2
View File
@@ -85,8 +85,6 @@
return
if(istype(T, /turf/simulated/wall))
var/turf/simulated/wall/SW = T
if(SW.reinf_material && SW.reinf_material.hardness > 60)
return TRUE
SW.take_damage(80)
return
var/obj/structure/girder/G = locate() in T
+21
View File
@@ -391,6 +391,9 @@ var/list/localhost_addresses = list(
if (byond_version >= 511 && prefs.clientfps)
fps = prefs.clientfps
if(prefs.toggles_secondary & FULLSCREEN_MODE)
toggle_fullscreen(TRUE)
/client/proc/InitClient()
to_chat(src, "<span class='alert'>If the title screen is black, resources are still downloading. Please be patient until the title screen appears.</span>")
@@ -598,6 +601,24 @@ var/list/localhost_addresses = list(
if(prefs)
prefs.ShowChoices(usr)
/client/verb/toggle_fullscreen_preference()
set name = "Toggle Fullscreen Preference"
set category = "Preferences"
set desc = "Toggles whether the game window will be true fullscreen or normal."
prefs.toggles_secondary ^= FULLSCREEN_MODE
prefs.save_preferences()
toggle_fullscreen(prefs.toggles_secondary & FULLSCREEN_MODE)
/client/proc/toggle_fullscreen(new_value)
if(new_value)
winset(src, "mainwindow", "is-maximized=false;can-resize=false;titlebar=false;menu=menu")
winset(src, "mainwindow.mainvsplit", "pos=0x0")
else
winset(src, "mainwindow", "is-maximized=false;can-resize=true;titlebar=true;menu=menu")
winset(src, "mainwindow.mainvsplit", "pos=3x0")
winset(src, "mainwindow", "is-maximized=true")
/client/proc/apply_fps(var/client_fps)
if(world.byond_version >= 511 && byond_version >= 511 && client_fps >= 0 && client_fps <= 1000)
vars["fps"] = prefs.clientfps
@@ -5,7 +5,7 @@
cost = 1
augment = TRUE
sort_category = "Augments"
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
flags = GEAR_NO_SELECTION
/datum/gear/augment/eye_sensors
@@ -13,7 +13,7 @@
description = "An eye augment that allows the user to deploy medical or security sensors."
path = /obj/item/organ/internal/augment/eye_sensors
cost = 1
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_UNATHI, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
/datum/gear/augment/eye_sensors/New()
..()
@@ -106,21 +106,21 @@
display_name = "memory inhibitor"
description = "A Zeng Hu implant that allows one to have control over their memories, allowing you to set a timer and remove any memories developed within it."
path = /obj/item/organ/internal/augment/memory_inhibitor
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
faction = "Zeng-Hu Pharmaceuticals"
/datum/gear/augment/emotional_manipulator
display_name = "emotional manipulator"
description = "A Zeng Hu brain implant to manipulate the brain's chemicals to induce a calming or happy feeling."
path = /obj/item/organ/internal/augment/emotional_manipulator
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
faction = "Zeng-Hu Pharmaceuticals"
/datum/gear/augment/enhanced_vision
display_name = "vision enhanced retinas"
description = "Zeng Hu implants given to EMTs to assist with finding the injured. These eye implants allow one to see further than you normally could."
path = /obj/item/organ/internal/augment/enhanced_vision
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
faction = "Zeng-Hu Pharmaceuticals"
cost = 3
@@ -128,7 +128,7 @@
display_name = "ocular installed sightlights"
description = "Designed to assist Zeng-Hu medical personnel in darker areas or places experiencing periodic power issues, Sightlights will allow one to be able to use their eyes as a flashlight."
path = /obj/item/organ/internal/augment/sightlights
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
faction = "Zeng-Hu Pharmaceuticals"
cost = 3
@@ -136,7 +136,7 @@
display_name = "zeng-hu veterancy plate"
description = "A clear sign of Zeng-Hu's best, this plate bearing the company's symbol is installed on those who prove themselves in the hyper-competitive environment"
path = /obj/item/organ/internal/augment/zenghu_plate
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
whitelisted = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
faction = "Zeng-Hu Pharmaceuticals"
/datum/gear/augment/corrective_lenses
@@ -127,6 +127,18 @@
path = /obj/item/clothing/shoes/sandal/clogs
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION
/datum/gear/shoes/recolourable_shoes
display_name = "shoe selection (colourable)"
path = /obj/item/clothing/shoes/sneakers
flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION
/datum/gear/shoes/recolourable_shoes/New()
..()
var/list/recolourable_shoes = list()
recolourable_shoes["sneakers"] = /obj/item/clothing/shoes/sneakers
recolourable_shoes["oxfords"] = /obj/item/clothing/shoes/laceup/colourable
gear_tweaks += new /datum/gear_tweak/path(recolourable_shoes)
/*
Shoe Layer Adjustment
*/
@@ -2,7 +2,7 @@
display_name = "gear harness"
path = /obj/item/clothing/under/gearharness
sort_category = "Xenowear"
whitelisted = list(SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_DIONA, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP)
whitelisted = list(SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_BULWARK, SPECIES_DIONA, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP)
/datum/gear/shoes/footwraps
display_name = "cloth footwraps"
@@ -337,3 +337,25 @@
sort_category = "Xenowear - Tajara"
whitelisted = list(SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI)
flags = GEAR_HAS_DESC_SELECTION
/datum/gear/accessory/tajara_charm
display_name = "charms and talismans"
description = "Charms and talismans often thought of to bring good luck, or of religious significance."
path = /obj/item/clothing/accessory/tajaran/charm
whitelisted = list(SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI)
sort_category = "Xenowear - Tajara"
flags = GEAR_HAS_DESC_SELECTION | GEAR_HAS_NAME_SELECTION
/datum/gear/accessory/tajara_charm/New()
..()
var/list/charm = list()
charm["wooden charm"] = /obj/item/clothing/accessory/tajaran/charm
charm["stone charm"] = /obj/item/clothing/accessory/tajaran/charm/stone
charm["steel charm"] = /obj/item/clothing/accessory/tajaran/charm/steel
charm["silver charm"] = /obj/item/clothing/accessory/tajaran/charm/steel/silver
charm["bone charm"] = /obj/item/clothing/accessory/tajaran/charm/bone
charm["silver seashell charm"] = /obj/item/clothing/accessory/tajaran/charm/steel/silver/seashell
charm["tajani charm"] = /obj/item/clothing/accessory/tajaran/charm/tajani
charm["holy sun rosette"] = /obj/item/clothing/accessory/tajaran/srendarr
gear_tweaks += new /datum/gear_tweak/path(charm)
@@ -47,6 +47,7 @@
C.set_occupant(victim, 1)
victim.Sleeping(3)
to_chat(victim, SPAN_NOTICE("You are slowly waking up from the cryostasis aboard [current_map.full_name]. It might take a few seconds."))
to_chat(victim, FONT_LARGE("<b>Your workplace attire is waiting for you at the nearest autodrobe vendor.</b>"))
return
/datum/spawnpoint/cyborg
+42 -10
View File
@@ -369,7 +369,7 @@
body_parts_covered = HANDS
slot_flags = SLOT_GLOVES
attack_verb = list("challenged")
species_restricted = list("exclude",BODYTYPE_UNATHI,BODYTYPE_TAJARA,BODYTYPE_VAURCA, BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_UNATHI,BODYTYPE_TAJARA,BODYTYPE_VAURCA, BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
drop_sound = 'sound/items/drop/gloves.ogg'
pickup_sound = 'sound/items/pickup/gloves.ogg'
@@ -489,6 +489,9 @@
var/brightness_on
var/on = 0
/obj/item/clothing/head/get_image_key_mod()
return on
/obj/item/clothing/head/attack_self(mob/user)
if(brightness_on)
if(!isturf(user.loc))
@@ -590,8 +593,21 @@
bloodsies.color = blood_color
bloodsies.appearance_flags = RESET_ALPHA
I.add_overlay(bloodsies)
return I
/obj/item/clothing/head/build_shifted_additional_parts(mob/living/carbon/human/H, mob_icon, slot, var/icon/canvas, var/list/facing_list, use_dir)
canvas = ..()
if(on && slot == slot_head_str)
var/icon/lights_icon = new('icons/mob/light_overlays.dmi', icon_state = light_overlay, dir = use_dir)
canvas.Blend(lights_icon, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
return canvas
/obj/item/clothing/head/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
var/image/I = ..()
if(!I)
I = image(null)
var/cache_key = "[light_overlay]_[H.cached_bodytype || (H.cached_bodytype = H.species.get_bodytype())]"
if(on && SSicon_cache.light_overlay_cache[cache_key])
if(on && SSicon_cache.light_overlay_cache[cache_key] && slot == slot_head_str)
I.add_overlay(SSicon_cache.light_overlay_cache[cache_key])
return I
@@ -621,7 +637,7 @@
BODYTYPE_UNATHI = 'icons/mob/species/unathi/mask.dmi'
)
species_restricted = list("exclude",BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
var/voicechange = 0
var/list/say_messages
@@ -856,6 +872,9 @@
slot_l_hand_str = 'icons/mob/items/clothing/lefthand_suit.dmi',
slot_r_hand_str = 'icons/mob/items/clothing/righthand_suit.dmi'
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/suit.dmi'
)
name = "suit"
var/fire_resist = T0C+100
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
@@ -886,9 +905,13 @@
/obj/item/clothing/suit/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
var/image/I = ..()
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay()
I.add_overlay(accessory_image)
if(slot == slot_l_hand_str || slot == slot_r_hand_str)
for(var/obj/item/clothing/accessory/A in accessories)
A.accessory_mob_overlay.cut_overlays()
else
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay(H)
I.add_overlay(accessory_image)
if(blood_DNA)
var/image/bloodsies = image(icon = H.species.blood_mask, icon_state = "[blood_overlay_type]blood")
@@ -912,6 +935,9 @@
slot_l_hand_str = 'icons/mob/items/clothing/lefthand_uniforms.dmi',
slot_r_hand_str = 'icons/mob/items/clothing/righthand_uniforms.dmi'
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/uniform.dmi'
)
name = "under"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
permeability_coefficient = 0.90
@@ -963,9 +989,13 @@
/obj/item/clothing/under/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
var/image/I = ..()
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay()
I.add_overlay(accessory_image)
if(slot == slot_l_hand_str | slot == slot_r_hand_str)
for(var/obj/item/clothing/accessory/A in accessories)
A.accessory_mob_overlay.cut_overlays()
else
for(var/obj/item/clothing/accessory/A in accessories)
var/image/accessory_image = A.get_accessory_mob_overlay(H)
I.add_overlay(accessory_image)
if(blood_DNA)
var/image/bloodsies = image(icon = H.species.blood_mask, icon_state = "uniformblood")
@@ -1173,6 +1203,8 @@
/obj/item/clothing/under/clothing_class()
return "uniform"
/obj/item/clothing/under/AltClick(var/mob/user)
set_sensors(user)
//Rings
@@ -1187,4 +1219,4 @@
var/undergloves = TRUE
/obj/item/clothing/proc/clothing_class()
return "clothing"
return "clothing"
+1 -1
View File
@@ -5,7 +5,7 @@
contained_sprite = TRUE
w_class = ITEMSIZE_TINY
slot_flags = SLOT_HEAD | SLOT_EARS
species_restricted = list(SPECIES_SKRELL)
species_restricted = list(SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
/obj/item/clothing/ears/skrell/chain
name = "gold headtail chains"
+1 -1
View File
@@ -3,7 +3,7 @@
desc = "Because you really needed another excuse to punch your crewmates."
icon_state = "boxing"
item_state = "boxing"
species_restricted = list("exclude",BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
/obj/item/clothing/gloves/boxing/attackby(obj/item/W, mob/user)
if(W.iswirecutter() || istype(W, /obj/item/surgery/scalpel))
+1 -1
View File
@@ -184,7 +184,7 @@
item_state = "fingerlessgloves"
fingerprint_chance = 100
clipped = TRUE
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
/obj/item/clothing/gloves/fingerless/colour
icon_state = "fingerlessgloves_colour"
+20 -4
View File
@@ -99,6 +99,13 @@
item_state = "nitrile"
species_restricted = list(BODYTYPE_TAJARA)
/obj/item/clothing/gloves/latex/nitrile/vaurca
name = "vaurca nitrile gloves"
desc = "Sterile nitrile gloves. Designed for Vaurca use."
icon_state = "nitrile"
item_state = "nitrile"
species_restricted = list(BODYTYPE_VAURCA)
/obj/item/clothing/gloves/latex/unathi
name = "unathi latex gloves"
desc = "Sterile latex gloves. Designed for Unathi use."
@@ -109,6 +116,11 @@
desc = "Sterile latex gloves. Designed for Tajara use."
species_restricted = list(BODYTYPE_TAJARA)
/obj/item/clothing/gloves/latex/vaurca
name = "vaurca latex gloves"
desc = "Sterile latex gloves. Designed for Vaurca use."
species_restricted = list(BODYTYPE_VAURCA)
/obj/item/clothing/gloves/botanic_leather
desc = "These leather work gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
name = "leather gloves"
@@ -127,6 +139,10 @@
name = "tajaran leather gloves"
species_restricted = list(BODYTYPE_TAJARA)
/obj/item/clothing/gloves/botanic_leather/vaurca
name = "vaurca leather gloves"
species_restricted = list(BODYTYPE_VAURCA)
/*
Forcegloves. They amplify force from melee hits as well as muck up disarm and stuff a little.
Has bits of code in item_attack.dm, stungloves.dm, human_attackhand, human_defense
@@ -189,7 +205,7 @@
force = 5
punch_force = 10
clipped = 1
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
drop_sound = 'sound/items/drop/toolbox.ogg'
pickup_sound = 'sound/items/pickup/toolbox.ogg'
gender = NEUTER
@@ -249,7 +265,7 @@
siemens_coefficient = 1
fingerprint_chance = 50
clipped = 1
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
drop_sound = 'sound/items/drop/toolbox.ogg'
pickup_sound = 'sound/items/pickup/toolbox.ogg'
gender = NEUTER
@@ -325,7 +341,7 @@
siemens_coefficient = 1
fingerprint_chance = 50
clipped = TRUE
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
drop_sound = 'sound/items/drop/toolbox.ogg'
pickup_sound = 'sound/items/pickup/toolbox.ogg'
gender = NEUTER
@@ -380,4 +396,4 @@
desc = "Specially made gloves for investigative personnel. The luminescent threads woven into the material stand out under scrutiny."
icon_state = "forensic"
item_state = "forensicgloves"
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM)
species_restricted = list("exclude",BODYTYPE_GOLEM,BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_VAURCA_BULWARK)
+20
View File
@@ -530,6 +530,26 @@
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/head.dmi')
/obj/item/clothing/head/klax_breeder
name = "k'lax represenatitve shroud"
desc = "Large shroud used by K'lax representatives."
icon = 'icons/mob/species/breeder/inventory.dmi'
item_state = "shroud_klax"
icon_state = "shroud_klax"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/head.dmi')
/obj/item/clothing/head/cthur_breeder
name = "c'thur representative shroud"
desc = "Large shroud used by C'thur representatives."
icon = 'icons/mob/species/breeder/inventory.dmi'
item_state = "shroud_cthur"
icon_state = "shroud_cthur"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/head.dmi')
/obj/item/clothing/head/navy
name = "sol navy utility cover"
desc = "A military cover issued to Sol Alliance navy members as part of their field uniform."
+6
View File
@@ -94,6 +94,12 @@
desc = "A pair of overly colorful shoes."
icon_state = "rain_bow"
/obj/item/clothing/shoes/sneakers
name = "sneakers"
desc = "A pair of shoes well suited for running around in."
icon_state = "sneakers"
item_state = "sneakers"
/obj/item/clothing/shoes/medical
name = "doctor shoes"
desc = "A pair of green and white shoes intended for safety around patients."
+9
View File
@@ -7,6 +7,9 @@
item_flags = NOSLIP
slowdown = 1
species_restricted = null
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/shoes.dmi'
)
drop_sound = 'sound/items/drop/rubber.ogg'
pickup_sound = 'sound/items/pickup/rubber.ogg'
sprite_sheets = list("Tajara" = 'icons/mob/species/tajaran/shoes.dmi')
@@ -31,6 +34,9 @@
desc = "Taller synthleather boots with an artificial shine."
icon_state = "kneeboots"
item_state = "kneeboots"
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/shoes.dmi'
)
/obj/item/clothing/shoes/jackboots/thigh
name = "thigh-length black boots"
@@ -69,6 +75,9 @@
bomb = ARMOR_BOMB_MINOR,
rad = ARMOR_RAD_MINOR
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/shoes.dmi'
)
siemens_coefficient = 0.75
can_hold_knife = TRUE
build_from_parts = TRUE
@@ -142,6 +142,11 @@ obj/item/clothing/shoes/sandal/clogs
/obj/item/clothing/shoes/laceup/brown/all_species
species_restricted = null
/obj/item/clothing/shoes/laceup/colourable
name = "oxford shoes"
icon_state = "oxford_colour"
item_state = "oxford_colour"
/obj/item/clothing/shoes/swimmingfins
desc = "Help you swim good."
name = "swimming fins"
@@ -213,6 +218,9 @@ obj/item/clothing/shoes/sandal/clogs
melee = ARMOR_MELEE_MINOR,
bio = ARMOR_BIO_MINOR
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/shoes.dmi'
)
siemens_coefficient = 0.75
can_hold_knife = TRUE
build_from_parts = TRUE
+29 -3
View File
@@ -4,11 +4,17 @@
icon = 'icons/obj/vaurca_items.dmi'
icon_state = "vaurca_shoes"
item_state = "vaurca_shoes"
armor = list(
melee = ARMOR_MELEE_MINOR
)
melee = ARMOR_MELEE_MINOR
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/shoes.dmi'
)
body_parts_covered = FEET
species_restricted = list(BODYTYPE_VAURCA)
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK)
contained_sprite = TRUE
/obj/item/clothing/shoes/vaurca/breeder
@@ -19,4 +25,24 @@
icon_state = "typec_shoes"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/shoes.dmi')
/obj/item/clothing/shoes/vaurca/breeder_klax
name = "k'lax representative shoes"
desc = "Large shoes used by K'lax representatives."
icon = 'icons/mob/species/breeder/inventory.dmi'
item_state = "typec_shoes_klax"
icon_state = "typec_shoes_klax"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/shoes.dmi')
/obj/item/clothing/shoes/vaurca/breeder_cthur
name = "c'thur representative shoes"
desc = "Large shoes used by C'thur representatives."
icon = 'icons/mob/species/breeder/inventory.dmi'
item_state = "typec_shoes_cthur"
icon_state = "typec_shoes_cthur"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/shoes.dmi')
@@ -23,7 +23,7 @@
min_pressure_protection = 0
max_pressure_protection = SPACE_SUIT_MAX_PRESSURE
siemens_coefficient = 0.5
species_restricted = list("exclude",BODYTYPE_DIONA,BODYTYPE_GOLEM)
species_restricted = list("exclude",BODYTYPE_DIONA,BODYTYPE_GOLEM,BODYTYPE_VAURCA_BULWARK)
flash_protection = FLASH_PROTECTION_MAJOR
allow_hair_covering = FALSE
@@ -56,7 +56,7 @@
min_pressure_protection = 0
max_pressure_protection = SPACE_SUIT_MAX_PRESSURE
siemens_coefficient = 0.5
species_restricted = list("exclude",BODYTYPE_DIONA,BODYTYPE_GOLEM)
species_restricted = list("exclude",BODYTYPE_DIONA,BODYTYPE_GOLEM,BODYTYPE_VAURCA_BULWARK)
var/list/supporting_limbs //If not-null, automatically splints breaks. Checked when removing the suit.
+45 -1
View File
@@ -561,6 +561,50 @@
siemens_coefficient = 0.35
species_restricted = list(BODYTYPE_HUMAN)
/obj/item/clothing/head/helmet/space/void/golden_deep
name = "golden helmet"
desc = "A glamorous, decorated helmet plated with gold. Very hefty."
icon = 'icons/obj/clothing/voidsuit/golden_deep.dmi'
icon_state = "goldhelm"
item_state = "goldhelm"
contained_sprite = 1
armor = list(
melee = ARMOR_MELEE_RESISTANT,
bullet = ARMOR_BALLISTIC_MEDIUM,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_MINOR,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SHIELDED,
rad = ARMOR_RAD_SMALL
)
siemens_coefficient = 0.35
species_restricted = list(BODYTYPE_HUMAN, BODYTYPE_IPC_INDUSTRIAL, BODYTYPE_IPC_ZENGHU, BODYTYPE_IPC_BISHOP)
brightness_on = 6
/obj/item/clothing/suit/space/void/golden_deep
name = "golden suit"
desc = "A very heavy, gold-plated suit. Fabulous!"
icon = 'icons/obj/clothing/voidsuit/golden_deep.dmi'
icon_state = "goldsuit"
item_state = "goldsuit"
contained_sprite = 1
slowdown = 1
w_class = ITEMSIZE_NORMAL
armor = list(
melee = ARMOR_MELEE_RESISTANT,
bullet = ARMOR_BALLISTIC_MEDIUM,
laser = ARMOR_LASER_PISTOL,
energy = ARMOR_ENERGY_MINOR,
bomb = ARMOR_BOMB_PADDED,
bio = ARMOR_BIO_SHIELDED,
rad = ARMOR_RAD_SMALL
)
allowed = list(/obj/item/device/flashlight,/obj/item/tank,/obj/item/device/suit_cooling_unit,/obj/item/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/melee/energy/sword,/obj/item/handcuffs)
siemens_coefficient = 0.35
species_restricted = list(BODYTYPE_HUMAN, BODYTYPE_IPC_INDUSTRIAL, BODYTYPE_IPC_ZENGHU, BODYTYPE_IPC_BISHOP)
/obj/item/clothing/head/helmet/space/void/mining/himeo
name = "himeo mining voidsuit helmet"
desc = "A rugged polymer and alloy space helmet with a ballistic glass and polycarbonate visor commonly used by astronauts from Himeo."
@@ -711,7 +755,7 @@
/obj/item/clothing/head/helmet/space/void/atmos/himeo/tajara
name = "himeo atmospherics voidsuit helmet"
desc = "A rugged polymer and alloy space helmet with a reinforced ballistic glass and polycarbonate goggle-type visor commonly used by astronauts from Himeo. This particular model is fitted for Tajara and appears to have a thicker layer of insulation on it."
desc = "A rugged polymer and alloy space helmet with a reinforced ballistic glass and polycarbonate goggle-type visor commonly used by astronauts from Himeo. This particular model is fitted for Tajara and appears to have a thicker layer of insulation on it."
desc_fluff = "The Type-78A 'Fish Fur' Helmet is a nearly 80 year old design and is part of a long line of homegrown voidsuits dating to when the planet ejected Hephaestus Industries. The main reason for its long service life \
is its modularity, with Himean workers often taking the time to make their own improvements to it, ranging all the way from simple morale patches slapped on the top to modern HUD-enabled visors. It quickly found purchase among \
Himeo's population of Tajaran expatriates, who were shown how to modify and use the voidsuits. Many of the first Tajaran-fitted suits were a product of collaborations between the two species making them all the more sentimental to those who use them."
@@ -168,6 +168,14 @@
flags_inv = HIDEWRISTS|HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
siemens_coefficient = 1.5
/obj/item/clothing/suit/golden_tailcoat
name = "golden tailcoat"
desc = "A brilliant looking golden tailcoat of sorts."
icon = 'icons/clothing/suits/goldendeep_tailcoat.dmi'
icon_state = "tailcoat"
item_state = "tailcoat"
body_parts_covered = UPPER_TORSO|ARMS
/obj/item/clothing/suit/storage/toggle/bomber
name = "bomber jacket"
desc = "A thick, well-worn WW2 leather bomber jacket."
@@ -56,6 +56,7 @@
icon_state = "messarobes"
item_state = "messarobes"
contained_sprite = TRUE
no_overheat = TRUE
desc_fluff = "The official religious body of the S'rendarr & Messa religion is reffered to as \"Parivara\" or roughly translated \"Family\". This branch is further split into \
the female Sun Sisters and male Priest's of S'rendarr. Currently their main role is to act as mediator and to remain out of political matters, there is however a certain unspoken \
agitation about the religion of Mata'ke and S'rrendars position within that pantheon. Further the Parivara has called multiple summits over the courses of war, which usually result \
@@ -69,6 +70,7 @@
icon_state = "matakecoat"
item_state = "matakecoat"
contained_sprite = TRUE
no_overheat = TRUE
desc_fluff = "The priesthood of Mata'ke is comprised of only men and strangely enough, hunters. Like their patron, all priests of Mata'ke must prove themselves capable, \
practical, strong and masters of Adhomai wilderness. Every clan and temple of Mata'ke has a different way of testing its applicants and these tests are always kept as a strict \
secret, the only thing known is that the majority of applicants never return. After they're accepted, priests of Mata'ke dress in furs and carry silver \
@@ -80,6 +82,7 @@
desc = "Large and fancy robes worn by the priests of Azubarre."
icon_state = "azubarre"
item_state = "azubarre"
no_overheat = TRUE
desc_fluff = "The priests of Azubarre are often adored and many aspire to become one, their large flowing robes and beautiful faces often accompany carnivals, marriages, \
birthdays, births and many other social events making them the epitome of life. However, the selection for such priests is considered by most to be very shallow, as only those \
beautiful and joyous enough are selected as priests. "
@@ -105,6 +108,7 @@
item_state = "taj_cloak"
contained_sprite = TRUE
flags_inv = HIDETAIL
no_overheat = TRUE
hoodtype = /obj/item/clothing/head/winterhood
desc_fluff = "Today the fashion that dominates Adhomai shares few similarities to the clothing of old Furs, linen, hemp, silk and other such fabrics were traded for \
synthetic versions, creating a massive boom in the nylon industry and textile industry in the cities. Jeans, overcoats, army uniforms, parade uniforms, flags, pants, shirts, ties, \
@@ -37,4 +37,24 @@
icon_state = "representative_clothes"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/suit.dmi')
/obj/item/clothing/suit/vaurca/breeder_klax
name = "k'lax representative clothes"
desc = "A large piece of clothing used by K'lax representatives."
icon = 'icons/mob/species/breeder/inventory.dmi'
item_state = "representative_clothes_klax"
icon_state = "representative_clothes_klax"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/suit.dmi')
/obj/item/clothing/suit/vaurca/breeder_cthur
name = "c'thur representative clothes"
desc = "A large piece of clothing used by C'thur representatives."
icon = 'icons/mob/species/breeder/inventory.dmi'
item_state = "representative_clothes_cthur"
icon_state = "representative_clothes_cthur"
contained_sprite = FALSE
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/suit.dmi')
@@ -13,6 +13,9 @@
var/image/accessory_mob_overlay = null
var/flippable = 0 //whether it has an attack_self proc which causes the icon to flip horizontally
var/flipped = 0
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/accessories.dmi'
)
/obj/item/clothing/accessory/Destroy()
on_removed()
@@ -22,9 +25,9 @@
. = ..()
update_icon()
/obj/item/clothing/accessory/proc/get_inv_overlay(var/force = FALSE)
/obj/item/clothing/accessory/proc/get_inv_overlay(var/mob/M, var/force = FALSE)
if(!accessory_mob_overlay)
get_accessory_mob_overlay()
get_accessory_mob_overlay(M, force)
var/I = accessory_mob_overlay.icon
if(!inv_overlay || force)
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
@@ -41,8 +44,17 @@
inv_overlay.add_overlay(overlay_image(I, "[icon_state]_[worn_overlay]", flags=RESET_COLOR)) //add the overlay w/o coloration of the original sprite
return inv_overlay
/obj/item/clothing/accessory/proc/get_accessory_mob_overlay(var/force = FALSE)
var/I = icon_override ? icon_override : contained_sprite ? icon : INV_ACCESSORIES_DEF_ICON
/obj/item/clothing/accessory/proc/get_accessory_mob_overlay(var/mob/living/carbon/human/M, var/force = FALSE)
var/I
if(icon_override)
I = icon_override
else if(istype(M) && (M.species.bodytype in sprite_sheets))
I = sprite_sheets[M.species.bodytype]
accessory_mob_overlay = null // reset the overlay
else if(contained_sprite)
I = icon
else
I = INV_ACCESSORIES_DEF_ICON
if(!accessory_mob_overlay || force)
var/tmp_icon_state = "[overlay_state? "[overlay_state]" : "[icon_state]"]"
if(icon_override)
@@ -90,11 +90,11 @@
var/rolled = FALSE
/obj/item/clothing/accessory/dressshirt/update_clothing_icon()
var/mob/M = loc
if(ismob(loc))
var/mob/M = loc
M.update_inv_wear_suit()
get_accessory_mob_overlay(TRUE)
get_inv_overlay(TRUE)
get_accessory_mob_overlay(M, TRUE)
get_inv_overlay(M, TRUE)
/obj/item/clothing/accessory/dressshirt/verb/roll_up_shirt_sleeves()
set name = "Roll Up Shirt Sleeves"
@@ -70,6 +70,7 @@
and colorful dress wearing \"Flapper\" variety of clothing."
icon_override = null
contained_sprite = TRUE
no_overheat = TRUE
/obj/item/clothing/accessory/poncho/tajarancloak/fancy
name = "fancy cloak"
@@ -249,7 +250,11 @@
desc = "A simple rosette accessory depicting the Tajaran god S'rendarr."
icon_state = "rosette"
item_state = "rosette"
flippable = FALSE
slot_flags = SLOT_MASK | SLOT_TIE
w_class = ITEMSIZE_TINY
/obj/item/clothing/accessory/tajaran/srendarr/get_mask_examine_text(mob/user)
return "around [user.get_pronoun("his")] neck"
/obj/item/clothing/accessory/tajaran/council_badge
name = "free tajaran council badge"
@@ -263,3 +268,74 @@
drop_sound = 'sound/items/drop/ring.ogg'
pickup_sound = 'sound/items/pickup/ring.ogg'
/obj/item/clothing/accessory/tajaran/charm
name = "wooden charm"
desc = "A hand carved wooden charm of tajaran origin."
icon_state = "wooden_talisman"
item_state = "wooden_talisman"
desc_fluff = "Talismans and charms are common among religious and superstitious tajara, with many believing them to be able to bring good fortune or ward off raskara and other evils. \
Hand-carved tajani charms are held in special regards, often being thought of as being particularly fortunate."
w_class = ITEMSIZE_TINY
flags = NOBLUDGEON
slot_flags = SLOT_MASK | SLOT_WRISTS | SLOT_EARS | SLOT_TIE
/obj/item/clothing/accessory/tajaran/charm/get_mask_examine_text(mob/user)
return "around [user.get_pronoun("his")] neck"
/obj/item/clothing/accessory/tajaran/charm/attack(mob/M as mob, mob/living/user as mob, target_zone = BP_CHEST)
if(user.a_intent != I_HURT && M != user)
if(target_zone == BP_HEAD | M.lying)
user.visible_message("<b>\The [user]</b> holds \the [src] above <b>\the [M]</b>")
else if(target_zone == BP_CHEST)
user.visible_message("<b>\The [user]</b> holds \the [src] out in front of <b>\the [M]</b>")
else
user.visible_message("<b>\The [user]</b> holds \the [src] up near <b>\the [M]</b>")
else
return ..()
/obj/item/clothing/accessory/tajaran/charm/afterattack(mob/M, var/mob/living/user, proximity_flag)
if(proximity_flag)
return
if(!ishuman(M))
return
user.visible_message("<b>\The [user]</b> points \the [src] at <b>\the [M]</b>")
/obj/item/clothing/accessory/tajaran/charm/stone
name = "stone charm"
desc = "A strong stone charm of tajaran origin."
icon_state = "stone_talisman"
item_state = "stone_talisman"
/obj/item/clothing/accessory/tajaran/charm/steel
name = "steel charm"
desc = "A warding metallic of tajaran origin."
icon_state = "steel_talisman"
item_state = "steel_talisman"
flags = CONDUCT | NOBLUDGEON
/obj/item/clothing/accessory/tajaran/charm/steel/silver
name = "silver charm"
desc = "An expensive silver charm of tajaran origin."
icon_state = "silver_talisman"
item_state = "silver_talisman"
/obj/item/clothing/accessory/tajaran/charm/bone
name = "bone charm"
desc = "A charm of tajaran origin carved from animal bones."
icon_state = "bone_talisman"
item_state = "bone_talisman"
/obj/item/clothing/accessory/tajaran/charm/steel/silver/seashell
name = "silver seashell charm"
desc = "A necklace made of soft rope with a silver charm attached in the shape of a seashell."
desc_fluff = "Followers of Ma'ta'ke who reverers the amohdan goddess Minharzka can sometimes be found wearing silvery seashell charms. \
Her tears having filled the oceans and risen to become the rain in the sky and it is thought that her mood is what controls the treacherous adhomian seas. \
Minharzka's name is often invoked and offerings left at her altars for those hoping for safe travels, impressive cargo hauls or for the weather to change \
and her fanatics are well known across tajaran history as being fearless and dangerous sailors and warriors of the sea."
/obj/item/clothing/accessory/tajaran/charm/tajani
name = "wooden tajani charm"
desc = "A hand carved charm of one of the mythical tajani."
desc_fluff = "Tajani, also known as 'short people' in basic, are good-willed tiny elder Tajara who serve as guardians of nature and homes. \
Hand carved charms of them is considered a symbol of luck and as such many superstitious tajara keeps one around."
+4 -3
View File
@@ -14,7 +14,8 @@
body_parts_covered = 0
species_restricted = null
sprite_sheets = list(
BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/suit.dmi'
BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/suit.dmi',
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/uniform.dmi'
)
/obj/item/clothing/under/pj/blue
@@ -500,7 +501,7 @@
/obj/item/clothing/under/legion
name = "Tau Ceti Foreign Legion uniform"
desc = "A blue field uniform used by the force of the Tau Ceti Foreign Legion forces."
desc = "A blue field uniform worn by Tau Ceti Foreign Legion forces."
icon_state = "taucetilegion"
item_state = "bl_suit"
worn_state = "taucetilegion"
@@ -582,7 +583,7 @@
icon_state = "qipao2"
item_state = "qipao2"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
/obj/item/clothing/under/rank/elyran_fatigues
name = "elyran navy uniform"
desc = "An utility uniform worn by Elyran navy staff serving aboard ships and in the field."
+2 -1
View File
@@ -23,7 +23,7 @@
/obj/item/clothing/under/tajaran/nt
name = "NanoTrasen overalls"
desc = "Overalls meant for NanoTrasen employees of xeno descend, modified to prevent overheating."
desc = "Overalls meant for NanoTrasen employees of xeno descent, modified to prevent overheating."
icon_state = "ntoveralls"
item_state = "ntoveralls"
@@ -96,6 +96,7 @@
icon_state = "taj_dress_white"
item_state = "taj_dress_white"
contained_sprite = TRUE
no_overheat = TRUE
desc_fluff = "Today the fashion that dominates Adhomai shares few similarities to the clothing of old Furs, linen, hemp, silk and other such fabrics were traded for \
synthetic versions, creating a massive boom in the nylon industry and textile industry in the cities. Jeans, overcoats, army uniforms, parade uniforms, flags, pants, shirts, ties, \
suspenders, overalls are now the fashion of every Tajara from Nal'Tor to Kaltir. The protests of \"Old fashion\" supporters usually shatter against how effective and cheap it is to \
@@ -93,6 +93,13 @@
reagents = list(/decl/reagent/water = 10)
result = /obj/item/reagent_containers/food/snacks/soup/beet
/decl/recipe/pozole
appliance = SAUCEPAN | POT
fruit = list("dyn" = 1, "cabbage" = 1, "tomato" = 1)
reagents = list(/decl/reagent/water = 10)
items = list(/obj/item/reagent_containers/food/snacks/meat)
result = /obj/item/reagent_containers/food/snacks/soup/pozole
// Stews
/decl/recipe/stew
appliance = POT
+10 -1
View File
@@ -2171,4 +2171,13 @@ All custom items with worn sprites must follow the contained sprite system: http
desc = "A green-and-silver wooden die with six sides, beautifully carved and delicately painted. The single dot on the number one side is, on closer inspection, a miniature image of the god Rredouane."
icon_state = "sur_g_d1"
base_icon = "sur_g_d"
favored_number = 6
favored_number = 6
/obj/item/clothing/head/fluff/ulzka_skull // The skull of Ulzka Dorviza - The Continuity of Ulzka Dorviza - boggle08
name = "skull of Ulzka Dorviza"
desc = "This is the polished skull of a long dead Unathi. Great horns adorn either side of it, however, one of them is cracked off. In the rare instance it isn't lodged firmly in the gestalt it belongs to, it is bagged and tied up into the cowl that houses it."
icon = 'icons/obj/custom_items/ulzka_skull.dmi'
icon_state = "ulzka_skull"
item_state = "ulzka_skull"
canremove = FALSE
contained_sprite = TRUE
+4 -2
View File
@@ -88,9 +88,11 @@
/datum/species/skrell
default_emotes = list(
/decl/emote/audible/warble
/decl/emote/audible/warble,
/decl/emote/audible/croon,
/decl/emote/audible/lowarble,
/decl/emote/audible/croak
)
/mob/living/carbon/human/set_species(var/new_species, var/default_colour = 1)
UNLINT(. = ..())
update_emotes()
@@ -255,3 +255,18 @@
key = "warble"
emote_message_3p = "USER warbles!"
emote_sound = 'sound/voice/warble.ogg'
/decl/emote/audible/croon
key = "croon"
emote_message_3p = "USER croons..."
emote_sound = list('sound/voice/croon1.ogg', 'sound/voice/croon2.ogg')
/decl/emote/audible/lowarble
key = "lwarble"
emote_message_3p = "USER lets out a low, throaty warble!"
emote_sound = 'sound/voice/low warble.ogg'
/decl/emote/audible/croak
key = "croak"
emote_message_3p = "USER croaks!"
emote_sound = 'sound/voice/croak.ogg'
+2
View File
@@ -151,6 +151,8 @@
if (message)
log_emote("[name]/[key] : [message]")
message = process_chat_markup(message, list("~", "_"))
if(m_type == VISIBLE_MESSAGE)
visible_message(message, show_observers = do_show_observers)
else
@@ -19,7 +19,7 @@
//Vars related to human mobs
outfit = /datum/outfit/admin/nt/odinsec
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Odin Security Officer"
@@ -43,7 +43,7 @@
//Vars related to human mobs
outfit = /datum/outfit/admin/nt/odindoc
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Odin Medical Doctor"
@@ -64,7 +64,7 @@
max_count = 1
outfit = /datum/outfit/admin/nt/odinpharm
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Odin Pharmacist"
@@ -85,7 +85,7 @@
max_count = 2
outfit = /datum/outfit/admin/nt/odinchef
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Odin Chef"
@@ -106,7 +106,7 @@
max_count = 1
outfit = /datum/outfit/admin/nt/odinbartender
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Odin Bartender"
@@ -126,7 +126,7 @@
max_count = 1
outfit = /datum/outfit/admin/nt/odinjanitor
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_TAJARA,SPECIES_UNATHI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Sanitation Specialist"
@@ -149,7 +149,7 @@
max_count = 4
outfit = /datum/outfit/admin/ert/legion/sentinel
possible_species = list(SPECIES_HUMAN, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_DIONA)
possible_species = list(SPECIES_HUMAN, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_DIONA)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "TCFL Sentinel"
@@ -11,7 +11,7 @@
landmark_name = "CCIAAgent"
req_perms = R_CCIAA
possible_species = list(SPECIES_HUMAN, SPECIES_SKRELL)
possible_species = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
respawn_flag = null
@@ -155,7 +155,7 @@
//Vars related to human mobs
outfit = /datum/outfit/admin/tcfl
possible_species = list(SPECIES_HUMAN,SPECIES_TAJARA_MSAI,SPECIES_SKRELL, SPECIES_UNATHI,SPECIES_IPC)
possible_species = list(SPECIES_HUMAN,SPECIES_TAJARA_MSAI,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI,SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Tau Ceti Foreign Legion Legate"
@@ -10,7 +10,7 @@
//Vars related to human mobs
outfit = /datum/outfit/admin/random/visitor
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_TAJARA,SPECIES_UNATHI)
possible_species = list(SPECIES_HUMAN,SPECIES_HUMAN_OFFWORLD,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_TAJARA,SPECIES_TAJARA_MSAI,SPECIES_TAJARA_ZHAN,SPECIES_UNATHI,SPECIES_VAURCA_WARRIOR,SPECIES_VAURCA_WORKER)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Pod Survivor"
@@ -25,7 +25,7 @@
if(t == "star")
welcome_message = "You are a stranded star!<br>You were relaxing comfortably in your cryo pod as tragedy struck - the pilot of your luxury yacht fell asleep under some mysterious circumstances. You were unceremoniously stuffed into an escape pod, and left to wander in space. What a despicable, low-quality plot to get rid of you. Should've chosen murder instead - you certainly know you'll convince someone nice to lend you a shuttle."
outfit = /datum/outfit/admin/pod/star
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
else if(t == "priest")
welcome_message = "You are a stranded Trinary Perfection priest!<br>You were traveling around space on your small shuttle, preaching peacefully of the future divinity of the synthetics, and the grand purpose of mankind as the ones to help them achieve that goal. Unfortunately, Dominians don't seem to be as peaceful in disagreeing with your views - and had to evacuate your shot-down ship. Have your prayers to the Divines helped you now?"
outfit = /datum/outfit/admin/pod/priest
@@ -48,7 +48,7 @@
else if(t == "tcfl")
welcome_message = "You are a stranded member of the Tau Ceti Foreign Legion!<br>Perhaps there was a training accident or maybe something went wrong during a routine operation in the Romanovich Cloud. The Prefect will never let you hear the end of this..."
outfit = /datum/outfit/admin/pod/tcfl
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_DIONA) // TCFL accepts everyone. G1 and G2 have been excluded because they can't wear the hardsuit, which has the suit cooler.
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_DIONA) // TCFL accepts everyone. G1 and G2 have been excluded because they can't wear the hardsuit, which has the suit cooler.
else if(t == "fsf")
welcome_message = "You are a stranded Petty Officer of the Free Solarian Fleets!<br>Your skiff out of the FSFV Sforza was on a routine patrol when an accident or an attack forced you to abandon ship. Thankfully, you seem to be in friendly territory..."
outfit = /datum/outfit/admin/pod/fsf
@@ -56,16 +56,16 @@
else if(t == "scc")
welcome_message = "You are a stranded Stellar Corporate Conglomerate low-level functionary!<br>A routine inspection of SCC assets in the Romanovich cloud turned into disaster when your shuttle's reactor suddenly and mysteriously failed. You narrowly escaped with your life. Worst of all? You lost your paperwork."
outfit = /datum/outfit/admin/pod/scc
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
else if(t == "fib")
welcome_message = "You are a stranded Federal Investigation Bureau Agent!<br>What was supposed to be a standard investigation turned into a nightmare when the vessel you were supposed to board opened fire! You just managed to reach an escape pod before your own ship was turned into smoldering rubble. You really need some coffee."
outfit = /datum/outfit/admin/pod/fib
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
else
welcome_message = "You are a stranded drugs smuggler!<br>You shouldn't have had the fucking Tajara pilot your ship. <i>Of course</i> we crashed into a rock. Good thing you've got some of the stuff with you while evacuating - maybe you'll crash somewhere you could sell it for a ticket back?"
outfit = /datum/outfit/admin/pod/smuggler
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL,SPECIES_UNATHI)
possible_species = list(SPECIES_HUMAN,SPECIES_SKRELL, SPECIES_SKRELL_AXIORI,SPECIES_UNATHI)
/datum/ghostspawner/human/rescuepodsurv/select_spawnlocation(var/use=TRUE)
//Randomly select a Turf on the asteroid.
@@ -11,7 +11,7 @@
//Vars related to human mobs
outfit = /datum/outfit/merchant_assistant
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_DIONA)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_DIONA)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Merchants Assistant"
@@ -25,7 +25,7 @@
max_count = 1
desc = "A highly trained Eridani medical officer and the second in command of the EPMC Asset Protection Team. Well versed in surgical procedures and expected to work in a hot zone. Not a stranger to a bank run."
outfit = /datum/outfit/admin/ert/ap_eridani/doctor
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_SKRELL, SPECIES_IPC_SHELL)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_IPC_SHELL)
/datum/ghostspawner/human/ert/ap_eridani/corpsman
name = "Eridani Corpsman"
@@ -34,4 +34,4 @@
max_count = 2
desc = "An Eridani corpsman that can handle nursing duties as well. Trained to operate in combat environments if needed. Make sure to check your quarterlies."
outfit = /datum/outfit/admin/ert/ap_eridani/corpsman
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
@@ -6,7 +6,7 @@
desc = "A highly trained doctor. Can do most medical procedures even under severe stress. The de-facto lead of the IAC response team."
welcome_message = "You are part of the Interstellar Aid Corps, an intergalactic entity set on aiding all in need."
outfit = /datum/outfit/admin/ert/iac
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_DIONA, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
/datum/ghostspawner/human/ert/iac/bodyguard
name = "IAC Bodyguard"
@@ -5,7 +5,7 @@
desc = "Rank and file of a freelancer mercenary team."
welcome_message = "Your crew has been hired by Nanotrasen to sort out a distress signal. While you wouldn't do anything violent to the crew, maybe they won't miss that one fancy artifact..."
outfit = /datum/outfit/admin/ert/mercenary
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_DIONA, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL)
/datum/ghostspawner/human/ert/mercenary/specialist
name = "Mercenary Medical Specialist"
@@ -6,7 +6,7 @@
max_count = 2
outfit = /datum/outfit/admin/ert/nanotrasen
mob_name_prefix = "Tpr. "
possible_species = list(SPECIES_HUMAN, SPECIES_SKRELL)
possible_species = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
spawnpoints = list("NTERTSpawn")
/datum/ghostspawner/human/ert/nanotrasen/specialist
@@ -8,7 +8,7 @@
spawnpoints = list("ERTSpawn")
//Vars related to human mobs
possible_species = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_UNATHI, SPECIES_IPC)
possible_species = list(SPECIES_HUMAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_UNATHI, SPECIES_IPC)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Emergency Responder"
@@ -6,7 +6,7 @@
max_count = 3
outfit = /datum/outfit/admin/ert/legion
spawnpoints = list("TCFLERTSpawn")
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_DIONA)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_DIONA)
mob_name_prefix = "Vol. "
/datum/ghostspawner/human/ert/tcfl/specialist
@@ -13,7 +13,7 @@
//Vars related to human mobs
outfit = /datum/outfit/admin/random/visitor
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_IPC_G1, SPECIES_IPC_G2)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_MSAI, SPECIES_TAJARA_ZHAN, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_UNATHI, SPECIES_VAURCA_WARRIOR, SPECIES_VAURCA_WORKER, SPECIES_IPC, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP, SPECIES_IPC_SHELL, SPECIES_IPC_G1, SPECIES_IPC_G2)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Visitor"
@@ -23,4 +23,6 @@
mob_name = null
/datum/ghostspawner/human/visitor/select_spawnlocation(var/use = TRUE)
return pick(latejoin)
if(current_map.force_spawnpoint)
return pick(force_spawnpoints["Anyone"])
return pick(latejoin)
@@ -12,7 +12,7 @@
away_site = TRUE
outfit = /datum/outfit/admin/zenghu_survivor
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_SKRELL, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP)
possible_species = list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_SKRELL, SPECIES_SKRELL_AXIORI, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR, SPECIES_IPC, SPECIES_IPC_G1, SPECIES_IPC_G2, SPECIES_IPC_XION, SPECIES_IPC_ZENGHU, SPECIES_IPC_BISHOP)
allow_appearance_change = APPEARANCE_PLASTICSURGERY
assigned_role = "Zeng-Hu Survivor"
@@ -59,3 +59,23 @@
/obj/item/seeds/sunflowerseed
seed_type = "sunflowers"
/datum/seed/flower/vanilla
name = "vanilla"
seed_name = "vanilla"
display_name = "vanilla"
chems = list(/decl/reagent/nutriment/vanilla = list(3,10), /decl/reagent/nutriment = list(1,20))
/obj/item/seeds/vanilla
seed_type = "vanilla"
/datum/seed/flower/vanilla/setup_traits()
..()
set_trait(TRAIT_MATURATION,7)
set_trait(TRAIT_PRODUCTION,1)
set_trait(TRAIT_YIELD,2)
set_trait(TRAIT_PRODUCT_ICON,"flower5")
set_trait(TRAIT_PRODUCT_COLOUR,"#e8efe5")
set_trait(TRAIT_PLANT_COLOUR,"#6B8C5E")
set_trait(TRAIT_PLANT_ICON,"flower")
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
+2
View File
@@ -90,6 +90,7 @@
/obj/item/seeds/tobaccoseed = 3,
/obj/item/seeds/tomatoseed = 3,
/obj/item/seeds/towermycelium = 3,
/obj/item/seeds/vanilla = 3,
/obj/item/seeds/watermelonseed = 3,
/obj/item/seeds/wheatseed = 3,
/obj/item/seeds/whitebeetseed = 3,
@@ -155,6 +156,7 @@
/obj/item/seeds/tobaccoseed = 3,
/obj/item/seeds/tomatoseed = 3,
/obj/item/seeds/towermycelium = 3,
/obj/item/seeds/vanilla = 3,
/obj/item/seeds/watermelonseed = 3,
/obj/item/seeds/wheatseed = 3,
/obj/item/seeds/whitebeetseed = 3,

Some files were not shown because too many files have changed in this diff Show More