Merge branch 'master' into assu
# Conflicts Resolved: # icons/mob/head.dmi # icons/mob/suit.dmi # icons/obj/clothing/hats.dmi # icons/obj/clothing/suits.dmi
This commit is contained in:
@@ -200,7 +200,7 @@
|
||||
if (!target.loc)
|
||||
continue
|
||||
|
||||
if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH))
|
||||
if(!(SEND_SIGNAL(target.loc, COMSIG_ATOM_CANREACH, next) & COMPONENT_BLOCK_REACH) && target.loc.canReachInto(src, ultimate_target, next, view_only, tool))
|
||||
next += target.loc
|
||||
|
||||
checking = next
|
||||
@@ -215,6 +215,10 @@
|
||||
/mob/living/DirectAccess(atom/target)
|
||||
return ..() + GetAllContents()
|
||||
|
||||
//This is called reach into but it's called on the deepest things first so uh, make sure to account for that!
|
||||
/atom/proc/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool)
|
||||
return TRUE
|
||||
|
||||
/atom/proc/AllowClick()
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup)
|
||||
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/close_all)
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/check_views)
|
||||
|
||||
RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click)
|
||||
RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto)
|
||||
@@ -386,6 +387,11 @@
|
||||
close(M)
|
||||
. = TRUE //returns TRUE if any mobs actually got a close(M) call
|
||||
|
||||
/datum/component/storage/proc/check_views()
|
||||
for(var/mob/M in can_see_contents())
|
||||
if(!isobserver(M) && !M.CanReach(src, view_only = TRUE))
|
||||
close(M)
|
||||
|
||||
/datum/component/storage/proc/emp_act(datum/source, severity)
|
||||
if(emp_shielded)
|
||||
return
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
|
||||
item_flags = NO_MAT_REDEMPTION | NOBLUDGEON
|
||||
var/prox_check = TRUE //If the emag requires you to be in range
|
||||
var/uses = 15
|
||||
|
||||
/obj/item/card/emag/bluespace
|
||||
name = "bluespace cryptographic sequencer"
|
||||
@@ -110,6 +111,37 @@
|
||||
user.visible_message("<span class='warning'>[src] fizzles and sparks. It seems like it's out of charges.</span>")
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 100, 1)
|
||||
|
||||
/obj/item/card/emag/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user, "<span class='notice'>It has <b>[uses ? uses : "no"]</b> charges left.</span>")
|
||||
|
||||
/obj/item/card/emag/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/emagrecharge))
|
||||
var/obj/item/emagrecharge/ER = W
|
||||
if(ER.uses)
|
||||
uses += ER.uses
|
||||
to_chat(user, "<span class='notice'>You have added [ER.uses] charges to [src]. It now has [uses] charges.</span>")
|
||||
playsound(src, "sparks", 100, 1)
|
||||
ER.uses = 0
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[ER] has no charges left.</span>")
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/obj/item/emagrecharge
|
||||
name = "electromagnet charging device"
|
||||
desc = "A small cell with two prongs lazily jabbed into it. It looks like it's made for charging the small batteries found in electromagnetic devices, sadly this can't be recharged like a normal cell."
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "cell_mini"
|
||||
item_flags = NOBLUDGEON
|
||||
var/uses = 5 //Dictates how many charges the device adds to compatible items
|
||||
|
||||
/obj/item/emagrecharge/examine(mob/user)
|
||||
. = ..()
|
||||
if(uses)
|
||||
to_chat(user, "<span class='notice'>It can add up to [uses] charges to compatible devices</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>It has a small, red, blinking light coming from inside of it. It's spent.</span>")
|
||||
|
||||
/obj/item/card/emagfake
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. Closer inspection shows that this card is a poorly made replica, with a \"DonkCo\" logo stamped on the back."
|
||||
@@ -451,3 +483,58 @@ update_label("John Doe", "Clowny")
|
||||
name = "APC Access ID"
|
||||
desc = "A special ID card that allows access to APC terminals."
|
||||
access = list(ACCESS_ENGINE_EQUIP)
|
||||
|
||||
//Polychromatic Knight Badge
|
||||
|
||||
/obj/item/card/id/knight
|
||||
var/id_color = "#00FF00" //defaults to green
|
||||
name = "knight badge"
|
||||
icon_state = "knight"
|
||||
desc = "A badge denoting the owner as a knight! It has a strip for swiping like an ID"
|
||||
|
||||
/obj/item/card/id/knight/update_label(newname, newjob)
|
||||
if(newname || newjob)
|
||||
name = "[(!newname) ? "knight badge" : "[newname]'s Knight Badge"][(!newjob) ? "" : " ([newjob])"]"
|
||||
return
|
||||
|
||||
name = "[(!registered_name) ? "knight badge" : "[registered_name]'s Knight Badge"][(!assignment) ? "" : " ([assignment])"]"
|
||||
|
||||
/obj/item/card/id/knight/update_icon()
|
||||
var/mutable_appearance/id_overlay = mutable_appearance(icon, "knight_overlay")
|
||||
|
||||
if(id_color)
|
||||
id_overlay.color = id_color
|
||||
cut_overlays()
|
||||
|
||||
add_overlay(id_overlay)
|
||||
|
||||
/obj/item/card/id/knight/AltClick(mob/living/user)
|
||||
. = ..()
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(alert("Are you sure you want to recolor your id?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/energy_color_input = input(usr,"","Choose Energy Color",id_color) as color|null
|
||||
if(!in_range(src, user) || !energy_color_input)
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
id_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
|
||||
/obj/item/card/id/knight/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/card/id/knight/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
|
||||
/obj/item/card/id/knight/blue
|
||||
id_color = "#0000FF"
|
||||
|
||||
/obj/item/card/id/knight/captain
|
||||
id_color = "#FFD700"
|
||||
@@ -233,3 +233,152 @@
|
||||
desc = "An extremely sharp blade made out of hard light. Packs quite a punch."
|
||||
icon_state = "lightblade"
|
||||
item_state = "lightblade"
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////
|
||||
///////////// The TRUE Energy Sword ///////////////////////////
|
||||
*//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx
|
||||
name = "non-eutactic blade"
|
||||
desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable."
|
||||
icon_state = "cxsword_hilt"
|
||||
item_state = "cxsword"
|
||||
force = 3
|
||||
force_on = 21
|
||||
throwforce = 5
|
||||
throwforce_on = 20
|
||||
hitsound = "swing_hit" //it starts deactivated
|
||||
hitsound_on = 'sound/weapons/nebhit.ogg'
|
||||
attack_verb_off = list("tapped", "poked")
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
sharpness = IS_SHARP
|
||||
embedding = list("embedded_pain_multiplier" = 6, "embed_chance" = 20, "embedded_fall_chance" = 60)
|
||||
armour_penetration = 10
|
||||
block_chance = 35
|
||||
light_color = "#37FFF7"
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
|
||||
altafterattack(A, user, TRUE, params)
|
||||
return TRUE
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes
|
||||
if(istype(user))
|
||||
user.visible_message("<span class='notice'>[user] points the tip of [src] at [target].</span>", "<span class='notice'>You point the tip of [src] at [target].</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text)
|
||||
active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE
|
||||
if(active) //also I'd need to rip out the iconstate changing bits
|
||||
force = force_on
|
||||
throwforce = throwforce_on
|
||||
hitsound = hitsound_on
|
||||
throw_speed = 4
|
||||
if(attack_verb_on.len)
|
||||
attack_verb = attack_verb_on
|
||||
w_class = w_class_on
|
||||
START_PROCESSING(SSobj, src)
|
||||
set_light(brightness_on)
|
||||
update_icon()
|
||||
else
|
||||
force = initial(force)
|
||||
throwforce = initial(throwforce)
|
||||
hitsound = initial(hitsound)
|
||||
throw_speed = initial(throw_speed)
|
||||
if(attack_verb_off.len)
|
||||
attack_verb = attack_verb_off
|
||||
w_class = initial(w_class)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
set_light(0)
|
||||
update_icon()
|
||||
transform_messages(user, supress_message_text)
|
||||
add_fingerprint(user)
|
||||
return TRUE
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/transform_messages(mob/living/user, supress_message_text)
|
||||
playsound(user, active ? 'sound/weapons/nebon.ogg' : 'sound/weapons/neboff.ogg', 65, 1)
|
||||
if(!supress_message_text)
|
||||
to_chat(user, "<span class='notice'>[src] [active ? "is now active":"can now be concealed"].</span>")
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/update_icon()
|
||||
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "cxsword_blade")
|
||||
var/mutable_appearance/gem_overlay = mutable_appearance(icon, "cxsword_gem")
|
||||
|
||||
if(light_color)
|
||||
blade_overlay.color = light_color
|
||||
gem_overlay.color = light_color
|
||||
|
||||
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
||||
|
||||
add_overlay(gem_overlay)
|
||||
|
||||
if(active)
|
||||
add_overlay(blade_overlay)
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/AltClick(mob/living/user)
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
|
||||
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
|
||||
if(energy_color_input)
|
||||
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
update_light()
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file)
|
||||
. = ..()
|
||||
if(active)
|
||||
if(isinhands)
|
||||
var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade")
|
||||
blade_inhand.color = light_color
|
||||
. += blade_inhand
|
||||
|
||||
//Broken version. Not a toy, but not as strong.
|
||||
/obj/item/melee/transforming/energy/sword/cx/broken
|
||||
name = "misaligned non-eutactic blade"
|
||||
desc = "The Non-Eutactic Blade utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. This one seems to have a damaged handle and misaligned components, causing the blade to be unstable at best"
|
||||
force_on = 15 //As strong a survival knife/bone dagger
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/attackby(obj/item/W, mob/living/user, params)
|
||||
if(istype(W, /obj/item/melee/transforming/energy/sword/cx))
|
||||
if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP))
|
||||
to_chat(user, "<span class='warning'>\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You combine the two light swords, making a single supermassive blade! You're cool.</span>")
|
||||
new /obj/item/twohanded/dualsaber/hypereutactic(user.drop_location())
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
//////// Tatortot NEB /////////////// (same stats as regular esword)
|
||||
/obj/item/melee/transforming/energy/sword/cx/traitor
|
||||
name = "\improper Dragon's Tooth Sword"
|
||||
desc = "The Dragon's Tooth sword is a blackmarket modification of a Non-Eutactic Blade, \
|
||||
which utilizes a hardlight blade that is dynamically 'forged' on demand to create a deadly sharp edge that is unbreakable. \
|
||||
It appears to have a wooden grip and a shaved down guard."
|
||||
icon_state = "cxsword_hilt_traitor"
|
||||
force_on = 30
|
||||
armour_penetration = 50
|
||||
embedding = list("embedded_pain_multiplier" = 10, "embed_chance" = 75, "embedded_fall_chance" = 0, "embedded_impact_pain_multiplier" = 10)
|
||||
block_chance = 50
|
||||
hitsound_on = 'sound/weapons/blade1.ogg'
|
||||
light_color = "#37F0FF"
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text)
|
||||
playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1)
|
||||
if(!supress_message_text)
|
||||
to_chat(user, "<span class='notice'>[src] [active ? "is now active":"can now be concealed"].</span>")
|
||||
|
||||
@@ -276,6 +276,106 @@
|
||||
/obj/item/toy/sword/getweight()
|
||||
return (active ? total_mass_on : total_mass) || w_class *1.25
|
||||
|
||||
/obj/item/toy/sword/cx
|
||||
name = "\improper DX Non-Euplastic LightSword"
|
||||
desc = "A deluxe toy replica of an energy sword. Realistic visuals and sounds! Ages 8 and up."
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
icon_state = "cxsword_hilt"
|
||||
item_state = "cxsword"
|
||||
active = FALSE
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("poked", "jabbed", "hit")
|
||||
light_color = "#37FFF7"
|
||||
var/light_brightness = 3
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/toy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
|
||||
altafterattack(A, user, TRUE, params)
|
||||
return TRUE
|
||||
|
||||
/obj/item/toy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes
|
||||
if(istype(user))
|
||||
user.visible_message("<span class='notice'>[user] points the tip of [src] at [target].</span>", "<span class='notice'>You point the tip of [src] at [target].</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/toy/sword/cx/attack_self(mob/user)
|
||||
active = !( active )
|
||||
|
||||
if (active)
|
||||
to_chat(user, "<span class='notice'>You activate the holographic blade with a press of a button.</span>")
|
||||
playsound(user, 'sound/weapons/nebon.ogg', 50, 1)
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
attack_verb = list("slashed", "stabbed", "ravaged")
|
||||
set_light(light_brightness)
|
||||
update_icon()
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You deactivate the holographic blade with a press of a button.</span>")
|
||||
playsound(user, 'sound/weapons/neboff.ogg', 50, 1)
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("poked", "jabbed", "hit")
|
||||
set_light(0)
|
||||
update_icon()
|
||||
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/item/toy/sword/cx/update_icon()
|
||||
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "cxsword_blade")
|
||||
var/mutable_appearance/gem_overlay = mutable_appearance(icon, "cxsword_gem")
|
||||
|
||||
if(light_color)
|
||||
blade_overlay.color = light_color
|
||||
gem_overlay.color = light_color
|
||||
|
||||
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
||||
|
||||
add_overlay(gem_overlay)
|
||||
|
||||
if(active)
|
||||
add_overlay(blade_overlay)
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
/obj/item/toy/sword/cx/AltClick(mob/living/user)
|
||||
if(!in_range(src, user)) //Basic checks to prevent abuse
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
|
||||
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
|
||||
if(energy_color_input)
|
||||
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
update_light()
|
||||
|
||||
/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file)
|
||||
. = ..()
|
||||
if(active)
|
||||
if(isinhands)
|
||||
var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "cxsword_blade")
|
||||
blade_inhand.color = light_color
|
||||
. += blade_inhand
|
||||
|
||||
/obj/item/toy/sword/cx/attackby(obj/item/W, mob/living/user, params)
|
||||
if(istype(W, /obj/item/toy/sword/cx))
|
||||
if(HAS_TRAIT(W, TRAIT_NODROP) || HAS_TRAIT(src, TRAIT_NODROP))
|
||||
to_chat(user, "<span class='warning'>\the [HAS_TRAIT(src, TRAIT_NODROP) ? src : W] is stuck to your hand, you can't attach it to \the [HAS_TRAIT(src, TRAIT_NODROP) ? W : src]!</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You combine the two plastic swords, making a single supermassive toy! You're fake-cool.</span>")
|
||||
new /obj/item/twohanded/dualsaber/hypereutactic/toy(user.loc)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/toy/sword/cx/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
|
||||
/*
|
||||
* Foam armblade
|
||||
*/
|
||||
@@ -337,6 +437,30 @@
|
||||
/obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
|
||||
return FALSE
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/toy
|
||||
name = "\improper DX Hyper-Euplastic LightSword"
|
||||
desc = "A supermassive toy envisioned to cleave the very fabric of space and time itself in twain. Realistic visuals and sounds! Ages 8 and up."
|
||||
force = 0
|
||||
throwforce = 0
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
force_unwielded = 0
|
||||
force_wielded = 0
|
||||
attack_verb = list("attacked", "struck", "hit")
|
||||
total_mass_on = TOTAL_MASS_TOY_SWORD
|
||||
slowdown_wielded = 0
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/toy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
return FALSE
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/toy/IsReflect()//Stops it from reflecting energy projectiles
|
||||
return FALSE
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/toy/rainbow
|
||||
name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander"
|
||||
desc = "A custom-built toy with fancy rainbow lights built-in."
|
||||
hacked = TRUE
|
||||
|
||||
/obj/item/toy/katana
|
||||
name = "replica katana"
|
||||
desc = "Woefully underpowered in D20."
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
* Spears
|
||||
* CHAINSAWS
|
||||
* Bone Axe and Spear
|
||||
* And more
|
||||
*/
|
||||
|
||||
/*##################################################################
|
||||
@@ -464,6 +465,116 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
// HYPEREUTACTIC Blades /////////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic
|
||||
icon = 'icons/obj/1x2.dmi'
|
||||
icon_state = "hypereutactic"
|
||||
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
|
||||
item_state = "hypereutactic"
|
||||
inhand_x_dimension = 64
|
||||
inhand_y_dimension = 64
|
||||
name = "hypereutactic blade"
|
||||
desc = "A supermassive weapon envisioned to cleave the very fabric of space and time itself in twain, the hypereutactic blade dynamically flash-forges a hypereutactic crystaline nanostructure capable of passing through most known forms of matter like a hot knife through butter."
|
||||
force = 7
|
||||
force_unwielded = 7
|
||||
force_wielded = 40
|
||||
wieldsound = 'sound/weapons/nebon.ogg'
|
||||
unwieldsound = 'sound/weapons/neboff.ogg'
|
||||
hitsound_on = 'sound/weapons/nebhit.ogg'
|
||||
slowdown_wielded = 1
|
||||
armour_penetration = 60
|
||||
light_color = "#37FFF7"
|
||||
rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00")
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "destroyed", "ripped", "devastated", "shredded")
|
||||
spinnable = FALSE
|
||||
total_mass_on = 4
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/chaplain
|
||||
name = "\improper divine lightblade"
|
||||
desc = "A giant blade of bright and holy light, said to cut down the wicked with ease."
|
||||
force = 5
|
||||
force_unwielded = 5
|
||||
force_wielded = 20
|
||||
block_chance = 50
|
||||
armour_penetration = 0
|
||||
var/chaplain_spawnable = TRUE
|
||||
obj_flags = UNIQUE_RENAME
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/chaplain/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE)
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/chaplain/IsReflect()
|
||||
return FALSE
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes
|
||||
altafterattack(A, user, TRUE, params)
|
||||
return TRUE
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/altafterattack(atom/target, mob/living/user, proximity_flag, click_parameters) //does right click memes
|
||||
if(istype(user))
|
||||
user.visible_message("<span class='notice'>[user] points the tip of [src] at [target].</span>", "<span class='notice'>You point the tip of [src] at [target].</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/update_icon()
|
||||
var/mutable_appearance/blade_overlay = mutable_appearance(icon, "hypereutactic_blade")
|
||||
var/mutable_appearance/gem_overlay = mutable_appearance(icon, "hypereutactic_gem")
|
||||
|
||||
if(light_color)
|
||||
blade_overlay.color = light_color
|
||||
gem_overlay.color = light_color
|
||||
|
||||
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
||||
|
||||
add_overlay(gem_overlay)
|
||||
|
||||
if(wielded)
|
||||
add_overlay(blade_overlay)
|
||||
if(ismob(loc))
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
clean_blood()
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/AltClick(mob/living/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
|
||||
return
|
||||
if(user.incapacitated() || !istype(user))
|
||||
to_chat(user, "<span class='warning'>You can't do that right now!</span>")
|
||||
return
|
||||
if(alert("Are you sure you want to recolor your blade?", "Confirm Repaint", "Yes", "No") == "Yes")
|
||||
var/energy_color_input = input(usr,"","Choose Energy Color",light_color) as color|null
|
||||
if(!energy_color_input || !user.canUseTopic(src, BE_CLOSE, FALSE) || hacked)
|
||||
return
|
||||
light_color = sanitize_hexcolor(energy_color_input, desired_format=6, include_crunch=1)
|
||||
update_icon()
|
||||
update_light()
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file)
|
||||
. = ..()
|
||||
if(isinhands)
|
||||
var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem")
|
||||
gem_inhand.color = light_color
|
||||
. += gem_inhand
|
||||
if(wielded)
|
||||
var/mutable_appearance/blade_inhand = mutable_appearance(icon_file, "hypereutactic_blade")
|
||||
blade_inhand.color = light_color
|
||||
. += blade_inhand
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/examine(mob/user)
|
||||
..()
|
||||
if(!hacked)
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
|
||||
/obj/item/twohanded/dualsaber/hypereutactic/rainbow_process()
|
||||
. = ..()
|
||||
update_icon()
|
||||
update_light()
|
||||
|
||||
//spears
|
||||
/obj/item/twohanded/spear
|
||||
icon_state = "spearglass0"
|
||||
|
||||
@@ -614,3 +614,6 @@
|
||||
user.resting = FALSE
|
||||
togglelock(user)
|
||||
T1.visible_message("<span class='warning'>[user] dives into [src]!</span>")
|
||||
|
||||
/obj/structure/closet/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool)
|
||||
return ..() && opened
|
||||
|
||||
@@ -318,6 +318,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
RemoveActive()
|
||||
state = AHELP_CLOSED
|
||||
GLOB.ahelp_tickets.ListInsert(src)
|
||||
to_chat(initiator, "<span class='adminhelp'>Ticket closed by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"].</span>")
|
||||
AddInteraction("<font color='red'>Closed by [key_name].</font>")
|
||||
if(!silent)
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "closed")
|
||||
@@ -336,7 +337,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50)
|
||||
|
||||
AddInteraction("<font color='green'>Resolved by [key_name].</font>")
|
||||
to_chat(initiator, "<span class='adminhelp'>Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.</span>")
|
||||
to_chat(initiator, "<span class='adminhelp'>Your ticket has been resolved by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]. The Adminhelp verb will be returned to you shortly.</span>")
|
||||
if(!silent)
|
||||
SSblackbox.record_feedback("tally", "ahelp_stats", 1, "resolved")
|
||||
var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name]"
|
||||
@@ -353,7 +354,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
|
||||
SEND_SOUND(initiator, sound('sound/effects/adminhelp.ogg'))
|
||||
|
||||
to_chat(initiator, "<font color='red' size='4'><b>- AdminHelp Rejected! -</b></font>")
|
||||
to_chat(initiator, "<font color='red' size='4'><b>- AdminHelp Rejected by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]! -</b></font>")
|
||||
to_chat(initiator, "<font color='red'><b>Your admin help was rejected.</b> The adminhelp verb has been returned to you so that you may try again.</font>")
|
||||
to_chat(initiator, "Please try to be calm, clear, and descriptive in admin helps, do not assume the admin has seen any related events, and clearly state the names of anybody you are reporting.")
|
||||
|
||||
@@ -369,7 +370,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
if(state != AHELP_ACTIVE)
|
||||
return
|
||||
|
||||
var/msg = "<font color='red' size='4'><b>- AdminHelp marked as IC issue! -</b></font><br>"
|
||||
var/msg = "<font color='red' size='4'><b>- AdminHelp marked as IC issue by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]! -</b></font><br>"
|
||||
msg += "<font color='red'><b>Losing is part of the game!</b></font><br>"
|
||||
msg += "<font color='red'>It is also possible that your ahelp is unable to be answered properly, due to events occurring in the round.</font>"
|
||||
if(initiator)
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
if(prob(10))
|
||||
to_chat(target, "You feel as if you are being watched.")
|
||||
return
|
||||
face_atom(target)
|
||||
draining = TRUE
|
||||
essence_drained += rand(15, 20)
|
||||
to_chat(src, "<span class='revennotice'>You search for the soul of [target].</span>")
|
||||
|
||||
@@ -587,3 +587,57 @@
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
suit = /obj/item/clothing/suit/armor/vest
|
||||
glasses = /obj/item/clothing/glasses/sunglasses/reagent
|
||||
|
||||
/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
|
||||
id_job = "Knight"
|
||||
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/blue
|
||||
|
||||
/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
|
||||
id_job = "Knight Captain"
|
||||
|
||||
/datum/outfit/lavaknight/captain
|
||||
name ="Cydonian Knight Captain"
|
||||
l_pocket = /obj/item/twohanded/dualsaber/hypereutactic
|
||||
id = /obj/item/card/id/knight/captain
|
||||
|
||||
@@ -867,3 +867,133 @@
|
||||
strip_delay = 130
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
actions_types = list()
|
||||
|
||||
/*
|
||||
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_state = "knight_cydonia"
|
||||
item_state = "knight_yellow"
|
||||
item_color = null
|
||||
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/Initialize()
|
||||
. = ..()
|
||||
if(istype(loc, /obj/item/clothing/suit/space/hardsuit/lavaknight))
|
||||
var/obj/item/clothing/suit/space/hardsuit/lavaknight/S = loc
|
||||
energy_color = S.energy_color
|
||||
update_icon()
|
||||
|
||||
/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(icon, "knight_cydonia_overlay")
|
||||
|
||||
if(energy_color)
|
||||
helm_overlay.color = energy_color
|
||||
|
||||
cut_overlays() //So that it doesn't keep stacking overlays non-stop on top of each other
|
||||
|
||||
add_overlay(helm_overlay)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
energy_overlay.plane = ABOVE_LIGHTING_LAYER
|
||||
energy_overlay.color = energy_color
|
||||
. += energy_overlay
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight
|
||||
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"
|
||||
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
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
var/energy_color = "#35FFF0"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize()
|
||||
..()
|
||||
light_color = energy_color
|
||||
set_light(1)
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/update_icon()
|
||||
var/mutable_appearance/suit_overlay = mutable_appearance(icon, "knight_cydonia_overlay")
|
||||
|
||||
if(energy_color)
|
||||
suit_overlay.color = energy_color
|
||||
|
||||
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/worn_overlays(isinhands = FALSE, icon_file)
|
||||
. = ..()
|
||||
if(!isinhands)
|
||||
var/mutable_appearance/energy_overlay
|
||||
if(taurmode == SNEK_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_naga.dmi', "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
else if(taurmode == PAW_TAURIC)
|
||||
energy_overlay = mutable_appearance('modular_citadel/icons/mob/taur_canine.dmi', "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
else
|
||||
energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER)
|
||||
|
||||
energy_overlay.plane = ABOVE_LIGHTING_LAYER
|
||||
energy_overlay.color = energy_color
|
||||
. += energy_overlay
|
||||
|
||||
/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(helmet)
|
||||
var/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/H = helmet
|
||||
H.energy_color = energy_color
|
||||
user.update_inv_head()
|
||||
H.update_icon()
|
||||
update_icon()
|
||||
user.update_inv_wear_suit()
|
||||
light_color = energy_color
|
||||
update_light()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/lavaknight/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Alt-click to recolor it.</span>")
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
weight = 10
|
||||
max_occurrences = 1
|
||||
|
||||
earliest_start = 60 MINUTES
|
||||
min_players = 40
|
||||
|
||||
gamemode_blacklist = list("blob") //Just in case a blob survives that long
|
||||
|
||||
@@ -36,10 +36,11 @@
|
||||
projectilesound = 'sound/weapons/emitter.ogg'
|
||||
maxHealth = 50
|
||||
health = 50
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
var/allowed_projectile_types = list(/obj/item/projectile/magic/change, /obj/item/projectile/magic/animate, /obj/item/projectile/magic/resurrection,
|
||||
/obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball,
|
||||
/obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage)
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/ranged/Initialize()
|
||||
projectiletype = pick(allowed_projectile_types)
|
||||
. = ..()
|
||||
|
||||
@@ -61,6 +61,9 @@
|
||||
|
||||
var/display_order = JOB_DISPLAY_ORDER_DEFAULT
|
||||
|
||||
//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.
|
||||
var/dresscodecompliant = TRUE
|
||||
|
||||
//Only override this proc
|
||||
//H is usually a human unless an /equip override transformed it
|
||||
/datum/job/proc/after_spawn(mob/living/H, mob/M, latejoin = FALSE)
|
||||
|
||||
@@ -15,6 +15,7 @@ Assistant
|
||||
outfit = /datum/outfit/job/assistant
|
||||
antag_rep = 7
|
||||
display_order = JOB_DISPLAY_ORDER_ASSISTANT
|
||||
dresscodecompliant = FALSE
|
||||
|
||||
/datum/job/assistant/get_access()
|
||||
if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
|
||||
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_CONSTRUCTION, 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)
|
||||
display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN
|
||||
|
||||
/datum/outfit/job/atmos
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
supervisors = "Nanotrasen officials and Space law"
|
||||
selection_color = "#aac1ee"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 14
|
||||
minimal_player_age = 20
|
||||
exp_requirements = 180
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type = EXP_TYPE_COMMAND
|
||||
exp_type_department = EXP_TYPE_COMMAND
|
||||
|
||||
outfit = /datum/outfit/job/captain
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
|
||||
outfit = /datum/outfit/job/cargo_tech
|
||||
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING,
|
||||
ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN
|
||||
|
||||
@@ -32,5 +32,7 @@
|
||||
satchel = /obj/item/storage/backpack/satchel/chem
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/med
|
||||
|
||||
backpack_contents = list(/obj/item/storage/hypospraykit/regular)
|
||||
|
||||
chameleon_extras = /obj/item/gun/syringe
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
supervisors = "the captain"
|
||||
selection_color = "#ee7400"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 7
|
||||
minimal_player_age = 10
|
||||
exp_requirements = 180
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type_department = EXP_TYPE_ENGINEERING
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
supervisors = "the captain"
|
||||
selection_color = "#509ed1"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 7
|
||||
minimal_player_age = 10
|
||||
exp_requirements = 180
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type_department = EXP_TYPE_MEDICAL
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
supervisors = "the captain"
|
||||
selection_color = "#3a8529"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 10
|
||||
minimal_player_age = 20
|
||||
exp_requirements = 180
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type_department = EXP_TYPE_SERVICE
|
||||
@@ -21,13 +21,13 @@
|
||||
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_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
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_CARGO, ACCESS_MAILSORTING, ACCESS_QM, ACCESS_HYDROPONICS, ACCESS_LAWYER,
|
||||
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)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
supervisors = "the captain"
|
||||
selection_color = "#b90000"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 14
|
||||
minimal_player_age = 10
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type_department = EXP_TYPE_SECURITY
|
||||
|
||||
@@ -32,4 +32,6 @@
|
||||
satchel = /obj/item/storage/backpack/satchel/med
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/med
|
||||
|
||||
backpack_contents = list(/obj/item/storage/hypospraykit/regular)
|
||||
|
||||
chameleon_extras = /obj/item/gun/syringe
|
||||
|
||||
@@ -11,17 +11,19 @@
|
||||
supervisors = "the captain"
|
||||
selection_color = "#a06121"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 7
|
||||
minimal_player_age = 10
|
||||
exp_requirements = 180
|
||||
exp_type = EXP_TYPE_CREW
|
||||
exp_type_department = EXP_TYPE_SUPPLY
|
||||
|
||||
outfit = /datum/outfit/job/quartermaster
|
||||
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION,
|
||||
ACCESS_MINERAL_STOREROOM, ACCESS_VAULT)
|
||||
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING,
|
||||
ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT)
|
||||
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)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_QUARTERMASTER
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
|
||||
@@ -31,11 +33,13 @@
|
||||
jobtype = /datum/job/qm
|
||||
|
||||
belt = /obj/item/pda/quartermaster
|
||||
ears = /obj/item/radio/headset/headset_cargo
|
||||
ears = /obj/item/radio/headset/heads/qm
|
||||
uniform = /obj/item/clothing/under/rank/cargo
|
||||
shoes = /obj/item/clothing/shoes/sneakers/brown
|
||||
glasses = /obj/item/clothing/glasses/sunglasses
|
||||
l_hand = /obj/item/clipboard
|
||||
id = /obj/item/card/id/silver
|
||||
backpack_contents = list(/obj/item/melee/classic_baton/telescopic = 1, /obj/item/modular_computer/tablet/preset/advanced = 1)
|
||||
|
||||
chameleon_extras = /obj/item/stamp/qm
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
supervisors = "the captain"
|
||||
selection_color = "#7544cc"
|
||||
req_admin_notify = 1
|
||||
minimal_player_age = 7
|
||||
minimal_player_age = 10
|
||||
exp_type_department = EXP_TYPE_SCIENCE
|
||||
exp_requirements = 180
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
|
||||
outfit = /datum/outfit/job/miner
|
||||
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_CARGO_BOT, ACCESS_MINING,
|
||||
ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_SHAFT_MINER
|
||||
@@ -47,7 +48,7 @@
|
||||
name = "Shaft Miner (Asteroid)"
|
||||
uniform = /obj/item/clothing/under/rank/miner
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
|
||||
|
||||
/datum/outfit/job/miner/equipped
|
||||
name = "Shaft Miner (Lavaland + Equipment)"
|
||||
suit = /obj/item/clothing/suit/hooded/explorer/standard
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
r_pocket = /obj/item/assembly/flash/handheld
|
||||
l_pocket = /obj/item/restraints/handcuffs
|
||||
suit_store = /obj/item/gun/energy/e_gun/advtaser
|
||||
suit_store = /obj/item/gun/energy/pumpaction/defender
|
||||
backpack_contents = list(/obj/item/melee/baton/loaded=1)
|
||||
|
||||
backpack = /obj/item/storage/backpack/security
|
||||
|
||||
@@ -468,3 +468,6 @@
|
||||
bodyparts += BP
|
||||
hand_bodyparts[i] = BP
|
||||
..() //Don't redraw hands until we have organs for them
|
||||
|
||||
/mob/canReachInto(atom/user, atom/target, list/next, view_only, obj/item/tool)
|
||||
return ..() && (user == src)
|
||||
|
||||
@@ -975,4 +975,635 @@ GLOBAL_LIST_INIT(vox_sounds, list("abduction" = 'sound/vox_fem/abduction.ogg',
|
||||
"zombie" = 'sound/vox_fem/zombie.ogg',
|
||||
"zone" = 'sound/vox_fem/zone.ogg',
|
||||
"zulu" = 'sound/vox_fem/zulu.ogg'))
|
||||
|
||||
//for vim
|
||||
// :%s/\(\(.*\)\.ogg\)/"\2" = 'sound\/vox\/\1',/g
|
||||
GLOBAL_LIST_INIT(vox_sounds_male, list("," = 'sound/vox/_comma.ogg',
|
||||
"." = 'sound/vox/_period.ogg',
|
||||
"a" = 'sound/vox/a.ogg',
|
||||
"accelerating" = 'sound/vox/accelerating.ogg',
|
||||
"accelerator" = 'sound/vox/accelerator.ogg',
|
||||
"accepted" = 'sound/vox/accepted.ogg',
|
||||
"access" = 'sound/vox/access.ogg',
|
||||
"acknowledge" = 'sound/vox/acknowledge.ogg',
|
||||
"acknowledged" = 'sound/vox/acknowledged.ogg',
|
||||
"acquired" = 'sound/vox/acquired.ogg',
|
||||
"acquisition" = 'sound/vox/acquisition.ogg',
|
||||
"across" = 'sound/vox/across.ogg',
|
||||
"activate" = 'sound/vox/activate.ogg',
|
||||
"activated" = 'sound/vox/activated.ogg',
|
||||
"activity" = 'sound/vox/activity.ogg',
|
||||
"adios" = 'sound/vox/adios.ogg',
|
||||
"administration" = 'sound/vox/administration.ogg',
|
||||
"advanced" = 'sound/vox/advanced.ogg',
|
||||
"after" = 'sound/vox/after.ogg',
|
||||
"agent" = 'sound/vox/agent.ogg',
|
||||
"alarm" = 'sound/vox/alarm.ogg',
|
||||
"alert" = 'sound/vox/alert.ogg',
|
||||
"alien" = 'sound/vox/alien.ogg',
|
||||
"aligned" = 'sound/vox/aligned.ogg',
|
||||
"all" = 'sound/vox/all.ogg',
|
||||
"alpha" = 'sound/vox/alpha.ogg',
|
||||
"am" = 'sound/vox/am.ogg',
|
||||
"amigo" = 'sound/vox/amigo.ogg',
|
||||
"ammunition" = 'sound/vox/ammunition.ogg',
|
||||
"an" = 'sound/vox/an.ogg',
|
||||
"and" = 'sound/vox/and.ogg',
|
||||
"announcement" = 'sound/vox/announcement.ogg',
|
||||
"anomalous" = 'sound/vox/anomalous.ogg',
|
||||
"antenna" = 'sound/vox/antenna.ogg',
|
||||
"any" = 'sound/vox/any.ogg',
|
||||
"apprehend" = 'sound/vox/apprehend.ogg',
|
||||
"approach" = 'sound/vox/approach.ogg',
|
||||
"are" = 'sound/vox/are.ogg',
|
||||
"area" = 'sound/vox/area.ogg',
|
||||
"arm" = 'sound/vox/arm.ogg',
|
||||
"armed" = 'sound/vox/armed.ogg',
|
||||
"armor" = 'sound/vox/armor.ogg',
|
||||
"armory" = 'sound/vox/armory.ogg',
|
||||
"arrest" = 'sound/vox/arrest.ogg',
|
||||
"ass" = 'sound/vox/ass.ogg',
|
||||
"at" = 'sound/vox/at.ogg',
|
||||
"atomic" = 'sound/vox/atomic.ogg',
|
||||
"attention" = 'sound/vox/attention.ogg',
|
||||
"authorize" = 'sound/vox/authorize.ogg',
|
||||
"authorized" = 'sound/vox/authorized.ogg',
|
||||
"automatic" = 'sound/vox/automatic.ogg',
|
||||
"away" = 'sound/vox/away.ogg',
|
||||
"b" = 'sound/vox/b.ogg',
|
||||
"back" = 'sound/vox/back.ogg',
|
||||
"backman" = 'sound/vox/backman.ogg',
|
||||
"bad" = 'sound/vox/bad.ogg',
|
||||
"bag" = 'sound/vox/bag.ogg',
|
||||
"bailey" = 'sound/vox/bailey.ogg',
|
||||
"barracks" = 'sound/vox/barracks.ogg',
|
||||
"base" = 'sound/vox/base.ogg',
|
||||
"bay" = 'sound/vox/bay.ogg',
|
||||
"be" = 'sound/vox/be.ogg',
|
||||
"been" = 'sound/vox/been.ogg',
|
||||
"before" = 'sound/vox/before.ogg',
|
||||
"beyond" = 'sound/vox/beyond.ogg',
|
||||
"biohazard" = 'sound/vox/biohazard.ogg',
|
||||
"biological" = 'sound/vox/biological.ogg',
|
||||
"birdwell" = 'sound/vox/birdwell.ogg',
|
||||
"bizwarn" = 'sound/vox/bizwarn.ogg',
|
||||
"black" = 'sound/vox/black.ogg',
|
||||
"blast" = 'sound/vox/blast.ogg',
|
||||
"blocked" = 'sound/vox/blocked.ogg',
|
||||
"bloop" = 'sound/vox/bloop.ogg',
|
||||
"blue" = 'sound/vox/blue.ogg',
|
||||
"bottom" = 'sound/vox/bottom.ogg',
|
||||
"bravo" = 'sound/vox/bravo.ogg',
|
||||
"breach" = 'sound/vox/breach.ogg',
|
||||
"breached" = 'sound/vox/breached.ogg',
|
||||
"break" = 'sound/vox/break.ogg',
|
||||
"bridge" = 'sound/vox/bridge.ogg',
|
||||
"bust" = 'sound/vox/bust.ogg',
|
||||
"but" = 'sound/vox/but.ogg',
|
||||
"button" = 'sound/vox/button.ogg',
|
||||
"buzwarn" = 'sound/vox/buzwarn.ogg',
|
||||
"bypass" = 'sound/vox/bypass.ogg',
|
||||
"c" = 'sound/vox/c.ogg',
|
||||
"cable" = 'sound/vox/cable.ogg',
|
||||
"call" = 'sound/vox/call.ogg',
|
||||
"called" = 'sound/vox/called.ogg',
|
||||
"canal" = 'sound/vox/canal.ogg',
|
||||
"cap" = 'sound/vox/cap.ogg',
|
||||
"captain" = 'sound/vox/captain.ogg',
|
||||
"capture" = 'sound/vox/capture.ogg',
|
||||
"captured" = 'sound/vox/captured.ogg',
|
||||
"ceiling" = 'sound/vox/ceiling.ogg',
|
||||
"celsius" = 'sound/vox/celsius.ogg',
|
||||
"center" = 'sound/vox/center.ogg',
|
||||
"centi" = 'sound/vox/centi.ogg',
|
||||
"central" = 'sound/vox/central.ogg',
|
||||
"chamber" = 'sound/vox/chamber.ogg',
|
||||
"charlie" = 'sound/vox/charlie.ogg',
|
||||
"check" = 'sound/vox/check.ogg',
|
||||
"checkpoint" = 'sound/vox/checkpoint.ogg',
|
||||
"chemical" = 'sound/vox/chemical.ogg',
|
||||
"cleanup" = 'sound/vox/cleanup.ogg',
|
||||
"clear" = 'sound/vox/clear.ogg',
|
||||
"clearance" = 'sound/vox/clearance.ogg',
|
||||
"close" = 'sound/vox/close.ogg',
|
||||
"clown" = 'sound/vox/clown.ogg',
|
||||
"code" = 'sound/vox/code.ogg',
|
||||
"coded" = 'sound/vox/coded.ogg',
|
||||
"collider" = 'sound/vox/collider.ogg',
|
||||
"command" = 'sound/vox/command.ogg',
|
||||
"communication" = 'sound/vox/communication.ogg',
|
||||
"complex" = 'sound/vox/complex.ogg',
|
||||
"computer" = 'sound/vox/computer.ogg',
|
||||
"condition" = 'sound/vox/condition.ogg',
|
||||
"containment" = 'sound/vox/containment.ogg',
|
||||
"contamination" = 'sound/vox/contamination.ogg',
|
||||
"control" = 'sound/vox/control.ogg',
|
||||
"coolant" = 'sound/vox/coolant.ogg',
|
||||
"coomer" = 'sound/vox/coomer.ogg',
|
||||
"core" = 'sound/vox/core.ogg',
|
||||
"correct" = 'sound/vox/correct.ogg',
|
||||
"corridor" = 'sound/vox/corridor.ogg',
|
||||
"crew" = 'sound/vox/crew.ogg',
|
||||
"cross" = 'sound/vox/cross.ogg',
|
||||
"cryogenic" = 'sound/vox/cryogenic.ogg',
|
||||
"d" = 'sound/vox/d.ogg',
|
||||
"dadeda" = 'sound/vox/dadeda.ogg',
|
||||
"damage" = 'sound/vox/damage.ogg',
|
||||
"damaged" = 'sound/vox/damaged.ogg',
|
||||
"danger" = 'sound/vox/danger.ogg',
|
||||
"day" = 'sound/vox/day.ogg',
|
||||
"deactivated" = 'sound/vox/deactivated.ogg',
|
||||
"decompression" = 'sound/vox/decompression.ogg',
|
||||
"decontamination" = 'sound/vox/decontamination.ogg',
|
||||
"deeoo" = 'sound/vox/deeoo.ogg',
|
||||
"defense" = 'sound/vox/defense.ogg',
|
||||
"degrees" = 'sound/vox/degrees.ogg',
|
||||
"delta" = 'sound/vox/delta.ogg',
|
||||
"denied" = 'sound/vox/denied.ogg',
|
||||
"deploy" = 'sound/vox/deploy.ogg',
|
||||
"deployed" = 'sound/vox/deployed.ogg',
|
||||
"destroy" = 'sound/vox/destroy.ogg',
|
||||
"destroyed" = 'sound/vox/destroyed.ogg',
|
||||
"detain" = 'sound/vox/detain.ogg',
|
||||
"detected" = 'sound/vox/detected.ogg',
|
||||
"detonation" = 'sound/vox/detonation.ogg',
|
||||
"device" = 'sound/vox/device.ogg',
|
||||
"did" = 'sound/vox/did.ogg',
|
||||
"die" = 'sound/vox/die.ogg',
|
||||
"dimensional" = 'sound/vox/dimensional.ogg',
|
||||
"dirt" = 'sound/vox/dirt.ogg',
|
||||
"disengaged" = 'sound/vox/disengaged.ogg',
|
||||
"dish" = 'sound/vox/dish.ogg',
|
||||
"disposal" = 'sound/vox/disposal.ogg',
|
||||
"distance" = 'sound/vox/distance.ogg',
|
||||
"distortion" = 'sound/vox/distortion.ogg',
|
||||
"do" = 'sound/vox/do.ogg',
|
||||
"doctor" = 'sound/vox/doctor.ogg',
|
||||
"doop" = 'sound/vox/doop.ogg',
|
||||
"door" = 'sound/vox/door.ogg',
|
||||
"down" = 'sound/vox/down.ogg',
|
||||
"dual" = 'sound/vox/dual.ogg',
|
||||
"duct" = 'sound/vox/duct.ogg',
|
||||
"e" = 'sound/vox/e.ogg',
|
||||
"east" = 'sound/vox/east.ogg',
|
||||
"echo" = 'sound/vox/echo.ogg',
|
||||
"ed" = 'sound/vox/ed.ogg',
|
||||
"effect" = 'sound/vox/effect.ogg',
|
||||
"egress" = 'sound/vox/egress.ogg',
|
||||
"eight" = 'sound/vox/eight.ogg',
|
||||
"eighteen" = 'sound/vox/eighteen.ogg',
|
||||
"eighty" = 'sound/vox/eighty.ogg',
|
||||
"electric" = 'sound/vox/electric.ogg',
|
||||
"electromagnetic" = 'sound/vox/electromagnetic.ogg',
|
||||
"elevator" = 'sound/vox/elevator.ogg',
|
||||
"eleven" = 'sound/vox/eleven.ogg',
|
||||
"eliminate" = 'sound/vox/eliminate.ogg',
|
||||
"emergency" = 'sound/vox/emergency.ogg',
|
||||
"enemy" = 'sound/vox/enemy.ogg',
|
||||
"energy" = 'sound/vox/energy.ogg',
|
||||
"engage" = 'sound/vox/engage.ogg',
|
||||
"engaged" = 'sound/vox/engaged.ogg',
|
||||
"engine" = 'sound/vox/engine.ogg',
|
||||
"enter" = 'sound/vox/enter.ogg',
|
||||
"entry" = 'sound/vox/entry.ogg',
|
||||
"environment" = 'sound/vox/environment.ogg',
|
||||
"error" = 'sound/vox/error.ogg',
|
||||
"escape" = 'sound/vox/escape.ogg',
|
||||
"evacuate" = 'sound/vox/evacuate.ogg',
|
||||
"exchange" = 'sound/vox/exchange.ogg',
|
||||
"exit" = 'sound/vox/exit.ogg',
|
||||
"expect" = 'sound/vox/expect.ogg',
|
||||
"experiment" = 'sound/vox/experiment.ogg',
|
||||
"experimental" = 'sound/vox/experimental.ogg',
|
||||
"explode" = 'sound/vox/explode.ogg',
|
||||
"explosion" = 'sound/vox/explosion.ogg',
|
||||
"exposure" = 'sound/vox/exposure.ogg',
|
||||
"exterminate" = 'sound/vox/exterminate.ogg',
|
||||
"extinguish" = 'sound/vox/extinguish.ogg',
|
||||
"extinguisher" = 'sound/vox/extinguisher.ogg',
|
||||
"extreme" = 'sound/vox/extreme.ogg',
|
||||
"f" = 'sound/vox/f.ogg',
|
||||
"face" = 'sound/vox/face.ogg',
|
||||
"facility" = 'sound/vox/facility.ogg',
|
||||
"fahrenheit" = 'sound/vox/fahrenheit.ogg',
|
||||
"failed" = 'sound/vox/failed.ogg',
|
||||
"failure" = 'sound/vox/failure.ogg',
|
||||
"farthest" = 'sound/vox/farthest.ogg',
|
||||
"fast" = 'sound/vox/fast.ogg',
|
||||
"feet" = 'sound/vox/feet.ogg',
|
||||
"field" = 'sound/vox/field.ogg',
|
||||
"fifteen" = 'sound/vox/fifteen.ogg',
|
||||
"fifth" = 'sound/vox/fifth.ogg',
|
||||
"fifty" = 'sound/vox/fifty.ogg',
|
||||
"final" = 'sound/vox/final.ogg',
|
||||
"fine" = 'sound/vox/fine.ogg',
|
||||
"fire" = 'sound/vox/fire.ogg',
|
||||
"first" = 'sound/vox/first.ogg',
|
||||
"five" = 'sound/vox/five.ogg',
|
||||
"flag" = 'sound/vox/flag.ogg',
|
||||
"flooding" = 'sound/vox/flooding.ogg',
|
||||
"floor" = 'sound/vox/floor.ogg',
|
||||
"fool" = 'sound/vox/fool.ogg',
|
||||
"for" = 'sound/vox/for.ogg',
|
||||
"forbidden" = 'sound/vox/forbidden.ogg',
|
||||
"force" = 'sound/vox/force.ogg',
|
||||
"forms" = 'sound/vox/forms.ogg',
|
||||
"found" = 'sound/vox/found.ogg',
|
||||
"four" = 'sound/vox/four.ogg',
|
||||
"fourteen" = 'sound/vox/fourteen.ogg',
|
||||
"fourth" = 'sound/vox/fourth.ogg',
|
||||
"fourty" = 'sound/vox/fourty.ogg',
|
||||
"foxtrot" = 'sound/vox/foxtrot.ogg',
|
||||
"freeman" = 'sound/vox/freeman.ogg',
|
||||
"freezer" = 'sound/vox/freezer.ogg',
|
||||
"from" = 'sound/vox/from.ogg',
|
||||
"front" = 'sound/vox/front.ogg',
|
||||
"fuel" = 'sound/vox/fuel.ogg',
|
||||
"g" = 'sound/vox/g.ogg',
|
||||
"gay" = 'sound/vox/gay.ogg',
|
||||
"get" = 'sound/vox/get.ogg',
|
||||
"go" = 'sound/vox/go.ogg',
|
||||
"going" = 'sound/vox/going.ogg',
|
||||
"good" = 'sound/vox/good.ogg',
|
||||
"goodbye" = 'sound/vox/goodbye.ogg',
|
||||
"gordon" = 'sound/vox/gordon.ogg',
|
||||
"got" = 'sound/vox/got.ogg',
|
||||
"government" = 'sound/vox/government.ogg',
|
||||
"granted" = 'sound/vox/granted.ogg',
|
||||
"great" = 'sound/vox/great.ogg',
|
||||
"green" = 'sound/vox/green.ogg',
|
||||
"grenade" = 'sound/vox/grenade.ogg',
|
||||
"guard" = 'sound/vox/guard.ogg',
|
||||
"gulf" = 'sound/vox/gulf.ogg',
|
||||
"gun" = 'sound/vox/gun.ogg',
|
||||
"guthrie" = 'sound/vox/guthrie.ogg',
|
||||
"handling" = 'sound/vox/handling.ogg',
|
||||
"hangar" = 'sound/vox/hangar.ogg',
|
||||
"has" = 'sound/vox/has.ogg',
|
||||
"have" = 'sound/vox/have.ogg',
|
||||
"hazard" = 'sound/vox/hazard.ogg',
|
||||
"head" = 'sound/vox/head.ogg',
|
||||
"health" = 'sound/vox/health.ogg',
|
||||
"heat" = 'sound/vox/heat.ogg',
|
||||
"helicopter" = 'sound/vox/helicopter.ogg',
|
||||
"helium" = 'sound/vox/helium.ogg',
|
||||
"hello" = 'sound/vox/hello.ogg',
|
||||
"help" = 'sound/vox/help.ogg',
|
||||
"here" = 'sound/vox/here.ogg',
|
||||
"hide" = 'sound/vox/hide.ogg',
|
||||
"high" = 'sound/vox/high.ogg',
|
||||
"highest" = 'sound/vox/highest.ogg',
|
||||
"hit" = 'sound/vox/hit.ogg',
|
||||
"holds" = 'sound/vox/holds.ogg',
|
||||
"hole" = 'sound/vox/hole.ogg',
|
||||
"hostile" = 'sound/vox/hostile.ogg',
|
||||
"hot" = 'sound/vox/hot.ogg',
|
||||
"hotel" = 'sound/vox/hotel.ogg',
|
||||
"hour" = 'sound/vox/hour.ogg',
|
||||
"hours" = 'sound/vox/hours.ogg',
|
||||
"hundred" = 'sound/vox/hundred.ogg',
|
||||
"hydro" = 'sound/vox/hydro.ogg',
|
||||
"i" = 'sound/vox/i.ogg',
|
||||
"idiot" = 'sound/vox/idiot.ogg',
|
||||
"illegal" = 'sound/vox/illegal.ogg',
|
||||
"immediate" = 'sound/vox/immediate.ogg',
|
||||
"immediately" = 'sound/vox/immediately.ogg',
|
||||
"in" = 'sound/vox/in.ogg',
|
||||
"inches" = 'sound/vox/inches.ogg',
|
||||
"india" = 'sound/vox/india.ogg',
|
||||
"ing" = 'sound/vox/ing.ogg',
|
||||
"inoperative" = 'sound/vox/inoperative.ogg',
|
||||
"inside" = 'sound/vox/inside.ogg',
|
||||
"inspection" = 'sound/vox/inspection.ogg',
|
||||
"inspector" = 'sound/vox/inspector.ogg',
|
||||
"interchange" = 'sound/vox/interchange.ogg',
|
||||
"intruder" = 'sound/vox/intruder.ogg',
|
||||
"invallid" = 'sound/vox/invallid.ogg',
|
||||
"invasion" = 'sound/vox/invasion.ogg',
|
||||
"is" = 'sound/vox/is.ogg',
|
||||
"it" = 'sound/vox/it.ogg',
|
||||
"johnson" = 'sound/vox/johnson.ogg',
|
||||
"juliet" = 'sound/vox/juliet.ogg',
|
||||
"key" = 'sound/vox/key.ogg',
|
||||
"kill" = 'sound/vox/kill.ogg',
|
||||
"kilo" = 'sound/vox/kilo.ogg',
|
||||
"kit" = 'sound/vox/kit.ogg',
|
||||
"lab" = 'sound/vox/lab.ogg',
|
||||
"lambda" = 'sound/vox/lambda.ogg',
|
||||
"laser" = 'sound/vox/laser.ogg',
|
||||
"last" = 'sound/vox/last.ogg',
|
||||
"launch" = 'sound/vox/launch.ogg',
|
||||
"leak" = 'sound/vox/leak.ogg',
|
||||
"leave" = 'sound/vox/leave.ogg',
|
||||
"left" = 'sound/vox/left.ogg',
|
||||
"legal" = 'sound/vox/legal.ogg',
|
||||
"level" = 'sound/vox/level.ogg',
|
||||
"lever" = 'sound/vox/lever.ogg',
|
||||
"lie" = 'sound/vox/lie.ogg',
|
||||
"lieutenant" = 'sound/vox/lieutenant.ogg',
|
||||
"life" = 'sound/vox/life.ogg',
|
||||
"light" = 'sound/vox/light.ogg',
|
||||
"lima" = 'sound/vox/lima.ogg',
|
||||
"liquid" = 'sound/vox/liquid.ogg',
|
||||
"loading" = 'sound/vox/loading.ogg',
|
||||
"locate" = 'sound/vox/locate.ogg',
|
||||
"located" = 'sound/vox/located.ogg',
|
||||
"location" = 'sound/vox/location.ogg',
|
||||
"lock" = 'sound/vox/lock.ogg',
|
||||
"locked" = 'sound/vox/locked.ogg',
|
||||
"locker" = 'sound/vox/locker.ogg',
|
||||
"lockout" = 'sound/vox/lockout.ogg',
|
||||
"lower" = 'sound/vox/lower.ogg',
|
||||
"lowest" = 'sound/vox/lowest.ogg',
|
||||
"magnetic" = 'sound/vox/magnetic.ogg',
|
||||
"main" = 'sound/vox/main.ogg',
|
||||
"maintenance" = 'sound/vox/maintenance.ogg',
|
||||
"malfunction" = 'sound/vox/malfunction.ogg',
|
||||
"man" = 'sound/vox/man.ogg',
|
||||
"mass" = 'sound/vox/mass.ogg',
|
||||
"materials" = 'sound/vox/materials.ogg',
|
||||
"maximum" = 'sound/vox/maximum.ogg',
|
||||
"may" = 'sound/vox/may.ogg',
|
||||
"med" = 'sound/vox/med.ogg',
|
||||
"medical" = 'sound/vox/medical.ogg',
|
||||
"men" = 'sound/vox/men.ogg',
|
||||
"mercy" = 'sound/vox/mercy.ogg',
|
||||
"mesa" = 'sound/vox/mesa.ogg',
|
||||
"message" = 'sound/vox/message.ogg',
|
||||
"meter" = 'sound/vox/meter.ogg',
|
||||
"micro" = 'sound/vox/micro.ogg',
|
||||
"middle" = 'sound/vox/middle.ogg',
|
||||
"mike" = 'sound/vox/mike.ogg',
|
||||
"miles" = 'sound/vox/miles.ogg',
|
||||
"military" = 'sound/vox/military.ogg',
|
||||
"milli" = 'sound/vox/milli.ogg',
|
||||
"million" = 'sound/vox/million.ogg',
|
||||
"minefield" = 'sound/vox/minefield.ogg',
|
||||
"minimum" = 'sound/vox/minimum.ogg',
|
||||
"minutes" = 'sound/vox/minutes.ogg',
|
||||
"mister" = 'sound/vox/mister.ogg',
|
||||
"mode" = 'sound/vox/mode.ogg',
|
||||
"motor" = 'sound/vox/motor.ogg',
|
||||
"motorpool" = 'sound/vox/motorpool.ogg',
|
||||
"move" = 'sound/vox/move.ogg',
|
||||
"must" = 'sound/vox/must.ogg',
|
||||
"nearest" = 'sound/vox/nearest.ogg',
|
||||
"nice" = 'sound/vox/nice.ogg',
|
||||
"nine" = 'sound/vox/nine.ogg',
|
||||
"nineteen" = 'sound/vox/nineteen.ogg',
|
||||
"ninety" = 'sound/vox/ninety.ogg',
|
||||
"no" = 'sound/vox/no.ogg',
|
||||
"nominal" = 'sound/vox/nominal.ogg',
|
||||
"north" = 'sound/vox/north.ogg',
|
||||
"not" = 'sound/vox/not.ogg',
|
||||
"november" = 'sound/vox/november.ogg',
|
||||
"now" = 'sound/vox/now.ogg',
|
||||
"number" = 'sound/vox/number.ogg',
|
||||
"objective" = 'sound/vox/objective.ogg',
|
||||
"observation" = 'sound/vox/observation.ogg',
|
||||
"of" = 'sound/vox/of.ogg',
|
||||
"officer" = 'sound/vox/officer.ogg',
|
||||
"ok" = 'sound/vox/ok.ogg',
|
||||
"on" = 'sound/vox/on.ogg',
|
||||
"one" = 'sound/vox/one.ogg',
|
||||
"open" = 'sound/vox/open.ogg',
|
||||
"operating" = 'sound/vox/operating.ogg',
|
||||
"operations" = 'sound/vox/operations.ogg',
|
||||
"operative" = 'sound/vox/operative.ogg',
|
||||
"option" = 'sound/vox/option.ogg',
|
||||
"order" = 'sound/vox/order.ogg',
|
||||
"organic" = 'sound/vox/organic.ogg',
|
||||
"oscar" = 'sound/vox/oscar.ogg',
|
||||
"out" = 'sound/vox/out.ogg',
|
||||
"outside" = 'sound/vox/outside.ogg',
|
||||
"over" = 'sound/vox/over.ogg',
|
||||
"overload" = 'sound/vox/overload.ogg',
|
||||
"override" = 'sound/vox/override.ogg',
|
||||
"pacify" = 'sound/vox/pacify.ogg',
|
||||
"pain" = 'sound/vox/pain.ogg',
|
||||
"pal" = 'sound/vox/pal.ogg',
|
||||
"panel" = 'sound/vox/panel.ogg',
|
||||
"percent" = 'sound/vox/percent.ogg',
|
||||
"perimeter" = 'sound/vox/perimeter.ogg',
|
||||
"permitted" = 'sound/vox/permitted.ogg',
|
||||
"personnel" = 'sound/vox/personnel.ogg',
|
||||
"pipe" = 'sound/vox/pipe.ogg',
|
||||
"plant" = 'sound/vox/plant.ogg',
|
||||
"platform" = 'sound/vox/platform.ogg',
|
||||
"please" = 'sound/vox/please.ogg',
|
||||
"point" = 'sound/vox/point.ogg',
|
||||
"portal" = 'sound/vox/portal.ogg',
|
||||
"power" = 'sound/vox/power.ogg',
|
||||
"presence" = 'sound/vox/presence.ogg',
|
||||
"press" = 'sound/vox/press.ogg',
|
||||
"primary" = 'sound/vox/primary.ogg',
|
||||
"proceed" = 'sound/vox/proceed.ogg',
|
||||
"processing" = 'sound/vox/processing.ogg',
|
||||
"progress" = 'sound/vox/progress.ogg',
|
||||
"proper" = 'sound/vox/proper.ogg',
|
||||
"propulsion" = 'sound/vox/propulsion.ogg',
|
||||
"prosecute" = 'sound/vox/prosecute.ogg',
|
||||
"protective" = 'sound/vox/protective.ogg',
|
||||
"push" = 'sound/vox/push.ogg',
|
||||
"quantum" = 'sound/vox/quantum.ogg',
|
||||
"quebec" = 'sound/vox/quebec.ogg',
|
||||
"question" = 'sound/vox/question.ogg',
|
||||
"questioning" = 'sound/vox/questioning.ogg',
|
||||
"quick" = 'sound/vox/quick.ogg',
|
||||
"quit" = 'sound/vox/quit.ogg',
|
||||
"radiation" = 'sound/vox/radiation.ogg',
|
||||
"radioactive" = 'sound/vox/radioactive.ogg',
|
||||
"rads" = 'sound/vox/rads.ogg',
|
||||
"rapid" = 'sound/vox/rapid.ogg',
|
||||
"reach" = 'sound/vox/reach.ogg',
|
||||
"reached" = 'sound/vox/reached.ogg',
|
||||
"reactor" = 'sound/vox/reactor.ogg',
|
||||
"red" = 'sound/vox/red.ogg',
|
||||
"relay" = 'sound/vox/relay.ogg',
|
||||
"released" = 'sound/vox/released.ogg',
|
||||
"remaining" = 'sound/vox/remaining.ogg',
|
||||
"renegade" = 'sound/vox/renegade.ogg',
|
||||
"repair" = 'sound/vox/repair.ogg',
|
||||
"report" = 'sound/vox/report.ogg',
|
||||
"reports" = 'sound/vox/reports.ogg',
|
||||
"required" = 'sound/vox/required.ogg',
|
||||
"research" = 'sound/vox/research.ogg',
|
||||
"reset" = 'sound/vox/reset.ogg',
|
||||
"resevoir" = 'sound/vox/resevoir.ogg',
|
||||
"resistance" = 'sound/vox/resistance.ogg',
|
||||
"returned" = 'sound/vox/returned.ogg',
|
||||
"right" = 'sound/vox/right.ogg',
|
||||
"rocket" = 'sound/vox/rocket.ogg',
|
||||
"roger" = 'sound/vox/roger.ogg',
|
||||
"romeo" = 'sound/vox/romeo.ogg',
|
||||
"room" = 'sound/vox/room.ogg',
|
||||
"round" = 'sound/vox/round.ogg',
|
||||
"run" = 'sound/vox/run.ogg',
|
||||
"safe" = 'sound/vox/safe.ogg',
|
||||
"safety" = 'sound/vox/safety.ogg',
|
||||
"sargeant" = 'sound/vox/sargeant.ogg',
|
||||
"satellite" = 'sound/vox/satellite.ogg',
|
||||
"save" = 'sound/vox/save.ogg',
|
||||
"science" = 'sound/vox/science.ogg',
|
||||
"scores" = 'sound/vox/scores.ogg',
|
||||
"scream" = 'sound/vox/scream.ogg',
|
||||
"screen" = 'sound/vox/screen.ogg',
|
||||
"search" = 'sound/vox/search.ogg',
|
||||
"second" = 'sound/vox/second.ogg',
|
||||
"secondary" = 'sound/vox/secondary.ogg',
|
||||
"seconds" = 'sound/vox/seconds.ogg',
|
||||
"sector" = 'sound/vox/sector.ogg',
|
||||
"secure" = 'sound/vox/secure.ogg',
|
||||
"secured" = 'sound/vox/secured.ogg',
|
||||
"security" = 'sound/vox/security.ogg',
|
||||
"select" = 'sound/vox/select.ogg',
|
||||
"selected" = 'sound/vox/selected.ogg',
|
||||
"service" = 'sound/vox/service.ogg',
|
||||
"seven" = 'sound/vox/seven.ogg',
|
||||
"seventeen" = 'sound/vox/seventeen.ogg',
|
||||
"seventy" = 'sound/vox/seventy.ogg',
|
||||
"severe" = 'sound/vox/severe.ogg',
|
||||
"sewage" = 'sound/vox/sewage.ogg',
|
||||
"sewer" = 'sound/vox/sewer.ogg',
|
||||
"shield" = 'sound/vox/shield.ogg',
|
||||
"shipment" = 'sound/vox/shipment.ogg',
|
||||
"shock" = 'sound/vox/shock.ogg',
|
||||
"shoot" = 'sound/vox/shoot.ogg',
|
||||
"shower" = 'sound/vox/shower.ogg',
|
||||
"shut" = 'sound/vox/shut.ogg',
|
||||
"side" = 'sound/vox/side.ogg',
|
||||
"sierra" = 'sound/vox/sierra.ogg',
|
||||
"sight" = 'sound/vox/sight.ogg',
|
||||
"silo" = 'sound/vox/silo.ogg',
|
||||
"six" = 'sound/vox/six.ogg',
|
||||
"sixteen" = 'sound/vox/sixteen.ogg',
|
||||
"sixty" = 'sound/vox/sixty.ogg',
|
||||
"slime" = 'sound/vox/slime.ogg',
|
||||
"slow" = 'sound/vox/slow.ogg',
|
||||
"soldier" = 'sound/vox/soldier.ogg',
|
||||
"some" = 'sound/vox/some.ogg',
|
||||
"someone" = 'sound/vox/someone.ogg',
|
||||
"something" = 'sound/vox/something.ogg',
|
||||
"son" = 'sound/vox/son.ogg',
|
||||
"sorry" = 'sound/vox/sorry.ogg',
|
||||
"south" = 'sound/vox/south.ogg',
|
||||
"squad" = 'sound/vox/squad.ogg',
|
||||
"square" = 'sound/vox/square.ogg',
|
||||
"stairway" = 'sound/vox/stairway.ogg',
|
||||
"status" = 'sound/vox/status.ogg',
|
||||
"sterile" = 'sound/vox/sterile.ogg',
|
||||
"sterilization" = 'sound/vox/sterilization.ogg',
|
||||
"stolen" = 'sound/vox/stolen.ogg',
|
||||
"storage" = 'sound/vox/storage.ogg',
|
||||
"sub" = 'sound/vox/sub.ogg',
|
||||
"subsurface" = 'sound/vox/subsurface.ogg',
|
||||
"sudden" = 'sound/vox/sudden.ogg',
|
||||
"suit" = 'sound/vox/suit.ogg',
|
||||
"superconducting" = 'sound/vox/superconducting.ogg',
|
||||
"supercooled" = 'sound/vox/supercooled.ogg',
|
||||
"supply" = 'sound/vox/supply.ogg',
|
||||
"surface" = 'sound/vox/surface.ogg',
|
||||
"surrender" = 'sound/vox/surrender.ogg',
|
||||
"surround" = 'sound/vox/surround.ogg',
|
||||
"surrounded" = 'sound/vox/surrounded.ogg',
|
||||
"switch" = 'sound/vox/switch.ogg',
|
||||
"system" = 'sound/vox/system.ogg',
|
||||
"systems" = 'sound/vox/systems.ogg',
|
||||
"tactical" = 'sound/vox/tactical.ogg',
|
||||
"take" = 'sound/vox/take.ogg',
|
||||
"talk" = 'sound/vox/talk.ogg',
|
||||
"tango" = 'sound/vox/tango.ogg',
|
||||
"tank" = 'sound/vox/tank.ogg',
|
||||
"target" = 'sound/vox/target.ogg',
|
||||
"team" = 'sound/vox/team.ogg',
|
||||
"temperature" = 'sound/vox/temperature.ogg',
|
||||
"temporal" = 'sound/vox/temporal.ogg',
|
||||
"ten" = 'sound/vox/ten.ogg',
|
||||
"terminal" = 'sound/vox/terminal.ogg',
|
||||
"terminated" = 'sound/vox/terminated.ogg',
|
||||
"termination" = 'sound/vox/termination.ogg',
|
||||
"test" = 'sound/vox/test.ogg',
|
||||
"that" = 'sound/vox/that.ogg',
|
||||
"the" = 'sound/vox/the.ogg',
|
||||
"then" = 'sound/vox/then.ogg',
|
||||
"there" = 'sound/vox/there.ogg',
|
||||
"third" = 'sound/vox/third.ogg',
|
||||
"thirteen" = 'sound/vox/thirteen.ogg',
|
||||
"thirty" = 'sound/vox/thirty.ogg',
|
||||
"this" = 'sound/vox/this.ogg',
|
||||
"those" = 'sound/vox/those.ogg',
|
||||
"thousand" = 'sound/vox/thousand.ogg',
|
||||
"threat" = 'sound/vox/threat.ogg',
|
||||
"three" = 'sound/vox/three.ogg',
|
||||
"through" = 'sound/vox/through.ogg',
|
||||
"time" = 'sound/vox/time.ogg',
|
||||
"to" = 'sound/vox/to.ogg',
|
||||
"top" = 'sound/vox/top.ogg',
|
||||
"topside" = 'sound/vox/topside.ogg',
|
||||
"touch" = 'sound/vox/touch.ogg',
|
||||
"towards" = 'sound/vox/towards.ogg',
|
||||
"track" = 'sound/vox/track.ogg',
|
||||
"train" = 'sound/vox/train.ogg',
|
||||
"transportation" = 'sound/vox/transportation.ogg',
|
||||
"truck" = 'sound/vox/truck.ogg',
|
||||
"tunnel" = 'sound/vox/tunnel.ogg',
|
||||
"turn" = 'sound/vox/turn.ogg',
|
||||
"turret" = 'sound/vox/turret.ogg',
|
||||
"twelve" = 'sound/vox/twelve.ogg',
|
||||
"twenty" = 'sound/vox/twenty.ogg',
|
||||
"two" = 'sound/vox/two.ogg',
|
||||
"unauthorized" = 'sound/vox/unauthorized.ogg',
|
||||
"under" = 'sound/vox/under.ogg',
|
||||
"uniform" = 'sound/vox/uniform.ogg',
|
||||
"unlocked" = 'sound/vox/unlocked.ogg',
|
||||
"until" = 'sound/vox/until.ogg',
|
||||
"up" = 'sound/vox/up.ogg',
|
||||
"upper" = 'sound/vox/upper.ogg',
|
||||
"uranium" = 'sound/vox/uranium.ogg',
|
||||
"us" = 'sound/vox/us.ogg',
|
||||
"usa" = 'sound/vox/usa.ogg',
|
||||
"use" = 'sound/vox/use.ogg',
|
||||
"used" = 'sound/vox/used.ogg',
|
||||
"user" = 'sound/vox/user.ogg',
|
||||
"vacate" = 'sound/vox/vacate.ogg',
|
||||
"valid" = 'sound/vox/valid.ogg',
|
||||
"vapor" = 'sound/vox/vapor.ogg',
|
||||
"vent" = 'sound/vox/vent.ogg',
|
||||
"ventillation" = 'sound/vox/ventillation.ogg',
|
||||
"victor" = 'sound/vox/victor.ogg',
|
||||
"violated" = 'sound/vox/violated.ogg',
|
||||
"violation" = 'sound/vox/violation.ogg',
|
||||
"voltage" = 'sound/vox/voltage.ogg',
|
||||
"vox_login" = 'sound/vox/vox_login.ogg',
|
||||
"walk" = 'sound/vox/walk.ogg',
|
||||
"wall" = 'sound/vox/wall.ogg',
|
||||
"want" = 'sound/vox/want.ogg',
|
||||
"wanted" = 'sound/vox/wanted.ogg',
|
||||
"warm" = 'sound/vox/warm.ogg',
|
||||
"warn" = 'sound/vox/warn.ogg',
|
||||
"warning" = 'sound/vox/warning.ogg',
|
||||
"waste" = 'sound/vox/waste.ogg',
|
||||
"water" = 'sound/vox/water.ogg',
|
||||
"we" = 'sound/vox/we.ogg',
|
||||
"weapon" = 'sound/vox/weapon.ogg',
|
||||
"west" = 'sound/vox/west.ogg',
|
||||
"whiskey" = 'sound/vox/whiskey.ogg',
|
||||
"white" = 'sound/vox/white.ogg',
|
||||
"wilco" = 'sound/vox/wilco.ogg',
|
||||
"will" = 'sound/vox/will.ogg',
|
||||
"with" = 'sound/vox/with.ogg',
|
||||
"without" = 'sound/vox/without.ogg',
|
||||
"woop" = 'sound/vox/woop.ogg',
|
||||
"xeno" = 'sound/vox/xeno.ogg',
|
||||
"yankee" = 'sound/vox/yankee.ogg',
|
||||
"yards" = 'sound/vox/yards.ogg',
|
||||
"year" = 'sound/vox/year.ogg',
|
||||
"yellow" = 'sound/vox/yellow.ogg',
|
||||
"yes" = 'sound/vox/yes.ogg',
|
||||
"you" = 'sound/vox/you.ogg',
|
||||
"your" = 'sound/vox/your.ogg',
|
||||
"yourself" = 'sound/vox/yourself.ogg',
|
||||
"zero" = 'sound/vox/zero.ogg',
|
||||
"zone" = 'sound/vox/zone.ogg',
|
||||
"zulu" = 'sound/vox/zulu.ogg',))
|
||||
#endif
|
||||
@@ -51,6 +51,7 @@
|
||||
var/treatment_fire = "kelotane"
|
||||
var/treatment_tox_avoid = "tricordrazine"
|
||||
var/treatment_tox = "charcoal"
|
||||
var/treatment_tox_toxlover = "toxin"
|
||||
var/treatment_virus_avoid = null
|
||||
var/treatment_virus = "spaceacillin"
|
||||
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
|
||||
@@ -381,8 +382,8 @@
|
||||
|
||||
if((!C.reagents.has_reagent(treatment_fire_avoid)) && (C.getFireLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_fire)))
|
||||
return TRUE
|
||||
|
||||
if((!C.reagents.has_reagent(treatment_tox_avoid)) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(treatment_tox)))
|
||||
var/treatment_toxavoid = get_avoidchem_toxin(C)
|
||||
if(((treatment_toxavoid && !C.reagents.has_reagent(treatment_toxavoid))) && (C.getToxLoss() >= heal_threshold) && (!C.reagents.has_reagent(get_healchem_toxin(C))))
|
||||
return TRUE
|
||||
|
||||
if(treat_virus && !C.reagents.has_reagent(treatment_virus_avoid) && !C.reagents.has_reagent(treatment_virus))
|
||||
@@ -396,6 +397,12 @@
|
||||
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/proc/get_avoidchem_toxin(mob/M)
|
||||
return HAS_TRAIT(M, TRAIT_TOXINLOVER)? null : treatment_tox_avoid
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/proc/get_healchem_toxin(mob/M)
|
||||
return HAS_TRAIT(M, TRAIT_TOXINLOVER)? treatment_tox_toxlover : treatment_tox
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/UnarmedAttack(atom/A)
|
||||
if(iscarbon(A))
|
||||
var/mob/living/carbon/C = A
|
||||
@@ -463,8 +470,10 @@
|
||||
reagent_id = treatment_fire
|
||||
|
||||
if(!reagent_id && (C.getToxLoss() >= heal_threshold))
|
||||
if(!C.reagents.has_reagent(treatment_tox) && !C.reagents.has_reagent(treatment_tox_avoid))
|
||||
reagent_id = treatment_tox
|
||||
var/toxin_heal_avoid = get_avoidchem_toxin(C)
|
||||
var/toxin_healchem = get_healchem_toxin(C)
|
||||
if(!C.reagents.has_reagent(toxin_healchem) && (toxin_heal_avoid && !C.reagents.has_reagent(toxin_heal_avoid)))
|
||||
reagent_id = toxin_healchem
|
||||
|
||||
//If the patient is injured but doesn't have our special reagent in them then we should give it to them first
|
||||
if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume)
|
||||
|
||||
@@ -131,3 +131,30 @@
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/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
|
||||
|
||||
|
||||
|
||||
@@ -98,3 +98,11 @@
|
||||
build_path = /obj/item/circuitboard/machine/vr_sleeper
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/autoylathe
|
||||
name = "Machine Design (Autoylathe)"
|
||||
desc = "The circuit board for an autoylathe."
|
||||
id = "autoylathe"
|
||||
build_path = /obj/item/circuitboard/machine/autoylathe
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
@@ -372,3 +372,7 @@
|
||||
|
||||
/datum/techweb/specialized/autounlocking/exofab
|
||||
allowed_buildtypes = MECHFAB
|
||||
|
||||
/datum/techweb/specialized/autounlocking/autoylathe
|
||||
design_autounlock_buildtypes = AUTOYLATHE
|
||||
allowed_buildtypes = AUTOYLATHE
|
||||
|
||||
@@ -31,8 +31,9 @@
|
||||
|
||||
var/list/stored_slimes
|
||||
var/obj/item/slimepotion/slime/current_potion
|
||||
var/max_slimes = 5
|
||||
var/max_slimes = 1
|
||||
var/monkeys = 0
|
||||
var/upgradetier = 0
|
||||
|
||||
icon_screen = "slime_comp"
|
||||
icon_keyboard = "rd_key"
|
||||
@@ -106,6 +107,22 @@
|
||||
stored_slimes -= deleted
|
||||
|
||||
/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
|
||||
if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube) && (upgradetier & XENOBIO_UPGRADE_MONKEYS)) //CIT CHANGE - makes monkey-related actions require XENOBIO_UPGRADE_MONKEYS
|
||||
monkeys++
|
||||
to_chat(user, "<span class='notice'>You feed [O] to [src]. It now has [monkeys] monkey cubes stored.</span>")
|
||||
@@ -264,3 +281,29 @@
|
||||
break
|
||||
else
|
||||
to_chat(owner, "<span class='notice'>Target is not near a camera. Cannot proceed.</span>")
|
||||
|
||||
/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)
|
||||
|
||||
@@ -223,7 +223,6 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337)
|
||||
/turf/open/space/bluespace/Entered(atom/movable/A)
|
||||
. = ..()
|
||||
A.forceMove(get_turf(parentSphere))
|
||||
do_sparks(3, FALSE, get_turf(A))
|
||||
|
||||
/turf/closed/indestructible/hoteldoor
|
||||
name = "Hotel Door"
|
||||
|
||||
@@ -1920,6 +1920,13 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes
|
||||
Radio headset does not include encryption key. No gun included."
|
||||
item = /obj/item/storage/box/syndie_kit/centcom_costume
|
||||
|
||||
/datum/uplink_item/badass/claymore
|
||||
name = "Claymore"
|
||||
cost = 8
|
||||
player_minimum = 25
|
||||
desc = "A claymore. We don't know why you'd do this."
|
||||
item = /obj/item/claymore
|
||||
|
||||
/datum/uplink_item/badass/costumes/clown
|
||||
name = "Clown Costume"
|
||||
desc = "Nothing is more terrifying than clowns with fully automatic weaponry."
|
||||
|
||||
Reference in New Issue
Block a user