Merge pull request #3 from Citadel-Station-13/master

aaaaaaaaa
This commit is contained in:
bunny232
2021-08-23 01:42:26 -04:00
committed by GitHub
62 changed files with 2166 additions and 1372 deletions
+22 -8
View File
@@ -1001,6 +1001,20 @@
/obj/item/clothing/glasses/heat,
/turf/open/floor/plating/beach/sand,
/area/awaymission/beach)
"np" = (
/obj/machinery/shower{
dir = 8
},
/obj/effect/turf_decal/sand,
/turf/open/floor/plasteel/white,
/area/awaymission/beach)
"Vi" = (
/obj/machinery/shower{
dir = 4
},
/obj/effect/turf_decal/sand,
/turf/open/floor/plasteel/white,
/area/awaymission/beach)
(1,1,1) = {"
aa
@@ -7892,10 +7906,10 @@ ak
ak
ak
ak
ak
ak
ak
ak
Vi
Vi
Vi
Vi
ak
ba
ba
@@ -8213,10 +8227,10 @@ ak
ak
ak
ak
ak
ak
ak
ak
np
np
np
np
ak
ba
ba
File diff suppressed because it is too large Load Diff
+41 -26
View File
@@ -40675,6 +40675,7 @@
/obj/machinery/light/small{
dir = 1
},
/obj/machinery/space_heater,
/turf/open/floor/plating{
icon_state = "platingdmg3"
},
@@ -45447,15 +45448,15 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
/turf/open/floor/plasteel,
/area/engineering/main)
"bYS" = (
@@ -45468,15 +45469,15 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/engineering/main)
"bYT" = (
@@ -45492,15 +45493,15 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/structure/cable{
icon_state = "1-2"
},
@@ -45520,15 +45521,15 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/turf/open/floor/plasteel,
/area/engineering/main)
"bYV" = (
@@ -45539,6 +45540,12 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
@@ -45551,15 +45558,15 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
@@ -45578,15 +45585,15 @@
/obj/machinery/firealarm{
pixel_y = 29
},
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/obj/effect/turf_decal/tile/yellow{
dir = 1
},
/obj/effect/turf_decal/tile/yellow{
dir = 4
},
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
/turf/open/floor/plasteel,
/area/engineering/main)
"bYY" = (
@@ -47272,6 +47279,10 @@
dir = 4;
light_color = "#e8eaff"
},
/obj/machinery/airalarm{
dir = 8;
pixel_x = 22
},
/turf/open/floor/plasteel/dark,
/area/engineering/main)
"cfk" = (
@@ -53466,10 +53477,6 @@
},
/area/maintenance/department/engine)
"dEy" = (
/obj/machinery/airalarm{
dir = 1;
pixel_y = -22
},
/obj/structure/reflector/double/anchored{
dir = 9
},
@@ -55355,6 +55362,10 @@
/obj/machinery/power/rad_collector/anchored,
/turf/open/floor/engine,
/area/engineering/supermatter)
"hKX" = (
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/maintenance/department/security/brig)
"hMx" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/turf/open/floor/plating{
@@ -60884,6 +60895,10 @@
/obj/item/pen,
/turf/open/floor/plasteel/dark,
/area/science/explab)
"tCJ" = (
/obj/machinery/space_heater,
/turf/open/floor/plating,
/area/maintenance/department/crew_quarters/bar)
"tCP" = (
/obj/docking_port/stationary/public_mining_dock,
/turf/open/floor/plating,
@@ -80222,7 +80237,7 @@ aiu
xuv
aoe
ajD
ajD
hKX
aiu
apB
aiu
@@ -91030,7 +91045,7 @@ aKT
aLH
aNf
aKT
aLL
tCJ
aQO
aRO
aSH
@@ -99781,7 +99796,7 @@ aPY
bau
aLf
aFi
aFi
aMA
beI
beI
bgD
@@ -107236,7 +107251,7 @@ aaa
aEl
aTx
aFi
aFi
aMA
aEj
bhz
lEn
+9
View File
@@ -268,6 +268,15 @@
#define GAS_FLAG_DANGEROUS (1<<0)
#define GAS_FLAG_BREATH_PROC (1<<1)
//SUPERMATTER DEFINES
#define HEAT_PENALTY "heat penalties"
#define TRANSMIT_MODIFIER "transmit"
#define RADIOACTIVITY_MODIFIER "radioactivity"
#define HEAT_RESISTANCE "heat resistance"
#define POWERLOSS_INHIBITION "powerloss inhibition"
#define ALL_SUPERMATTER_GASES "gases we care about"
#define POWER_MIX "gas powermix"
//HELPERS
#define PIPING_LAYER_SHIFT(T, PipingLayer) \
if(T.dir & (NORTH|SOUTH)) { \
+1 -1
View File
@@ -59,7 +59,7 @@
#define LOADOUT_CATEGORY_UNLOCKABLE "Unlockable"
//how many prosthetics can we have
#define MAXIMUM_LOADOUT_PROSTHETICS 2
#define MAXIMUM_LOADOUT_PROSTHETICS 4
//what limbs can be amputated or be prosthetic
#define LOADOUT_ALLOWED_LIMB_TARGETS list(BODY_ZONE_L_ARM,BODY_ZONE_R_ARM,BODY_ZONE_L_LEG,BODY_ZONE_R_LEG)
@@ -1,8 +1,8 @@
//This file is for glass working types of things!
/obj/item/glasswork
name = "This is a bug report it!"
desc = "Failer to code. Contact your local bug remover..."
name = "this is a bug!"
desc = "Uh oh, the coders did a fucky wucky! Contact your local code monkey and tell them about this!"
icon = 'icons/obj/glassworks.dmi'
w_class = WEIGHT_CLASS_SMALL
force = 1
@@ -11,45 +11,45 @@
tool_behaviour = null
/obj/item/glasswork/glasskit
name = "Glass working tools"
desc = "A lovely belt of most the tools you will need to shape, mold, and refine glass into more advanced shapes."
name = "glasswork tools"
desc = "A set of most the tools you will need to shape, mold, and refine glass into more advanced shapes."
icon_state = "glass_tools"
tool_behaviour = TOOL_GLASS_CUT //Cutting takes 20 ticks
/obj/item/glasswork/blowing_rod
name = "Glass working blow rod"
desc = "A hollow metal stick made for glass blowing."
name = "glassblowing rod"
desc = "A hollow metal rod made for blowing glass."
icon_state = "blowing_rods_unused"
tool_behaviour = TOOL_BLOW //Rods take 5 ticks
/obj/item/glasswork/glass_base //Welding takes 30 ticks
name = "Glass fodder sheet"
desc = "A sheet of glass set aside for glass working"
name = "glass fodder sheet"
desc = "A sheet of glass set aside for glass working."
icon_state = "glass_base"
var/next_step = null
var/rod = /obj/item/glasswork/blowing_rod
/obj/item/tea_plate
name = "Tea Plate"
name = "tea saucer"
desc = "A polished plate for a tea cup. How fancy!"
icon = 'icons/obj/glass_ware.dmi'
icon_state = "tea_plate"
/obj/item/tea_cup
name = "Tea Cup"
desc = "A glass cup made for fake tea!"
name = "tea cup"
desc = "A glass cup made for sipping tea!"
icon = 'icons/obj/glass_ware.dmi'
icon_state = "tea_plate"
//////////////////////Chem Disk/////////////////////
//Two Steps //
//Sells for 300 cr, takes 10 glass shets //
//Usefull for chem spliting //
//Useful for chem spliting //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/dish
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass dish. Needs to be cut with some tools."
name = "glass fodder sheet (dish)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a small glass dish. It needs to be cut with some glassworking tools."
next_step = /obj/item/glasswork/glass_base/dish_part1
/obj/item/glasswork/glass_base/dish/attackby(obj/item/I, mob/user, params)
@@ -60,8 +60,8 @@
qdel(src)
/obj/item/glasswork/glass_base/dish_part1
name = "Half chem dish sheet"
desc = "A sheet of glass cut in half, looks like it still needs some more cutting down"
name = "half glass fodder sheet (dish)"
desc = "A sheet of glass cut in half. It looks like it still needs some more cutting down."
icon_state = "glass_base_half"
next_step = /obj/item/reagent_containers/glass/beaker/glass_dish
@@ -75,12 +75,12 @@
//////////////////////Lens//////////////////////////
//Six Steps //
//Sells for 1600 cr, takes 15 glass shets //
//Usefull for selling and later crafting //
//Useful for selling and later crafting //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/glass_lens
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a small glass lens. Needs to be cut with some tools."
name = "glass fodder sheet (lens)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a glass lens. It needs to be cut with some glassworking tools."
next_step = /obj/item/glasswork/glass_base/glass_lens_part1
/obj/item/glasswork/glass_base/glass_lens/attackby(obj/item/I, mob/user, params)
@@ -91,8 +91,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part1
name = "Glass fodder sheet"
desc = "Cut glass ready to be heated. Needs to be heated with some tools."
name = "half glass fodder sheet (lens)"
desc = "Cut glass ready to be heated with something very hot."
icon_state = "glass_base_half"
next_step = /obj/item/glasswork/glass_base/glass_lens_part2
@@ -104,8 +104,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part2
name = "Glass fodder sheet"
desc = "Cut glass that has been heated. Needs to be heated more with some tools."
name = "heated half glass fodder sheet (lens)"
desc = "Cut glass that has been heated once already and is ready to be heated again."
icon_state = "glass_base_heat"
next_step = /obj/item/glasswork/glass_base/glass_lens_part3
@@ -117,8 +117,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part3
name = "Glass fodder sheet"
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube."
name = "heated glass blob (lens)"
desc = "Cut glass that has been heated into a blob. It needs to be attached to a glassblowing rod."
icon_state = "glass_base_molding"
next_step = /obj/item/glasswork/glass_base/glass_lens_part4
@@ -131,8 +131,8 @@
qdel(I)
/obj/item/glasswork/glass_base/glass_lens_part4
name = "Glass fodder sheet"
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube."
name = "glassblowing rod (lens)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
next_step = /obj/item/glasswork/glass_base/glass_lens_part5
@@ -145,8 +145,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part5
name = "Unpolished glass lens"
desc = "A small unpolished glass lens. Could be polished with some cloth."
name = "unpolished glass lens"
desc = "An unpolished glass lens. It needs to be polished with some dry cloth."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
next_step = /obj/item/glasswork/glass_base/glass_lens_part6
@@ -159,8 +159,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glass_lens_part6
name = "Unrefined glass lens"
desc = "A small polished glass lens. Just needs to be refined with some sandstone."
name = "unrefined glass lens"
desc = "A polished glass lens. It needs to be refined with some sandstone."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
next_step = /obj/item/glasswork/glass_base/lens
@@ -174,12 +174,12 @@
//////////////////////Spouty Flask//////////////////
//Four Steps //
//Sells for 1200 cr, takes 20 glass shets //
//Usefull for selling and chemical things //
//Useful for selling and chemical things //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/spouty
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a spout beaker. Needs to be cut with some tools."
name = "Glass fodder sheet (spout)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a spouty flask. It needs to heated with something very hot."
next_step = /obj/item/glasswork/glass_base/spouty_part2
/obj/item/glasswork/glass_base/spouty/attackby(obj/item/I, mob/user, params)
@@ -190,8 +190,8 @@
qdel(src)
/obj/item/glasswork/glass_base/spouty_part2
name = "Glass fodder sheet"
desc = "Cut glass that has been heated. Needs to be heated with some tools."
name = "glass fodder sheet (spout)"
desc = "Cut glass ready to be heated with something very hot."
icon_state = "glass_base_half"
next_step = /obj/item/glasswork/glass_base/spouty_part3
@@ -203,8 +203,8 @@
qdel(src)
/obj/item/glasswork/glass_base/spouty_part3
name = "Glass fodder sheet"
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be placed onto a blow tube."
name = "heated glass blob (spout)"
desc = "Cut glass that has been heated into a blob. It needs to be attached to a glassblowing rod."
icon_state = "glass_base_molding"
next_step = /obj/item/glasswork/glass_base/spouty_part4
@@ -217,8 +217,8 @@
qdel(I)
/obj/item/glasswork/glass_base/spouty_part4
name = "Glass fodder sheet"
desc = "Cut glass that has been heated into a blob of hot glass. Needs to be cut off onto a blow tube."
name = "glassblowing rod (spout)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
next_step = /obj/item/reagent_containers/glass/beaker/flask/spouty
@@ -233,12 +233,12 @@
//////////////////////Small Bulb Flask//////////////
//Two Steps //
//Sells for 600 cr, takes 5 glass shets //
//Usefull for selling and chemical things //
//Useful for selling and chemical things //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/flask_small
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a small flask. Needs to be heated with some tools."
name = "glass fodder sheet (small flask)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a small flask. It needs to heated with something very hot."
next_step = /obj/item/glasswork/glass_base/flask_small_part1
/obj/item/glasswork/glass_base/flask_small/attackby(obj/item/I, mob/user, params)
@@ -249,8 +249,8 @@
qdel(src)
/obj/item/glasswork/glass_base/flask_small_part1
name = "Metled glass"
desc = "A blob of metled glass, this one is ideal for a small flask. Needs to be blown with some tools."
name = "heated glass blob (small flask)"
desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod."
icon_state = "glass_base_molding"
next_step = /obj/item/glasswork/glass_base/flask_small_part2
@@ -263,8 +263,8 @@
qdel(I)
/obj/item/glasswork/glass_base/flask_small_part2
name = "Metled glass"
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
name = "glassblowing rod (small flask)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
next_step = /obj/item/reagent_containers/glass/beaker/flask
@@ -279,12 +279,12 @@
//////////////////////Large Bulb Flask//////////////
//Two Steps //
//Sells for 1000 cr, takes 15 glass shets //
//Usefull for selling and chemical things //
//Useful for selling and chemical things //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/flask_large
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a large flask. Needs to be heated with some tools."
name = "glass fodder sheet (large flask)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a large flask. It needs to heated with something very hot."
next_step = /obj/item/glasswork/glass_base/flask_large_part1
/obj/item/glasswork/glass_base/flask_large/attackby(obj/item/I, mob/user, params)
@@ -295,8 +295,8 @@
qdel(src)
/obj/item/glasswork/glass_base/flask_large_part1
name = "Metled glass"
desc = "A blob of metled glass, this one is ideal for a large flask. Needs to be blown with some tools."
name = "heated glass blob (large flask)"
desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod."
icon_state = "glass_base_molding"
next_step = /obj/item/glasswork/glass_base/flask_large_part2
@@ -309,8 +309,8 @@
qdel(I)
/obj/item/glasswork/glass_base/flask_large_part2
name = "Metled glass"
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
name = "glassblowing rod (small flask)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
next_step = /obj/item/reagent_containers/glass/beaker/flask/large
@@ -325,12 +325,12 @@
//////////////////////Tea Plates////////////////////
//Three Steps //
//Sells for 1000 cr, takes 5 glass shets //
//Usefull for selling and chemical things //
//Useful for selling and chemical things //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/tea_plate
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea plate, how fancy! Needs to be heated with some tools."
name = "glass fodder sheet (tea saucer)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a tea saucer. It needs to heated with something very hot."
next_step = /obj/item/glasswork/glass_base/tea_plate1
/obj/item/glasswork/glass_base/tea_plate/attackby(obj/item/I, mob/user, params)
@@ -341,8 +341,8 @@
qdel(src)
/obj/item/glasswork/glass_base/tea_plate1
name = "Metled glass"
desc = "A blob of metled glass, this one is ideal for a tea plate. Needs to be blown with some tools."
name = "heated glass blob (tea saucer)"
desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod."
icon_state = "glass_base_molding"
next_step = /obj/item/glasswork/glass_base/tea_plate2
@@ -355,8 +355,8 @@
qdel(I)
/obj/item/glasswork/glass_base/tea_plate2
name = "Metled glass"
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
name = "glassblowing rod (tea saucer)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
next_step = /obj/item/glasswork/glass_base/tea_plate3
@@ -369,8 +369,8 @@
qdel(src)
/obj/item/glasswork/glass_base/tea_plate3
name = "Disk of glass"
desc = "A disk of glass that can be cant be used for much. Needs to be polished with some cloth."
name = "unpolished glass saucer (tea saucer)"
desc = "An unpolished glass saucer. It needs to be polished with some dry cloth."
icon_state = "glass_base_half"
next_step = /obj/item/tea_plate
@@ -384,12 +384,12 @@
//////////////////////Tea Cup///////////////////////
//Four Steps //
//Sells for 1600 cr, takes 6 glass shets //
//Usefull for selling and chemical things //
//Useful for selling and chemical things //
////////////////////////////////////////////////////
/obj/item/glasswork/glass_base/tea_cup
name = "Glass fodder sheet"
desc = "A set of glass sheets set aside for glass working, this one is ideal for a tea cup, how fancy! Needs to be heated with some tools."
name = "glass fodder sheet (tea cup)"
desc = "A set of glass sheets set aside for glass working. This one is ideal for a tea cup. It needs to heated with something very hot."
next_step = /obj/item/glasswork/glass_base/tea_cup1
/obj/item/glasswork/glass_base/tea_cup/attackby(obj/item/I, mob/user, params)
@@ -400,8 +400,8 @@
qdel(src)
/obj/item/glasswork/glass_base/tea_cup1
name = "Metled glass"
desc = "A blob of metled glass, this one is ideal for a tea cup. Needs to be blown with some tools."
name = "heated glass blob (tea cup)"
desc = "Glass that has been heated into a blob. It needs to be attached to a glassblowing rod."
icon_state = "glass_base_molding"
next_step = /obj/item/glasswork/glass_base/tea_cup2
@@ -414,8 +414,8 @@
qdel(I)
/obj/item/glasswork/glass_base/tea_cupe2
name = "Metled glass"
desc = "A blob of metled glass on the end of a blowing rod. Needs to be cut off with some tools."
name = "glassblowing rod (tea cup)"
desc = "A hollow metal rod made for blowing glass. There is a blob of shapen glass at the end of it that needs to be cut off with some glassworking tools."
icon_state = "blowing_rods_inuse"
next_step = /obj/item/glasswork/glass_base/tea_cup3
@@ -428,8 +428,8 @@
qdel(src)
/obj/item/glasswork/glass_base/tea_cup3
name = "Disk of glass"
desc = "A bowl of glass that can be cant be used for much. Needs to be polished with some cloth."
name = "unpolished glass cup (tea cup)"
desc = "An unpolished glass cup. It needs to be polished with some dry cloth."
icon_state = "glass_base_half"
next_step = /obj/item/glasswork/glass_base/tea_cup4
@@ -441,8 +441,8 @@
qdel(src)
/obj/item/glasswork/glass_base/tea_cup4
name = "Disk of glass"
desc = "A bowl of polished glass that can be cant be used for much. Needs some more glass to make a handle."
name = "polished glass cup (tea cup)"
desc = "A polished glass cup. It needs some extra glass to form a handle."
icon_state = "glass_base_half"
next_step = /obj/item/tea_cup
@@ -1,15 +1,15 @@
//This file is for crafting using a lens!
/obj/item/glasswork/glass_base/lens
name = "Optical lens"
desc = "Good for selling or crafting, by itself its useless"
name = "optical lens"
desc = "A glass lens. Useless by itself, but may prove useful in making something with a focus."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "glass_optics"
//Laser pointers - 2600
/obj/item/glasswork/glass_base/laserpointer_shell
name = "Laser pointer assembly"
desc = "Good for selling or crafting, by itself its useless. Needs a power capactor."
name = "laser pointer assembly"
desc = "An empty hull of a laser pointer. It's missing a capacitor."
icon_state = "laser_case"
icon = 'icons/obj/glass_ware.dmi'
next_step = /obj/item/glasswork/glass_base/laserpointer_shell_1
@@ -21,8 +21,8 @@
qdel(src)
/obj/item/glasswork/glass_base/laserpointer_shell_1
name = "Laser pointer assembly"
desc = "Good for selling or crafting, by itself its useless. Needs a glass lens."
name = "powered laser pointer assembly"
desc = "A laser pointer hull with a capacitor inside of it. It's missing a lens."
icon_state = "laser_wire"
icon_state = "laser_case"
next_step = /obj/item/glasswork/glass_base/laserpointer_shell_2
@@ -34,8 +34,8 @@
qdel(src)
/obj/item/glasswork/glass_base/laserpointer_shell_2
name = "Laser pointer assembly"
desc = "Good for selling or crafting, by itself its useless. Needs to be screwed together."
name = "near-complete laser pointer assembly"
desc = "A laser pointer hull with a capacitor and a lens inside of it. It needs to be screwed together."
icon_state = "laser_wire"
icon_state = "laser_case"
next_step = /obj/item/laser_pointer/blue/handmade
@@ -50,8 +50,8 @@
//NERD SHIT - 5000
/obj/item/glasswork/glass_base/glasses_frame
name = "Glasses Frame"
desc = "Good for crafting a pare of glasses, by itself its useless. Just add a pare of lens."
name = "glasses frame"
desc = "A pair of glasses without the lenses. You could probably add them yourself, though."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "frames"
next_step = /obj/item/glasswork/glass_base/glasses_frame_1
@@ -64,8 +64,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glasses_frame_1
name = "Glasses Frame"
desc = "Good for crafting a pare of glasses, by itself its useless. Just add a the other lens."
name = "glasses frame"
desc = "A pair of shoddily-assembled glasses with only one lens. You could probably add the second one yourself, though."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "frames_1"
next_step = /obj/item/glasswork/glass_base/glasses_frame_2
@@ -78,8 +78,8 @@
qdel(src)
/obj/item/glasswork/glass_base/glasses_frame_2
name = "Glasses Frame"
desc = "Good for crafting a pare of glasses, by itself its useless. Just adjust the pices into the frame with a screwdriver."
name = "glasses frame"
desc = "A pair of hastily-assembled unfitted glasses with both lenses intact. Use a screwdriver to fit them."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "frames_2"
next_step = /obj/item/glasswork/glasses
@@ -92,7 +92,7 @@
qdel(src)
/obj/item/glasswork/glasses
name = "Handmade Glasses"
desc = "Handmade glasses that have not been polished at all making them useless. Selling them could still be worth a few credits."
name = "handmade glasses"
desc = "A pair of poorly-assembled glasses clearly produced by someone with no qualifications in making glasses. They're smudged, ugly, and don't even fit you. They might be worth some money, though."
icon = 'icons/obj/glass_ware.dmi'
icon_state = "frames_2"
@@ -47,7 +47,7 @@ Bonus
M.adjustOxyLoss(-7, 0)
M.losebreath = max(0, M.losebreath - 4)
if(regenerate_blood && M.blood_volume < (BLOOD_VOLUME_NORMAL * M.blood_ratio))
M.blood_volume += 1
M.adjust_integration_blood(1)
else
if(prob(base_message_chance))
to_chat(M, "<span class='notice'>[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]</span>")
+9 -6
View File
@@ -426,18 +426,21 @@ GENETICS SCANNER
if(ishuman(C))
if(H.is_bleeding())
msg += "<span class='danger'>Subject is bleeding!</span>\n"
var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
var/integrated_blood_percent = round((C.integrating_blood / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
var/blood_type = C.dna.blood_type
if(!(blood_typepath in GLOB.blood_reagent_types))
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_typepath]
if(R)
blood_type = R.name
if(C.scan_blood_volume() <= (BLOOD_VOLUME_SAFE*C.blood_ratio) && C.scan_blood_volume() > (BLOOD_VOLUME_OKAY*C.blood_ratio))
msg += "<span class='danger'>LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl,</span> <span class='info'>type: [blood_type]</span>\n"
else if(C.scan_blood_volume() <= (BLOOD_VOLUME_OKAY*C.blood_ratio))
msg += "<span class='danger'>CRITICAL blood level [blood_percent] %, [C.scan_blood_volume()] cl,</span> <span class='info'>type: [blood_type]</span>\n"
if((C.scan_blood_volume() + C.integrating_blood) <= (BLOOD_VOLUME_SAFE * C.blood_ratio) && (C.scan_blood_volume() + C.integrating_blood) > (BLOOD_VOLUME_OKAY*C.blood_ratio))
msg += "<span class='danger'>LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""].</span> <span class='info'>type: [blood_type]</span>\n"
else if((C.scan_blood_volume() + C.integrating_blood) <= (BLOOD_VOLUME_OKAY * C.blood_ratio))
msg += "<span class='danger'>CRITICAL blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""].</span> <span class='info'>type: [blood_type]</span>\n"
else
msg += "<span class='info'>Blood level [blood_percent] %, [C.scan_blood_volume()] cl, type: [blood_type]</span>\n"
msg += "<span class='info'>Blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""]. type: [blood_type]</span>\n"
var/cyberimp_detect
for(var/obj/item/organ/cyberimp/CI in C.internal_organs)
@@ -144,7 +144,7 @@
owner.Stun(15)
owner.adjustToxLoss(-15, TRUE, TRUE)
owner.blood_volume = min(BLOOD_VOLUME_NORMAL, owner.blood_volume + 20)
owner.adjust_integration_blood(20)
if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
keep_going = TRUE
@@ -89,6 +89,7 @@
owner.current.adjustStaminaLoss(-1.5 + (actual_regen * -7) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more.
owner.current.adjustCloneLoss(-0.1 * (actual_regen * 2) * mult, 0)
owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (actual_regen * 4) * mult)
owner.current.integrating_blood = 0
// No Bleeding
/*if(ishuman(owner.current)) //NOTE Current bleeding is horrible, not to count the amount of blood ballistics delete.
var/mob/living/carbon/human/H = owner.current
@@ -297,8 +297,14 @@
prof.socks = H.socks
prof.socks_color = H.socks_color
var/list/slots = list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store")
for(var/slot in slots)
var/datum/icon_snapshot/entry = new
entry.name = H.name
entry.icon = H.icon
entry.icon_state = H.icon_state
entry.overlays = H.get_overlays_copy(list(HANDS_LAYER, HANDCUFF_LAYER, LEGCUFF_LAYER))
prof.profile_snapshot = entry
for(var/slot in GLOB.slots)
if(slot in H.vars)
var/obj/item/I = H.vars[slot]
if(!I)
@@ -518,6 +524,9 @@
var/socks
var/socks_color
/// Icon snapshot of the profile
var/datum/icon_snapshot/profile_snapshot
/datum/changelingprofile/Destroy()
qdel(dna)
. = ..()
@@ -535,13 +544,14 @@
newprofile.underwear = underwear
newprofile.undershirt = undershirt
newprofile.socks = socks
newprofile.profile_snapshot = profile_snapshot
/datum/antagonist/changeling/xenobio
name = "Xenobio Changeling"
give_objectives = FALSE
show_in_roundend = FALSE //These are here for admin tracking purposes only
you_are_greet = FALSE
antag_moodlet = FALSE
/datum/antagonist/changeling/roundend_report()
var/list/parts = list()
@@ -10,15 +10,8 @@
//Transform into a human.
/obj/effect/proc_holder/changeling/humanform/sting_action(mob/living/carbon/user)
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
var/list/names = list()
for(var/datum/changelingprofile/prof in changeling.stored_profiles)
names += "[prof.name]"
var/chosen_name = input("Select the target DNA: ", "Target DNA", null) as null|anything in names
if(!chosen_name)
return
var/datum/changelingprofile/chosen_prof = changeling.get_dna(chosen_name)
var/datum/changelingprofile/chosen_prof = changeling.select_dna()
if(!chosen_prof)
return
if(!user || user.mob_transforming)
@@ -78,7 +78,7 @@
if(changeling.chosen_sting)
unset_sting(user)
return
selected_dna = changeling.select_dna("Select the target DNA: ", "Target DNA")
selected_dna = changeling.select_dna()
if(!selected_dna)
return
if(NOTRANSSTING in selected_dna.dna.species.species_traits)
@@ -134,7 +134,7 @@
//Change our DNA to that of somebody we've absorbed.
/obj/effect/proc_holder/changeling/transform/sting_action(mob/living/carbon/human/user)
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
var/datum/changelingprofile/chosen_prof = changeling.select_dna("Select the target DNA: ", "Target DNA")
var/datum/changelingprofile/chosen_prof = changeling.select_dna()
if(!chosen_prof)
return
@@ -142,15 +142,21 @@
changeling_transform(user, chosen_prof)
return TRUE
/datum/antagonist/changeling/proc/select_dna(var/prompt, var/title)
/**
* Gives a changeling a list of all possible dnas in their profiles to choose from and returns profile containing their chosen dna
*/
/datum/antagonist/changeling/proc/select_dna()
var/mob/living/carbon/user = owner.current
if(!istype(user))
return
var/list/names = list("Drop Flesh Disguise")
for(var/datum/changelingprofile/prof in stored_profiles)
names += "[prof.name]"
var/list/disguises = list("Drop Flesh Disguise" = image(icon = 'icons/mob/radial.dmi', icon_state = "radial_drop"))
for(var/datum/changelingprofile/current_profile in stored_profiles)
var/datum/icon_snapshot/snap = current_profile.profile_snapshot
var/image/disguise_image = image(icon = snap.icon, icon_state = snap.icon_state)
disguise_image.overlays = snap.overlays
disguises[current_profile.name] = disguise_image
var/chosen_name = input(prompt, title, null) as null|anything in names
var/chosen_name = show_radial_menu(user, user, disguises, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 40, require_near = TRUE, tooltips = TRUE)
if(!chosen_name)
return
@@ -158,6 +164,21 @@
for(var/slot in GLOB.slots)
if(istype(user.vars[slot], GLOB.slot2type[slot]))
qdel(user.vars[slot])
return
var/datum/changelingprofile/prof = get_dna(chosen_name)
return prof
/**
* Checks if we are allowed to interact with a radial menu
*
* Arguments:
* * user The carbon mob interacting with the menu
*/
/datum/antagonist/changeling/proc/check_menu(mob/living/carbon/user)
if(!istype(user))
return FALSE
var/datum/antagonist/changeling/changeling_datum = user.mind.has_antag_datum(/datum/antagonist/changeling)
if(!changeling_datum)
return FALSE
return TRUE
+3 -3
View File
@@ -687,10 +687,10 @@
if(H.stat == DEAD)
to_chat(user,"<span class='warning'>Only a revive rune can bring back the dead!</span>")
return
if(H.blood_volume < (BLOOD_VOLUME_SAFE*H.blood_ratio))
if(H.functional_blood() < (BLOOD_VOLUME_SAFE*H.blood_ratio))
var/restore_blood = (BLOOD_VOLUME_SAFE*H.blood_ratio) - H.blood_volume
if(uses*2 < restore_blood)
H.blood_volume += uses*2
if(uses * 2 < restore_blood)
H.adjust_integration_blood(uses * 2)
to_chat(user,"<span class='danger'>You use the last of your blood rites to restore what blood you could!</span>")
uses = 0
return ..()
@@ -219,7 +219,7 @@
if(M.health < M.maxHealth)
M.adjustHealth(-3)
if(ishuman(L) && L.blood_volume < (BLOOD_VOLUME_NORMAL * L.blood_ratio))
L.blood_volume += 1.0
L.adjust_integration_blood(1.0)
CHECK_TICK
@@ -147,7 +147,7 @@
carbon_target.blood_volume -= 20
if(carbon_user.blood_volume < BLOOD_VOLUME_MAXIMUM) //we dont want to explode after all
carbon_user.blood_volume += 20
carbon_user.adjust_integration_blood(20)
return
/obj/effect/proc_holder/spell/pointed/blood_siphon/can_target(atom/target, mob/user, silent)
+6
View File
@@ -27,6 +27,12 @@
if(do_update)
update()
/obj/item/organ/genital/Destroy()
if(linked_organ?.linked_organ == src)
linked_organ.linked_organ = null
linked_organ = null
. = ..()
/obj/item/organ/genital/proc/set_aroused_state(new_state,cause = "manual toggle")
if(!(genital_flags & GENITAL_CAN_AROUSE))
return FALSE
+26 -1
View File
@@ -3,10 +3,16 @@
specific_heat = 20
name = "Oxygen"
oxidation_temperature = T0C - 100 // it checks max of this and fire temperature, so rarely will things spontaneously combust
powermix = 1
heat_penalty = 1
transmit_modifier = 1.5
/datum/gas/nitrogen
id = GAS_N2
specific_heat = 20
name = "Nitrogen"
powermix = -1
heat_penalty = -1.5
breath_alert_info = list(
not_enough_alert = list(
alert_category = "not_enough_nitro",
@@ -17,12 +23,14 @@
alert_type = /atom/movable/screen/alert/too_much_nitro
)
)
name = "Nitrogen"
/datum/gas/carbon_dioxide //what the fuck is this?
id = GAS_CO2
specific_heat = 30
name = "Carbon Dioxide"
powermix = 1
heat_penalty = 0.1
powerloss_inhibition = 1
breath_results = GAS_O2
breath_alert_info = list(
not_enough_alert = list(
@@ -43,6 +51,9 @@
gas_overlay = "plasma"
moles_visible = MOLES_GAS_VISIBLE
flags = GAS_FLAG_DANGEROUS
heat_penalty = 15
transmit_modifier = 4
powermix = 1
// no fire info cause it has its own bespoke reaction for trit generation reasons
/datum/gas/water_vapor
@@ -52,6 +63,8 @@
gas_overlay = "water_vapor"
moles_visible = MOLES_GAS_VISIBLE
fusion_power = 8
heat_penalty = 8
powermix = 1
breath_reagent = /datum/reagent/water
/datum/gas/hypernoblium
@@ -71,6 +84,7 @@
fire_products = list(GAS_N2 = 1)
oxidation_rate = 0.5
oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + 100
heat_resistance = 6
/datum/gas/nitryl
id = GAS_NITRYL
@@ -91,6 +105,9 @@
moles_visible = MOLES_GAS_VISIBLE
flags = GAS_FLAG_DANGEROUS
fusion_power = 1
powermix = 1
heat_penalty = 10
transmit_modifier = 30
/*
these are for when we add hydrogen, trit gets to keep its hardcoded fire for legacy reasons
fire_provides = list(GAS_H2O = 2)
@@ -105,6 +122,10 @@
name = "BZ"
flags = GAS_FLAG_DANGEROUS
fusion_power = 8
powermix = 1
heat_penalty = 5
transmit_modifier = -2
radioactivity_modifier = 5
/datum/gas/stimulum
id = GAS_STIMULUM
@@ -119,6 +140,10 @@
fusion_power = 10
oxidation_temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST * 1000 // it is VERY stable
oxidation_rate = 8
powermix = -1
heat_penalty = -1
transmit_modifier = -5
heat_resistance = 3
/datum/gas/miasma
id = GAS_MIASMA
+16 -1
View File
@@ -35,6 +35,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA
var/list/fire_enthalpies = list()
var/list/fire_products = list()
var/list/fire_burn_rates = list()
var/list/supermatter = list()
/datum/gas
@@ -55,6 +56,12 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA
var/list/fire_products = null // what results when this gas is burned (oxidizer or fuel); null for none
var/fire_energy_released = 0 // how much energy is released per mole of fuel burned
var/fire_burn_rate = 1 // how many moles are burned per product released
var/powermix = 0 // how much this gas contributes to the supermatter's powermix ratio
var/heat_penalty = 0 // heat and waste penalty from having the supermatter crystal surrounded by this gas; negative numbers reduce
var/transmit_modifier = 0 // bonus to supermatter power generation (multiplicative, since it's % based, and divided by 10)
var/radioactivity_modifier = 0 // improves effect of transmit modifiers, must be from -10 to 10
var/heat_resistance = 0 // makes the crystal more resistant against heat damage.
var/powerloss_inhibition = 0 // Reduces how much power the supermatter loses each tick
/datum/gas/proc/breath(partial_pressure, light_threshold, heavy_threshold, moles, mob/living/carbon/C, obj/item/organ/lungs/lungs)
// This is only called on gases with the GAS_FLAG_BREATH_PROC flag. When possible, do NOT use this--
@@ -100,12 +107,20 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(GAS_O2, GAS_N2, GAS_CO2, GA
if(gas.fire_products)
fire_products[g] = gas.fire_products
fire_enthalpies[g] = gas.fire_energy_released
add_supermatter_properties(gas)
_auxtools_register_gas(gas)
/proc/finalize_gas_refs()
/datum/auxgm/New()
src.supermatter[HEAT_PENALTY] = list()
src.supermatter[TRANSMIT_MODIFIER] = list()
src.supermatter[RADIOACTIVITY_MODIFIER] = list()
src.supermatter[HEAT_RESISTANCE] = list()
src.supermatter[POWERLOSS_INHIBITION] = list()
src.supermatter[POWER_MIX] = list()
src.supermatter[ALL_SUPERMATTER_GASES] = list()
for(var/gas_path in subtypesof(/datum/gas))
var/datum/gas/gas = new gas_path
add_gas(gas)
+9 -9
View File
@@ -172,15 +172,13 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
/// bumper object, the thing that starts actual teleport
var/obj/effect/gateway_portal_bumper/portal
/// Visual object for handling the viscontents
/// DISABLED DUE TO BYOND BUG CAUSING STACK OVERFLOWS OF ANY HUMAN INSTANTIATION NEAR AN ACTIVATED GATEWAY.
/// Probably due to it referencing each other through the gateway (there's a deep loop, maybe BYOND isn't catching something when it usually would)
// var/obj/effect/gateway_portal_effect/portal_visuals
var/obj/effect/gateway_portal_effect/portal_visuals
/obj/machinery/gateway/Initialize()
generate_destination()
update_icon()
// portal_visuals = new
// vis_contents += portal_visuals
portal_visuals = new
vis_contents += portal_visuals
return ..()
/obj/machinery/gateway/proc/generate_destination()
@@ -197,7 +195,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
if(use_power == ACTIVE_POWER_USE)
use_power = IDLE_POWER_USE
update_icon()
// portal_visuals.reset_visuals()
portal_visuals.reset_visuals()
/obj/machinery/gateway/process()
if((stat & (NOPOWER)) && use_power)
@@ -217,7 +215,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
return
target = D
target.activate(destination)
// portal_visuals.setup_visuals(target)
portal_visuals.setup_visuals(target)
generate_bumper()
use_power = ACTIVE_POWER_USE
update_icon()
@@ -359,6 +357,8 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
animate(get_filter("portal_ripple"), time = 1.3 SECONDS, loop = -1, easing = LINEAR_EASING, radius = 32)
var/turf/center_turf = our_destination.get_target_turf()
/// DISABLED DUE TO BYOND BUG CAUSING STACK OVERFLOWS OF ANY HUMAN INSTANTIATION NEAR AN ACTIVATED GATEWAY.
/// Probably due to it referencing each other through the gateway (there's a deep loop, maybe BYOND isn't catching something when it usually would)
//var/turf/center_turf = our_destination.get_target_turf()
vis_contents += block(locate(center_turf.x - 1, center_turf.y - 1, center_turf.z), locate(center_turf.x + 1, center_turf.y + 1, center_turf.z))
//vis_contents += block(locate(center_turf.x - 1, center_turf.y - 1, center_turf.z), locate(center_turf.x + 1, center_turf.y + 1, center_turf.z))
+1 -1
View File
@@ -37,7 +37,7 @@
continue
if(L.mob_biotypes & blacklisted_biotypes) //hey can you don't
continue
if(!(L in GLOB.player_list) && !L.mind)
if(!(L in GLOB.player_list) && !L.mind && !L.incapacitated())
potential += L
if(!potential.len)
@@ -497,6 +497,72 @@
/obj/item/reagent_containers/food/drinks/bottle/grenadine/empty
list_reagents = null
/obj/item/reagent_containers/food/drinks/bottle/blank //Don't let players print these from a lathe, bottles should be obtained in mass from the bar only.
name = "glass bottle"
desc = "This blank bottle is unyieldingly anonymous, offering no clues to it's contents."
icon_state = "glassbottle"
volume = 90
spillable = TRUE
obj_flags = UNIQUE_RENAME
/obj/item/reagent_containers/food/drinks/bottle/blank/update_icon()
..()
add_overlay("[initial(icon_state)]shine")
/obj/item/reagent_containers/food/drinks/bottle/blank/Initialize()
. = ..()
update_icon()
/obj/item/reagent_containers/food/drinks/bottle/blank/get_part_rating()
return reagents.maximum_volume
/obj/item/reagent_containers/food/drinks/bottle/blank/on_reagent_change(changetype)
update_icon()
/obj/item/reagent_containers/food/drinks/bottle/blank/update_overlays()
. = ..()
if(!cached_icon)
cached_icon = icon_state
if(reagents.total_volume)
var/mutable_appearance/filling = mutable_appearance('icons/obj/reagentfillings.dmi', "[cached_icon]10", color = mix_color_from_reagents(reagents.reagent_list))
var/percent = round((reagents.total_volume / volume) * 100)
switch(percent)
if(0 to 9)
filling.icon_state = "[cached_icon]0"
if(10 to 19)
filling.icon_state = "[cached_icon]10"
if(20 to 29)
filling.icon_state = "[cached_icon]20"
if(30 to 39)
filling.icon_state = "[cached_icon]30"
if(40 to 49)
filling.icon_state = "[cached_icon]40"
if(50 to 59)
filling.icon_state = "[cached_icon]50"
if(60 to 69)
filling.icon_state = "[cached_icon]60"
if(70 to 79)
filling.icon_state = "[cached_icon]70"
if(80 to 89)
filling.icon_state = "[cached_icon]80"
if(90 to INFINITY)
filling.icon_state = "[cached_icon]90"
. += filling
/obj/item/reagent_containers/food/drinks/bottle/blank/small
name = "small glass bottle"
desc = "This small bottle is unyieldingly anonymous, offering no clues to it's contents."
icon_state = "glassbottlesmall"
volume = 60
/obj/item/reagent_containers/food/drinks/bottle/blank/pitcher
name = "glass pitcher"
desc = "This is a pitcher for large amounts of liquid of any kind."
icon_state = "unipitcher"
volume = 120
////////////////////////// MOLOTOV ///////////////////////
/obj/item/reagent_containers/food/drinks/bottle/molotov
name = "molotov cocktail"
@@ -436,13 +436,27 @@
/datum/sprite_accessory/tails/human/shark
name = "Shark"
icon_state = "shark"
icon_state = "carp"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/shark
name = "Shark"
icon_state = "carp"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/human/sharkalt
name = "Shark (alt)"
icon_state = "shark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/human/sharkalt
name = "Shark (alt)"
icon_state = "shark"
color_src = MATRIXED
icon = 'modular_citadel/icons/mob/mam_tails.dmi'
@@ -897,11 +911,21 @@
/datum/sprite_accessory/tails/mam_tails/shark
name = "Shark"
icon_state = "shark"
icon_state = "carp"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/shark
name = "Shark"
icon_state = "carp"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails/mam_tails/sharkalt
name = "Shark (alt)"
icon_state = "shark"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/tails_animated/mam_tails_animated/sharkalt
name = "Shark (alt)"
icon_state = "shark"
matrixed_sections = MATRIX_RED
+49 -27
View File
@@ -39,29 +39,35 @@
return
if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_HUSK))) //cryosleep or husked people do not pump the blood.
//Blood regeneration if there is some space
if(blood_volume < BLOOD_VOLUME_NORMAL && !HAS_TRAIT(src, TRAIT_NOHUNGER))
if(integrating_blood > 0)
var/blood_integrated = max(integrating_blood - 1, 0)
var/blood_diff = integrating_blood - blood_integrated
integrating_blood = blood_integrated
if(blood_volume < BLOOD_VOLUME_MAXIMUM)
blood_volume += blood_diff
if(blood_volume < BLOOD_VOLUME_NORMAL)
var/nutrition_ratio = 0
switch(nutrition)
if(0 to NUTRITION_LEVEL_STARVING)
nutrition_ratio = 0.2
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
nutrition_ratio = 0.4
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
nutrition_ratio = 0.6
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
nutrition_ratio = 0.8
else
nutrition_ratio = 1
if(satiety > 80)
nutrition_ratio *= 1.25
adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR)
blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio)
if(!HAS_TRAIT(src, TRAIT_NOHUNGER))
switch(nutrition)
if(0 to NUTRITION_LEVEL_STARVING)
nutrition_ratio = 0.2
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
nutrition_ratio = 0.4
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
nutrition_ratio = 0.6
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
nutrition_ratio = 0.8
else
nutrition_ratio = 1
if(satiety > 80)
nutrition_ratio *= 1.25
adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR)
blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio)
//Effects of bloodloss
var/word = pick("dizzy","woozy","faint")
switch(blood_volume)
var/blood_effect_volume = blood_volume + integrating_blood
switch(blood_effect_volume)
if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS)
if(prob(10))
to_chat(src, "<span class='warning'>You feel terribly bloated.</span>")
@@ -94,14 +100,22 @@
bleed(temp_bleed)
//Makes a blood drop, leaking amt units of blood from the mob
/mob/living/carbon/proc/bleed(amt)
if(blood_volume)
/mob/living/carbon/proc/bleed(amt, force)
var/bled = FALSE //Have we bled amnt?
if(blood_volume > amt || force && blood_volume)
blood_volume = max(blood_volume - amt, 0)
if(isturf(src.loc)) //Blood loss still happens in locker, floor stays clean
if(amt >= 10)
add_splatter_floor(src.loc)
else
add_splatter_floor(src.loc, 1)
bled = TRUE
if(integrating_blood > amt || force && integrating_blood)
integrating_blood = max(integrating_blood - amt, 0)
bled = TRUE
if(!bled && !force) //If we are already cycling back through, don't do this again
bleed(amt, TRUE) //we cycle back through to try to bleed SOMETHING, not neccesarily the required amount
return
if(isturf(src.loc)) //Blood loss still happens in locker, floor stays clean
if(amt >= 10)
add_splatter_floor(src.loc)
else
add_splatter_floor(src.loc, TRUE)
/mob/living/carbon/human/bleed(amt)
amt *= physiology.bleed_mod
@@ -114,6 +128,7 @@
/mob/living/proc/restore_blood()
blood_volume = initial(blood_volume)
integrating_blood = 0
/mob/living/carbon/restore_blood()
blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio)
@@ -368,10 +383,17 @@
return
blood_ratio = 1
/mob/living/proc/AdjustBloodVol(var/value)
/mob/living/proc/AdjustBloodVol(value)
if(blood_ratio == value)
return
blood_ratio = value
if(ishuman(src))
var/mob/living/carbon/human/H = src
H.handle_blood()
/mob/living/proc/adjust_integration_blood(value, remove_actual_blood, force)
if(integrating_blood + value < 0 && remove_actual_blood)
blood_volume += value + integrating_blood
blood_volume = max(blood_volume, 0)
integrating_blood += value
integrating_blood = clamp(integrating_blood, 0, force ? INFINITY : (BLOOD_VOLUME_MAXIMUM - (integrating_blood + blood_volume)))
@@ -85,7 +85,7 @@
owner.adjustOxyLoss(-heal_amt)
owner.adjustCloneLoss(-heal_amt)
if(owner.blood_volume && (owner.blood_volume < BLOOD_VOLUME_NORMAL))
owner.blood_volume += 5
owner.adjust_integration_blood(5)
else
owner.adjustPlasma(plasma_rate * 0.1)
+3
View File
@@ -1273,3 +1273,6 @@
var/mob/living/carbon/C = usr
if(I.can_give())
C.give(src)
/mob/living/carbon/proc/functional_blood()
return blood_volume + integrating_blood
@@ -825,6 +825,7 @@
dna.remove_mutation(HM.name)
if(blood_volume < (BLOOD_VOLUME_NORMAL*blood_ratio))
blood_volume = (BLOOD_VOLUME_NORMAL*blood_ratio)
integrating_blood = 0
..()
/mob/living/carbon/human/check_weakness(obj/item/weapon, mob/living/attacker)
@@ -182,3 +182,8 @@
destination.underwear = underwear
destination.undershirt = undershirt
destination.socks = socks
/mob/living/carbon/human/adjust_integration_blood(value, force)
if(NOBLOOD in dna.species.species_traits) //Can't lose blood if your species doesn't have any
return
. = ..()
@@ -1365,7 +1365,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
/datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
if(chem.type == exotic_blood && !istype(exotic_blood, /datum/reagent/blood))
H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM)
H.adjust_integration_blood(round(chem.volume, 0.1))
H.reagents.del_reagent(chem.type)
return TRUE
return FALSE
@@ -6,7 +6,7 @@
species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR,HAS_FLESH,HAS_BONE)
inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG
mutant_bodyparts = list("mcolor" = "FFFFFF","mcolor2" = "FFFFFF","mcolor3" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None",
"insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None")
"insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None", "mam_body_markings" = list())
attack_verb = "slash"
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
@@ -4,7 +4,7 @@
id = SPECIES_FELINID
limbs_id = SPECIES_HUMAN
mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None")
mutant_bodyparts = list("mam_tail" = "Cat", "mam_ears" = "Cat", "deco_wings" = "None", "mam_body_markings" = list())
mutantears = /obj/item/organ/ears/cat
mutanttail = /obj/item/organ/tail/cat
@@ -4,7 +4,7 @@
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,HAS_FLESH,HAS_BONE)
mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade")
mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade", "mam_body_markings" = list())
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
skinned_type = /obj/item/stack/sheet/animalhide/human
disliked_food = GROSS | RAW
@@ -53,16 +53,16 @@
exotic_blood_color = "#" + H.dna.features["mcolor"]
/datum/species/jelly/spec_life(mob/living/carbon/human/H)
if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for blooduskers
if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for bloodsuckers
return
if(!H.blood_volume)
H.blood_volume += 5
H.adjust_integration_blood(5)
H.adjustBruteLoss(5)
to_chat(H, "<span class='danger'>You feel empty!</span>")
if(H.blood_volume < (BLOOD_VOLUME_NORMAL * H.blood_ratio))
if(H.nutrition >= NUTRITION_LEVEL_STARVING)
H.blood_volume += 3
H.adjust_integration_blood(3)
H.nutrition -= 2.5
if(H.blood_volume < (BLOOD_VOLUME_OKAY*H.blood_ratio))
if(prob(5))
@@ -82,7 +82,7 @@
consumed_limb.drop_limb()
to_chat(H, "<span class='userdanger'>Your [consumed_limb] is drawn back into your body, unable to maintain its shape!</span>")
qdel(consumed_limb)
H.blood_volume += 20
H.adjust_integration_blood(20)
////////////////////////////////////////////////////////SLIMEPEOPLE///////////////////////////////////////////////////////////////////
@@ -151,7 +151,7 @@
if(prob(5))
to_chat(H, "<span class='notice'>You feel very bloated!</span>")
else if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
H.blood_volume += 3
H.adjust_integration_blood(3)
H.nutrition -= 2.5
..()
@@ -112,6 +112,7 @@
var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added
var/blood_volume = 0 //how much blood the mob has
var/integrating_blood = 0 //this is the variable you want to affect if you want to give the mob blood, this will slowly turn into normal blood, preventing some cheesyness, use adjust_integration_blood() instead of modifying directly
var/blood_ratio = 1 //How much blood the mob needs, in terms of ratio (i.e 1.2 will require BLOOD_VOLUME_NORMAL of 672) DO NOT GO ABOVE 3.55 Well, actually you can but, then they can't get enough blood.
var/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override
@@ -94,7 +94,7 @@
L.SetUnconscious(0, FALSE)
L.adjustOxyLoss(-50)// do CPR first
if(L.blood_volume <= 500) //bandage them up and give em some blood if they're bleeding
L.blood_volume += 30
L.adjust_integration_blood(30)
L.bleedsuppress = 0
if(L.getBruteLoss() >= 50)// first, did we beat them into crit? if so, heal that
var/healing = min(L.getBruteLoss(), 120)
+53 -143
View File
@@ -12,33 +12,17 @@
#define OBJECT (LOWEST + 1)
#define LOWEST (1)
#define PLASMA_HEAT_PENALTY 15 // Higher == Bigger heat and waste penalty from having the crystal surrounded by this gas. Negative numbers reduce penalty.
#define OXYGEN_HEAT_PENALTY 1
#define PLUOXIUM_HEAT_PENALTY -1
#define TRITIUM_HEAT_PENALTY 10
#define CO2_HEAT_PENALTY 0.1
#define NITROGEN_HEAT_PENALTY -1.5
#define BZ_HEAT_PENALTY 5
#define H2O_HEAT_PENALTY 8
//#define FREON_HEAT_PENALTY -10 //very good heat absorbtion and less plasma and o2 generation
//#define HYDROGEN_HEAT_PENALTY 10 // similar heat penalty as tritium (dangerous)
//All of these get divided by 10-bzcomp * 5 before having 1 added and being multiplied with power to determine rads
//Keep the negative values here above -10 and we won't get negative rads
#define OXYGEN_TRANSMIT_MODIFIER 1.5 //Higher == Bigger bonus to power generation.
#define PLASMA_TRANSMIT_MODIFIER 4
#define BZ_TRANSMIT_MODIFIER -2
#define TRITIUM_TRANSMIT_MODIFIER 30 //We divide by 10, so this works out to 3
#define PLUOXIUM_TRANSMIT_MODIFIER -5 //Should halve the power output
#define H2O_TRANSMIT_MODIFIER 2
//#define HYDROGEN_TRANSMIT_MODIFIER 25 //increase the radiation emission, but less than the trit (2.5)
#define BZ_RADIOACTIVITY_MODIFIER 5 //Improves the effect of transmit modifiers
#define N2O_HEAT_RESISTANCE 6 //Higher == Gas makes the crystal more resistant against heat damage.
#define PLUOXIUM_HEAT_RESISTANCE 3
//#define HYDROGEN_HEAT_RESISTANCE 2 // just a bit of heat resistance to spice it up
/datum/auxgm/proc/add_supermatter_properties(datum/gas/gas)
var/g = gas.id
var/list/props = src.supermatter
if(gas.powermix || gas.heat_penalty || gas.transmit_modifier || gas.radioactivity_modifier || gas.heat_resistance || gas.powerloss_inhibition)
props[HEAT_PENALTY][g] = gas.heat_penalty
props[TRANSMIT_MODIFIER][g] = gas.transmit_modifier
props[RADIOACTIVITY_MODIFIER][g] = gas.radioactivity_modifier
props[HEAT_RESISTANCE][g] = gas.heat_resistance
props[POWERLOSS_INHIBITION][g] = gas.powerloss_inhibition
props[POWER_MIX][g] = gas.powermix
props[ALL_SUPERMATTER_GASES] += g
#define POWERLOSS_INHIBITION_GAS_THRESHOLD 0.20 //Higher == Higher percentage of inhibitor gas needed before the charge inertia chain reaction effect starts.
#define POWERLOSS_INHIBITION_MOLE_THRESHOLD 20 //Higher == More moles of the gas are needed before the charge inertia chain reaction effect starts. //Scales powerloss inhibition down until this amount of moles is reached
@@ -148,90 +132,17 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
var/power = 0
///Determines the rate of positve change in gas comp values
var/gas_change_rate = 0.05
///The list of gases we will be interacting with in process_atoms()
var/list/gases_we_care_about = list(
GAS_O2,
GAS_H2O,
GAS_PLASMA,
GAS_CO2,
GAS_NITROUS,
GAS_N2,
GAS_PLUOXIUM,
GAS_TRITIUM,
GAS_BZ,
// /datum/gas/freon,
// /datum/gas/hydrogen,
)
///The list of gases mapped against their current comp. We use this to calculate different values the supermatter uses, like power or heat resistance. It doesn't perfectly match the air around the sm, instead moving up at a rate determined by gas_change_rate per call. Ranges from 0 to 1
var/list/gas_comp = list(
GAS_O2 = 0,
GAS_H2O = 0,
GAS_PLASMA = 0,
GAS_CO2 = 0,
GAS_NITROUS = 0,
GAS_N2 = 0,
GAS_PLUOXIUM = 0,
GAS_TRITIUM = 0,
GAS_BZ = 0,
// /datum/gas/freon = 0,
// /datum/gas/hydrogen = 0,
)
///The list of gases mapped against their transmit values. We use it to determine the effect different gases have on radiation
var/list/gas_trans = list(
GAS_O2 = OXYGEN_TRANSMIT_MODIFIER,
GAS_H2O = H2O_TRANSMIT_MODIFIER,
GAS_PLASMA = PLASMA_TRANSMIT_MODIFIER,
GAS_PLUOXIUM = PLUOXIUM_TRANSMIT_MODIFIER,
GAS_TRITIUM = TRITIUM_TRANSMIT_MODIFIER,
GAS_BZ = BZ_TRANSMIT_MODIFIER,
// /datum/gas/hydrogen = HYDROGEN_TRANSMIT_MODIFIER,
)
///The list of gases mapped against their heat penaltys. We use it to determin molar and heat output
var/list/gas_heat = list(
GAS_O2 = OXYGEN_HEAT_PENALTY,
GAS_H2O = H2O_HEAT_PENALTY,
GAS_PLASMA = PLASMA_HEAT_PENALTY,
GAS_CO2 = CO2_HEAT_PENALTY,
GAS_N2 = NITROGEN_HEAT_PENALTY,
GAS_PLUOXIUM = PLUOXIUM_HEAT_PENALTY,
GAS_TRITIUM = TRITIUM_HEAT_PENALTY,
GAS_BZ = BZ_HEAT_PENALTY,
// /datum/gas/freon = FREON_HEAT_PENALTY,
// /datum/gas/hydrogen = HYDROGEN_HEAT_PENALTY,
)
///The list of gases mapped against their heat resistance. We use it to moderate heat damage.
var/list/gas_resist = list(
GAS_NITROUS = N2O_HEAT_RESISTANCE,
GAS_PLUOXIUM = PLUOXIUM_HEAT_RESISTANCE,
// /datum/gas/hydrogen = HYDROGEN_HEAT_RESISTANCE,
)
///The list of gases mapped against their powermix ratio
var/list/gas_powermix = list(
GAS_O2 = 1,
GAS_H2O = 1,
GAS_PLASMA = 1,
GAS_CO2 = 1,
GAS_N2 = -1,
GAS_PLUOXIUM = -1,
GAS_TRITIUM = 1,
GAS_BZ = 1,
// /datum/gas/freon = -1,
// /datum/gas/hydrogen = 1,
)
var/list/gas_comp = list()
///The last air sample's total molar count, will always be above or equal to 0
var/combined_gas = 0
///Affects the power gain the sm experiances from heat
var/gasmix_power_ratio = 0
///Affects the amount of o2 and plasma the sm outputs, along with the heat it makes.
var/dynamic_heat_modifier = 1
///Affects the amount of damage and minimum point at which the sm takes heat damage
var/dynamic_heat_resistance = 1
///Uses powerloss_dynamic_scaling and combined_gas to lessen the effects of our powerloss functions
var/powerloss_inhibitor = 1
///Based on co2 percentage, slowly moves between 0 and 1. We use it to calc the powerloss_inhibitor
var/powerloss_dynamic_scaling= 0
///Affects the amount of radiation the sm makes. We multiply this with power to find the rads.
var/power_transmission_bonus = 0
///Used to increase or lessen the amount of damage the sm takes from heat based on molar counts.
var/mole_heat_penalty = 0
///Takes the energy throwing things into the sm generates and slowly turns it into actual power
@@ -481,6 +392,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
removed = new()
damage_archived = damage
var/list/gas_info = GLOB.gas_data.supermatter
var/list/gases_we_care_about = gas_info[ALL_SUPERMATTER_GASES]
/********
EXPERIMENTAL, HUGBOXY AS HELL CITADEL CHANGES: Even in a vaccum, update gas composition and modifiers.
This means that the SM will usually have a very small explosion if it ends up being breached to space,
@@ -491,7 +406,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
if(takes_damage)
damage += max((power / 1000) * DAMAGE_INCREASE_MULTIPLIER, 0.1) // always does at least some damage
combined_gas = max(0, combined_gas - 0.5) // Slowly wear off.
for(var/gasID in gases_we_care_about)
for(var/gasID in gas_comp)
gas_comp[gasID] = max(0, gas_comp[gasID] - 0.05) //slowly ramp down
else
if(takes_damage)
@@ -531,46 +446,49 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
//Prevents huge bursts of gas/heat when a large amount of something is introduced
//They range between 0 and 1
for(var/gasID in gases_we_care_about)
if(!(gasID in gas_comp))
gas_comp[gasID] = 0
gas_comp[gasID] += clamp(max(removed.get_moles(gasID)/combined_gas, 0) - gas_comp[gasID], -1, gas_change_rate)
var/list/heat_mod = gases_we_care_about.Copy()
var/list/transit_mod = gases_we_care_about.Copy()
var/list/resistance_mod = gases_we_care_about.Copy()
var/list/threshold_mod = gases_we_care_about.Copy()
var/list/powermix = gas_info[POWER_MIX]
var/list/heat = gas_info[HEAT_PENALTY]
var/list/transmit = gas_info[TRANSMIT_MODIFIER]
var/list/resist = gas_info[HEAT_RESISTANCE]
var/list/radioactivity = gas_info[RADIOACTIVITY_MODIFIER]
var/list/inhibition = gas_info[POWERLOSS_INHIBITION]
//We're concerned about pluoxium being too easy to abuse at low percents, so we make sure there's a substantial amount.
var/pluoxiumbonus = (gas_comp[GAS_PLUOXIUM] >= 0.15) //makes pluoxium only work at 15%+
var/h2obonus = 1 - (gas_comp[GAS_H2O] * 0.25)//At max this value should be 0.75
var/h2obonus = 1 - (gas_comp[GAS_H2O] * 0.25)//At min this value should be 0.75
// var/freonbonus = (gas_comp[/datum/gas/freon] <= 0.03) //Let's just yeet power output if this shit is high
heat_mod[GAS_PLUOXIUM] = pluoxiumbonus
transit_mod[GAS_PLUOXIUM] = pluoxiumbonus
resistance_mod[GAS_PLUOXIUM] = pluoxiumbonus
threshold_mod[GAS_PLUOXIUM] = pluoxiumbonus
//No less then zero, and no greater then one, we use this to do explosions and heat to power transfer
//Be very careful with modifing this var by large amounts, and for the love of god do not push it past 1
gasmix_power_ratio = 0
for(var/gasID in gas_powermix)
gasmix_power_ratio += gas_comp[gasID] * gas_powermix[gasID]
gasmix_power_ratio = clamp(gasmix_power_ratio, 0, 1)
//Minimum value of -10, maximum value of 23. Effects plasma and o2 output and the output heat
dynamic_heat_modifier = 0
for(var/gasID in gas_heat)
dynamic_heat_modifier += gas_comp[gasID] * gas_heat[gasID] * (isnull(heat_mod[gasID]) ? 1 : heat_mod[gasID])
dynamic_heat_modifier *= h2obonus
dynamic_heat_modifier = max(dynamic_heat_modifier, 0.5)
//Value between 1 and 10. Effects the damage heat does to the crystal
//Affects the amount of o2 and plasma the sm outputs, along with the heat it makes.
var/dynamic_heat_modifier = 0
//Effects the damage heat does to the crystal.
dynamic_heat_resistance = 0
for(var/gasID in gas_resist)
dynamic_heat_resistance += gas_comp[gasID] * gas_resist[gasID] * (isnull(resistance_mod[gasID]) ? 1 : resistance_mod[gasID])
dynamic_heat_resistance = max(dynamic_heat_resistance, 1)
//Value between -5 and 30, used to determine radiation output as it concerns things like collectors.
power_transmission_bonus = 0
for(var/gasID in gas_trans)
power_transmission_bonus += gas_comp[gasID] * gas_trans[gasID] * (isnull(transit_mod[gasID]) ? 1 : transit_mod[gasID])
//We multiply this with power to find the rads.
var/power_transmission_bonus = 0
var/powerloss_inhibition_gas = 0
var/radioactivity_modifier = 0
for(var/gasID in gas_comp)
var/this_comp = gas_comp[gasID] * (isnull(threshold_mod[gasID] ? 1 : threshold_mod[gasID]))
gasmix_power_ratio += this_comp * powermix[gasID]
dynamic_heat_modifier += this_comp * heat[gasID]
dynamic_heat_resistance += this_comp * resist[gasID]
power_transmission_bonus += this_comp * transmit[gasID]
powerloss_inhibition_gas += this_comp * inhibition[gasID]
radioactivity_modifier += this_comp * radioactivity[gasID]
dynamic_heat_modifier *= h2obonus
power_transmission_bonus *= h2obonus
gasmix_power_ratio = clamp(gasmix_power_ratio, 0, 1)
dynamic_heat_modifier = max(dynamic_heat_modifier, 0.5)
//more moles of gases are harder to heat than fewer, so let's scale heat damage around them
mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25)
@@ -578,8 +496,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
//Ramps up or down in increments of 0.02 up to the proportion of co2
//Given infinite time, powerloss_dynamic_scaling = co2comp
//Some value between 0 and 1
if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && gas_comp[GAS_CO2] > POWERLOSS_INHIBITION_GAS_THRESHOLD) //If there are more then 20 mols, and more then 20% co2
powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(gas_comp[GAS_CO2] - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1)
if (combined_gas > POWERLOSS_INHIBITION_MOLE_THRESHOLD && powerloss_inhibition_gas > POWERLOSS_INHIBITION_GAS_THRESHOLD) //If there are more then 20 mols, and more then 20% co2
powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling + clamp(powerloss_inhibition_gas - powerloss_dynamic_scaling, -0.02, 0.02), 0, 1)
else
powerloss_dynamic_scaling = clamp(powerloss_dynamic_scaling - 0.05, 0, 1)
//Ranges from 0 to 1(1-(value between 0 and 1 * ranges from 1 to 1.5(mol / 500)))
@@ -611,23 +529,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
if(prob(50))
//(1 + (tritRad + pluoxDampen * bzDampen * o2Rad * plasmaRad / (10 - bzrads))) * freonbonus
radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-(gas_comp[GAS_BZ] * BZ_RADIOACTIVITY_MODIFIER)))) * 1))//freonbonus))// RadModBZ(500%)
if(gas_comp[GAS_BZ] >= 0.4 && prob(30 * gas_comp[GAS_BZ]))
src.fire_nuclear_particle() // Start to emit radballs at a maximum of 30% chance per tick
radiation_pulse(src, power * max(0, (1 + (power_transmission_bonus/(10-radioactivity_modifier)))))//freonbonus))// RadModBZ(500%)
if(radioactivity_modifier >= 2 && prob(6 * radioactivity_modifier))
src.fire_nuclear_particle()
//Power * 0.55 * a value between 1 and 0.8
var/device_energy = power * REACTION_POWER_MODIFIER
//To figure out how much temperature to add each tick, consider that at one atmosphere's worth
//of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature
//that the device energy is around 2140. At that stage, we don't want too much heat to be put out
//Since the core is effectively "cold"
//Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock
//is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall.
//Power * 0.55 * (some value between 1.5 and 23) / 5
removed.set_temperature(removed.return_temperature() + ((device_energy * dynamic_heat_modifier) / THERMAL_RELEASE_MODIFIER))
//We can only emit so much heat, that being 57500
//We don't want our output to be too hot
removed.set_temperature(max(0, min(removed.return_temperature(), 2500 * dynamic_heat_modifier)))
//Calculate how much gas to release
@@ -41,6 +41,7 @@
set waitfor = FALSE
var/turf/B = L
atoms += B
B.assemble_baseturfs(B.type)
for(var/A in B)
atoms += A
if(istype(A,/obj/structure/cable))
@@ -586,7 +586,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
if(AmBloodsucker(C))
disgust_bloodsucker(FALSE, 1) //Bloodsuckers get SOME blood from it, for style reasons.
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss.
C.adjust_integration_blood(3) //Bloody Mary quickly restores blood loss.
..()
/datum/reagent/consumable/ethanol/brave_bull
@@ -2593,7 +2593,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
alcohol_description = "sweet"
else
alcohol_description = "watery" //How the hell did you get negative boozepwr?
var/list/fruits = list()
if(names_in_order.len <= 3)
fruits = names_in_order
@@ -396,26 +396,34 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 60
taste_description = "sweetness and salt"
var/extra_regen = 0.25 // in addition to acting as temporary blood, also add this much to their actual blood per tick
var/last_added = 0
var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active
var/extra_regen = 0.25 // in addition to acting as temporary blood, also add this much to their actual blood per tick
pH = 5.5
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M)
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
return
if(last_added)
M.blood_volume -= last_added
last_added = 0
if(M.blood_volume < maximum_reachable) //Can only up to double your effective blood level.
var/amount_to_add = min(M.blood_volume, volume*5)
var/new_blood_level = min(M.blood_volume + amount_to_add, maximum_reachable)
last_added = new_blood_level - M.blood_volume
M.blood_volume = new_blood_level + extra_regen
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/human/M)
if(prob(33))
M.adjustBruteLoss(-0.5*REM, 0)
M.adjustFireLoss(-0.5*REM, 0)
. = TRUE
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
return ..()
if(last_added)
M.adjust_integration_blood(-last_added, TRUE)
last_added = 0
if(M.functional_blood() < maximum_reachable) //Can only up to double your effective blood level.
var/new_blood_level = min(volume * 5, maximum_reachable)
last_added = new_blood_level
M.adjust_integration_blood(new_blood_level + (extra_regen * REM))
if(prob(33))
M.adjustBruteLoss(-0.5*REM, 0)
M.adjustFireLoss(-0.5*REM, 0)
. = TRUE
..()
/datum/reagent/medicine/salglu_solution/on_mob_delete(mob/living/carbon/human/M)
if(last_added)
M.adjust_integration_blood(-last_added, TRUE)
..()
/datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M)
@@ -1295,7 +1303,7 @@
M.adjustCloneLoss(-3*REM, FALSE)
M.adjustStaminaLoss(-25*REM,FALSE)
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 40 // blood fall out man bad
M.adjust_integration_blood(40) // blood fall out man bad
..()
. = 1
@@ -1316,7 +1324,7 @@
M.adjustCloneLoss(-1.25*REM, FALSE)
M.adjustStaminaLoss(-4*REM,FALSE)
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 3
M.adjust_integration_blood(3)
..()
. = 1
@@ -48,7 +48,7 @@
var/mob/living/carbon/C = L
var/blood_id = C.get_blood_id()
if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))))
C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio)
C.adjust_integration_blood(round(reac_volume, 0.1))
// we don't care about bloodtype here, we're just refilling the mob
if(reac_volume >= 10 && istype(L) && method != INJECT)
@@ -253,7 +253,7 @@
/datum/reagent/water/on_mob_life(mob/living/carbon/M)
. = ..()
if(M.blood_volume)
M.blood_volume += 0.1 // water is good for you!
M.adjust_integration_blood(0.1) // water is good for you!
/*
* Water reaction to turf
@@ -370,7 +370,7 @@
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
if(M.blood_volume)
M.blood_volume += 0.1 // water is good for you!
M.adjust_integration_blood(0.1) // water is good for you!
if(!data)
data = list("misc" = 1)
data["misc"]++
@@ -456,7 +456,7 @@
M.adjustBruteLoss(-2, FALSE)
M.adjustFireLoss(-2, FALSE)
if(ishuman(M) && M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 3
M.adjust_integration_blood(3)
else // Will deal about 90 damage when 50 units are thrown
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
M.adjustToxLoss(2, FALSE)
@@ -1146,7 +1146,7 @@
if((HAS_TRAIT(C, TRAIT_NOMARROW)))
return
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume += 0.25
C.adjust_integration_blood(0.25)
..()
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
@@ -2552,7 +2552,7 @@
M.adjustBruteLoss(-3, FALSE)
M.adjustFireLoss(-3, FALSE)
if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL)
M.blood_volume += 3
M.adjust_integration_blood(3)
else
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
M.adjustToxLoss(2, FALSE)
@@ -245,6 +245,36 @@
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/emptybottle
name = "Glass Bottle"
desc = "A small, empty bottle for storing liquids."
id = "emptyglassbottle"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 400)
build_path = /obj/item/reagent_containers/food/drinks/bottle/blank/small
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/largeemptybottle
name = "Large Glass Bottle"
desc = "A large, empty bottle for storing liquids."
id = "largeemptyglassbottle"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 2000)
build_path = /obj/item/reagent_containers/food/drinks/bottle/blank
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/emptypitcher
name = "Pitcher"
desc = "A large Pitcher to hold vast amounts of liquid."
id = "emptypitcher"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 3600)
build_path = /obj/item/reagent_containers/food/drinks/bottle/blank/pitcher
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/air_horn
name = "Air Horn"
desc = "Damn son, where'd you find this?"
@@ -109,7 +109,7 @@
/datum/nanite_program/blood_restoring/active_effect()
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
C.blood_volume += 2
C.adjust_integration_blood(2)
/datum/nanite_program/repairing
name = "Mechanical Repair"
@@ -14,8 +14,8 @@
/datum/techweb_node/bottle_exports
id = "bottle_exports"
display_name = "Legal Bottling"
display_name = "Advanced Bottling"
prereq_ids = list("blueprinted_bottles")
description = "New bottles for printing and selling."
design_ids = list("minikeg", "blooddrop", "slim_gold", "white_bloodmoon", "greenroad")
description = "New bottles for printing, storage and selling."
design_ids = list("minikeg", "blooddrop", "slim_gold", "white_bloodmoon", "greenroad", "emptyglassbottle", "largeemptyglassbottle", "emptypitcher")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 250)
@@ -322,7 +322,7 @@ Consuming extracts:
playsound(get_turf(M), 'sound/effects/splat.ogg', 10, 1)
if(iscarbon(M))
var/mob/living/carbon/C = M
C.blood_volume += 25 //Half a vampire drain.
C.adjust_integration_blood(25) //Half a vampire drain.
/obj/item/slimecross/consuming/green
colour = "green"
@@ -187,7 +187,7 @@
switch(activation_type)
if(SLIME_ACTIVATE_MINOR)
user.adjust_nutrition(50)
user.blood_volume += 50
user.adjust_integration_blood(50)
to_chat(user, "<span class='notice'>You activate [src], and your body is refilled with fresh slime jelly!</span>")
return 150
+1 -1
View File
@@ -25,7 +25,7 @@
return TRUE
/datum/surgery_step/revive
name = "electrically stimulate brain"
implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60)
implements = list(/obj/item/shockpaddles = 100, /obj/item/abductor/gizmo = 100, /obj/item/rod_of_asclepius = 100, /obj/item/melee/baton = 75, /obj/item/organ/cyberimp/arm/baton = 75, /obj/item/organ/cyberimp/arm/gun/taser = 60, /obj/item/gun/energy/e_gun/advtaser = 60, /obj/item/gun/energy/taser = 60)
time = 120
/datum/surgery_step/revive/tool_check(mob/user, obj/item/tool)
. = TRUE
+1 -1
View File
@@ -533,7 +533,7 @@
var/total_moles = breath.total_moles()
var/pressure = breath.return_pressure()
var/plasma_pp = PP(breath, GAS_PLASMA)
owner.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
owner.adjust_integration_blood(0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
/obj/item/organ/lungs/yamerol
name = "Yamerol lungs"
+3
View File
@@ -5,6 +5,9 @@
icon_deny = "boozeomat-deny"
products = list(/obj/item/reagent_containers/food/drinks/drinkingglass = 30,
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12,
/obj/item/reagent_containers/food/drinks/bottle/blank = 5,
/obj/item/reagent_containers/food/drinks/bottle/blank/small = 10,
/obj/item/reagent_containers/food/drinks/bottle/blank/pitcher = 2,
/obj/item/reagent_containers/food/drinks/bottle/gin = 5,
/obj/item/reagent_containers/food/drinks/bottle/whiskey = 5,
/obj/item/reagent_containers/food/drinks/bottle/tequila = 5,
+1 -1
View File
@@ -11,7 +11,7 @@ export BYOND_MINOR=1556
export RUST_G_VERSION=0.4.8
#auxmos git tag
export AUXMOS_VERSION=v0.2.2
export AUXMOS_VERSION=v0.2.3
#node version
export NODE_VERSION=12
+96 -206
View File
@@ -50,6 +50,102 @@
-->
<div class="commit sansserif">
<h2 class="date">23 August 2021</h2>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="spellcheck">i hate the grammarchrist</li>
</ul>
<h2 class="date">22 August 2021</h2>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="spellcheck">trillby can't spell pair</li>
</ul>
<h2 class="date">20 August 2021</h2>
<h3 class="author">EmeraldSundisk updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds a law office/courtroom to OmegaStation</li>
<li class="rscadd">Adds a gateway to OmegaStation</li>
<li class="rscadd">Adds a pool/maintenance bar to OmegaStation</li>
<li class="rscdel">Removes the original maintenance garden in OmegaStation tweak: Relocates the bathrooms to the starboard hall tweak: Modifies port quarter maintenance to include some affected items</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Beach now has showers</li>
</ul>
<h3 class="author">TripleShades updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">At least four or five space heaters spread across Pubby Station Maints</li>
<li class="rscadd">Missing decal in Pubby Station engineering</li>
<li class="bugfix">Moved an atmos alarm in the SM emitter chamber so it wont be destroyed</li>
</ul>
<h3 class="author">WanderingFox95 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Empty bottles and pitchers are available to the bartender now.</li>
<li class="imageadd">They even come with 10 different fillstates!</li>
<li class="imageadd">Better Shark Tails, dodododododo~</li>
<li class="rscadd">The old ones are now listed as carp tails.</li>
</ul>
<h2 class="date">18 August 2021</h2>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">lets you select 4 prosthetic limbs instead of only 2</li>
</ul>
<h2 class="date">16 August 2021</h2>
<h3 class="author">BlueWildrose updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Incapacitated mobs are blacklisted from being human-level intelligence sentience event candidates. This is particularly important due to slimes in BZ stasis on the station.</li>
</ul>
<h3 class="author">bunny232 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Polyvitiligo actually changes your color now</li>
</ul>
<h2 class="date">13 August 2021</h2>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">makes certain organs no longer have circular references</li>
</ul>
<h2 class="date">12 August 2021</h2>
<h3 class="author">Arturlang updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">Nonslimes and nonvampires will no longer be able to increase their blood to stupid heights</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="refactor">Supermatter values use auxgm</li>
</ul>
<h3 class="author">cadyn updated:</h3>
<ul class="changes bgimages16">
<li class="server">precompile.sh and build.sh updated, auxmos set to 0.2.3 in dependencies.sh</li>
</ul>
<h2 class="date">11 August 2021</h2>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">lets felinids, humans and moths have markings</li>
</ul>
<h2 class="date">09 August 2021</h2>
<h3 class="author">Arturlang updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Nanite machinery overlays should now work properly</li>
<li class="code_imp">screen objects are now atom/movables instead</li>
<li class="code_imp">Update appearance is used for updating atoms now instead of update_icon and such</li>
</ul>
<h3 class="author">BlueWildrose updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Old gateway animation is back. Feedback is given that the gateway is open again.</li>
</ul>
<h3 class="author">Putnam3145 updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Rod of asclepius can now be used for revival surgery</li>
</ul>
<h2 class="date">07 August 2021</h2>
<h3 class="author">BlueWildrose updated:</h3>
<ul class="changes bgimages16">
@@ -382,212 +478,6 @@
<ul class="changes bgimages16">
<li class="bugfix">no more doubleroasting</li>
</ul>
<h2 class="date">21 June 2021</h2>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">glowshroom scaling</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">vore is 0.1% less shitcode</li>
</ul>
<h2 class="date">20 June 2021</h2>
<h3 class="author">Arturlang updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Port's TG's nanite storage modification programs from the bepis</li>
<li class="bugfix">Fixes infective nanite progreams not syncing cloud ID.</li>
<li class="rscadd">Add's off icons for nanite machinery</li>
<li class="bugfix">Fixes antitox nanites runtiming on simplemobs</li>
<li class="rscadd">Updates the nanite dermal button icon set</li>
<li class="rscadd">Adds the ability to select the logic for nanite rules</li>
<li class="bugfix">Nanite programs with triggers won't ignore rules.</li>
<li class="bugfix">Coagluating nanite program research no longer has the wrong name tweak: Nanite program's have better descriptions now tweak: Nanite subdermal ID's now also include pulled ID's for simplemobs</li>
<li class="bugfix">Nanite voice sensors should properly work now.</li>
<li class="bugfix">Fixes nanite comm remote, now they should actually work</li>
</ul>
<h3 class="author">EmeraldSundisk updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds ColorMates to Snow Taxi tweak: Slight adjustments near the arrival shuttle landing zone</li>
<li class="rscdel">Removes an undesired corporate entity</li>
</ul>
<h3 class="author">Nanotrasen Structual Engineering Division updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added lables to the atmos tanks on Metastation.</li>
<li class="rscadd">Adjusted Pubbystation's emitter room wall layout to prevent light-breakage on startup of emitters.</li>
<li class="rscdel">Removed frestanding sink and showers from Metastation science airlock, and Deltastation Xenobio. Added an emergency shower next to the kill room.</li>
<li class="bugfix">Removed a leftover pipe in Metastation security hallway.</li>
</ul>
<h3 class="author">bunny232 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Pressure tanks other then air tanks start with gas!</li>
</ul>
<h3 class="author">keronshb updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds the Space Dragon midround event</li>
<li class="soundadd">Space Dragon sounds</li>
<li class="imageadd">Space Dragon + effects</li>
<li class="code_imp">Added Spacewalk trait</li>
<li class="code_imp">Gibs the original owner if they are turned into a Space Dragon with the traitor panel</li>
<li class="admin">logging for Space Dragon creation</li>
</ul>
<h3 class="author">kiwedespars updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">a downside to wheely heelies ((made it actually detrimental))</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="imageadd">beltslot sprites for various items</li>
<li class="imageadd">resprite for telebaton</li>
</ul>
<h2 class="date">19 June 2021</h2>
<h3 class="author">keronshb updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Ling Bone Gauntlets work again</li>
</ul>
<h2 class="date">17 June 2021</h2>
<h3 class="author">Vynzill updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">ability to change crafted armwrap sprite to alternate one.</li>
<li class="imageadd">extended armwrap icon and sprite</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixes an oversight causing embed jostling to do 2x as much damage as it should</li>
</ul>
<h2 class="date">16 June 2021</h2>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">on_found works again</li>
</ul>
<h2 class="date">15 June 2021</h2>
<h3 class="author">EmeraldSundisk updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Xenobiology now has proper lighting</li>
<li class="bugfix">The Corporate Showroom now has a proper front door</li>
<li class="bugfix">Mining snowmobiles now have keys</li>
<li class="bugfix">Adjusts area designations so GENTURF icons should no longer be visible in-game</li>
</ul>
<h2 class="date">14 June 2021</h2>
<h3 class="author">EmeraldSundisk updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds a brand new, wholly unique mining base to Snaxi tweak: A thorough redesign of Snaxi (see PR #14818 for more info)</li>
<li class="bugfix">Increases the number of electrical connections between substations</li>
</ul>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Removes cat meteors.</li>
</ul>
<h3 class="author">SandPoot updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Tablet computers now have a pen slot, they can almost replace your pda!</li>
<li class="spellcheck">Removed a bracket from printer's examine.</li>
<li class="bugfix">The cosmetic turtleneck and skirtleneck no longer start with broken sensors.</li>
</ul>
<h3 class="author">TripleShades updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Lights to AI Sat Walkways</li>
<li class="rscadd">Lights to Atmospherics</li>
<li class="rscadd">Floor labels to Atmospherics Gas Miner containment units</li>
<li class="rscdel">Gas canisters from Gas Miner containment units</li>
<li class="rscdel">Excessive wiring in Security and Detective's Office</li>
</ul>
<h3 class="author">qweq12yt updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Locker orders now properly bundle together in a single locker (still separated by buyer).</li>
<li class="bugfix">Changed some package names to be more accurate.</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">bees can go in containers and are released upon opening the container</li>
<li class="rscadd">7 more round tips have been added</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="imageadd">new singularity hammer sprite</li>
<li class="imageadd">various slight sprite additions</li>
<li class="imageadd">distinctive combat defib sprite</li>
<li class="imageadd">a onesleeved croptop accessory sprited by trojan coyote</li>
<li class="imageadd">new bank machine sprite</li>
<li class="imagedel">unused goon coffin sprite</li>
<li class="imageadd">new water cooler sprite</li>
</ul>
<h2 class="date">12 June 2021</h2>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">xenos are now truly immune to stamina damage.</li>
</ul>
<h2 class="date">10 June 2021</h2>
<h3 class="author">Arturlang updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Holoparasites for traitors now cost 12 crystals, for operatives 8, the ricochet eyepath traitor item now 4.</li>
</ul>
<h3 class="author">DrPainis updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">goliath calamari</li>
<li class="rscadd">cat meteors</li>
</ul>
<h3 class="author">Linzolle updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">cults can build in maintenance (and other small areas) again.</li>
<li class="bugfix">centcom can no longer be selected as the target area for narsie to be summoned??????</li>
</ul>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Moves medical holodeck to the restricted category</li>
</ul>
<h3 class="author">SandPoot updated:</h3>
<ul class="changes bgimages16">
<li class="code_imp">Uses some of the existing images for the typing indicators.</li>
<li class="bugfix">Fixes soulstone shard not working for non-cultists.</li>
</ul>
<h3 class="author">WanderingFox95 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">A random event for the cat surgeon to invade the station. Listen for scary noises!</li>
<li class="soundadd">Screaming Cat SFX, you know, for the mood.</li>
</ul>
<h3 class="author">bunny232 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Atmos resin now properly prevents all atmos from moving</li>
<li class="bugfix">Air tanks now properly have a 21/79 o2/n2 mix</li>
<li class="rscadd">Hydroponics can now make 5u of slimejelly by injecting 3 oil, 2 radium and 1 tinea luxor into a glowshroom</li>
</ul>
<h3 class="author">keronshb updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Made it so Off Balance only disarms if they're shoved into a wall or person.</li>
<li class="balance">Reduced Off Balance time to 2 seconds.</li>
<li class="balance">Pierced Realities despawn after 3 minutes and 15 seconds, new unresearched realities spawn in after that time elsewhere to help other heretics get back into the game.</li>
<li class="balance">A required sacrifice amount for heretic's second to last and last powers are added to discourage only rushing for holes.</li>
<li class="balance">An announcement automatically plays to everyone that there's a heretic gunning for ascension upon learning the 2nd to last power</li>
<li class="balance">Blade Shatters are now used in hand other than with a HUD icon tweak: Adjusted some TGUI menus for the book to reflect how many sacrifices a heretic has and how many are required for certain powers</li>
<li class="bugfix">Fixes sprite issue for Void Cloak for people who have digigrade legs.</li>
<li class="bugfix">Fixes the Raw Prophet recipe to match the description</li>
<li class="balance">Lets the Cargo Shuttle use Disposal Pipes again</li>
<li class="rscadd">Adds motivation and adds it to the uplink</li>
<li class="rscadd">Adds Judgement Cut projectiles</li>
<li class="rscadd">Adds Judgement Cut hit effects and firing effects.</li>
<li class="soundadd">added sounds for the firing and hit sounds of Judgement Cuts, created by @dzahlus</li>
<li class="rscadd">Adds Floor Cluwnes and event for midround</li>
<li class="rscadd">Adds Cluwne mutation</li>
<li class="rscadd">Adds Cluwne spell</li>
<li class="rscadd">Adds Cluwnes</li>
<li class="imageadd">Adds Cluwne Mask + shoes</li>
<li class="admin">Adds Floor Cluwne spawn button</li>
<li class="admin">Adds Cluwne smite button</li>
</ul>
<h3 class="author">zeroisthebiggay updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixed an exploit allowing you to grab people from anywhere with a clowncar.</li>
<li class="balance">revenant essence objective reduced</li>
</ul>
</div>
<b>GoonStation 13 Development Team</b>
+60
View File
@@ -29784,3 +29784,63 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
don''t announce they''re ending if they never announced they''re starting tweak:
Supernovae say explicitly no rad storms can happen if they can''t'
- rscadd: Monstermos is back
2021-08-09:
Arturlang:
- bugfix: Nanite machinery overlays should now work properly
- code_imp: screen objects are now atom/movables instead
- code_imp: Update appearance is used for updating atoms now instead of update_icon
and such
BlueWildrose:
- bugfix: Old gateway animation is back. Feedback is given that the gateway is open
again.
Putnam3145:
- balance: Rod of asclepius can now be used for revival surgery
2021-08-11:
timothyteakettle:
- rscadd: lets felinids, humans and moths have markings
2021-08-12:
Arturlang:
- rscdel: Nonslimes and nonvampires will no longer be able to increase their blood
to stupid heights
Putnam3145:
- refactor: Supermatter values use auxgm
cadyn:
- server: precompile.sh and build.sh updated, auxmos set to 0.2.3 in dependencies.sh
2021-08-13:
Putnam3145:
- bugfix: makes certain organs no longer have circular references
2021-08-16:
BlueWildrose:
- bugfix: Incapacitated mobs are blacklisted from being human-level intelligence
sentience event candidates. This is particularly important due to slimes in
BZ stasis on the station.
bunny232:
- bugfix: Polyvitiligo actually changes your color now
2021-08-18:
timothyteakettle:
- rscadd: lets you select 4 prosthetic limbs instead of only 2
2021-08-20:
EmeraldSundisk:
- rscadd: Adds a law office/courtroom to OmegaStation
- rscadd: Adds a gateway to OmegaStation
- rscadd: Adds a pool/maintenance bar to OmegaStation
- rscdel: 'Removes the original maintenance garden in OmegaStation tweak: Relocates
the bathrooms to the starboard hall tweak: Modifies port quarter maintenance
to include some affected items'
Putnam3145:
- rscadd: Beach now has showers
TripleShades:
- rscadd: At least four or five space heaters spread across Pubby Station Maints
- rscadd: Missing decal in Pubby Station engineering
- bugfix: Moved an atmos alarm in the SM emitter chamber so it wont be destroyed
WanderingFox95:
- rscadd: Empty bottles and pitchers are available to the bartender now.
- imageadd: They even come with 10 different fillstates!
- imageadd: Better Shark Tails, dodododododo~
- rscadd: The old ones are now listed as carp tails.
2021-08-22:
zeroisthebiggay:
- spellcheck: trillby can't spell pair
2021-08-23:
zeroisthebiggay:
- spellcheck: i hate the grammarchrist
@@ -1,6 +0,0 @@
author: "Arturlang"
delete-after: True
changes:
- bugfix: "Nanite machinery overlays should now work properly"
- code_imp: "screen objects are now atom/movables instead"
- code_imp: "Update appearance is used for updating atoms now instead of update_icon and such"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -226,7 +226,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
M.adjustCloneLoss(-10, 0) //I don't want to make Rezadone obsolete.
M.adjustBruteLoss(-25, 0)// Note that this takes a long time to apply and makes you fat and useless when it's in you, I don't think this small burst of healing will be useful considering how long it takes to get there.
M.adjustFireLoss(-25, 0)
M.blood_volume += 250
M.adjust_integration_blood(250)
M.heal_bodypart_damage(1,1)
M.action_cooldown_mod = 1
if (M.nutrition < 1500)
@@ -236,7 +236,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
to_chat(M, "<span class='notice'>the cells fail to hold enough mass to generate a clone, instead diffusing into your system.</span>")
M.adjustBruteLoss(-10, 0)
M.adjustFireLoss(-10, 0)
M.blood_volume += 100
M.adjust_integration_blood(100)
M.action_cooldown_mod = 1
if (M.nutrition < 1500)
M.adjust_nutrition(500)
@@ -309,7 +309,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
/datum/reagent/fermi/SDGFheal/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting, the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated)
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 10
M.adjust_integration_blood(10)
M.adjustCloneLoss(-2, 0)
M.setOrganLoss(ORGAN_SLOT_BRAIN, -1)
M.adjust_nutrition(10)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 75 KiB

+1 -1
View File
@@ -58,7 +58,7 @@ fi
#Compile and move auxmos binary to repo root
echo "Deploying auxmos..."
git checkout "$AUXMOS_VERSION"
env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features "all_reaction_hooks" -- -C target-cpu=native
env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features all_reaction_hooks,explosive_decompression -- -C target-cpu=native
mv target/i686-unknown-linux-gnu/release/libauxmos.so ../../../../libauxmos.so
cd ../..
+4
View File
@@ -6,6 +6,10 @@ shopt -s globstar
st=0
if git grep -P "\r\n"; then
echo "ERROR: CRLF line endings detected. Please stop using the webeditor, and fix it using a desktop Git client."
st = 1
fi;
if grep -El '^\".+\" = \(.+\)' _maps/**/*.dmm; then
echo "ERROR: Non-TGM formatted map detected. Please convert it using Map Merger!"
st=1
+1 -1
View File
@@ -84,7 +84,7 @@ fi
echo "Deploying auxmos..."
git checkout "$AUXMOS_VERSION"
env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features "all_reaction_hooks" -- -C target-cpu=native
env PKG_CONFIG_ALLOW_CROSS=1 ~/.cargo/bin/cargo rustc --release --target=i686-unknown-linux-gnu --features all_reaction_hooks,explosive_decompression -- -C target-cpu=native
mv -f target/i686-unknown-linux-gnu/release/libauxmos.so "$1/libauxmos.so"
cd ..