Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit265
This commit is contained in:
@@ -1,73 +0,0 @@
|
||||
/obj/effect/mob_spawn/human/lavaknight
|
||||
name = "odd cryogenics pod"
|
||||
desc = "A humming cryo pod. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
mob_name = "a displaced knight from another dimension"
|
||||
icon = 'icons/obj/machines/sleeper.dmi'
|
||||
icon_state = "sleeper"
|
||||
roundstart = FALSE
|
||||
job_description = "Cydonian Knight"
|
||||
death = FALSE
|
||||
random = TRUE
|
||||
outfit = /datum/outfit/lavaknight
|
||||
mob_species = /datum/species/human
|
||||
flavour_text = "<font size=3><b>Y</b></font><b>ou are a knight who conveniently has some form of retrograde amnesia. \
|
||||
You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \
|
||||
Remember: hostile creatures and such are fair game for attacking, but <span class='danger'>under no circumstances are you to attack anything capable of thought and/or speech</span> unless it has made it its life's calling to chase you to the ends of the earth."
|
||||
assignedrole = "Cydonian Knight"
|
||||
|
||||
/obj/effect/mob_spawn/human/lavaknight/special(mob/living/new_spawn)
|
||||
if(ishuman(new_spawn))
|
||||
var/mob/living/carbon/human/H = new_spawn
|
||||
H.dna.features["mam_ears"] = "Cat, Big" //cat people
|
||||
H.dna.features["mcolor"] = H.hair_color
|
||||
H.update_body()
|
||||
|
||||
/obj/effect/mob_spawn/human/lavaknight/Destroy()
|
||||
new/obj/structure/showcase/machinery/oldpod/used(drop_location())
|
||||
return ..()
|
||||
|
||||
/datum/outfit/lavaknight
|
||||
name = "Cydonian Knight"
|
||||
uniform = /obj/item/clothing/under/assistantformal
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
r_pocket = /obj/item/melee/transforming/energy/sword/cx
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/lavaknight
|
||||
suit_store = /obj/item/tank/internals/oxygen
|
||||
id = /obj/item/card/id/knight
|
||||
|
||||
/datum/outfit/lavaknight/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/card/id/knight/W = H.wear_id
|
||||
W.assignment = "Knight"
|
||||
W.registered_name = H.real_name
|
||||
W.id_color = "#0000FF" //Regular knights get simple blue. Doesn't matter much because it's variable anyway
|
||||
W.update_label(H.real_name)
|
||||
W.update_icon()
|
||||
|
||||
/datum/outfit/lavaknight/captain
|
||||
name ="Cydonian Knight Captain"
|
||||
l_pocket = /obj/item/twohanded/dualsaber/hypereutactic
|
||||
|
||||
/datum/outfit/lavaknight/captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/obj/item/card/id/knight/W = H.wear_id
|
||||
W.assignment = "Knight Captain"
|
||||
W.registered_name = H.real_name
|
||||
W.id_color = "#FFD700" //Captains get gold, duh. Doesn't matter because it's variable anyway
|
||||
W.update_label(H.real_name)
|
||||
W.update_icon()
|
||||
|
||||
|
||||
/obj/effect/mob_spawn/human/lavaknight/captain
|
||||
name = "odd gilded cryogenics pod"
|
||||
desc = "A humming cryo pod that appears to be gilded. You can barely recognise a faint glow underneath the built up ice. The machine is attempting to wake up its occupant."
|
||||
flavour_text = "<font size=3><b>Y</b></font><b>ou are a knight who conveniently has some form of retrograde amnesia. \
|
||||
You cannot remember where you came from. However, a few things remain burnt into your mind, most prominently a vow to never harm another sapient being under any circumstances unless it is hellbent on ending your life. \
|
||||
Remember: hostile creatures and such are fair game for attacking, but <span class='danger'>under no circumstances are you to attack anything capable of thought and/or speech</span> unless it has made it its life's calling to chase you to the ends of the earth. \
|
||||
You feel a natural instict to lead, and as such, you should strive to lead your comrades to safety, and hopefully home. You also feel a burning determination to uphold your vow, as well as your fellow comrade's."
|
||||
outfit = /datum/outfit/lavaknight/captain
|
||||
@@ -452,3 +452,9 @@ datum/gear/darksabresheath
|
||||
category = SLOT_HEAD
|
||||
path = /obj/item/clothing/head/flight
|
||||
ckeywhitelist = list("maxlynchy")
|
||||
|
||||
/datum/gear/onionneck
|
||||
name = "Onion Necklace"
|
||||
category = SLOT_NECK
|
||||
path = /obj/item/clothing/neck/necklace/onion
|
||||
ckeywhitelist = list("cdrcross")
|
||||
|
||||
@@ -6,30 +6,28 @@
|
||||
icon_state = "s-ninja"
|
||||
item_state = "s-ninja"
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/Initialize()
|
||||
/obj/item/clothing/glasses/phantomthief/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/phantomthief)
|
||||
AddComponent(/datum/component/wearertargeting/phantomthief)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate
|
||||
name = "suspicious plastic mask"
|
||||
desc = "A cheap, bulky, Syndicate-branded plastic face mask. You have to break in to break out."
|
||||
var/nextadrenalinepop
|
||||
var/datum/component/redirect/combattoggle_redir
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/examine(user)
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/examine(mob/user)
|
||||
. = ..()
|
||||
if(combattoggle_redir)
|
||||
if(user.get_item_by_slot(SLOT_GLASSES) == src)
|
||||
if(world.time >= nextadrenalinepop)
|
||||
to_chat(user, "<span class='notice'>The built-in adrenaline injector is ready for use.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again.")
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
|
||||
if(istype(user))
|
||||
if(combatmodestate && world.time >= nextadrenalinepop)
|
||||
nextadrenalinepop = world.time + 5 MINUTES
|
||||
user.reagents.add_reagent("syndicateadrenals", 5)
|
||||
user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
|
||||
if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)
|
||||
nextadrenalinepop = world.time + 5 MINUTES
|
||||
user.reagents.add_reagent("syndicateadrenals", 5)
|
||||
user.playsound_local(user, 'modular_citadel/sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
@@ -37,12 +35,10 @@
|
||||
return
|
||||
if(slot != SLOT_GLASSES)
|
||||
return
|
||||
if(!combattoggle_redir)
|
||||
combattoggle_redir = user.AddComponent(/datum/component/redirect, list(COMSIG_COMBAT_TOGGLED = CALLBACK(src, .proc/injectadrenaline)))
|
||||
RegisterSignal(user, COMSIG_COMBAT_TOGGLED, .proc/injectadrenaline)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/dropped(mob/user)
|
||||
. = ..()
|
||||
if(!istype(user))
|
||||
return
|
||||
if(combattoggle_redir)
|
||||
QDEL_NULL(combattoggle_redir)
|
||||
UnregisterSignal(user, COMSIG_COMBAT_TOGGLED)
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
/*
|
||||
CYDONIAN ARMOR THAT IS RGB AND STUFF WOOOOOOOOOO
|
||||
*/
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight
|
||||
name = "cydonian helmet"
|
||||
desc = "A helmet designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
|
||||
icon = 'modular_citadel/icons/lavaknight/item/head.dmi'
|
||||
icon_state = "knight_cydonia"
|
||||
item_state = "knight_yellow"
|
||||
item_color = null
|
||||
alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/head.dmi'
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
heat_protection = HEAD
|
||||
armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
brightness_on = 7
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator)
|
||||
var/energy_color = "#35FFF0"
|
||||
var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/New()
|
||||
..()
|
||||
if(istype(loc, /obj/item/clothing/suit/space/hardsuit/lavaknight))
|
||||
linkedsuit = loc
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/attack_self(mob/user)
|
||||
on = !on
|
||||
|
||||
if(on)
|
||||
set_light(brightness_on)
|
||||
else
|
||||
set_light(0)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/update_icon()
|
||||
var/mutable_appearance/helm_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
if(energy_color)
|
||||
helm_overlay.color = energy_color
|
||||
|
||||
helm_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15, HUD is 18
|
||||
|
||||
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
||||
|
||||
add_overlay(helm_overlay)
|
||||
|
||||
emissivelights()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot == SLOT_HEAD)
|
||||
emissivelights()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/dropped(mob/user)
|
||||
..()
|
||||
emissivelightsoff()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
|
||||
var/mutable_appearance/energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/head.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
energy_overlay.color = energy_color
|
||||
energy_overlay.plane = LIGHTING_PLANE + 1
|
||||
user.cut_overlay(energy_overlay) //honk
|
||||
user.add_overlay(energy_overlay) //honk
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr)
|
||||
user.cut_overlay()
|
||||
linkedsuit.emissivelights() //HONK HONK HONK MAXIMUM SPAGHETTI
|
||||
user.regenerate_icons() //honk
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight
|
||||
icon = 'modular_citadel/icons/lavaknight/item/suit.dmi'
|
||||
icon_state = "knight_cydonia"
|
||||
name = "cydonian armor"
|
||||
desc = "A suit designed with both form and function in mind, it protects the user against physical trauma and hazardous conditions while also having polychromic light strips."
|
||||
item_state = "swat_suit"
|
||||
alternate_worn_icon = 'modular_citadel/icons/lavaknight/mob/suit.dmi'
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet)
|
||||
var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/linkedhelm
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
var/energy_color = "#35FFF0"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/New()
|
||||
..()
|
||||
if(helmet)
|
||||
linkedhelm = helmet
|
||||
light_color = energy_color
|
||||
set_light(1)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon()
|
||||
var/mutable_appearance/suit_overlay
|
||||
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else
|
||||
suit_overlay = mutable_appearance('modular_citadel/icons/lavaknight/item/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
if(energy_color)
|
||||
suit_overlay.color = energy_color
|
||||
|
||||
suit_overlay.plane = LIGHTING_PLANE + 1 //Magic number is used here because we have no ABOVE_LIGHTING_PLANE plane defined. Lighting plane is 15.
|
||||
|
||||
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
||||
|
||||
add_overlay(suit_overlay)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot == SLOT_WEAR_SUIT)
|
||||
emissivelights()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/dropped(mob/user)
|
||||
..()
|
||||
emissivelightsoff()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelights(mob/user = usr)
|
||||
var/mutable_appearance/energy_overlay
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
else
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/lavaknight/mob/suit.dmi', "knight_cydonia_overlay", LIGHTING_LAYER + 1)
|
||||
|
||||
energy_overlay.color = energy_color
|
||||
energy_overlay.plane = LIGHTING_PLANE + 1
|
||||
user.cut_overlay(energy_overlay) //honk
|
||||
user.add_overlay(energy_overlay) //honk
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/proc/emissivelightsoff(mob/user = usr)
|
||||
user.cut_overlays()
|
||||
user.regenerate_icons() //honk
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/AltClick(mob/living/user)
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(!in_range(src, user))
|
||||
return
|
||||
if(user.incapacitated() || !istype(user) || !in_range(src, user))
|
||||
return
|
||||
|
||||
if(alert("Are you sure you want to recolor your armor stripes?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/energy_color_input = input(usr,"","Choose Energy Color",energy_color) as color|null
|
||||
if(energy_color_input)
|
||||
energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
user.update_inv_wear_suit()
|
||||
if(linkedhelm)
|
||||
linkedhelm.energy_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
user.update_inv_head()
|
||||
linkedhelm.update_icon()
|
||||
update_icon()
|
||||
user.update_inv_wear_suit()
|
||||
light_color = energy_color
|
||||
emissivelights()
|
||||
update_light()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
@@ -501,3 +501,11 @@
|
||||
item_state = "flight-g"
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
|
||||
/obj/item/clothing/neck/necklace/onion
|
||||
name = "Onion Necklace"
|
||||
desc = "A string of onions sequenced together to form a necklace."
|
||||
icon = 'icons/obj/custom.dmi'
|
||||
icon_state = "onion"
|
||||
item_state = "onion"
|
||||
alternate_worn_icon = 'icons/mob/custom_w.dmi'
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
/datum/round_event_control/blob
|
||||
earliest_start = 60 MINUTES
|
||||
@@ -1,2 +0,0 @@
|
||||
/mob/living/simple_animal/hostile/carp/ranged
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
@@ -1,8 +0,0 @@
|
||||
//This file controls whether or not a job complies with dresscodes.
|
||||
//If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack.
|
||||
|
||||
/datum/job
|
||||
var/dresscodecompliant = TRUE
|
||||
|
||||
/datum/job/assistant
|
||||
dresscodecompliant = FALSE
|
||||
@@ -1,21 +0,0 @@
|
||||
/datum/job/captain
|
||||
minimal_player_age = 20
|
||||
exp_type = EXP_TYPE_COMMAND
|
||||
|
||||
/datum/job/hop
|
||||
minimal_player_age = 20
|
||||
exp_type_department = EXP_TYPE_SERVICE
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
|
||||
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
|
||||
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION,
|
||||
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
/datum/job/bartender
|
||||
access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/datum/job/qm
|
||||
department_head = list("Captain")
|
||||
supervisors = "the captain"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 10
|
||||
exp_requirements = 180
|
||||
exp_type_department = EXP_TYPE_SUPPLY
|
||||
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_KEYCARD_AUTH, ACCESS_RC_ANNOUNCE, ACCESS_SEC_DOORS, ACCESS_HEADS)
|
||||
|
||||
/datum/outfit/job/quartermaster
|
||||
id = /obj/item/card/id/silver
|
||||
ears = /obj/item/radio/headset/heads/qm
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
|
||||
|
||||
/datum/job/cargo_tech
|
||||
department_head = list("Quartermaster")
|
||||
supervisors = "the quartermaster"
|
||||
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/datum/job/mining
|
||||
department_head = list("Quartermaster")
|
||||
supervisors = "the quartermaster"
|
||||
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
@@ -1,14 +0,0 @@
|
||||
/datum/job/chief_engineer
|
||||
minimal_player_age = 10
|
||||
|
||||
/datum/job/engineer
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
/datum/job/atmos
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ENGINE,
|
||||
ACCESS_ENGINE_EQUIP, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM)
|
||||
@@ -1,8 +0,0 @@
|
||||
/datum/job/cmo
|
||||
minimal_player_age = 10
|
||||
|
||||
/datum/outfit/job/doctor
|
||||
backpack_contents = list(/obj/item/storage/hypospraykit/regular)
|
||||
|
||||
/datum/outfit/job/chemist
|
||||
backpack_contents = list(/obj/item/storage/hypospraykit/regular)
|
||||
@@ -1,2 +0,0 @@
|
||||
/datum/job/rd
|
||||
minimal_player_age = 10
|
||||
@@ -1,5 +0,0 @@
|
||||
/datum/job/hos
|
||||
minimal_player_age = 10
|
||||
|
||||
/datum/outfit/job/warden
|
||||
suit_store = /obj/item/gun/energy/pumpaction/defender
|
||||
@@ -1,12 +1,3 @@
|
||||
/mob/living/carbon/human/species/mammal
|
||||
race = /datum/species/mammal
|
||||
|
||||
/mob/living/carbon/human/species/insect
|
||||
race = /datum/species/insect
|
||||
|
||||
/mob/living/carbon/human/species/xeno
|
||||
race = /datum/species/xeno
|
||||
|
||||
/mob/living/proc/resist_embedded()
|
||||
return
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
var/sprint_buffer_max = 42
|
||||
var/sprint_buffer_regen_ds = 0.3 //Tiles per world.time decisecond
|
||||
var/sprint_buffer_regen_last = 0 //last world.time this was regen'd for math.
|
||||
var/sprint_stamina_cost = 0.55 //stamina loss per tile while insufficient sprint buffer.
|
||||
var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer.
|
||||
//---End
|
||||
|
||||
/mob/living/movement_delay(ignorewalk = 0)
|
||||
|
||||
@@ -1,633 +0,0 @@
|
||||
// List is required to compile the resources into the game when it loads.
|
||||
// Dynamically loading it has bad results with sounds overtaking each other, even with the wait variable.
|
||||
#ifdef AI_VOX
|
||||
|
||||
GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'modular_citadel/sound/vox/_comma.ogg',
|
||||
"." = 'modular_citadel/sound/vox/_period.ogg',
|
||||
"a" = 'modular_citadel/sound/vox/a.ogg',
|
||||
"accelerating" = 'modular_citadel/sound/vox/accelerating.ogg',
|
||||
"accelerator" = 'modular_citadel/sound/vox/accelerator.ogg',
|
||||
"accepted" = 'modular_citadel/sound/vox/accepted.ogg',
|
||||
"access" = 'modular_citadel/sound/vox/access.ogg',
|
||||
"acknowledge" = 'modular_citadel/sound/vox/acknowledge.ogg',
|
||||
"acknowledged" = 'modular_citadel/sound/vox/acknowledged.ogg',
|
||||
"acquired" = 'modular_citadel/sound/vox/acquired.ogg',
|
||||
"acquisition" = 'modular_citadel/sound/vox/acquisition.ogg',
|
||||
"across" = 'modular_citadel/sound/vox/across.ogg',
|
||||
"activate" = 'modular_citadel/sound/vox/activate.ogg',
|
||||
"activated" = 'modular_citadel/sound/vox/activated.ogg',
|
||||
"activity" = 'modular_citadel/sound/vox/activity.ogg',
|
||||
"adios" = 'modular_citadel/sound/vox/adios.ogg',
|
||||
"administration" = 'modular_citadel/sound/vox/administration.ogg',
|
||||
"advanced" = 'modular_citadel/sound/vox/advanced.ogg',
|
||||
"after" = 'modular_citadel/sound/vox/after.ogg',
|
||||
"agent" = 'modular_citadel/sound/vox/agent.ogg',
|
||||
"alarm" = 'modular_citadel/sound/vox/alarm.ogg',
|
||||
"alert" = 'modular_citadel/sound/vox/alert.ogg',
|
||||
"alien" = 'modular_citadel/sound/vox/alien.ogg',
|
||||
"aligned" = 'modular_citadel/sound/vox/aligned.ogg',
|
||||
"all" = 'modular_citadel/sound/vox/all.ogg',
|
||||
"alpha" = 'modular_citadel/sound/vox/alpha.ogg',
|
||||
"am" = 'modular_citadel/sound/vox/am.ogg',
|
||||
"amigo" = 'modular_citadel/sound/vox/amigo.ogg',
|
||||
"ammunition" = 'modular_citadel/sound/vox/ammunition.ogg',
|
||||
"an" = 'modular_citadel/sound/vox/an.ogg',
|
||||
"and" = 'modular_citadel/sound/vox/and.ogg',
|
||||
"announcement" = 'modular_citadel/sound/vox/announcement.ogg',
|
||||
"anomalous" = 'modular_citadel/sound/vox/anomalous.ogg',
|
||||
"antenna" = 'modular_citadel/sound/vox/antenna.ogg',
|
||||
"any" = 'modular_citadel/sound/vox/any.ogg',
|
||||
"apprehend" = 'modular_citadel/sound/vox/apprehend.ogg',
|
||||
"approach" = 'modular_citadel/sound/vox/approach.ogg',
|
||||
"are" = 'modular_citadel/sound/vox/are.ogg',
|
||||
"area" = 'modular_citadel/sound/vox/area.ogg',
|
||||
"arm" = 'modular_citadel/sound/vox/arm.ogg',
|
||||
"armed" = 'modular_citadel/sound/vox/armed.ogg',
|
||||
"armor" = 'modular_citadel/sound/vox/armor.ogg',
|
||||
"armory" = 'modular_citadel/sound/vox/armory.ogg',
|
||||
"arrest" = 'modular_citadel/sound/vox/arrest.ogg',
|
||||
"ass" = 'modular_citadel/sound/vox/ass.ogg',
|
||||
"at" = 'modular_citadel/sound/vox/at.ogg',
|
||||
"atomic" = 'modular_citadel/sound/vox/atomic.ogg',
|
||||
"attention" = 'modular_citadel/sound/vox/attention.ogg',
|
||||
"authorize" = 'modular_citadel/sound/vox/authorize.ogg',
|
||||
"authorized" = 'modular_citadel/sound/vox/authorized.ogg',
|
||||
"automatic" = 'modular_citadel/sound/vox/automatic.ogg',
|
||||
"away" = 'modular_citadel/sound/vox/away.ogg',
|
||||
"b" = 'modular_citadel/sound/vox/b.ogg',
|
||||
"back" = 'modular_citadel/sound/vox/back.ogg',
|
||||
"backman" = 'modular_citadel/sound/vox/backman.ogg',
|
||||
"bad" = 'modular_citadel/sound/vox/bad.ogg',
|
||||
"bag" = 'modular_citadel/sound/vox/bag.ogg',
|
||||
"bailey" = 'modular_citadel/sound/vox/bailey.ogg',
|
||||
"barracks" = 'modular_citadel/sound/vox/barracks.ogg',
|
||||
"base" = 'modular_citadel/sound/vox/base.ogg',
|
||||
"bay" = 'modular_citadel/sound/vox/bay.ogg',
|
||||
"be" = 'modular_citadel/sound/vox/be.ogg',
|
||||
"been" = 'modular_citadel/sound/vox/been.ogg',
|
||||
"before" = 'modular_citadel/sound/vox/before.ogg',
|
||||
"beyond" = 'modular_citadel/sound/vox/beyond.ogg',
|
||||
"biohazard" = 'modular_citadel/sound/vox/biohazard.ogg',
|
||||
"biological" = 'modular_citadel/sound/vox/biological.ogg',
|
||||
"birdwell" = 'modular_citadel/sound/vox/birdwell.ogg',
|
||||
"bizwarn" = 'modular_citadel/sound/vox/bizwarn.ogg',
|
||||
"black" = 'modular_citadel/sound/vox/black.ogg',
|
||||
"blast" = 'modular_citadel/sound/vox/blast.ogg',
|
||||
"blocked" = 'modular_citadel/sound/vox/blocked.ogg',
|
||||
"bloop" = 'modular_citadel/sound/vox/bloop.ogg',
|
||||
"blue" = 'modular_citadel/sound/vox/blue.ogg',
|
||||
"bottom" = 'modular_citadel/sound/vox/bottom.ogg',
|
||||
"bravo" = 'modular_citadel/sound/vox/bravo.ogg',
|
||||
"breach" = 'modular_citadel/sound/vox/breach.ogg',
|
||||
"breached" = 'modular_citadel/sound/vox/breached.ogg',
|
||||
"break" = 'modular_citadel/sound/vox/break.ogg',
|
||||
"bridge" = 'modular_citadel/sound/vox/bridge.ogg',
|
||||
"bust" = 'modular_citadel/sound/vox/bust.ogg',
|
||||
"but" = 'modular_citadel/sound/vox/but.ogg',
|
||||
"button" = 'modular_citadel/sound/vox/button.ogg',
|
||||
"buzwarn" = 'modular_citadel/sound/vox/buzwarn.ogg',
|
||||
"bypass" = 'modular_citadel/sound/vox/bypass.ogg',
|
||||
"c" = 'modular_citadel/sound/vox/c.ogg',
|
||||
"cable" = 'modular_citadel/sound/vox/cable.ogg',
|
||||
"call" = 'modular_citadel/sound/vox/call.ogg',
|
||||
"called" = 'modular_citadel/sound/vox/called.ogg',
|
||||
"canal" = 'modular_citadel/sound/vox/canal.ogg',
|
||||
"cap" = 'modular_citadel/sound/vox/cap.ogg',
|
||||
"captain" = 'modular_citadel/sound/vox/captain.ogg',
|
||||
"capture" = 'modular_citadel/sound/vox/capture.ogg',
|
||||
"captured" = 'modular_citadel/sound/vox/captured.ogg',
|
||||
"ceiling" = 'modular_citadel/sound/vox/ceiling.ogg',
|
||||
"celsius" = 'modular_citadel/sound/vox/celsius.ogg',
|
||||
"center" = 'modular_citadel/sound/vox/center.ogg',
|
||||
"centi" = 'modular_citadel/sound/vox/centi.ogg',
|
||||
"central" = 'modular_citadel/sound/vox/central.ogg',
|
||||
"chamber" = 'modular_citadel/sound/vox/chamber.ogg',
|
||||
"charlie" = 'modular_citadel/sound/vox/charlie.ogg',
|
||||
"check" = 'modular_citadel/sound/vox/check.ogg',
|
||||
"checkpoint" = 'modular_citadel/sound/vox/checkpoint.ogg',
|
||||
"chemical" = 'modular_citadel/sound/vox/chemical.ogg',
|
||||
"cleanup" = 'modular_citadel/sound/vox/cleanup.ogg',
|
||||
"clear" = 'modular_citadel/sound/vox/clear.ogg',
|
||||
"clearance" = 'modular_citadel/sound/vox/clearance.ogg',
|
||||
"close" = 'modular_citadel/sound/vox/close.ogg',
|
||||
"clown" = 'modular_citadel/sound/vox/clown.ogg',
|
||||
"code" = 'modular_citadel/sound/vox/code.ogg',
|
||||
"coded" = 'modular_citadel/sound/vox/coded.ogg',
|
||||
"collider" = 'modular_citadel/sound/vox/collider.ogg',
|
||||
"command" = 'modular_citadel/sound/vox/command.ogg',
|
||||
"communication" = 'modular_citadel/sound/vox/communication.ogg',
|
||||
"complex" = 'modular_citadel/sound/vox/complex.ogg',
|
||||
"computer" = 'modular_citadel/sound/vox/computer.ogg',
|
||||
"condition" = 'modular_citadel/sound/vox/condition.ogg',
|
||||
"containment" = 'modular_citadel/sound/vox/containment.ogg',
|
||||
"contamination" = 'modular_citadel/sound/vox/contamination.ogg',
|
||||
"control" = 'modular_citadel/sound/vox/control.ogg',
|
||||
"coolant" = 'modular_citadel/sound/vox/coolant.ogg',
|
||||
"coomer" = 'modular_citadel/sound/vox/coomer.ogg',
|
||||
"core" = 'modular_citadel/sound/vox/core.ogg',
|
||||
"correct" = 'modular_citadel/sound/vox/correct.ogg',
|
||||
"corridor" = 'modular_citadel/sound/vox/corridor.ogg',
|
||||
"crew" = 'modular_citadel/sound/vox/crew.ogg',
|
||||
"cross" = 'modular_citadel/sound/vox/cross.ogg',
|
||||
"cryogenic" = 'modular_citadel/sound/vox/cryogenic.ogg',
|
||||
"d" = 'modular_citadel/sound/vox/d.ogg',
|
||||
"dadeda" = 'modular_citadel/sound/vox/dadeda.ogg',
|
||||
"damage" = 'modular_citadel/sound/vox/damage.ogg',
|
||||
"damaged" = 'modular_citadel/sound/vox/damaged.ogg',
|
||||
"danger" = 'modular_citadel/sound/vox/danger.ogg',
|
||||
"day" = 'modular_citadel/sound/vox/day.ogg',
|
||||
"deactivated" = 'modular_citadel/sound/vox/deactivated.ogg',
|
||||
"decompression" = 'modular_citadel/sound/vox/decompression.ogg',
|
||||
"decontamination" = 'modular_citadel/sound/vox/decontamination.ogg',
|
||||
"deeoo" = 'modular_citadel/sound/vox/deeoo.ogg',
|
||||
"defense" = 'modular_citadel/sound/vox/defense.ogg',
|
||||
"degrees" = 'modular_citadel/sound/vox/degrees.ogg',
|
||||
"delta" = 'modular_citadel/sound/vox/delta.ogg',
|
||||
"denied" = 'modular_citadel/sound/vox/denied.ogg',
|
||||
"deploy" = 'modular_citadel/sound/vox/deploy.ogg',
|
||||
"deployed" = 'modular_citadel/sound/vox/deployed.ogg',
|
||||
"destroy" = 'modular_citadel/sound/vox/destroy.ogg',
|
||||
"destroyed" = 'modular_citadel/sound/vox/destroyed.ogg',
|
||||
"detain" = 'modular_citadel/sound/vox/detain.ogg',
|
||||
"detected" = 'modular_citadel/sound/vox/detected.ogg',
|
||||
"detonation" = 'modular_citadel/sound/vox/detonation.ogg',
|
||||
"device" = 'modular_citadel/sound/vox/device.ogg',
|
||||
"did" = 'modular_citadel/sound/vox/did.ogg',
|
||||
"die" = 'modular_citadel/sound/vox/die.ogg',
|
||||
"dimensional" = 'modular_citadel/sound/vox/dimensional.ogg',
|
||||
"dirt" = 'modular_citadel/sound/vox/dirt.ogg',
|
||||
"disengaged" = 'modular_citadel/sound/vox/disengaged.ogg',
|
||||
"dish" = 'modular_citadel/sound/vox/dish.ogg',
|
||||
"disposal" = 'modular_citadel/sound/vox/disposal.ogg',
|
||||
"distance" = 'modular_citadel/sound/vox/distance.ogg',
|
||||
"distortion" = 'modular_citadel/sound/vox/distortion.ogg',
|
||||
"do" = 'modular_citadel/sound/vox/do.ogg',
|
||||
"doctor" = 'modular_citadel/sound/vox/doctor.ogg',
|
||||
"doop" = 'modular_citadel/sound/vox/doop.ogg',
|
||||
"door" = 'modular_citadel/sound/vox/door.ogg',
|
||||
"down" = 'modular_citadel/sound/vox/down.ogg',
|
||||
"dual" = 'modular_citadel/sound/vox/dual.ogg',
|
||||
"duct" = 'modular_citadel/sound/vox/duct.ogg',
|
||||
"e" = 'modular_citadel/sound/vox/e.ogg',
|
||||
"east" = 'modular_citadel/sound/vox/east.ogg',
|
||||
"echo" = 'modular_citadel/sound/vox/echo.ogg',
|
||||
"ed" = 'modular_citadel/sound/vox/ed.ogg',
|
||||
"effect" = 'modular_citadel/sound/vox/effect.ogg',
|
||||
"egress" = 'modular_citadel/sound/vox/egress.ogg',
|
||||
"eight" = 'modular_citadel/sound/vox/eight.ogg',
|
||||
"eighteen" = 'modular_citadel/sound/vox/eighteen.ogg',
|
||||
"eighty" = 'modular_citadel/sound/vox/eighty.ogg',
|
||||
"electric" = 'modular_citadel/sound/vox/electric.ogg',
|
||||
"electromagnetic" = 'modular_citadel/sound/vox/electromagnetic.ogg',
|
||||
"elevator" = 'modular_citadel/sound/vox/elevator.ogg',
|
||||
"eleven" = 'modular_citadel/sound/vox/eleven.ogg',
|
||||
"eliminate" = 'modular_citadel/sound/vox/eliminate.ogg',
|
||||
"emergency" = 'modular_citadel/sound/vox/emergency.ogg',
|
||||
"enemy" = 'modular_citadel/sound/vox/enemy.ogg',
|
||||
"energy" = 'modular_citadel/sound/vox/energy.ogg',
|
||||
"engage" = 'modular_citadel/sound/vox/engage.ogg',
|
||||
"engaged" = 'modular_citadel/sound/vox/engaged.ogg',
|
||||
"engine" = 'modular_citadel/sound/vox/engine.ogg',
|
||||
"enter" = 'modular_citadel/sound/vox/enter.ogg',
|
||||
"entry" = 'modular_citadel/sound/vox/entry.ogg',
|
||||
"environment" = 'modular_citadel/sound/vox/environment.ogg',
|
||||
"error" = 'modular_citadel/sound/vox/error.ogg',
|
||||
"escape" = 'modular_citadel/sound/vox/escape.ogg',
|
||||
"evacuate" = 'modular_citadel/sound/vox/evacuate.ogg',
|
||||
"exchange" = 'modular_citadel/sound/vox/exchange.ogg',
|
||||
"exit" = 'modular_citadel/sound/vox/exit.ogg',
|
||||
"expect" = 'modular_citadel/sound/vox/expect.ogg',
|
||||
"experiment" = 'modular_citadel/sound/vox/experiment.ogg',
|
||||
"experimental" = 'modular_citadel/sound/vox/experimental.ogg',
|
||||
"explode" = 'modular_citadel/sound/vox/explode.ogg',
|
||||
"explosion" = 'modular_citadel/sound/vox/explosion.ogg',
|
||||
"exposure" = 'modular_citadel/sound/vox/exposure.ogg',
|
||||
"exterminate" = 'modular_citadel/sound/vox/exterminate.ogg',
|
||||
"extinguish" = 'modular_citadel/sound/vox/extinguish.ogg',
|
||||
"extinguisher" = 'modular_citadel/sound/vox/extinguisher.ogg',
|
||||
"extreme" = 'modular_citadel/sound/vox/extreme.ogg',
|
||||
"f" = 'modular_citadel/sound/vox/f.ogg',
|
||||
"face" = 'modular_citadel/sound/vox/face.ogg',
|
||||
"facility" = 'modular_citadel/sound/vox/facility.ogg',
|
||||
"fahrenheit" = 'modular_citadel/sound/vox/fahrenheit.ogg',
|
||||
"failed" = 'modular_citadel/sound/vox/failed.ogg',
|
||||
"failure" = 'modular_citadel/sound/vox/failure.ogg',
|
||||
"farthest" = 'modular_citadel/sound/vox/farthest.ogg',
|
||||
"fast" = 'modular_citadel/sound/vox/fast.ogg',
|
||||
"feet" = 'modular_citadel/sound/vox/feet.ogg',
|
||||
"field" = 'modular_citadel/sound/vox/field.ogg',
|
||||
"fifteen" = 'modular_citadel/sound/vox/fifteen.ogg',
|
||||
"fifth" = 'modular_citadel/sound/vox/fifth.ogg',
|
||||
"fifty" = 'modular_citadel/sound/vox/fifty.ogg',
|
||||
"final" = 'modular_citadel/sound/vox/final.ogg',
|
||||
"fine" = 'modular_citadel/sound/vox/fine.ogg',
|
||||
"fire" = 'modular_citadel/sound/vox/fire.ogg',
|
||||
"first" = 'modular_citadel/sound/vox/first.ogg',
|
||||
"five" = 'modular_citadel/sound/vox/five.ogg',
|
||||
"flag" = 'modular_citadel/sound/vox/flag.ogg',
|
||||
"flooding" = 'modular_citadel/sound/vox/flooding.ogg',
|
||||
"floor" = 'modular_citadel/sound/vox/floor.ogg',
|
||||
"fool" = 'modular_citadel/sound/vox/fool.ogg',
|
||||
"for" = 'modular_citadel/sound/vox/for.ogg',
|
||||
"forbidden" = 'modular_citadel/sound/vox/forbidden.ogg',
|
||||
"force" = 'modular_citadel/sound/vox/force.ogg',
|
||||
"forms" = 'modular_citadel/sound/vox/forms.ogg',
|
||||
"found" = 'modular_citadel/sound/vox/found.ogg',
|
||||
"four" = 'modular_citadel/sound/vox/four.ogg',
|
||||
"fourteen" = 'modular_citadel/sound/vox/fourteen.ogg',
|
||||
"fourth" = 'modular_citadel/sound/vox/fourth.ogg',
|
||||
"fourty" = 'modular_citadel/sound/vox/fourty.ogg',
|
||||
"foxtrot" = 'modular_citadel/sound/vox/foxtrot.ogg',
|
||||
"freeman" = 'modular_citadel/sound/vox/freeman.ogg',
|
||||
"freezer" = 'modular_citadel/sound/vox/freezer.ogg',
|
||||
"from" = 'modular_citadel/sound/vox/from.ogg',
|
||||
"front" = 'modular_citadel/sound/vox/front.ogg',
|
||||
"fuel" = 'modular_citadel/sound/vox/fuel.ogg',
|
||||
"g" = 'modular_citadel/sound/vox/g.ogg',
|
||||
"gay" = 'modular_citadel/sound/vox/gay.ogg',
|
||||
"get" = 'modular_citadel/sound/vox/get.ogg',
|
||||
"go" = 'modular_citadel/sound/vox/go.ogg',
|
||||
"going" = 'modular_citadel/sound/vox/going.ogg',
|
||||
"good" = 'modular_citadel/sound/vox/good.ogg',
|
||||
"goodbye" = 'modular_citadel/sound/vox/goodbye.ogg',
|
||||
"gordon" = 'modular_citadel/sound/vox/gordon.ogg',
|
||||
"got" = 'modular_citadel/sound/vox/got.ogg',
|
||||
"government" = 'modular_citadel/sound/vox/government.ogg',
|
||||
"granted" = 'modular_citadel/sound/vox/granted.ogg',
|
||||
"great" = 'modular_citadel/sound/vox/great.ogg',
|
||||
"green" = 'modular_citadel/sound/vox/green.ogg',
|
||||
"grenade" = 'modular_citadel/sound/vox/grenade.ogg',
|
||||
"guard" = 'modular_citadel/sound/vox/guard.ogg',
|
||||
"gulf" = 'modular_citadel/sound/vox/gulf.ogg',
|
||||
"gun" = 'modular_citadel/sound/vox/gun.ogg',
|
||||
"guthrie" = 'modular_citadel/sound/vox/guthrie.ogg',
|
||||
"handling" = 'modular_citadel/sound/vox/handling.ogg',
|
||||
"hangar" = 'modular_citadel/sound/vox/hangar.ogg',
|
||||
"has" = 'modular_citadel/sound/vox/has.ogg',
|
||||
"have" = 'modular_citadel/sound/vox/have.ogg',
|
||||
"hazard" = 'modular_citadel/sound/vox/hazard.ogg',
|
||||
"head" = 'modular_citadel/sound/vox/head.ogg',
|
||||
"health" = 'modular_citadel/sound/vox/health.ogg',
|
||||
"heat" = 'modular_citadel/sound/vox/heat.ogg',
|
||||
"helicopter" = 'modular_citadel/sound/vox/helicopter.ogg',
|
||||
"helium" = 'modular_citadel/sound/vox/helium.ogg',
|
||||
"hello" = 'modular_citadel/sound/vox/hello.ogg',
|
||||
"help" = 'modular_citadel/sound/vox/help.ogg',
|
||||
"here" = 'modular_citadel/sound/vox/here.ogg',
|
||||
"hide" = 'modular_citadel/sound/vox/hide.ogg',
|
||||
"high" = 'modular_citadel/sound/vox/high.ogg',
|
||||
"highest" = 'modular_citadel/sound/vox/highest.ogg',
|
||||
"hit" = 'modular_citadel/sound/vox/hit.ogg',
|
||||
"holds" = 'modular_citadel/sound/vox/holds.ogg',
|
||||
"hole" = 'modular_citadel/sound/vox/hole.ogg',
|
||||
"hostile" = 'modular_citadel/sound/vox/hostile.ogg',
|
||||
"hot" = 'modular_citadel/sound/vox/hot.ogg',
|
||||
"hotel" = 'modular_citadel/sound/vox/hotel.ogg',
|
||||
"hour" = 'modular_citadel/sound/vox/hour.ogg',
|
||||
"hours" = 'modular_citadel/sound/vox/hours.ogg',
|
||||
"hundred" = 'modular_citadel/sound/vox/hundred.ogg',
|
||||
"hydro" = 'modular_citadel/sound/vox/hydro.ogg',
|
||||
"i" = 'modular_citadel/sound/vox/i.ogg',
|
||||
"idiot" = 'modular_citadel/sound/vox/idiot.ogg',
|
||||
"illegal" = 'modular_citadel/sound/vox/illegal.ogg',
|
||||
"immediate" = 'modular_citadel/sound/vox/immediate.ogg',
|
||||
"immediately" = 'modular_citadel/sound/vox/immediately.ogg',
|
||||
"in" = 'modular_citadel/sound/vox/in.ogg',
|
||||
"inches" = 'modular_citadel/sound/vox/inches.ogg',
|
||||
"india" = 'modular_citadel/sound/vox/india.ogg',
|
||||
"ing" = 'modular_citadel/sound/vox/ing.ogg',
|
||||
"inoperative" = 'modular_citadel/sound/vox/inoperative.ogg',
|
||||
"inside" = 'modular_citadel/sound/vox/inside.ogg',
|
||||
"inspection" = 'modular_citadel/sound/vox/inspection.ogg',
|
||||
"inspector" = 'modular_citadel/sound/vox/inspector.ogg',
|
||||
"interchange" = 'modular_citadel/sound/vox/interchange.ogg',
|
||||
"intruder" = 'modular_citadel/sound/vox/intruder.ogg',
|
||||
"invallid" = 'modular_citadel/sound/vox/invallid.ogg',
|
||||
"invasion" = 'modular_citadel/sound/vox/invasion.ogg',
|
||||
"is" = 'modular_citadel/sound/vox/is.ogg',
|
||||
"it" = 'modular_citadel/sound/vox/it.ogg',
|
||||
"johnson" = 'modular_citadel/sound/vox/johnson.ogg',
|
||||
"juliet" = 'modular_citadel/sound/vox/juliet.ogg',
|
||||
"key" = 'modular_citadel/sound/vox/key.ogg',
|
||||
"kill" = 'modular_citadel/sound/vox/kill.ogg',
|
||||
"kilo" = 'modular_citadel/sound/vox/kilo.ogg',
|
||||
"kit" = 'modular_citadel/sound/vox/kit.ogg',
|
||||
"lab" = 'modular_citadel/sound/vox/lab.ogg',
|
||||
"lambda" = 'modular_citadel/sound/vox/lambda.ogg',
|
||||
"laser" = 'modular_citadel/sound/vox/laser.ogg',
|
||||
"last" = 'modular_citadel/sound/vox/last.ogg',
|
||||
"launch" = 'modular_citadel/sound/vox/launch.ogg',
|
||||
"leak" = 'modular_citadel/sound/vox/leak.ogg',
|
||||
"leave" = 'modular_citadel/sound/vox/leave.ogg',
|
||||
"left" = 'modular_citadel/sound/vox/left.ogg',
|
||||
"legal" = 'modular_citadel/sound/vox/legal.ogg',
|
||||
"level" = 'modular_citadel/sound/vox/level.ogg',
|
||||
"lever" = 'modular_citadel/sound/vox/lever.ogg',
|
||||
"lie" = 'modular_citadel/sound/vox/lie.ogg',
|
||||
"lieutenant" = 'modular_citadel/sound/vox/lieutenant.ogg',
|
||||
"life" = 'modular_citadel/sound/vox/life.ogg',
|
||||
"light" = 'modular_citadel/sound/vox/light.ogg',
|
||||
"lima" = 'modular_citadel/sound/vox/lima.ogg',
|
||||
"liquid" = 'modular_citadel/sound/vox/liquid.ogg',
|
||||
"loading" = 'modular_citadel/sound/vox/loading.ogg',
|
||||
"locate" = 'modular_citadel/sound/vox/locate.ogg',
|
||||
"located" = 'modular_citadel/sound/vox/located.ogg',
|
||||
"location" = 'modular_citadel/sound/vox/location.ogg',
|
||||
"lock" = 'modular_citadel/sound/vox/lock.ogg',
|
||||
"locked" = 'modular_citadel/sound/vox/locked.ogg',
|
||||
"locker" = 'modular_citadel/sound/vox/locker.ogg',
|
||||
"lockout" = 'modular_citadel/sound/vox/lockout.ogg',
|
||||
"lower" = 'modular_citadel/sound/vox/lower.ogg',
|
||||
"lowest" = 'modular_citadel/sound/vox/lowest.ogg',
|
||||
"magnetic" = 'modular_citadel/sound/vox/magnetic.ogg',
|
||||
"main" = 'modular_citadel/sound/vox/main.ogg',
|
||||
"maintenance" = 'modular_citadel/sound/vox/maintenance.ogg',
|
||||
"malfunction" = 'modular_citadel/sound/vox/malfunction.ogg',
|
||||
"man" = 'modular_citadel/sound/vox/man.ogg',
|
||||
"mass" = 'modular_citadel/sound/vox/mass.ogg',
|
||||
"materials" = 'modular_citadel/sound/vox/materials.ogg',
|
||||
"maximum" = 'modular_citadel/sound/vox/maximum.ogg',
|
||||
"may" = 'modular_citadel/sound/vox/may.ogg',
|
||||
"med" = 'modular_citadel/sound/vox/med.ogg',
|
||||
"medical" = 'modular_citadel/sound/vox/medical.ogg',
|
||||
"men" = 'modular_citadel/sound/vox/men.ogg',
|
||||
"mercy" = 'modular_citadel/sound/vox/mercy.ogg',
|
||||
"mesa" = 'modular_citadel/sound/vox/mesa.ogg',
|
||||
"message" = 'modular_citadel/sound/vox/message.ogg',
|
||||
"meter" = 'modular_citadel/sound/vox/meter.ogg',
|
||||
"micro" = 'modular_citadel/sound/vox/micro.ogg',
|
||||
"middle" = 'modular_citadel/sound/vox/middle.ogg',
|
||||
"mike" = 'modular_citadel/sound/vox/mike.ogg',
|
||||
"miles" = 'modular_citadel/sound/vox/miles.ogg',
|
||||
"military" = 'modular_citadel/sound/vox/military.ogg',
|
||||
"milli" = 'modular_citadel/sound/vox/milli.ogg',
|
||||
"million" = 'modular_citadel/sound/vox/million.ogg',
|
||||
"minefield" = 'modular_citadel/sound/vox/minefield.ogg',
|
||||
"minimum" = 'modular_citadel/sound/vox/minimum.ogg',
|
||||
"minutes" = 'modular_citadel/sound/vox/minutes.ogg',
|
||||
"mister" = 'modular_citadel/sound/vox/mister.ogg',
|
||||
"mode" = 'modular_citadel/sound/vox/mode.ogg',
|
||||
"motor" = 'modular_citadel/sound/vox/motor.ogg',
|
||||
"motorpool" = 'modular_citadel/sound/vox/motorpool.ogg',
|
||||
"move" = 'modular_citadel/sound/vox/move.ogg',
|
||||
"must" = 'modular_citadel/sound/vox/must.ogg',
|
||||
"nearest" = 'modular_citadel/sound/vox/nearest.ogg',
|
||||
"nice" = 'modular_citadel/sound/vox/nice.ogg',
|
||||
"nine" = 'modular_citadel/sound/vox/nine.ogg',
|
||||
"nineteen" = 'modular_citadel/sound/vox/nineteen.ogg',
|
||||
"ninety" = 'modular_citadel/sound/vox/ninety.ogg',
|
||||
"no" = 'modular_citadel/sound/vox/no.ogg',
|
||||
"nominal" = 'modular_citadel/sound/vox/nominal.ogg',
|
||||
"north" = 'modular_citadel/sound/vox/north.ogg',
|
||||
"not" = 'modular_citadel/sound/vox/not.ogg',
|
||||
"november" = 'modular_citadel/sound/vox/november.ogg',
|
||||
"now" = 'modular_citadel/sound/vox/now.ogg',
|
||||
"number" = 'modular_citadel/sound/vox/number.ogg',
|
||||
"objective" = 'modular_citadel/sound/vox/objective.ogg',
|
||||
"observation" = 'modular_citadel/sound/vox/observation.ogg',
|
||||
"of" = 'modular_citadel/sound/vox/of.ogg',
|
||||
"officer" = 'modular_citadel/sound/vox/officer.ogg',
|
||||
"ok" = 'modular_citadel/sound/vox/ok.ogg',
|
||||
"on" = 'modular_citadel/sound/vox/on.ogg',
|
||||
"one" = 'modular_citadel/sound/vox/one.ogg',
|
||||
"open" = 'modular_citadel/sound/vox/open.ogg',
|
||||
"operating" = 'modular_citadel/sound/vox/operating.ogg',
|
||||
"operations" = 'modular_citadel/sound/vox/operations.ogg',
|
||||
"operative" = 'modular_citadel/sound/vox/operative.ogg',
|
||||
"option" = 'modular_citadel/sound/vox/option.ogg',
|
||||
"order" = 'modular_citadel/sound/vox/order.ogg',
|
||||
"organic" = 'modular_citadel/sound/vox/organic.ogg',
|
||||
"oscar" = 'modular_citadel/sound/vox/oscar.ogg',
|
||||
"out" = 'modular_citadel/sound/vox/out.ogg',
|
||||
"outside" = 'modular_citadel/sound/vox/outside.ogg',
|
||||
"over" = 'modular_citadel/sound/vox/over.ogg',
|
||||
"overload" = 'modular_citadel/sound/vox/overload.ogg',
|
||||
"override" = 'modular_citadel/sound/vox/override.ogg',
|
||||
"pacify" = 'modular_citadel/sound/vox/pacify.ogg',
|
||||
"pain" = 'modular_citadel/sound/vox/pain.ogg',
|
||||
"pal" = 'modular_citadel/sound/vox/pal.ogg',
|
||||
"panel" = 'modular_citadel/sound/vox/panel.ogg',
|
||||
"percent" = 'modular_citadel/sound/vox/percent.ogg',
|
||||
"perimeter" = 'modular_citadel/sound/vox/perimeter.ogg',
|
||||
"permitted" = 'modular_citadel/sound/vox/permitted.ogg',
|
||||
"personnel" = 'modular_citadel/sound/vox/personnel.ogg',
|
||||
"pipe" = 'modular_citadel/sound/vox/pipe.ogg',
|
||||
"plant" = 'modular_citadel/sound/vox/plant.ogg',
|
||||
"platform" = 'modular_citadel/sound/vox/platform.ogg',
|
||||
"please" = 'modular_citadel/sound/vox/please.ogg',
|
||||
"point" = 'modular_citadel/sound/vox/point.ogg',
|
||||
"portal" = 'modular_citadel/sound/vox/portal.ogg',
|
||||
"power" = 'modular_citadel/sound/vox/power.ogg',
|
||||
"presence" = 'modular_citadel/sound/vox/presence.ogg',
|
||||
"press" = 'modular_citadel/sound/vox/press.ogg',
|
||||
"primary" = 'modular_citadel/sound/vox/primary.ogg',
|
||||
"proceed" = 'modular_citadel/sound/vox/proceed.ogg',
|
||||
"processing" = 'modular_citadel/sound/vox/processing.ogg',
|
||||
"progress" = 'modular_citadel/sound/vox/progress.ogg',
|
||||
"proper" = 'modular_citadel/sound/vox/proper.ogg',
|
||||
"propulsion" = 'modular_citadel/sound/vox/propulsion.ogg',
|
||||
"prosecute" = 'modular_citadel/sound/vox/prosecute.ogg',
|
||||
"protective" = 'modular_citadel/sound/vox/protective.ogg',
|
||||
"push" = 'modular_citadel/sound/vox/push.ogg',
|
||||
"quantum" = 'modular_citadel/sound/vox/quantum.ogg',
|
||||
"quebec" = 'modular_citadel/sound/vox/quebec.ogg',
|
||||
"question" = 'modular_citadel/sound/vox/question.ogg',
|
||||
"questioning" = 'modular_citadel/sound/vox/questioning.ogg',
|
||||
"quick" = 'modular_citadel/sound/vox/quick.ogg',
|
||||
"quit" = 'modular_citadel/sound/vox/quit.ogg',
|
||||
"radiation" = 'modular_citadel/sound/vox/radiation.ogg',
|
||||
"radioactive" = 'modular_citadel/sound/vox/radioactive.ogg',
|
||||
"rads" = 'modular_citadel/sound/vox/rads.ogg',
|
||||
"rapid" = 'modular_citadel/sound/vox/rapid.ogg',
|
||||
"reach" = 'modular_citadel/sound/vox/reach.ogg',
|
||||
"reached" = 'modular_citadel/sound/vox/reached.ogg',
|
||||
"reactor" = 'modular_citadel/sound/vox/reactor.ogg',
|
||||
"red" = 'modular_citadel/sound/vox/red.ogg',
|
||||
"relay" = 'modular_citadel/sound/vox/relay.ogg',
|
||||
"released" = 'modular_citadel/sound/vox/released.ogg',
|
||||
"remaining" = 'modular_citadel/sound/vox/remaining.ogg',
|
||||
"renegade" = 'modular_citadel/sound/vox/renegade.ogg',
|
||||
"repair" = 'modular_citadel/sound/vox/repair.ogg',
|
||||
"report" = 'modular_citadel/sound/vox/report.ogg',
|
||||
"reports" = 'modular_citadel/sound/vox/reports.ogg',
|
||||
"required" = 'modular_citadel/sound/vox/required.ogg',
|
||||
"research" = 'modular_citadel/sound/vox/research.ogg',
|
||||
"reset" = 'modular_citadel/sound/vox/reset.ogg',
|
||||
"resevoir" = 'modular_citadel/sound/vox/resevoir.ogg',
|
||||
"resistance" = 'modular_citadel/sound/vox/resistance.ogg',
|
||||
"returned" = 'modular_citadel/sound/vox/returned.ogg',
|
||||
"right" = 'modular_citadel/sound/vox/right.ogg',
|
||||
"rocket" = 'modular_citadel/sound/vox/rocket.ogg',
|
||||
"roger" = 'modular_citadel/sound/vox/roger.ogg',
|
||||
"romeo" = 'modular_citadel/sound/vox/romeo.ogg',
|
||||
"room" = 'modular_citadel/sound/vox/room.ogg',
|
||||
"round" = 'modular_citadel/sound/vox/round.ogg',
|
||||
"run" = 'modular_citadel/sound/vox/run.ogg',
|
||||
"safe" = 'modular_citadel/sound/vox/safe.ogg',
|
||||
"safety" = 'modular_citadel/sound/vox/safety.ogg',
|
||||
"sargeant" = 'modular_citadel/sound/vox/sargeant.ogg',
|
||||
"satellite" = 'modular_citadel/sound/vox/satellite.ogg',
|
||||
"save" = 'modular_citadel/sound/vox/save.ogg',
|
||||
"science" = 'modular_citadel/sound/vox/science.ogg',
|
||||
"scores" = 'modular_citadel/sound/vox/scores.ogg',
|
||||
"scream" = 'modular_citadel/sound/vox/scream.ogg',
|
||||
"screen" = 'modular_citadel/sound/vox/screen.ogg',
|
||||
"search" = 'modular_citadel/sound/vox/search.ogg',
|
||||
"second" = 'modular_citadel/sound/vox/second.ogg',
|
||||
"secondary" = 'modular_citadel/sound/vox/secondary.ogg',
|
||||
"seconds" = 'modular_citadel/sound/vox/seconds.ogg',
|
||||
"sector" = 'modular_citadel/sound/vox/sector.ogg',
|
||||
"secure" = 'modular_citadel/sound/vox/secure.ogg',
|
||||
"secured" = 'modular_citadel/sound/vox/secured.ogg',
|
||||
"security" = 'modular_citadel/sound/vox/security.ogg',
|
||||
"select" = 'modular_citadel/sound/vox/select.ogg',
|
||||
"selected" = 'modular_citadel/sound/vox/selected.ogg',
|
||||
"service" = 'modular_citadel/sound/vox/service.ogg',
|
||||
"seven" = 'modular_citadel/sound/vox/seven.ogg',
|
||||
"seventeen" = 'modular_citadel/sound/vox/seventeen.ogg',
|
||||
"seventy" = 'modular_citadel/sound/vox/seventy.ogg',
|
||||
"severe" = 'modular_citadel/sound/vox/severe.ogg',
|
||||
"sewage" = 'modular_citadel/sound/vox/sewage.ogg',
|
||||
"sewer" = 'modular_citadel/sound/vox/sewer.ogg',
|
||||
"shield" = 'modular_citadel/sound/vox/shield.ogg',
|
||||
"shipment" = 'modular_citadel/sound/vox/shipment.ogg',
|
||||
"shock" = 'modular_citadel/sound/vox/shock.ogg',
|
||||
"shoot" = 'modular_citadel/sound/vox/shoot.ogg',
|
||||
"shower" = 'modular_citadel/sound/vox/shower.ogg',
|
||||
"shut" = 'modular_citadel/sound/vox/shut.ogg',
|
||||
"side" = 'modular_citadel/sound/vox/side.ogg',
|
||||
"sierra" = 'modular_citadel/sound/vox/sierra.ogg',
|
||||
"sight" = 'modular_citadel/sound/vox/sight.ogg',
|
||||
"silo" = 'modular_citadel/sound/vox/silo.ogg',
|
||||
"six" = 'modular_citadel/sound/vox/six.ogg',
|
||||
"sixteen" = 'modular_citadel/sound/vox/sixteen.ogg',
|
||||
"sixty" = 'modular_citadel/sound/vox/sixty.ogg',
|
||||
"slime" = 'modular_citadel/sound/vox/slime.ogg',
|
||||
"slow" = 'modular_citadel/sound/vox/slow.ogg',
|
||||
"soldier" = 'modular_citadel/sound/vox/soldier.ogg',
|
||||
"some" = 'modular_citadel/sound/vox/some.ogg',
|
||||
"someone" = 'modular_citadel/sound/vox/someone.ogg',
|
||||
"something" = 'modular_citadel/sound/vox/something.ogg',
|
||||
"son" = 'modular_citadel/sound/vox/son.ogg',
|
||||
"sorry" = 'modular_citadel/sound/vox/sorry.ogg',
|
||||
"south" = 'modular_citadel/sound/vox/south.ogg',
|
||||
"squad" = 'modular_citadel/sound/vox/squad.ogg',
|
||||
"square" = 'modular_citadel/sound/vox/square.ogg',
|
||||
"stairway" = 'modular_citadel/sound/vox/stairway.ogg',
|
||||
"status" = 'modular_citadel/sound/vox/status.ogg',
|
||||
"sterile" = 'modular_citadel/sound/vox/sterile.ogg',
|
||||
"sterilization" = 'modular_citadel/sound/vox/sterilization.ogg',
|
||||
"stolen" = 'modular_citadel/sound/vox/stolen.ogg',
|
||||
"storage" = 'modular_citadel/sound/vox/storage.ogg',
|
||||
"sub" = 'modular_citadel/sound/vox/sub.ogg',
|
||||
"subsurface" = 'modular_citadel/sound/vox/subsurface.ogg',
|
||||
"sudden" = 'modular_citadel/sound/vox/sudden.ogg',
|
||||
"suit" = 'modular_citadel/sound/vox/suit.ogg',
|
||||
"superconducting" = 'modular_citadel/sound/vox/superconducting.ogg',
|
||||
"supercooled" = 'modular_citadel/sound/vox/supercooled.ogg',
|
||||
"supply" = 'modular_citadel/sound/vox/supply.ogg',
|
||||
"surface" = 'modular_citadel/sound/vox/surface.ogg',
|
||||
"surrender" = 'modular_citadel/sound/vox/surrender.ogg',
|
||||
"surround" = 'modular_citadel/sound/vox/surround.ogg',
|
||||
"surrounded" = 'modular_citadel/sound/vox/surrounded.ogg',
|
||||
"switch" = 'modular_citadel/sound/vox/switch.ogg',
|
||||
"system" = 'modular_citadel/sound/vox/system.ogg',
|
||||
"systems" = 'modular_citadel/sound/vox/systems.ogg',
|
||||
"tactical" = 'modular_citadel/sound/vox/tactical.ogg',
|
||||
"take" = 'modular_citadel/sound/vox/take.ogg',
|
||||
"talk" = 'modular_citadel/sound/vox/talk.ogg',
|
||||
"tango" = 'modular_citadel/sound/vox/tango.ogg',
|
||||
"tank" = 'modular_citadel/sound/vox/tank.ogg',
|
||||
"target" = 'modular_citadel/sound/vox/target.ogg',
|
||||
"team" = 'modular_citadel/sound/vox/team.ogg',
|
||||
"temperature" = 'modular_citadel/sound/vox/temperature.ogg',
|
||||
"temporal" = 'modular_citadel/sound/vox/temporal.ogg',
|
||||
"ten" = 'modular_citadel/sound/vox/ten.ogg',
|
||||
"terminal" = 'modular_citadel/sound/vox/terminal.ogg',
|
||||
"terminated" = 'modular_citadel/sound/vox/terminated.ogg',
|
||||
"termination" = 'modular_citadel/sound/vox/termination.ogg',
|
||||
"test" = 'modular_citadel/sound/vox/test.ogg',
|
||||
"that" = 'modular_citadel/sound/vox/that.ogg',
|
||||
"the" = 'modular_citadel/sound/vox/the.ogg',
|
||||
"then" = 'modular_citadel/sound/vox/then.ogg',
|
||||
"there" = 'modular_citadel/sound/vox/there.ogg',
|
||||
"third" = 'modular_citadel/sound/vox/third.ogg',
|
||||
"thirteen" = 'modular_citadel/sound/vox/thirteen.ogg',
|
||||
"thirty" = 'modular_citadel/sound/vox/thirty.ogg',
|
||||
"this" = 'modular_citadel/sound/vox/this.ogg',
|
||||
"those" = 'modular_citadel/sound/vox/those.ogg',
|
||||
"thousand" = 'modular_citadel/sound/vox/thousand.ogg',
|
||||
"threat" = 'modular_citadel/sound/vox/threat.ogg',
|
||||
"three" = 'modular_citadel/sound/vox/three.ogg',
|
||||
"through" = 'modular_citadel/sound/vox/through.ogg',
|
||||
"time" = 'modular_citadel/sound/vox/time.ogg',
|
||||
"to" = 'modular_citadel/sound/vox/to.ogg',
|
||||
"top" = 'modular_citadel/sound/vox/top.ogg',
|
||||
"topside" = 'modular_citadel/sound/vox/topside.ogg',
|
||||
"touch" = 'modular_citadel/sound/vox/touch.ogg',
|
||||
"towards" = 'modular_citadel/sound/vox/towards.ogg',
|
||||
"track" = 'modular_citadel/sound/vox/track.ogg',
|
||||
"train" = 'modular_citadel/sound/vox/train.ogg',
|
||||
"transportation" = 'modular_citadel/sound/vox/transportation.ogg',
|
||||
"truck" = 'modular_citadel/sound/vox/truck.ogg',
|
||||
"tunnel" = 'modular_citadel/sound/vox/tunnel.ogg',
|
||||
"turn" = 'modular_citadel/sound/vox/turn.ogg',
|
||||
"turret" = 'modular_citadel/sound/vox/turret.ogg',
|
||||
"twelve" = 'modular_citadel/sound/vox/twelve.ogg',
|
||||
"twenty" = 'modular_citadel/sound/vox/twenty.ogg',
|
||||
"two" = 'modular_citadel/sound/vox/two.ogg',
|
||||
"unauthorized" = 'modular_citadel/sound/vox/unauthorized.ogg',
|
||||
"under" = 'modular_citadel/sound/vox/under.ogg',
|
||||
"uniform" = 'modular_citadel/sound/vox/uniform.ogg',
|
||||
"unlocked" = 'modular_citadel/sound/vox/unlocked.ogg',
|
||||
"until" = 'modular_citadel/sound/vox/until.ogg',
|
||||
"up" = 'modular_citadel/sound/vox/up.ogg',
|
||||
"upper" = 'modular_citadel/sound/vox/upper.ogg',
|
||||
"uranium" = 'modular_citadel/sound/vox/uranium.ogg',
|
||||
"us" = 'modular_citadel/sound/vox/us.ogg',
|
||||
"usa" = 'modular_citadel/sound/vox/usa.ogg',
|
||||
"use" = 'modular_citadel/sound/vox/use.ogg',
|
||||
"used" = 'modular_citadel/sound/vox/used.ogg',
|
||||
"user" = 'modular_citadel/sound/vox/user.ogg',
|
||||
"vacate" = 'modular_citadel/sound/vox/vacate.ogg',
|
||||
"valid" = 'modular_citadel/sound/vox/valid.ogg',
|
||||
"vapor" = 'modular_citadel/sound/vox/vapor.ogg',
|
||||
"vent" = 'modular_citadel/sound/vox/vent.ogg',
|
||||
"ventillation" = 'modular_citadel/sound/vox/ventillation.ogg',
|
||||
"victor" = 'modular_citadel/sound/vox/victor.ogg',
|
||||
"violated" = 'modular_citadel/sound/vox/violated.ogg',
|
||||
"violation" = 'modular_citadel/sound/vox/violation.ogg',
|
||||
"voltage" = 'modular_citadel/sound/vox/voltage.ogg',
|
||||
"vox_login" = 'modular_citadel/sound/vox/vox_login.ogg',
|
||||
"walk" = 'modular_citadel/sound/vox/walk.ogg',
|
||||
"wall" = 'modular_citadel/sound/vox/wall.ogg',
|
||||
"want" = 'modular_citadel/sound/vox/want.ogg',
|
||||
"wanted" = 'modular_citadel/sound/vox/wanted.ogg',
|
||||
"warm" = 'modular_citadel/sound/vox/warm.ogg',
|
||||
"warn" = 'modular_citadel/sound/vox/warn.ogg',
|
||||
"warning" = 'modular_citadel/sound/vox/warning.ogg',
|
||||
"waste" = 'modular_citadel/sound/vox/waste.ogg',
|
||||
"water" = 'modular_citadel/sound/vox/water.ogg',
|
||||
"we" = 'modular_citadel/sound/vox/we.ogg',
|
||||
"weapon" = 'modular_citadel/sound/vox/weapon.ogg',
|
||||
"west" = 'modular_citadel/sound/vox/west.ogg',
|
||||
"whiskey" = 'modular_citadel/sound/vox/whiskey.ogg',
|
||||
"white" = 'modular_citadel/sound/vox/white.ogg',
|
||||
"wilco" = 'modular_citadel/sound/vox/wilco.ogg',
|
||||
"will" = 'modular_citadel/sound/vox/will.ogg',
|
||||
"with" = 'modular_citadel/sound/vox/with.ogg',
|
||||
"without" = 'modular_citadel/sound/vox/without.ogg',
|
||||
"woop" = 'modular_citadel/sound/vox/woop.ogg',
|
||||
"xeno" = 'modular_citadel/sound/vox/xeno.ogg',
|
||||
"yankee" = 'modular_citadel/sound/vox/yankee.ogg',
|
||||
"yards" = 'modular_citadel/sound/vox/yards.ogg',
|
||||
"year" = 'modular_citadel/sound/vox/year.ogg',
|
||||
"yellow" = 'modular_citadel/sound/vox/yellow.ogg',
|
||||
"yes" = 'modular_citadel/sound/vox/yes.ogg',
|
||||
"you" = 'modular_citadel/sound/vox/you.ogg',
|
||||
"your" = 'modular_citadel/sound/vox/your.ogg',
|
||||
"yourself" = 'modular_citadel/sound/vox/yourself.ogg',
|
||||
"zero" = 'modular_citadel/sound/vox/zero.ogg',
|
||||
"zone" = 'modular_citadel/sound/vox/zone.ogg',
|
||||
"zulu" = 'modular_citadel/sound/vox/zulu.ogg',))
|
||||
#endif
|
||||
@@ -143,7 +143,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm !
|
||||
|
||||
/obj/item/storage/bag/borgdelivery/ComponentInitialize()
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_w_class = WEIGHT_CLASS_BULKY
|
||||
STR.max_combined_w_class = 5
|
||||
STR.max_items = 1
|
||||
|
||||
@@ -3,9 +3,11 @@
|
||||
|
||||
/mob/say_mod(input, message_mode)
|
||||
var/customsayverb = findtext(input, "*")
|
||||
if(customsayverb)
|
||||
if(customsayverb && message_mode != MODE_WHISPER_CRIT)
|
||||
message_mode = MODE_CUSTOM_SAY
|
||||
return lowertext(copytext(input, 1, customsayverb))
|
||||
. = ..()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/atom/movable/proc/attach_spans(input, list/spans)
|
||||
var/customsayverb = findtext(input, "*")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/obj/item/projectile/bullet/c46x30mm_tx
|
||||
name = "toxin tipped 4.6x30mm bullet"
|
||||
damage = 15
|
||||
damage = 10
|
||||
damage_type = TOX
|
||||
@@ -57,10 +57,9 @@
|
||||
icon_state = "magjectile-nl"
|
||||
damage = 2
|
||||
knockdown = 0
|
||||
stamina = 25
|
||||
armour_penetration = -10
|
||||
stamina = 20
|
||||
light_range = 2
|
||||
speed = 0.7
|
||||
speed = 0.6
|
||||
range = 25
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
@@ -109,9 +108,10 @@
|
||||
fire_sound = 'sound/weapons/magpistol.ogg'
|
||||
mag_type = /obj/item/ammo_box/magazine/mmag/small
|
||||
can_suppress = 0
|
||||
casing_ejector = 0
|
||||
casing_ejector = FALSE
|
||||
fire_delay = 2
|
||||
recoil = 0.2
|
||||
recoil = 0.1
|
||||
inaccuracy_modifier = 0.25
|
||||
|
||||
/obj/item/gun/ballistic/automatic/pistol/mag/update_icon()
|
||||
..()
|
||||
@@ -123,7 +123,6 @@
|
||||
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
|
||||
|
||||
///research memes///
|
||||
/*
|
||||
/obj/item/gun/ballistic/automatic/pistol/mag/nopin
|
||||
pin = null
|
||||
spawnwithmagazine = FALSE
|
||||
@@ -155,7 +154,7 @@
|
||||
materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
|
||||
build_path = /obj/item/ammo_box/magazine/mmag/small
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
*/
|
||||
|
||||
//////toy memes/////
|
||||
|
||||
/obj/item/projectile/bullet/reusable/foam_dart/mag
|
||||
@@ -201,9 +200,9 @@
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "magjectile-large"
|
||||
damage = 20
|
||||
armour_penetration = 25
|
||||
armour_penetration = 20
|
||||
light_range = 3
|
||||
speed = 0.7
|
||||
speed = 0.6
|
||||
range = 35
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
@@ -212,10 +211,10 @@
|
||||
icon_state = "magjectile-large-nl"
|
||||
damage = 2
|
||||
knockdown = 0
|
||||
stamina = 25
|
||||
armour_penetration = -10
|
||||
stamina = 20
|
||||
armour_penetration = 10
|
||||
light_range = 3
|
||||
speed = 0.65
|
||||
speed = 0.6
|
||||
range = 35
|
||||
light_color = LIGHT_COLOR_BLUE
|
||||
|
||||
@@ -227,6 +226,8 @@
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "mag-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/magrifle
|
||||
click_cooldown_override = 2.5
|
||||
delay = 3
|
||||
|
||||
/obj/item/ammo_casing/caseless/anlmagm
|
||||
desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload."
|
||||
@@ -234,10 +235,12 @@
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "mag-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/nlmagrifle
|
||||
click_cooldown_override = 2.5
|
||||
delay = 3
|
||||
|
||||
///magazines///
|
||||
|
||||
/obj/item/ammo_box/magazine/mmag/
|
||||
/obj/item/ammo_box/magazine/mmag
|
||||
name = "magrifle magazine (non-lethal disabler)"
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "mediummagmag"
|
||||
@@ -261,17 +264,20 @@
|
||||
icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
|
||||
icon_state = "magrifle"
|
||||
item_state = "arg"
|
||||
slot_flags = 0
|
||||
slot_flags = NONE
|
||||
mag_type = /obj/item/ammo_box/magazine/mmag
|
||||
fire_sound = 'sound/weapons/magrifle.ogg'
|
||||
can_suppress = 0
|
||||
burst_size = 3
|
||||
fire_delay = 2
|
||||
spread = 5
|
||||
recoil = 0.15
|
||||
casing_ejector = 0
|
||||
burst_size = 1
|
||||
actions_types = null
|
||||
fire_delay = 3
|
||||
spread = 0
|
||||
recoil = 0.1
|
||||
casing_ejector = FALSE
|
||||
inaccuracy_modifier = 0.5
|
||||
weapon_weight = WEAPON_MEDIUM
|
||||
dualwield_spread_mult = 1.4
|
||||
|
||||
/*
|
||||
//research///
|
||||
|
||||
/obj/item/gun/ballistic/automatic/magrifle/nopin
|
||||
@@ -305,7 +311,7 @@
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
|
||||
build_path = /obj/item/ammo_box/magazine/mmag
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
*/
|
||||
|
||||
///foamagrifle///
|
||||
|
||||
/obj/item/ammo_box/magazine/toy/foamag
|
||||
@@ -327,7 +333,6 @@
|
||||
spread = 60
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
weapon_weight = WEAPON_HEAVY
|
||||
/*
|
||||
// TECHWEBS IMPLEMENTATION
|
||||
//
|
||||
|
||||
@@ -339,7 +344,6 @@
|
||||
design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
*/
|
||||
|
||||
//////Hyper-Burst Rifle//////
|
||||
|
||||
|
||||
@@ -143,6 +143,7 @@
|
||||
// TECHWEBS IMPLEMENTATION
|
||||
*/
|
||||
|
||||
/*
|
||||
/datum/techweb_node/magnetic_weapons
|
||||
id = "magnetic_weapons"
|
||||
display_name = "Magnetic Weapons"
|
||||
@@ -151,6 +152,7 @@
|
||||
design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_e_nl", "mag_magpistol_e", "mag_magpistol_e_nl")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
*/
|
||||
|
||||
///magrifle///
|
||||
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
/obj/item/gun/energy/e_gun
|
||||
name = "blaster carbine"
|
||||
desc = "A high powered particle blaster carbine with varitable setting for stunning or lethal applications."
|
||||
icon = 'modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi'
|
||||
lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi'
|
||||
righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi'
|
||||
ammo_x_offset = 2
|
||||
flight_x_offset = 17
|
||||
flight_y_offset = 11
|
||||
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
The Recolourable Energy Gun
|
||||
|
||||
@@ -1,19 +1,11 @@
|
||||
/obj/item/gun/energy/laser
|
||||
name = "blaster rifle"
|
||||
desc = "a high energy particle blaster, efficient and deadly."
|
||||
icon = 'modular_citadel/icons/obj/guns/OVERRIDE_energy.dmi'
|
||||
ammo_x_offset = 1
|
||||
shaded_charge = 1
|
||||
lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi'
|
||||
righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi'
|
||||
|
||||
/obj/item/gun/energy/laser/practice
|
||||
icon = 'modular_citadel/icons/obj/guns/energy.dmi'
|
||||
icon_state = "laser-p"
|
||||
|
||||
/obj/item/gun/energy/laser/bluetag
|
||||
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
|
||||
|
||||
/obj/item/gun/energy/laser/redtag
|
||||
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
|
||||
lefthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_lefthand.dmi'
|
||||
righthand_file = 'modular_citadel/icons/mob/inhands/OVERRIDE_guns_righthand.dmi'
|
||||
ammo_x_offset = 1
|
||||
shaded_charge = 1
|
||||
|
||||
@@ -182,7 +182,7 @@
|
||||
|
||||
/datum/reagent/fermi/nanite_b_gone/on_mob_life(mob/living/carbon/C)
|
||||
//var/component/nanites/N = M.GetComponent(/datum/component/nanites)
|
||||
GET_COMPONENT_FROM(N, /datum/component/nanites, C)
|
||||
var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
|
||||
if(isnull(N))
|
||||
return ..()
|
||||
N.nanite_volume = -purity//0.5 seems to be the default to me, so it'll neuter them.
|
||||
@@ -190,7 +190,7 @@
|
||||
|
||||
/datum/reagent/fermi/nanite_b_gone/overdose_process(mob/living/carbon/C)
|
||||
//var/component/nanites/N = M.GetComponent(/datum/component/nanites)
|
||||
GET_COMPONENT_FROM(N, /datum/component/nanites, C)
|
||||
var/datum/component/nanites/N = C.GetComponent(/datum/component/nanites)
|
||||
if(prob(5))
|
||||
to_chat(C, "<span class='warning'>The residual voltage from the nanites causes you to seize up!</b></span>")
|
||||
C.electrocute_act(10, (get_turf(C)), 1, FALSE, FALSE, FALSE, TRUE)
|
||||
|
||||
@@ -1,11 +1,3 @@
|
||||
/datum/reagent/space_cleaner/reaction_obj(obj/O, reac_volume)
|
||||
if(istype(O, /obj/effect/decal/cleanable) || istype(O, /obj/item/projectile/bullet/reusable/foam_dart) || istype(O, /obj/item/ammo_casing/caseless/foam_dart))
|
||||
qdel(O)
|
||||
else
|
||||
if(O)
|
||||
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
|
||||
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
|
||||
/datum/reagent/syndicateadrenals
|
||||
name = "Syndicate Adrenaline"
|
||||
id = "syndicateadrenals"
|
||||
|
||||
@@ -327,10 +327,10 @@
|
||||
|
||||
//So slimes can play too.
|
||||
/datum/chemical_reaction/fermi/enthrall/slime
|
||||
required_catalysts = list("slimejelly" = 1)
|
||||
required_catalysts = list("jellyblood" = 1)
|
||||
|
||||
/datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom)
|
||||
var/datum/reagent/toxin/slimejelly/B = locate(/datum/reagent/toxin/slimejelly) in my_atom.reagents.reagent_list//The one line change.
|
||||
var/datum/reagent/blood/jellyblood/B = locate(/datum/reagent/blood/jellyblood) in my_atom.reagents.reagent_list//The one line change.
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagents.reagent_list
|
||||
if(!B.data)
|
||||
var/list/seen = viewers(5, get_turf(my_atom))
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/obj/item/fermichem/pHbooklet
|
||||
name = "pH indicator booklet"
|
||||
desc = "A booklet containing paper soaked in universal indicator."
|
||||
icon_state = "pHbooklet"
|
||||
icon = 'modular_citadel/icons/obj/FermiChem.dmi'
|
||||
item_flags = NOBLUDGEON
|
||||
var/numberOfPages = 50
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
name = "pH indicator booklet"
|
||||
desc = "A booklet containing paper soaked in universal indicator."
|
||||
icon_state = "pHbooklet"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
item_flags = NOBLUDGEON
|
||||
var/numberOfPages = 50
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
//A little janky with pockets
|
||||
/obj/item/fermichem/pHbooklet/attack_hand(mob/user)
|
||||
@@ -29,7 +29,7 @@
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
add_fingerprint(user)
|
||||
return
|
||||
. = ..()
|
||||
. = ..()
|
||||
if(. & COMPONENT_NO_INTERACT)
|
||||
return
|
||||
var/I = user.get_active_held_item()
|
||||
@@ -37,86 +37,86 @@
|
||||
user.put_in_active_hand(src)
|
||||
|
||||
/obj/item/fermichem/pHbooklet/MouseDrop()
|
||||
var/mob/living/user = usr
|
||||
if(numberOfPages >= 1)
|
||||
var/obj/item/fermichem/pHpaper/P = new /obj/item/fermichem/pHpaper
|
||||
P.add_fingerprint(user)
|
||||
P.forceMove(user)
|
||||
user.put_in_active_hand(P)
|
||||
to_chat(user, "<span class='notice'>You take [P] out of \the [src].</span>")
|
||||
numberOfPages--
|
||||
playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
add_fingerprint(user)
|
||||
if(numberOfPages == 0)
|
||||
icon_state = "pHbookletEmpty"
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
add_fingerprint(user)
|
||||
return
|
||||
..()
|
||||
var/mob/living/user = usr
|
||||
if(numberOfPages >= 1)
|
||||
var/obj/item/fermichem/pHpaper/P = new /obj/item/fermichem/pHpaper
|
||||
P.add_fingerprint(user)
|
||||
P.forceMove(user)
|
||||
user.put_in_active_hand(P)
|
||||
to_chat(user, "<span class='notice'>You take [P] out of \the [src].</span>")
|
||||
numberOfPages--
|
||||
playsound(user.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
add_fingerprint(user)
|
||||
if(numberOfPages == 0)
|
||||
icon_state = "pHbookletEmpty"
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
add_fingerprint(user)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/fermichem/pHpaper
|
||||
name = "pH indicator strip"
|
||||
desc = "A piece of paper that will change colour depending on the pH of a solution."
|
||||
icon_state = "pHpaper"
|
||||
icon = 'modular_citadel/icons/obj/FermiChem.dmi'
|
||||
item_flags = NOBLUDGEON
|
||||
color = "#f5c352"
|
||||
var/used = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
name = "pH indicator strip"
|
||||
desc = "A piece of paper that will change colour depending on the pH of a solution."
|
||||
icon_state = "pHpaper"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
item_flags = NOBLUDGEON
|
||||
color = "#f5c352"
|
||||
var/used = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
/obj/item/fermichem/pHpaper/afterattack(obj/item/reagent_containers/cont, mob/user, proximity)
|
||||
if(!istype(cont))
|
||||
return
|
||||
if(used == TRUE)
|
||||
to_chat(user, "<span class='warning'>[user] has already been used!</span>")
|
||||
return
|
||||
if(!LAZYLEN(cont.reagents.reagent_list))
|
||||
return
|
||||
switch(round(cont.reagents.pH, 1))
|
||||
if(14 to INFINITY)
|
||||
color = "#462c83"
|
||||
if(13 to 14)
|
||||
color = "#63459b"
|
||||
if(12 to 13)
|
||||
color = "#5a51a2"
|
||||
if(11 to 12)
|
||||
color = "#3853a4"
|
||||
if(10 to 11)
|
||||
color = "#3f93cf"
|
||||
if(9 to 10)
|
||||
color = "#0bb9b7"
|
||||
if(8 to 9)
|
||||
color = "#23b36e"
|
||||
if(7 to 8)
|
||||
color = "#3aa651"
|
||||
if(6 to 7)
|
||||
color = "#4cb849"
|
||||
if(5 to 6)
|
||||
color = "#b5d335"
|
||||
if(4 to 5)
|
||||
color = "#f7ec1e"
|
||||
if(3 to 4)
|
||||
color = "#fbc314"
|
||||
if(2 to 3)
|
||||
color = "#f26724"
|
||||
if(1 to 2)
|
||||
color = "#ef1d26"
|
||||
if(-INFINITY to 1)
|
||||
color = "#c6040c"
|
||||
desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]"
|
||||
used = TRUE
|
||||
if(!istype(cont))
|
||||
return
|
||||
if(used == TRUE)
|
||||
to_chat(user, "<span class='warning'>[user] has already been used!</span>")
|
||||
return
|
||||
if(!LAZYLEN(cont.reagents.reagent_list))
|
||||
return
|
||||
switch(round(cont.reagents.pH, 1))
|
||||
if(14 to INFINITY)
|
||||
color = "#462c83"
|
||||
if(13 to 14)
|
||||
color = "#63459b"
|
||||
if(12 to 13)
|
||||
color = "#5a51a2"
|
||||
if(11 to 12)
|
||||
color = "#3853a4"
|
||||
if(10 to 11)
|
||||
color = "#3f93cf"
|
||||
if(9 to 10)
|
||||
color = "#0bb9b7"
|
||||
if(8 to 9)
|
||||
color = "#23b36e"
|
||||
if(7 to 8)
|
||||
color = "#3aa651"
|
||||
if(6 to 7)
|
||||
color = "#4cb849"
|
||||
if(5 to 6)
|
||||
color = "#b5d335"
|
||||
if(4 to 5)
|
||||
color = "#f7ec1e"
|
||||
if(3 to 4)
|
||||
color = "#fbc314"
|
||||
if(2 to 3)
|
||||
color = "#f26724"
|
||||
if(1 to 2)
|
||||
color = "#ef1d26"
|
||||
if(-INFINITY to 1)
|
||||
color = "#c6040c"
|
||||
desc += " The paper looks to be around a pH of [round(cont.reagents.pH, 1)]"
|
||||
used = TRUE
|
||||
|
||||
/obj/item/fermichem/pHmeter
|
||||
name = "Chemistry Analyser"
|
||||
desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing."
|
||||
icon_state = "pHmeter"
|
||||
icon = 'modular_citadel/icons/obj/FermiChem.dmi'
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/scanmode = 1
|
||||
name = "Chemistry Analyser"
|
||||
desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution. The screen currently displays nothing."
|
||||
icon_state = "pHmeter"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/scanmode = 1
|
||||
|
||||
/obj/item/fermichem/pHmeter/attack_self(mob/user)
|
||||
if(!scanmode)
|
||||
@@ -127,21 +127,21 @@
|
||||
scanmode = 0
|
||||
|
||||
/obj/item/fermichem/pHmeter/afterattack(atom/A, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!istype(A, /obj/item/reagent_containers))
|
||||
return
|
||||
var/obj/item/reagent_containers/cont = A
|
||||
if(LAZYLEN(cont.reagents.reagent_list) == null)
|
||||
return
|
||||
var/out_message
|
||||
to_chat(user, "<i>The chemistry meter beeps and displays:</i>")
|
||||
out_message += "<span class='notice'><b>Total volume: [round(cont.volume, 0.01)] Total pH: [round(cont.reagents.pH, 0.1)]\n"
|
||||
if(cont.reagents.fermiIsReacting)
|
||||
out_message += "<span class='warning'>A reaction appears to be occuring currently.<span class='notice'>\n"
|
||||
out_message += "Chemicals found in the beaker:</b>\n"
|
||||
for(var/datum/reagent/R in cont.reagents.reagent_list)
|
||||
out_message += "<b>[R.volume]u of [R.name]</b>, <b>Purity:</b> [R.purity], [(scanmode?"[(R.overdose_threshold?"<b>Overdose:</b> [R.overdose_threshold]u, ":"")][(R.addiction_threshold?"<b>Addiction:</b> [R.addiction_threshold]u, ":"")]<b>Base pH:</b> [R.pH].":".")]\n"
|
||||
if(scanmode)
|
||||
out_message += "<b>Analysis:</b> [R.description]\n"
|
||||
to_chat(user, "[out_message]</span>")
|
||||
desc = "An electrode attached to a small circuit box that will analyse a beaker. It can be toggled to give a reduced or extended report. The screen currently displays [round(cont.reagents.pH, 0.1)]."
|
||||
. = ..()
|
||||
if(!istype(A, /obj/item/reagent_containers))
|
||||
return
|
||||
var/obj/item/reagent_containers/cont = A
|
||||
if(LAZYLEN(cont.reagents.reagent_list) == null)
|
||||
return
|
||||
var/out_message
|
||||
to_chat(user, "<i>The chemistry meter beeps and displays:</i>")
|
||||
out_message += "<span class='notice'><b>Total volume: [round(cont.volume, 0.01)] Total pH: [round(cont.reagents.pH, 0.1)]\n"
|
||||
if(cont.reagents.fermiIsReacting)
|
||||
out_message += "<span class='warning'>A reaction appears to be occuring currently.<span class='notice'>\n"
|
||||
out_message += "Chemicals found in the beaker:</b>\n"
|
||||
for(var/datum/reagent/R in cont.reagents.reagent_list)
|
||||
out_message += "<b>[R.volume]u of [R.name]</b>, <b>Purity:</b> [R.purity], [(scanmode?"[(R.overdose_threshold?"<b>Overdose:</b> [R.overdose_threshold]u, ":"")][(R.addiction_threshold?"<b>Addiction:</b> [R.addiction_threshold]u, ":"")]<b>Base pH:</b> [R.pH].":".")]\n"
|
||||
if(scanmode)
|
||||
out_message += "<b>Analysis:</b> [R.description]\n"
|
||||
to_chat(user, "[out_message]</span>")
|
||||
desc = "An electrode attached to a small circuit box that will analyse a beaker. It can be toggled to give a reduced or extended report. The screen currently displays [round(cont.reagents.pH, 0.1)]."
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/obj/structure/reagent_dispensers/keg
|
||||
name = "keg"
|
||||
desc = "A keg."
|
||||
icon = 'modular_citadel/icons/obj/objects.dmi'
|
||||
icon_state = "keg"
|
||||
reagent_id = "water"
|
||||
|
||||
/obj/structure/reagent_dispensers/keg/mead
|
||||
name = "keg of mead"
|
||||
desc = "A keg of mead."
|
||||
icon_state = "orangekeg"
|
||||
reagent_id = "mead"
|
||||
|
||||
/obj/structure/reagent_dispensers/keg/aphro
|
||||
name = "keg of aphrodisiac"
|
||||
desc = "A keg of aphrodisiac."
|
||||
icon_state = "pinkkeg"
|
||||
reagent_id = "aphro"
|
||||
|
||||
/obj/structure/reagent_dispensers/keg/aphro/strong
|
||||
name = "keg of strong aphrodisiac"
|
||||
desc = "A keg of strong and addictive aphrodisiac."
|
||||
reagent_id = "aphro+"
|
||||
|
||||
/obj/structure/reagent_dispensers/keg/milk
|
||||
name = "keg of milk"
|
||||
desc = "It's not quite what you were hoping for."
|
||||
icon_state = "whitekeg"
|
||||
reagent_id = "milk"
|
||||
|
||||
/obj/structure/reagent_dispensers/keg/semen
|
||||
name = "keg of semen"
|
||||
desc = "Dear lord, where did this even come from?"
|
||||
icon_state = "whitekeg"
|
||||
reagent_id = "semen"
|
||||
|
||||
/obj/structure/reagent_dispensers/keg/gargle
|
||||
name = "keg of pan galactic gargleblaster"
|
||||
desc = "A keg of... wow that's a long name."
|
||||
icon_state = "bluekeg"
|
||||
reagent_id = "gargleblaster"
|
||||
@@ -1,299 +0,0 @@
|
||||
#define HYPO_SPRAY 0
|
||||
#define HYPO_INJECT 1
|
||||
|
||||
#define WAIT_SPRAY 25
|
||||
#define WAIT_INJECT 25
|
||||
#define SELF_SPRAY 15
|
||||
#define SELF_INJECT 15
|
||||
|
||||
#define DELUXE_WAIT_SPRAY 20
|
||||
#define DELUXE_WAIT_INJECT 20
|
||||
#define DELUXE_SELF_SPRAY 10
|
||||
#define DELUXE_SELF_INJECT 10
|
||||
|
||||
#define COMBAT_WAIT_SPRAY 0
|
||||
#define COMBAT_WAIT_INJECT 0
|
||||
#define COMBAT_SELF_SPRAY 0
|
||||
#define COMBAT_SELF_INJECT 0
|
||||
|
||||
//A vial-loaded hypospray. Cartridge-based!
|
||||
/obj/item/hypospray/mkii
|
||||
name = "hypospray mk.II"
|
||||
icon = 'modular_citadel/icons/obj/hypospraymkii.dmi'
|
||||
icon_state = "hypo2"
|
||||
desc = "A new development from DeForest Medical, this hypospray takes 30-unit vials as the drug supply for easy swapping."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small)
|
||||
var/mode = HYPO_INJECT
|
||||
var/obj/item/reagent_containers/glass/bottle/vial/vial
|
||||
var/start_vial = /obj/item/reagent_containers/glass/bottle/vial/small
|
||||
var/spawnwithvial = TRUE
|
||||
var/inject_wait = WAIT_INJECT
|
||||
var/spray_wait = WAIT_SPRAY
|
||||
var/spray_self = SELF_SPRAY
|
||||
var/inject_self = SELF_INJECT
|
||||
var/quickload = FALSE
|
||||
var/penetrates = FALSE
|
||||
|
||||
/obj/item/hypospray/mkii/brute
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
|
||||
|
||||
/obj/item/hypospray/mkii/toxin
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
|
||||
|
||||
/obj/item/hypospray/mkii/oxygen
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
|
||||
|
||||
/obj/item/hypospray/mkii/burn
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
|
||||
|
||||
/obj/item/hypospray/mkii/tricord
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
|
||||
|
||||
/obj/item/hypospray/mkii/enlarge
|
||||
spawnwithvial = FALSE
|
||||
|
||||
/obj/item/hypospray/mkii/CMO
|
||||
name = "hypospray mk.II deluxe"
|
||||
allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/tiny, /obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large)
|
||||
icon_state = "cmo2"
|
||||
desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray."
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
|
||||
inject_wait = DELUXE_WAIT_INJECT
|
||||
spray_wait = DELUXE_WAIT_SPRAY
|
||||
spray_self = DELUXE_SELF_SPRAY
|
||||
inject_self = DELUXE_SELF_INJECT
|
||||
|
||||
/obj/item/hypospray/mkii/CMO/combat
|
||||
name = "combat hypospray mk.II"
|
||||
desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it."
|
||||
icon_state = "combat2"
|
||||
start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
|
||||
inject_wait = COMBAT_WAIT_INJECT
|
||||
spray_wait = COMBAT_WAIT_SPRAY
|
||||
spray_self = COMBAT_SELF_SPRAY
|
||||
inject_self = COMBAT_SELF_INJECT
|
||||
quickload = TRUE
|
||||
penetrates = TRUE
|
||||
|
||||
/obj/item/hypospray/mkii/Initialize()
|
||||
. = ..()
|
||||
if(!spawnwithvial)
|
||||
update_icon()
|
||||
return
|
||||
if(start_vial)
|
||||
vial = new start_vial
|
||||
update_icon()
|
||||
|
||||
/obj/item/hypospray/mkii/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)][vial ? "" : "-e"]"
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
return
|
||||
|
||||
/obj/item/hypospray/mkii/examine(mob/user)
|
||||
. = ..()
|
||||
if(vial)
|
||||
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
|
||||
else
|
||||
to_chat(user, "It has no vial loaded in.")
|
||||
to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
|
||||
|
||||
/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
|
||||
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
|
||||
var/obj/item/reagent_containers/glass/bottle/vial/V = I
|
||||
V.forceMove(user.loc)
|
||||
user.put_in_hands(V)
|
||||
to_chat(user, "<span class='notice'>You remove [vial] from [src].</span>")
|
||||
vial = null
|
||||
update_icon()
|
||||
playsound(loc, 'sound/weapons/empty.ogg', 50, 1)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>This hypo isn't loaded!</span>")
|
||||
return
|
||||
|
||||
/obj/item/hypospray/mkii/attackby(obj/item/I, mob/living/user)
|
||||
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial) && vial != null))
|
||||
if(!quickload)
|
||||
to_chat(user, "<span class='warning'>[src] can not hold more than one vial!</span>")
|
||||
return FALSE
|
||||
unload_hypo(vial, user)
|
||||
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
|
||||
var/obj/item/reagent_containers/glass/bottle/vial/V = I
|
||||
if(!is_type_in_list(V, allowed_containers))
|
||||
to_chat(user, "<span class='notice'>[src] doesn't accept this type of vial.</span>")
|
||||
return FALSE
|
||||
if(!user.transferItemToLoc(V,src))
|
||||
return FALSE
|
||||
vial = V
|
||||
user.visible_message("<span class='notice'>[user] has loaded a vial into [src].</span>","<span class='notice'>You have loaded [vial] into [src].</span>")
|
||||
update_icon()
|
||||
playsound(loc, 'sound/weapons/autoguninsert.ogg', 35, 1)
|
||||
return TRUE
|
||||
else
|
||||
to_chat(user, "<span class='notice'>This doesn't fit in [src].</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
/obj/item/hypospray/mkii/AltClick(mob/user)
|
||||
if(vial)
|
||||
vial.attack_self(user)
|
||||
|
||||
// Gunna allow this for now, still really don't approve - Pooj
|
||||
/obj/item/hypospray/mkii/emag_act(mob/user)
|
||||
. = ..()
|
||||
if(obj_flags & EMAGGED)
|
||||
to_chat(user, "[src] happens to be already overcharged.")
|
||||
return
|
||||
inject_wait = COMBAT_WAIT_INJECT
|
||||
spray_wait = COMBAT_WAIT_SPRAY
|
||||
spray_self = COMBAT_SELF_INJECT
|
||||
inject_self = COMBAT_SELF_SPRAY
|
||||
penetrates = TRUE
|
||||
to_chat(user, "You overcharge [src]'s control circuit.")
|
||||
obj_flags |= EMAGGED
|
||||
return TRUE
|
||||
|
||||
/obj/item/hypospray/mkii/attack_hand(mob/user)
|
||||
. = ..() //Don't bother changing this or removing it from containers will break.
|
||||
|
||||
/obj/item/hypospray/mkii/attack(obj/item/I, mob/user, params)
|
||||
return
|
||||
|
||||
/obj/item/hypospray/mkii/afterattack(atom/target, mob/user, proximity)
|
||||
if(!vial)
|
||||
return
|
||||
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(!ismob(target))
|
||||
return
|
||||
|
||||
var/mob/living/L
|
||||
if(isliving(target))
|
||||
L = target
|
||||
if(!penetrates && !L.can_inject(user, 1)) //This check appears another four times, since otherwise the penetrating sprays will break in do_mob.
|
||||
return
|
||||
|
||||
if(!L && !target.is_injectable()) //only checks on non-living mobs, due to how can_inject() handles
|
||||
to_chat(user, "<span class='warning'>You cannot directly fill [target]!</span>")
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
if(ishuman(L))
|
||||
var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected))
|
||||
if(!affecting)
|
||||
to_chat(user, "<span class='warning'>The limb is missing!</span>")
|
||||
return
|
||||
if(affecting.status != BODYPART_ORGANIC)
|
||||
to_chat(user, "<span class='notice'>Medicine won't work on a robotic limb!</span>")
|
||||
return
|
||||
|
||||
var/contained = vial.reagents.log_list()
|
||||
log_combat(user, L, "attemped to inject", src, addition="which had [contained]")
|
||||
//Always log attemped injections for admins
|
||||
if(vial != null)
|
||||
switch(mode)
|
||||
if(HYPO_INJECT)
|
||||
if(L) //living mob
|
||||
if(L != user)
|
||||
L.visible_message("<span class='danger'>[user] is trying to inject [L] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to inject [L] with [src]!</span>")
|
||||
if(!do_mob(user, L, inject_wait))
|
||||
return
|
||||
if(!penetrates && !L.can_inject(user, 1))
|
||||
return
|
||||
if(!vial.reagents.total_volume)
|
||||
return
|
||||
if(L.reagents.total_volume >= L.reagents.maximum_volume)
|
||||
return
|
||||
L.visible_message("<span class='danger'>[user] uses the [src] on [L]!</span>", \
|
||||
"<span class='userdanger'>[user] uses the [src] on [L]!</span>")
|
||||
else
|
||||
if(!do_mob(user, L, inject_self))
|
||||
return
|
||||
if(!penetrates && !L.can_inject(user, 1))
|
||||
return
|
||||
if(!vial.reagents.total_volume)
|
||||
return
|
||||
if(L.reagents.total_volume >= L.reagents.maximum_volume)
|
||||
return
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])</font>")
|
||||
L.log_message("<font color='orange'>applied [src] to themselves ([contained]).</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
|
||||
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
|
||||
vial.reagents.reaction(L, INJECT, fraction)
|
||||
vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
|
||||
if(vial.amount_per_transfer_from_this >= 15)
|
||||
playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
|
||||
if(vial.amount_per_transfer_from_this < 15)
|
||||
playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
|
||||
to_chat(user, "<span class='notice'>You inject [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.</span>")
|
||||
|
||||
if(HYPO_SPRAY)
|
||||
if(L) //living mob
|
||||
if(L != user)
|
||||
L.visible_message("<span class='danger'>[user] is trying to spray [L] with [src]!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to spray [L] with [src]!</span>")
|
||||
if(!do_mob(user, L, spray_wait))
|
||||
return
|
||||
if(!penetrates && !L.can_inject(user, 1))
|
||||
return
|
||||
if(!vial.reagents.total_volume)
|
||||
return
|
||||
if(L.reagents.total_volume >= L.reagents.maximum_volume)
|
||||
return
|
||||
L.visible_message("<span class='danger'>[user] uses the [src] on [L]!</span>", \
|
||||
"<span class='userdanger'>[user] uses the [src] on [L]!</span>")
|
||||
else
|
||||
if(!do_mob(user, L, spray_self))
|
||||
return
|
||||
if(!penetrates && !L.can_inject(user, 1))
|
||||
return
|
||||
if(!vial.reagents.total_volume)
|
||||
return
|
||||
if(L.reagents.total_volume >= L.reagents.maximum_volume)
|
||||
return
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) applied [src] to [L.name] ([L.ckey]), which had [contained] (INTENT: [uppertext(user.a_intent)]) (MODE: [src.mode])</font>")
|
||||
L.log_message("<font color='orange'>applied [src] to themselves ([contained]).</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
var/fraction = min(vial.amount_per_transfer_from_this/vial.reagents.total_volume, 1)
|
||||
vial.reagents.reaction(L, PATCH, fraction)
|
||||
vial.reagents.trans_to(target, vial.amount_per_transfer_from_this)
|
||||
if(vial.amount_per_transfer_from_this >= 15)
|
||||
playsound(loc,'sound/items/hypospray_long.ogg',50, 1, -1)
|
||||
if(vial.amount_per_transfer_from_this < 15)
|
||||
playsound(loc, pick('sound/items/hypospray.ogg','sound/items/hypospray2.ogg'), 50, 1, -1)
|
||||
to_chat(user, "<span class='notice'>You spray [vial.amount_per_transfer_from_this] units of the solution. The hypospray's cartridge now contains [vial.reagents.total_volume] units.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] doesn't work here!</span>")
|
||||
return
|
||||
|
||||
/obj/item/hypospray/mkii/attack_self(mob/living/user)
|
||||
if(user)
|
||||
if(user.incapacitated())
|
||||
return
|
||||
else if(!vial)
|
||||
to_chat(user, "This Hypo needs to be loaded first!")
|
||||
return
|
||||
else
|
||||
unload_hypo(vial,user)
|
||||
|
||||
/obj/item/hypospray/mkii/verb/modes()
|
||||
set name = "Toggle Application Mode"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
var/mob/M = usr
|
||||
switch(mode)
|
||||
if(HYPO_SPRAY)
|
||||
mode = HYPO_INJECT
|
||||
to_chat(M, "[src] is now set to inject contents on application.")
|
||||
if(HYPO_INJECT)
|
||||
mode = HYPO_SPRAY
|
||||
to_chat(M, "[src] is now set to spray contents on application.")
|
||||
@@ -1,198 +0,0 @@
|
||||
/obj/item/reagent_containers/glass/bottle/vial
|
||||
name = "broken hypovial"
|
||||
desc = "A hypovial compatible with most hyposprays."
|
||||
icon = 'modular_citadel/icons/obj/vial.dmi'
|
||||
icon_state = "hypovial"
|
||||
spillable = FALSE
|
||||
var/comes_with = list() //Easy way of doing this.
|
||||
volume = 10
|
||||
possible_transfer_amounts = list(1,2,5,10)
|
||||
obj_flags = UNIQUE_RENAME
|
||||
unique_reskin = list("hypovial" = "hypovial",
|
||||
"red hypovial" = "hypovial-b",
|
||||
"blue hypovial" = "hypovial-d",
|
||||
"green hypovial" = "hypovial-a",
|
||||
"orange hypovial" = "hypovial-k",
|
||||
"purple hypovial" = "hypovial-p",
|
||||
"black hypovial" = "hypovial-t",
|
||||
"pink hypovial" = "hypovial-pink"
|
||||
)
|
||||
always_reskinnable = TRUE
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/Initialize()
|
||||
. = ..()
|
||||
if(!icon_state)
|
||||
icon_state = "hypovial"
|
||||
for(var/R in comes_with)
|
||||
reagents.add_reagent(R,comes_with[R])
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/update_icon()
|
||||
cut_overlays()
|
||||
if(reagents.total_volume)
|
||||
var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypovial10")
|
||||
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 9)
|
||||
filling.icon_state = "hypovial10"
|
||||
if(10 to 29)
|
||||
filling.icon_state = "hypovial25"
|
||||
if(30 to 49)
|
||||
filling.icon_state = "hypovial50"
|
||||
if(50 to 85)
|
||||
filling.icon_state = "hypovial75"
|
||||
if(86 to INFINITY)
|
||||
filling.icon_state = "hypovial100"
|
||||
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
add_overlay(filling)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/tiny
|
||||
name = "small hypovial"
|
||||
//Shouldn't be possible to get this without adminbuse
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small
|
||||
name = "hypovial"
|
||||
volume = 60
|
||||
possible_transfer_amounts = list(5,10)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/bluespace
|
||||
volume = 120
|
||||
possible_transfer_amounts = list(5,10)
|
||||
name = "bluespace hypovial"
|
||||
icon_state = "hypovialbs"
|
||||
unique_reskin = null
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large
|
||||
name = "large hypovial"
|
||||
desc = "A large hypovial, for deluxe hypospray models."
|
||||
icon_state = "hypoviallarge"
|
||||
volume = 120
|
||||
possible_transfer_amounts = list(5,10,15,20)
|
||||
unique_reskin = list("large hypovial" = "hypoviallarge",
|
||||
"large red hypovial" = "hypoviallarge-b",
|
||||
"large blue hypovial" = "hypoviallarge-d",
|
||||
"large green hypovial" = "hypoviallarge-a",
|
||||
"large orange hypovial" = "hypoviallarge-k",
|
||||
"large purple hypovial" = "hypoviallarge-p",
|
||||
"large black hypovial" = "hypoviallarge-t"
|
||||
)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/update_icon()
|
||||
cut_overlays()
|
||||
if(reagents.total_volume)
|
||||
var/mutable_appearance/filling = mutable_appearance('modular_citadel/icons/obj/vial.dmi', "hypoviallarge10")
|
||||
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 9)
|
||||
filling.icon_state = "hypoviallarge10"
|
||||
if(10 to 29)
|
||||
filling.icon_state = "hypoviallarge25"
|
||||
if(30 to 49)
|
||||
filling.icon_state = "hypoviallarge50"
|
||||
if(50 to 85)
|
||||
filling.icon_state = "hypoviallarge75"
|
||||
if(86 to INFINITY)
|
||||
filling.icon_state = "hypoviallarge100"
|
||||
|
||||
filling.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
add_overlay(filling)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/bluespace
|
||||
possible_transfer_amounts = list(5,10,15,20)
|
||||
name = "bluespace large hypovial"
|
||||
volume = 240
|
||||
icon_state = "hypoviallargebs"
|
||||
unique_reskin = null
|
||||
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine
|
||||
name = "red hypovial (bicaridine)"
|
||||
icon_state = "hypovial-b"
|
||||
comes_with = list("bicaridine" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin
|
||||
name = "green hypovial (Anti-Tox)"
|
||||
icon_state = "hypovial-a"
|
||||
comes_with = list("antitoxin" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane
|
||||
name = "orange hypovial (kelotane)"
|
||||
icon_state = "hypovial-k"
|
||||
comes_with = list("kelotane" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin
|
||||
name = "blue hypovial (dexalin)"
|
||||
icon_state = "hypovial-d"
|
||||
comes_with = list("dexalin" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord
|
||||
name = "hypovial (tricordrazine)"
|
||||
icon_state = "hypovial"
|
||||
comes_with = list("tricordrazine" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction
|
||||
name = "pink hypovial (breast treatment)"
|
||||
icon_state = "hypovial-pink"
|
||||
comes_with = list("BEsmaller_hypo" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction
|
||||
name = "pink hypovial (penis treatment)"
|
||||
icon_state = "hypovial-pink"
|
||||
comes_with = list("PEsmaller_hypo" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO
|
||||
name = "deluxe hypovial"
|
||||
icon_state = "hypoviallarge-cmos"
|
||||
comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine
|
||||
name = "large red hypovial (bicaridine)"
|
||||
icon_state = "hypoviallarge-b"
|
||||
comes_with = list("bicaridine" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin
|
||||
name = "large green hypovial (anti-tox)"
|
||||
icon_state = "hypoviallarge-a"
|
||||
comes_with = list("antitoxin" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane
|
||||
name = "large orange hypovial (kelotane)"
|
||||
icon_state = "hypoviallarge-k"
|
||||
comes_with = list("kelotane" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin
|
||||
name = "large blue hypovial (dexalin)"
|
||||
icon_state = "hypoviallarge-d"
|
||||
comes_with = list("dexalin" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal
|
||||
name = "large black hypovial (charcoal)"
|
||||
icon_state = "hypoviallarge-t"
|
||||
comes_with = list("charcoal" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord
|
||||
name = "large hypovial (tricord)"
|
||||
icon_state = "hypoviallarge"
|
||||
comes_with = list("tricordrazine" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu
|
||||
name = "large green hypovial (salglu)"
|
||||
icon_state = "hypoviallarge-a"
|
||||
comes_with = list("salglu_solution" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh
|
||||
name = "large orange hypovial (synthflesh)"
|
||||
icon_state = "hypoviallarge-k"
|
||||
comes_with = list("synthflesh" = 60)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat
|
||||
name = "combat hypovial"
|
||||
icon_state = "hypoviallarge-t"
|
||||
comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine
|
||||
@@ -2,7 +2,7 @@
|
||||
/datum/reagent/consumable/semen
|
||||
name = "Semen"
|
||||
id = "semen"
|
||||
description = "Sperm from some animal. Useless for anything but insemination, really."
|
||||
description = "Sperm from some animal. I bet you'll drink this out of a bucket someday."
|
||||
taste_description = "something salty"
|
||||
taste_mult = 2 //Not very overpowering flavor
|
||||
data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null)
|
||||
@@ -39,7 +39,9 @@
|
||||
add_blood_DNA(list("Non-human DNA" = "A+"))
|
||||
|
||||
/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S)
|
||||
S.add_blood_DNA(return_blood_DNA())
|
||||
if(S.blood_DNA)
|
||||
blood_DNA |= S.blood_DNA.Copy()
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/femcum
|
||||
name = "Female Ejaculate"
|
||||
@@ -71,7 +73,8 @@
|
||||
add_blood_DNA(list("Non-human DNA" = "A+"))
|
||||
|
||||
/obj/effect/decal/cleanable/femcum/replace_decal(obj/effect/decal/cleanable/femcum/F)
|
||||
F.add_blood_DNA(return_blood_DNA())
|
||||
if(F.blood_DNA)
|
||||
blood_DNA |= F.blood_DNA.Copy()
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/femcum/reaction_turf(turf/T, reac_volume)
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
/datum/design/board/autoylathe
|
||||
name = "Machine Design (Autoylathe)"
|
||||
desc = "The circuit board for an autoylathe."
|
||||
id = "autoylathe"
|
||||
build_path = /obj/item/circuitboard/machine/autoylathe
|
||||
category = list("Misc. Machinery")
|
||||
@@ -1,7 +0,0 @@
|
||||
/datum/design/mag_oldsmg/rubber_mag
|
||||
name = "WT-550 Semi-Auto SMG rubberbullets Magazine (4.6x30mm rubber)"
|
||||
desc = "A 20 round rubber shots magazine for the out of date security WT-550 Semi-Auto SMG"
|
||||
id = "mag_oldsmg_rubber"
|
||||
materials = list(MAT_METAL = 6000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtrubber
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -1,7 +0,0 @@
|
||||
/datum/design/mag_oldsmg/tx_mag
|
||||
name = "WT-550 Semi-Auto SMG Uranium Magazine (4.6x30mm TX)"
|
||||
desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_tx"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -1,25 +0,0 @@
|
||||
/datum/design/xenobio_upgrade
|
||||
name = "owo"
|
||||
desc = "someone's bussin"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/xenobio_upgrade/xenobiomonkeys
|
||||
name = "Xenobiology console monkey upgrade disk"
|
||||
desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
|
||||
id = "xenobio_monkeys"
|
||||
build_path = /obj/item/disk/xenobio_console_upgrade/monkey
|
||||
|
||||
/datum/design/xenobio_upgrade/xenobioslimebasic
|
||||
name = "Xenobiology console basic slime upgrade disk"
|
||||
desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
|
||||
id = "xenobio_slimebasic"
|
||||
build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic
|
||||
|
||||
/datum/design/xenobio_upgrade/xenobioslimeadv
|
||||
name = "Xenobiology console advanced slime upgrade disk"
|
||||
desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
|
||||
id = "xenobio_slimeadv"
|
||||
build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv
|
||||
@@ -1,3 +0,0 @@
|
||||
/datum/techweb/specialized/autounlocking/autoylathe
|
||||
design_autounlock_buildtypes = AUTOYLATHE
|
||||
allowed_buildtypes = AUTOYLATHE
|
||||
@@ -1,48 +0,0 @@
|
||||
/obj/machinery/computer/camera_advanced/xenobio
|
||||
max_slimes = 1
|
||||
var/upgradetier = 0
|
||||
|
||||
/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/disk/xenobio_console_upgrade))
|
||||
var/obj/item/disk/xenobio_console_upgrade/diskthing = O
|
||||
var/successfulupgrade = FALSE
|
||||
for(var/I in diskthing.upgradetypes)
|
||||
if(upgradetier & I)
|
||||
continue
|
||||
else
|
||||
upgradetier |= I
|
||||
successfulupgrade = TRUE
|
||||
if(I == XENOBIO_UPGRADE_SLIMEADV)
|
||||
max_slimes = 10
|
||||
if(successfulupgrade)
|
||||
to_chat(user, "<span class='notice'>You have successfully upgraded [src] with [O].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] already has the contents of [O] installed!</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/disk/xenobio_console_upgrade
|
||||
name = "Xenobiology console upgrade disk"
|
||||
desc = "Allan please add detail."
|
||||
icon_state = "datadisk5"
|
||||
var/list/upgradetypes = list()
|
||||
|
||||
/obj/item/disk/xenobio_console_upgrade/admin
|
||||
name = "Xenobio all access thing"
|
||||
desc = "'the consoles are literally useless!!!!!!!!!!!!!!!'"
|
||||
upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV, XENOBIO_UPGRADE_MONKEYS)
|
||||
|
||||
/obj/item/disk/xenobio_console_upgrade/monkey
|
||||
name = "Xenobiology console monkey upgrade disk"
|
||||
desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
|
||||
upgradetypes = list(XENOBIO_UPGRADE_MONKEYS)
|
||||
|
||||
/obj/item/disk/xenobio_console_upgrade/slimebasic
|
||||
name = "Xenobiology console basic slime upgrade disk"
|
||||
desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
|
||||
upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC)
|
||||
|
||||
/obj/item/disk/xenobio_console_upgrade/slimeadv
|
||||
name = "Xenobiology console advanced slime upgrade disk"
|
||||
desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
|
||||
upgradetypes = list(XENOBIO_UPGRADE_SLIMEBASIC, XENOBIO_UPGRADE_SLIMEADV)
|
||||
@@ -24,7 +24,7 @@
|
||||
if(H.sprinting && charge)
|
||||
charge--
|
||||
new_speed = chargespeed
|
||||
GET_COMPONENT(D, /datum/component/riding)
|
||||
var/datum/component/riding/D = GetComponent(/datum/component/riding)
|
||||
D.vehicle_move_delay = new_speed
|
||||
for(var/i in progressbars_by_rider)
|
||||
var/datum/progressbar/B = progressbars_by_rider[i]
|
||||
|
||||
Reference in New Issue
Block a user