mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-09 22:25:46 +01:00
Merge remote-tracking branch 'upstream/master' into discounts
This commit is contained in:
@@ -261,4 +261,4 @@
|
||||
return .
|
||||
if("toggleadvcontrol" in href_list)
|
||||
advcontrol = !advcontrol
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
@@ -413,7 +413,7 @@
|
||||
/obj/machinery/atmospherics/unary/vent_pump/multitool_topic(var/mob/user, var/list/href_list, var/obj/O)
|
||||
if("toggleadvcontrol" in href_list)
|
||||
advcontrol = !advcontrol
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
if("set_id" in href_list)
|
||||
var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag for this machine", src, src.id_tag) as null|text), 1, MAX_MESSAGE_LEN)
|
||||
@@ -426,7 +426,7 @@
|
||||
id_tag = newid
|
||||
broadcast_status()
|
||||
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -351,7 +351,7 @@
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/multitool_topic(var/mob/user, var/list/href_list, var/obj/O)
|
||||
if("toggleadvcontrol" in href_list)
|
||||
advcontrol = !advcontrol
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
if("set_id" in href_list)
|
||||
var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag for this machine", src, src:id_tag) as null|text),1,MAX_MESSAGE_LEN)
|
||||
@@ -365,7 +365,7 @@
|
||||
id_tag = newid
|
||||
broadcast_status()
|
||||
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -47,9 +47,9 @@
|
||||
//End positions
|
||||
#define COMPONENT_EXNAME_CHANGED 1
|
||||
#define COMSIG_ATOM_ENTERED "atom_entered" //from base of atom/Entered(): (atom/movable/entering, /atom)
|
||||
#define COMSIG_ATOM_EXITED "atom_exited" //from base of atom/Exited(): (atom/movable/exiting, atom/newloc)
|
||||
#define COMSIG_ATOM_EXIT "atom_exit" //from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
|
||||
#define COMPONENT_ATOM_BLOCK_EXIT 1
|
||||
#define COMSIG_ATOM_EXITED "atom_exited" //from base of atom/Exited(): (atom/movable/exiting, atom/newloc)
|
||||
#define COMSIG_ATOM_EX_ACT "atom_ex_act" //from base of atom/ex_act(): (severity, target)
|
||||
#define COMSIG_ATOM_EMP_ACT "atom_emp_act" //from base of atom/emp_act(): (severity)
|
||||
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume)
|
||||
@@ -106,9 +106,9 @@
|
||||
#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
|
||||
#define COMSIG_MOVABLE_CROSS "movable_cross" //from base of atom/movable/Cross(): (/atom/movable)
|
||||
#define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable)
|
||||
#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable)
|
||||
#define COMSIG_MOVABLE_UNCROSS "movable_uncross" //from base of atom/movable/Uncross(): (/atom/movable)
|
||||
#define COMPONENT_MOVABLE_BLOCK_UNCROSS 1
|
||||
#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable)
|
||||
#define COMSIG_MOVABLE_BUMP "movable_bump" //from base of atom/movable/Bump(): (/atom)
|
||||
#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum)
|
||||
#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone)
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct))
|
||||
|
||||
//Objects
|
||||
#define isitem(A) (istype(A, /obj/item))
|
||||
|
||||
#define ismecha(A) (istype(A, /obj/mecha))
|
||||
|
||||
|
||||
@@ -32,11 +32,6 @@
|
||||
|
||||
#define HYDRO_SPEED_MULTIPLIER 1
|
||||
|
||||
// multitool_topic() shit
|
||||
#define MT_ERROR -1
|
||||
#define MT_UPDATE 1
|
||||
#define MT_REINIT 2
|
||||
|
||||
//Modular computer/NTNet defines
|
||||
|
||||
//Modular computer part defines
|
||||
|
||||
@@ -455,7 +455,7 @@ proc/checkhtml(var/t)
|
||||
|
||||
|
||||
// Pencode
|
||||
/proc/pencode_to_html(text, mob/user, obj/item/pen/P = null, format = 1, sign = 1, fields = 1, deffont = PEN_FONT, signfont = SIGNFONT, crayonfont = CRAYON_FONT)
|
||||
/proc/pencode_to_html(text, mob/user, obj/item/pen/P = null, format = 1, sign = 1, fields = 1, deffont = PEN_FONT, signfont = SIGNFONT, crayonfont = CRAYON_FONT, no_font = FALSE)
|
||||
text = replacetext(text, "\[b\]", "<B>")
|
||||
text = replacetext(text, "\[/b\]", "</B>")
|
||||
text = replacetext(text, "\[i\]", "<I>")
|
||||
@@ -509,10 +509,12 @@ proc/checkhtml(var/t)
|
||||
text = replacetext(text, "\[cell\]", "<td>")
|
||||
text = replacetext(text, "\[logo\]", "<img src = ntlogo.png>")
|
||||
text = replacetext(text, "\[time\]", "[station_time_timestamp()]") // TO DO
|
||||
if(P)
|
||||
text = "<font face=\"[deffont]\" color=[P ? P.colour : "black"]>[text]</font>"
|
||||
else
|
||||
text = "<font face=\"[deffont]\">[text]</font>"
|
||||
if(!no_font)
|
||||
if(P)
|
||||
text = "<font face=\"[deffont]\" color=[P ? P.colour : "black"]>[text]</font>"
|
||||
else
|
||||
text = "<font face=\"[deffont]\">[text]</font>"
|
||||
|
||||
text = copytext(text, 1, MAX_PAPER_MESSAGE_LEN)
|
||||
return text
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown.
|
||||
/obj/item/proc/attack_self(mob/user)
|
||||
if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_NO_INTERACT)
|
||||
return
|
||||
return
|
||||
|
||||
/obj/item/proc/pre_attackby(atom/A, mob/living/user, params) //do stuff before attackby!
|
||||
@@ -28,9 +30,12 @@
|
||||
return I.attack(src, user)
|
||||
|
||||
/obj/item/proc/attack(mob/living/M, mob/living/user, def_zone)
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, M, user)
|
||||
SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, M, user)
|
||||
if(flags & (NOBLUDGEON))
|
||||
return 0
|
||||
|
||||
if(check_martial_counter(M, user))
|
||||
return 0
|
||||
if(can_operate(M)) //Checks if mob is lying down on table for surgery
|
||||
if(istype(src,/obj/item/robot_parts))//popup override for direct attach
|
||||
if(!attempt_initiate_surgery(src, M, user,1))
|
||||
@@ -74,6 +79,8 @@
|
||||
|
||||
//the equivalent of the standard version of attack() but for object targets.
|
||||
/obj/item/proc/attack_obj(obj/O, mob/living/user)
|
||||
if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ)
|
||||
return
|
||||
if(flags & (NOBLUDGEON))
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
// Squeak component ported over from tg
|
||||
|
||||
/datum/component/squeak
|
||||
var/static/list/default_squeak_sounds = list('sound/items/toysqueak1.ogg'=1, 'sound/items/toysqueak2.ogg'=1, 'sound/items/toysqueak3.ogg'=1)
|
||||
var/list/override_squeak_sounds
|
||||
var/squeak_chance = 100
|
||||
var/volume = 30
|
||||
|
||||
// This is so shoes don't squeak every step
|
||||
var/steps = 0
|
||||
var/step_delay = 1
|
||||
|
||||
// This is to stop squeak spam from inhand usage
|
||||
var/last_use = 0
|
||||
var/use_delay = 20
|
||||
|
||||
/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override)
|
||||
if(!isatom(parent))
|
||||
return COMPONENT_INCOMPATIBLE
|
||||
RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak)
|
||||
if(ismovableatom(parent))
|
||||
RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak)
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/play_squeak_crossed)
|
||||
RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react)
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak)
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak)
|
||||
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
|
||||
RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
|
||||
if(istype(parent, /obj/item/clothing/shoes))
|
||||
RegisterSignal(parent, COMSIG_SHOES_STEP_ACTION, .proc/step_squeak)
|
||||
|
||||
override_squeak_sounds = custom_sounds
|
||||
if(chance_override)
|
||||
squeak_chance = chance_override
|
||||
if(volume_override)
|
||||
volume = volume_override
|
||||
if(isnum(step_delay_override))
|
||||
step_delay = step_delay_override
|
||||
if(isnum(use_delay_override))
|
||||
use_delay = use_delay_override
|
||||
|
||||
/datum/component/squeak/proc/play_squeak()
|
||||
if(prob(squeak_chance))
|
||||
if(!override_squeak_sounds)
|
||||
playsound(parent, pickweight(default_squeak_sounds), volume, 1, -1)
|
||||
else
|
||||
playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1)
|
||||
|
||||
/datum/component/squeak/proc/step_squeak()
|
||||
if(steps > step_delay)
|
||||
play_squeak()
|
||||
steps = 0
|
||||
else
|
||||
steps++
|
||||
|
||||
/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
|
||||
RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
|
||||
|
||||
/datum/component/squeak/proc/on_drop(datum/source, mob/user)
|
||||
UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
|
||||
|
||||
/datum/component/squeak/proc/play_squeak_crossed(atom/movable/AM)
|
||||
if(isitem(AM))
|
||||
var/obj/item/I = AM
|
||||
if(I.flags & ABSTRACT)
|
||||
return
|
||||
else if(istype(AM, /obj/item/projectile))
|
||||
var/obj/item/projectile/P = AM
|
||||
if(P.original != parent)
|
||||
return
|
||||
var/atom/current_parent = parent
|
||||
if(isturf(current_parent.loc))
|
||||
play_squeak()
|
||||
|
||||
/datum/component/squeak/proc/use_squeak()
|
||||
if(last_use + use_delay < world.time)
|
||||
last_use = world.time
|
||||
play_squeak()
|
||||
|
||||
/datum/component/squeak/proc/disposing_react(datum/source, obj/structure/disposalholder/holder, obj/machinery/disposal/source)
|
||||
//We don't need to worry about unregistering this signal as it will happen for us automaticaly when the holder is qdeleted
|
||||
RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, .proc/holder_dir_change)
|
||||
|
||||
/datum/component/squeak/proc/holder_dir_change(datum/source, old_dir, new_dir)
|
||||
//If the dir changes it means we're going through a bend in the pipes, let's pretend we bumped the wall
|
||||
if(old_dir != new_dir)
|
||||
play_squeak()
|
||||
@@ -1063,7 +1063,9 @@
|
||||
H.mind.vampire.bloodtotal = 9999
|
||||
H.mind.vampire.check_vampire_upgrade(0)
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shapeshift/bats)
|
||||
to_chat(H, "You have gained the ability to shapeshift into bat form. While capable of basic self defense, you cannot use your other abilities in that form.")
|
||||
to_chat(H, "You have gained the ability to shapeshift into bat form. This is a weak form with no abilities, only useful for stealth.")
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shapeshift/hellhound)
|
||||
to_chat(H, "You have gained the ability to shapeshift into lesser hellhound form. This is a combat form with different abilities, tough but not invincible. It can regenerate itself over time by resting.")
|
||||
H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/raise_vampires)
|
||||
to_chat(H, "You have gained the ability to Raise Vampires. This extremely powerful AOE ability affects all humans near you. Vampires/thralls are healed. Corpses are raised as vampires. Others are stunned, then brain damaged, then killed.")
|
||||
H.dna.SetSEState(JUMPBLOCK, 1)
|
||||
|
||||
@@ -91,4 +91,24 @@
|
||||
shapeshift_type = /mob/living/simple_animal/hostile/scarybat/batswarm
|
||||
list/current_shapes = list(/mob/living/simple_animal/hostile/scarybat/batswarm)
|
||||
list/current_casters = list()
|
||||
list/possible_shapes = list(/mob/living/simple_animal/hostile/scarybat/batswarm)
|
||||
list/possible_shapes = list(/mob/living/simple_animal/hostile/scarybat/batswarm)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/shapeshift/hellhound
|
||||
name = "Lesser Hellhound Form"
|
||||
desc = "Take on the shape of a Hellhound."
|
||||
invocation = "none"
|
||||
invocation_type = "none"
|
||||
action_background_icon_state = "bg_demon"
|
||||
action_icon_state = "glare"
|
||||
|
||||
shapeshift_type = /mob/living/simple_animal/hostile/hellhound
|
||||
list/current_shapes = list(/mob/living/simple_animal/hostile/hellhound)
|
||||
list/current_casters = list()
|
||||
list/possible_shapes = list(/mob/living/simple_animal/hostile/hellhound)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/shapeshift/hellhound/greater
|
||||
name = "Greater Hellhound Form"
|
||||
shapeshift_type = /mob/living/simple_animal/hostile/hellhound/greater
|
||||
list/current_shapes = list(/mob/living/simple_animal/hostile/hellhound/greater)
|
||||
list/current_casters = list()
|
||||
list/possible_shapes = list(/mob/living/simple_animal/hostile/hellhound/greater)
|
||||
@@ -737,6 +737,15 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
cost = 10
|
||||
containername = "advanced first aid kits crate"
|
||||
|
||||
/datum/supply_packs/medical/firstaidmachine
|
||||
name = "Machine First Aid Kits Crate"
|
||||
contains = list(/obj/item/storage/firstaid/machine,
|
||||
/obj/item/storage/firstaid/machine,
|
||||
/obj/item/storage/firstaid/machine,
|
||||
/obj/item/storage/firstaid/machine)
|
||||
cost = 10
|
||||
containername = "machine first aid kits crate"
|
||||
|
||||
/datum/supply_packs/medical/firstaibrute
|
||||
name = "Brute Treatment Kits Crate"
|
||||
contains = list(/obj/item/storage/firstaid/brute,
|
||||
|
||||
@@ -807,6 +807,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
refundable = TRUE
|
||||
cant_discount = TRUE
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/cqc
|
||||
name = "CQC Manual"
|
||||
desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing. Does not restrict weapon usage, but cannot be used alongside Gloves of the North Star."
|
||||
reference = "CQC"
|
||||
item = /obj/item/CQC_manual
|
||||
cost = 9
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/throwingweapons
|
||||
name = "Box of Throwing Weapons"
|
||||
desc = "A box of shurikens and reinforced bolas from ancient Earth martial arts. They are highly effective \
|
||||
|
||||
+366
-1
@@ -9,30 +9,47 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"accelerator" = 'sound/vox_fem/accelerator.ogg',
|
||||
"accepted" = 'sound/vox_fem/accepted.ogg',
|
||||
"access" = 'sound/vox_fem/access.ogg',
|
||||
"accessed" = 'sound/vox_fem/accessed.ogg',
|
||||
"accessing" = 'sound/vox_fem/accessing.ogg',
|
||||
"acknowledge" = 'sound/vox_fem/acknowledge.ogg',
|
||||
"acknowledged" = 'sound/vox_fem/acknowledged.ogg',
|
||||
"acquired" = 'sound/vox_fem/acquired.ogg',
|
||||
"acquisition" = 'sound/vox_fem/acquisition.ogg',
|
||||
"across" = 'sound/vox_fem/across.ogg',
|
||||
"act" = 'sound/vox_fem/act.ogg',
|
||||
"acted" = 'sound/vox_fem/acted.ogg',
|
||||
"acting" = 'sound/vox_fem/acting.ogg',
|
||||
"activate" = 'sound/vox_fem/activate.ogg',
|
||||
"activated" = 'sound/vox_fem/activated.ogg',
|
||||
"active" = 'sound/vox_fem/active.ogg',
|
||||
"activity" = 'sound/vox_fem/activity.ogg',
|
||||
"actor" = 'sound/vox_fem/actor.ogg',
|
||||
"actual" = 'sound/vox_fem/actual.ogg',
|
||||
"actually" = 'sound/vox_fem/actually.ogg',
|
||||
"adios" = 'sound/vox_fem/adios.ogg',
|
||||
"administration" = 'sound/vox_fem/administration.ogg',
|
||||
"advanced" = 'sound/vox_fem/advanced.ogg',
|
||||
"aft" = 'sound/vox_fem/aft.ogg',
|
||||
"after" = 'sound/vox_fem/after.ogg',
|
||||
"again" = 'sound/vox_fem/again.ogg',
|
||||
"agent" = 'sound/vox_fem/agent.ogg',
|
||||
"ai" = 'sound/vox_fem/ai.ogg',
|
||||
"air" = 'sound/vox_fem/air.ogg',
|
||||
"airlock" = 'sound/vox_fem/airlock.ogg',
|
||||
"alarm" = 'sound/vox_fem/alarm.ogg',
|
||||
"alarmed" = 'sound/vox_fem/alarmed.ogg',
|
||||
"alarms" = 'sound/vox_fem/alarms.ogg',
|
||||
"alcohol" = 'sound/vox_fem/alcohol.ogg',
|
||||
"alert" = 'sound/vox_fem/alert.ogg',
|
||||
"alerted" = 'sound/vox_fem/alerted.ogg',
|
||||
"alerting" = 'sound/vox_fem/alerting.ogg',
|
||||
"alien" = 'sound/vox_fem/alien.ogg',
|
||||
"aligned" = 'sound/vox_fem/aligned.ogg',
|
||||
"alive" = 'sound/vox_fem/alive.ogg',
|
||||
"all" = 'sound/vox_fem/all.ogg',
|
||||
"alpha" = 'sound/vox_fem/alpha.ogg',
|
||||
"alright" = 'sound/vox_fem/alright.ogg',
|
||||
"always" = 'sound/vox_fem/always.ogg',
|
||||
"am" = 'sound/vox_fem/am.ogg',
|
||||
"amigo" = 'sound/vox_fem/amigo.ogg',
|
||||
"ammunition" = 'sound/vox_fem/ammunition.ogg',
|
||||
@@ -41,9 +58,12 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"andy" = 'sound/vox_fem/andy.ogg',
|
||||
"announcement" = 'sound/vox_fem/announcement.ogg',
|
||||
"anomalous" = 'sound/vox_fem/anomalous.ogg',
|
||||
"anomaly" = 'sound/vox_fem/anomaly.ogg',
|
||||
"another" = 'sound/vox_fem/another.ogg',
|
||||
"antenna" = 'sound/vox_fem/antenna.ogg',
|
||||
"antimov" = 'sound/vox_fem/antimov.ogg',
|
||||
"any" = 'sound/vox_fem/any.ogg',
|
||||
"apc" = 'sound/vox_fem/apc.ogg',
|
||||
"apprehend" = 'sound/vox_fem/apprehend.ogg',
|
||||
"approach" = 'sound/vox_fem/approach.ogg',
|
||||
"are" = 'sound/vox_fem/are.ogg',
|
||||
@@ -56,10 +76,17 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"arrest" = 'sound/vox_fem/arrest.ogg',
|
||||
"arrival" = 'sound/vox_fem/arrival.ogg',
|
||||
"arrivals" = 'sound/vox_fem/arrivals.ogg',
|
||||
"arrived" = 'sound/vox_fem/arrived.ogg',
|
||||
"art" = 'sound/vox_fem/art.ogg',
|
||||
"artifact" = 'sound/vox_fem/artifact.ogg',
|
||||
"artificial" = 'sound/vox_fem/artificial.ogg',
|
||||
"asimov" = 'sound/vox_fem/asimov.ogg',
|
||||
"ass" = 'sound/vox_fem/ass.ogg',
|
||||
"asshole" = 'sound/vox_fem/asshole.ogg',
|
||||
"assholes" = 'sound/vox_fem/assholes.ogg',
|
||||
"assistance" = 'sound/vox_fem/assistance.ogg',
|
||||
"assistant" = 'sound/vox_fem/assistant.ogg',
|
||||
"assistants" = 'sound/vox_fem/assistants.ogg',
|
||||
"at" = 'sound/vox_fem/at.ogg',
|
||||
"atmospherics" = 'sound/vox_fem/atmospherics.ogg',
|
||||
"atomic" = 'sound/vox_fem/atomic.ogg',
|
||||
@@ -67,8 +94,12 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"authorize" = 'sound/vox_fem/authorize.ogg',
|
||||
"authorized" = 'sound/vox_fem/authorized.ogg',
|
||||
"automatic" = 'sound/vox_fem/automatic.ogg',
|
||||
"avenge" = 'sound/vox_fem/avenge.ogg',
|
||||
"avenged" = 'sound/vox_fem/avenged.ogg',
|
||||
"avenging" = 'sound/vox_fem/avenging.ogg',
|
||||
"away" = 'sound/vox_fem/away.ogg',
|
||||
"b" = 'sound/vox_fem/b.ogg',
|
||||
"baby" = 'sound/vox_fem/baby.ogg',
|
||||
"back" = 'sound/vox_fem/back.ogg',
|
||||
"backman" = 'sound/vox_fem/backman.ogg',
|
||||
"bad" = 'sound/vox_fem/bad.ogg',
|
||||
@@ -77,13 +108,27 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"bar" = 'sound/vox_fem/bar.ogg',
|
||||
"barracks" = 'sound/vox_fem/barracks.ogg',
|
||||
"base" = 'sound/vox_fem/base.ogg',
|
||||
"battle" = 'sound/vox_fem/battle.ogg',
|
||||
"battled" = 'sound/vox_fem/battled.ogg',
|
||||
"battles" = 'sound/vox_fem/battles.ogg',
|
||||
"battling" = 'sound/vox_fem/battling.ogg',
|
||||
"bay" = 'sound/vox_fem/bay.ogg',
|
||||
"be" = 'sound/vox_fem/be.ogg',
|
||||
"because" = 'sound/vox_fem/because.ogg',
|
||||
"becoming" = 'sound/vox_fem/becoming.ogg',
|
||||
"been" = 'sound/vox_fem/been.ogg',
|
||||
"before" = 'sound/vox_fem/before.ogg',
|
||||
"being" = 'sound/vox_fem/being.ogg',
|
||||
"believe" = 'sound/vox_fem/believe.ogg',
|
||||
"believed" = 'sound/vox_fem/believed.ogg',
|
||||
"believer" = 'sound/vox_fem/believer.ogg',
|
||||
"believing" = 'sound/vox_fem/believing.ogg',
|
||||
"best" = 'sound/vox_fem/best.ogg',
|
||||
"bested" = 'sound/vox_fem/bested.ogg',
|
||||
"besting" = 'sound/vox_fem/besting.ogg',
|
||||
"between" = 'sound/vox_fem/between.ogg',
|
||||
"beyond" = 'sound/vox_fem/beyond.ogg',
|
||||
"big" = 'sound/vox_fem/big.ogg',
|
||||
"biohazard" = 'sound/vox_fem/biohazard.ogg',
|
||||
"biological" = 'sound/vox_fem/biological.ogg',
|
||||
"biomass" = 'sound/vox_fem/biomass.ogg',
|
||||
@@ -93,14 +138,30 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"bizwarn" = 'sound/vox_fem/bizwarn.ogg',
|
||||
"black" = 'sound/vox_fem/black.ogg',
|
||||
"blast" = 'sound/vox_fem/blast.ogg',
|
||||
"blend" = 'sound/vox_fem/blend.ogg',
|
||||
"blender" = 'sound/vox_fem/blender.ogg',
|
||||
"blending" = 'sound/vox_fem/blending.ogg',
|
||||
"blew" = 'sound/vox_fem/blew.ogg',
|
||||
"blob" = 'sound/vox_fem/blob.ogg',
|
||||
"blocked" = 'sound/vox_fem/blocked.ogg',
|
||||
"bloop" = 'sound/vox_fem/bloop.ogg',
|
||||
"blow" = 'sound/vox_fem/blow.ogg',
|
||||
"blowing" = 'sound/vox_fem/blowing.ogg',
|
||||
"blown" = 'sound/vox_fem/blown.ogg',
|
||||
"blue" = 'sound/vox_fem/blue.ogg',
|
||||
"blueshield" = 'sound/vox_fem/blueshield.ogg',
|
||||
"bluespace" = 'sound/vox_fem/bluespace.ogg',
|
||||
"board" = 'sound/vox_fem/board.ogg',
|
||||
"bodies" = 'sound/vox_fem/bodies.ogg',
|
||||
"body" = 'sound/vox_fem/body.ogg',
|
||||
"bomb" = 'sound/vox_fem/bomb.ogg',
|
||||
"bombs" = 'sound/vox_fem/bombs.ogg',
|
||||
"borer" = 'sound/vox_fem/borer.ogg',
|
||||
"borers" = 'sound/vox_fem/borers.ogg',
|
||||
"boss" = 'sound/vox_fem/boss.ogg',
|
||||
"bossed" = 'sound/vox_fem/bossed.ogg',
|
||||
"bossing" = 'sound/vox_fem/bossing.ogg',
|
||||
"bossy" = 'sound/vox_fem/bossy.ogg',
|
||||
"botanist" = 'sound/vox_fem/botanist.ogg',
|
||||
"botanists" = 'sound/vox_fem/botanists.ogg',
|
||||
"bottom" = 'sound/vox_fem/bottom.ogg',
|
||||
@@ -114,16 +175,22 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"bridge" = 'sound/vox_fem/bridge.ogg',
|
||||
"briefing" = 'sound/vox_fem/briefing.ogg',
|
||||
"brig" = 'sound/vox_fem/brig.ogg',
|
||||
"build" = 'sound/vox_fem/build.ogg',
|
||||
"builder" = 'sound/vox_fem/builder.ogg',
|
||||
"building" = 'sound/vox_fem/building.ogg',
|
||||
"built" = 'sound/vox_fem/built.ogg',
|
||||
"bust" = 'sound/vox_fem/bust.ogg',
|
||||
"but" = 'sound/vox_fem/but.ogg',
|
||||
"button" = 'sound/vox_fem/button.ogg',
|
||||
"buzwarn" = 'sound/vox_fem/buzwarn.ogg',
|
||||
"by" = 'sound/vox_fem/by.ogg',
|
||||
"bypass" = 'sound/vox_fem/bypass.ogg',
|
||||
"c" = 'sound/vox_fem/c.ogg',
|
||||
"cable" = 'sound/vox_fem/cable.ogg',
|
||||
"cage" = 'sound/vox_fem/cage.ogg',
|
||||
"call" = 'sound/vox_fem/call.ogg',
|
||||
"called" = 'sound/vox_fem/called.ogg',
|
||||
"came" = 'sound/vox_fem/came.ogg',
|
||||
"camp" = 'sound/vox_fem/camp.ogg',
|
||||
"can" = 'sound/vox_fem/can.ogg',
|
||||
"canal" = 'sound/vox_fem/canal.ogg',
|
||||
@@ -147,6 +214,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"changelings" = 'sound/vox_fem/changelings.ogg',
|
||||
"changer" = 'sound/vox_fem/changer.ogg',
|
||||
"chapel" = 'sound/vox_fem/chapel.ogg',
|
||||
"chaplain" = 'sound/vox_fem/chaplain.ogg',
|
||||
"charlie" = 'sound/vox_fem/charlie.ogg',
|
||||
"check" = 'sound/vox_fem/check.ogg',
|
||||
"checkpoint" = 'sound/vox_fem/checkpoint.ogg',
|
||||
@@ -154,7 +222,10 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"chefs" = 'sound/vox_fem/chefs.ogg',
|
||||
"chemical" = 'sound/vox_fem/chemical.ogg',
|
||||
"chemist" = 'sound/vox_fem/chemist.ogg',
|
||||
"chemistry" = 'sound/vox_fem/chemistry.ogg',
|
||||
"chemists" = 'sound/vox_fem/chemists.ogg',
|
||||
"chief" = 'sound/vox_fem/chief.ogg',
|
||||
"civilian" = 'sound/vox_fem/civilian.ogg',
|
||||
"cleanup" = 'sound/vox_fem/cleanup.ogg',
|
||||
"clear" = 'sound/vox_fem/clear.ogg',
|
||||
"clearance" = 'sound/vox_fem/clearance.ogg',
|
||||
@@ -168,6 +239,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"collider" = 'sound/vox_fem/collider.ogg',
|
||||
"comdom" = 'sound/vox_fem/comdom.ogg',
|
||||
"come" = 'sound/vox_fem/come.ogg',
|
||||
"coming" = 'sound/vox_fem/coming.ogg',
|
||||
"command" = 'sound/vox_fem/command.ogg',
|
||||
"communication" = 'sound/vox_fem/communication.ogg',
|
||||
"complex" = 'sound/vox_fem/complex.ogg',
|
||||
@@ -182,12 +254,26 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"coolant" = 'sound/vox_fem/coolant.ogg',
|
||||
"coomer" = 'sound/vox_fem/coomer.ogg',
|
||||
"core" = 'sound/vox_fem/core.ogg',
|
||||
"coroner" = 'sound/vox_fem/coroner.ogg',
|
||||
"correct" = 'sound/vox_fem/correct.ogg',
|
||||
"corridor" = 'sound/vox_fem/corridor.ogg',
|
||||
"could" = 'sound/vox_fem/could.ogg',
|
||||
"court" = 'sound/vox_fem/court.ogg',
|
||||
"coward" = 'sound/vox_fem/coward.ogg',
|
||||
"cowards" = 'sound/vox_fem/cowards.ogg',
|
||||
"crate" = 'sound/vox_fem/crate.ogg',
|
||||
"crated" = 'sound/vox_fem/crated.ogg',
|
||||
"crates" = 'sound/vox_fem/crates.ogg',
|
||||
"crating" = 'sound/vox_fem/crating.ogg',
|
||||
"cremate" = 'sound/vox_fem/cremate.ogg',
|
||||
"cremated" = 'sound/vox_fem/cremated.ogg',
|
||||
"cremating" = 'sound/vox_fem/cremating.ogg',
|
||||
"cremation" = 'sound/vox_fem/cremation.ogg',
|
||||
"crematorium" = 'sound/vox_fem/crematorium.ogg',
|
||||
"crew" = 'sound/vox_fem/crew.ogg',
|
||||
"criminal" = 'sound/vox_fem/criminal.ogg',
|
||||
"criminals" = 'sound/vox_fem/criminals.ogg',
|
||||
"critical" = 'sound/vox_fem/critical.ogg',
|
||||
"cross" = 'sound/vox_fem/cross.ogg',
|
||||
"cryogenic" = 'sound/vox_fem/cryogenic.ogg',
|
||||
"cunt" = 'sound/vox_fem/cunt.ogg',
|
||||
@@ -200,17 +286,24 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"damage" = 'sound/vox_fem/damage.ogg',
|
||||
"damaged" = 'sound/vox_fem/damaged.ogg',
|
||||
"danger" = 'sound/vox_fem/danger.ogg',
|
||||
"dangerous" = 'sound/vox_fem/dangerous.ogg',
|
||||
"day" = 'sound/vox_fem/day.ogg',
|
||||
"deactivated" = 'sound/vox_fem/deactivated.ogg',
|
||||
"dead" = 'sound/vox_fem/dead.ogg',
|
||||
"death" = 'sound/vox_fem/death.ogg',
|
||||
"decision" = 'sound/vox_fem/decision.ogg',
|
||||
"declared" = 'sound/vox_fem/declared.ogg',
|
||||
"decompression" = 'sound/vox_fem/decompression.ogg',
|
||||
"decontamination" = 'sound/vox_fem/decontamination.ogg',
|
||||
"deeoo" = 'sound/vox_fem/deeoo.ogg',
|
||||
"defense" = 'sound/vox_fem/defense.ogg',
|
||||
"degrees" = 'sound/vox_fem/degrees.ogg',
|
||||
"delay" = 'sound/vox_fem/delay.ogg',
|
||||
"delayed" = 'sound/vox_fem/delayed.ogg',
|
||||
"delaying" = 'sound/vox_fem/delaying.ogg',
|
||||
"delays" = 'sound/vox_fem/delays.ogg',
|
||||
"delta" = 'sound/vox_fem/delta.ogg',
|
||||
"demon" = 'sound/vox_fem/demon.ogg',
|
||||
"denied" = 'sound/vox_fem/denied.ogg',
|
||||
"department" = 'sound/vox_fem/department.ogg',
|
||||
"departments" = 'sound/vox_fem/departments.ogg',
|
||||
@@ -226,14 +319,20 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"device" = 'sound/vox_fem/device.ogg',
|
||||
"did" = 'sound/vox_fem/did.ogg',
|
||||
"die" = 'sound/vox_fem/die.ogg',
|
||||
"died" = 'sound/vox_fem/died.ogg',
|
||||
"dies" = 'sound/vox_fem/dies.ogg',
|
||||
"dimensional" = 'sound/vox_fem/dimensional.ogg',
|
||||
"diona" = 'sound/vox_fem/diona.ogg',
|
||||
"dirt" = 'sound/vox_fem/dirt.ogg',
|
||||
"disease" = 'sound/vox_fem/disease.ogg',
|
||||
"diseased" = 'sound/vox_fem/diseased.ogg',
|
||||
"diseases" = 'sound/vox_fem/diseases.ogg',
|
||||
"disengaged" = 'sound/vox_fem/disengaged.ogg',
|
||||
"dish" = 'sound/vox_fem/dish.ogg',
|
||||
"disposal" = 'sound/vox_fem/disposal.ogg',
|
||||
"distance" = 'sound/vox_fem/distance.ogg',
|
||||
"distortion" = 'sound/vox_fem/distortion.ogg',
|
||||
"dna" = 'sound/vox_fem/dna.ogg',
|
||||
"do" = 'sound/vox_fem/do.ogg',
|
||||
"dock" = 'sound/vox_fem/dock.ogg',
|
||||
"docked" = 'sound/vox_fem/docked.ogg',
|
||||
@@ -246,9 +345,13 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"dorms" = 'sound/vox_fem/dorms.ogg',
|
||||
"down" = 'sound/vox_fem/down.ogg',
|
||||
"drask" = 'sound/vox_fem/drask.ogg',
|
||||
"drive" = 'sound/vox_fem/drive.ogg',
|
||||
"drived" = 'sound/vox_fem/drived.ogg',
|
||||
"driving" = 'sound/vox_fem/driving.ogg',
|
||||
"drunk" = 'sound/vox_fem/drunk.ogg',
|
||||
"dual" = 'sound/vox_fem/dual.ogg',
|
||||
"duct" = 'sound/vox_fem/duct.ogg',
|
||||
"dying" = 'sound/vox_fem/dying.ogg',
|
||||
"e" = 'sound/vox_fem/e.ogg',
|
||||
"east" = 'sound/vox_fem/east.ogg',
|
||||
"echo" = 'sound/vox_fem/echo.ogg',
|
||||
@@ -281,6 +384,9 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"evacuate" = 'sound/vox_fem/evacuate.ogg',
|
||||
"evacuation" = 'sound/vox_fem/evacuation.ogg',
|
||||
"every" = 'sound/vox_fem/every.ogg',
|
||||
"everybody" = 'sound/vox_fem/everybody.ogg',
|
||||
"everyone" = 'sound/vox_fem/everyone.ogg',
|
||||
"everything" = 'sound/vox_fem/everything.ogg',
|
||||
"everywhere" = 'sound/vox_fem/everywhere.ogg',
|
||||
"exchange" = 'sound/vox_fem/exchange.ogg',
|
||||
"execution" = 'sound/vox_fem/execution.ogg',
|
||||
@@ -303,19 +409,39 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"failure" = 'sound/vox_fem/failure.ogg',
|
||||
"farthest" = 'sound/vox_fem/farthest.ogg',
|
||||
"fast" = 'sound/vox_fem/fast.ogg',
|
||||
"fatal" = 'sound/vox_fem/fatal.ogg',
|
||||
"fatalities" = 'sound/vox_fem/fatalities.ogg',
|
||||
"fatality" = 'sound/vox_fem/fatality.ogg',
|
||||
"fatally" = 'sound/vox_fem/fatally.ogg',
|
||||
"fate" = 'sound/vox_fem/fate.ogg',
|
||||
"feet" = 'sound/vox_fem/feet.ogg',
|
||||
"field" = 'sound/vox_fem/field.ogg',
|
||||
"fifteen" = 'sound/vox_fem/fifteen.ogg',
|
||||
"fifth" = 'sound/vox_fem/fifth.ogg',
|
||||
"fifty" = 'sound/vox_fem/fifty.ogg',
|
||||
"fig" = 'sound/vox_fem/fig.ogg',
|
||||
"figure" = 'sound/vox_fem/figure.ogg',
|
||||
"figured" = 'sound/vox_fem/figured.ogg',
|
||||
"figuring" = 'sound/vox_fem/figuring.ogg',
|
||||
"final" = 'sound/vox_fem/final.ogg',
|
||||
"finally" = 'sound/vox_fem/finally.ogg',
|
||||
"find" = 'sound/vox_fem/find.ogg',
|
||||
"finding" = 'sound/vox_fem/finding.ogg',
|
||||
"fine" = 'sound/vox_fem/fine.ogg',
|
||||
"fire" = 'sound/vox_fem/fire.ogg',
|
||||
"first" = 'sound/vox_fem/first.ogg',
|
||||
"five" = 'sound/vox_fem/five.ogg',
|
||||
"flood" = 'sound/vox_fem/flood.ogg',
|
||||
"flooded" = 'sound/vox_fem/flooded.ogg',
|
||||
"flooding" = 'sound/vox_fem/flooding.ogg',
|
||||
"floods" = 'sound/vox_fem/floods.ogg',
|
||||
"floor" = 'sound/vox_fem/floor.ogg',
|
||||
"floored" = 'sound/vox_fem/floored.ogg',
|
||||
"flooring" = 'sound/vox_fem/flooring.ogg',
|
||||
"food" = 'sound/vox_fem/food.ogg',
|
||||
"foods" = 'sound/vox_fem/foods.ogg',
|
||||
"fool" = 'sound/vox_fem/fool.ogg',
|
||||
"foot" = 'sound/vox_fem/foot.ogg',
|
||||
"for" = 'sound/vox_fem/for.ogg',
|
||||
"forbidden" = 'sound/vox_fem/forbidden.ogg',
|
||||
"force" = 'sound/vox_fem/force.ogg',
|
||||
@@ -332,29 +458,46 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"from" = 'sound/vox_fem/from.ogg',
|
||||
"front" = 'sound/vox_fem/front.ogg',
|
||||
"fuck" = 'sound/vox_fem/fuck.ogg',
|
||||
"fucked" = 'sound/vox_fem/fucked.ogg',
|
||||
"fucking" = 'sound/vox_fem/fucking.ogg',
|
||||
"fucks" = 'sound/vox_fem/fucks.ogg',
|
||||
"fuel" = 'sound/vox_fem/fuel.ogg',
|
||||
"g" = 'sound/vox_fem/g.ogg',
|
||||
"gas" = 'sound/vox_fem/gas.ogg',
|
||||
"gateway" = 'sound/vox_fem/gateway.ogg',
|
||||
"gave" = 'sound/vox_fem/gave.ogg',
|
||||
"generate" = 'sound/vox_fem/generate.ogg',
|
||||
"generated" = 'sound/vox_fem/generated.ogg',
|
||||
"generator" = 'sound/vox_fem/generator.ogg',
|
||||
"get" = 'sound/vox_fem/get.ogg',
|
||||
"give" = 'sound/vox_fem/give.ogg',
|
||||
"given" = 'sound/vox_fem/given.ogg',
|
||||
"giving" = 'sound/vox_fem/giving.ogg',
|
||||
"glory" = 'sound/vox_fem/glory.ogg',
|
||||
"go" = 'sound/vox_fem/go.ogg',
|
||||
"god" = 'sound/vox_fem/god.ogg',
|
||||
"goddess" = 'sound/vox_fem/goddess.ogg',
|
||||
"going" = 'sound/vox_fem/going.ogg',
|
||||
"gone" = 'sound/vox_fem/gone.ogg',
|
||||
"good" = 'sound/vox_fem/good.ogg',
|
||||
"goodbye" = 'sound/vox_fem/goodbye.ogg',
|
||||
"gordon" = 'sound/vox_fem/gordon.ogg',
|
||||
"got" = 'sound/vox_fem/got.ogg',
|
||||
"government" = 'sound/vox_fem/government.ogg',
|
||||
"granted" = 'sound/vox_fem/granted.ogg',
|
||||
"gravity" = 'sound/vox_fem/gravity.ogg',
|
||||
"gray" = 'sound/vox_fem/gray.ogg',
|
||||
"great" = 'sound/vox_fem/great.ogg',
|
||||
"green" = 'sound/vox_fem/green.ogg',
|
||||
"grenade" = 'sound/vox_fem/grenade.ogg',
|
||||
"ground" = 'sound/vox_fem/ground.ogg',
|
||||
"grounded" = 'sound/vox_fem/grounded.ogg',
|
||||
"grounding" = 'sound/vox_fem/grounding.ogg',
|
||||
"guard" = 'sound/vox_fem/guard.ogg',
|
||||
"gulf" = 'sound/vox_fem/gulf.ogg',
|
||||
"gun" = 'sound/vox_fem/gun.ogg',
|
||||
"gunned" = 'sound/vox_fem/gunned.ogg',
|
||||
"guns" = 'sound/vox_fem/guns.ogg',
|
||||
"guthrie" = 'sound/vox_fem/guthrie.ogg',
|
||||
"h" = 'sound/vox_fem/h.ogg',
|
||||
"hacker" = 'sound/vox_fem/hacker.ogg',
|
||||
@@ -362,16 +505,26 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"hacking" = 'sound/vox_fem/hacking.ogg',
|
||||
"hail" = 'sound/vox_fem/hail.ogg',
|
||||
"hallway" = 'sound/vox_fem/hallway.ogg',
|
||||
"hand" = 'sound/vox_fem/hand.ogg',
|
||||
"handle" = 'sound/vox_fem/handle.ogg',
|
||||
"handled" = 'sound/vox_fem/handled.ogg',
|
||||
"handling" = 'sound/vox_fem/handling.ogg',
|
||||
"hangar" = 'sound/vox_fem/hangar.ogg',
|
||||
"happening" = 'sound/vox_fem/happening.ogg',
|
||||
"happy" = 'sound/vox_fem/happy.ogg',
|
||||
"harm" = 'sound/vox_fem/harm.ogg',
|
||||
"has" = 'sound/vox_fem/has.ogg',
|
||||
"have" = 'sound/vox_fem/have.ogg',
|
||||
"hazard" = 'sound/vox_fem/hazard.ogg',
|
||||
"he" = 'sound/vox_fem/he.ogg',
|
||||
"head" = 'sound/vox_fem/head.ogg',
|
||||
"health" = 'sound/vox_fem/health.ogg',
|
||||
"hear" = 'sound/vox_fem/hear.ogg',
|
||||
"heard" = 'sound/vox_fem/heard.ogg',
|
||||
"hearing" = 'sound/vox_fem/hearing.ogg',
|
||||
"heart" = 'sound/vox_fem/heart.ogg',
|
||||
"heat" = 'sound/vox_fem/heat.ogg',
|
||||
"held" = 'sound/vox_fem/held.ogg',
|
||||
"helicopter" = 'sound/vox_fem/helicopter.ogg',
|
||||
"helium" = 'sound/vox_fem/helium.ogg',
|
||||
"hello" = 'sound/vox_fem/hello.ogg',
|
||||
@@ -381,16 +534,24 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"high" = 'sound/vox_fem/high.ogg',
|
||||
"highest" = 'sound/vox_fem/highest.ogg',
|
||||
"hit" = 'sound/vox_fem/hit.ogg',
|
||||
"hold" = 'sound/vox_fem/hold.ogg',
|
||||
"holding" = 'sound/vox_fem/holding.ogg',
|
||||
"hole" = 'sound/vox_fem/hole.ogg',
|
||||
"holoparasite" = 'sound/vox_fem/holoparasite.ogg',
|
||||
"honk" = 'sound/vox_fem/honk.ogg',
|
||||
"hop" = 'sound/vox_fem/hop.ogg',
|
||||
"hope" = 'sound/vox_fem/hope.ogg',
|
||||
"hoped" = 'sound/vox_fem/hoped.ogg',
|
||||
"hos" = 'sound/vox_fem/hos.ogg',
|
||||
"hostile" = 'sound/vox_fem/hostile.ogg',
|
||||
"hot" = 'sound/vox_fem/hot.ogg',
|
||||
"hotel" = 'sound/vox_fem/hotel.ogg',
|
||||
"hour" = 'sound/vox_fem/hour.ogg',
|
||||
"hours" = 'sound/vox_fem/hours.ogg',
|
||||
"how" = 'sound/vox_fem/how.ogg',
|
||||
"hug" = 'sound/vox_fem/hug.ogg',
|
||||
"hugged" = 'sound/vox_fem/hugged.ogg',
|
||||
"hugging" = 'sound/vox_fem/hugging.ogg',
|
||||
"hull" = 'sound/vox_fem/hull.ogg',
|
||||
"human" = 'sound/vox_fem/human.ogg',
|
||||
"humans" = 'sound/vox_fem/humans.ogg',
|
||||
@@ -401,19 +562,35 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"i" = 'sound/vox_fem/i.ogg',
|
||||
"iaa" = 'sound/vox_fem/iaa.ogg',
|
||||
"ian" = 'sound/vox_fem/ian.ogg',
|
||||
"idea" = 'sound/vox_fem/idea.ogg',
|
||||
"identified" = 'sound/vox_fem/identified.ogg',
|
||||
"identify" = 'sound/vox_fem/identify.ogg',
|
||||
"identity" = 'sound/vox_fem/identity.ogg',
|
||||
"idiot" = 'sound/vox_fem/idiot.ogg',
|
||||
"illegal" = 'sound/vox_fem/illegal.ogg',
|
||||
"immediate" = 'sound/vox_fem/immediate.ogg',
|
||||
"immediately" = 'sound/vox_fem/immediately.ogg',
|
||||
"imminent" = 'sound/vox_fem/imminent.ogg',
|
||||
"implant" = 'sound/vox_fem/implant.ogg',
|
||||
"implanted" = 'sound/vox_fem/implanted.ogg',
|
||||
"implanting" = 'sound/vox_fem/implanting.ogg',
|
||||
"implants" = 'sound/vox_fem/implants.ogg',
|
||||
"in" = 'sound/vox_fem/in.ogg',
|
||||
"inch" = 'sound/vox_fem/inch.ogg',
|
||||
"inches" = 'sound/vox_fem/inches.ogg',
|
||||
"india" = 'sound/vox_fem/india.ogg',
|
||||
"infect" = 'sound/vox_fem/infect.ogg',
|
||||
"infected" = 'sound/vox_fem/infected.ogg',
|
||||
"infection" = 'sound/vox_fem/infection.ogg',
|
||||
"infections" = 'sound/vox_fem/infections.ogg',
|
||||
"ing" = 'sound/vox_fem/ing.ogg',
|
||||
"injured" = 'sound/vox_fem/injured.ogg',
|
||||
"inoperative" = 'sound/vox_fem/inoperative.ogg',
|
||||
"inside" = 'sound/vox_fem/inside.ogg',
|
||||
"inspection" = 'sound/vox_fem/inspection.ogg',
|
||||
"inspector" = 'sound/vox_fem/inspector.ogg',
|
||||
"intelligence" = 'sound/vox_fem/intelligence.ogg',
|
||||
"intelligent" = 'sound/vox_fem/intelligent.ogg',
|
||||
"interchange" = 'sound/vox_fem/interchange.ogg',
|
||||
"interested" = 'sound/vox_fem/interested.ogg',
|
||||
"intruder" = 'sound/vox_fem/intruder.ogg',
|
||||
@@ -423,8 +600,11 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"is" = 'sound/vox_fem/is.ogg',
|
||||
"it" = 'sound/vox_fem/it.ogg',
|
||||
"j" = 'sound/vox_fem/j.ogg',
|
||||
"job" = 'sound/vox_fem/job.ogg',
|
||||
"jobs" = 'sound/vox_fem/jobs.ogg',
|
||||
"johnson" = 'sound/vox_fem/johnson.ogg',
|
||||
"juliet" = 'sound/vox_fem/juliet.ogg',
|
||||
"just" = 'sound/vox_fem/just.ogg',
|
||||
"k" = 'sound/vox_fem/k.ogg',
|
||||
"key" = 'sound/vox_fem/key.ogg',
|
||||
"kida" = 'sound/vox_fem/kida.ogg',
|
||||
@@ -439,6 +619,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"lab" = 'sound/vox_fem/lab.ogg',
|
||||
"labor" = 'sound/vox_fem/labor.ogg',
|
||||
"lambda" = 'sound/vox_fem/lambda.ogg',
|
||||
"larva" = 'sound/vox_fem/larva.ogg',
|
||||
"laser" = 'sound/vox_fem/laser.ogg',
|
||||
"last" = 'sound/vox_fem/last.ogg',
|
||||
"launch" = 'sound/vox_fem/launch.ogg',
|
||||
@@ -447,6 +628,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"lawyer" = 'sound/vox_fem/lawyer.ogg',
|
||||
"leak" = 'sound/vox_fem/leak.ogg',
|
||||
"leave" = 'sound/vox_fem/leave.ogg',
|
||||
"leaving" = 'sound/vox_fem/leaving.ogg',
|
||||
"left" = 'sound/vox_fem/left.ogg',
|
||||
"legal" = 'sound/vox_fem/legal.ogg',
|
||||
"level" = 'sound/vox_fem/level.ogg',
|
||||
@@ -456,10 +638,18 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"lieutenant" = 'sound/vox_fem/lieutenant.ogg',
|
||||
"life" = 'sound/vox_fem/life.ogg',
|
||||
"light" = 'sound/vox_fem/light.ogg',
|
||||
"like" = 'sound/vox_fem/like.ogg',
|
||||
"liked" = 'sound/vox_fem/liked.ogg',
|
||||
"liking" = 'sound/vox_fem/liking.ogg',
|
||||
"lima" = 'sound/vox_fem/lima.ogg',
|
||||
"ling" = 'sound/vox_fem/ling.ogg',
|
||||
"liquid" = 'sound/vox_fem/liquid.ogg',
|
||||
"live" = 'sound/vox_fem/live.ogg',
|
||||
"lived" = 'sound/vox_fem/lived.ogg',
|
||||
"living" = 'sound/vox_fem/living.ogg',
|
||||
"lizard" = 'sound/vox_fem/lizard.ogg',
|
||||
"loading" = 'sound/vox_fem/loading.ogg',
|
||||
"lobby" = 'sound/vox_fem/lobby.ogg',
|
||||
"locate" = 'sound/vox_fem/locate.ogg',
|
||||
"located" = 'sound/vox_fem/located.ogg',
|
||||
"location" = 'sound/vox_fem/location.ogg',
|
||||
@@ -469,30 +659,49 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"lockout" = 'sound/vox_fem/lockout.ogg',
|
||||
"loose" = 'sound/vox_fem/loose.ogg',
|
||||
"love" = 'sound/vox_fem/love.ogg',
|
||||
"loved" = 'sound/vox_fem/loved.ogg',
|
||||
"loving" = 'sound/vox_fem/loving.ogg',
|
||||
"lower" = 'sound/vox_fem/lower.ogg',
|
||||
"lowest" = 'sound/vox_fem/lowest.ogg',
|
||||
"m" = 'sound/vox_fem/m.ogg',
|
||||
"made" = 'sound/vox_fem/made.ogg',
|
||||
"magic" = 'sound/vox_fem/magic.ogg',
|
||||
"magician" = 'sound/vox_fem/magician.ogg',
|
||||
"magicians" = 'sound/vox_fem/magicians.ogg',
|
||||
"magistrate" = 'sound/vox_fem/magistrate.ogg',
|
||||
"magnetic" = 'sound/vox_fem/magnetic.ogg',
|
||||
"main" = 'sound/vox_fem/main.ogg',
|
||||
"maintenance" = 'sound/vox_fem/maintenance.ogg',
|
||||
"make" = 'sound/vox_fem/make.ogg',
|
||||
"maker" = 'sound/vox_fem/maker.ogg',
|
||||
"making" = 'sound/vox_fem/making.ogg',
|
||||
"malf" = 'sound/vox_fem/malf.ogg',
|
||||
"malfunction" = 'sound/vox_fem/malfunction.ogg',
|
||||
"malfunctioning" = 'sound/vox_fem/malfunctioning.ogg',
|
||||
"man" = 'sound/vox_fem/man.ogg',
|
||||
"many" = 'sound/vox_fem/many.ogg',
|
||||
"mass" = 'sound/vox_fem/mass.ogg',
|
||||
"materials" = 'sound/vox_fem/materials.ogg',
|
||||
"maximum" = 'sound/vox_fem/maximum.ogg',
|
||||
"may" = 'sound/vox_fem/may.ogg',
|
||||
"maybe" = 'sound/vox_fem/maybe.ogg',
|
||||
"me" = 'sound/vox_fem/me.ogg',
|
||||
"mean" = 'sound/vox_fem/mean.ogg',
|
||||
"meaning" = 'sound/vox_fem/meaning.ogg',
|
||||
"meant" = 'sound/vox_fem/meant.ogg',
|
||||
"medbay" = 'sound/vox_fem/medbay.ogg',
|
||||
"medical" = 'sound/vox_fem/medical.ogg',
|
||||
"member" = 'sound/vox_fem/member.ogg',
|
||||
"members" = 'sound/vox_fem/members.ogg',
|
||||
"men" = 'sound/vox_fem/men.ogg',
|
||||
"mercy" = 'sound/vox_fem/mercy.ogg',
|
||||
"mesa" = 'sound/vox_fem/mesa.ogg',
|
||||
"message" = 'sound/vox_fem/message.ogg',
|
||||
"meter" = 'sound/vox_fem/meter.ogg',
|
||||
"mice" = 'sound/vox_fem/mice.ogg',
|
||||
"micro" = 'sound/vox_fem/micro.ogg',
|
||||
"middle" = 'sound/vox_fem/middle.ogg',
|
||||
"might" = 'sound/vox_fem/might.ogg',
|
||||
"mike" = 'sound/vox_fem/mike.ogg',
|
||||
"miles" = 'sound/vox_fem/miles.ogg',
|
||||
"military" = 'sound/vox_fem/military.ogg',
|
||||
@@ -513,15 +722,25 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"money" = 'sound/vox_fem/money.ogg',
|
||||
"monkey" = 'sound/vox_fem/monkey.ogg',
|
||||
"monkeys" = 'sound/vox_fem/monkeys.ogg',
|
||||
"morgue" = 'sound/vox_fem/morgue.ogg',
|
||||
"motor" = 'sound/vox_fem/motor.ogg',
|
||||
"motorpool" = 'sound/vox_fem/motorpool.ogg',
|
||||
"mouse" = 'sound/vox_fem/mouse.ogg',
|
||||
"move" = 'sound/vox_fem/move.ogg',
|
||||
"must" = 'sound/vox_fem/must.ogg',
|
||||
"my" = 'sound/vox_fem/my.ogg',
|
||||
"n" = 'sound/vox_fem/n.ogg',
|
||||
"n2o" = 'sound/vox_fem/n2o.ogg',
|
||||
"nanny" = 'sound/vox_fem/nanny.ogg',
|
||||
"nanotrasen" = 'sound/vox_fem/nanotrasen.ogg',
|
||||
"naughty" = 'sound/vox_fem/naughty.ogg',
|
||||
"near" = 'sound/vox_fem/near.ogg',
|
||||
"nearest" = 'sound/vox_fem/nearest.ogg',
|
||||
"nearing" = 'sound/vox_fem/nearing.ogg',
|
||||
"need" = 'sound/vox_fem/need.ogg',
|
||||
"needed" = 'sound/vox_fem/needed.ogg',
|
||||
"needing" = 'sound/vox_fem/needing.ogg',
|
||||
"needy" = 'sound/vox_fem/needy.ogg',
|
||||
"negative" = 'sound/vox_fem/negative.ogg',
|
||||
"nice" = 'sound/vox_fem/nice.ogg',
|
||||
"nine" = 'sound/vox_fem/nine.ogg',
|
||||
@@ -533,20 +752,31 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"nominal" = 'sound/vox_fem/nominal.ogg',
|
||||
"north" = 'sound/vox_fem/north.ogg',
|
||||
"not" = 'sound/vox_fem/not.ogg',
|
||||
"notified" = 'sound/vox_fem/notified.ogg',
|
||||
"notify" = 'sound/vox_fem/notify.ogg',
|
||||
"november" = 'sound/vox_fem/november.ogg',
|
||||
"now" = 'sound/vox_fem/now.ogg',
|
||||
"nuke" = 'sound/vox_fem/nuke.ogg',
|
||||
"number" = 'sound/vox_fem/number.ogg',
|
||||
"nurse" = 'sound/vox_fem/nurse.ogg',
|
||||
"o" = 'sound/vox_fem/o.ogg',
|
||||
"objective" = 'sound/vox_fem/objective.ogg',
|
||||
"observation" = 'sound/vox_fem/observation.ogg',
|
||||
"obtain" = 'sound/vox_fem/obtain.ogg',
|
||||
"of" = 'sound/vox_fem/of.ogg',
|
||||
"offer" = 'sound/vox_fem/offer.ogg',
|
||||
"offered" = 'sound/vox_fem/offered.ogg',
|
||||
"offering" = 'sound/vox_fem/offering.ogg',
|
||||
"offers" = 'sound/vox_fem/offers.ogg',
|
||||
"office" = 'sound/vox_fem/office.ogg',
|
||||
"officer" = 'sound/vox_fem/officer.ogg',
|
||||
"officers" = 'sound/vox_fem/officers.ogg',
|
||||
"offline" = 'sound/vox_fem/offline.ogg',
|
||||
"ok" = 'sound/vox_fem/ok.ogg',
|
||||
"okay" = 'sound/vox_fem/okay.ogg',
|
||||
"on" = 'sound/vox_fem/on.ogg',
|
||||
"one" = 'sound/vox_fem/one.ogg',
|
||||
"only" = 'sound/vox_fem/only.ogg',
|
||||
"op" = 'sound/vox_fem/op.ogg',
|
||||
"open" = 'sound/vox_fem/open.ogg',
|
||||
"operating" = 'sound/vox_fem/operating.ogg',
|
||||
@@ -559,16 +789,26 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"order" = 'sound/vox_fem/order.ogg',
|
||||
"organic" = 'sound/vox_fem/organic.ogg',
|
||||
"oscar" = 'sound/vox_fem/oscar.ogg',
|
||||
"other" = 'sound/vox_fem/other.ogg',
|
||||
"others" = 'sound/vox_fem/others.ogg',
|
||||
"ouch" = 'sound/vox_fem/ouch.ogg',
|
||||
"out" = 'sound/vox_fem/out.ogg',
|
||||
"outside" = 'sound/vox_fem/outside.ogg',
|
||||
"over" = 'sound/vox_fem/over.ogg',
|
||||
"overload" = 'sound/vox_fem/overload.ogg',
|
||||
"override" = 'sound/vox_fem/override.ogg',
|
||||
"p" = 'sound/vox_fem/p.ogg',
|
||||
"pacifist" = 'sound/vox_fem/pacifist.ogg',
|
||||
"pacify" = 'sound/vox_fem/pacify.ogg',
|
||||
"pain" = 'sound/vox_fem/pain.ogg',
|
||||
"pal" = 'sound/vox_fem/pal.ogg',
|
||||
"panel" = 'sound/vox_fem/panel.ogg',
|
||||
"paramedic" = 'sound/vox_fem/paramedic.ogg',
|
||||
"pass" = 'sound/vox_fem/pass.ogg',
|
||||
"passed" = 'sound/vox_fem/passed.ogg',
|
||||
"passes" = 'sound/vox_fem/passes.ogg',
|
||||
"passing" = 'sound/vox_fem/passing.ogg',
|
||||
"passive" = 'sound/vox_fem/passive.ogg',
|
||||
"percent" = 'sound/vox_fem/percent.ogg',
|
||||
"perimeter" = 'sound/vox_fem/perimeter.ogg',
|
||||
"permitted" = 'sound/vox_fem/permitted.ogg',
|
||||
@@ -576,8 +816,12 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"pipe" = 'sound/vox_fem/pipe.ogg',
|
||||
"plant" = 'sound/vox_fem/plant.ogg',
|
||||
"plasma" = 'sound/vox_fem/plasma.ogg',
|
||||
"plasmaman" = 'sound/vox_fem/plasmaman.ogg',
|
||||
"plasmamen" = 'sound/vox_fem/plasmamen.ogg',
|
||||
"plastic" = 'sound/vox_fem/plastic.ogg',
|
||||
"platform" = 'sound/vox_fem/platform.ogg',
|
||||
"please" = 'sound/vox_fem/please.ogg',
|
||||
"pleasure" = 'sound/vox_fem/pleasure.ogg',
|
||||
"pod" = 'sound/vox_fem/pod.ogg',
|
||||
"pods" = 'sound/vox_fem/pods.ogg',
|
||||
"point" = 'sound/vox_fem/point.ogg',
|
||||
@@ -595,6 +839,9 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"propulsion" = 'sound/vox_fem/propulsion.ogg',
|
||||
"prosecute" = 'sound/vox_fem/prosecute.ogg',
|
||||
"protective" = 'sound/vox_fem/protective.ogg',
|
||||
"pull" = 'sound/vox_fem/pull.ogg',
|
||||
"pulled" = 'sound/vox_fem/pulled.ogg',
|
||||
"pulling" = 'sound/vox_fem/pulling.ogg',
|
||||
"pun" = 'sound/vox_fem/pun.ogg',
|
||||
"push" = 'sound/vox_fem/push.ogg',
|
||||
"q" = 'sound/vox_fem/q.ogg',
|
||||
@@ -606,6 +853,7 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"question" = 'sound/vox_fem/question.ogg',
|
||||
"questioning" = 'sound/vox_fem/questioning.ogg',
|
||||
"quick" = 'sound/vox_fem/quick.ogg',
|
||||
"quickly" = 'sound/vox_fem/quickly.ogg',
|
||||
"quit" = 'sound/vox_fem/quit.ogg',
|
||||
"r" = 'sound/vox_fem/r.ogg',
|
||||
"radiation" = 'sound/vox_fem/radiation.ogg',
|
||||
@@ -619,10 +867,17 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"reach" = 'sound/vox_fem/reach.ogg',
|
||||
"reached" = 'sound/vox_fem/reached.ogg',
|
||||
"reactor" = 'sound/vox_fem/reactor.ogg',
|
||||
"real" = 'sound/vox_fem/real.ogg',
|
||||
"reality" = 'sound/vox_fem/reality.ogg',
|
||||
"reboot" = 'sound/vox_fem/reboot.ogg',
|
||||
"rebooted" = 'sound/vox_fem/rebooted.ogg',
|
||||
"rebooting" = 'sound/vox_fem/rebooting.ogg',
|
||||
"recommend" = 'sound/vox_fem/recommend.ogg',
|
||||
"red" = 'sound/vox_fem/red.ogg',
|
||||
"relay" = 'sound/vox_fem/relay.ogg',
|
||||
"release" = 'sound/vox_fem/release.ogg',
|
||||
"released" = 'sound/vox_fem/released.ogg',
|
||||
"releasing" = 'sound/vox_fem/releasing.ogg',
|
||||
"remaining" = 'sound/vox_fem/remaining.ogg',
|
||||
"removal" = 'sound/vox_fem/removal.ogg',
|
||||
"renault" = 'sound/vox_fem/renault.ogg',
|
||||
@@ -638,7 +893,11 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"resevoir" = 'sound/vox_fem/resevoir.ogg',
|
||||
"resistance" = 'sound/vox_fem/resistance.ogg',
|
||||
"respond" = 'sound/vox_fem/respond.ogg',
|
||||
"responded" = 'sound/vox_fem/responded.ogg',
|
||||
"response" = 'sound/vox_fem/response.ogg',
|
||||
"rest" = 'sound/vox_fem/rest.ogg',
|
||||
"revenant" = 'sound/vox_fem/revenant.ogg',
|
||||
"revenge" = 'sound/vox_fem/revenge.ogg',
|
||||
"right" = 'sound/vox_fem/right.ogg',
|
||||
"roboticist" = 'sound/vox_fem/roboticist.ogg',
|
||||
"robotics" = 'sound/vox_fem/robotics.ogg',
|
||||
@@ -651,13 +910,23 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"run" = 'sound/vox_fem/run.ogg',
|
||||
"runtime" = 'sound/vox_fem/runtime.ogg',
|
||||
"s" = 'sound/vox_fem/s.ogg',
|
||||
"sad" = 'sound/vox_fem/sad.ogg',
|
||||
"saddened" = 'sound/vox_fem/saddened.ogg',
|
||||
"saddening" = 'sound/vox_fem/saddening.ogg',
|
||||
"safe" = 'sound/vox_fem/safe.ogg',
|
||||
"safety" = 'sound/vox_fem/safety.ogg',
|
||||
"said" = 'sound/vox_fem/said.ogg',
|
||||
"sarah" = 'sound/vox_fem/sarah.ogg',
|
||||
"sargeant" = 'sound/vox_fem/sargeant.ogg',
|
||||
"sat" = 'sound/vox_fem/sat.ogg',
|
||||
"satellite" = 'sound/vox_fem/satellite.ogg',
|
||||
"save" = 'sound/vox_fem/save.ogg',
|
||||
"saved" = 'sound/vox_fem/saved.ogg',
|
||||
"say" = 'sound/vox_fem/say.ogg',
|
||||
"saying" = 'sound/vox_fem/saying.ogg',
|
||||
"science" = 'sound/vox_fem/science.ogg',
|
||||
"scientist" = 'sound/vox_fem/scientist.ogg',
|
||||
"scientists" = 'sound/vox_fem/scientists.ogg',
|
||||
"scream" = 'sound/vox_fem/scream.ogg',
|
||||
"screen" = 'sound/vox_fem/screen.ogg',
|
||||
"scrubbers" = 'sound/vox_fem/scrubbers.ogg',
|
||||
@@ -671,16 +940,33 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"security" = 'sound/vox_fem/security.ogg',
|
||||
"select" = 'sound/vox_fem/select.ogg',
|
||||
"selected" = 'sound/vox_fem/selected.ogg',
|
||||
"sell" = 'sound/vox_fem/sell.ogg',
|
||||
"selling" = 'sound/vox_fem/selling.ogg',
|
||||
"sense" = 'sound/vox_fem/sense.ogg',
|
||||
"sensed" = 'sound/vox_fem/sensed.ogg',
|
||||
"sensing" = 'sound/vox_fem/sensing.ogg',
|
||||
"sensitive" = 'sound/vox_fem/sensitive.ogg',
|
||||
"sensitivity" = 'sound/vox_fem/sensitivity.ogg',
|
||||
"sensors" = 'sound/vox_fem/sensors.ogg',
|
||||
"sequencer" = 'sound/vox_fem/sequencer.ogg',
|
||||
"server" = 'sound/vox_fem/server.ogg',
|
||||
"servers" = 'sound/vox_fem/servers.ogg',
|
||||
"service" = 'sound/vox_fem/service.ogg',
|
||||
"serviced" = 'sound/vox_fem/serviced.ogg',
|
||||
"servicing" = 'sound/vox_fem/servicing.ogg',
|
||||
"seven" = 'sound/vox_fem/seven.ogg',
|
||||
"seventeen" = 'sound/vox_fem/seventeen.ogg',
|
||||
"seventy" = 'sound/vox_fem/seventy.ogg',
|
||||
"severe" = 'sound/vox_fem/severe.ogg',
|
||||
"sewage" = 'sound/vox_fem/sewage.ogg',
|
||||
"sewer" = 'sound/vox_fem/sewer.ogg',
|
||||
"shadow" = 'sound/vox_fem/shadow.ogg',
|
||||
"shadowling" = 'sound/vox_fem/shadowling.ogg',
|
||||
"shadowlings" = 'sound/vox_fem/shadowlings.ogg',
|
||||
"she" = 'sound/vox_fem/she.ogg',
|
||||
"shield" = 'sound/vox_fem/shield.ogg',
|
||||
"shielded" = 'sound/vox_fem/shielded.ogg',
|
||||
"shielding" = 'sound/vox_fem/shielding.ogg',
|
||||
"shipment" = 'sound/vox_fem/shipment.ogg',
|
||||
"shirt" = 'sound/vox_fem/shirt.ogg',
|
||||
"shirts" = 'sound/vox_fem/shirts.ogg',
|
||||
@@ -691,7 +977,11 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"shitting" = 'sound/vox_fem/shitting.ogg',
|
||||
"shock" = 'sound/vox_fem/shock.ogg',
|
||||
"shoot" = 'sound/vox_fem/shoot.ogg',
|
||||
"should" = 'sound/vox_fem/should.ogg',
|
||||
"shower" = 'sound/vox_fem/shower.ogg',
|
||||
"shrug" = 'sound/vox_fem/shrug.ogg',
|
||||
"shrugged" = 'sound/vox_fem/shrugged.ogg',
|
||||
"shrugging" = 'sound/vox_fem/shrugging.ogg',
|
||||
"shut" = 'sound/vox_fem/shut.ogg',
|
||||
"shuttle" = 'sound/vox_fem/shuttle.ogg',
|
||||
"side" = 'sound/vox_fem/side.ogg',
|
||||
@@ -699,6 +989,8 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"sight" = 'sound/vox_fem/sight.ogg',
|
||||
"silo" = 'sound/vox_fem/silo.ogg',
|
||||
"singularity" = 'sound/vox_fem/singularity.ogg',
|
||||
"sit" = 'sound/vox_fem/sit.ogg',
|
||||
"sitting" = 'sound/vox_fem/sitting.ogg',
|
||||
"six" = 'sound/vox_fem/six.ogg',
|
||||
"sixteen" = 'sound/vox_fem/sixteen.ogg',
|
||||
"sixty" = 'sound/vox_fem/sixty.ogg',
|
||||
@@ -709,18 +1001,25 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"slime" = 'sound/vox_fem/slime.ogg',
|
||||
"slow" = 'sound/vox_fem/slow.ogg',
|
||||
"smoke" = 'sound/vox_fem/smoke.ogg',
|
||||
"so" = 'sound/vox_fem/so.ogg',
|
||||
"solar" = 'sound/vox_fem/solar.ogg',
|
||||
"solars" = 'sound/vox_fem/solars.ogg',
|
||||
"sold" = 'sound/vox_fem/sold.ogg',
|
||||
"soldier" = 'sound/vox_fem/soldier.ogg',
|
||||
"some" = 'sound/vox_fem/some.ogg',
|
||||
"someone" = 'sound/vox_fem/someone.ogg',
|
||||
"something" = 'sound/vox_fem/something.ogg',
|
||||
"son" = 'sound/vox_fem/son.ogg',
|
||||
"soon" = 'sound/vox_fem/soon.ogg',
|
||||
"sorry" = 'sound/vox_fem/sorry.ogg',
|
||||
"south" = 'sound/vox_fem/south.ogg',
|
||||
"space" = 'sound/vox_fem/space.ogg',
|
||||
"speak" = 'sound/vox_fem/speak.ogg',
|
||||
"speaking" = 'sound/vox_fem/speaking.ogg',
|
||||
"spider" = 'sound/vox_fem/spider.ogg',
|
||||
"spiders" = 'sound/vox_fem/spiders.ogg',
|
||||
"spoke" = 'sound/vox_fem/spoke.ogg',
|
||||
"spoken" = 'sound/vox_fem/spoken.ogg',
|
||||
"squad" = 'sound/vox_fem/squad.ogg',
|
||||
"square" = 'sound/vox_fem/square.ogg',
|
||||
"ss13" = 'sound/vox_fem/ss13.ogg',
|
||||
@@ -728,22 +1027,33 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"starboard" = 'sound/vox_fem/starboard.ogg',
|
||||
"station" = 'sound/vox_fem/station.ogg',
|
||||
"stations" = 'sound/vox_fem/stations.ogg',
|
||||
"statue" = 'sound/vox_fem/statue.ogg',
|
||||
"status" = 'sound/vox_fem/status.ogg',
|
||||
"sterile" = 'sound/vox_fem/sterile.ogg',
|
||||
"sterilization" = 'sound/vox_fem/sterilization.ogg',
|
||||
"still" = 'sound/vox_fem/still.ogg',
|
||||
"storage" = 'sound/vox_fem/storage.ogg',
|
||||
"strong" = 'sound/vox_fem/strong.ogg',
|
||||
"stuck" = 'sound/vox_fem/stuck.ogg',
|
||||
"stuff" = 'sound/vox_fem/stuff.ogg',
|
||||
"stuffed" = 'sound/vox_fem/stuffed.ogg',
|
||||
"stuffing" = 'sound/vox_fem/stuffing.ogg',
|
||||
"stupid" = 'sound/vox_fem/stupid.ogg',
|
||||
"sub" = 'sound/vox_fem/sub.ogg',
|
||||
"subject" = 'sound/vox_fem/subject.ogg',
|
||||
"subjected" = 'sound/vox_fem/subjected.ogg',
|
||||
"subjecting" = 'sound/vox_fem/subjecting.ogg',
|
||||
"subsurface" = 'sound/vox_fem/subsurface.ogg',
|
||||
"sudden" = 'sound/vox_fem/sudden.ogg',
|
||||
"suffer" = 'sound/vox_fem/suffer.ogg',
|
||||
"suffering" = 'sound/vox_fem/suffering.ogg',
|
||||
"suit" = 'sound/vox_fem/suit.ogg',
|
||||
"suited" = 'sound/vox_fem/suited.ogg',
|
||||
"suiting" = 'sound/vox_fem/suiting.ogg',
|
||||
"superconducting" = 'sound/vox_fem/superconducting.ogg',
|
||||
"supercooled" = 'sound/vox_fem/supercooled.ogg',
|
||||
"supply" = 'sound/vox_fem/supply.ogg',
|
||||
"sure" = 'sound/vox_fem/sure.ogg',
|
||||
"surface" = 'sound/vox_fem/surface.ogg',
|
||||
"surrender" = 'sound/vox_fem/surrender.ogg',
|
||||
"surround" = 'sound/vox_fem/surround.ogg',
|
||||
@@ -759,17 +1069,26 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"tactical" = 'sound/vox_fem/tactical.ogg',
|
||||
"tajaran" = 'sound/vox_fem/tajaran.ogg',
|
||||
"take" = 'sound/vox_fem/take.ogg',
|
||||
"taken" = 'sound/vox_fem/taken.ogg',
|
||||
"talk" = 'sound/vox_fem/talk.ogg',
|
||||
"tango" = 'sound/vox_fem/tango.ogg',
|
||||
"tank" = 'sound/vox_fem/tank.ogg',
|
||||
"target" = 'sound/vox_fem/target.ogg',
|
||||
"taze" = 'sound/vox_fem/taze.ogg',
|
||||
"tazed" = 'sound/vox_fem/tazed.ogg',
|
||||
"tazer" = 'sound/vox_fem/tazer.ogg',
|
||||
"tazing" = 'sound/vox_fem/tazing.ogg',
|
||||
"team" = 'sound/vox_fem/team.ogg',
|
||||
"tech" = 'sound/vox_fem/tech.ogg',
|
||||
"technician" = 'sound/vox_fem/technician.ogg',
|
||||
"technicians" = 'sound/vox_fem/technicians.ogg',
|
||||
"technology" = 'sound/vox_fem/technology.ogg',
|
||||
"telecomms" = 'sound/vox_fem/telecomms.ogg',
|
||||
"teleport" = 'sound/vox_fem/teleport.ogg',
|
||||
"teleported" = 'sound/vox_fem/teleported.ogg',
|
||||
"teleporter" = 'sound/vox_fem/teleporter.ogg',
|
||||
"teleporting" = 'sound/vox_fem/teleporting.ogg',
|
||||
"tell" = 'sound/vox_fem/tell.ogg',
|
||||
"temperature" = 'sound/vox_fem/temperature.ogg',
|
||||
"temporal" = 'sound/vox_fem/temporal.ogg',
|
||||
"ten" = 'sound/vox_fem/ten.ogg',
|
||||
@@ -778,15 +1097,23 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"termination" = 'sound/vox_fem/termination.ogg',
|
||||
"tesla" = 'sound/vox_fem/tesla.ogg',
|
||||
"test" = 'sound/vox_fem/test.ogg',
|
||||
"thank" = 'sound/vox_fem/thank.ogg',
|
||||
"thanked" = 'sound/vox_fem/thanked.ogg',
|
||||
"thanks" = 'sound/vox_fem/thanks.ogg',
|
||||
"that" = 'sound/vox_fem/that.ogg',
|
||||
"the" = 'sound/vox_fem/the.ogg',
|
||||
"them" = 'sound/vox_fem/them.ogg',
|
||||
"then" = 'sound/vox_fem/then.ogg',
|
||||
"there" = 'sound/vox_fem/there.ogg',
|
||||
"they" = 'sound/vox_fem/they.ogg',
|
||||
"think" = 'sound/vox_fem/think.ogg',
|
||||
"thinking" = 'sound/vox_fem/thinking.ogg',
|
||||
"third" = 'sound/vox_fem/third.ogg',
|
||||
"thirteen" = 'sound/vox_fem/thirteen.ogg',
|
||||
"thirty" = 'sound/vox_fem/thirty.ogg',
|
||||
"this" = 'sound/vox_fem/this.ogg',
|
||||
"those" = 'sound/vox_fem/those.ogg',
|
||||
"thought" = 'sound/vox_fem/thought.ogg',
|
||||
"thousand" = 'sound/vox_fem/thousand.ogg',
|
||||
"threat" = 'sound/vox_fem/threat.ogg',
|
||||
"three" = 'sound/vox_fem/three.ogg',
|
||||
@@ -794,9 +1121,11 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"tide" = 'sound/vox_fem/tide.ogg',
|
||||
"time" = 'sound/vox_fem/time.ogg',
|
||||
"to" = 'sound/vox_fem/to.ogg',
|
||||
"took" = 'sound/vox_fem/took.ogg',
|
||||
"tool" = 'sound/vox_fem/tool.ogg',
|
||||
"top" = 'sound/vox_fem/top.ogg',
|
||||
"topside" = 'sound/vox_fem/topside.ogg',
|
||||
"tosser" = 'sound/vox_fem/tosser.ogg',
|
||||
"touch" = 'sound/vox_fem/touch.ogg',
|
||||
"towards" = 'sound/vox_fem/towards.ogg',
|
||||
"toxins" = 'sound/vox_fem/toxins.ogg',
|
||||
@@ -817,8 +1146,16 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"unathi" = 'sound/vox_fem/unathi.ogg',
|
||||
"unauthorized" = 'sound/vox_fem/unauthorized.ogg',
|
||||
"under" = 'sound/vox_fem/under.ogg',
|
||||
"unidentified" = 'sound/vox_fem/unidentified.ogg',
|
||||
"uniform" = 'sound/vox_fem/uniform.ogg',
|
||||
"unit" = 'sound/vox_fem/unit.ogg',
|
||||
"unite" = 'sound/vox_fem/unite.ogg',
|
||||
"united" = 'sound/vox_fem/united.ogg',
|
||||
"uniting" = 'sound/vox_fem/uniting.ogg',
|
||||
"unknown" = 'sound/vox_fem/unknown.ogg',
|
||||
"unknowns" = 'sound/vox_fem/unknowns.ogg',
|
||||
"unlocked" = 'sound/vox_fem/unlocked.ogg',
|
||||
"unsure" = 'sound/vox_fem/unsure.ogg',
|
||||
"until" = 'sound/vox_fem/until.ogg',
|
||||
"up" = 'sound/vox_fem/up.ogg',
|
||||
"update" = 'sound/vox_fem/update.ogg',
|
||||
@@ -841,34 +1178,54 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"vapor" = 'sound/vox_fem/vapor.ogg',
|
||||
"vault" = 'sound/vox_fem/vault.ogg',
|
||||
"vent" = 'sound/vox_fem/vent.ogg',
|
||||
"vented" = 'sound/vox_fem/vented.ogg',
|
||||
"ventilation" = 'sound/vox_fem/ventilation.ogg',
|
||||
"venting" = 'sound/vox_fem/venting.ogg',
|
||||
"vents" = 'sound/vox_fem/vents.ogg',
|
||||
"victor" = 'sound/vox_fem/victor.ogg',
|
||||
"violated" = 'sound/vox_fem/violated.ogg',
|
||||
"violation" = 'sound/vox_fem/violation.ogg',
|
||||
"virologist" = 'sound/vox_fem/virologist.ogg',
|
||||
"virology" = 'sound/vox_fem/virology.ogg',
|
||||
"virus" = 'sound/vox_fem/virus.ogg',
|
||||
"viruses" = 'sound/vox_fem/viruses.ogg',
|
||||
"voltage" = 'sound/vox_fem/voltage.ogg',
|
||||
"vox" = 'sound/vox_fem/vox.ogg',
|
||||
"vox_login" = 'sound/vox_fem/vox_login.ogg',
|
||||
"voxy" = 'sound/vox_fem/voxy.ogg',
|
||||
"vulpkanin" = 'sound/vox_fem/vulpkanin.ogg',
|
||||
"w" = 'sound/vox_fem/w.ogg',
|
||||
"wait" = 'sound/vox_fem/wait.ogg',
|
||||
"waited" = 'sound/vox_fem/waited.ogg',
|
||||
"waiter" = 'sound/vox_fem/waiter.ogg',
|
||||
"waiting" = 'sound/vox_fem/waiting.ogg',
|
||||
"walk" = 'sound/vox_fem/walk.ogg',
|
||||
"wall" = 'sound/vox_fem/wall.ogg',
|
||||
"wanker" = 'sound/vox_fem/wanker.ogg',
|
||||
"wankers" = 'sound/vox_fem/wankers.ogg',
|
||||
"want" = 'sound/vox_fem/want.ogg',
|
||||
"wanted" = 'sound/vox_fem/wanted.ogg',
|
||||
"wanting" = 'sound/vox_fem/wanting.ogg',
|
||||
"wants" = 'sound/vox_fem/wants.ogg',
|
||||
"warm" = 'sound/vox_fem/warm.ogg',
|
||||
"warn" = 'sound/vox_fem/warn.ogg',
|
||||
"warning" = 'sound/vox_fem/warning.ogg',
|
||||
"was" = 'sound/vox_fem/was.ogg',
|
||||
"waste" = 'sound/vox_fem/waste.ogg',
|
||||
"water" = 'sound/vox_fem/water.ogg',
|
||||
"way" = 'sound/vox_fem/way.ogg',
|
||||
"we" = 'sound/vox_fem/we.ogg',
|
||||
"weapon" = 'sound/vox_fem/weapon.ogg',
|
||||
"wear" = 'sound/vox_fem/wear.ogg',
|
||||
"weed" = 'sound/vox_fem/weed.ogg',
|
||||
"welcome" = 'sound/vox_fem/welcome.ogg',
|
||||
"weld" = 'sound/vox_fem/weld.ogg',
|
||||
"welded" = 'sound/vox_fem/welded.ogg',
|
||||
"welder" = 'sound/vox_fem/welder.ogg',
|
||||
"welding" = 'sound/vox_fem/welding.ogg',
|
||||
"west" = 'sound/vox_fem/west.ogg',
|
||||
"what" = 'sound/vox_fem/what.ogg',
|
||||
"where" = 'sound/vox_fem/where.ogg',
|
||||
"whiskey" = 'sound/vox_fem/whiskey.ogg',
|
||||
"white" = 'sound/vox_fem/white.ogg',
|
||||
"wiggle" = 'sound/vox_fem/wiggle.ogg',
|
||||
@@ -876,6 +1233,9 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"will" = 'sound/vox_fem/will.ogg',
|
||||
"window" = 'sound/vox_fem/window.ogg',
|
||||
"windows" = 'sound/vox_fem/windows.ogg',
|
||||
"wish" = 'sound/vox_fem/wish.ogg',
|
||||
"wished" = 'sound/vox_fem/wished.ogg',
|
||||
"wishing" = 'sound/vox_fem/wishing.ogg',
|
||||
"with" = 'sound/vox_fem/with.ogg',
|
||||
"without" = 'sound/vox_fem/without.ogg',
|
||||
"wizard" = 'sound/vox_fem/wizard.ogg',
|
||||
@@ -883,6 +1243,11 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"wood" = 'sound/vox_fem/wood.ogg',
|
||||
"woody" = 'sound/vox_fem/woody.ogg',
|
||||
"woop" = 'sound/vox_fem/woop.ogg',
|
||||
"work" = 'sound/vox_fem/work.ogg',
|
||||
"worked" = 'sound/vox_fem/worked.ogg',
|
||||
"working" = 'sound/vox_fem/working.ogg',
|
||||
"works" = 'sound/vox_fem/works.ogg',
|
||||
"wow" = 'sound/vox_fem/wow.ogg',
|
||||
"x" = 'sound/vox_fem/x.ogg',
|
||||
"xeno" = 'sound/vox_fem/xeno.ogg',
|
||||
"xenobiology" = 'sound/vox_fem/xenobiology.ogg',
|
||||
@@ -901,5 +1266,5 @@ var/list/vox_sounds = list("," = 'sound/vox_fem/,.ogg',
|
||||
"z" = 'sound/vox_fem/z.ogg',
|
||||
"zero" = 'sound/vox_fem/zero.ogg',
|
||||
"zone" = 'sound/vox_fem/zone.ogg',
|
||||
"zulu" = 'sound/vox_fem/zulu.ogg',
|
||||
"zulu" = 'sound/vox_fem/zulu.ogg'
|
||||
)
|
||||
+15
-2
@@ -150,9 +150,11 @@
|
||||
|
||||
//Hook for running code when a dir change occurs
|
||||
/atom/proc/setDir(newdir)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir)
|
||||
dir = newdir
|
||||
|
||||
/atom/proc/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user)
|
||||
if(does_attack_animation)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
add_attack_logs(user, src, "Punched with hulk powers")
|
||||
@@ -305,8 +307,8 @@
|
||||
/atom/proc/ex_act()
|
||||
return
|
||||
|
||||
/atom/proc/blob_act()
|
||||
return
|
||||
/atom/proc/blob_act(obj/structure/blob/B)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_BLOB_ACT, B)
|
||||
|
||||
/atom/proc/fire_act()
|
||||
return
|
||||
@@ -734,3 +736,14 @@ var/list/blood_splatter_icons = list()
|
||||
if(!L)
|
||||
return null
|
||||
return L.AllowDrop() ? L : get_turf(L)
|
||||
|
||||
/atom/Entered(atom/movable/AM, atom/oldLoc)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_ENTERED, AM, oldLoc)
|
||||
|
||||
/atom/Exit(atom/movable/AM, atom/newLoc)
|
||||
. = ..()
|
||||
if(SEND_SIGNAL(src, COMSIG_ATOM_EXIT, AM, newLoc) & COMPONENT_ATOM_BLOCK_EXIT)
|
||||
return FALSE
|
||||
|
||||
/atom/Exited(atom/movable/AM, atom/newLoc)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_EXITED, AM, newLoc)
|
||||
|
||||
@@ -126,10 +126,11 @@
|
||||
// Previously known as HasEntered()
|
||||
// This is automatically called when something enters your square
|
||||
/atom/movable/Crossed(atom/movable/AM)
|
||||
return
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_CROSSED, AM)
|
||||
|
||||
/atom/movable/Bump(atom/A, yes) //the "yes" arg is to differentiate our Bump proc from byond's, without it every Bump() call would become a double Bump().
|
||||
if(A && yes)
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_BUMP, A)
|
||||
if(throwing)
|
||||
throwing.hit_atom(A)
|
||||
. = 1
|
||||
@@ -213,6 +214,7 @@
|
||||
//called when src is thrown into hit_atom
|
||||
/atom/movable/proc/throw_impact(atom/hit_atom, throwingdatum)
|
||||
set waitfor = 0
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, hit_atom, throwingdatum)
|
||||
if(!QDELETED(hit_atom))
|
||||
return hit_atom.hitby(src)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
src.update_icon()
|
||||
..(loc)
|
||||
for(var/atom/A in loc)
|
||||
A.blob_act()
|
||||
A.blob_act(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
qdel(B)
|
||||
|
||||
for(var/atom/A in T)//Hit everything in the turf
|
||||
A.blob_act()
|
||||
A.blob_act(src)
|
||||
return 1
|
||||
|
||||
/obj/structure/blob/ex_act(severity)
|
||||
@@ -141,7 +141,7 @@
|
||||
|
||||
/obj/structure/blob/Crossed(var/mob/living/L)
|
||||
..()
|
||||
L.blob_act()
|
||||
L.blob_act(src)
|
||||
|
||||
/obj/structure/blob/tesla_act(power)
|
||||
..()
|
||||
|
||||
@@ -85,7 +85,6 @@
|
||||
)
|
||||
cybernetic_implants = list(
|
||||
/obj/item/organ/internal/cyberimp/eyes/xray,
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_drop,
|
||||
/obj/item/organ/internal/cyberimp/brain/anti_stun,
|
||||
/obj/item/organ/internal/cyberimp/chest/nutriment/plus,
|
||||
/obj/item/organ/internal/cyberimp/arm/combat/centcom
|
||||
|
||||
@@ -57,14 +57,14 @@
|
||||
output &= ~bitflag_value
|
||||
else//can't not be off
|
||||
output |= bitflag_value
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
if("toggle_bolts" in href_list)
|
||||
bolts = !bolts
|
||||
if(bolts)
|
||||
visible_message("You hear a quite click as the [src] bolts to the floor", "You hear a quite click")
|
||||
else
|
||||
visible_message("You hear a quite click as the [src]'s floor bolts raise", "You hear a quite click")
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/air_sensor/attackby(var/obj/item/W as obj, var/mob/user as mob)
|
||||
if(istype(W, /obj/item/multitool))
|
||||
@@ -301,19 +301,19 @@
|
||||
sensor_list|=G.id_tag
|
||||
if(!sensor_list.len)
|
||||
to_chat(user, "<span class=\"warning\">No sensors on this frequency.</span>")
|
||||
return MT_ERROR
|
||||
return FALSE
|
||||
|
||||
// Have the user pick one of them and name its label
|
||||
var/sensor = input(user, "Select a sensor:", "Sensor Data") as null|anything in sensor_list
|
||||
if(!sensor)
|
||||
return MT_ERROR
|
||||
return FALSE
|
||||
var/label = reject_bad_name( input(user, "Choose a sensor label:", "Sensor Label") as text|null, allow_numbers=1)
|
||||
if(!label)
|
||||
return MT_ERROR
|
||||
return FALSE
|
||||
|
||||
// Add the sensor's information to general_air_controler
|
||||
sensors[sensor] = label
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
if("edit_sensor" in href_list)
|
||||
var/list/sensor_list = list()
|
||||
@@ -322,14 +322,14 @@
|
||||
sensor_list|=G.id_tag
|
||||
if(!sensor_list.len)
|
||||
to_chat(user, "<span class=\"warning\">No sensors on this frequency.</span>")
|
||||
return MT_ERROR
|
||||
return FALSE
|
||||
var/label = sensors[href_list["edit_sensor"]]
|
||||
var/sensor = input(user, "Select a sensor:", "Sensor Data", href_list["edit_sensor"]) as null|anything in sensor_list
|
||||
if(!sensor)
|
||||
return MT_ERROR
|
||||
return FALSE
|
||||
sensors.Remove(href_list["edit_sensor"])
|
||||
sensors[sensor] = label
|
||||
return MT_UPDATE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/general_air_control/unlinkFrom(mob/user, obj/O)
|
||||
..()
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
icon = 'icons/obj/meter.dmi'
|
||||
icon_state = "meterX"
|
||||
var/obj/machinery/atmospherics/pipe/target = null
|
||||
anchored = 1
|
||||
anchored = TRUE
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100)
|
||||
power_channel = ENVIRON
|
||||
var/frequency = 0
|
||||
var/frequency = ATMOS_DISTRO_FREQ
|
||||
var/id
|
||||
var/id_tag
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 5
|
||||
req_one_access_txt = "24;10"
|
||||
Mtoollink = 1
|
||||
Mtoollink = TRUE
|
||||
settagwhitelist = list("id_tag")
|
||||
|
||||
/obj/machinery/meter/New()
|
||||
|
||||
@@ -222,11 +222,11 @@ Class Procs:
|
||||
var/newid = copytext(reject_bad_text(input(usr, "Specify the new ID tag for this machine", src, src:id_tag) as null|text),1,MAX_MESSAGE_LEN)
|
||||
if(newid)
|
||||
src:id_tag = newid
|
||||
return MT_UPDATE|MT_REINIT
|
||||
return TRUE
|
||||
if("set_freq" in href_list)
|
||||
if(!("frequency" in vars))
|
||||
warning("set_freq: [type] has no frequency var.")
|
||||
return 0
|
||||
return FALSE
|
||||
var/newfreq=src:frequency
|
||||
if(href_list["set_freq"]!="-1")
|
||||
newfreq=text2num(href_list["set_freq"])
|
||||
@@ -235,90 +235,81 @@ Class Procs:
|
||||
if(newfreq)
|
||||
if(findtext(num2text(newfreq), "."))
|
||||
newfreq *= 10 // shift the decimal one place
|
||||
if(newfreq < 10000)
|
||||
src:frequency = newfreq
|
||||
return MT_UPDATE|MT_REINIT
|
||||
return 0
|
||||
src:frequency = sanitize_frequency(newfreq, RADIO_LOW_FREQ, RADIO_HIGH_FREQ)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/proc/handle_multitool_topic(var/href, var/list/href_list, var/mob/user)
|
||||
if(!allowed(user))//no, not even HREF exploits
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/multitool/P = get_multitool(usr)
|
||||
if(P && istype(P))
|
||||
var/update_mt_menu=0
|
||||
var/re_init=0
|
||||
var/update_mt_menu = FALSE
|
||||
if("set_tag" in href_list)
|
||||
if(!(href_list["set_tag"] in settagwhitelist))//I see you're trying Href exploits, I see you're failing, I SEE ADMIN WARNING. (seriously though, this is a powerfull HREF, I originally found this loophole, I'm not leaving it in on my PR)
|
||||
message_admins("set_tag HREF (var attempted to edit: [href_list["set_tag"]]) exploit attempted by [key_name_admin(user)] on [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)")
|
||||
return 1
|
||||
return FALSE
|
||||
if(!(href_list["set_tag"] in vars))
|
||||
to_chat(usr, "<span class='warning'>Something went wrong: Unable to find [href_list["set_tag"]] in vars!</span>")
|
||||
return 1
|
||||
return FALSE
|
||||
var/current_tag = vars[href_list["set_tag"]]
|
||||
var/newid = copytext(reject_bad_text(input(usr, "Specify the new value", src, current_tag) as null|text),1,MAX_MESSAGE_LEN)
|
||||
if(newid)
|
||||
vars[href_list["set_tag"]] = newid
|
||||
re_init=1
|
||||
update_mt_menu = TRUE
|
||||
|
||||
if("unlink" in href_list)
|
||||
var/idx = text2num(href_list["unlink"])
|
||||
if(!idx)
|
||||
return 1
|
||||
return FALSE
|
||||
|
||||
var/obj/O = getLink(idx)
|
||||
if(!O)
|
||||
return 1
|
||||
return FALSE
|
||||
if(!canLink(O))
|
||||
to_chat(usr, "<span class='warning'>You can't link with that device.</span>")
|
||||
return 1
|
||||
return FALSE
|
||||
|
||||
if(unlinkFrom(usr, O))
|
||||
to_chat(usr, "<span class='notice'>A green light flashes on \the [P], confirming the link was removed.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>A red light flashes on \the [P]. It appears something went wrong when unlinking the two devices.</span>")
|
||||
update_mt_menu=1
|
||||
update_mt_menu = TRUE
|
||||
|
||||
if("link" in href_list)
|
||||
var/obj/O = P.buffer
|
||||
if(!O)
|
||||
return 1
|
||||
return FALSE
|
||||
if(!canLink(O,href_list))
|
||||
to_chat(usr, "<span class='warning'>You can't link with that device.</span>")
|
||||
return 1
|
||||
return FALSE
|
||||
if(isLinkedWith(O))
|
||||
to_chat(usr, "<span class='warning'>A red light flashes on \the [P]. The two devices are already linked.</span>")
|
||||
return 1
|
||||
return FALSE
|
||||
|
||||
if(linkWith(usr, O, href_list))
|
||||
to_chat(usr, "<span class='notice'>A green light flashes on \the [P], confirming the link was added.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>A red light flashes on \the [P]. It appears something went wrong when linking the two devices.</span>")
|
||||
update_mt_menu=1
|
||||
update_mt_menu = TRUE
|
||||
|
||||
if("buffer" in href_list)
|
||||
P.buffer = src
|
||||
to_chat(usr, "<span class='notice'>A green light flashes, and the device appears in the multitool buffer.</span>")
|
||||
update_mt_menu=1
|
||||
update_mt_menu = TRUE
|
||||
|
||||
if("flush" in href_list)
|
||||
to_chat(usr, "<span class='notice'>A green light flashes, and the device disappears from the multitool buffer.</span>")
|
||||
P.buffer = null
|
||||
update_mt_menu=1
|
||||
update_mt_menu = TRUE
|
||||
|
||||
var/ret = multitool_topic(usr,href_list,P.buffer)
|
||||
if(ret == MT_ERROR)
|
||||
return 1
|
||||
if(ret & MT_UPDATE)
|
||||
update_mt_menu=1
|
||||
if(ret & MT_REINIT)
|
||||
re_init=1
|
||||
if(ret)
|
||||
update_mt_menu = TRUE
|
||||
|
||||
if(re_init)
|
||||
Initialize()
|
||||
if(update_mt_menu)
|
||||
//usr.set_machine(src)
|
||||
update_multitool_menu(usr)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/Topic(href, href_list, var/nowindow = 0, var/datum/topic_state/state = default_state)
|
||||
if(..(href, href_list, nowindow, state))
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
#define JOB_STYLE_1 "Name (Job)"
|
||||
#define JOB_STYLE_2 "Name - Job"
|
||||
#define JOB_STYLE_3 "\[Job\] Name"
|
||||
#define JOB_STYLE_4 "(Job) Name"
|
||||
GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
// Custom Implementations for NTTC
|
||||
/* NTTC Configuration Datum
|
||||
@@ -5,16 +9,125 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
* as well as allowing users to save and load configurations.
|
||||
*/
|
||||
/datum/nttc_configuration
|
||||
// ALL OF THE JOB CRAP
|
||||
// Dict of all jobs and their colors
|
||||
var/all_jobs = list(
|
||||
// AI
|
||||
"AI" = "#FF00FF",
|
||||
"Android" = "#FF00FF",
|
||||
"Cyborg" = "#FF00FF",
|
||||
"Personal AI" = "#FF00FF",
|
||||
"Robot" = "#FF00FF",
|
||||
// Civilian + Varients
|
||||
"Assistant" = "#408010",
|
||||
"Businessman" = "#408010",
|
||||
"Civilian" = "#408010",
|
||||
"Tourist" = "#408010",
|
||||
"Trader" = "#408010",
|
||||
// Command (Solo command, not department heads)
|
||||
"Blueshield" = "#204090",
|
||||
"Captain" = "#204090",
|
||||
"Head of Personnel" = "#204090",
|
||||
"Nanotrasen Representative" = "#204090",
|
||||
// Engineeering
|
||||
"Atmospheric Technician" = "#A66300",
|
||||
"Chief Engineer" = "#A66300",
|
||||
"Electrician" = "#A66300",
|
||||
"Engine Technician" = "#A66300",
|
||||
"Life Support Specialist" = "#A66300",
|
||||
"Maintenance Technician" = "#A66300",
|
||||
"Mechanic" = "#A66300",
|
||||
"Station Engineer" = "#A66300",
|
||||
// ERT
|
||||
"Emergency Response Team Engineer" = "#5C5C7C",
|
||||
"Emergency Response Team Leader" = "#5C5C7C",
|
||||
"Emergency Response Team Medic" = "#5C5C7C",
|
||||
"Emergency Response Team Member" = "#5C5C7C",
|
||||
"Emergency Response Team Officer" = "#5C5C7C",
|
||||
// Medical
|
||||
"Chemist" = "#009190",
|
||||
"Chief Medical Officer" = "#009190",
|
||||
"Coroner" = "#009190",
|
||||
"Medical Doctor" = "#009190",
|
||||
"Microbiologist" = "#009190",
|
||||
"Nurse" = "#009190",
|
||||
"Paramedic" = "#009190",
|
||||
"Pharmacologist" = "#009190",
|
||||
"Pharmacist" = "#009190",
|
||||
"Psychiatrist" = "#009190",
|
||||
"Psychologist" = "#009190",
|
||||
"Surgeon" = "#009190",
|
||||
"Therapist" = "#009190",
|
||||
"Virologist" = "#009190",
|
||||
// Science
|
||||
"Anomalist" = "#993399",
|
||||
"Biomechanical Engineer" = "#993399",
|
||||
"Chemical Researcher" = "#993399",
|
||||
"Geneticist" = "#993399",
|
||||
"Mechatronic Engineer" = "#993399",
|
||||
"Plasma Researcher" = "#993399",
|
||||
"Research Director" = "#993399",
|
||||
"Roboticist" = "#993399",
|
||||
"Scientist" = "#993399",
|
||||
"Xenoarcheologist" = "#993399",
|
||||
"Xenobiologist" = "#993399",
|
||||
// Security
|
||||
"Brig Physician" = "#A30000",
|
||||
"Detective" = "#A30000",
|
||||
"Forensic Technician" = "#A30000",
|
||||
"Head of Security" = "#A30000",
|
||||
"Human Resources Agent" = "#A30000",
|
||||
"Internal Affairs Agent" = "#A30000",
|
||||
"Magistrate" = "#A30000",
|
||||
"Security Officer" = "#A30000",
|
||||
"Security Pod Pilot" = "#A30000",
|
||||
"Warden" = "#A30000",
|
||||
// Supply
|
||||
"Quartermaster" = "#7F6539",
|
||||
"Cargo Technician" = "#7F6539",
|
||||
"Shaft Miner" = "#7F6539",
|
||||
"Spelunker" = "#7F6539",
|
||||
// Service
|
||||
"Barber" = "#80A000",
|
||||
"Bartender" = "#80A000",
|
||||
"Beautician" = "#80A000",
|
||||
"Botanical Researcher" = "#80A000",
|
||||
"Botanist" = "#80A000",
|
||||
"Butcher" = "#80A000",
|
||||
"Chaplain" = "#80A000",
|
||||
"Chef" = "#80A000",
|
||||
"Clown" = "#80A000",
|
||||
"Cook" = "#80A000",
|
||||
"Culinary Artist" = "#80A000",
|
||||
"Custodial Technician" = "#80A000",
|
||||
"Hair Stylist" = "#80A000",
|
||||
"Hydroponicist" = "#80A000",
|
||||
"Janitor" = "#80A000",
|
||||
"Journalist" = "#80A000",
|
||||
"Librarian" = "#80A000",
|
||||
"Mime" = "#80A000",
|
||||
)
|
||||
// Just command members
|
||||
var/heads = list("Captain", "Head of Personnel", "Nanotrasen Representative", "Blueshield", "Chief Engineer", "Chief Medical Officer", "Research Director", "Head of Security")
|
||||
// Just ERT
|
||||
var/ert_jobs = list("Emergency Response Team Officer", "Emergency Response Team Engineer", "Emergency Response Team Medic", "Emergency Response Team Leader", "Emergency Response Team Member")
|
||||
// Defined so code compiles and incase someone has a non-standard job
|
||||
var/job_color = "#000000"
|
||||
// NOW FOR ACTUAL TOGGLES
|
||||
/* Simple Toggles */
|
||||
var/toggle_activated = TRUE
|
||||
var/toggle_jobs = FALSE
|
||||
var/toggle_job_color = FALSE
|
||||
var/toggle_name_color = FALSE
|
||||
var/toggle_timecode = FALSE
|
||||
var/toggle_command_bold = FALSE
|
||||
// Hack section
|
||||
var/toggle_gibberish = FALSE
|
||||
var/toggle_honk = FALSE
|
||||
|
||||
/* Strings */
|
||||
var/setting_language = null
|
||||
var/job_indicator_type = null
|
||||
|
||||
/* Tables */
|
||||
var/list/regex = list()
|
||||
@@ -38,7 +151,11 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
var/list/to_serialize = list(
|
||||
"toggle_activated",
|
||||
"toggle_jobs",
|
||||
"toggle_job_color",
|
||||
"toggle_name_color",
|
||||
"job_indicator_type",
|
||||
"toggle_timecode",
|
||||
"toggle_command_bold",
|
||||
"toggle_gibberish",
|
||||
"toggle_honk",
|
||||
"setting_language",
|
||||
@@ -50,7 +167,11 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
var/list/serialize_sanitize = list(
|
||||
"toggle_activated" = "bool",
|
||||
"toggle_jobs" = "bool",
|
||||
"toggle_job_color" = "bool",
|
||||
"toggle_name_color" = "bool",
|
||||
"job_indicator_type" = "string",
|
||||
"toggle_timecode" = "bool",
|
||||
"toggle_command_bold" = "bool",
|
||||
"toggle_gibberish" = "bool",
|
||||
"toggle_honk" = "bool",
|
||||
"setting_language" = "string",
|
||||
@@ -58,6 +179,10 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
"firewall" = "array"
|
||||
)
|
||||
|
||||
// These are the job card styles
|
||||
var/list/job_card_styles = list(
|
||||
JOB_STYLE_1, JOB_STYLE_2, JOB_STYLE_3, JOB_STYLE_4
|
||||
)
|
||||
// Used to determine what languages are allowable for conversion. Generated during runtime.
|
||||
var/list/valid_languages = list("--DISABLE--")
|
||||
|
||||
@@ -65,13 +190,17 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
/* Simple Toggles */
|
||||
toggle_activated = initial(toggle_activated)
|
||||
toggle_jobs = initial(toggle_jobs)
|
||||
toggle_job_color = initial(toggle_job_color)
|
||||
toggle_name_color = initial(toggle_name_color)
|
||||
toggle_timecode = initial(toggle_timecode)
|
||||
toggle_command_bold = initial(toggle_command_bold)
|
||||
// Hack section
|
||||
toggle_gibberish = initial(toggle_gibberish)
|
||||
toggle_honk = initial(toggle_honk)
|
||||
|
||||
/* Strings */
|
||||
setting_language = initial(setting_language)
|
||||
job_indicator_type = initial(job_indicator_type)
|
||||
|
||||
/* Tables */
|
||||
regex = list()
|
||||
@@ -142,10 +271,42 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
if(firewall.Find(signal.data["name"]))
|
||||
signal.data["reject"] = 1
|
||||
|
||||
// These two stack properly.
|
||||
// Simple job indicator switch.
|
||||
// All job and coloring shit
|
||||
if(toggle_job_color || toggle_name_color)
|
||||
var/job = signal.data["job"]
|
||||
job_color = all_jobs[job]
|
||||
|
||||
if(toggle_name_color)
|
||||
var/new_name = "<font color=\"[job_color]\">" + signal.data["name"] + "</font>"
|
||||
signal.data["name"] = new_name
|
||||
signal.data["realname"] = new_name // this is required because the broadcaster uses this directly if the speaker doesn't have a voice changer on
|
||||
|
||||
if(toggle_jobs)
|
||||
var/new_name = signal.data["name"] + " ([signal.data["job"]]) "
|
||||
var/new_name = ""
|
||||
var/job = signal.data["job"]
|
||||
if(job in ert_jobs)
|
||||
job = "ERT"
|
||||
if(toggle_job_color)
|
||||
switch(job_indicator_type)
|
||||
if(JOB_STYLE_1)
|
||||
new_name = signal.data["name"] + " <font color=\"[job_color]\">([job])</font> "
|
||||
if(JOB_STYLE_2)
|
||||
new_name = signal.data["name"] + " - <font color=\"[job_color]\">[job]</font> "
|
||||
if(JOB_STYLE_3)
|
||||
new_name = "<font color=\"[job_color]\"><small>\[[job]\]</small></font> " + signal.data["name"] + " "
|
||||
if(JOB_STYLE_4)
|
||||
new_name = "<font color=[job_color]>([job])</font> " + signal.data["name"] + " "
|
||||
else
|
||||
switch(job_indicator_type)
|
||||
if(JOB_STYLE_1)
|
||||
new_name = signal.data["name"] + " ([job]) "
|
||||
if(JOB_STYLE_2)
|
||||
new_name = signal.data["name"] + " - [job] "
|
||||
if(JOB_STYLE_3)
|
||||
new_name = "<small>\[[job]\]</small> " + signal.data["name"] + " "
|
||||
if(JOB_STYLE_4)
|
||||
new_name = "([job]) " + signal.data["name"] + " "
|
||||
|
||||
signal.data["name"] = new_name
|
||||
signal.data["realname"] = new_name // this is required because the broadcaster uses this directly if the speaker doesn't have a voice changer on
|
||||
|
||||
@@ -155,6 +316,12 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
signal.data["name"] = new_name
|
||||
signal.data["realname"] = new_name // this is required because the broadcaster uses this directly if the speaker doesn't have a voice changer on
|
||||
|
||||
// Makes heads of staff bold
|
||||
if(toggle_command_bold)
|
||||
var/job = signal.data["job"]
|
||||
if((job in ert_jobs) || (job in heads))
|
||||
signal.data["message"] = "<b>" + signal.data["message"] + "</b>"
|
||||
|
||||
// Hacks!
|
||||
// Censor dat shit like nobody's business
|
||||
if(toggle_gibberish)
|
||||
@@ -169,7 +336,6 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
new_message += pick("HoNK!", "HONK", "HOOOoONK", "HONKHONK!", "HoNnnkKK!!!", "HOOOOOOOOOOONK!!!!11!", "henk!") + " "
|
||||
signal.data["message"] = new_message
|
||||
|
||||
|
||||
// Language Conversion
|
||||
if(setting_language && valid_languages[setting_language])
|
||||
if(setting_language == "--DISABLE--")
|
||||
@@ -183,7 +349,7 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
var/new_message = original
|
||||
for(var/reg in regex)
|
||||
var/replacePattern = pencode_to_html(regex[reg])
|
||||
var/regex/start = regex(reg, "gi")
|
||||
var/regex/start = regex("[reg]", "gi")
|
||||
new_message = start.Replace(new_message, replacePattern)
|
||||
signal.data["message"] = new_message
|
||||
|
||||
@@ -202,6 +368,15 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
vars[var_to_toggle] = !vars[var_to_toggle]
|
||||
log_action(user, "toggled NTTC variable [var_to_toggle] [vars[var_to_toggle] ? "on" : "off"]")
|
||||
|
||||
// Job Format
|
||||
if(href_list["setting_job_card_style"])
|
||||
var/card_style = input(user, "Pick a job card format.", "Job Card Format") as null|anything in job_card_styles
|
||||
if(!card_style)
|
||||
return
|
||||
job_indicator_type = card_style
|
||||
to_chat(user, "<span class='notice'>Jobs will now have the style of [card_style].</span>")
|
||||
log_action(user, "has set NTTC job card format to [card_style]", TRUE)
|
||||
|
||||
// Strings
|
||||
if(href_list["setting_language"])
|
||||
var/new_language = input(user, "Pick a language to convert messages to.", "Language Conversion") as null|anything in valid_languages
|
||||
@@ -252,7 +427,7 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
var/list/array = vars[href_list["array"]]
|
||||
array.Add(new_value)
|
||||
to_chat(user, "<span class='notice'>Added row [new_value].</span>")
|
||||
log_action(user, "updated [href_list["array"]] - new value [new_value]")
|
||||
log_action(user, "updated [href_list["array"]] - new value [new_value]", TRUE)
|
||||
|
||||
if(href_list["delete_item"])
|
||||
if(href_list["array"] && href_list["array"] in arrays)
|
||||
@@ -316,3 +491,4 @@ GLOBAL_DATUM_INIT(nttc_config, /datum/nttc_configuration, new())
|
||||
dat += "window.updateConfig = function(config) { window.config = JSON.parse(config); window.reload_tab() };"
|
||||
dat += "</script>"
|
||||
return dat
|
||||
|
||||
|
||||
@@ -151,6 +151,7 @@
|
||||
/obj/item/implanter/storage = 1,
|
||||
/obj/item/toy/cards/deck/syndicate = 2,
|
||||
/obj/item/storage/secure/briefcase/syndie = 2,
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_syndicate = 2,
|
||||
"" = 70
|
||||
)
|
||||
|
||||
|
||||
@@ -310,6 +310,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
return ..()
|
||||
|
||||
/obj/item/proc/hit_reaction(mob/living/carbon/human/owner, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_HIT_REACT, args)
|
||||
if(prob(final_block_chance))
|
||||
owner.visible_message("<span class='danger'>[owner] blocks [attack_text] with [src]!</span>")
|
||||
return 1
|
||||
@@ -324,6 +325,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
A.Remove(user)
|
||||
if(flags & DROPDEL)
|
||||
qdel(src)
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_DROPPED,user)
|
||||
|
||||
// called just as an item is picked up (loc is not yet changed)
|
||||
/obj/item/proc/pickup(mob/user)
|
||||
@@ -351,6 +353,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
// for items that can be placed in multiple slots
|
||||
// note this isn't called during the initial dressing of a player
|
||||
/obj/item/proc/equipped(var/mob/user, var/slot)
|
||||
SEND_SIGNAL(src, COMSIG_ITEM_EQUIPPED, user, slot)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
if(item_action_slot_check(slot, user)) //some items only give their actions buttons when in a specific slot.
|
||||
@@ -498,6 +501,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
|
||||
/obj/item/throw_impact(atom/A)
|
||||
if(A && !QDELETED(A))
|
||||
SEND_SIGNAL(src, COMSIG_MOVABLE_IMPACT, A)
|
||||
var/itempush = 1
|
||||
if(w_class < WEIGHT_CLASS_BULKY)
|
||||
itempush = 0 // too light to push anything
|
||||
@@ -548,6 +552,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
return I == src
|
||||
|
||||
/obj/item/Crossed(atom/movable/AM)
|
||||
. = ..()
|
||||
if(prob(trip_chance) && ishuman(AM))
|
||||
var/mob/living/carbon/human/H = AM
|
||||
on_trip(H)
|
||||
@@ -558,3 +563,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
|
||||
|
||||
/obj/item/attack_hulk(mob/living/carbon/human/user)
|
||||
return FALSE
|
||||
|
||||
/obj/item/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user) //handles block for CQC
|
||||
if(target.check_block())
|
||||
target.visible_message("<span class='danger'>[target.name] blocks [src] and twists [user]'s arm behind [user.p_their()] back!</span>",
|
||||
"<span class='userdanger'>You block the attack!</span>")
|
||||
user.Stun(2)
|
||||
return TRUE
|
||||
@@ -10,6 +10,7 @@
|
||||
var/translate_binary = FALSE
|
||||
var/translate_hive = FALSE
|
||||
var/syndie = FALSE
|
||||
var/change_voice = FALSE
|
||||
var/list/channels = list()
|
||||
|
||||
|
||||
@@ -20,7 +21,7 @@
|
||||
channels = list("Syndicate" = 1)
|
||||
origin_tech = "syndicate=1;engineering=3;bluespace=2"
|
||||
syndie = TRUE //Signifies that it de-crypts Syndicate transmissions
|
||||
var/change_voice = TRUE
|
||||
change_voice = TRUE
|
||||
var/fake_name = "Agent ALERT_A_CODER"
|
||||
var/static/list/fakename_list
|
||||
|
||||
|
||||
@@ -18,35 +18,21 @@
|
||||
hitsound = null
|
||||
throwforce = 3
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/list/honk_sounds = list('sound/items/bikehorn.ogg' = 1)
|
||||
throw_speed = 3
|
||||
throw_range = 15
|
||||
attack_verb = list("HONKED")
|
||||
var/spam_flag = 0
|
||||
var/honk_sound = 'sound/items/bikehorn.ogg'
|
||||
var/cooldowntime = 20
|
||||
|
||||
/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
|
||||
if(!spam_flag)
|
||||
playsound(loc, honk_sound, 50, 1, -1) //plays instead of tap.ogg!
|
||||
return ..()
|
||||
|
||||
/obj/item/bikehorn/attack_self(mob/user)
|
||||
if(!spam_flag)
|
||||
spam_flag = 1
|
||||
playsound(src.loc, honk_sound, 50, 1)
|
||||
src.add_fingerprint(user)
|
||||
spawn(cooldowntime)
|
||||
spam_flag = 0
|
||||
return
|
||||
|
||||
/obj/item/bikehorn/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/squeak, honk_sounds, 50)
|
||||
|
||||
/obj/item/bikehorn/airhorn
|
||||
name = "air horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
icon_state = "air_horn"
|
||||
honk_sound = 'sound/items/AirHorn2.ogg'
|
||||
cooldowntime = 50
|
||||
origin_tech = "materials=4;engineering=4"
|
||||
honk_sounds = list('sound/items/airhorn2.ogg' = 1)
|
||||
|
||||
/obj/item/bikehorn/golden
|
||||
name = "golden bike horn"
|
||||
@@ -63,11 +49,10 @@
|
||||
..()
|
||||
|
||||
/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
|
||||
if(!spam_flag)
|
||||
var/turf/T = get_turf(src)
|
||||
for(M in ohearers(7, T))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.can_hear())
|
||||
continue
|
||||
M.emote("flip")
|
||||
var/turf/T = get_turf(src)
|
||||
for(M in ohearers(7, T))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.can_hear())
|
||||
continue
|
||||
M.emote("flip")
|
||||
|
||||
@@ -158,6 +158,28 @@
|
||||
/obj/item/storage/firstaid/adv/empty
|
||||
empty = 1
|
||||
|
||||
/obj/item/storage/firstaid/machine
|
||||
name = "machine repair kit"
|
||||
desc = "A kit that contains supplies to repair IPCs on the go."
|
||||
icon_state = "machinefirstaid"
|
||||
item_state = "firstaid-machine"
|
||||
med_bot_skin = "machine"
|
||||
|
||||
/obj/item/storage/firstaid/machine/New()
|
||||
..()
|
||||
if(empty)
|
||||
return
|
||||
new /obj/item/weldingtool(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
new /obj/item/stack/cable_coil(src)
|
||||
new /obj/item/reagent_containers/food/drinks/oilcan/full(src)
|
||||
new /obj/item/robotanalyzer(src)
|
||||
|
||||
/obj/item/storage/firstaid/machine/empty
|
||||
empty = 1
|
||||
|
||||
|
||||
/obj/item/storage/firstaid/tactical
|
||||
name = "first-aid kit"
|
||||
icon_state = "bezerk"
|
||||
|
||||
@@ -166,6 +166,8 @@
|
||||
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(check_martial_counter(L, user))
|
||||
return
|
||||
if(H.check_shields(0, "[user]'s [name]", src, MELEE_ATTACK)) //No message; check_shields() handles that
|
||||
playsound(L, 'sound/weapons/Genhit.ogg', 50, 1)
|
||||
return
|
||||
|
||||
@@ -507,10 +507,8 @@
|
||||
icon = 'icons/obj/watercloset.dmi'
|
||||
icon_state = "rubberducky"
|
||||
item_state = "rubberducky"
|
||||
honk_sounds = list('sound/items/squeaktoy.ogg' = 1)
|
||||
attack_verb = list("quacked", "squeaked")
|
||||
honk_sound = 'sound/items/squeaktoy.ogg' //credit to DANMITCH3LL of freesound for this
|
||||
|
||||
|
||||
|
||||
/obj/structure/sink
|
||||
name = "sink"
|
||||
|
||||
@@ -136,6 +136,7 @@
|
||||
|
||||
|
||||
/turf/Entered(atom/movable/M, atom/OL, ignoreRest = 0)
|
||||
..()
|
||||
if(ismob(M))
|
||||
var/mob/O = M
|
||||
if(!O.lastarea)
|
||||
|
||||
@@ -411,6 +411,7 @@ BLIND // can't see anything
|
||||
..()
|
||||
|
||||
/obj/item/clothing/shoes/proc/step_action(var/mob/living/carbon/human/H) //squeek squeek
|
||||
SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION)
|
||||
if(shoe_sound)
|
||||
var/turf/T = get_turf(H)
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
|
||||
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/t_scanner, /obj/item/rcd)
|
||||
siemens_coefficient = 0
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet)
|
||||
|
||||
hide_tail_by_species = list("Vox" , "Vulpkanin" , "Unathi" , "Tajaran")
|
||||
species_restricted = list("exclude","Diona","Wryn")
|
||||
@@ -156,6 +157,10 @@
|
||||
H.unEquip(boots)
|
||||
boots.forceMove(src)
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/ui_action_click()
|
||||
..()
|
||||
toggle_helmet()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/verb/toggle_helmet()
|
||||
set name = "Toggle Helmet"
|
||||
set category = "Object"
|
||||
@@ -222,6 +227,10 @@
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
src.helmet = W
|
||||
var/obj/item/clothing/head/helmet/space/hardsuit/syndi/S = W
|
||||
S.forceMove(src)
|
||||
helmet = S
|
||||
S.link_suit()
|
||||
return
|
||||
|
||||
else if(istype(W,/obj/item/clothing/shoes/magboots) && can_modify(user))
|
||||
@@ -312,6 +321,7 @@
|
||||
item_color = "syndi"
|
||||
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
|
||||
on = 1
|
||||
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
|
||||
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
|
||||
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDETAIL
|
||||
@@ -319,6 +329,11 @@
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/proc/link_suit()
|
||||
. = ..()
|
||||
if(istype(loc,/obj/item/clothing/suit/space/hardsuit/syndi))
|
||||
linkedsuit = loc
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
|
||||
on = !on
|
||||
if(on)
|
||||
@@ -342,12 +357,38 @@
|
||||
|
||||
update_icon()
|
||||
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
toggle_hardsuit_mode(user)
|
||||
user.update_inv_head()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/proc/toggle_hardsuit_mode(mob/user) //Helmet Toggles Suit Mode
|
||||
if(linkedsuit)
|
||||
if(on)
|
||||
linkedsuit.name = initial(linkedsuit.name)
|
||||
linkedsuit.desc = initial(linkedsuit.desc)
|
||||
linkedsuit.slowdown = 1
|
||||
linkedsuit.flags |= STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
linkedsuit.flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
linkedsuit.cold_protection |= UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
else
|
||||
linkedsuit.name += " (combat)"
|
||||
linkedsuit.desc = linkedsuit.alt_desc
|
||||
linkedsuit.slowdown = 0
|
||||
linkedsuit.flags = THICKMATERIAL
|
||||
linkedsuit.cold_protection &= ~(UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS)
|
||||
linkedsuit.flags_inv &= ~(HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL)
|
||||
|
||||
linkedsuit.update_icon()
|
||||
user.update_inv_wear_suit()
|
||||
user.update_inv_w_uniform()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
|
||||
name = "eagle helmet"
|
||||
desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle."
|
||||
@@ -360,6 +401,7 @@
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi
|
||||
name = "blood-red hardsuit"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
|
||||
icon_state = "hardsuit1-syndi"
|
||||
item_state = "syndie_hardsuit"
|
||||
item_color = "syndi"
|
||||
@@ -372,34 +414,6 @@
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/update_icon()
|
||||
icon_state = "hardsuit[on]-[item_color]"
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/syndi/attack_self(mob/user)
|
||||
on = !on
|
||||
if(on)
|
||||
to_chat(user, "<span class='notice'>You switch your hardsuit to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed.</span>")
|
||||
name = "blood-red hardsuit"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
|
||||
slowdown = 1
|
||||
flags = STOPSPRESSUREDMAGE | THICKMATERIAL
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You switch your hardsuit to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>")
|
||||
name = "blood-red hardsuit (combat)"
|
||||
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
|
||||
slowdown = 0
|
||||
flags = THICKMATERIAL
|
||||
flags_inv = null
|
||||
cold_protection = null
|
||||
|
||||
update_icon()
|
||||
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
|
||||
user.update_inv_wear_suit()
|
||||
user.update_inv_w_uniform()
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
//Elite Syndie suit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
|
||||
name = "elite syndicate hardsuit helmet"
|
||||
|
||||
@@ -12,11 +12,12 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
for(var/U in subtypesof(/obj/item/clothing/under/color))
|
||||
var/blocked = list(/obj/item/clothing/under/color/random, /obj/item/clothing/under/rank/centcom) // Stops random coloured jumpsuit and undefined centcomm suit appearing in the list.
|
||||
for(var/U in subtypesof(/obj/item/clothing/under/color) - blocked)
|
||||
var/obj/item/clothing/under/V = new U
|
||||
src.clothing_choices += V
|
||||
|
||||
for(var/U in subtypesof(/obj/item/clothing/under/rank))
|
||||
for(var/U in subtypesof(/obj/item/clothing/under/rank) - blocked)
|
||||
var/obj/item/clothing/under/V = new U
|
||||
src.clothing_choices += V
|
||||
return
|
||||
|
||||
@@ -69,15 +69,17 @@
|
||||
item_state = "clown"
|
||||
item_color = "clown"
|
||||
flags_size = ONESIZEFITSALL
|
||||
var/honk_sound = 'sound/items/bikehorn.ogg'
|
||||
|
||||
/obj/item/clothing/under/rank/clown/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg' = 1), 50)
|
||||
|
||||
/obj/item/clothing/under/rank/clown/hit_reaction()
|
||||
playsound(loc, honk_sound, 50, 1, -1)
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(H.mind && H.mind.assigned_role == "Clown")
|
||||
score_clownabuse++
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/under/rank/head_of_personnel
|
||||
desc = "It's a jumpsuit worn by someone who works in the position of \"Head of Personnel\"."
|
||||
|
||||
@@ -1490,9 +1490,9 @@
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
|
||||
honk_sounds = list('sound/items/teri_horn.ogg' = 1)
|
||||
icon_state = "teri_horn"
|
||||
item_state = "teri_horn"
|
||||
honk_sound = 'sound/items/teri_horn.ogg'
|
||||
|
||||
/obj/item/clothing/accessory/medal/fluff/elo //V-Force_Bomber: E.L.O.
|
||||
name = "distinguished medal of loyalty and excellence"
|
||||
|
||||
@@ -392,4 +392,7 @@
|
||||
desc = "Contains oil intended for use on cyborgs, robots, and other synthetics."
|
||||
icon = 'icons/goonstation/objects/oil.dmi'
|
||||
icon_state = "oilcan"
|
||||
volume = 100
|
||||
volume = 100
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/oilcan/full
|
||||
list_reagents = list("oil" = 100)
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
#define SLAM_COMBO "HG"
|
||||
#define KICK_COMBO "HH"
|
||||
#define RESTRAIN_COMBO "GG"
|
||||
#define PRESSURE_COMBO "DG"
|
||||
#define CONSECUTIVE_COMBO "DDH"
|
||||
|
||||
/datum/martial_art/cqc
|
||||
name = "CQC"
|
||||
help_verb = /mob/living/carbon/human/proc/CQC_help
|
||||
block_chance = 75
|
||||
|
||||
/datum/martial_art/cqc/can_use(mob/living/carbon/human/H)
|
||||
if(istype(H.gloves, /obj/item/clothing/gloves/fingerless/rapid))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/martial_art/cqc/proc/drop_restraining()
|
||||
restraining = FALSE
|
||||
|
||||
/datum/martial_art/cqc/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(findtext(streak, SLAM_COMBO))
|
||||
streak = ""
|
||||
Slam(A, D)
|
||||
return TRUE
|
||||
if(findtext(streak, KICK_COMBO))
|
||||
streak = ""
|
||||
Kick(A, D)
|
||||
return TRUE
|
||||
if(findtext(streak, RESTRAIN_COMBO))
|
||||
streak = ""
|
||||
Restrain(A, D)
|
||||
return TRUE
|
||||
if(findtext(streak, PRESSURE_COMBO))
|
||||
streak = ""
|
||||
Pressure(A, D)
|
||||
return TRUE
|
||||
if(findtext(streak, CONSECUTIVE_COMBO))
|
||||
streak = ""
|
||||
Consecutive(A, D)
|
||||
return FALSE
|
||||
|
||||
/datum/martial_art/cqc/proc/Slam(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.stat || !D.weakened)
|
||||
D.visible_message("<span class='warning'>[A] slams [D] into the ground!</span>", \
|
||||
"<span class='userdanger'>[A] slams you into the ground!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1)
|
||||
D.apply_damage(10, BRUTE)
|
||||
D.Weaken(6)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Slam", ATKLOG_ALL)
|
||||
else //if target can't be slammed, do a regular grab attack then clear the streak
|
||||
streak = ""
|
||||
grab_act(A, D)
|
||||
streak = ""
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/proc/Kick(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.stat || !D.weakened)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] back!</span>", \
|
||||
"<span class='userdanger'>[A] kicks you back!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
var/atom/throw_target = get_edge_target_turf(D, A.dir)
|
||||
D.throw_at(throw_target, 1, 14, A)
|
||||
D.apply_damage(10, BRUTE)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Kick", ATKLOG_ALL)
|
||||
if(D.weakened && !D.stat)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D]'s head, knocking [D.p_them()] out!</span>", \
|
||||
"<span class='userdanger'>[A] kicks your head, knocking you out!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1)
|
||||
D.SetSleeping(15)
|
||||
D.adjustBrainLoss(15, 150)
|
||||
add_attack_logs(A, D, "Knocked out with martial-art [src] : Kick", ATKLOG_ALL)
|
||||
else //if target can't be kicked, do a regular harm attack then clear the streak
|
||||
streak = ""
|
||||
harm_act(A, D)
|
||||
streak = ""
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/proc/Pressure(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
D.visible_message("<span class='warning'>[A] forces their arm on [D]'s neck!</span>")
|
||||
D.adjustStaminaLoss(60)
|
||||
playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Pressure", ATKLOG_ALL)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/proc/Restrain(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(restraining)
|
||||
return
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.stat)
|
||||
D.visible_message("<span class='warning'>[A] locks [D] into a restraining position!</span>", \
|
||||
"<span class='userdanger'>[A] locks you into a restraining position!</span>")
|
||||
D.adjustStaminaLoss(20)
|
||||
D.Stun(5)
|
||||
restraining = TRUE
|
||||
addtimer(CALLBACK(src, .proc/drop_restraining), 50, TIMER_UNIQUE)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Restrain", ATKLOG_ALL)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/proc/Consecutive(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.stat)
|
||||
D.visible_message("<span class='warning'>[A] strikes [D]'s abdomen, neck and back consecutively</span>", \
|
||||
"<span class='userdanger'>[A] strikes your abdomen, neck and back consecutively!</span>")
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 50, 1, -1)
|
||||
var/obj/item/I = D.get_active_hand()
|
||||
if(I && D.drop_item())
|
||||
A.put_in_hands(I)
|
||||
D.adjustStaminaLoss(50)
|
||||
D.apply_damage(25, BRUTE)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Consecutive", ATKLOG_ALL)
|
||||
else //if target can't be hit, do a regular harm attack then clear the streak
|
||||
streak = ""
|
||||
harm_act(A, D)
|
||||
streak = ""
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
add_to_streak("G", D)
|
||||
if(check_streak(A, D))
|
||||
return TRUE
|
||||
var/obj/item/grab/G = D.grabbedby(A, 1)
|
||||
if(G)
|
||||
G.state = GRAB_AGGRESSIVE //Instant aggressive grab
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
add_to_streak("H", D)
|
||||
if(check_streak(A, D))
|
||||
return TRUE
|
||||
A.do_attack_animation(D)
|
||||
var/picked_hit_type = pick("CQC'd", "neck chopped", "gut punched")
|
||||
var/bonus_damage = 13
|
||||
if(D.weakened || D.resting || D.lying)
|
||||
bonus_damage += 5
|
||||
picked_hit_type = "stomps on"
|
||||
D.apply_damage(bonus_damage, BRUTE)
|
||||
if(picked_hit_type == "kicks" || picked_hit_type == "stomps on")
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 50, 1, -1)
|
||||
else
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
D.visible_message("<span class='danger'>[A] [picked_hit_type] [D]!</span>", \
|
||||
"<span class='userdanger'>[A] [picked_hit_type] you!</span>")
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src]", ATKLOG_ALL)
|
||||
if(A.resting && !D.stat && !D.weakened)
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
D.apply_damage(10, BRUTE)
|
||||
D.Weaken(3)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Leg sweep", ATKLOG_ALL)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/cqc/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
add_to_streak("D", D)
|
||||
if(check_streak(A, D))
|
||||
return TRUE
|
||||
if(!restraining)
|
||||
D.visible_message("<span class='warning'>[A] strikes [D]'s jaw with their hand!</span>", \
|
||||
"<span class='userdanger'>[A] strikes your jaw, disorienting you!</span>")
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
D.Jitter(2)
|
||||
D.apply_damage(5, BRUTE)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Disarm", ATKLOG_ALL)
|
||||
if(restraining)
|
||||
D.visible_message("<span class='danger'>[A] puts [D] into a chokehold!</span>", \
|
||||
"<span class='userdanger'>[A] puts you into a chokehold!</span>")
|
||||
D.SetSleeping(20)
|
||||
restraining = FALSE
|
||||
add_attack_logs(A, D, "Knocked out with martial-art [src] : Choke hold", ATKLOG_ALL)
|
||||
else
|
||||
restraining = FALSE
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/CQC_help()
|
||||
set name = "Remember The Basics"
|
||||
set desc = "You try to remember some of the basics of CQC."
|
||||
set category = "CQC"
|
||||
to_chat(usr, "<b><i>You try to remember some of the basics of CQC.</i></b>")
|
||||
|
||||
to_chat(usr, "<span class='notice'>Slam</span>: Harm Grab. Slam opponent into the ground, knocking them down.")
|
||||
to_chat(usr, "<span class='notice'>CQC Kick</span>: Harm Harm. Knocks opponent away. Knocks out stunned or knocked down opponents.")
|
||||
to_chat(usr, "<span class='notice'>Restrain</span>: Grab Switch Hand Grab. Locks opponent into a restraining position, stunning them.")
|
||||
to_chat(usr, "<span class='notice'>Choke Hold</span>: Restrain Disarm. Knocks out an opponent you have restrained.")
|
||||
to_chat(usr, "<span class='notice'>Pressure</span>: Disarm Grab. Decent stamina damage.")
|
||||
to_chat(usr, "<span class='notice'>Consecutive CQC</span>: Disarm Disarm Harm. Mainly offensive move, huge damage and decent stamina damage.")
|
||||
|
||||
to_chat(usr, "<b><i>In addition, by having your throw mode on when being attacked, you enter an active defense mode where you have a chance to block and sometimes even counter melee attacks done to you.</i></b>")
|
||||
@@ -6,6 +6,8 @@
|
||||
var/temporary = 0
|
||||
var/datum/martial_art/base = null // The permanent style
|
||||
var/deflection_chance = 0 //Chance to deflect projectiles
|
||||
var/block_chance = 0 //Chance to block melee attacks using items while on throw mode.
|
||||
var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not
|
||||
var/help_verb = null
|
||||
var/no_guns = FALSE //set to TRUE to prevent users of this style from using guns (sleeping carp, highlander). They can still pick them up, but not fire them.
|
||||
var/no_guns_message = "" //message to tell the style user if they try and use a gun while no_guns = TRUE (DISHONORABRU!)
|
||||
@@ -22,6 +24,9 @@
|
||||
/datum/martial_art/proc/help_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
return 0
|
||||
|
||||
/datum/martial_art/proc/can_use(mob/living/carbon/human/H)
|
||||
return TRUE
|
||||
|
||||
/datum/martial_art/proc/add_to_streak(var/element,var/mob/living/carbon/human/D)
|
||||
if(D != current_target)
|
||||
current_target = D
|
||||
@@ -184,6 +189,24 @@
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/CQC_manual
|
||||
name = "old manual"
|
||||
desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat."
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "cqcmanual"
|
||||
|
||||
/obj/item/CQC_manual/attack_self(mob/living/carbon/human/user)
|
||||
if(!istype(user) || !user)
|
||||
return
|
||||
to_chat(user, "<span class='boldannounce'>You remember the basics of CQC.</span>")
|
||||
|
||||
var/datum/martial_art/cqc/CQC = new(null)
|
||||
CQC.teach(user)
|
||||
user.drop_item()
|
||||
visible_message("<span class='warning'>[src] beeps ominously, and a moment later it bursts up in flames.</span>")
|
||||
new /obj/effect/decal/cleanable/ash(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/twohanded/bostaff
|
||||
name = "bo staff"
|
||||
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate."
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/mob/dead/forceMove(atom/destination)
|
||||
// Overriden from code/game/atoms_movable.dm#141 to prevent things like mice squeaking when ghosts walk on them.
|
||||
// Same as parent, except that it does not include Uncrossed or Crossed calls.
|
||||
var/turf/old_loc = loc
|
||||
loc = destination
|
||||
|
||||
if(old_loc)
|
||||
old_loc.Exited(src, destination)
|
||||
|
||||
if(destination)
|
||||
destination.Entered(src)
|
||||
|
||||
if(isturf(destination) && opacity)
|
||||
var/turf/new_loc = destination
|
||||
new_loc.reconsider_lights()
|
||||
|
||||
if(isturf(old_loc) && opacity)
|
||||
old_loc.reconsider_lights()
|
||||
|
||||
for(var/datum/light_source/L in light_sources)
|
||||
L.source_atom.update_light()
|
||||
|
||||
return 1
|
||||
@@ -156,6 +156,10 @@ emp_act
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/human/proc/check_block()
|
||||
if(martial_art && prob(martial_art.block_chance) && martial_art.can_use(src) && in_throw_mode && !incapacitated(FALSE, TRUE))
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/emp_act(severity)
|
||||
for(var/obj/O in src)
|
||||
if(!O) continue
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
var/obj/item/organ/internal/ears/ears = H.get_int_organ(/obj/item/organ/internal/ears)
|
||||
if(ears)
|
||||
qdel(ears)
|
||||
|
||||
|
||||
ears = new mutantears(H)
|
||||
|
||||
/datum/species/proc/breathe(mob/living/carbon/human/H)
|
||||
@@ -318,6 +318,9 @@
|
||||
user.do_cpr(target)
|
||||
|
||||
/datum/species/proc/grab(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
|
||||
if(target.check_block()) //cqc
|
||||
target.visible_message("<span class='warning'>[target] blocks [user]'s grab attempt!</span>")
|
||||
return FALSE
|
||||
if(attacker_style && attacker_style.grab_act(user, target))
|
||||
return TRUE
|
||||
else
|
||||
@@ -344,6 +347,9 @@
|
||||
add_attack_logs(user, target, "vampirebit")
|
||||
return
|
||||
//end vampire codes
|
||||
if(target.check_block()) //cqc
|
||||
target.visible_message("<span class='warning'>[target] blocks [user]'s attack!</span>")
|
||||
return FALSE
|
||||
if(attacker_style && attacker_style.harm_act(user, target))
|
||||
return TRUE
|
||||
else
|
||||
@@ -382,6 +388,9 @@
|
||||
target.forcesay(GLOB.hit_appends)
|
||||
|
||||
/datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style)
|
||||
if(target.check_block()) //cqc
|
||||
target.visible_message("<span class='warning'>[target] blocks [user]'s disarm attempt!</span>")
|
||||
return FALSE
|
||||
if(attacker_style && attacker_style.disarm_act(user, target))
|
||||
return TRUE
|
||||
else
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
/mob/living/simple_animal/bot/medbot/fish
|
||||
skin = "fish"
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/machine
|
||||
skin = "machine"
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/mysterious
|
||||
name = "\improper Mysterious Medibot"
|
||||
desc = "International Medibot of mystery."
|
||||
@@ -578,6 +581,8 @@
|
||||
T.syndicate_aligned = syndicate_aligned //This is a special case since Syndicate medibots and the mysterious medibot look the same; we also dont' want crew building Syndicate medibots if the mysterious medibot blows up.
|
||||
if("fish")
|
||||
new /obj/item/storage/firstaid/aquatic_kit(Tsec)
|
||||
if("machine")
|
||||
new /obj/item/storage/firstaid/machine/empty(Tsec)
|
||||
else
|
||||
new /obj/item/storage/firstaid(Tsec)
|
||||
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
can_collar = 1
|
||||
gold_core_spawnable = CHEM_MOB_SPAWN_FRIENDLY
|
||||
|
||||
/mob/living/simple_animal/mouse/Initialize()
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/mouse/handle_automated_speech()
|
||||
..()
|
||||
if(prob(speak_chance))
|
||||
@@ -81,39 +84,16 @@
|
||||
get_scooped(M)
|
||||
..()
|
||||
|
||||
//make mice fit under tables etc? this was hacky, and not working
|
||||
/*
|
||||
/mob/living/simple_animal/mouse/Move(var/dir)
|
||||
|
||||
var/turf/target_turf = get_step(src,dir)
|
||||
//CanReachThrough(src.loc, target_turf, src)
|
||||
var/can_fit_under = 0
|
||||
if(target_turf.ZCanPass(get_turf(src),1))
|
||||
can_fit_under = 1
|
||||
|
||||
..(dir)
|
||||
if(can_fit_under)
|
||||
src.loc = target_turf
|
||||
for(var/d in cardinal)
|
||||
var/turf/O = get_step(T,d)
|
||||
//Simple pass check.
|
||||
if(O.ZCanPass(T, 1) && !(O in open) && !(O in closed) && O in possibles)
|
||||
open += O
|
||||
*/
|
||||
|
||||
///mob/living/simple_animal/mouse/restrained() //Hotfix to stop mice from doing things with MouseDrop
|
||||
// return 1
|
||||
|
||||
/mob/living/simple_animal/mouse/start_pulling(var/atom/movable/AM)//Prevents mouse from pulling things
|
||||
to_chat(src, "<span class='warning'>You are too small to pull anything.</span>")
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/mouse/Crossed(AM as mob|obj)
|
||||
if( ishuman(AM) )
|
||||
if(!stat)
|
||||
if(ishuman(AM))
|
||||
if(stat == CONSCIOUS)
|
||||
var/mob/M = AM
|
||||
to_chat(M, "<span class='notice'>[bicon(src)] Squeek!</span>")
|
||||
M << 'sound/effects/mousesqueek.ogg'
|
||||
SEND_SOUND(M, 'sound/effects/mousesqueek.ogg')
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/mouse/death(gibbed)
|
||||
|
||||
@@ -72,5 +72,6 @@
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 30
|
||||
a_intent = INTENT_HARM
|
||||
pass_flags = PASSTABLE
|
||||
universal_speak = 1
|
||||
universal_understand = 1
|
||||
@@ -0,0 +1,121 @@
|
||||
// Hellhound
|
||||
/mob/living/simple_animal/hostile/hellhound
|
||||
// Sprites by FoS: http://nanotrasen.se/phpBB3/memberlist.php?mode=viewprofile&u=386
|
||||
name = "Lesser Hellhound"
|
||||
desc = "A horrifying, black canine monster, with glowing red eyes and vicious-looking teeth."
|
||||
icon_state = "blackdog"
|
||||
icon_living = "blackdog"
|
||||
icon_dead = "blackdog_dead"
|
||||
icon_resting = "blackdog_rest"
|
||||
mutations = list(BREATHLESS)
|
||||
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = INFINITY
|
||||
melee_damage_lower = 10 // slightly higher than araneus
|
||||
melee_damage_upper = 30
|
||||
a_intent = INTENT_HARM
|
||||
environment_smash = 1
|
||||
speak_chance = 0
|
||||
speed = 0
|
||||
maxHealth = 250 // same as sgt araneus
|
||||
health = 250
|
||||
obj_damage = 50
|
||||
robust_searching = 1
|
||||
stat_attack = 1
|
||||
attacktext = "savages"
|
||||
attack_sound = 'sound/effects/bite.ogg'
|
||||
speak_emote = list("growls")
|
||||
see_in_dark = 9
|
||||
universal_understand = 1
|
||||
wander = 0
|
||||
var/life_regen_cycles = 0
|
||||
var/life_regen_cycle_trigger = 10 // heal once for every X number of cycles spent resting
|
||||
var/life_regen_amount = -10 // negative, because negative = healing
|
||||
var/smoke_lastuse = 0
|
||||
var/smoke_freq = 300 // 30 seconds
|
||||
var/datum/action/innate/demon/whisper/whisper_action
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/New()
|
||||
. = ..()
|
||||
whisper_action = new()
|
||||
whisper_action.Grant(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/handle_automated_action()
|
||||
. = ..()
|
||||
if(resting)
|
||||
if(!wants_to_rest())
|
||||
custom_emote(1, "growls, and gets up.")
|
||||
playsound(get_turf(src), 'sound/hallucinations/growl2.ogg', 50, 1)
|
||||
icon_state = "[icon_living]"
|
||||
resting = 0
|
||||
update_canmove()
|
||||
else if(wants_to_rest())
|
||||
custom_emote(1, "lays down, and starts to lick their wounds.")
|
||||
icon_state = "[icon_living]_rest"
|
||||
resting = 1
|
||||
update_canmove()
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/examine(mob/user)
|
||||
. = ..()
|
||||
if(stat != DEAD)
|
||||
var/list/msgs = list()
|
||||
if(key)
|
||||
msgs += "<span class='warning'>Its eyes have the spark of intelligence.</span>"
|
||||
if(health > (maxHealth*0.95))
|
||||
msgs += "<span class='notice'>It appears to be in excellent health.</span>"
|
||||
else if(health > (maxHealth*0.75))
|
||||
msgs += "<span class='notice'>It has a few injuries.</span>"
|
||||
else if(health > (maxHealth*0.55))
|
||||
msgs += "<span class='warning'>It has many injuries.</span>"
|
||||
else if(health > (maxHealth*0.25))
|
||||
msgs += "<span class='warning'>It is covered in wounds!</span>"
|
||||
if(resting)
|
||||
if(bruteloss > 0 || fireloss > 0)
|
||||
msgs += "<span class='warning'>It is currently licking its wounds, regenerating the damage to its body!</span>"
|
||||
else
|
||||
msgs += "<span class='notice'>It is currently resting.</span>"
|
||||
to_chat(usr,msgs.Join("<BR>"))
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/Life(seconds, times_fired)
|
||||
. = ..()
|
||||
if(stat != DEAD && resting && (bruteloss > 0) || (fireloss > 0))
|
||||
if(life_regen_cycles >= life_regen_cycle_trigger)
|
||||
life_regen_cycles = 0
|
||||
to_chat(src, "<span class='notice'>You lick your wounds, helping them close.</span>")
|
||||
adjustBruteLoss(life_regen_amount)
|
||||
adjustFireLoss(life_regen_amount)
|
||||
else
|
||||
life_regen_cycles++
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/proc/wants_to_rest()
|
||||
if(target)
|
||||
return FALSE
|
||||
if(bruteloss > 0 || fireloss > 0)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/AttackingTarget()
|
||||
. = ..()
|
||||
if(ishuman(target))
|
||||
special_aoe()
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/proc/special_aoe()
|
||||
if(world.time < (smoke_lastuse + smoke_freq))
|
||||
return
|
||||
smoke_lastuse = world.time
|
||||
var/datum/effect_system/smoke_spread/sleeping/smoke = new
|
||||
smoke.set_up(10, 0, loc)
|
||||
smoke.start()
|
||||
|
||||
/mob/living/simple_animal/hostile/hellhound/greater
|
||||
name = "Greater Hellhound"
|
||||
maxHealth = 400
|
||||
health = 400
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 30
|
||||
environment_smash = 2
|
||||
gold_core_spawnable = CHEM_MOB_SPAWN_INVALID
|
||||
light_color = "#FF0000"
|
||||
light_power = 6
|
||||
light_range = 2
|
||||
@@ -0,0 +1,19 @@
|
||||
//Put all your tacticool gun gadgets here. So far it's pretty empty
|
||||
|
||||
|
||||
/obj/item/suppressor
|
||||
name = "suppressor"
|
||||
desc = "A universal syndicate small-arms suppressor for maximum espionage."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "suppressor"
|
||||
item_state = "suppressor"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/oldsound = null
|
||||
var/initial_w_class = null
|
||||
origin_tech = "combat=2;engineering=2"
|
||||
|
||||
/obj/item/suppressor/specialoffer
|
||||
name = "cheap suppressor"
|
||||
desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits all weapons."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "suppressor"
|
||||
@@ -183,20 +183,4 @@
|
||||
for(var/obj/item/ammo_casing/AC in magazine.stored_ammo)
|
||||
if(AC.BB)
|
||||
process_fire(user, user,0)
|
||||
. = 1
|
||||
|
||||
/obj/item/suppressor
|
||||
name = "suppressor"
|
||||
desc = "A universal syndicate small-arms suppressor for maximum espionage."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "suppressor"
|
||||
item_state = "suppressor"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/oldsound = null
|
||||
var/initial_w_class = null
|
||||
|
||||
/obj/item/suppressor/specialoffer
|
||||
name = "cheap suppressor"
|
||||
desc = "A foreign knock-off suppressor, it feels flimsy, cheap, and brittle. Still fits all weapons."
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
icon_state = "suppressor"
|
||||
. = 1
|
||||
@@ -79,7 +79,7 @@
|
||||
name = "laser tag beam"
|
||||
icon_state = "omnilaser"
|
||||
hitsound = 'sound/weapons/tap.ogg'
|
||||
damage = 0
|
||||
nodamage = 1
|
||||
damage_type = STAMINA
|
||||
flag = "laser"
|
||||
var/suit_types = list(/obj/item/clothing/suit/redtag, /obj/item/clothing/suit/bluetag)
|
||||
|
||||
@@ -538,6 +538,7 @@
|
||||
// note AM since can contain mobs or objs
|
||||
for(var/atom/movable/AM in D)
|
||||
AM.loc = src
|
||||
SEND_SIGNAL(AM, COMSIG_MOVABLE_DISPOSING, src, D)
|
||||
if(istype(AM, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(FAT in H.mutations) // is a human and fat?
|
||||
|
||||
@@ -242,6 +242,8 @@
|
||||
name = "NT specops cybernetics implant"
|
||||
desc = "An extremely powerful cybernetic implant that contains combat and utility modules used by NT special forces."
|
||||
contents = newlist(/obj/item/gun/energy/pulse/pistol/m1911, /obj/item/door_remote/omni, /obj/item/melee/energy/blade/hardlight, /obj/item/reagent_containers/hypospray/combat/nanites, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/implanter/mindshield, /obj/item/flash/armimplant)
|
||||
icon = 'icons/obj/guns/energy.dmi'
|
||||
icon_state = "m1911"
|
||||
emp_proof = 1
|
||||
|
||||
/obj/item/organ/internal/cyberimp/arm/surgery
|
||||
|
||||
Reference in New Issue
Block a user