Merge pull request #3 from Citadel-Station-13/master
Me update before do thing
@@ -74,7 +74,7 @@
|
||||
#define ISINRANGE(val, min, max) (min <= val && val <= max)
|
||||
|
||||
// Same as above, exclusive.
|
||||
#define ISINRANGE_EX(val, min, max) (min < val && val > max)
|
||||
#define ISINRANGE_EX(val, min, max) (min < val && val < max)
|
||||
|
||||
#define ISINTEGER(x) (round(x) == x)
|
||||
|
||||
|
||||
@@ -98,8 +98,9 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s
|
||||
//Security levels
|
||||
#define SEC_LEVEL_GREEN 0
|
||||
#define SEC_LEVEL_BLUE 1
|
||||
#define SEC_LEVEL_RED 2
|
||||
#define SEC_LEVEL_DELTA 3
|
||||
#define SEC_LEVEL_AMBER 2
|
||||
#define SEC_LEVEL_RED 3
|
||||
#define SEC_LEVEL_DELTA 4
|
||||
|
||||
//some arbitrary defines to be used by self-pruning global lists. (see master_controller)
|
||||
#define PROCESS_KILL 26 //Used to trigger removal from a processing list
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
#define LINGHIVE_LINK 3
|
||||
|
||||
//Don't set this very much higher then 1024 unless you like inviting people in to dos your server with message spam
|
||||
#define MAX_MESSAGE_LEN 1024
|
||||
#define MAX_MESSAGE_LEN 2048 //Citadel edit: What's the WORST that could happen?
|
||||
#define MAX_NAME_LEN 42
|
||||
#define MAX_BROADCAST_LEN 512
|
||||
#define MAX_CHARTER_LEN 80
|
||||
|
||||
@@ -162,16 +162,22 @@
|
||||
config_entry_value = "All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced."
|
||||
|
||||
/datum/config_entry/string/alert_blue_upto
|
||||
config_entry_value = "The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted."
|
||||
config_entry_value = "The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted."
|
||||
|
||||
/datum/config_entry/string/alert_blue_downto
|
||||
config_entry_value = "The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed."
|
||||
config_entry_value = "Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted."
|
||||
|
||||
/datum/config_entry/string/alert_amber_upto
|
||||
config_entry_value = "There are significant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised."
|
||||
|
||||
/datum/config_entry/string/alert_amber_downto
|
||||
config_entry_value = "The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored."
|
||||
|
||||
/datum/config_entry/string/alert_red_upto
|
||||
config_entry_value = "There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised."
|
||||
config_entry_value = "There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted."
|
||||
|
||||
/datum/config_entry/string/alert_red_downto
|
||||
config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
|
||||
config_entry_value = "The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force."
|
||||
|
||||
/datum/config_entry/string/alert_delta
|
||||
config_entry_value = "Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
|
||||
|
||||
@@ -281,7 +281,10 @@ SUBSYSTEM_DEF(shuttle)
|
||||
if(emergency.timeLeft(1) < emergencyCallTime)
|
||||
return
|
||||
if(SEC_LEVEL_BLUE)
|
||||
if(emergency.timeLeft(1) < emergencyCallTime * 0.5)
|
||||
if(emergency.timeLeft(1) < emergencyCallTime * 0.6)
|
||||
return
|
||||
if(SEC_LEVEL_AMBER)
|
||||
if(emergency.timeLeft(1) < emergencyCallTime * 0.4)
|
||||
return
|
||||
else
|
||||
if(emergency.timeLeft(1) < emergencyCallTime * 0.25)
|
||||
|
||||
@@ -14,7 +14,7 @@ SUBSYSTEM_DEF(traumas)
|
||||
//phobia types is to pull from randomly for brain traumas, e.g. conspiracies is for special assignment only
|
||||
phobia_types = list("spiders", "space", "security", "clowns", "greytide", "lizards",
|
||||
"skeletons", "snakes", "robots", "doctors", "authority", "the supernatural",
|
||||
"aliens", "strangers", "birds", "falling", "anime", "mimes"
|
||||
"aliens", "strangers", "birds", "falling", "anime", "mimes", "cats"
|
||||
)
|
||||
|
||||
phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"),
|
||||
@@ -35,7 +35,8 @@ SUBSYSTEM_DEF(traumas)
|
||||
"birds" = strings(PHOBIA_FILE, "birds"),
|
||||
"falling" = strings(PHOBIA_FILE, "falling"),
|
||||
"anime" = strings(PHOBIA_FILE, "anime"),
|
||||
"mimes" = strings(PHOBIA_FILE, "mimes")
|
||||
"mimes" = strings(PHOBIA_FILE, "mimes"),
|
||||
"cats" = strings(PHOBIA_FILE, "cats")
|
||||
)
|
||||
|
||||
phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/hostile/poison/giant_spider)),
|
||||
@@ -54,7 +55,8 @@ SUBSYSTEM_DEF(traumas)
|
||||
/mob/living/simple_animal/pet/penguin)),
|
||||
"birds" = typecacheof(list(/mob/living/simple_animal/parrot, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken,
|
||||
/mob/living/simple_animal/pet/penguin)),
|
||||
"anime" = typecacheof(list(/mob/living/simple_animal/hostile/guardian))
|
||||
"anime" = typecacheof(list(/mob/living/simple_animal/hostile/guardian)),
|
||||
"cats"= typecacheof(list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/pet/cat, /mob/living/simple_animal/hostile/cat_butcherer))
|
||||
)
|
||||
|
||||
|
||||
@@ -152,7 +154,10 @@ SUBSYSTEM_DEF(traumas)
|
||||
/obj/item/storage/backpack/mime, /obj/item/reagent_containers/food/snacks/grown/banana/mime,
|
||||
/obj/item/grown/bananapeel/mimanapeel, /obj/item/cartridge/virus/mime, /obj/item/clothing/shoes/sneakers/mime,
|
||||
/obj/item/bedsheet/mime, /obj/item/reagent_containers/food/snacks/burger/mime, /obj/item/clothing/head/beret, /obj/item/clothing/mask/gas/sexymime,
|
||||
/obj/item/clothing/under/sexymime, /obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence))
|
||||
/obj/item/clothing/under/sexymime, /obj/item/toy/figure/mime, /obj/item/toy/crayon/mime, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced, /obj/mecha/combat/reticence)),
|
||||
|
||||
"cats" = typecacheof(list(/obj/item/organ/ears/cat, /obj/item/organ/tail/cat, /obj/item/laser_pointer, /obj/item/toy/cattoy, /obj/item/clothing/head/kitty,
|
||||
/obj/item/clothing/head/collectable/kitty, /obj/item/melee/chainofcommand/tailwhip/kitty, /obj/item/stack/sheet/animalhide/cat))
|
||||
)
|
||||
|
||||
phobia_turfs = list("space" = typecacheof(list(/turf/open/space, /turf/open/floor/holofloor/space, /turf/open/floor/fakespace)),
|
||||
@@ -170,7 +175,8 @@ SUBSYSTEM_DEF(traumas)
|
||||
"the supernatural" = typecacheof(list(/datum/species/golem/clockwork, /datum/species/golem/runic)),
|
||||
"aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod,
|
||||
/datum/species/shadow)),
|
||||
"anime" = typecacheof(list(/datum/species/human/felinid))
|
||||
"anime" = typecacheof(list(/datum/species/human/felinid)),
|
||||
"cats" = typecacheof(list(/datum/species/human/felinid))
|
||||
)
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
/datum/component/storage/concrete/pockets/shoes/Initialize()
|
||||
. = ..()
|
||||
cant_hold = typecacheof(list(/obj/item/screwdriver/power))
|
||||
can_hold = typecacheof(list(
|
||||
/obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen,
|
||||
/obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector,
|
||||
@@ -44,6 +45,7 @@
|
||||
|
||||
/datum/component/storage/concrete/pockets/shoes/clown/Initialize()
|
||||
. = ..()
|
||||
cant_hold = typecacheof(list(/obj/item/screwdriver/power))
|
||||
can_hold = typecacheof(list(
|
||||
/obj/item/kitchen/knife, /obj/item/switchblade, /obj/item/pen,
|
||||
/obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector,
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
/obj/screen/alert/status_effect/vanguard
|
||||
name = "Vanguard"
|
||||
desc = "You're absorbing stuns! 25% of all stuns taken will affect you after this effect ends."
|
||||
desc = "You're absorbing stuns! Your stamina is greatly increased, but not infinite. 25% of all stuns taken will affect you after this effect ends."
|
||||
icon_state = "vanguard"
|
||||
alerttooltipstyle = "clockcult"
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
owner.visible_message("<span class='warning'>[owner] begins to faintly glow!</span>", "<span class='brass'>You will absorb all stuns for the next twenty seconds.</span>")
|
||||
owner.SetStun(0, FALSE)
|
||||
owner.SetKnockdown(0)
|
||||
owner.setStaminaLoss(0, FALSE)
|
||||
progbar = new(owner, duration, owner)
|
||||
progbar.bar.color = list("#FAE48C", "#FAE48C", "#FAE48C", rgb(0,0,0))
|
||||
progbar.update(duration - world.time)
|
||||
|
||||
@@ -283,16 +283,16 @@
|
||||
name = "Mute"
|
||||
desc = "Due to some accident, medical condition, or simply by choice, you are completely unable to speak."
|
||||
value = -2 //HALP MAINTS
|
||||
mob_trait = TRAIT_MUTE
|
||||
gain_text = "<span class='danger'>You find yourself unable to speak!</span>"
|
||||
lose_text = "<span class='notice'>You feel a growing strength in your vocal chords.</span>"
|
||||
medical_record_text = "Functionally mute, patient is unable to use their voice in any capacity."
|
||||
var/datum/brain_trauma/severe/mute
|
||||
|
||||
/datum/quirk/mute/add()
|
||||
var/mob/living/carbon/human/H = quirk_holder
|
||||
H.gain_trauma(mute, TRAUMA_RESILIENCE_SURGERY)
|
||||
H.gain_trauma(TRAIT_MUTE, TRAUMA_RESILIENCE_SURGERY)
|
||||
|
||||
/datum/quirk/mute/on_process()
|
||||
if(quirk_holder.mind && LAZYLEN(quirk_holder.mind.antag_datums))
|
||||
to_chat(quirk_holder, "<span class='boldannounce'>Your antagonistic nature has caused your voice to return.</span>")
|
||||
to_chat(quirk_holder, "<span class='boldannounce'>Your antagonistic nature has caused your voice to be heard.</span>")
|
||||
qdel(src)
|
||||
|
||||
@@ -37,6 +37,7 @@ Credit where due:
|
||||
4. PJB3005 from /vg/ for the failed continuation PR
|
||||
5. Xhuis from /tg/ for coding the first iteration of the mode, and the new, reworked version
|
||||
6. ChangelingRain from /tg/ for maintaining the gamemode for months after its release prior to its rework
|
||||
7. Clockwork cult code as of now, at least the one being pulled from Citadel Station's master branch, is being, or already is, fixed by Coolgat3 and Avunia.
|
||||
|
||||
*/
|
||||
|
||||
@@ -267,7 +268,7 @@ Credit where due:
|
||||
//Servant of Ratvar outfit
|
||||
/datum/outfit/servant_of_ratvar
|
||||
name = "Servant of Ratvar"
|
||||
uniform = /obj/item/clothing/under/chameleon/ratvar
|
||||
uniform = /obj/item/clothing/under/rank/engineer //no more chameleon suit for them, as requested
|
||||
shoes = /obj/item/clothing/shoes/sneakers/black
|
||||
back = /obj/item/storage/backpack
|
||||
ears = /obj/item/radio/headset
|
||||
|
||||
@@ -6,53 +6,116 @@
|
||||
icon_screen = "invaders"
|
||||
clockwork = TRUE //it'd look weird
|
||||
var/list/prizes = list(
|
||||
/obj/item/storage/box/snappops = 2,
|
||||
/obj/item/toy/talking/AI = 2,
|
||||
/obj/item/toy/talking/codex_gigas = 2,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 2,
|
||||
/obj/item/toy/sword = 2,
|
||||
/obj/item/toy/gun = 2,
|
||||
/obj/item/gun/ballistic/shotgun/toy/crossbow = 2,
|
||||
/obj/item/storage/box/fakesyndiesuit = 2,
|
||||
/obj/item/storage/crayons = 2,
|
||||
/obj/item/toy/spinningtoy = 2,
|
||||
/obj/item/toy/prize/ripley = 1,
|
||||
/obj/item/toy/prize/fireripley = 1,
|
||||
/obj/item/toy/prize/deathripley = 1,
|
||||
/obj/item/toy/prize/gygax = 1,
|
||||
/obj/item/toy/prize/durand = 1,
|
||||
/obj/item/toy/prize/honk = 1,
|
||||
/obj/item/toy/prize/marauder = 1,
|
||||
/obj/item/toy/prize/seraph = 1,
|
||||
/obj/item/toy/prize/mauler = 1,
|
||||
/obj/item/toy/prize/odysseus = 1,
|
||||
/obj/item/toy/prize/phazon = 1,
|
||||
/obj/item/toy/prize/reticence = 1,
|
||||
/obj/item/toy/cards/deck = 2,
|
||||
/obj/item/toy/nuke = 2,
|
||||
/obj/item/toy/minimeteor = 2,
|
||||
/obj/item/toy/redbutton = 2,
|
||||
/obj/item/toy/talking/owl = 2,
|
||||
/obj/item/toy/talking/griffin = 2,
|
||||
/obj/item/coin/antagtoken = 2,
|
||||
/obj/item/stack/tile/fakespace/loaded = 2,
|
||||
/obj/item/stack/tile/fakepit/loaded = 2,
|
||||
/obj/item/toy/toy_xeno = 2,
|
||||
/obj/item/storage/box/actionfigure = 1,
|
||||
/obj/item/restraints/handcuffs/fake = 2,
|
||||
/obj/item/grenade/chem_grenade/glitter/pink = 1,
|
||||
/obj/item/grenade/chem_grenade/glitter/blue = 1,
|
||||
/obj/item/grenade/chem_grenade/glitter/white = 1,
|
||||
/obj/item/toy/eightball = 2,
|
||||
/obj/item/toy/windupToolbox = 2,
|
||||
/obj/item/toy/clockwork_watch = 2,
|
||||
/obj/item/toy/toy_dagger = 2,
|
||||
/obj/item/extendohand/acme = 1,
|
||||
/obj/item/hot_potato/harmless/toy = 1,
|
||||
/obj/item/card/emagfake = 1,
|
||||
/obj/item/clothing/shoes/wheelys = 2,
|
||||
/obj/item/clothing/shoes/kindleKicks = 2,
|
||||
/obj/item/storage/belt/military/snack = 2
|
||||
/obj/item/storage/box/snappops = 8,
|
||||
/obj/item/toy/talking/AI = 8,
|
||||
/obj/item/toy/talking/codex_gigas = 8,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 8,
|
||||
/obj/item/toy/sword = 8,
|
||||
/obj/item/toy/gun = 8,
|
||||
/obj/item/gun/ballistic/shotgun/toy/crossbow = 8,
|
||||
/obj/item/storage/box/fakesyndiesuit = 8,
|
||||
/obj/item/storage/crayons = 8,
|
||||
/obj/item/toy/spinningtoy = 8,
|
||||
/obj/item/toy/prize/ripley = 4,
|
||||
/obj/item/toy/prize/fireripley = 4,
|
||||
/obj/item/toy/prize/deathripley = 4,
|
||||
/obj/item/toy/prize/gygax = 4,
|
||||
/obj/item/toy/prize/durand = 4,
|
||||
/obj/item/toy/prize/honk = 4,
|
||||
/obj/item/toy/prize/marauder = 4,
|
||||
/obj/item/toy/prize/seraph = 4,
|
||||
/obj/item/toy/prize/mauler = 4,
|
||||
/obj/item/toy/prize/odysseus = 4,
|
||||
/obj/item/toy/prize/phazon = 4,
|
||||
/obj/item/toy/prize/reticence = 4,
|
||||
/obj/item/toy/cards/deck = 8,
|
||||
/obj/item/toy/nuke = 8,
|
||||
/obj/item/toy/minimeteor = 8,
|
||||
/obj/item/toy/redbutton = 8,
|
||||
/obj/item/toy/talking/owl = 8,
|
||||
/obj/item/toy/talking/griffin = 8,
|
||||
/obj/item/coin/antagtoken = 8,
|
||||
/obj/item/stack/tile/fakespace/loaded = 8,
|
||||
/obj/item/stack/tile/fakepit/loaded = 8,
|
||||
/obj/item/toy/toy_xeno = 8,
|
||||
/obj/item/storage/box/actionfigure = 4,
|
||||
/obj/item/restraints/handcuffs/fake = 8,
|
||||
/obj/item/grenade/chem_grenade/glitter/pink = 4,
|
||||
/obj/item/grenade/chem_grenade/glitter/blue = 4,
|
||||
/obj/item/grenade/chem_grenade/glitter/white = 4,
|
||||
/obj/item/toy/eightball = 8,
|
||||
/obj/item/toy/windupToolbox = 8,
|
||||
/obj/item/toy/clockwork_watch = 8,
|
||||
/obj/item/toy/toy_dagger = 8,
|
||||
/obj/item/extendohand/acme = 4,
|
||||
/obj/item/hot_potato/harmless/toy = 4,
|
||||
/obj/item/card/emagfake = 4,
|
||||
/obj/item/clothing/shoes/wheelys = 8,
|
||||
/obj/item/clothing/shoes/kindleKicks = 8,
|
||||
/obj/item/storage/belt/military/snack = 8,
|
||||
/obj/item/toy/plush/lizardplushie = 1,
|
||||
/obj/item/toy/plush/lizardplushie/durgit = 1,
|
||||
/obj/item/toy/plush/lizardplushie/rio = 1,
|
||||
/obj/item/toy/plush/lizardplushie/urinsu = 1,
|
||||
/obj/item/toy/plush/lizardplushie/arfrehn = 1,
|
||||
/obj/item/toy/plush/lizardplushie/soars = 1,
|
||||
/obj/item/toy/plush/lizardplushie/ghostie = 1,
|
||||
/obj/item/toy/plush/lizardplushie/amber = 1,
|
||||
/obj/item/toy/plush/lizardplushie/cyan = 1,
|
||||
/obj/item/toy/plush/lizardplushie/meena = 1,
|
||||
/obj/item/toy/plush/lizardplushie/stalks = 1,
|
||||
/obj/item/toy/plush/lizardplushie/kobold = 1,
|
||||
/obj/item/toy/plush/lizardplushie/gorgi = 1,
|
||||
/obj/item/toy/plush/lizardplushie/almaz = 1,
|
||||
/obj/item/toy/plush/snakeplushie/sasha = 1,
|
||||
/obj/item/toy/plush/snakeplushie/shay = 1,
|
||||
/obj/item/toy/plush/snakeplushie/vulken = 1,
|
||||
/obj/item/toy/plush/mothplushie = 1,
|
||||
/obj/item/toy/plush/mothplushie/bumble = 1,
|
||||
/obj/item/toy/plush/mothplushie/nameko = 1,
|
||||
/obj/item/toy/plush/mothplushie/suru = 1,
|
||||
/obj/item/toy/plush/xeno = 1,
|
||||
/obj/item/toy/plush/lampplushie = 1,
|
||||
/obj/item/toy/plush/borgplushie = 1,
|
||||
/obj/item/toy/plush/borgplushie/medihound = 1,
|
||||
/obj/item/toy/plush/borgplushie/scrubpuppy = 1,
|
||||
/obj/item/toy/plush/borgplushie/seeking = 1,
|
||||
/obj/item/toy/plush/borgplushie/neeb = 1,
|
||||
/obj/item/toy/plush/bird = 1,
|
||||
/obj/item/toy/plush/bird/esela = 1,
|
||||
/obj/item/toy/plush/bird/jahonna = 1,
|
||||
/obj/item/toy/plush/bird/krick = 1,
|
||||
/obj/item/toy/plush/bird/birddi = 1,
|
||||
/obj/item/toy/plush/bird/jewel = 1,
|
||||
/obj/item/toy/plush/mammal = 1,
|
||||
/obj/item/toy/plush/mammal/dubious = 1,
|
||||
/obj/item/toy/plush/mammal/gladwyn = 1,
|
||||
/obj/item/toy/plush/mammal/gavin = 1,
|
||||
/obj/item/toy/plush/mammal/blep = 1,
|
||||
/obj/item/toy/plush/mammal/circe = 1,
|
||||
/obj/item/toy/plush/mammal/pavel = 1,
|
||||
/obj/item/toy/plush/mammal/oten = 1,
|
||||
/obj/item/toy/plush/mammal/ray = 1,
|
||||
/obj/item/toy/plush/mammal/dawud = 1,
|
||||
/obj/item/toy/plush/mammal/edgar = 1,
|
||||
/obj/item/toy/plush/mammal/frank = 1,
|
||||
/obj/item/toy/plush/mammal/poojawa = 1,
|
||||
/obj/item/toy/plush/mammal/hazel = 1,
|
||||
/obj/item/toy/plush/mammal/jermaine = 1,
|
||||
/obj/item/toy/plush/mammal/gunther = 1,
|
||||
/obj/item/toy/plush/mammal/fox = 1,
|
||||
/obj/item/toy/plush/mammal/zed = 1,
|
||||
/obj/item/toy/plush/mammal/dog = 1,
|
||||
/obj/item/toy/plush/mammal/dog/frost = 1,
|
||||
/obj/item/toy/plush/mammal/dog/atticus = 1,
|
||||
/obj/item/toy/plush/mammal/dog/fletch = 1,
|
||||
/obj/item/toy/plush/mammal/dog/vincent = 1,
|
||||
/obj/item/toy/plush/mammal/dog/zigfried = 1,
|
||||
/obj/item/toy/plush/mammal/dog/nikolai = 1,
|
||||
/obj/item/toy/plush/catgirl = 1,
|
||||
/obj/item/toy/plush/catgirl/skylar = 1,
|
||||
/obj/item/toy/plush/catgirl/mikeel = 1,
|
||||
/obj/item/toy/plush/catgirl/robin = 1
|
||||
)
|
||||
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
@@ -108,8 +108,10 @@
|
||||
tmp_alertlevel = SEC_LEVEL_GREEN
|
||||
if(tmp_alertlevel < SEC_LEVEL_GREEN)
|
||||
tmp_alertlevel = SEC_LEVEL_GREEN
|
||||
if(tmp_alertlevel > SEC_LEVEL_BLUE)
|
||||
tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this
|
||||
if(tmp_alertlevel == SEC_LEVEL_BLUE)
|
||||
tmp_alertlevel = SEC_LEVEL_BLUE
|
||||
if(tmp_alertlevel > SEC_LEVEL_AMBER)
|
||||
tmp_alertlevel = SEC_LEVEL_AMBER //Cannot engage delta with this
|
||||
set_security_level(tmp_alertlevel)
|
||||
if(GLOB.security_level != old_level)
|
||||
to_chat(usr, "<span class='notice'>Authorization confirmed. Modifying security level.</span>")
|
||||
@@ -390,8 +392,10 @@
|
||||
tmp_alertlevel = SEC_LEVEL_GREEN
|
||||
if(tmp_alertlevel < SEC_LEVEL_GREEN)
|
||||
tmp_alertlevel = SEC_LEVEL_GREEN
|
||||
if(tmp_alertlevel > SEC_LEVEL_BLUE)
|
||||
tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this
|
||||
if(tmp_alertlevel == SEC_LEVEL_BLUE)
|
||||
tmp_alertlevel = SEC_LEVEL_BLUE
|
||||
if(tmp_alertlevel > SEC_LEVEL_AMBER)
|
||||
tmp_alertlevel = SEC_LEVEL_AMBER //Cannot engage delta with this
|
||||
set_security_level(tmp_alertlevel)
|
||||
if(GLOB.security_level != old_level)
|
||||
//Only notify people if an actual change happened
|
||||
@@ -548,6 +552,7 @@
|
||||
if(GLOB.security_level == SEC_LEVEL_DELTA)
|
||||
dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>"
|
||||
else
|
||||
dat += "<A HREF='?src=[REF(src)];operation=securitylevel;newalertlevel=[SEC_LEVEL_AMBER]'>Amber</A><BR>"
|
||||
dat += "<A HREF='?src=[REF(src)];operation=securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>"
|
||||
dat += "<A HREF='?src=[REF(src)];operation=securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>"
|
||||
if(STATE_CONFIRM_LEVEL)
|
||||
@@ -690,6 +695,7 @@
|
||||
if(GLOB.security_level == SEC_LEVEL_DELTA)
|
||||
dat += "<font color='red'><b>The self-destruct mechanism is active. Find a way to deactivate the mechanism to lower the alert level or evacuate.</b></font>"
|
||||
else
|
||||
dat += "<A HREF='?src=[REF(src)];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_AMBER]'>Amber</A><BR>"
|
||||
dat += "<A HREF='?src=[REF(src)];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_BLUE]'>Blue</A><BR>"
|
||||
dat += "<A HREF='?src=[REF(src)];operation=ai-securitylevel;newalertlevel=[SEC_LEVEL_GREEN]'>Green</A>"
|
||||
|
||||
|
||||
@@ -56,6 +56,8 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
/datum/effect_system/proc/generate_effect()
|
||||
if(holder)
|
||||
location = get_turf(holder)
|
||||
if(location.contents.len > 200) //Bandaid to prevent server crash exploit
|
||||
return
|
||||
var/obj/effect/E = new effect_type(location)
|
||||
total_effects++
|
||||
var/direction
|
||||
|
||||
@@ -536,12 +536,16 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
||||
callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own
|
||||
. = ..(target, range, speed, thrower, spin, diagonals_first, callback)
|
||||
|
||||
|
||||
/obj/item/proc/after_throw(datum/callback/callback)
|
||||
if (callback) //call the original callback
|
||||
. = callback.Invoke()
|
||||
throw_speed = initial(throw_speed) //explosions change this.
|
||||
item_flags &= ~IN_INVENTORY
|
||||
var/matrix/M = matrix(transform)
|
||||
M.Turn(rand(-170, 170))
|
||||
transform = M
|
||||
pixel_x = rand(-12, 12)
|
||||
pixel_y = rand(-12, 12)
|
||||
|
||||
/obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage
|
||||
if(!newLoc)
|
||||
|
||||
@@ -76,6 +76,10 @@ RLD
|
||||
loaded = loadwithsheets(W, plasmarglassmultiplier*sheetmultiplier, user) //8 matter for one plasma rglass sheet
|
||||
else if(istype(W, /obj/item/stack/sheet/rglass))
|
||||
loaded = loadwithsheets(W, rglassmultiplier*sheetmultiplier, user) //6 matter for one rglass sheet
|
||||
else if(istype(W, /obj/item/stack/rods))
|
||||
loaded = loadwithsheets(W, sheetmultiplier * 0.5, user) // 2 matter for 1 rod, as 2 rods are produced from 1 metal
|
||||
else if(istype(W, /obj/item/stack/tile/plasteel))
|
||||
loaded = loadwithsheets(W, sheetmultiplier * 0.25, user) // 1 matter for 1 floortile, as 4 tiles are produced from 1 metal
|
||||
if(loaded)
|
||||
to_chat(user, "<span class='notice'>[src] now holds [matter]/[max_matter] matter-units.</span>")
|
||||
else
|
||||
@@ -475,6 +479,8 @@ RLD
|
||||
var/ammoamt = 40
|
||||
|
||||
/obj/item/rcd_ammo/large
|
||||
name = "large compressed matter cartridge"
|
||||
desc = "Highly compressed matter for the RCD. Has four times the matter packed into the same space as a normal cartridge."
|
||||
materials = list(MAT_METAL=48000, MAT_GLASS=32000)
|
||||
ammoamt = 160
|
||||
|
||||
|
||||
@@ -11,12 +11,45 @@
|
||||
strip_delay = 80
|
||||
dog_fashion = null
|
||||
|
||||
// CITADEL CHANGES: More variants
|
||||
/obj/item/clothing/head/helmet/chaplain/bland
|
||||
icon_state = "knight_generic"
|
||||
item_state = "knight_generic"
|
||||
|
||||
/obj/item/clothing/head/helmet/chaplain/bland/horned
|
||||
name = "horned crusader helmet"
|
||||
desc = "Helfen, Wehren, Heilen."
|
||||
icon_state = "knight_horned"
|
||||
item_state = "knight_horned"
|
||||
|
||||
/obj/item/clothing/head/helmet/chaplain/bland/winged
|
||||
name = "winged crusader helmet"
|
||||
desc = "Helfen, Wehren, Heilen."
|
||||
icon_state = "knight_winged"
|
||||
item_state = "knight_winged"
|
||||
// CITADEL CHANGES ENDS HERE
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/chaplain
|
||||
name = "crusader armour"
|
||||
desc = "God wills it!"
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
|
||||
// CITADEL CHANGES: More variants
|
||||
/obj/item/clothing/suit/armor/riot/chaplain/teutonic
|
||||
desc = "Help, Defend, Heal!"
|
||||
icon_state = "knight_teutonic"
|
||||
item_state = "knight_teutonic"
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/chaplain/teutonic/alt
|
||||
icon_state = "knight_teutonic_alt"
|
||||
item_state = "knight_teutonic_alt"
|
||||
|
||||
/obj/item/clothing/suit/armor/riot/chaplain/hospitaller
|
||||
icon_state = "knight_hospitaller"
|
||||
item_state = "knight_hospitaller"
|
||||
// CITADEL CHANGES ENDS HERE
|
||||
|
||||
/obj/item/holybeacon
|
||||
name = "armaments beacon"
|
||||
desc = "Contains a set of armaments for the chaplain."
|
||||
@@ -60,6 +93,22 @@
|
||||
new /obj/item/clothing/head/helmet/chaplain(src)
|
||||
new /obj/item/clothing/suit/armor/riot/chaplain(src)
|
||||
|
||||
// CITADEL CHANGES: More Variants
|
||||
/obj/item/storage/box/holy/teutonic
|
||||
name = "Teutonic Kit"
|
||||
|
||||
/obj/item/storage/box/holy/teutonic/PopulateContents() // It just works
|
||||
pick(new /obj/item/clothing/head/helmet/chaplain/bland/horned(src), new /obj/item/clothing/head/helmet/chaplain/bland/winged(src))
|
||||
pick(new /obj/item/clothing/suit/armor/riot/chaplain/teutonic(src), new /obj/item/clothing/suit/armor/riot/chaplain/teutonic/alt(src))
|
||||
|
||||
/obj/item/storage/box/holy/hospitaller
|
||||
name = "Hospitaller Kit"
|
||||
|
||||
/obj/item/storage/box/holy/hospitaller/PopulateContents()
|
||||
new /obj/item/clothing/head/helmet/chaplain/bland(src)
|
||||
new /obj/item/clothing/suit/armor/riot/chaplain/hospitaller(src)
|
||||
// CITADEL CHANGES ENDS HERE
|
||||
|
||||
/obj/item/storage/box/holy/student
|
||||
name = "Profane Scholar Kit"
|
||||
|
||||
@@ -210,7 +259,7 @@
|
||||
if(QDELETED(src) || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned)
|
||||
return
|
||||
|
||||
var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new
|
||||
var/A = display_names[choice] // This needs to be on a separate var as list member access is not allowed for new
|
||||
holy_weapon = new A
|
||||
|
||||
SSreligion.holy_weapon_type = holy_weapon.type
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/mopping = 0
|
||||
var/mopcount = 0
|
||||
var/mopcap = 5
|
||||
var/mopspeed = 30
|
||||
var/stamusage = 5
|
||||
force_string = "robust... against germs"
|
||||
var/insertable = TRUE
|
||||
|
||||
@@ -39,6 +39,12 @@
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
var/mob/living/L = user
|
||||
|
||||
if(istype(L) && L.getStaminaLoss() >= STAMINA_SOFTCRIT)
|
||||
to_chat(user, "<span class='danger'>You're too exhausted for that.</span>")
|
||||
return
|
||||
|
||||
if(reagents.total_volume < 1)
|
||||
to_chat(user, "<span class='warning'>Your mop is dry!</span>")
|
||||
return
|
||||
@@ -49,11 +55,13 @@
|
||||
return
|
||||
|
||||
if(T)
|
||||
user.visible_message("[user] begins to clean \the [T] with [src].", "<span class='notice'>You begin to clean \the [T] with [src]...</span>")
|
||||
|
||||
if(do_after(user, src.mopspeed, target = T))
|
||||
to_chat(user, "<span class='notice'>You finish mopping.</span>")
|
||||
clean(T)
|
||||
user.visible_message("[user] cleans \the [T] with [src].", "<span class='notice'>You clean \the [T] with [src].</span>")
|
||||
clean(T)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(T, used_item = src)
|
||||
if(istype(L))
|
||||
L.adjustStaminaLossBuffered(stamusage)
|
||||
playsound(T, "slosh", 50, 1)
|
||||
|
||||
|
||||
/obj/effect/attackby(obj/item/I, mob/user, params)
|
||||
@@ -86,7 +94,7 @@
|
||||
force = 6
|
||||
throwforce = 8
|
||||
throw_range = 4
|
||||
mopspeed = 20
|
||||
stamusage = 2
|
||||
var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water.
|
||||
var/refill_rate = 1 //Rate per process() tick mop refills itself
|
||||
var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING
|
||||
|
||||
@@ -486,13 +486,79 @@
|
||||
attack_verb = list("clawed", "hissed", "tail slapped")
|
||||
squeak_override = list('sound/weapons/slash.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/durgit
|
||||
icon_state = "durgit"
|
||||
item_state = "durgit"
|
||||
squeak_override = list('modular_citadel/sound/voice/weh.ogg' = 1) //Durgit's the origin of the sound
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/rio
|
||||
icon_state = "rio"
|
||||
item_state = "rio"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/urinsu
|
||||
icon_state = "urinsu"
|
||||
item_state = "urinsu"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/arfrehn
|
||||
icon_state = "arfrehn"
|
||||
item_state = "arfrehn"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/soars
|
||||
icon_state = "soars"
|
||||
item_state = "soars"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/ghostie
|
||||
icon_state = "ghostie"
|
||||
item_state = "ghostie"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/amber
|
||||
icon_state = "amber"
|
||||
item_state = "amber"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/cyan
|
||||
icon_state = "cyan"
|
||||
item_state = "cyan"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/meena
|
||||
icon_state = "meena"
|
||||
item_state = "meena"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/stalks
|
||||
icon_state = "stalks"
|
||||
item_state = "stalks"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/kobold
|
||||
icon_state = "kobold"
|
||||
item_state = "kobold"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/gorgi
|
||||
icon_state = "gorgi"
|
||||
item_state = "gorgi"
|
||||
|
||||
/obj/item/toy/plush/lizardplushie/almaz
|
||||
icon_state = "almaz"
|
||||
item_state = "almaz"
|
||||
squeak_override = list('modular_citadel/sound/voice/raptor_purr.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/snakeplushie
|
||||
name = "snake plushie"
|
||||
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
|
||||
icon_state = "plushie_snake"
|
||||
item_state = "plushie_snake"
|
||||
attack_verb = list("bitten", "hissed", "tail slapped")
|
||||
squeak_override = list('sound/weapons/bite.ogg' = 1)
|
||||
squeak_override = list('sound/voice/lowHiss2.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/snakeplushie/sasha
|
||||
icon_state = "sasha"
|
||||
item_state = "sasha"
|
||||
|
||||
/obj/item/toy/plush/snakeplushie/shay
|
||||
icon_state = "shay"
|
||||
item_state = "shay"
|
||||
|
||||
/obj/item/toy/plush/snakeplushie/vulken
|
||||
icon_state = "vulken"
|
||||
item_state = "vulken"
|
||||
|
||||
/obj/item/toy/plush/nukeplushie
|
||||
name = "operative plushie"
|
||||
@@ -517,6 +583,229 @@
|
||||
icon_state = "plushie_awake"
|
||||
item_state = "plushie_awake"
|
||||
|
||||
/obj/item/toy/plush/mothplushie
|
||||
name = "insect plushie"
|
||||
desc = "An adorable stuffed toy that resembles some kind of insect"
|
||||
icon_state = "cydia"
|
||||
item_state = "cydia"
|
||||
squeak_override = list('modular_citadel/sound/voice/mothsqueak.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/mothplushie/bumble
|
||||
icon_state = "bumble"
|
||||
item_state = "bumble"
|
||||
|
||||
/obj/item/toy/plush/mothplushie/nameko
|
||||
icon_state = "nameko"
|
||||
item_state = "nameko"
|
||||
|
||||
/obj/item/toy/plush/mothplushie/suru
|
||||
icon_state = "suru"
|
||||
item_state = "suru"
|
||||
|
||||
/obj/item/toy/plush/xeno
|
||||
name = "xenohybrid plushie"
|
||||
desc = "An adorable stuffed toy that resmembles a xenomorphic crewmember."
|
||||
icon_state = "seras"
|
||||
item_state = "seras"
|
||||
squeak_override = list('sound/voice/hiss2.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/lampplushie
|
||||
name = "lamp plushie"
|
||||
desc = "A toy lamp plushie, doesn't actually make light, but it still toggles on and off. Click clack!"
|
||||
icon_state = "plushie_lamp"
|
||||
item_state = "plushie_lamp"
|
||||
attack_verb = list("lit", "flickered", "flashed")
|
||||
squeak_override = list('sound/weapons/magout.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/borgplushie
|
||||
name = "robot plushie"
|
||||
desc = "An adorable stuffed toy of a robot."
|
||||
icon_state = "securityk9"
|
||||
item_state = "securityk9"
|
||||
attack_verb = list("beeped", "booped", "pinged")
|
||||
squeak_override = list('sound/machines/beep.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/borgplushie/medihound
|
||||
icon_state = "medihound"
|
||||
item_state = "medihound"
|
||||
|
||||
/obj/item/toy/plush/borgplushie/scrubpuppy
|
||||
icon_state = "scrubpuppy"
|
||||
item_state = "scrubpuppy"
|
||||
|
||||
/obj/item/toy/plush/borgplushie/seeking
|
||||
icon_state = "seeking"
|
||||
item_state = "seeking"
|
||||
|
||||
/obj/item/toy/plush/borgplushie/neeb
|
||||
icon_state = "neeb"
|
||||
item_state = "neeb"
|
||||
|
||||
/obj/item/toy/plush/bird
|
||||
name = "bird plushie"
|
||||
desc = "An adorable stuffed plushie that resembles an avian."
|
||||
icon_state = "sylas"
|
||||
item_state = "sylas"
|
||||
attack_verb = list("peeped", "beeped", "poofed")
|
||||
squeak_override = list('modular_citadel/sound/voice/peep.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/bird/esela
|
||||
icon_state = "esela"
|
||||
item_state = "esela"
|
||||
|
||||
/obj/item/toy/plush/bird/jahonna
|
||||
icon_state = "jahonna"
|
||||
item_state = "jahonna"
|
||||
|
||||
/obj/item/toy/plush/bird/krick
|
||||
icon_state = "krick"
|
||||
item_state = "krick"
|
||||
|
||||
/obj/item/toy/plush/bird/birddi
|
||||
icon_state = "birddi"
|
||||
item_state = "birddi"
|
||||
|
||||
/obj/item/toy/plush/bird/jewel
|
||||
icon_state = "jewel"
|
||||
item_state = "jewel"
|
||||
|
||||
/obj/item/toy/plush/mammal
|
||||
name = "mammal plushie"
|
||||
desc = "An adorable stuffed toy resembling some sort of mammallian crew member."
|
||||
icon_state = "faux"
|
||||
item_state = "faux"
|
||||
|
||||
/obj/item/toy/plush/mammal/dubious
|
||||
icon_state = "dubious"
|
||||
item_state = "dubious"
|
||||
|
||||
/obj/item/toy/plush/mammal/gladwyn
|
||||
icon_state = "gladwyn"
|
||||
item_state = "gladwyn"
|
||||
|
||||
/obj/item/toy/plush/mammal/gavin
|
||||
icon_state = "gavin"
|
||||
item_state = "gavin"
|
||||
|
||||
/obj/item/toy/plush/mammal/blep
|
||||
icon_state = "blep"
|
||||
item_state = "blep"
|
||||
|
||||
/obj/item/toy/plush/mammal/circe
|
||||
icon_state = "circe"
|
||||
item_state = "circe"
|
||||
|
||||
/obj/item/toy/plush/mammal/pavel
|
||||
icon_state = "pavel"
|
||||
item_state = "pavel"
|
||||
|
||||
/obj/item/toy/plush/mammal/oten
|
||||
icon_state = "oten"
|
||||
item_state = "oten"
|
||||
|
||||
/obj/item/toy/plush/mammal/ray
|
||||
icon_state = "ray"
|
||||
item_state = "ray"
|
||||
|
||||
/obj/item/toy/plush/mammal/dawud
|
||||
icon_state = "dawud"
|
||||
item_state = "dawud"
|
||||
|
||||
/obj/item/toy/plush/mammal/edgar
|
||||
icon_state = "edgar"
|
||||
item_state = "edgar"
|
||||
|
||||
/obj/item/toy/plush/mammal/frank
|
||||
icon_state = "frank"
|
||||
item_state = "frank"
|
||||
|
||||
/obj/item/toy/plush/mammal/poojawa
|
||||
icon_state = "poojawa"
|
||||
item_state = "poojawa"
|
||||
|
||||
/obj/item/toy/plush/mammal/hazel
|
||||
icon_state = "hazel"
|
||||
item_state = "hazel"
|
||||
|
||||
/obj/item/toy/plush/mammal/joker
|
||||
icon_state = "joker"
|
||||
item_state = "joker"
|
||||
|
||||
/obj/item/toy/plush/mammal/jermaine
|
||||
icon_state = "jermaine"
|
||||
item_state = "jermaine"
|
||||
|
||||
/obj/item/toy/plush/mammal/gunther
|
||||
icon_state = "gunther"
|
||||
item_state = "gunther"
|
||||
|
||||
/obj/item/toy/plush/mammal/fox
|
||||
icon_state = "fox"
|
||||
item_state = "fox"
|
||||
|
||||
/obj/item/toy/plush/mammal/zed
|
||||
icon_state = "zed"
|
||||
item_state = "zed"
|
||||
|
||||
/obj/item/toy/plush/mammal/dog
|
||||
desc = "An adorable stuffed toy that resembles a canine."
|
||||
icon_state = "katlin"
|
||||
item_state = "katlin"
|
||||
attack_verb = list("barked", "boofed", "borked")
|
||||
squeak_override = list(
|
||||
'modular_citadel/sound/voice/bark1.ogg' = 1,
|
||||
'modular_citadel/sound/voice/bark2.ogg' = 1
|
||||
)
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/frost
|
||||
icon_state = "frost"
|
||||
item_state = "frost"
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/atticus
|
||||
icon_state = "atticus"
|
||||
item_state = "atticus"
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/fletch
|
||||
icon_state = "fletch"
|
||||
item_state = "fletch"
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/vincent
|
||||
icon_state = "vincent"
|
||||
item_state = "vincent"
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/zigfried
|
||||
desc = "An adorable stuffed toy of a very good boy."
|
||||
icon_state = "zigfried"
|
||||
item_state = "zigfried"
|
||||
|
||||
/obj/item/toy/plush/mammal/dog/nikolai
|
||||
icon_state = "nikolai"
|
||||
item_state = "nikolai"
|
||||
|
||||
/obj/item/toy/plush/catgirl
|
||||
name = "feline plushie"
|
||||
desc = "An adorable stuffed toy that resembles a felinid."
|
||||
icon_state = "bailey"
|
||||
item_state = "bailey"
|
||||
attack_verb = list("headbutt", "scritched", "bit")
|
||||
squeak_override = list('modular_citadel/sound/voice/nya.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/catgirl/mikeel
|
||||
desc = "An adorable stuffed toy of some tauric cat person."
|
||||
icon_state = "mikeel"
|
||||
item_state = "mikeel"
|
||||
|
||||
/obj/item/toy/plush/catgirl/skylar
|
||||
desc = "An adorable stuffed toy that resembles a degenerate."
|
||||
icon_state = "skylar"
|
||||
item_state = "skylar"
|
||||
attack_verb = list("powergamed", "merged", "tabled")
|
||||
squeak_override = list('sound/effects/meow1.ogg' = 1)
|
||||
|
||||
/obj/item/toy/plush/catgirl/robin
|
||||
icon_state = "robin"
|
||||
item_state = "robin"
|
||||
|
||||
/obj/item/toy/plush/awakenedplushie/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/edit_complainer)
|
||||
|
||||
@@ -266,6 +266,9 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
if("large")
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
var/matrix/M = matrix(transform)
|
||||
M.Turn(rand(-170, 170))
|
||||
transform = M
|
||||
|
||||
/obj/item/shard/afterattack(atom/A as mob|obj, mob/user, proximity)
|
||||
. = ..()
|
||||
|
||||
@@ -441,6 +441,23 @@
|
||||
new /obj/item/clothing/mask/muzzle(src)
|
||||
new /obj/item/mmi/syndie(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/surgery_adv
|
||||
name = "advanced surgery duffel bag"
|
||||
desc = "A large duffel bag for holding surgical tools. Bears the logo of an advanced med-tech firm."
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/surgery_adv/PopulateContents()
|
||||
new /obj/item/hemostat/adv(src)
|
||||
new /obj/item/circular_saw/adv(src)
|
||||
new /obj/item/scalpel/adv(src)
|
||||
new /obj/item/retractor/adv(src)
|
||||
new /obj/item/cautery/adv(src)
|
||||
new /obj/item/surgicaldrill/adv(src)
|
||||
new /obj/item/surgical_drapes(src)
|
||||
new /obj/item/storage/firstaid/tactical(src)
|
||||
new /obj/item/clothing/suit/straight_jacket(src)
|
||||
new /obj/item/clothing/mask/muzzle(src)
|
||||
new /obj/item/mmi/syndie(src)
|
||||
|
||||
/obj/item/storage/backpack/duffelbag/syndie/ammo
|
||||
name = "ammunition duffel bag"
|
||||
desc = "A large duffel bag for holding extra weapons ammunition and supplies."
|
||||
|
||||
@@ -168,6 +168,20 @@
|
||||
/obj/item/pinpointer/crew
|
||||
))
|
||||
|
||||
|
||||
/obj/item/storage/belt/medical/surgery_belt_adv
|
||||
name = "surgical supply belt"
|
||||
desc = "A specialized belt designed for holding surgical equipment. It seems to have specific pockets for each and every surgical tool you can think of."
|
||||
|
||||
/obj/item/storage/belt/medical/surgery_belt_adv/PopulateContents()
|
||||
new /obj/item/hemostat/adv(src)
|
||||
new /obj/item/circular_saw/adv(src)
|
||||
new /obj/item/scalpel/adv(src)
|
||||
new /obj/item/retractor/adv(src)
|
||||
new /obj/item/cautery/adv(src)
|
||||
new /obj/item/surgicaldrill/adv(src)
|
||||
new /obj/item/surgical_drapes(src)
|
||||
|
||||
/obj/item/storage/belt/security
|
||||
name = "security belt"
|
||||
desc = "Can hold security gear like handcuffs and flashes."
|
||||
|
||||
@@ -99,6 +99,26 @@
|
||||
new /obj/item/storage/pill_bottle/charcoal(src)
|
||||
new /obj/item/healthanalyzer(src)
|
||||
|
||||
/obj/item/storage/firstaid/radbgone
|
||||
name = "radiation treatment kit"
|
||||
desc = "Used to treat minor toxic blood content and major radiation poisoning."
|
||||
icon_state = "antitoxin"
|
||||
item_state = "firstaid-toxin"
|
||||
|
||||
/obj/item/storage/firstaid/radbgone/suicide_act(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user] begins licking the lead paint off \the [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return TOXLOSS
|
||||
|
||||
/obj/item/storage/firstaid/radbgone/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
new /obj/item/reagent_containers/syringe/charcoal(src)
|
||||
new /obj/item/storage/pill_bottle/charcoal(src)
|
||||
new /obj/item/reagent_containers/pill/mutadone(src)
|
||||
new /obj/item/reagent_containers/pill/antirad(src)
|
||||
new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
|
||||
new /obj/item/healthanalyzer(src)
|
||||
|
||||
/obj/item/storage/firstaid/o2
|
||||
name = "oxygen deprivation treatment kit"
|
||||
desc = "A box full of oxygen goodies."
|
||||
@@ -191,6 +211,14 @@
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/reagent_containers/pill/charcoal(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/antirad
|
||||
name = "bottle of charcoal pills"
|
||||
desc = "Contains pills used to counter radiation poisoning."
|
||||
|
||||
/obj/item/storage/pill_bottle/anitrad/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/reagent_containers/pill/antirad(src)
|
||||
|
||||
/obj/item/storage/pill_bottle/epinephrine
|
||||
name = "bottle of epinephrine pills"
|
||||
desc = "Contains pills used to stabilize patients."
|
||||
|
||||
@@ -84,15 +84,6 @@
|
||||
//Citadel change buffed to base levels
|
||||
total_mass = 2
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/heirloom/afterattack(atom/A, mob/user, proximity) //Citadel Adds massive buff to machinery destruction
|
||||
. = ..()
|
||||
if(proximity)
|
||||
if(isobj(A))
|
||||
var/obj/machinery/door/O = A
|
||||
if(istype(O) && (O.damage_deflection >= 10)) //Eh fine. //This is a meme cast do not do what I did!
|
||||
return
|
||||
O.take_damage(13)
|
||||
|
||||
/obj/item/storage/toolbox/mechanical/old/heirloom/PopulateContents()
|
||||
return
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
. = ..()
|
||||
GET_COMPONENT(STR, /datum/component/storage)
|
||||
STR.max_items = 4
|
||||
STR.cant_hold = typecacheof(list(/obj/item/screwdriver/power))
|
||||
STR.can_hold = typecacheof(list(
|
||||
/obj/item/stack/spacecash,
|
||||
/obj/item/card,
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
new /obj/item/door_remote/chief_medical_officer(src)
|
||||
new /obj/item/clothing/neck/petcollar(src)
|
||||
new /obj/item/pet_carrier(src)
|
||||
new /obj/item/storage/belt/medical/surgery_belt_adv(src)
|
||||
new /obj/item/wallframe/defib_mount(src)
|
||||
new /obj/item/circuitboard/machine/techfab/department/medical(src)
|
||||
new /obj/item/storage/photo_album/CMO(src)
|
||||
@@ -99,4 +100,4 @@
|
||||
new /obj/item/storage/box/pillbottles(src)
|
||||
new /obj/item/storage/box/pillbottles(src)
|
||||
new /obj/item/storage/box/medsprays(src)
|
||||
new /obj/item/storage/box/medsprays(src)
|
||||
new /obj/item/storage/box/medsprays(src)
|
||||
|
||||
@@ -63,7 +63,8 @@
|
||||
|
||||
/obj/structure/closet/firecloset/PopulateContents()
|
||||
..()
|
||||
|
||||
if (prob(50))
|
||||
new /obj/item/reagent_containers/hypospray/medipen/firelocker(src)
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/tank/internals/oxygen/red(src)
|
||||
@@ -71,6 +72,9 @@
|
||||
new /obj/item/clothing/head/hardhat/red(src)
|
||||
|
||||
/obj/structure/closet/firecloset/full/PopulateContents()
|
||||
..()
|
||||
if (prob(50))
|
||||
new /obj/item/reagent_containers/hypospray/medipen/firelocker(src)
|
||||
new /obj/item/clothing/suit/fire/firefighter(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
new /obj/item/flashlight(src)
|
||||
@@ -132,6 +136,8 @@
|
||||
|
||||
/obj/structure/closet/radiation/PopulateContents()
|
||||
..()
|
||||
if(prob(50))
|
||||
new /obj/item/storage/firstaid/radbgone(src)
|
||||
new /obj/item/geiger_counter(src)
|
||||
new /obj/item/clothing/suit/radiation(src)
|
||||
new /obj/item/clothing/head/radiation(src)
|
||||
@@ -146,18 +152,38 @@
|
||||
|
||||
/obj/structure/closet/bombcloset/PopulateContents()
|
||||
..()
|
||||
if(prob(70))
|
||||
new /obj/item/screwdriver(src)
|
||||
if(prob(50))
|
||||
new /obj/item/multitool(src)
|
||||
if(prob(70))
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/clothing/suit/bomb_suit(src)
|
||||
new /obj/item/clothing/under/color/black(src)
|
||||
new /obj/item/clothing/shoes/sneakers/black(src)
|
||||
new /obj/item/clothing/head/bomb_hood(src)
|
||||
|
||||
/obj/structure/closet/bombcloset/security/PopulateContents()
|
||||
..()
|
||||
if(prob(90))
|
||||
new /obj/item/screwdriver(src)
|
||||
if(prob(70))
|
||||
new /obj/item/multitool(src)
|
||||
if(prob(90))
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/clothing/suit/bomb_suit/security(src)
|
||||
new /obj/item/clothing/under/rank/security(src)
|
||||
new /obj/item/clothing/shoes/jackboots(src)
|
||||
new /obj/item/clothing/head/bomb_hood/security(src)
|
||||
|
||||
/obj/structure/closet/bombcloset/white/PopulateContents()
|
||||
..()
|
||||
if(prob(50))
|
||||
new /obj/item/screwdriver(src)
|
||||
if(prob(20))
|
||||
new /obj/item/multitool(src)
|
||||
if(prob(50))
|
||||
new /obj/item/wirecutters(src)
|
||||
new /obj/item/clothing/suit/bomb_suit/white(src)
|
||||
new /obj/item/clothing/under/color/black(src)
|
||||
new /obj/item/clothing/shoes/sneakers/black(src)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
name = "magic mirror"
|
||||
desc = "Turn and face the strange... face."
|
||||
icon_state = "magic_mirror"
|
||||
var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant", "android", "synth", "mush")
|
||||
var/list/races_blacklist = list("skeleton", "agent", "angel", "military_synth", "memezombies", "clockwork golem servant", "android", "synth", "mush", "zombie", "memezombie")
|
||||
var/list/choosable_races = list()
|
||||
|
||||
/obj/structure/mirror/magic/New()
|
||||
|
||||
@@ -204,5 +204,7 @@
|
||||
soundin = pick('sound/effects/clang1.ogg', 'sound/effects/clang2.ogg')
|
||||
if("clangsmall")
|
||||
soundin = pick('sound/effects/clangsmall1.ogg', 'sound/effects/clangsmall2.ogg')
|
||||
if("slosh")
|
||||
soundin = pick('sound/effects/slosh1.ogg', 'sound/effects/slosh2.ogg')
|
||||
//END OF CIT CHANGES
|
||||
return soundin
|
||||
|
||||
@@ -102,6 +102,15 @@ GLOBAL_LIST(round_end_notifiees)
|
||||
return "Query produced no output"
|
||||
var/list/text_res = results.Copy(1, 3)
|
||||
var/list/refs = results.len > 3 ? results.Copy(4) : null
|
||||
if(refs)
|
||||
var/list/L = list()
|
||||
for(var/ref in refs)
|
||||
var/atom/A = locate(ref)
|
||||
if(A)
|
||||
L += "[A]"
|
||||
else
|
||||
L += "[ref]"
|
||||
refs = L
|
||||
. = "[text_res.Join("\n")][refs ? "\nRefs: [refs.Join(" ")]" : ""]"
|
||||
|
||||
/datum/tgs_chat_command/reload_admins
|
||||
|
||||
@@ -845,7 +845,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/level = input("Select security level to change to","Set Security Level") as null|anything in list("green","blue","red","delta")
|
||||
var/level = input("Select security level to change to","Set Security Level") as null|anything in list("green","blue","amber","red","delta")
|
||||
if(level)
|
||||
set_security_level(level)
|
||||
|
||||
|
||||
@@ -194,7 +194,8 @@
|
||||
else
|
||||
L.visible_message("<span class='warning'>[L]'s eyes blaze with brilliant light!</span>", \
|
||||
"<span class='userdanger'>Your vision suddenly screams with white-hot light!</span>")
|
||||
L.Knockdown(15)
|
||||
L.Knockdown(160)
|
||||
L.adjustStaminaLoss(140) // now kindle works pretty much like bloodcult stun knockdown and stamcrit wise
|
||||
L.apply_status_effect(STATUS_EFFECT_KINDLE)
|
||||
L.flash_act(1, 1)
|
||||
if(iscultist(L))
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
desc = "Charges your slab with divine energy, allowing you to overwhelm a target with Ratvar's light."
|
||||
invocations = list("Divinity, show them your light!")
|
||||
whispered = TRUE
|
||||
channel_time = 30
|
||||
channel_time = 20 // I think making kindle channel a third of the time less is a good make up for the fact that it silences people for such a little amount of time.
|
||||
power_cost = 125
|
||||
usage_tip = "The light can be used from up to two tiles away. Damage taken will GREATLY REDUCE the stun's duration."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
@@ -112,21 +112,21 @@
|
||||
quickbind_desc = "Applies handcuffs to a struck target."
|
||||
|
||||
|
||||
//Vanguard: Provides twenty seconds of stun immunity. At the end of the twenty seconds, 25% of all stuns absorbed are applied to the invoker.
|
||||
//Vanguard: Provides twenty seconds of greatly increased stamina and stun immunity. At the end of the twenty seconds, 25% of all stuns absorbed are applied to the invoker.
|
||||
/datum/clockwork_scripture/vanguard
|
||||
descname = "Self Stun Immunity"
|
||||
name = "Vanguard"
|
||||
desc = "Provides twenty seconds of stun immunity. At the end of the twenty seconds, the invoker is knocked down for the equivalent of 25% of all stuns they absorbed. \
|
||||
desc = "Provides twenty seconds of greatly increased stamina and stun immunity. At the end of the twenty seconds, the invoker is knocked down for the equivalent of 25% of all stuns they absorbed. \
|
||||
Excessive absorption will cause unconsciousness."
|
||||
invocations = list("Shield me...", "...from darkness!")
|
||||
channel_time = 30
|
||||
power_cost = 25
|
||||
power_cost = 75
|
||||
usage_tip = "You cannot reactivate Vanguard while still shielded by it."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 6
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to temporarily absorb stuns. All stuns absorbed will affect you when disabled."
|
||||
quickbind_desc = "Allows you to temporarily have quickly regenerating stamina and absorb stuns. All stuns absorbed will affect you when disabled."
|
||||
|
||||
/datum/clockwork_scripture/vanguard/check_special_requirements()
|
||||
if(!GLOB.ratvar_awakens && islist(invoker.stun_absorption) && invoker.stun_absorption["vanguard"] && invoker.stun_absorption["vanguard"]["end_time"] > world.time)
|
||||
|
||||
@@ -508,7 +508,9 @@
|
||||
if(SEC_LEVEL_GREEN)
|
||||
set_coefficient = 2
|
||||
if(SEC_LEVEL_BLUE)
|
||||
set_coefficient = 1
|
||||
set_coefficient = 1.2
|
||||
if(SEC_LEVEL_AMBER)
|
||||
set_coefficient = 0.8
|
||||
else
|
||||
set_coefficient = 0.5
|
||||
var/surplus = timer - (SSshuttle.emergencyCallTime * set_coefficient)
|
||||
|
||||
@@ -125,7 +125,9 @@
|
||||
to_chat(M, "<span class='userdanger'>[user] blinds you with the flash!</span>")
|
||||
else
|
||||
to_chat(M, "<span class='userdanger'>You are blinded by [src]!</span>")
|
||||
M.Knockdown(rand(80,120))
|
||||
var/toblur = 20 - M.eye_blurry
|
||||
if(toblur > 0)
|
||||
M.blur_eyes(toblur)
|
||||
else if(user)
|
||||
visible_message("<span class='disarm'>[user] fails to blind [M] with the flash!</span>")
|
||||
to_chat(user, "<span class='warning'>You fail to blind [M] with the flash!</span>")
|
||||
@@ -141,7 +143,7 @@
|
||||
if(!try_use_flash(user))
|
||||
return FALSE
|
||||
if(iscarbon(M))
|
||||
flash_carbon(M, user, 5, 1)
|
||||
flash_carbon(M, user, 20, 1)
|
||||
return TRUE
|
||||
else if(issilicon(M))
|
||||
var/mob/living/silicon/robot/R = M
|
||||
|
||||
@@ -76,3 +76,17 @@
|
||||
/datum/export/manifest_correct_denied/get_cost(obj/O)
|
||||
var/obj/item/paper/fluff/jobs/cargo/manifest/M = O
|
||||
return ..() - M.order_cost
|
||||
|
||||
// Paper work done correctly
|
||||
|
||||
/datum/export/paperwork_correct
|
||||
cost = 50
|
||||
unit_name = "correct paperwork"
|
||||
export_types = list(/obj/item/paper/fluff/jobs/cargo/manifest/paperwork_correct)
|
||||
|
||||
// Paper work not done retruned
|
||||
|
||||
/datum/export/paperwork_incorrect
|
||||
cost = -500 // Failed to meet NT standers
|
||||
unit_name = "returned incorrect paperwork"
|
||||
export_types = list(/obj/item/paper/fluff/jobs/cargo/manifest/paperwork)
|
||||
|
||||
@@ -95,3 +95,14 @@
|
||||
while(--lost >= 0)
|
||||
qdel(pick(C.contents))
|
||||
return C
|
||||
|
||||
//Paperwork for NT
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork
|
||||
name = "Incomplete Paperwork"
|
||||
desc = "These should've been filled out four months ago! Unfinished grant papers issued by Nanotrasen's finance department. Complete this page for additional funding."
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork_correct
|
||||
name = "Finished Paperwork"
|
||||
desc = "A neat stack of filled-out forms, in triplicate and signed. Is there anything more satisfying? Make sure they get stamped."
|
||||
icon = 'icons/obj/bureaucracy.dmi'
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
/datum/supply_pack/emergency/rcds
|
||||
name = "Emergency RCDs"
|
||||
desc = "Bombs going off on station? SME blown and now you need to fix the hole it left behind? Well this crate has a pare of Rcds to be able to easily fix up any problem you may have!"
|
||||
cost = 1500
|
||||
cost = 1500
|
||||
contains = list(/obj/item/construction/rcd,
|
||||
/obj/item/construction/rcd)
|
||||
crate_name = "emergency rcds"
|
||||
@@ -93,7 +93,7 @@
|
||||
/datum/supply_pack/emergency/soft_suit
|
||||
name = "Emergency Space Suit "
|
||||
desc = "Is there bombs going off left and right? Is there meteors shooting around the station? Well we have two fragile space suit for emergencys as well as air and masks."
|
||||
cost = 1000
|
||||
cost = 1000
|
||||
contains = list(/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
@@ -268,7 +268,7 @@
|
||||
/datum/supply_pack/medical/anitvirus
|
||||
name = "Virus Containment Crate"
|
||||
desc = "Viro let out a death plague Mk II again? Someone didnt wash there hands? Old plagues born anew? Well this crate is for you! Hope you cure it before it brakes out of the station... This crate needs medical access to open and has two bio suits, a box of needles and beakers, five spaceacillin needles, and a medibot."
|
||||
cost = 3000
|
||||
cost = 3000
|
||||
access = ACCESS_MEDICAL
|
||||
contains = list(/mob/living/simple_animal/bot/medbot,
|
||||
/obj/item/clothing/head/bio_hood,
|
||||
@@ -721,7 +721,7 @@
|
||||
/datum/supply_pack/engineering/industrialrcd
|
||||
name = "Industrial RCD"
|
||||
desc = "A industrial RCD in case the station has gone through more then one meteor storm and the CE needs to bring out the somthing a bit more reliable. Dose not contain spare ammo for the industrial RCD or any other RCD modles."
|
||||
cost = 4500
|
||||
cost = 4500
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/item/construction/rcd/industrial)
|
||||
crate_name = "industrial rcd"
|
||||
@@ -1236,6 +1236,24 @@
|
||||
/obj/item/storage/firstaid/regular)
|
||||
crate_name = "first aid kit crate"
|
||||
|
||||
/datum/supply_pack/medical/iv_drip
|
||||
name = "IV Drip Crate"
|
||||
desc = "Contains a single IV drip stand for intravenous delivery."
|
||||
cost = 700
|
||||
contains = list(/obj/machinery/iv_drip)
|
||||
crate_name = "iv drip crate"
|
||||
|
||||
/datum/supply_pack/science/adv_surgery_tools
|
||||
name = "Med-Co Advanced surgery tools"
|
||||
desc = "A full set of Med-Co advanced surgery tools, this crate also comes with a spay of synth flesh as well as a can of . Requires Surgery access to open."
|
||||
cost = 5000
|
||||
access = ACCESS_SURGERY
|
||||
contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
|
||||
/obj/item/reagent_containers/medspray/synthflesh,
|
||||
/obj/item/reagent_containers/medspray/sterilizine)
|
||||
crate_name = "medco newest surgery tools"
|
||||
crate_type = /obj/structure/closet/crate/medical
|
||||
|
||||
/datum/supply_pack/medical/medicalhardsuit
|
||||
name = "Medical Hardsuit"
|
||||
desc = "Got people being spaced left and right? Hole in the same room as the dead body of Hos or cap? Fear not, now you can buy one medical hardsuit with a mask and air tank to save your fellow crewmembers."
|
||||
@@ -1245,13 +1263,6 @@
|
||||
/obj/item/clothing/suit/space/hardsuit/medical)
|
||||
crate_name = "medical hardsuit"
|
||||
|
||||
/datum/supply_pack/medical/iv_drip
|
||||
name = "IV Drip Crate"
|
||||
desc = "Contains a single IV drip for administering blood to patients."
|
||||
cost = 700
|
||||
contains = list(/obj/machinery/iv_drip)
|
||||
crate_name = "iv drip crate"
|
||||
|
||||
/datum/supply_pack/medical/supplies
|
||||
name = "Medical Supplies Crate"
|
||||
desc = "Contains seven beakers, syringes, and bodybags. Three morphine bottles, four insulin pills. Two charcoal bottles, epinephrine bottles, antitoxin bottles, and large beakers. Finally, a single roll of medical gauze, as well as a bottle of stimulant pills for long, hard work days. German doctor not included."
|
||||
@@ -1479,6 +1490,19 @@
|
||||
/datum/supply_pack/service
|
||||
group = "Service"
|
||||
|
||||
|
||||
/datum/supply_pack/service/advlighting
|
||||
name = "Advanced Lighting crate"
|
||||
desc = "Thanks to advanced lighting tech we here at the Lamp Factory have be able to produce more lamps and lamp items! This crate has three lamps, a box of lights and a state of the art rapid-light-device!"
|
||||
cost = 2500 //Fair
|
||||
contains = list(/obj/item/construction/rld,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/obj/item/storage/box/lights/mixed)
|
||||
crate_name = "advanced lighting crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/service/cargo_supples
|
||||
name = "Cargo Supplies Crate"
|
||||
desc = "Sold everything that wasn't bolted down? You can get right back to work with this crate containing stamps, an export scanner, destination tagger, hand labeler and some package wrapping."
|
||||
@@ -1537,17 +1561,19 @@
|
||||
crate_name = "janitor backpack crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/service/advlighting
|
||||
name = "Advanced Lighting crate"
|
||||
desc = "Thanks to advanced lighting tech we here at the Lamp Factory have be able to produce more lamps and lamp items! This crate has three lamps, a box of lights and a state of the art rapid-light-device!"
|
||||
cost = 2500 //Fair
|
||||
contains = list(/obj/item/construction/rld,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/obj/item/storage/box/lights/mixed)
|
||||
crate_name = "advanced lighting crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
/datum/supply_pack/service/janitor/janpremium
|
||||
name = "Janitor Premium Supplies"
|
||||
desc = "Do to the union for better supplies, we have desided to make a deal for you, In this crate you can get a brand new chem, Drying Angent this stuff is the work of slimes or magic! This crate also contains a rag to test out the Drying Angent magic, three wet floor signs, and some spare bottles of ammonia."
|
||||
cost = 3000
|
||||
access = ACCESS_JANITOR
|
||||
contains = list(/obj/item/caution,
|
||||
/obj/item/caution,
|
||||
/obj/item/caution,
|
||||
/obj/item/reagent_containers/glass/rag,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/spray/drying_agent)
|
||||
crate_name = "janitor backpack crate"
|
||||
|
||||
/datum/supply_pack/service/mule
|
||||
name = "MULEbot Crate"
|
||||
@@ -1702,7 +1728,7 @@
|
||||
name = "Kitchen Cutlery Deluxe Set"
|
||||
desc = "Need to slice and dice away those ''Tomatos'' well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal."
|
||||
cost = 10000
|
||||
contraband = TRUE
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/sharpener,
|
||||
/obj/item/kitchen/fork,
|
||||
/obj/item/kitchen/fork,
|
||||
@@ -2218,8 +2244,7 @@
|
||||
/datum/supply_pack/costumes_toys/randomised/toys
|
||||
name = "Toy Crate"
|
||||
desc = "Who cares about pride and accomplishment? Skip the gaming and get straight to the sweet rewards with this product! Contains five random toys. Warranty void if used to prank research directors."
|
||||
cost = 5000 // or play the arcade machines ya lazy bum
|
||||
// TODID make this actually just use the arcade machine loot list
|
||||
cost = 1500 // or play the arcade machines ya lazy bum
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/storage/box/snappops,
|
||||
/obj/item/toy/talking/AI,
|
||||
@@ -2273,6 +2298,77 @@
|
||||
crate_name = "toy crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/plush
|
||||
name = "Plush Crate"
|
||||
desc = "Plush tide station wide. Contains 5 random plushies for you to love. Warranty void if your love violates the terms of use."
|
||||
cost = 1500 // or play the arcade machines ya lazy bum
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/toy/plush/lizardplushie,
|
||||
/obj/item/toy/plush/lizardplushie/durgit,
|
||||
/obj/item/toy/plush/lizardplushie/rio,
|
||||
/obj/item/toy/plush/lizardplushie/urinsu,
|
||||
/obj/item/toy/plush/lizardplushie/arfrehn,
|
||||
/obj/item/toy/plush/lizardplushie/soars,
|
||||
/obj/item/toy/plush/lizardplushie/ghostie,
|
||||
/obj/item/toy/plush/lizardplushie/amber,
|
||||
/obj/item/toy/plush/lizardplushie/cyan,
|
||||
/obj/item/toy/plush/lizardplushie/meena,
|
||||
/obj/item/toy/plush/lizardplushie/stalks,
|
||||
/obj/item/toy/plush/lizardplushie/kobold,
|
||||
/obj/item/toy/plush/lizardplushie/gorgi,
|
||||
/obj/item/toy/plush/lizardplushie/almaz,
|
||||
/obj/item/toy/plush/snakeplushie/sasha,
|
||||
/obj/item/toy/plush/snakeplushie/shay,
|
||||
/obj/item/toy/plush/snakeplushie/vulken,
|
||||
/obj/item/toy/plush/mothplushie,
|
||||
/obj/item/toy/plush/mothplushie/bumble,
|
||||
/obj/item/toy/plush/mothplushie/nameko,
|
||||
/obj/item/toy/plush/mothplushie/suru,
|
||||
/obj/item/toy/plush/xeno,
|
||||
/obj/item/toy/plush/lampplushie,
|
||||
/obj/item/toy/plush/borgplushie,
|
||||
/obj/item/toy/plush/borgplushie/medihound,
|
||||
/obj/item/toy/plush/borgplushie/scrubpuppy,
|
||||
/obj/item/toy/plush/borgplushie/seeking,
|
||||
/obj/item/toy/plush/borgplushie/neeb,
|
||||
/obj/item/toy/plush/bird,
|
||||
/obj/item/toy/plush/bird/esela,
|
||||
/obj/item/toy/plush/bird/jahonna,
|
||||
/obj/item/toy/plush/bird/krick,
|
||||
/obj/item/toy/plush/bird/birddi,
|
||||
/obj/item/toy/plush/bird/jewel,
|
||||
/obj/item/toy/plush/mammal,
|
||||
/obj/item/toy/plush/mammal/dubious,
|
||||
/obj/item/toy/plush/mammal/gladwyn,
|
||||
/obj/item/toy/plush/mammal/gavin,
|
||||
/obj/item/toy/plush/mammal/blep,
|
||||
/obj/item/toy/plush/mammal/circe,
|
||||
/obj/item/toy/plush/mammal/pavel,
|
||||
/obj/item/toy/plush/mammal/oten,
|
||||
/obj/item/toy/plush/mammal/ray,
|
||||
/obj/item/toy/plush/mammal/dawud,
|
||||
/obj/item/toy/plush/mammal/edgar,
|
||||
/obj/item/toy/plush/mammal/frank,
|
||||
/obj/item/toy/plush/mammal/poojawa,
|
||||
/obj/item/toy/plush/mammal/hazel,
|
||||
/obj/item/toy/plush/mammal/jermaine,
|
||||
/obj/item/toy/plush/mammal/gunther,
|
||||
/obj/item/toy/plush/mammal/fox,
|
||||
/obj/item/toy/plush/mammal/zed,
|
||||
/obj/item/toy/plush/mammal/dog,
|
||||
/obj/item/toy/plush/mammal/dog/frost,
|
||||
/obj/item/toy/plush/mammal/dog/atticus,
|
||||
/obj/item/toy/plush/mammal/dog/fletch,
|
||||
/obj/item/toy/plush/mammal/dog/vincent,
|
||||
/obj/item/toy/plush/mammal/dog/zigfried,
|
||||
/obj/item/toy/plush/mammal/dog/nikolai,
|
||||
/obj/item/toy/plush/catgirl,
|
||||
/obj/item/toy/plush/catgirl/skylar,
|
||||
/obj/item/toy/plush/catgirl/mikeel,
|
||||
/obj/item/toy/plush/catgirl/robin)
|
||||
crate_name = "plushie crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/wizard
|
||||
name = "Wizard Costume Crate"
|
||||
desc = "Pretend to join the Wizard Federation with this full wizard outfit! Nanotrasen would like to remind its employees that actually joining the Wizard Federation is subject to termination of job and life."
|
||||
@@ -2516,7 +2612,7 @@
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/misc/lewdkeg
|
||||
name = "Lewd Deluxe Keg"
|
||||
name = "Lewd Deluxe Keg"
|
||||
desc = "That other stuff not getting you ready? Well I have a Chemslut making tons of the good stuff."
|
||||
cost = 7000 //It can be a weapon
|
||||
contraband = TRUE
|
||||
@@ -2524,6 +2620,27 @@
|
||||
crate_name = "deluxe keg"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/misc/paper_work
|
||||
name = "Freelance Paper work"
|
||||
desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up.
|
||||
cost = 400 // Net of 0 credits
|
||||
contains = list(/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain)
|
||||
crate_name = "Paperwork"
|
||||
|
||||
/datum/supply_pack/misc/toner
|
||||
name = "Toner Crate"
|
||||
desc = "Spent too much ink printing butt pictures? Fret not, with these six toner refills, you'll be printing butts 'till the cows come home!'"
|
||||
|
||||
@@ -67,6 +67,11 @@
|
||||
user.visible_message("<span class='suicide'>[user] is putting \the [src] to [user.p_their()] eyes and overloading the brightness! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/clothing/glasses/meson/prescription
|
||||
name = "prescription optical meson scanner"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting conditions. This one has prescription lens fitted in."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/night
|
||||
name = "night vision meson scanner"
|
||||
desc = "An optical meson scanner fitted with an amplified visible light spectrum overlay, providing greater visual clarity in darkness."
|
||||
@@ -159,6 +164,7 @@
|
||||
attack_verb = list("sliced")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
sharpness = IS_SHARP
|
||||
vision_correction = 1
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
|
||||
|
||||
/obj/item/clothing/glasses/regular
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
var/mode = MODE_NONE
|
||||
var/range = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/prescription
|
||||
name = "prescription engineering scanner goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, the T-ray Scanner mode lets you see underfloor objects such as cables and pipes, and the Radiation Scanner mode let's you see objects contaminated by radiation. Each lens has been replaced with a corrective lens."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/Initialize()
|
||||
. = ..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
@@ -137,6 +142,11 @@
|
||||
|
||||
modes = list(MODE_NONE = MODE_TRAY, MODE_TRAY = MODE_NONE)
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/tray/prescription
|
||||
name = "prescription optical t-ray scanner"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, the T-ray Scanner mode lets you see underfloor objects such as cables and pipes, and the Radiation Scanner mode let's you see objects contaminated by radiation. This one has a lens that help correct eye sight."
|
||||
vision_correction = 1
|
||||
|
||||
/obj/item/clothing/glasses/meson/engine/shuttle
|
||||
name = "shuttle region scanner"
|
||||
icon_state = "trayson-shuttle"
|
||||
|
||||
@@ -37,6 +37,14 @@
|
||||
hud_type = DATA_HUD_MEDICAL_ADVANCED
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightblue
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/prescription
|
||||
name = "prescription health scanner HUD"
|
||||
desc = "A heads-up display, made with a prescription lens, that scans the humans in view and provides accurate data about their health status."
|
||||
icon_state = "healthhud"
|
||||
hud_type = DATA_HUD_MEDICAL_ADVANCED
|
||||
vision_correction = 1
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightblue
|
||||
|
||||
/obj/item/clothing/glasses/hud/health/night
|
||||
name = "night vision health scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
@@ -62,6 +70,14 @@
|
||||
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightorange
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
name = "prescription diagnostic HUD"
|
||||
desc = "A heads-up display capable of analyzing the integrity and status of robotics and exosuits. This one has a prescription lens."
|
||||
icon_state = "diagnostichud"
|
||||
hud_type = DATA_HUD_DIAGNOSTIC_BASIC
|
||||
vision_correction = 1
|
||||
glass_colour_type = /datum/client_colour/glass_colour/lightorange
|
||||
|
||||
/obj/item/clothing/glasses/hud/diagnostic/night
|
||||
name = "night vision diagnostic HUD"
|
||||
desc = "A robotics diagnostic HUD fitted with a light amplifier."
|
||||
@@ -78,6 +94,14 @@
|
||||
hud_type = DATA_HUD_SECURITY_ADVANCED
|
||||
glass_colour_type = /datum/client_colour/glass_colour/red
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/prescription
|
||||
name = "prescription security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records. This one has a prescription lens so you can see the banana peal that slipped you."
|
||||
icon_state = "securityhud"
|
||||
hud_type = DATA_HUD_SECURITY_ADVANCED
|
||||
vision_correction = 1
|
||||
glass_colour_type = /datum/client_colour/glass_colour/red
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/chameleon
|
||||
name = "chameleon security HUD"
|
||||
desc = "A stolen security HUD integrated with Syndicate chameleon technology. Provides flash protection."
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
actions_types = list(/datum/action/item_action/toggle)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
hit_reaction_chance = 50 // Only on the chest yet blocks all attacks?
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user)
|
||||
active = !(active)
|
||||
@@ -64,8 +65,9 @@
|
||||
/obj/item/clothing/suit/armor/reactive/teleport
|
||||
name = "reactive teleport armor"
|
||||
desc = "Someone separated our Research Director from his own head!"
|
||||
var/tele_range = 6
|
||||
var/rad_amount= 15
|
||||
var/tele_range = 8
|
||||
var/rad_amount = 60
|
||||
var/rad_amount_before = 120
|
||||
reactivearmor_cooldown_duration = 100
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
|
||||
@@ -79,6 +81,7 @@
|
||||
owner.visible_message("<span class='danger'>The reactive teleport system flings [H] clear of [attack_text], shutting itself off in the process!</span>")
|
||||
playsound(get_turf(owner),'sound/magic/blink.ogg', 100, 1)
|
||||
var/list/turfs = new/list()
|
||||
var/turf/old = get_turf(src)
|
||||
for(var/turf/T in orange(tele_range, H))
|
||||
if(T.density)
|
||||
continue
|
||||
@@ -93,7 +96,8 @@
|
||||
if(!isturf(picked))
|
||||
return
|
||||
H.forceMove(picked)
|
||||
H.rad_act(rad_amount)
|
||||
radiation_pulse(old, rad_amount_before)
|
||||
radiation_pulse(src, rad_amount)
|
||||
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
|
||||
return 1
|
||||
return 0
|
||||
@@ -157,6 +161,8 @@
|
||||
var/tesla_power = 25000
|
||||
var/tesla_range = 20
|
||||
var/tesla_flags = TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE
|
||||
var/legacy = FALSE
|
||||
var/legacy_dmg = 30
|
||||
|
||||
/obj/item/clothing/suit/armor/reactive/tesla/dropped(mob/user)
|
||||
..()
|
||||
@@ -179,7 +185,15 @@
|
||||
owner.visible_message("<span class='danger'>The tesla capacitors on [owner]'s reactive tesla armor are still recharging! The armor merely emits some sparks.</span>")
|
||||
return
|
||||
owner.visible_message("<span class='danger'>[src] blocks [attack_text], sending out arcs of lightning!</span>")
|
||||
tesla_zap(owner, tesla_range, tesla_power, tesla_flags)
|
||||
if(!legacy)
|
||||
tesla_zap(owner, tesla_range, tesla_power, tesla_flags)
|
||||
else
|
||||
for(var/mob/living/M in view(7, owner))
|
||||
if(M == owner)
|
||||
continue
|
||||
owner.Beam(M,icon_state="purple_lightning",icon='icons/effects/effects.dmi',time=5)
|
||||
M.adjustFireLoss(legacy_dmg)
|
||||
playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||
reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -694,10 +694,18 @@
|
||||
/obj/item/reagent_containers/food/snacks/grown/potato = 1)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/paperwork
|
||||
name = "Filed Paper Work"
|
||||
result = /obj/item/paper/fluff/jobs/cargo/manifest/paperwork_correct
|
||||
time = 90 //Takes time for people to file and complete paper work!
|
||||
reqs = list(/obj/item/pen = 1,
|
||||
/obj/item/paper/fluff/jobs/cargo/manifest/paperwork = 2)
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/ghettojetpack
|
||||
name = "Improvised Jetpack"
|
||||
result = /obj/item/tank/jetpack/improvised
|
||||
time = 30
|
||||
reqs = list(/obj/item/tank/internals/oxygen/red = 2, /obj/item/extinguisher = 1, /obj/item/pipe = 3, /obj/item/stack/cable_coil = 30)//red oxygen tank so it looks right
|
||||
category = CAT_MISC
|
||||
tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER)
|
||||
tools = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/removeDontImproveChance = 10 //chance the randomly created law replaces a random law instead of simply being added
|
||||
var/shuffleLawsChance = 10 //chance the AI's laws are shuffled afterwards
|
||||
var/botEmagChance = 10
|
||||
var/announceEvent = ION_RANDOM // -1 means don't announce, 0 means have it randomly announce, 1 means
|
||||
var/announceEvent = ION_RANDOM // -1 means don't announce, 0 means have it randomly announce, 1 means it is announced
|
||||
var/ionMessage = null
|
||||
var/ionAnnounceChance = 33
|
||||
announceWhen = 1
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
|
||||
/datum/round_event/ion_storm/start()
|
||||
//AI laws
|
||||
//Generate AI law change
|
||||
for(var/mob/living/silicon/ai/M in GLOB.alive_mob_list)
|
||||
M.laws_sanity_check()
|
||||
if(M.stat != DEAD && M.see_in_dark != 0)
|
||||
@@ -53,6 +53,31 @@
|
||||
log_game("Ion storm changed laws of [key_name(M)] to [english_list(M.laws.get_law_list(TRUE, TRUE))]")
|
||||
M.post_lawchange()
|
||||
|
||||
//Generate Cyborg law change
|
||||
for(var/mob/living/silicon/robot/M in GLOB.alive_mob_list)
|
||||
M.laws_sanity_check()
|
||||
if(M.stat != DEAD && M.see_in_dark != 0)
|
||||
if(prob(replaceLawsetChance))
|
||||
M.laws.pick_weighted_lawset()
|
||||
|
||||
if(prob(removeRandomLawChance))
|
||||
M.remove_law(rand(1, M.laws.get_law_amount(list(LAW_INHERENT, LAW_SUPPLIED))))
|
||||
|
||||
var/message = ionMessage || generate_ion_law()
|
||||
if(message)
|
||||
if(prob(removeDontImproveChance))
|
||||
M.replace_random_law(message, list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
|
||||
else
|
||||
M.add_ion_law(message)
|
||||
|
||||
if(prob(shuffleLawsChance))
|
||||
M.shuffle_laws(list(LAW_INHERENT, LAW_SUPPLIED, LAW_ION))
|
||||
|
||||
log_game("Ion storm changed laws of [key_name(M)] to [english_list(M.laws.get_law_list(TRUE, TRUE))]")
|
||||
M.post_lawchange()
|
||||
|
||||
|
||||
//Chance to emag a Bot
|
||||
if(botEmagChance)
|
||||
for(var/mob/living/simple_animal/bot/bot in GLOB.alive_mob_list)
|
||||
if(prob(botEmagChance))
|
||||
|
||||
@@ -120,6 +120,12 @@
|
||||
I.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0))
|
||||
B.icon = I
|
||||
B.name = "broken [name]"
|
||||
if(ranged)
|
||||
var/matrix/M = matrix(B.transform)
|
||||
M.Turn(rand(-170, 170))
|
||||
B.transform = M
|
||||
B.pixel_x = rand(-12, 12)
|
||||
B.pixel_y = rand(-12, 12)
|
||||
if(prob(33))
|
||||
new/obj/item/shard(drop_location())
|
||||
playsound(src, "shatter", 70, 1)
|
||||
@@ -296,6 +302,12 @@
|
||||
B.force = 0
|
||||
B.throwforce = 0
|
||||
B.desc = "A carton with the bottom half burst open. Might give you a papercut."
|
||||
if(ranged)
|
||||
var/matrix/M = matrix(B.transform)
|
||||
M.Turn(rand(-170, 170))
|
||||
B.transform = M
|
||||
B.pixel_x = rand(-12, 12)
|
||||
B.pixel_y = rand(-12, 12)
|
||||
transfer_fingerprints_to(B)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -23,6 +23,12 @@
|
||||
var/obj/item/broken_bottle/B = new (loc)
|
||||
if(!ranged)
|
||||
thrower.put_in_hands(B)
|
||||
else
|
||||
var/matrix/M = matrix(B.transform)
|
||||
M.Turn(rand(-170, 170))
|
||||
B.transform = M
|
||||
B.pixel_x = rand(-12, 12)
|
||||
B.pixel_y = rand(-12, 12)
|
||||
B.icon_state = icon_state
|
||||
|
||||
var/icon/I = new('icons/obj/drinks.dmi', src.icon_state)
|
||||
|
||||
@@ -563,9 +563,9 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tinychocolate
|
||||
name = "chocolate"
|
||||
desc = "A tiny and sweet chocolate."
|
||||
desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!"
|
||||
icon_state = "tiny_chocolate"
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 1, "cocoa" = 1)
|
||||
list_reagents = list("nutriment" = 1, "sugar" = 1, "cocoa" = 1, "aphro" = 1)
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("chocolate" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
////////////////////////////////////////// COCKTAILS //////////////////////////////////////
|
||||
|
||||
|
||||
/datum/chemical_reaction/goldschlager
|
||||
name = "Goldschlager"
|
||||
id = "goldschlager"
|
||||
@@ -676,7 +675,6 @@
|
||||
results = list("fernet_cola" = 2)
|
||||
required_reagents = list("fernet" = 1, "cola" = 1)
|
||||
|
||||
|
||||
/datum/chemical_reaction/fanciulli
|
||||
name = "Fanciulli"
|
||||
id = "fanciulli"
|
||||
@@ -688,3 +686,9 @@
|
||||
id = "branca_menta"
|
||||
results = list("branca_menta" = 3)
|
||||
required_reagents = list("fernet" = 1, "creme_de_menthe" = 1, "ice" = 1)
|
||||
|
||||
/datum/chemical_reaction/pwrgame
|
||||
name = "Power Gamer"
|
||||
id = "pwr_game"
|
||||
results = list("pwr_game" = 5)
|
||||
required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, "sodiumchloride" = 1)
|
||||
|
||||
@@ -33,7 +33,8 @@
|
||||
return
|
||||
|
||||
/mob/dead/new_player/proc/new_player_panel()
|
||||
var/output = "<center><p><a href='byond://?src=[REF(src)];show_preferences=1'>Setup Character</a></p>"
|
||||
var/output = "<center><p>Welcome, <b>[client ? client.prefs.real_name : "Unknown User"]</b></p>"
|
||||
output += "<p><a href='byond://?src=[REF(src)];show_preferences=1'>Setup Character</a></p>"
|
||||
|
||||
if(SSticker.current_state <= GAME_STATE_PREGAME)
|
||||
switch(ready)
|
||||
@@ -441,58 +442,87 @@
|
||||
var/available_job_count = 0
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
|
||||
available_job_count++;
|
||||
available_job_count++
|
||||
for(var/spawner in GLOB.mob_spawners)
|
||||
available_job_count++
|
||||
break
|
||||
|
||||
for(var/datum/job/prioritized_job in SSjob.prioritized_jobs)
|
||||
if(prioritized_job.current_positions >= prioritized_job.total_positions)
|
||||
SSjob.prioritized_jobs -= prioritized_job
|
||||
if(!available_job_count)
|
||||
dat += "<div class='notice red'>There are currently no open positions!</div>"
|
||||
|
||||
if(length(SSjob.prioritized_jobs))
|
||||
dat += "<div class='notice red'>The station has flagged these jobs as high priority:<br>"
|
||||
var/amt = length(SSjob.prioritized_jobs)
|
||||
var/amt_count
|
||||
for(var/datum/job/a in SSjob.prioritized_jobs)
|
||||
amt_count++
|
||||
if(amt_count != amt) // checks for the last job added.
|
||||
dat += " [a.title], "
|
||||
else
|
||||
dat += " [a.title]. </div>"
|
||||
else
|
||||
dat += "<div class='clearBoth'>Choose from the following open positions:</div><br>"
|
||||
var/list/categorizedJobs = list(
|
||||
"Command" = list(jobs = list(), titles = GLOB.command_positions, color = "#aac1ee"),
|
||||
"Engineering" = list(jobs = list(), titles = GLOB.engineering_positions, color = "#ffd699"),
|
||||
"Supply" = list(jobs = list(), titles = GLOB.supply_positions, color = "#ead4ae"),
|
||||
"Miscellaneous" = list(jobs = list(), titles = list(), color = "#ffffff", colBreak = TRUE),
|
||||
"Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff"),
|
||||
"Synthetic" = list(jobs = list(), titles = GLOB.nonhuman_positions, color = "#ccffcc"),
|
||||
"Service" = list(jobs = list(), titles = GLOB.civilian_positions, color = "#cccccc"),
|
||||
"Medical" = list(jobs = list(), titles = GLOB.medical_positions, color = "#99ffe6", colBreak = TRUE),
|
||||
"Science" = list(jobs = list(), titles = GLOB.science_positions, color = "#e6b3e6"),
|
||||
"Security" = list(jobs = list(), titles = GLOB.security_positions, color = "#ff9999"),
|
||||
)
|
||||
for(var/spawner in GLOB.mob_spawners)
|
||||
categorizedJobs["Ghost Role"]["jobs"] += spawner
|
||||
|
||||
dat += "<div class='clearBoth'>Choose from the following open positions:</div><br>"
|
||||
dat += "<small>(G) - Ghost Role</small><br>"
|
||||
dat += "<div class='jobs'><div class='jobsColumn'>"
|
||||
var/job_count = 0
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
|
||||
job_count++;
|
||||
if (job_count > round(available_job_count / 2))
|
||||
dat += "</div><div class='jobsColumn'>"
|
||||
var/position_class = "otherPosition"
|
||||
if (job.title in GLOB.command_positions)
|
||||
position_class = "commandPosition"
|
||||
dat += "<a class='[position_class]' href='byond://?src=[REF(src)];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a><br>"
|
||||
if(!job_count) //if there's nowhere to go, overflow opens up.
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
if(job.title != SSjob.overflow_role)
|
||||
if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE)
|
||||
var/categorized = FALSE
|
||||
for(var/jobcat in categorizedJobs)
|
||||
var/list/jobs = categorizedJobs[jobcat]["jobs"]
|
||||
if(job.title in categorizedJobs[jobcat]["titles"])
|
||||
categorized = TRUE
|
||||
if(jobcat == "Command")
|
||||
|
||||
if(job.title == "Captain") // Put captain at top of command jobs
|
||||
jobs.Insert(1, job)
|
||||
else
|
||||
jobs += job
|
||||
else // Put heads at top of non-command jobs
|
||||
if(job.title in GLOB.command_positions)
|
||||
jobs.Insert(1, job)
|
||||
else
|
||||
jobs += job
|
||||
if(!categorized)
|
||||
categorizedJobs["Miscellaneous"]["jobs"] += job
|
||||
|
||||
|
||||
dat += "<table><tr><td valign='top'>"
|
||||
for(var/jobcat in categorizedJobs)
|
||||
if(categorizedJobs[jobcat]["colBreak"])
|
||||
dat += "</td><td valign='top'>"
|
||||
if(!length(categorizedJobs[jobcat]["jobs"]))
|
||||
continue
|
||||
dat += "<a class='otherPosition' href='byond://?src=[REF(src)];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a><br>"
|
||||
break
|
||||
for(var/spawner in GLOB.mob_spawners)
|
||||
job_count++
|
||||
if(job_count > round(available_job_count / 2))
|
||||
dat += "<a class='otherPosition' href='byond://?src=[REF(src)];JoinAsGhostRole=[spawner]'>[spawner] (G)</a><br>"
|
||||
dat += "</div></div>"
|
||||
var/color = categorizedJobs[jobcat]["color"]
|
||||
dat += "<fieldset style='border: 2px solid [color]; display: inline'>"
|
||||
dat += "<legend align='center' style='color: [color]'>[jobcat]</legend>"
|
||||
for(var/datum/job/job in categorizedJobs[jobcat]["jobs"])
|
||||
var/position_class = "otherPosition"
|
||||
if(job.title in GLOB.command_positions)
|
||||
position_class = "commandPosition"
|
||||
if(job in SSjob.prioritized_jobs)
|
||||
dat += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job.title]'><font color='lime'><b>[job.title] ([job.current_positions])</b></font></a>"
|
||||
else
|
||||
dat += "<a class='[position_class]' style='display:block;width:170px' href='byond://?src=[REF(src)];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a>"
|
||||
categorizedJobs[jobcat]["jobs"] -= job
|
||||
|
||||
for(var/spawner in categorizedJobs[jobcat]["jobs"])
|
||||
dat += "<a class='otherPosition' style='display:block;width:170px' href='byond://?src=[REF(src)];JoinAsGhostRole=[spawner]'>[spawner]</a>"
|
||||
|
||||
dat += "</fieldset><br>"
|
||||
dat += "</td></tr></table></center>"
|
||||
dat += "</div></div>"
|
||||
|
||||
// Removing the old window method but leaving it here for reference
|
||||
//src << browse(dat, "window=latechoices;size=300x640;can_close=1")
|
||||
|
||||
// Added the new browser window method
|
||||
var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 440, 500)
|
||||
var/datum/browser/popup = new(src, "latechoices", "Choose Profession", 680, 580)
|
||||
popup.add_stylesheet("playeroptions", 'html/browser/playeroptions.css')
|
||||
popup.set_content(dat)
|
||||
popup.open(0) // 0 is passed to open so that it doesn't use the onclose() proc
|
||||
popup.open(FALSE) // FALSE is passed to open so that it doesn't use the onclose() proc
|
||||
|
||||
|
||||
/mob/dead/new_player/proc/create_character(transfer_after)
|
||||
|
||||
@@ -188,6 +188,7 @@
|
||||
update_inv_hands()
|
||||
I.pixel_x = initial(I.pixel_x)
|
||||
I.pixel_y = initial(I.pixel_y)
|
||||
I.transform = initial(I.transform)
|
||||
return hand_index || TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -88,6 +88,9 @@
|
||||
|
||||
if(digitalcamo)
|
||||
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner.\n"
|
||||
|
||||
if(combatmode)
|
||||
msg += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n"
|
||||
|
||||
GET_COMPONENT_FROM(mood, /datum/component/mood, src)
|
||||
if(mood)
|
||||
|
||||
@@ -264,6 +264,8 @@
|
||||
if(pocket_item)
|
||||
if(pocket_item == (pocket_id == SLOT_R_STORE ? r_store : l_store)) //item still in the pocket we search
|
||||
dropItemToGround(pocket_item)
|
||||
if(!put_in_hands(pocket_item))
|
||||
pocket_item.forceMove(drop_location())
|
||||
else
|
||||
if(place_item)
|
||||
if(place_item.mob_can_equip(src, usr, pocket_id, FALSE, TRUE))
|
||||
|
||||
@@ -700,9 +700,13 @@
|
||||
var/list/L = where
|
||||
if(what == who.get_item_for_held_index(L[2]))
|
||||
if(who.dropItemToGround(what))
|
||||
if(!put_in_hands(what))
|
||||
what.forceMove(drop_location())
|
||||
log_combat(src, who, "stripped [what] off")
|
||||
if(what == who.get_item_by_slot(where))
|
||||
if(who.dropItemToGround(what))
|
||||
if(!put_in_hands(what))
|
||||
what.forceMove(drop_location())
|
||||
log_combat(src, who, "stripped [what] off")
|
||||
|
||||
// The src mob is trying to place an item on someone
|
||||
|
||||
@@ -93,8 +93,15 @@
|
||||
desc = "A failed Syndicate experiment in weaponized space carp technology, it now serves as a lovable mascot."
|
||||
gender = FEMALE
|
||||
speak_emote = list("squeaks")
|
||||
maxHealth = 90
|
||||
health = 90
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
faction = list(ROLE_SYNDICATE)
|
||||
AIStatus = AI_OFF
|
||||
|
||||
harm_intent_damage = 12
|
||||
obj_damage = 70
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 18
|
||||
|
||||
#undef REGENERATION_DELAY
|
||||
|
||||
@@ -73,6 +73,11 @@
|
||||
/obj/item/ammo_casing/proc/bounce_away(still_warm = FALSE, bounce_delay = 3)
|
||||
update_icon()
|
||||
SpinAnimation(10, 1)
|
||||
var/matrix/M = matrix(transform)
|
||||
M.Turn(rand(-170,170))
|
||||
transform = M
|
||||
pixel_x = rand(-12, 12)
|
||||
pixel_y = rand(-12, 12)
|
||||
var/turf/T = get_turf(src)
|
||||
if(still_warm && T && T.bullet_sizzle)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/items/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
pump(user)
|
||||
recentpump = world.time + 10
|
||||
if(istype(user))//CIT CHANGE - makes pumping shotguns cost a lil bit of stamina.
|
||||
user.adjustStaminaLossBuffered(5) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added
|
||||
user.adjustStaminaLossBuffered(2) //CIT CHANGE - DITTO. make this scale inversely to the strength stat when stats/skills are added
|
||||
return
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/blow_up(mob/user)
|
||||
@@ -206,7 +206,7 @@
|
||||
desc = "A compact version of the semi automatic combat shotgun. For close encounters."
|
||||
icon_state = "cshotgunc"
|
||||
mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
//Dual Feed Shotgun
|
||||
|
||||
|
||||
@@ -1280,6 +1280,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFFF" // rgb: 207, 54, 0
|
||||
taste_description = "the back of class"
|
||||
no_mob_color = TRUE
|
||||
|
||||
/datum/reagent/colorful_reagent/crayonpowder/New()
|
||||
description = "\an [colorname] powder made by grinding down crayons, good for colouring chemical reagents."
|
||||
@@ -1481,14 +1482,16 @@
|
||||
color = "#C8A5DC"
|
||||
var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d11141","#00b159","#00aedb","#f37735","#ffc425","#008744","#0057e7","#d62d20","#ffa700")
|
||||
taste_description = "rainbows"
|
||||
|
||||
var/no_mob_color = FALSE
|
||||
|
||||
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/M)
|
||||
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
|
||||
if(!no_mob_color)
|
||||
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
|
||||
..()
|
||||
|
||||
/datum/reagent/colorful_reagent/reaction_mob(mob/living/M, reac_volume)
|
||||
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
|
||||
if(!no_mob_color)
|
||||
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
|
||||
..()
|
||||
|
||||
/datum/reagent/colorful_reagent/reaction_obj(obj/O, reac_volume)
|
||||
|
||||
@@ -592,3 +592,24 @@
|
||||
id = "pax"
|
||||
results = list("pax" = 3)
|
||||
required_reagents = list("mindbreaker" = 1, "synaptizine" = 1, "water" = 1)
|
||||
|
||||
/datum/chemical_reaction/cat
|
||||
name = "felined mutation toxic"
|
||||
id = "cats"
|
||||
results = list("felinidmutationtoxin" = 1)
|
||||
required_reagents = list("mindbreaker" = 1, "ammonia" = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme
|
||||
required_temp = 450
|
||||
|
||||
/datum/chemical_reaction/moff
|
||||
name = "moth mutation toxic"
|
||||
id = "moffs"
|
||||
results = list("mothmutationtoxin" = 1)
|
||||
required_reagents = list("liquid_dark_matter" = 2, "ammonia" = 5, "lithium" = 1, "stablemutationtoxin" = 1)
|
||||
required_temp = 320
|
||||
|
||||
/datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play
|
||||
name = "shadow muatatuin toxic"
|
||||
id = "notlight"
|
||||
results = list("shadowmutationtoxin" = 1)
|
||||
required_reagents = list("liquid_dark_matter" = 5, "synaptizine" = 10, "oculine" = 10, "stablemutationtoxin" = 1)
|
||||
required_temp = 600
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
|
||||
else if(bartender_check(target) && thrown)
|
||||
visible_message("<span class='notice'>[src] lands onto the [target.name] without spilling a single drop.</span>")
|
||||
transform = initial(transform)
|
||||
return
|
||||
|
||||
else
|
||||
|
||||
@@ -168,6 +168,13 @@
|
||||
amount_per_transfer_from_this = 1
|
||||
list_reagents = list("unstablemutationtoxin" = 1)
|
||||
|
||||
/obj/item/reagent_containers/hypospray/medipen/firelocker
|
||||
name = "fire treatment medipen"
|
||||
desc = "A medipen that has been fulled with burn healing chemicals for personnel without advanced medical knowledge."
|
||||
volume = 15
|
||||
amount_per_transfer_from_this = 15
|
||||
list_reagents = list("oxandrolone" = 5, "kelotane" = 10)
|
||||
|
||||
/obj/item/reagent_containers/hypospray/combat/heresypurge
|
||||
name = "holy water autoinjector"
|
||||
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with 5 doses of a holy water mixture."
|
||||
|
||||
@@ -81,66 +81,77 @@
|
||||
icon_state = "pill5"
|
||||
list_reagents = list("toxin" = 50)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/cyanide
|
||||
name = "cyanide pill"
|
||||
desc = "Don't swallow this."
|
||||
icon_state = "pill5"
|
||||
list_reagents = list("cyanide" = 50)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/adminordrazine
|
||||
name = "adminordrazine pill"
|
||||
desc = "It's magic. We don't have to explain it."
|
||||
icon_state = "pill16"
|
||||
list_reagents = list("adminordrazine" = 50)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/morphine
|
||||
name = "morphine pill"
|
||||
desc = "Commonly used to treat insomnia."
|
||||
icon_state = "pill8"
|
||||
list_reagents = list("morphine" = 30)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/stimulant
|
||||
name = "stimulant pill"
|
||||
desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!"
|
||||
icon_state = "pill19"
|
||||
list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/salbutamol
|
||||
name = "salbutamol pill"
|
||||
desc = "Used to treat oxygen deprivation."
|
||||
icon_state = "pill16"
|
||||
list_reagents = list("salbutamol" = 30)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/charcoal
|
||||
name = "charcoal pill"
|
||||
desc = "Neutralizes many common toxins."
|
||||
icon_state = "pill17"
|
||||
list_reagents = list("charcoal" = 10)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/epinephrine
|
||||
name = "epinephrine pill"
|
||||
desc = "Used to stabilize patients."
|
||||
icon_state = "pill5"
|
||||
list_reagents = list("epinephrine" = 15)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/mannitol
|
||||
name = "mannitol pill"
|
||||
desc = "Used to treat brain damage."
|
||||
icon_state = "pill17"
|
||||
list_reagents = list("mannitol" = 50)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/mutadone
|
||||
name = "mutadone pill"
|
||||
desc = "Used to treat genetic damage."
|
||||
icon_state = "pill20"
|
||||
list_reagents = list("mutadone" = 50)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/salicyclic
|
||||
name = "salicylic acid pill"
|
||||
desc = "Used to dull pain."
|
||||
icon_state = "pill9"
|
||||
list_reagents = list("sal_acid" = 24)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/oxandrolone
|
||||
name = "oxandrolone pill"
|
||||
desc = "Used to stimulate burn healing."
|
||||
@@ -154,6 +165,13 @@
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("insulin" = 50)
|
||||
roundstart = 1
|
||||
|
||||
/obj/item/reagent_containers/pill/antirad
|
||||
name = "potassium iodide pill"
|
||||
desc = "Used to treat radition used to counter radiation poisoning."
|
||||
icon_state = "pill18"
|
||||
list_reagents = list("potass_iodide" = 50)
|
||||
roundstart = 1
|
||||
///////////////////////////////////////// this pill is used only in a legion mob drop
|
||||
/obj/item/reagent_containers/pill/shadowtoxin
|
||||
name = "black pill"
|
||||
|
||||
@@ -166,6 +166,15 @@
|
||||
user.visible_message("<span class='suicide'>[user] decided life was worth living.</span>")
|
||||
return
|
||||
|
||||
//Drying Agent
|
||||
/obj/item/reagent_containers/spray/drying_agent
|
||||
name = "drying agent spray"
|
||||
desc = "A spray bottle for drying agent."
|
||||
volume = 100
|
||||
list_reagents = list("drying_agent" = 100)
|
||||
amount_per_transfer_from_this = 2
|
||||
stream_amount = 5
|
||||
|
||||
//spray tan
|
||||
/obj/item/reagent_containers/spray/spraytan
|
||||
name = "spray tan"
|
||||
|
||||
@@ -13,6 +13,16 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_prescription
|
||||
name = "Prescription Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens."
|
||||
id = "health_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_night
|
||||
name = "Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
@@ -33,6 +43,17 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/security_hud_prescription
|
||||
name = "Prescription Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens."
|
||||
id = "security_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/security_hud_night
|
||||
name = "Night Vision Security HUD"
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
@@ -53,6 +74,16 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_prescription
|
||||
name = "Prescription Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens."
|
||||
id = "diagnostic_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_night
|
||||
name = "Night Vision Diagnostic HUD"
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
@@ -107,6 +138,16 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/mesons_prescription
|
||||
name = "Prescription Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design."
|
||||
id = "mesons_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles
|
||||
name = "Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
@@ -117,6 +158,16 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles_prescription
|
||||
name = "Prescription Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "engine_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles
|
||||
name = "Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
@@ -127,6 +178,16 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles_prescription
|
||||
name = "Prescription Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "tray_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
@@ -187,86 +248,6 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/handdrill
|
||||
name = "Hand Drill"
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/jawsoflife
|
||||
name = "Jaws of Life"
|
||||
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
|
||||
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwrench
|
||||
name = "Alien Wrench"
|
||||
desc = "An advanced wrench obtained through Abductor technology."
|
||||
id = "alien_wrench"
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwirecutters
|
||||
name = "Alien Wirecutters"
|
||||
desc = "Advanced wirecutters obtained through Abductor technology."
|
||||
id = "alien_wirecutters"
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienscrewdriver
|
||||
name = "Alien Screwdriver"
|
||||
desc = "An advanced screwdriver obtained through Abductor technology."
|
||||
id = "alien_screwdriver"
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/aliencrowbar
|
||||
name = "Alien Crowbar"
|
||||
desc = "An advanced crowbar obtained through Abductor technology."
|
||||
id = "alien_crowbar"
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwelder
|
||||
name = "Alien Welding Tool"
|
||||
desc = "An advanced welding tool obtained through Abductor technology."
|
||||
id = "alien_welder"
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienmultitool
|
||||
name = "Alien Multitool"
|
||||
desc = "An advanced multitool obtained through Abductor technology."
|
||||
id = "alien_multitool"
|
||||
build_path = /obj/item/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant Data Disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
@@ -385,6 +366,86 @@
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/handdrill
|
||||
name = "Hand Drill"
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/jawsoflife
|
||||
name = "Jaws of Life"
|
||||
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
|
||||
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwrench
|
||||
name = "Alien Wrench"
|
||||
desc = "An advanced wrench obtained through Abductor technology."
|
||||
id = "alien_wrench"
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwirecutters
|
||||
name = "Alien Wirecutters"
|
||||
desc = "Advanced wirecutters obtained through Abductor technology."
|
||||
id = "alien_wirecutters"
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienscrewdriver
|
||||
name = "Alien Screwdriver"
|
||||
desc = "An advanced screwdriver obtained through Abductor technology."
|
||||
id = "alien_screwdriver"
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/aliencrowbar
|
||||
name = "Alien Crowbar"
|
||||
desc = "An advanced crowbar obtained through Abductor technology."
|
||||
id = "alien_crowbar"
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwelder
|
||||
name = "Alien Welding Tool"
|
||||
desc = "An advanced welding tool obtained through Abductor technology."
|
||||
id = "alien_welder"
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienmultitool
|
||||
name = "Alien Multitool"
|
||||
desc = "An advanced multitool obtained through Abductor technology."
|
||||
id = "alien_multitool"
|
||||
build_path = /obj/item/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/anomaly_neutralizer
|
||||
name = "Anomaly Neutralizer"
|
||||
desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine."
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
display_name = "Advanced Engineering"
|
||||
description = "Pushing the boundaries of physics, one chainsaw-fist at a time."
|
||||
prereq_ids = list("engineering", "emp_basic")
|
||||
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask")
|
||||
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask", "tray_goggles_prescription", "engine_goggles_prescription", "mesons_prescription")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000)
|
||||
export_price = 5000
|
||||
|
||||
@@ -426,7 +426,7 @@
|
||||
display_name = "Integrated HUDs"
|
||||
description = "The usefulness of computerized records, projected straight onto your eyepiece!"
|
||||
prereq_ids = list("comp_recordkeeping", "emp_basic")
|
||||
design_ids = list("health_hud", "security_hud", "diagnostic_hud", "scigoggles")
|
||||
design_ids = list("health_hud", "security_hud", "diagnostic_hud", "scigoggles", "health_hud_prescription", "security_hud_prescription", "diagnostic_hud_prescription")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
display_name = "Night Vision Technology"
|
||||
description = "Allows seeing in the dark without actual light!"
|
||||
prereq_ids = list("integrated_HUDs", "adv_engi", "emp_adv")
|
||||
design_ids = list("health_hud_night", "security_hud_night", "diagnostic_hud_night", "night_visision_goggles", "night_visision_goggles_glasses", "nvgmesons")
|
||||
design_ids = list("health_hud_night", "security_hud_night", "diagnostic_hud_night", "night_visision_goggles", "nvgmesons", "night_visision_goggles_glasses")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
//SEC_LEVEL_GREEN = code green
|
||||
//SEC_LEVEL_BLUE = code blue
|
||||
//SEC_LEVEL_AMBER = code amber
|
||||
//SEC_LEVEL_RED = code red
|
||||
//SEC_LEVEL_DELTA = code delta
|
||||
|
||||
@@ -12,6 +13,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
level = SEC_LEVEL_GREEN
|
||||
if("blue")
|
||||
level = SEC_LEVEL_BLUE
|
||||
if("amber")
|
||||
level = SEC_LEVEL_AMBER
|
||||
if("red")
|
||||
level = SEC_LEVEL_RED
|
||||
if("delta")
|
||||
@@ -25,8 +28,10 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
if(GLOB.security_level >= SEC_LEVEL_RED)
|
||||
SSshuttle.emergency.modTimer(4)
|
||||
else if(GLOB.security_level == SEC_LEVEL_AMBER)
|
||||
SSshuttle.emergency.modTimer(2.5)
|
||||
else
|
||||
SSshuttle.emergency.modTimer(2)
|
||||
SSshuttle.emergency.modTimer(1.66)
|
||||
GLOB.security_level = SEC_LEVEL_GREEN
|
||||
for(var/obj/machinery/firealarm/FA in GLOB.machines)
|
||||
if(is_station_level(FA.z))
|
||||
@@ -35,24 +40,46 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
if(GLOB.security_level < SEC_LEVEL_BLUE)
|
||||
minor_announce(CONFIG_GET(string/alert_blue_upto), "Attention! Security level elevated to blue:",1)
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
SSshuttle.emergency.modTimer(0.5)
|
||||
SSshuttle.emergency.modTimer(0.6)
|
||||
else
|
||||
minor_announce(CONFIG_GET(string/alert_blue_downto), "Attention! Security level lowered to blue:")
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
SSshuttle.emergency.modTimer(2)
|
||||
if(GLOB.security_level >= SEC_LEVEL_RED)
|
||||
SSshuttle.emergency.modTimer(2.4)
|
||||
else
|
||||
SSshuttle.emergency.modTimer(1.5)
|
||||
GLOB.security_level = SEC_LEVEL_BLUE
|
||||
sound_to_playing_players('sound/misc/voybluealert.ogg') // Citadel change - Makes alerts play a sound
|
||||
for(var/obj/machinery/firealarm/FA in GLOB.machines)
|
||||
if(is_station_level(FA.z))
|
||||
FA.update_icon()
|
||||
if(SEC_LEVEL_AMBER)
|
||||
if(GLOB.security_level < SEC_LEVEL_AMBER)
|
||||
minor_announce(CONFIG_GET(string/alert_amber_upto), "Attention! Security level elevated to amber:",1)
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
if(GLOB.security_level == SEC_LEVEL_GREEN)
|
||||
SSshuttle.emergency.modTimer(0.4)
|
||||
else
|
||||
SSshuttle.emergency.modTimer(0.66)
|
||||
else
|
||||
minor_announce(CONFIG_GET(string/alert_amber_downto), "Attention! Security level lowered to amber:")
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
SSshuttle.emergency.modTimer(1.6)
|
||||
GLOB.security_level = SEC_LEVEL_AMBER
|
||||
sound_to_playing_players('sound/effects/alert.ogg') // Citadel change - Makes alerts play a sound
|
||||
for(var/obj/machinery/firealarm/FA in GLOB.machines)
|
||||
if(is_station_level(FA.z))
|
||||
FA.update_icon()
|
||||
if(SEC_LEVEL_RED)
|
||||
if(GLOB.security_level < SEC_LEVEL_RED)
|
||||
minor_announce(CONFIG_GET(string/alert_red_upto), "Attention! Code red!",1)
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
if(GLOB.security_level == SEC_LEVEL_GREEN)
|
||||
SSshuttle.emergency.modTimer(0.25)
|
||||
else if(GLOB.security_level == SEC_LEVEL_BLUE)
|
||||
SSshuttle.emergency.modTimer(0.416)
|
||||
else
|
||||
SSshuttle.emergency.modTimer(0.5)
|
||||
SSshuttle.emergency.modTimer(0.625)
|
||||
else
|
||||
minor_announce(CONFIG_GET(string/alert_red_downto), "Attention! Code red!")
|
||||
GLOB.security_level = SEC_LEVEL_RED
|
||||
@@ -66,10 +93,12 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
if(SEC_LEVEL_DELTA)
|
||||
minor_announce(CONFIG_GET(string/alert_delta), "Attention! Delta security level reached!",1)
|
||||
if(SSshuttle.emergency.mode == SHUTTLE_CALL || SSshuttle.emergency.mode == SHUTTLE_RECALL)
|
||||
if(GLOB.security_level == SEC_LEVEL_GREEN)
|
||||
if(GLOB.security_level < SEC_LEVEL_BLUE)
|
||||
SSshuttle.emergency.modTimer(0.25)
|
||||
else if(GLOB.security_level == SEC_LEVEL_BLUE)
|
||||
SSshuttle.emergency.modTimer(0.5)
|
||||
SSshuttle.emergency.modTimer(0.416)
|
||||
else
|
||||
SSshuttle.emergency.modTimer(0.625)
|
||||
GLOB.security_level = SEC_LEVEL_DELTA
|
||||
sound_to_playing_players('sound/misc/deltakalaxon.ogg') // Citadel change - Makes alerts play a sound
|
||||
for(var/obj/machinery/firealarm/FA in GLOB.machines)
|
||||
@@ -93,6 +122,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
return "green"
|
||||
if(SEC_LEVEL_BLUE)
|
||||
return "blue"
|
||||
if(SEC_LEVEL_AMBER)
|
||||
return "amber"
|
||||
if(SEC_LEVEL_RED)
|
||||
return "red"
|
||||
if(SEC_LEVEL_DELTA)
|
||||
@@ -104,6 +135,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
return "green"
|
||||
if(SEC_LEVEL_BLUE)
|
||||
return "blue"
|
||||
if(SEC_LEVEL_AMBER)
|
||||
return "amber"
|
||||
if(SEC_LEVEL_RED)
|
||||
return "red"
|
||||
if(SEC_LEVEL_DELTA)
|
||||
@@ -115,6 +148,8 @@ GLOBAL_VAR_INIT(security_level, SEC_LEVEL_GREEN)
|
||||
return SEC_LEVEL_GREEN
|
||||
if("blue")
|
||||
return SEC_LEVEL_BLUE
|
||||
if("amber")
|
||||
return SEC_LEVEL_AMBER
|
||||
if("red")
|
||||
return SEC_LEVEL_RED
|
||||
if("delta")
|
||||
|
||||
@@ -206,7 +206,9 @@
|
||||
if(SEC_LEVEL_GREEN)
|
||||
set_coefficient = 2
|
||||
if(SEC_LEVEL_BLUE)
|
||||
set_coefficient = 1
|
||||
set_coefficient = 1.2
|
||||
if(SEC_LEVEL_AMBER)
|
||||
set_coefficient = 0.8
|
||||
else
|
||||
set_coefficient = 0.5
|
||||
var/call_time = SSshuttle.emergencyCallTime * set_coefficient * engine_coeff
|
||||
|
||||
@@ -295,6 +295,7 @@
|
||||
|
||||
var/datum/species/S = H.dna.species
|
||||
species_id = S.limbs_id
|
||||
should_draw_citadel = S.should_draw_citadel // Citadel Addition
|
||||
species_flags_list = H.dna.species.species_traits
|
||||
|
||||
if(S.use_skintones)
|
||||
@@ -396,7 +397,7 @@
|
||||
limb.icon_state = "[species_id]_[body_zone]"
|
||||
|
||||
// Citadel Start
|
||||
if(should_draw_citadel)
|
||||
if(should_draw_citadel && !use_digitigrade)
|
||||
limb.icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
|
||||
if(should_draw_gender)
|
||||
limb.icon_state = "[species_id]_[body_zone]_[icon_gender]"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
var/safe_co2_min = 0
|
||||
var/safe_co2_max = 10 // Yes it's an arbitrary value who cares?
|
||||
var/safe_toxins_min = 0
|
||||
var/safe_toxins_max = 0.05
|
||||
var/safe_toxins_max = MOLES_GAS_VISIBLE
|
||||
var/SA_para_min = 1 //Sleeping agent
|
||||
var/SA_sleep_min = 5 //Sleeping agent
|
||||
var/BZ_trip_balls_min = 1 //BZ gas
|
||||
@@ -324,7 +324,7 @@
|
||||
// Clear out moods when no miasma at all
|
||||
else
|
||||
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "smell")
|
||||
|
||||
|
||||
handle_breath_temperature(breath, H)
|
||||
breath.garbage_collect()
|
||||
return TRUE
|
||||
|
||||
@@ -251,8 +251,10 @@
|
||||
var/static/regex/clap_words = regex("clap|applaud")
|
||||
var/static/regex/honk_words = regex("ho+nk") //hooooooonk
|
||||
var/static/regex/multispin_words = regex("like a record baby|right round")
|
||||
var/static/regex/orgasm_words = regex("cum|orgasm|climax|squirt") //CITADEL CHANGE
|
||||
var/static/regex/orgasm_words = regex("cum|orgasm|climax|squirt|heyo") //CITADEL CHANGE
|
||||
var/static/regex/dab_words = regex("dab|mood") //CITADEL CHANGE
|
||||
var/static/regex/snap_words = regex("snap") //CITADEL CHANGE
|
||||
var/static/regex/bwoink_words = regex("what the fuck are you doing|bwoink|hey you got a moment?") //CITADEL CHANGE
|
||||
|
||||
var/i = 0
|
||||
//STUN
|
||||
@@ -582,6 +584,18 @@
|
||||
for(var/V in listeners)
|
||||
var/mob/living/M = V
|
||||
M.say("*dab")
|
||||
|
||||
//SNAP
|
||||
else if((findtext(message, snap_words)))
|
||||
cooldown = COOLDOWN_MEME
|
||||
for(var/V in listeners)
|
||||
var/mob/living/M = V
|
||||
M.say("*snap")
|
||||
|
||||
//BWOINK
|
||||
else if((findtext(message, bwoink_words)))
|
||||
cooldown = COOLDOWN_MEME
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/effects/adminhelp.ogg', 300, 1), 25)
|
||||
//END CITADEL CHANGES
|
||||
|
||||
else
|
||||
|
||||
@@ -988,6 +988,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
item = /obj/item/storage/backpack/duffelbag/syndie/surgery
|
||||
cost = 3
|
||||
|
||||
/datum/uplink_item/device_tools/surgerybag_adv
|
||||
name = "Syndicate Surgery Duffel Bag"
|
||||
desc = "The Syndicate surgery duffel bag is a toolkit containing all newest surgery tools, surgical drapes, \
|
||||
a Syndicate brand MMI, a straitjacket, a muzzle, and a full Syndicate Combat Medic Kit."
|
||||
item = /obj/item/storage/backpack/duffelbag/syndie/surgery_adv
|
||||
cost = 15 //Mite be to cheap
|
||||
|
||||
/datum/uplink_item/device_tools/military_belt
|
||||
name = "Chest Rig"
|
||||
desc = "A robust seven-slot set of webbing that is capable of holding all manner of tactical equipment."
|
||||
|
||||
@@ -57,10 +57,12 @@ MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 1
|
||||
|
||||
## ALERT LEVELS ###
|
||||
ALERT_GREEN All threats to the station have passed. Security may not have weapons visible, privacy laws are once again fully enforced.
|
||||
ALERT_BLUE_UPTO The station has received reliable information about possible hostile activity on the station. Security staff may have weapons visible, random searches are permitted.
|
||||
ALERT_BLUE_DOWNTO The immediate threat has passed. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still allowed.
|
||||
ALERT_RED_UPTO There is an immediate serious threat to the station. Security may have weapons unholstered at all times. Random searches are allowed and advised. Additionally, access requirements on some doors have been lifted.
|
||||
ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised.
|
||||
ALERT_BLUE_UPTO The station has received reliable information about potential threats to the station. Security staff may have weapons visible, random searches are permitted.
|
||||
ALERT_BLUE_DOWNTO Significant confirmed threats have been neutralized. Security may no longer have weapons drawn at all times, but may continue to have them visible. Random searches are still permitted.
|
||||
ALERT_AMBER_UPTO There are signficant confirmed threats to the station. Security staff may have weapons unholstered at all times. Random searches are allowed and advised.
|
||||
ALERT_AMBER_DOWNTO The immediate threat has passed. Security is no longer authorized to use lethal force, but may continue to have weapons drawn. Access requirements have been restored.
|
||||
ALERT_RED_UPTO There is an immediate serious threat to the station. Security is now authorized to use lethal force. Additionally, access requirements on some machines have been lifted.
|
||||
ALERT_RED_DOWNTO The station's destruction has been averted. There is still however an immediate serious threat to the station. Security is still authorized to use lethal force.
|
||||
ALERT_DELTA Destruction of the station is imminent. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill.
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "The new player panel now displays your currently selected character's name"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Flashes no longer knockdown. Instead, they deal eyeblur and have increased confusion"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Ghom"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "fixes the perpetual lack of moisture that has affected genitalia descriptions since, like, forever."
|
||||
- rscadd: "implements the arousal state for mammary glands."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Fixes many possible situations of null icons for cit races' bodyparts."
|
||||
- imagedel: "Removes duplicate slimepeople' sprites."
|
||||
- code_imp: "Purges that draw_citadel_parts()."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Mops no longer have a delay on their cleaning, making them an actually viable alternative to all of the janitor's other cleaning tools"
|
||||
- balance: "To balance this, mops now take stamina to clean tiles. Standard mops take 5 stamina to use, while advanced mops take 2 stamina."
|
||||
- tweak: "Oh and also mops make fancy new sounds and play animations when used now"
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "CydiaButt13"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Lamp Plushie to loadout"
|
||||
- imageadd: "added plushie_lamp to plush icons"
|
||||
- code_imp: "added Lamp Plush to loadout and icons and items"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Pump-action shotguns now take 2 stamina per pump instead of 5 stamina per pump. This also applies to bolt-action rifles, as bolt racking counts as pumping."
|
||||
@@ -0,0 +1,7 @@
|
||||
author: "Tupinambis"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds a new security level between Blue and Red (Amber). The shuttle call time at this level is 8 minutes."
|
||||
- tweak: "Blue security level now has a shuttle call time of 12 minutes."
|
||||
- tweak: "The security level increase/decrease texts have been modified to accommodate the change."
|
||||
- imageadd: "Adds a code Amber sprite for the fire alarms"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Zargserg"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Lungs maximum toxin threshold is 0.5% of the atmosphere."
|
||||
- bugfix: "Permanently contaminated atmosphere does not murder crew anymore."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Poojawa"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added the Yogs/Oracle ported latejoin menu"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Anonymous"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "More crusader armor variants to pick from armament: Teutonic and Hospitaller."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "MediHound"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Made Cyborgs be affected by Ion Storm Law Changes like AIs"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Tupinambis"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Removed the plushes from the toy crate, giving them their own."
|
||||
- tweak: "Plushes are now less likely to spawn out of arcades"
|
||||
@@ -0,0 +1,9 @@
|
||||
author: "Coolgat3 / Avunia"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Made kindle put the target into stamcrit, which makes it an actually working, useful stun."
|
||||
- rscadd: "Added a stamina loss modifier to the vanguard spell which makes the user's stamina drain at a way slower rate. This doesn't make them immune to tasers, but it takes a few hits to actually get them to fall down."
|
||||
- tweak: "Made it so that clock culties don't start with a chameleon suit. Instead they start with an engineer suit which is pretty much the same sprite and looks. If this is not perfect, then I am willing to make a slightly more brass-colored version of the engineer suit sprite and call it a ratvarian engineer jumpsuit."
|
||||
- balance: "Increased the cost of vanguard, as it is now a spell that works somewhat like adrenals, minus the move speed, making your stamina drain really slow and making you unable to get knocked onto the ground by just a single taser shot."
|
||||
- balance: "Lowered the charge time of kindle, reason being that you can usually have only one active spell on you, or two at max if you decide to run two slabs, but the fact that kindle silences people for such a small amount of time makes up for it, in my opinion."
|
||||
- server: "Figured out that the consoles and their warp function actually work with the current code. The thing that makes them not work is when the gamemode is ran on debug mode, without the required players to actually support it. It also breaks the ark timer which is stuck on -1 seconds until activation. Whenever the gamemode starts properly, like any other gamemode, with player checks and all, everything seems to work just fine."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- code_imp: "Fixes ISINRANGE_EX using the wrong relational operator."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Pickpocketing items will now place them in your hands if possible"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Combat mode is now displayed in examine text"
|
||||
- rscadd: "Combat mode now makes a visible message when enabled if you haven't touched your combat mode button in the last ten seconds. It's done this way to avoid chat spam from those who know how to pull off stam regen squeezing."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "All knockdown sources will now force people to be dismounted from ridden vehicles."
|
||||
@@ -0,0 +1,9 @@
|
||||
author: "deathride58"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "When an item is thrown, it will now be rotated and displaced."
|
||||
- rscadd: "Shards of glass will now be rotated when spawned."
|
||||
- rscadd: "Bullet casings will now be rotated when they're ejected from a gun."
|
||||
- rscadd: "Bottles now have random rotations and pixel offsets when smashed via throwing."
|
||||
- rscadd: "Picking up an item will now reset its rotation."
|
||||
- rscadd: "Glasses thrown onto tables by bartenders will now have their rotation reset."
|
||||
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 330 KiB After Width: | Height: | Size: 334 KiB |
|
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 32 KiB |
@@ -1,5 +1,8 @@
|
||||
/datum/status_effect/incapacitating/knockdown/on_creation(mob/living/new_owner, set_duration, updating_canmove, override_duration, override_stam)
|
||||
if(iscarbon(new_owner) && (isnum(set_duration) || isnum(override_duration)))
|
||||
if(istype(new_owner.buckled, /obj/vehicle/ridden))
|
||||
var/obj/buckl = new_owner.buckled
|
||||
buckl.unbuckle_mob(new_owner)
|
||||
new_owner.resting = TRUE
|
||||
new_owner.adjustStaminaLoss(isnull(override_stam)? set_duration*0.25 : override_stam)
|
||||
if(isnull(override_duration) && (set_duration > 80))
|
||||
|
||||
@@ -90,6 +90,24 @@
|
||||
/mob/living/proc/updatearousal()
|
||||
update_arousal_hud()
|
||||
|
||||
/mob/living/carbon/updatearousal()
|
||||
. = ..()
|
||||
for(var/obj/item/organ/genital/G in internal_organs)
|
||||
if(istype(G))
|
||||
var/datum/sprite_accessory/S
|
||||
switch(G.type)
|
||||
if(/obj/item/organ/genital/penis)
|
||||
S = GLOB.cock_shapes_list[G.shape]
|
||||
if(/obj/item/organ/genital/vagina)
|
||||
S = GLOB.vagina_shapes_list[G.shape]
|
||||
if(/obj/item/organ/genital/breasts)
|
||||
S = GLOB.breasts_shapes_list[G.shape]
|
||||
if(S?.alt_aroused)
|
||||
G.aroused_state = isPercentAroused(G.aroused_amount)
|
||||
else
|
||||
G.aroused_state = FALSE
|
||||
G.update_appearance()
|
||||
|
||||
/mob/living/proc/update_arousal_hud()
|
||||
return 0
|
||||
|
||||
@@ -175,6 +193,7 @@
|
||||
"<span class='userdanger'>You have relieved yourself.</span>")
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
setArousalLoss(min_arousal)
|
||||
adjustStaminaLoss(40) //Refractory periods
|
||||
/*
|
||||
switch(gender)
|
||||
if(MALE)
|
||||
@@ -215,6 +234,7 @@
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
if(G.can_climax)
|
||||
setArousalLoss(min_arousal)
|
||||
adjustStaminaLoss(40) //Refractory periods
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/mob_climax_outside(obj/item/organ/genital/G, mb_time = 30) //This is used for forced orgasms and other hands-free climaxes
|
||||
@@ -252,6 +272,7 @@
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
if(G.can_climax)
|
||||
setArousalLoss(min_arousal)
|
||||
adjustStaminaLoss(40) //Refractory periods
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/mob_climax_partner(obj/item/organ/genital/G, mob/living/L, spillage = TRUE, mb_time = 30) //Used for climaxing with any living thing
|
||||
@@ -284,6 +305,7 @@
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
if(G.can_climax)
|
||||
setArousalLoss(min_arousal)
|
||||
adjustStaminaLoss(40) //Refractory periods
|
||||
else //knots and other non-spilling orgasms
|
||||
if(do_after(src, mb_time, target = src) && in_range(src, L))
|
||||
fluid_source.trans_to(L, total_fluids)
|
||||
@@ -295,6 +317,7 @@
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
if(G.can_climax)
|
||||
setArousalLoss(min_arousal)
|
||||
adjustStaminaLoss(40) //Refractory periods
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/mob_fill_container(obj/item/organ/genital/G, obj/item/reagent_containers/container, mb_time = 30) //For beaker-filling, beware the bartender
|
||||
@@ -325,6 +348,7 @@
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "orgasm", /datum/mood_event/orgasm)
|
||||
if(G.can_climax)
|
||||
setArousalLoss(min_arousal)
|
||||
adjustStaminaLoss(40) //Refractory periods
|
||||
|
||||
/mob/living/carbon/human/proc/pick_masturbate_genitals()
|
||||
var/obj/item/organ/genital/ret_organ
|
||||
|
||||
@@ -311,10 +311,6 @@
|
||||
if(!S || S.icon_state == "none")
|
||||
continue
|
||||
var/mutable_appearance/genital_overlay = mutable_appearance(S.icon, layer = -layer)
|
||||
if(S.alt_aroused)
|
||||
G.aroused_state = H.isPercentAroused(G.aroused_amount)
|
||||
else
|
||||
G.aroused_state = FALSE
|
||||
genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size]_[G.aroused_state]_[layertext]"
|
||||
|
||||
if(S.center)
|
||||
|
||||