This commit is contained in:
Ghommie
2019-12-09 00:04:22 +01:00
375 changed files with 11630 additions and 8094 deletions
@@ -63,16 +63,6 @@
category = SLOT_IN_BACKPACK
path = /obj/item/dildo/custom
/datum/gear/paperbin
name = "Paper Bin"
category = SLOT_IN_BACKPACK
path = /obj/item/paper_bin
/datum/gear/crayons
name = "Box of crayons"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/crayons
/datum/gear/toykatana
name = "Toy Katana"
category = SLOT_IN_BACKPACK
@@ -99,4 +89,30 @@
/datum/gear/tape
name = "Spare cassette tape"
category = SLOT_IN_BACKPACK
path = /obj/item/tape/random
path = /obj/item/tape/random
/datum/gear/newspaper
name = "Newspaper"
category = SLOT_IN_BACKPACK
path = /obj/item/newspaper
/datum/gear/paperbin
name = "Paper Bin"
category = SLOT_IN_BACKPACK
path = /obj/item/paper_bin
/datum/gear/crayons
name = "Box of crayons"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/crayons
/datum/gear/multipen
name = "A multicolored pen"
category = SLOT_IN_BACKPACK
path = /obj/item/pen/fourcolor
/datum/gear/fountainpen
name = "A fancy pen"
category = SLOT_IN_BACKPACK
path = /obj/item/pen/fountain
cost = 2
@@ -7,3 +7,10 @@
name = "Fake moustache"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/fakemoustache
/datum/gear/joy
name = "Joy mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/joy
cost = 9
@@ -64,6 +64,11 @@
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat
/datum/gear/coat/aformal
name = "Assistant's formal winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/aformal
/* Commented out until it is "balanced"
/datum/gear/coat/sec
name = "Security winter coat"
@@ -77,45 +82,43 @@
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/medical
restricted_roles = list("Chief Medical Officer", "Medical Doctor") // Reserve it to Medical Doctors and their boss, the Chief Medical Officer
/* Commented out until there is a Chemistry Winter Coat
/datum/gear/coat/med/chem
name = "Chemistry winter coat"
/datum/gear/coat/robotics
name = "Robotics winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/medical/chemistry
restricted_roles = list("Chief Medical Officer", "Chemist") // Reserve it to Chemists and their boss, the Chief Medical Officer
*/
path = /obj/item/clothing/suit/hooded/wintercoat/robotics
restricted_roles = list("Research Director", "Roboticist")
/datum/gear/coat/sci
name = "Science winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/science
restricted_roles = list("Research Director", "Scientist", "Roboticist") // Reserve it to the Science Departement
/datum/gear/coat/eng
name = "Engineering winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/engineering
restricted_roles = list("Chief Engineer", "Station Engineer") // Reserve it to Station Engineers and their boss, the Chief Engineer
/datum/gear/coat/eng/atmos
name = "Atmospherics winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
restricted_roles = list("Chief Engineer", "Atmospheric Technician") // Reserve it to Atmos Techs and their boss, the Chief Engineer
/datum/gear/coat/hydro
name = "Hydroponics winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/hydro
restricted_roles = list("Head of Personnel", "Botanist") // Reserve it to Botanists and their boss, the Head of Personnel
/datum/gear/coat/cargo
name = "Cargo winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/cargo
restricted_roles = list("Quartermaster", "Cargo Technician") // Reserve it to Cargo Techs and their boss, the Quartermaster
/datum/gear/coat/miner
name = "Mining winter coat"
category = SLOT_WEAR_SUIT
@@ -73,6 +73,11 @@
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/skirt/purple
/datum/gear/skirtplaid
name = "Plaid skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/plaid_skirt
/datum/gear/schoolgirlblue
name = "Blue Schoolgirl Uniform"
category = SLOT_W_UNIFORM
@@ -108,6 +113,11 @@
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/camo
/datum/gear/athleticshorts
name = "Athletic Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/shorts
/datum/gear/bjeans
name = "Black Jeans"
category = SLOT_W_UNIFORM
@@ -180,6 +190,11 @@
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/bb_sweater/blue
/datum/gear/keyholesweater
name = "Keyhole Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/keyholesweater
/datum/gear/polykilt
name = "Polychromic Kilt"
category = SLOT_W_UNIFORM
@@ -313,4 +328,17 @@
/datum/gear/gear_harnesses
name = "Gear Harness"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/gear_harness
path = /obj/item/clothing/under/gear_harness
/datum/gear/pinkstripper
name = "Pink stripper outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/stripper_pink
cost = 3
/datum/gear/greenstripper
name = "Green stripper outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/stripper_green
cost = 3
@@ -1,44 +0,0 @@
/obj/item/clothing/glasses/phantomthief
name = "suspicious paper mask"
desc = "A cheap, Syndicate-branded paper face mask. They'll never see it coming."
alternate_worn_icon = 'icons/mob/mask.dmi'
icon = 'icons/obj/clothing/masks.dmi'
icon_state = "s-ninja"
item_state = "s-ninja"
/obj/item/clothing/glasses/phantomthief/ComponentInitialize()
. = ..()
AddComponent(/datum/component/wearertargeting/phantomthief)
/obj/item/clothing/glasses/phantomthief/syndicate
name = "suspicious plastic mask"
desc = "A cheap, bulky, Syndicate-branded plastic face mask. You have to break in to break out."
var/nextadrenalinepop
/obj/item/clothing/glasses/phantomthief/syndicate/examine(mob/user)
. = ..()
if(user.get_item_by_slot(SLOT_GLASSES) == src)
if(world.time >= nextadrenalinepop)
. += "<span class='notice'>The built-in adrenaline injector is ready for use.</span>"
else
. += "<span class='notice'>[DisplayTimeText(nextadrenalinepop - world.time)] left before the adrenaline injector can be used again."
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)
nextadrenalinepop = world.time + 5 MINUTES
user.reagents.add_reagent("syndicateadrenals", 5)
user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
/obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot)
. = ..()
if(!istype(user))
return
if(slot != SLOT_GLASSES)
return
RegisterSignal(user, COMSIG_COMBAT_TOGGLED, .proc/injectadrenaline)
/obj/item/clothing/glasses/phantomthief/syndicate/dropped(mob/user)
. = ..()
if(!istype(user))
return
UnregisterSignal(user, COMSIG_COMBAT_TOGGLED)
@@ -1,20 +0,0 @@
/*/////////////////////////////////////////////////////////////////////////////////
/////// ///////
/////// Cit's exclusive hats, helmets, etc. go here ///////
/////// ///////
*//////////////////////////////////////////////////////////////////////////////////
/obj/item/clothing/head/flakhelm //Actually the M1 Helmet
name = "flak helmet"
icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi'
icon_state = "m1helm"
item_state = "helmet"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0.1, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = -15)
desc = "A dilapidated helmet used in ancient wars. This one is brittle and essentially useless. An ace of spades is tucked into the band around the outer shell."
pocket_storage_component_path = /datum/component/storage/concrete/pockets/tiny/spacenam //So you can stuff other things in the elastic band instead of it simply being a fluff thing.
//The "pocket" for the M1 helmet so you can tuck things into the elastic band
/datum/component/storage/concrete/pockets/tiny/spacenam
attack_hand_interact = TRUE //So you can actually see what you stuff in there
@@ -28,16 +28,3 @@
desc = "conceal your face in shame with this nanotrasen brand hood"
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/suit/flakjack
name = "flak jacket"
desc = "A dilapidated jacket made of a supposedly bullet-proof material (Hint: It isn't.). Smells faintly of napalm."
icon = 'modular_citadel/icons/obj/clothing/space_nam.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/clothing/space_nam.dmi'
icon_state = "flakjack"
item_state = "redtag"
blood_overlay_type = "armor"
body_parts_covered = CHEST
resistance_flags = NONE
mutantrace_variation = NO_MUTANTRACE_VARIATION
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid
@@ -493,6 +493,7 @@
item_state = "blueberet"
icon = 'icons/obj/custom.dmi'
alternate_worn_icon = 'icons/mob/custom_w.dmi'
dynamic_hair_suffix = ""
/obj/item/clothing/head/flight
name = "flight goggles"
@@ -18,30 +18,32 @@
return FALSE
return .
/mob/living/carbon/proc/toggle_combat_mode(forced)
if(recoveringstam)
return TRUE
/mob/living/carbon/proc/toggle_combat_mode(forced, silent)
if(!forced)
for(var/datum/status_effect/S in status_effects)
if(recoveringstam || stat != CONSCIOUS)
return TRUE
for(var/i in status_effects)
var/datum/status_effect/S = i
if(S.blocks_combatmode)
return TRUE
combatmode = !combatmode
if(voremode)
toggle_vore_mode()
if(combatmode)
playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay!
else
playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above!
if(!silent)
if(combatmode)
if(world.time >= combatmessagecooldown)
if(a_intent != INTENT_HELP)
visible_message("<span class='warning'>[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].</span>")
else
visible_message("<span class='notice'>[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].</span>")
playsound_local(src, 'sound/misc/ui_toggle.ogg', 50, FALSE, pressure_affected = FALSE) //Sound from interbay!
else
playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above!
if(client)
client.show_popup_menus = !combatmode // So we can right-click for alternate actions and all that other good shit. Also moves examine to shift+rightclick to make it possible to attack while sprinting
if(hud_used && hud_used.static_inventory)
for(var/obj/screen/combattoggle/selector in hud_used.static_inventory)
selector.rebasetointerbay(src)
if(world.time >= combatmessagecooldown && combatmode)
if(a_intent != INTENT_HELP)
visible_message("<span class='warning'>[src] [resting ? "tenses up" : (prob(95)? "drops into a combative stance" : (prob(95)? "poses aggressively" : "asserts dominance with their pose"))].</span>")
else
visible_message("<span class='notice'>[src] [pick("looks","seems","goes")] [pick("alert","attentive","vigilant")].</span>")
combatmessagecooldown = 10 SECONDS + world.time //This is set 100% of the time to make sure squeezing regen out of process cycles doesn't result in the combat mode message getting spammed
SEND_SIGNAL(src, COMSIG_COMBAT_TOGGLED, src, combatmode)
return TRUE
@@ -1,4 +1,4 @@
/mob/living/carbon/adjustStaminaLossBuffered(amount, updating_stamina = 1)
/mob/living/carbon/adjustStaminaLossBuffered(amount, updating_health = 1)
if(status_flags & GODMODE)
return 0
if(CONFIG_GET(flag/disable_stambuffer))
@@ -8,7 +8,7 @@
adjustStaminaLoss(directstamloss)
bufferedstam = CLAMP(bufferedstam + amount, 0, stambuffer)
stambufferregentime = world.time + 10
if(updating_stamina)
if(updating_health)
update_health_hud()
/mob/living/carbon/adjustStaminaLoss(amount, updating_health = TRUE, forced = FALSE, affected_zone = BODY_ZONE_CHEST)
@@ -5,7 +5,8 @@
var/oldpseudoheight = pseudo_z_axis
. = ..()
if(. && sprinting && !(movement_type & FLYING) && canmove && !resting && m_intent == MOVE_INTENT_RUN && has_gravity(loc) && !pulledby)
doSprintLossTiles(1)
if(!HAS_TRAIT(src, TRAIT_FREESPRINT))
doSprintLossTiles(1)
if((oldpseudoheight - pseudo_z_axis) >= 8)
to_chat(src, "<span class='warning'>You trip off of the elevated surface!</span>")
for(var/obj/item/I in held_items)
@@ -1,4 +1,4 @@
/mob/living/proc/adjustStaminaLossBuffered(amount, updating_stamina = TRUE, forced = FALSE)
/mob/living/proc/adjustStaminaLossBuffered(amount, updating_health = TRUE, forced = FALSE)
return
/mob/living/proc/doSprintLossTiles(amount)
@@ -185,7 +185,6 @@
name = "particle blast"
damage = 13
icon_state = "disablerpellet"
icon = 'modular_citadel/icons/obj/projectiles.dmi'
/obj/item/projectile/beam/disabler/slug
name = "positron blast"
@@ -193,12 +192,10 @@
range = 14
speed = 0.6
icon_state = "disablerslug"
icon = 'modular_citadel/icons/obj/projectiles.dmi'
/obj/item/projectile/energy/electrode/pump
name = "electron blast"
icon_state = "stunjectile"
icon = 'modular_citadel/icons/obj/projectiles.dmi'
color = null
nodamage = 1
knockdown = 100
@@ -101,20 +101,39 @@
pH = 7.6
metabolization_rate = 0.05 //Give them time to graft
data = list("grown_volume" = 0, "injected_vol" = 0)
var/borrowed_health
color = "#FFDADA"
/datum/reagent/synthtissue/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
if(iscarbon(M))
var/target = M.zone_selected
if (M.stat == DEAD)
show_message = 0
var/mob/living/carbon/C = M
var/healing_factor = (((data["grown_volume"] / 100) + 1)*reac_volume)
if(method in list(PATCH, TOUCH))
M.apply_damage(reac_volume*-1.5, BRUTE, target)
M.apply_damage(reac_volume*-1.5, BURN, target)
if(show_message)
to_chat(M, "<span class='danger'>You feel your [target] heal! It stings like hell!</span>")
if (M.stat == DEAD)
M.visible_message("The synthetic tissue rapidly grafts into [M]'s wounds, attemping to repair the damage as quickly as possible.")
borrowed_health += healing_factor
M.adjustBruteLoss(-healing_factor*2)
M.adjustFireLoss(-healing_factor*2)
M.adjustToxLoss(-healing_factor)
M.adjustCloneLoss(-healing_factor)
M.updatehealth()
if(data["grown_volume"] > 135 && ((C.health + C.oxyloss)>=80))
if(M.revive())
M.emote("gasp")
borrowed_health *= 2
if(borrowed_health < 100)
borrowed_health = 100
log_combat(M, M, "revived", src)
else
M.adjustBruteLoss(-healing_factor)
M.adjustFireLoss(-healing_factor)
to_chat(M, "<span class='danger'>You feel your flesh merge with the synthetic tissue! It stings like hell!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
if(method==INJECT)
data["injected_vol"] = reac_volume
if(method==INJECT)
data["injected_vol"] = reac_volume
var/obj/item/organ/heart/H = C.getorganslot(ORGAN_SLOT_HEART)
if(data["grown_volume"] > 50 && H.organ_flags & ORGAN_FAILING)
H.applyOrganDamage(-20)
..()
/datum/reagent/synthtissue/on_mob_life(mob/living/carbon/C)
@@ -128,6 +147,10 @@
to_chat(C, "<span class='notice'>You feel something reform inside of you!</span>")
data["injected_vol"] -= metabolization_rate
if(borrowed_health)
C.adjustToxLoss(1)
C.adjustCloneLoss(1)
borrowed_health -= 1
..()
/datum/reagent/synthtissue/on_merge(passed_data)
@@ -138,6 +161,7 @@
if(iscarbon(holder.my_atom))
data["injected_vol"] = data["injected_vol"] + passed_data["injected_vol"]
passed_data["injected_vol"] = 0
update_name()
..()
/datum/reagent/synthtissue/on_new(passed_data)
@@ -145,6 +169,32 @@
return ..()
if(passed_data["grown_volume"] > data["grown_volume"])
data["grown_volume"] = passed_data["grown_volume"]
update_name()
..()
/datum/reagent/synthtissue/proc/update_name() //They are but babes on creation and have to grow unto godhood
switch(data["grown_volume"])
if(-INFINITY to 50)
name = "Induced Synthtissue Colony"
if(50 to 80)
name = "Oligopotent Synthtissue Colony"
if(80 to 135)
name = "Pluripotent Synthtissue Colony"
if(135 to 175)
name = "SuperSomatic Synthtissue Colony"
if(175 to INFINITY)
name = "Omnipotent Synthtissue Colony"
/datum/reagent/synthtissue/on_mob_delete(mob/living/M)
if(!iscarbon(M))
return
var/mob/living/carbon/C = M
C.adjustBruteLoss(borrowed_health*1.25)
C.adjustToxLoss(borrowed_health*1.25)
C.adjustCloneLoss(borrowed_health*1.25)
C.adjustAllOrganLoss(borrowed_health*0.25)
M.updatehealth()
if(borrowed_health && C.health < -20)
M.stat = DEAD
M.visible_message("The synthetic tissue degrades off [M]'s wounds as they collapse to the floor.")
//NEEDS ON_MOB_DEAD()
@@ -34,7 +34,6 @@
if(src == C.head)
C.emote("me",1,"tips their hat.",TRUE)
return
..()
/obj/item/clothing/head/hattip/equipped(mob/M, slot)
. = ..()