Merge branch 'master' into Bloody_bags
This commit is contained in:
@@ -128,3 +128,6 @@
|
||||
|
||||
//component stuff
|
||||
#define COMSIG_COMBAT_TOGGLED "combatmode_toggled" //called by combat mode toggle on all equipped items. args: (mob/user, combatmode)
|
||||
|
||||
//belly sound pref things
|
||||
#define NORMIE_HEARCHECK 4
|
||||
|
||||
@@ -98,6 +98,7 @@
|
||||
#define HIDEHAIR (1<<8)
|
||||
#define HIDEFACIALHAIR (1<<9)
|
||||
#define HIDENECK (1<<10)
|
||||
#define HIDETAUR (1<<11) //gotta hide that snowflake
|
||||
|
||||
//bitflags for clothing coverage - also used for limbs
|
||||
#define HEAD (1<<0)
|
||||
@@ -130,6 +131,11 @@
|
||||
#define NORMAL_SUIT_STYLE 0
|
||||
#define DIGITIGRADE_SUIT_STYLE 1
|
||||
|
||||
#define NOT_TAURIC 0
|
||||
#define SNEK_TAURIC 1
|
||||
#define PAW_TAURIC 2
|
||||
#define HOOF_TAURIC 3
|
||||
|
||||
//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts
|
||||
#define NO_MUTANTRACE_VARIATION 0
|
||||
#define MUTANTRACE_VARIATION 1
|
||||
|
||||
@@ -66,8 +66,8 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
#define SHOES_LAYER 19
|
||||
#define GLOVES_LAYER 18
|
||||
#define EARS_LAYER 17
|
||||
#define SUIT_LAYER 16
|
||||
#define BODY_TAUR_LAYER 15
|
||||
#define BODY_TAUR_LAYER 16
|
||||
#define SUIT_LAYER 15
|
||||
#define GENITALS_FRONT_LAYER 14 //Draws some genitalia above clothes and the TAUR body if need be.
|
||||
#define GLASSES_LAYER 13
|
||||
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
|
||||
|
||||
@@ -258,3 +258,5 @@
|
||||
|
||||
// /obj/item/bodypart on_mob_life() retval flag
|
||||
#define BODYPART_LIFE_UPDATE_HEALTH (1<<0)
|
||||
|
||||
#define HUMAN_FIRE_STACK_ICON_NUM 3
|
||||
|
||||
+37
-19
@@ -10,6 +10,10 @@
|
||||
//Comment this out once you've filled in the below
|
||||
#error TGS API unconfigured
|
||||
|
||||
//Uncomment this if you wish to allow the game to interact with TGS 3
|
||||
//This will raise the minimum required security level of your game to TGS_SECURITY_TRUSTED due to it utilizing call()()
|
||||
//#define TGS_V3_API
|
||||
|
||||
//Required interfaces (fill in with your codebase equivalent):
|
||||
|
||||
//create a global variable named `Name` and set it to `Value`
|
||||
@@ -47,7 +51,21 @@
|
||||
#define TGS_EVENT_PORT_SWAP -2 //before a port change is about to happen, extra parameter is new port
|
||||
#define TGS_EVENT_REBOOT_MODE_CHANGE -1 //before a reboot mode change, extras parameters are the current and new reboot mode enums
|
||||
|
||||
//TODO
|
||||
//See the descriptions for these codes here: https://github.com/tgstation/tgstation-server/blob/master/src/Tgstation.Server.Host/Components/EventType.cs
|
||||
#define TGS_EVENT_REPO_RESET_ORIGIN 0
|
||||
#define TGS_EVENT_REPO_CHECKOUT 1
|
||||
#define TGS_EVENT_REPO_FETCH 2
|
||||
#define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3
|
||||
#define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4
|
||||
#define TGS_EVENT_BYOND_INSTALL_START 5
|
||||
#define TGS_EVENT_BYOND_INSTALL_FAIL 6
|
||||
#define TGS_EVENT_BYOND_ACTIVE_VERSION_CHANGE 7
|
||||
#define TGS_EVENT_COMPILE_START 8
|
||||
#define TGS_EVENT_COMPILE_CANCELLED 9
|
||||
#define TGS_EVENT_COMPILE_FAILURE 10
|
||||
#define TGS_EVENT_COMPILE_COMPLETE 11
|
||||
#define TGS_EVENT_INSTANCE_AUTO_UPDATE_START 12
|
||||
#define TGS_EVENT_REPO_MERGE_CONFLICT 13
|
||||
|
||||
//OTHER ENUMS
|
||||
|
||||
@@ -74,8 +92,8 @@
|
||||
/world/proc/TgsInitializationComplete()
|
||||
return
|
||||
|
||||
//Put this somewhere in /world/Topic(T, Addr, Master, Keys) that is always run before T is modified
|
||||
#define TGS_TOPIC var/tgs_topic_return = TgsTopic(T); if(tgs_topic_return) return tgs_topic_return
|
||||
//Put this at the start of /world/Topic()
|
||||
#define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return
|
||||
|
||||
//Call this at the beginning of world/Reboot(reason)
|
||||
/world/proc/TgsReboot()
|
||||
@@ -177,7 +195,7 @@
|
||||
//Gets a list of connected tgs_chat_channel
|
||||
/world/proc/TgsChatChannelInfo()
|
||||
return
|
||||
|
||||
|
||||
//Sends a message to connected game chats
|
||||
//message: The message to send
|
||||
//channels: optional channels to limit the broadcast to
|
||||
@@ -201,24 +219,24 @@ The MIT License
|
||||
|
||||
Copyright (c) 2017 Jordan Brown
|
||||
|
||||
Permission is hereby granted, free of charge,
|
||||
to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom
|
||||
the Software is furnished to do so,
|
||||
Permission is hereby granted, free of charge,
|
||||
to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to
|
||||
deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom
|
||||
the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice
|
||||
The above copyright notice and this permission notice
|
||||
shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
|
||||
ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
@@ -3,6 +3,11 @@
|
||||
|
||||
//#define DATUMVAR_DEBUGGING_MODE //Enables the ability to cache datum vars and retrieve later for debugging which vars changed.
|
||||
|
||||
// Comment this out if you are debugging problems that might be obscured by custom error handling in world/Error
|
||||
#ifdef DEBUG
|
||||
#define USE_CUSTOM_ERROR_HANDLER
|
||||
#endif
|
||||
|
||||
#ifdef TESTING
|
||||
#define DATUMVAR_DEBUGGING_MODE
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ SUBSYSTEM_DEF(research)
|
||||
var/list/errored_datums = list()
|
||||
var/list/point_types = list() //typecache style type = TRUE list
|
||||
//----------------------------------------------
|
||||
var/list/single_server_income = list(TECHWEB_POINT_TYPE_GENERIC = 25) //citadel edit - techwebs nerf
|
||||
var/list/single_server_income = list(TECHWEB_POINT_TYPE_GENERIC = 35) //citadel edit - techwebs nerf
|
||||
var/multiserver_calculation = FALSE
|
||||
var/last_income
|
||||
//^^^^^^^^ ALL OF THESE ARE PER SECOND! ^^^^^^^^
|
||||
|
||||
@@ -250,6 +250,8 @@ SUBSYSTEM_DEF(ticker)
|
||||
if(!GLOB.Debug2)
|
||||
if(!can_continue)
|
||||
log_game("[mode.name] failed pre_setup, cause: [mode.setup_error]")
|
||||
send2irc("SSticker", "[mode.name] failed pre_setup, cause: [mode.setup_error]")
|
||||
message_admins("<span class='notice'>[mode.name] failed pre_setup, cause: [mode.setup_error]</span>")
|
||||
QDEL_NULL(mode)
|
||||
to_chat(world, "<B>Error setting up [GLOB.master_mode].</B> Reverting to pre-game lobby.")
|
||||
SSjob.ResetOccupations()
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
mood_change = -4
|
||||
|
||||
/datum/mood_event/wellfed
|
||||
description = "<span class='nicegreen'>My belly feels round and full.</span>\n"
|
||||
description = "<span class='nicegreen'>I'm stuffed!</span>\n"
|
||||
mood_change = 6
|
||||
|
||||
/datum/mood_event/fed
|
||||
|
||||
@@ -186,8 +186,8 @@
|
||||
|
||||
/datum/point/vector/proc/increment(multiplier = 1)
|
||||
iteration++
|
||||
x += mpx * 1
|
||||
y += mpy * 1
|
||||
x += mpx * (multiplier)
|
||||
y += mpy * (multiplier)
|
||||
|
||||
/datum/point/vector/proc/return_vector_after_increments(amount = 7, multiplier = 1, force_simulate = FALSE)
|
||||
var/datum/point/vector/v = copy_to()
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
var/icon/I = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = I.Height() - world.icon_size
|
||||
holder.icon_state = "hudno_id"
|
||||
if(wear_id)
|
||||
if(wear_id?.GetID())
|
||||
holder.icon_state = "hud[ckey(wear_id.GetJobName())]"
|
||||
sec_hud_set_security_status()
|
||||
|
||||
|
||||
@@ -378,6 +378,8 @@ GLOBAL_LIST_EMPTY(objectives)
|
||||
for(var/datum/mind/M in owners)
|
||||
if(considered_alive(M))
|
||||
return FALSE
|
||||
if(M.current?.suiciding) //killing yourself ISN'T glorious.
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/objective/nuclear
|
||||
|
||||
@@ -91,6 +91,7 @@ Class Procs:
|
||||
verb_yell = "blares"
|
||||
pressure_resistance = 15
|
||||
max_integrity = 200
|
||||
layer = BELOW_OBJ_LAYER //keeps shit coming out of the machine from ending up underneath it.
|
||||
|
||||
anchored = TRUE
|
||||
interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
|
||||
@@ -120,7 +121,7 @@ Class Procs:
|
||||
armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
|
||||
. = ..()
|
||||
GLOB.machines += src
|
||||
|
||||
|
||||
if(ispath(circuit, /obj/item/circuitboard))
|
||||
circuit = new circuit
|
||||
circuit.apply_default_parts(src)
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
|
||||
/obj/machinery/door/airlock/Initialize()
|
||||
. = ..()
|
||||
wires = new /datum/wires/airlock(src)
|
||||
wires = new wiretypepath(src) //CIT CHANGE - makes it possible for airlocks to have different wire datums
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
|
||||
|
||||
@@ -131,18 +131,24 @@
|
||||
playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, 0)
|
||||
|
||||
/obj/machinery/harvester/screwdriver_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
if(.)
|
||||
return TRUE
|
||||
if(!state_open && !occupant)
|
||||
if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I))
|
||||
return
|
||||
. = TRUE
|
||||
if(..())
|
||||
return
|
||||
if(occupant)
|
||||
to_chat(user, "<span class='warning'>[src] is currently occupied!</span>")
|
||||
return
|
||||
if(state_open)
|
||||
to_chat(user, "<span class='warning'>[src] must be closed to [panel_open ? "close" : "open"] it's maintenance hatch!</span>")
|
||||
return
|
||||
if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/harvester/crowbar_act(mob/living/user, obj/item/I)
|
||||
if(default_pry_open(I))
|
||||
return
|
||||
return TRUE
|
||||
if(default_deconstruction_crowbar(I))
|
||||
return
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/harvester/default_pry_open(obj/item/I) //wew
|
||||
. = !(state_open || panel_open || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR //We removed is_operational() here
|
||||
@@ -181,4 +187,4 @@
|
||||
if(state_open)
|
||||
to_chat(user, "<span class='notice'>[src] must be closed before harvesting.</span>")
|
||||
else if(!harvesting)
|
||||
to_chat(user, "<span class='notice'>Alt-click [src] to start harvesting.</span>")
|
||||
to_chat(user, "<span class='notice'>Alt-click [src] to start harvesting.</span>")
|
||||
@@ -95,7 +95,33 @@
|
||||
var/atom/A = target
|
||||
if(!proximity && prox_check)
|
||||
return
|
||||
A.emag_act(user)
|
||||
//Citadel changes: modular code misfiring, so we're bypassing into main code.
|
||||
if(!uses)
|
||||
user.visible_message("<span class='warning'>[src] emits a weak spark. It's burnt out!</span>")
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 100, 1)
|
||||
return
|
||||
else if(uses <= 3)
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 30, 1) //Tiiiiiiny warning sound to let ya know your emag's almost dead
|
||||
|
||||
if(isturf(A))
|
||||
return
|
||||
if(istype(A,/obj/item/storage/lockbox))
|
||||
A.emag_act(user)
|
||||
uses = max(uses - 1, 0)
|
||||
if(!uses)
|
||||
user.visible_message("<span class='warning'>[src] fizzles and sparks. It seems like it's out of charges.</span>")
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 100, 1)
|
||||
if(istype(A,/obj/item/storage))
|
||||
return
|
||||
if(!(isobj(A) || issilicon(A) || isbot(A) || isdrone(A)))
|
||||
return
|
||||
else
|
||||
A.emag_act(user)
|
||||
uses = max(uses - 1, 0)
|
||||
if(!uses)
|
||||
user.visible_message("<span class='warning'>[src] fizzles and sparks. It seems like it's out of charges.</span>")
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 100, 1)
|
||||
|
||||
|
||||
/obj/item/card/emagfake
|
||||
desc = "It's a card with a magnetic strip attached to some circuitry. Closer inspection shows that this card is a poorly made replica, with a \"DonkCo\" logo stamped on the back."
|
||||
|
||||
@@ -13,11 +13,13 @@
|
||||
var/cleaning = FALSE
|
||||
var/cleaning_cycles = 10
|
||||
var/patient_laststat = null
|
||||
var/list/injection_chems = list("antitoxin", "epinephrine", "morphine", "salbutamol", "bicaridine", "kelotane")
|
||||
var/list/injection_chems = list("antitoxin", "epinephrine", "salbutamol", "bicaridine", "kelotane")
|
||||
var/eject_port = "ingestion"
|
||||
var/escape_in_progress = FALSE
|
||||
var/message_cooldown
|
||||
var/breakout_time = 300
|
||||
var/tmp/last_hearcheck = 0
|
||||
var/tmp/list/hearing_mobs
|
||||
var/list/items_preserved = list()
|
||||
var/static/list/important_items = typecacheof(list(
|
||||
/obj/item/hand_tele,
|
||||
@@ -45,10 +47,16 @@
|
||||
|
||||
// Bags are prohibited from this due to the potential explotation of objects, same with brought
|
||||
|
||||
/obj/item/dogborg/sleeper/New()
|
||||
..()
|
||||
/obj/item/dogborg/sleeper/Initialize()
|
||||
. = ..()
|
||||
update_icon()
|
||||
item_flags |= NOBLUDGEON //No more attack messages
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/dogborg/sleeper/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
go_out() //just... sanity I guess, edge case shit
|
||||
return ..()
|
||||
|
||||
/obj/item/dogborg/sleeper/Exit(atom/movable/O)
|
||||
return 0
|
||||
@@ -59,7 +67,7 @@
|
||||
return
|
||||
if(!iscarbon(target))
|
||||
return
|
||||
if(!(target.client && target.client.prefs && target.client.prefs.toggles && (target.client.prefs.toggles & MEDIHOUND_SLEEPER)))
|
||||
if(!target.client || !(target.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
||||
to_chat(user, "<span class='warning'>This person is incompatible with our equipment.</span>")
|
||||
return
|
||||
if(target.buckled)
|
||||
@@ -85,8 +93,8 @@
|
||||
injection_chems += "toxin"
|
||||
target.forceMove(src)
|
||||
target.reset_perspective(src)
|
||||
target.ExtinguishMob() //The tongue already puts out fire stacks but being put into the sleeper shouldn't allow you to keep burning.
|
||||
update_gut()
|
||||
START_PROCESSING(SSobj, src)
|
||||
user.visible_message("<span class='warning'>[hound.name]'s medical pod lights up and expands as [target.name] slips inside into their [src.name].</span>", "<span class='notice'>Your medical pod lights up as [target] slips into your [src]. Life support functions engaged.</span>")
|
||||
message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]")
|
||||
playsound(hound, 'sound/effects/bin_close.ogg', 100, 1)
|
||||
@@ -137,7 +145,8 @@
|
||||
else //You clicked eject with nothing in you, let's just reset stuff to be sure.
|
||||
items_preserved.Cut()
|
||||
cleaning = FALSE
|
||||
update_gut()
|
||||
update_gut()
|
||||
|
||||
|
||||
/obj/item/dogborg/sleeper/attack_self(mob/user)
|
||||
if(..())
|
||||
@@ -265,7 +274,6 @@
|
||||
patient_laststat = null
|
||||
patient = null
|
||||
hound.update_icons()
|
||||
return
|
||||
|
||||
//Gurgleborg process
|
||||
/obj/item/dogborg/sleeper/proc/clean_cycle()
|
||||
@@ -274,6 +282,10 @@
|
||||
if(!(I in contents))
|
||||
items_preserved -= I
|
||||
var/list/touchable_items = contents - items_preserved
|
||||
var/sound/prey_digest = sound(get_sfx("digest_prey"))
|
||||
var/sound/prey_death = sound(get_sfx("death_prey"))
|
||||
var/sound/pred_digest = sound(get_sfx("digest_pred"))
|
||||
var/sound/pred_death = sound(get_sfx("death_pred"))
|
||||
if(cleaning_cycles)
|
||||
cleaning_cycles--
|
||||
cleaning = TRUE
|
||||
@@ -293,10 +305,19 @@
|
||||
to_chat(hound,"<span class='notice'>You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.</span>")
|
||||
to_chat(T,"<span class='notice'>You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.</span>")
|
||||
hound.cell.give(30000) //Fueeeeellll
|
||||
T.stop_sound_channel(CHANNEL_PRED)
|
||||
playsound(get_turf(hound),"death_pred",50,0,-6,0,channel=CHANNEL_PRED,ignore_walls = FALSE)
|
||||
T.stop_sound_channel(CHANNEL_PRED)
|
||||
T.playsound_local("death_prey",60)
|
||||
if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
|
||||
var/turf/source = get_turf(hound)
|
||||
LAZYCLEARLIST(hearing_mobs)
|
||||
for(var/mob/H in get_hearers_in_view(3, source))
|
||||
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
|
||||
continue
|
||||
LAZYADD(hearing_mobs, H)
|
||||
last_hearcheck = world.time
|
||||
for(var/mob/H in hearing_mobs)
|
||||
if(!istype(H.loc, /obj/item/dogborg/sleeper))
|
||||
H.playsound_local(source, null, 45, falloff = 0, S = pred_death)
|
||||
else if(H in contents)
|
||||
H.playsound_local(source, null, 65, falloff = 0, S = prey_death)
|
||||
for(var/belly in T.vore_organs)
|
||||
var/obj/belly/B = belly
|
||||
for(var/atom/movable/thing in B)
|
||||
@@ -328,15 +349,22 @@
|
||||
to_chat(hound, "<span class='notice'>Your [src] is now clean. Ending self-cleaning cycle.</span>")
|
||||
cleaning = FALSE
|
||||
update_gut()
|
||||
return
|
||||
|
||||
//sound effects
|
||||
for(var/mob/living/M in contents)
|
||||
if(prob(50))
|
||||
M.stop_sound_channel(CHANNEL_PRED)
|
||||
playsound(get_turf(hound),"digest_pred",35,0,-6,0,channel=CHANNEL_PRED,ignore_walls = FALSE)
|
||||
M.stop_sound_channel(CHANNEL_PRED)
|
||||
M.playsound_local("digest_prey",60)
|
||||
if(prob(50))
|
||||
if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
|
||||
var/turf/source = get_turf(hound)
|
||||
LAZYCLEARLIST(hearing_mobs)
|
||||
for(var/mob/H in get_hearers_in_view(3, source))
|
||||
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
|
||||
continue
|
||||
LAZYADD(hearing_mobs, H)
|
||||
last_hearcheck = world.time
|
||||
for(var/mob/H in hearing_mobs)
|
||||
if(!istype(H.loc, /obj/item/dogborg/sleeper))
|
||||
H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
|
||||
else if(H in contents)
|
||||
H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
|
||||
|
||||
if(cleaning)
|
||||
addtimer(CALLBACK(src, .proc/clean_cycle), 50)
|
||||
@@ -407,7 +435,6 @@
|
||||
brigman.forceMove(src)
|
||||
brigman.reset_perspective(src)
|
||||
update_gut()
|
||||
START_PROCESSING(SSobj, src)
|
||||
user.visible_message("<span class='warning'>[hound.name]'s mobile brig clunks in series as [brigman] slips inside.</span>", "<span class='notice'>Your mobile brig groans lightly as [brigman] slips inside.</span>")
|
||||
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) // Really don't need ERP sound effects for robots
|
||||
return
|
||||
@@ -481,7 +508,6 @@
|
||||
trashman.forceMove(src)
|
||||
trashman.reset_perspective(src)
|
||||
update_gut()
|
||||
START_PROCESSING(SSobj, src)
|
||||
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>")
|
||||
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
|
||||
return
|
||||
|
||||
@@ -94,6 +94,8 @@
|
||||
target.update_handcuffed()
|
||||
if(trashtype && !dispense)
|
||||
qdel(src)
|
||||
if(iscyborg(user))
|
||||
playsound(user, "law", 50, 0)
|
||||
return
|
||||
|
||||
/obj/item/restraints/handcuffs/sinew
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
return FALSE
|
||||
|
||||
//R.speed = -2 // Gotta go fast.
|
||||
//Citadel change - makes vtecs give an ability rather than reducing the borg's speed instantly
|
||||
//Citadel change - makes vtecs give an ability rather than reducing the borg's speed instantly
|
||||
R.AddAbility(new/obj/effect/proc_holder/silicon/cyborg/vtecControl)
|
||||
|
||||
/obj/item/borg/upgrade/vtec/deactivate(mob/living/silicon/robot/R, user = usr)
|
||||
|
||||
@@ -167,6 +167,10 @@
|
||||
L.stop_pulling()
|
||||
else if(istype(AM, /obj/structure/closet))
|
||||
return
|
||||
|
||||
else if(istype(AM, /obj/effect))
|
||||
return
|
||||
|
||||
else if(isobj(AM))
|
||||
if (istype(AM, /obj/item))
|
||||
var/obj/item/I = AM
|
||||
|
||||
@@ -96,6 +96,7 @@
|
||||
/obj/structure/closet/crate/freezer/blood
|
||||
name = "blood freezer"
|
||||
desc = "A freezer containing packs of blood."
|
||||
icon_state = "surgery"
|
||||
|
||||
/obj/structure/closet/crate/freezer/blood/PopulateContents()
|
||||
. = ..()
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
active_hotspot = new /obj/effect/hotspot(src)
|
||||
active_hotspot.temperature = exposed_temperature
|
||||
active_hotspot.volume = exposed_volume
|
||||
active_hotspot.volume = exposed_volume*25
|
||||
|
||||
active_hotspot.just_spawned = (current_cycle < SSair.times_fired)
|
||||
//remove just_spawned protection if no longer processing this cell
|
||||
|
||||
@@ -650,7 +650,7 @@
|
||||
if(0)
|
||||
add_overlay(AALARM_OVERLAY_GREEN)
|
||||
overlay_state = AALARM_OVERLAY_GREEN
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
light_color = LIGHT_COLOR_BLUEGREEN
|
||||
set_light(brightness_on)
|
||||
if(1)
|
||||
add_overlay(AALARM_OVERLAY_WARN)
|
||||
|
||||
@@ -1475,7 +1475,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["mam_tail"] = "None"
|
||||
|
||||
if("tail_human")
|
||||
var/list/snowflake_tails_list = list("None" = null)
|
||||
var/list/snowflake_tails_list = list()
|
||||
for(var/path in GLOB.tails_list_human)
|
||||
var/datum/sprite_accessory/tails/human/instance = GLOB.tails_list_human[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
@@ -1492,7 +1492,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["mam_tail"] = "None"
|
||||
|
||||
if("mam_tail")
|
||||
var/list/snowflake_tails_list = list("None" = null)
|
||||
var/list/snowflake_tails_list = list()
|
||||
for(var/path in GLOB.mam_tails_list)
|
||||
var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
@@ -1568,7 +1568,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
skin_tone = new_s_tone
|
||||
|
||||
if("taur")
|
||||
var/list/snowflake_taur_list = list("Normal" = null)
|
||||
var/list/snowflake_taur_list = list()
|
||||
for(var/path in GLOB.taur_list)
|
||||
var/datum/sprite_accessory/taur/instance = GLOB.taur_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
@@ -1586,7 +1586,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["tail_lizard"] = "None"
|
||||
|
||||
if("ears")
|
||||
var/list/snowflake_ears_list = list("Normal" = null)
|
||||
var/list/snowflake_ears_list = list()
|
||||
for(var/path in GLOB.ears_list)
|
||||
var/datum/sprite_accessory/ears/instance = GLOB.ears_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
@@ -1599,7 +1599,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["ears"] = new_ears
|
||||
|
||||
if("mam_ears")
|
||||
var/list/snowflake_ears_list = list("Normal" = null)
|
||||
var/list/snowflake_ears_list = list()
|
||||
for(var/path in GLOB.mam_ears_list)
|
||||
var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
@@ -1612,7 +1612,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
features["mam_ears"] = new_ears
|
||||
|
||||
if("mam_body_markings")
|
||||
var/list/snowflake_markings_list = list("Normal" = null)
|
||||
var/list/snowflake_markings_list = list()
|
||||
for(var/path in GLOB.mam_body_markings_list)
|
||||
var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[path]
|
||||
if(istype(instance, /datum/sprite_accessory))
|
||||
@@ -2062,9 +2062,19 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
else if("xenotail" in pref_species.default_features)
|
||||
character.dna.species.mutant_bodyparts |= "xenotail"
|
||||
|
||||
if(("legs" in pref_species.default_features) && character.dna.features["legs"] == "Digitigrade Legs")
|
||||
pref_species.species_traits += DIGITIGRADE
|
||||
if("legs" in pref_species.default_features)
|
||||
if(character.dna.features["legs"] == "Digitigrade Legs")
|
||||
pref_species.species_traits += DIGITIGRADE
|
||||
character.Digitigrade_Leg_Swap(FALSE)
|
||||
|
||||
if(character.dna.features["legs"] == "Normal Legs" && DIGITIGRADE in pref_species.species_traits)
|
||||
pref_species.species_traits -= DIGITIGRADE
|
||||
character.Digitigrade_Leg_Swap(TRUE)
|
||||
|
||||
else if((!"legs" in pref_species.default_features) && DIGITIGRADE in pref_species.species_traits)
|
||||
pref_species.species_traits -= DIGITIGRADE
|
||||
character.Digitigrade_Leg_Swap(TRUE)
|
||||
|
||||
if(DIGITIGRADE in pref_species.species_traits)
|
||||
character.Digitigrade_Leg_Swap(FALSE)
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
var/antaglisting = list()
|
||||
|
||||
for(var/datum/mind/M in get_antag_minds(/datum/antagonist))
|
||||
if(!M.current || !M.current.client)
|
||||
if(!M.current || !M.current.client || isnewplayer(M.current))
|
||||
continue
|
||||
antaglisting |= M.current.client
|
||||
|
||||
@@ -104,7 +104,7 @@ GLOBAL_VAR_INIT(antag_ooc_colour, AOOC_COLOR)
|
||||
var/antaglisting = list() //Only those who have access to AOOC need to know if it's enabled or not.
|
||||
|
||||
for(var/datum/mind/M in get_antag_minds(/datum/antagonist))
|
||||
if(!M.current || !M.current.client)
|
||||
if(!M.current || !M.current.client || isnewplayer(M.current))
|
||||
continue
|
||||
antaglisting |= M.current.client
|
||||
|
||||
|
||||
@@ -54,7 +54,10 @@
|
||||
if(damaged_clothes)
|
||||
. += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe")
|
||||
if(bloody)
|
||||
. += mutable_appearance('icons/effects/blood.dmi', "shoeblood")
|
||||
if(adjusted == NORMAL_STYLE)
|
||||
. += mutable_appearance('icons/effects/blood.dmi', "shoeblood")
|
||||
else
|
||||
. += mutable_appearance('modular_citadel/icons/mob/digishoes.dmi', "shoeblood")
|
||||
|
||||
/obj/item/clothing/shoes/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals)
|
||||
slowdown = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR
|
||||
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
|
||||
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
@@ -43,3 +43,4 @@
|
||||
strip_delay = 80
|
||||
equip_delay_other = 80
|
||||
resistance_flags = NONE
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
@@ -180,6 +180,7 @@
|
||||
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine
|
||||
resistance_flags = FIRE_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//Atmospherics
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
|
||||
@@ -201,6 +202,7 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
|
||||
//Chief Engineer's hardsuit
|
||||
@@ -224,6 +226,7 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//Mining hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/mining
|
||||
@@ -254,6 +257,7 @@
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/mining/Initialize()
|
||||
. = ..()
|
||||
@@ -349,6 +353,7 @@
|
||||
allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//Elite Syndie suit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
|
||||
@@ -377,6 +382,7 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//The Owl Hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/syndi/owl
|
||||
@@ -449,6 +455,7 @@
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical)
|
||||
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//Research Director hardsuit
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/rd
|
||||
@@ -490,6 +497,7 @@
|
||||
/obj/item/hand_tele, /obj/item/aicard)
|
||||
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
|
||||
|
||||
@@ -510,6 +518,7 @@
|
||||
item_state = "sec_hardsuit"
|
||||
armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/security/Initialize()
|
||||
. = ..()
|
||||
@@ -531,6 +540,7 @@
|
||||
armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
|
||||
jetpack = /obj/item/tank/jetpack/suit
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//Captain
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/captain
|
||||
@@ -558,6 +568,7 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/captain/Initialize()
|
||||
. = ..()
|
||||
@@ -657,6 +668,7 @@
|
||||
var/recharge_rate = 1 //How quickly the shield recharges once it starts charging
|
||||
var/shield_state = "shield-old"
|
||||
var/shield_on = "shield-old"
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/Initialize()
|
||||
. = ..()
|
||||
@@ -774,6 +786,7 @@
|
||||
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
|
||||
slowdown = 0
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/shielded/syndi/Initialize()
|
||||
@@ -803,6 +816,7 @@
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat
|
||||
dog_fashion = /datum/dog_fashion/back/deathsquad
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/shielded/swat
|
||||
name = "death commando helmet"
|
||||
|
||||
@@ -191,6 +191,7 @@ Contains:
|
||||
icon_state = "ert_security"
|
||||
item_state = "ert_security"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/sec
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//ERT Engineering
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/engi
|
||||
@@ -204,6 +205,7 @@ Contains:
|
||||
icon_state = "ert_engineer"
|
||||
item_state = "ert_engineer"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/engi
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//ERT Medical
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/ert/med
|
||||
@@ -218,6 +220,7 @@ Contains:
|
||||
item_state = "ert_medical"
|
||||
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/med
|
||||
species_exception = list(/datum/species/angel)
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/eva
|
||||
name = "EVA suit"
|
||||
@@ -225,6 +228,7 @@ Contains:
|
||||
item_state = "s_suit"
|
||||
desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies."
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65)
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/helmet/space/eva
|
||||
name = "EVA helmet"
|
||||
@@ -343,6 +347,7 @@ Contains:
|
||||
slowdown = 2
|
||||
armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
strip_delay = 65
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
if(!torn && prob(50))
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
name = "green space suit"
|
||||
icon_state = "syndicate-black-med"
|
||||
item_state = "syndicate-black"
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
|
||||
//Black-orange syndicate space suit
|
||||
|
||||
@@ -9,6 +9,48 @@
|
||||
var/togglename = null
|
||||
var/suittoggled = FALSE
|
||||
|
||||
var/adjusted = NORMAL_STYLE
|
||||
mutantrace_variation = MUTANTRACE_VARIATION
|
||||
var/tauric = FALSE //Citadel Add for tauric hardsuits
|
||||
var/taurmode = NOT_TAURIC
|
||||
var/dimension_x = 32
|
||||
var/dimension_y = 32
|
||||
var/center = FALSE //Should we center the sprite?
|
||||
|
||||
/obj/item/clothing/suit/equipped(mob/user, slot)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(mutantrace_variation)
|
||||
if(DIGITIGRADE in H.dna.species.species_traits)
|
||||
adjusted = ALT_STYLE
|
||||
H.update_inv_wear_suit()
|
||||
else if(adjusted == ALT_STYLE)
|
||||
adjusted = NORMAL_STYLE
|
||||
H.update_inv_wear_suit()
|
||||
|
||||
if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None"))
|
||||
if(H.dna.features["taur"] in list("Naga", "Tentacle"))
|
||||
taurmode = SNEK_TAURIC
|
||||
if(tauric == TRUE)
|
||||
center = TRUE
|
||||
dimension_x = 64
|
||||
else if(H.dna.features["taur"] in list("Fox", "Wolf", "Otie", "Drake", "Lab", "Shepherd", "Husky", "Eevee", "Panther", "Tajaran", "Horse", "Cow"))
|
||||
taurmode = PAW_TAURIC
|
||||
if(tauric == TRUE)
|
||||
center = TRUE
|
||||
dimension_x = 64
|
||||
/*
|
||||
else if(H.dna.features["taur"] == "Horse" || "Cow")
|
||||
taurmode = HOOF_TAURIC //tweak this for when the exotics get their own suits, if ever.
|
||||
center = TRUE
|
||||
dimension_x = 64
|
||||
*/
|
||||
else
|
||||
taurmode = NOT_TAURIC
|
||||
H.update_inv_wear_suit()
|
||||
|
||||
|
||||
/obj/item/clothing/suit/worn_overlays(isinhands = FALSE)
|
||||
. = list()
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
item_state = "armoralt"
|
||||
blood_overlay_type = "armor"
|
||||
dog_fashion = /datum/dog_fashion/back
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/alt
|
||||
desc = "A Type I armored vest that provides decent protection against most types of damage."
|
||||
|
||||
@@ -23,10 +23,11 @@
|
||||
slowdown = 1
|
||||
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/pen, /obj/item/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR
|
||||
strip_delay = 70
|
||||
equip_delay_other = 70
|
||||
resistance_flags = ACID_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
//Standard biosuit, orange stripe
|
||||
/obj/item/clothing/head/bio_hood/general
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar)
|
||||
slowdown = 1
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
|
||||
armor = list("melee" = 15, "bullet" = 5, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50)
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR
|
||||
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
||||
@@ -29,6 +30,7 @@
|
||||
strip_delay = 60
|
||||
equip_delay_other = 60
|
||||
resistance_flags = FIRE_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/suit/fire/firefighter
|
||||
icon_state = "firesuit"
|
||||
@@ -83,7 +85,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
slowdown = 2
|
||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAUR
|
||||
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
@@ -91,6 +93,7 @@
|
||||
strip_delay = 70
|
||||
equip_delay_other = 70
|
||||
resistance_flags = NONE
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
|
||||
/obj/item/clothing/head/bomb_hood/security
|
||||
@@ -143,6 +146,7 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30)
|
||||
strip_delay = 60
|
||||
equip_delay_other = 60
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAUR
|
||||
resistance_flags = NONE
|
||||
rad_flags = RAD_PROTECT_CONTENTS
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
siemens_coefficient = 0.5
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomsquaddie/dredd
|
||||
name = "Judge Armor"
|
||||
@@ -17,6 +18,7 @@
|
||||
item_state = "dredd-suit"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
|
||||
/obj/item/clothing/suit/armor/xcomarmor
|
||||
@@ -30,6 +32,7 @@
|
||||
siemens_coefficient = 0.5
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/armor/vest/neorussian
|
||||
name = "neo-Russian vest"
|
||||
@@ -38,6 +41,7 @@
|
||||
item_state = "nr_vest"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/armor/doomguy
|
||||
name = "Doomguy's armor"
|
||||
@@ -49,6 +53,7 @@
|
||||
armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0)
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
|
||||
/obj/item/clothing/suit/kaminacape
|
||||
@@ -58,6 +63,7 @@
|
||||
body_parts_covered = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/officercoat
|
||||
name = "Officer's Coat"
|
||||
@@ -65,6 +71,7 @@
|
||||
icon_state = "officersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/soldiercoat
|
||||
name = "Soldier's Coat"
|
||||
@@ -72,6 +79,7 @@
|
||||
icon_state = "soldiersuit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/russofurcoat
|
||||
name = "russian fur coat"
|
||||
@@ -81,6 +89,7 @@
|
||||
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/doshjacket
|
||||
name = "Plasterer's Jacket"
|
||||
@@ -89,6 +98,7 @@
|
||||
body_parts_covered = CHEST|GROIN|ARMS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/maidapron
|
||||
name = "Apron"
|
||||
@@ -97,6 +107,7 @@
|
||||
body_parts_covered = CHEST|GROIN
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/clownpiece
|
||||
name = "small fairy wings"
|
||||
@@ -105,6 +116,7 @@
|
||||
body_parts_covered = 0
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/clownpiece/flying
|
||||
name = "small fairy wings"
|
||||
@@ -112,6 +124,7 @@
|
||||
icon_state = "clownpiece-fly"
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
/obj/item/clothing/suit/raincoat
|
||||
name = "Raincoat"
|
||||
@@ -120,5 +133,6 @@
|
||||
body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS
|
||||
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
|
||||
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi'
|
||||
mutantrace_variation = NO_MUTANTRACE_VARIATION
|
||||
|
||||
|
||||
|
||||
@@ -65,6 +65,8 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(DIGITIGRADE in H.dna.species.species_traits)
|
||||
suit_style = DIGITIGRADE_SUIT_STYLE
|
||||
else
|
||||
suit_style = NORMAL_SUIT_STYLE
|
||||
H.update_inv_w_uniform()
|
||||
|
||||
if(attached_accessory && slot != SLOT_HANDS && ishuman(user))
|
||||
|
||||
@@ -148,6 +148,7 @@
|
||||
new /obj/item/stack/spacecash/c200(drop_location())
|
||||
credits_stored -= 200
|
||||
to_chat(user,"<span class='notice'>You retrieve the siphoned credits!</span>")
|
||||
credits_stored = 0
|
||||
|
||||
|
||||
/obj/machinery/shuttle_scrambler/proc/send_notification()
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
icon_state = "mint"
|
||||
bitesize = 1
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list("minttoxin" = 1)
|
||||
list_reagents = list("minttoxin" = 2)
|
||||
filling_color = "#800000"
|
||||
foodtype = TOXIC | SUGAR
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
if(last_check_time + 50 < world.time)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.mind && H.mind.assigned_role == "Security Officer" && !H.has_trait(TRAIT_AGEUSIA))
|
||||
if(H.mind && H.mind.assigned_role == "Security Officer" || H.mind.assigned_role == "Detective" || H.mind.assigned_role == "Warden" || H.mind.assigned_role == "Head of Security" && !H.has_trait(TRAIT_AGEUSIA))
|
||||
to_chat(H,"<span class='notice'>I love this taste!</span>")
|
||||
H.adjust_disgust(-5 + -2.5 * fraction)
|
||||
GET_COMPONENT_FROM(mood, /datum/component/mood, H)
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
active_power_usage = 100
|
||||
circuit = /obj/item/circuitboard/machine/microwave
|
||||
pass_flags = PASSTABLE
|
||||
light_color = LIGHT_COLOR_YELLOW
|
||||
light_power = 3
|
||||
var/operating = FALSE // Is it on?
|
||||
var/dirty = 0 // = {0..100} Does it need cleaning?
|
||||
var/broken = 0 // ={0,1,2} How broken is it???
|
||||
@@ -267,12 +269,14 @@
|
||||
soundloop.start()
|
||||
operating = TRUE
|
||||
icon_state = "mw1"
|
||||
set_light(1.5)
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/microwave/proc/abort()
|
||||
operating = FALSE // Turn it off again aferwards
|
||||
icon_state = "mw"
|
||||
updateUsrDialog()
|
||||
set_light(0)
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/microwave/proc/stop()
|
||||
@@ -298,6 +302,7 @@
|
||||
if(prob(50))
|
||||
new /obj/item/reagent_containers/food/snacks/badrecipe(src)
|
||||
qdel(S)
|
||||
set_light(0)
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/microwave/proc/broke()
|
||||
@@ -310,6 +315,7 @@
|
||||
flags_1 = null //So you can't add condiments
|
||||
operating = FALSE // Turn it off again aferwards
|
||||
updateUsrDialog()
|
||||
set_light(0)
|
||||
soundloop.stop()
|
||||
|
||||
/obj/machinery/microwave/Topic(href, href_list)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
||||
resistance_flags = FIRE_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/hooded/explorer
|
||||
name = "explorer hood"
|
||||
@@ -63,6 +64,7 @@
|
||||
clothing_flags = THICKMATERIAL //not spaceproof
|
||||
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
slowdown = 0
|
||||
armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
||||
@@ -121,7 +123,7 @@
|
||||
/****************SEVA Suit and Mask****************/
|
||||
|
||||
/obj/item/clothing/suit/hooded/seva
|
||||
name = "SEVA suit"
|
||||
name = "SEVA Suit"
|
||||
desc = "A fire-proof suit for exploring hot environments."
|
||||
icon_state = "seva"
|
||||
item_state = "seva"
|
||||
@@ -133,9 +135,10 @@
|
||||
armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/hooded/seva
|
||||
name = "SEVA hood"
|
||||
name = "SEVA Hood"
|
||||
desc = "A fire-proof hood for exploring hot environments."
|
||||
icon_state = "seva"
|
||||
item_state = "seva"
|
||||
@@ -145,6 +148,19 @@
|
||||
armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 25, "bio" = 50, "rad" = 25, "fire" = 100, "acid" = 25)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_WEAKNESS
|
||||
|
||||
/obj/item/clothing/mask/gas/seva
|
||||
name = "SEVA Mask"
|
||||
desc = "A face-covering plate that can be connected to an air supply. Intended for use with the SEVA Suit."
|
||||
icon_state = "seva"
|
||||
clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
item_state = "seva"
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/****************Exo-Suit and Mask****************/
|
||||
|
||||
/obj/item/clothing/suit/hooded/exo
|
||||
@@ -162,6 +178,7 @@
|
||||
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
tauric = TRUE //Citadel Add for tauric hardsuits
|
||||
|
||||
/obj/item/clothing/head/hooded/exo
|
||||
name = "Exo-hood"
|
||||
@@ -173,4 +190,17 @@
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
armor = list("melee" = 65, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 60, "bio" = 25, "rad" = 10, "fire" = 0, "acid" = 0)
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
resistance_flags = FIRE_PROOF | GOLIATH_RESISTANCE
|
||||
|
||||
/obj/item/clothing/mask/gas/exo
|
||||
name = "Exosuit Mask"
|
||||
desc = "A face-covering mask that can be connected to an air supply. Intended for use with the Exosuit."
|
||||
icon_state = "exo"
|
||||
clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
||||
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
item_state = "exo"
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.01
|
||||
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
|
||||
resistance_flags = FIRE_PROOF
|
||||
@@ -73,6 +73,9 @@
|
||||
|
||||
/obj/item/twohanded/required/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams)
|
||||
. = ..()
|
||||
if(istype(target, /obj/item/crusher_trophy))
|
||||
var/obj/item/crusher_trophy/T = target
|
||||
T.add_to(src, user)
|
||||
if(!proximity_flag && charged)//Mark a target, or mine a tile.
|
||||
var/turf/proj_turf = user.loc
|
||||
if(!isturf(proj_turf))
|
||||
|
||||
@@ -99,6 +99,8 @@ GLOBAL_LIST(labor_sheet_values)
|
||||
if("move_shuttle")
|
||||
if(!alone_in_area(get_area(src), usr))
|
||||
to_chat(usr, "<span class='warning'>Prisoners are only allowed to be released while alone.</span>")
|
||||
else if(!check_auth())
|
||||
to_chat(usr, "<span class='warning'>Prisoners are only allowed to be released when they reach their point goal.</span>")
|
||||
else
|
||||
switch(SSshuttle.moveShuttle("laborcamp", "laborcamp_home", TRUE))
|
||||
if(1)
|
||||
|
||||
@@ -308,8 +308,10 @@
|
||||
switch(selection)
|
||||
if("Exo-suit")
|
||||
new /obj/item/clothing/suit/hooded/exo(drop_location)
|
||||
new /obj/item/clothing/mask/gas/exo(drop_location)
|
||||
if("SEVA suit")
|
||||
new /obj/item/clothing/suit/hooded/seva(drop_location)
|
||||
new /obj/item/clothing/mask/gas/seva(drop_location)
|
||||
|
||||
SSblackbox.record_feedback("tally", "suit_voucher_redeemed", 1, selection)
|
||||
qdel(voucher)
|
||||
@@ -53,3 +53,4 @@
|
||||
var/creamed = FALSE //to use with creampie overlays
|
||||
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot))
|
||||
var/lastpuke = 0
|
||||
var/last_fire_update
|
||||
|
||||
@@ -122,6 +122,12 @@
|
||||
|
||||
///FIRE CODE
|
||||
/mob/living/carbon/human/handle_fire()
|
||||
if(!last_fire_update)
|
||||
last_fire_update = fire_stacks
|
||||
if((fire_stacks > HUMAN_FIRE_STACK_ICON_NUM && last_fire_update <= HUMAN_FIRE_STACK_ICON_NUM) || (fire_stacks <= HUMAN_FIRE_STACK_ICON_NUM && last_fire_update > HUMAN_FIRE_STACK_ICON_NUM))
|
||||
last_fire_update = fire_stacks
|
||||
update_fire()
|
||||
|
||||
..()
|
||||
if(dna)
|
||||
dna.species.handle_fire(src)
|
||||
@@ -154,6 +160,7 @@
|
||||
|
||||
/mob/living/carbon/human/ExtinguishMob()
|
||||
if(!dna || !dna.species.ExtinguishMob(src))
|
||||
last_fire_update = null
|
||||
..()
|
||||
//END FIRE CODE
|
||||
|
||||
|
||||
@@ -528,22 +528,22 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
|
||||
if("tail_lizard" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || (!H.dna.features["taur"] == "None"))
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
|
||||
bodyparts_to_add -= "tail_lizard"
|
||||
|
||||
if("waggingtail_lizard" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || (!H.dna.features["taur"] == "None"))
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
|
||||
bodyparts_to_add -= "waggingtail_lizard"
|
||||
else if ("tail_lizard" in mutant_bodyparts)
|
||||
bodyparts_to_add -= "waggingtail_lizard"
|
||||
|
||||
if("tail_human" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || (!H.dna.features["taur"] == "None"))
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
|
||||
bodyparts_to_add -= "tail_human"
|
||||
|
||||
|
||||
if("waggingtail_human" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || (!H.dna.features["taur"] == "None"))
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
|
||||
bodyparts_to_add -= "waggingtail_human"
|
||||
else if ("tail_human" in mutant_bodyparts)
|
||||
bodyparts_to_add -= "waggingtail_human"
|
||||
@@ -599,11 +599,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
//Other Races
|
||||
if("mam_tail" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT) || !H.dna.features["taur"] == "None")
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
|
||||
bodyparts_to_add -= "mam_tail"
|
||||
|
||||
if("mam_waggingtail" in mutant_bodyparts)
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT || !H.dna.features["taur"] == "None"))
|
||||
if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None"))
|
||||
bodyparts_to_add -= "mam_waggingtail"
|
||||
else if ("mam_tail" in mutant_bodyparts)
|
||||
bodyparts_to_add -= "mam_waggingtail"
|
||||
@@ -613,8 +613,9 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
bodyparts_to_add -= "mam_ears"
|
||||
|
||||
if("taur" in mutant_bodyparts)
|
||||
if(!H.dna.features["taur"] || H.dna.features["taur"] == "None")
|
||||
if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)))
|
||||
bodyparts_to_add -= "taur"
|
||||
|
||||
//END EDIT
|
||||
|
||||
//Digitigrade legs are stuck in the phantom zone between true limbs and mutant bodyparts. Mainly it just needs more agressive updating than most limbs.
|
||||
@@ -629,7 +630,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
species_traits += DIGITIGRADE
|
||||
var/should_be_squished = FALSE
|
||||
if(H.wear_suit)
|
||||
if((H.wear_suit.flags_inv & HIDEJUMPSUIT) || ((H.wear_suit.body_parts_covered & LEGS) && (H.wear_suit.body_parts_covered & FEET)))
|
||||
if(H.wear_suit.mutantrace_variation == NO_MUTANTRACE_VARIATION) //we got digitigrade suits now fam
|
||||
should_be_squished = TRUE
|
||||
if(H.w_uniform && !H.wear_suit)
|
||||
if(H.w_uniform.mutantrace_variation == NO_MUTANTRACE_VARIATION)
|
||||
@@ -1431,9 +1432,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(!target.combatmode) // CITADEL CHANGE
|
||||
randn += -10 //CITADEL CHANGE - being out of combat mode makes it easier for you to get disarmed
|
||||
if(user.resting) //CITADEL CHANGE
|
||||
randn += 60 //CITADEL CHANGE - No kosher disarming if you're resting
|
||||
randn += 100 //CITADEL CHANGE - No kosher disarming if you're resting
|
||||
if(!user.combatmode) //CITADEL CHANGE
|
||||
randn += 25 //CITADEL CHANGE - Makes it harder to disarm outside of combat mode
|
||||
if(user.pulling == target)
|
||||
randn += -20 //If you have the time to get someone in a grab, you should have a greater chance at snatching the thing in their hand. Will be made completely obsolete by the grab rework but i've got a poor track record for releasing big projects on time so w/e i guess
|
||||
|
||||
if(randn <= 35)//CIT CHANGE - changes this back to a 35% chance to accomodate for the above being commented out in favor of right-click pushing
|
||||
var/obj/item/I = null
|
||||
|
||||
@@ -130,6 +130,8 @@ There are several things that need to be remembered:
|
||||
t_color = "[t_color]_d_l"
|
||||
else if(U.adjusted == NORMAL_STYLE)
|
||||
t_color = "[t_color]_l"
|
||||
else
|
||||
U.alternate_worn_icon = null
|
||||
|
||||
var/mutable_appearance/uniform_overlay
|
||||
|
||||
@@ -284,6 +286,8 @@ There are several things that need to be remembered:
|
||||
if(S.mutantrace_variation)
|
||||
if(S.adjusted == ALT_STYLE)
|
||||
S.alternate_worn_icon = 'modular_citadel/icons/mob/digishoes.dmi'
|
||||
else
|
||||
S.alternate_worn_icon = null
|
||||
|
||||
overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = shoes.icon_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi'))
|
||||
var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER]
|
||||
@@ -363,18 +367,35 @@ There are several things that need to be remembered:
|
||||
var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_WEAR_SUIT]
|
||||
inv.update_icon()
|
||||
|
||||
if(istype(wear_suit, /obj/item/clothing/suit))
|
||||
if(wear_suit)
|
||||
var/obj/item/clothing/suit/S = wear_suit
|
||||
wear_suit.screen_loc = ui_oclothing
|
||||
if(client && hud_used && hud_used.hud_shown)
|
||||
if(hud_used.inventory_shown)
|
||||
client.screen += wear_suit
|
||||
update_observer_view(wear_suit,1)
|
||||
|
||||
overlays_standing[SUIT_LAYER] = wear_suit.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.alternate_worn_icon) ? wear_suit.alternate_worn_icon : 'icons/mob/suit.dmi'))
|
||||
if(S.mutantrace_variation)
|
||||
if(S.adjusted == ALT_STYLE)
|
||||
S.alternate_worn_icon = 'modular_citadel/icons/mob/suit_digi.dmi'
|
||||
else
|
||||
S.alternate_worn_icon = null
|
||||
|
||||
if(S.tauric == TRUE)
|
||||
if(S.taurmode == SNEK_TAURIC)
|
||||
S.alternate_worn_icon = 'modular_citadel/icons/mob/taur_naga.dmi'
|
||||
if(S.taurmode == PAW_TAURIC)
|
||||
S.alternate_worn_icon = 'modular_citadel/icons/mob/taur_canine.dmi'
|
||||
// if(S.taurmode == HOOF_TAURIC) //commenting out for eventual pede/spider/exotics
|
||||
// S.alternate_worn_icon = 'modular_citadel/icons/mob/taur_hooved.dmi'
|
||||
|
||||
overlays_standing[SUIT_LAYER] = S.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.alternate_worn_icon) ? S.alternate_worn_icon : 'icons/mob/suit.dmi'))
|
||||
var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER]
|
||||
if(OFFSET_SUIT in dna.species.offset_features)
|
||||
suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1]
|
||||
suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2]
|
||||
if(S.center)
|
||||
suit_overlay = center_image(suit_overlay, S.dimension_x, S.dimension_y)
|
||||
overlays_standing[SUIT_LAYER] = suit_overlay
|
||||
update_hair()
|
||||
update_mutant_bodyparts()
|
||||
|
||||
@@ -1020,7 +1020,7 @@
|
||||
client.move_delay = world.time + movement_delay()
|
||||
lying_prev = lying
|
||||
if(canmove && !intentionalresting && iscarbon(src) && client && client.prefs && client.prefs.autostand)//CIT CHANGE - adds autostanding as a preference
|
||||
resist_a_rest(TRUE)//CIT CHANGE - ditto
|
||||
addtimer(CALLBACK(src, .proc/resist_a_rest, TRUE), 0) //CIT CHANGE - ditto
|
||||
return canmove
|
||||
|
||||
/mob/living/proc/AddAbility(obj/effect/proc_holder/A)
|
||||
|
||||
@@ -52,8 +52,9 @@
|
||||
icon_state = "apc0"
|
||||
use_power = NO_POWER_USE
|
||||
req_access = null
|
||||
max_integrity = 200
|
||||
max_integrity = 300
|
||||
integrity_failure = 50
|
||||
var/damage_deflection = 10
|
||||
resistance_flags = FIRE_PROOF
|
||||
interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON
|
||||
|
||||
@@ -150,7 +151,7 @@
|
||||
if (!req_access)
|
||||
req_access = list(ACCESS_ENGINE_EQUIP)
|
||||
if (!armor)
|
||||
armor = list("melee" = 20, "bullet" = 20, "laser" = 10, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50)
|
||||
armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50)
|
||||
..()
|
||||
GLOB.apcs_list += src
|
||||
|
||||
@@ -742,6 +743,11 @@
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
set_broken()
|
||||
|
||||
/obj/machinery/power/apc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee" && damage_amount < damage_deflection)
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/apc/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(!(stat & BROKEN))
|
||||
|
||||
@@ -177,6 +177,7 @@
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange)
|
||||
item_state = null
|
||||
icon_state = "wormhole_projector"
|
||||
pin = null
|
||||
var/obj/effect/portal/p_blue
|
||||
var/obj/effect/portal/p_orange
|
||||
var/atmos_link = FALSE
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
/obj/item/reagent_containers/pill/patch/attack(mob/living/L, mob/user)
|
||||
if(ishuman(L))
|
||||
var/obj/item/bodypart/affecting = L.get_bodypart(check_zone(user.zone_selected))
|
||||
if(!L.can_inject(user, 1, affecting)) //like monkey code, thickmaterial stops patches
|
||||
return
|
||||
if(!affecting)
|
||||
to_chat(user, "<span class='warning'>The limb is missing!</span>")
|
||||
return
|
||||
|
||||
@@ -185,6 +185,7 @@
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////Alien Surgery Tools////////////
|
||||
/////////////////////////////////////////
|
||||
@@ -605,3 +606,95 @@
|
||||
id = "surgery_zombie"
|
||||
surgery = /datum/surgery/advanced/necrotic_revival
|
||||
research_icon_state = "surgery_head"
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Medical Prosthetics//////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/basic_l_arm
|
||||
name = "Surplus prosthetic left arm"
|
||||
desc = "Basic outdated and fragile prosthetic left arm."
|
||||
id = "basic_l_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/l_arm/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/basic_r_arm
|
||||
name = "Surplus prosthetic right arm"
|
||||
desc = "Basic outdated and fragile prosthetic left arm."
|
||||
id = "basic_r_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/r_arm/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/basic_l_leg
|
||||
name = "Surplus prosthetic left leg"
|
||||
desc = "Basic outdated and fragile prosthetic left leg."
|
||||
id = "basic_l_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/l_leg/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/basic_r_leg
|
||||
name = "Surplus prosthetic right leg"
|
||||
desc = "Basic outdated and fragile prosthetic right leg."
|
||||
id = "basic_r_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/r_leg/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_r_leg
|
||||
name = "Advanced prosthetic right leg"
|
||||
desc = "A renforced prosthetic right leg."
|
||||
id = "adv_r_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/r_leg/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_l_leg
|
||||
name = "Advanced prosthetic left leg"
|
||||
desc = "A renforced prosthetic left leg."
|
||||
id = "adv_l_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/l_leg/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_l_arm
|
||||
name = "Advanced prosthetic left arm"
|
||||
desc = "A renforced prosthetic left arm."
|
||||
id = "adv_l_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/l_arm/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_r_arm
|
||||
name = "Advanced prosthetic right arm"
|
||||
desc = "A renforced prosthetic right arm."
|
||||
id = "adv_r_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/r_arm/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -71,6 +71,24 @@
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/surplus_lims
|
||||
id = "surplus_lims"
|
||||
display_name = "Basic Prosthetics"
|
||||
description = "Basic fragile lims for the impaired."
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("basic_l_arm", "basic_r_arm", "basic_r_leg", "basic_l_leg")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) // You can knock them off with a glass shard...
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/advance_lims
|
||||
id = "advance_lims"
|
||||
display_name = "Upgraded Prosthetics"
|
||||
description = "Reinforced prosthetics for the impaired."
|
||||
prereq_ids = list("adv_biotech", "surplus_lims")
|
||||
design_ids = list("adv_l_arm", "adv_r_arm", "adv_r_leg", "adv_l_leg")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
/////////////////////////Advanced Surgery/////////////////////////
|
||||
/datum/techweb_node/adv_surgery
|
||||
id = "adv_surgery"
|
||||
|
||||
@@ -305,3 +305,10 @@
|
||||
else
|
||||
S.adjusted = ALT_STYLE
|
||||
H.update_inv_shoes()
|
||||
if(H.wear_suit)
|
||||
var/obj/item/clothing/suit/S = H.wear_suit
|
||||
if(swap_back)
|
||||
S.adjusted = NORMAL_STYLE
|
||||
else
|
||||
S.adjusted = ALT_STYLE
|
||||
H.update_inv_wear_suit()
|
||||
@@ -235,7 +235,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
// Surplus lims
|
||||
/obj/item/bodypart/l_arm/robot/surplus
|
||||
name = "surplus prosthetic left arm"
|
||||
desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing."
|
||||
@@ -268,6 +268,38 @@
|
||||
burn_reduction = 0
|
||||
max_damage = 20
|
||||
|
||||
// Upgraded Surplus lims
|
||||
/obj/item/bodypart/l_arm/robot/surplus_upgraded
|
||||
name = "reinforced surplus prosthetic left arm"
|
||||
desc = "A skeletal, robotic limb. This one is reinforced to provide better protection."
|
||||
icon = 'icons/mob/augmentation/surplus_augments.dmi'
|
||||
brute_reduction = 1
|
||||
burn_reduction = 1
|
||||
max_damage = 30
|
||||
|
||||
/obj/item/bodypart/r_arm/robot/surplus_upgraded
|
||||
name = "reinforced surplus prosthetic right arm"
|
||||
desc = "A skeletal, robotic limb. This one is reinforced to provide better protection."
|
||||
icon = 'icons/mob/augmentation/surplus_augments.dmi'
|
||||
brute_reduction = 1
|
||||
burn_reduction = 1
|
||||
max_damage = 30
|
||||
|
||||
/obj/item/bodypart/l_leg/robot/surplus_upgraded
|
||||
name = "reinforced surplus prosthetic left leg"
|
||||
desc = "A skeletal, robotic limb. This one is reinforced to provide better protection."
|
||||
icon = 'icons/mob/augmentation/surplus_augments.dmi'
|
||||
brute_reduction = 1
|
||||
burn_reduction = 1
|
||||
max_damage = 30
|
||||
|
||||
/obj/item/bodypart/r_leg/robot/surplus_upgraded
|
||||
name = "reinforced surplus prosthetic right leg"
|
||||
desc = "A skeletal, robotic limb. This one is reinforced to provide better protection."
|
||||
icon = 'icons/mob/augmentation/surplus_augments.dmi'
|
||||
brute_reduction = 1
|
||||
burn_reduction = 1
|
||||
max_damage = 30
|
||||
|
||||
#undef ROBOTIC_LIGHT_BRUTE_MSG
|
||||
#undef ROBOTIC_MEDIUM_BRUTE_MSG
|
||||
|
||||
Reference in New Issue
Block a user