From c6b4efd8cd18c4de8d2fcf0a9dfae1a1b14bd99d Mon Sep 17 00:00:00 2001 From: Farquaar <44147031+Farquaar@users.noreply.github.com> Date: Thu, 1 Aug 2019 22:27:44 -0400 Subject: [PATCH 01/16] Adds monk robes to chaplain drobe Monk's frock (recently fixed!), and eastern monk's robe --- code/modules/vending/wardrobes.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 349d8c19213..0d2e2ef9a0a 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -340,11 +340,13 @@ /obj/item/clothing/suit/chaplainsuit/nun = 1, /obj/item/clothing/head/nun_hood = 1, /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, + /obj/item/clothing/suit/hooded/chaplainsuit/monkfrock = 1, /obj/item/storage/fancy/candle_box = 2, /obj/item/clothing/head/kippah = 3, /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, /obj/item/clothing/head/taqiyahwhite = 1, /obj/item/clothing/head/taqiyahred = 3, + /obj/item/clothing/suit/chaplainsuit/monkrobeeast = 1, /obj/item/clothing/head/beanie/rasta = 1) contraband = list(/obj/item/toy/plush/plushvar = 1, /obj/item/toy/plush/narplush = 1, From 2b429e0ef14b23c1a3d9ab722b23986309e3a892 Mon Sep 17 00:00:00 2001 From: Farquaar <44147031+Farquaar@users.noreply.github.com> Date: Fri, 21 Feb 2020 16:20:09 -0500 Subject: [PATCH 02/16] Adds say_mod variable Felinids now "meow" when they speak. --- code/modules/mob/living/carbon/human/species_types/felinid.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index adbf553d822..20926b5dce9 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -2,6 +2,7 @@ /datum/species/human/felinid name = "Felinid" id = "felinid" + say_mod = "meows" limbs_id = "human" mutant_bodyparts = list("ears", "tail_human") From 7d0c32d81a08b5e1099c2056c8c021f2e8360fc5 Mon Sep 17 00:00:00 2001 From: Farquaar <44147031+Farquaar@users.noreply.github.com> Date: Tue, 25 Feb 2020 12:31:08 -0500 Subject: [PATCH 03/16] Felinids "yap" --- code/modules/mob/living/carbon/human/species_types/felinid.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 20926b5dce9..f4e61847cb3 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -2,7 +2,7 @@ /datum/species/human/felinid name = "Felinid" id = "felinid" - say_mod = "meows" + say_mod = "yaps" limbs_id = "human" mutant_bodyparts = list("ears", "tail_human") From edf74e5c05f55a0200cb513a0ebb1b5f4de92e3c Mon Sep 17 00:00:00 2001 From: ArcaneDefence Date: Wed, 26 Feb 2020 17:45:16 -0700 Subject: [PATCH 04/16] Update cigs_lighters.dm Fix for https://github.com/tgstation/tgstation/issues/49588 --- code/game/objects/items/cigs_lighters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 1767f4e9ef5..0c6e2172f33 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -330,9 +330,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A Carp Classic brand cigarette. A small label on its side indicates that it does NOT contain carpotoxin." /obj/item/clothing/mask/cigarette/carp/Initialize() - . = ..() if(prob(5)) list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/carpotoxin = 3) //they lied + . = ..() /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." From 8facec32c9716ec43819057b868bd5c03a05d13d Mon Sep 17 00:00:00 2001 From: TWATICUS Date: Thu, 27 Feb 2020 09:48:25 -0500 Subject: [PATCH 05/16] bola time --- code/game/objects/items/handcuffs.dm | 6 ++++++ code/modules/antagonists/cult/cult_items.dm | 1 + icons/mob/inhands/weapons/thrown_lefthand.dmi | Bin 0 -> 1592 bytes icons/mob/inhands/weapons/thrown_righthand.dmi | Bin 0 -> 1573 bytes 4 files changed, 7 insertions(+) create mode 100644 icons/mob/inhands/weapons/thrown_lefthand.dmi create mode 100644 icons/mob/inhands/weapons/thrown_righthand.dmi diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 310d3b65264..b7e90603f2e 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -315,6 +315,9 @@ name = "bola" desc = "A restraining device designed to be thrown at the target. Upon connecting with said target, it will wrap around their legs, making it difficult for them to move quickly." icon_state = "bola" + item_state = "bola" + lefthand_file = 'icons/mob/inhands/weapons/thrown_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/thrown_righthand.dmi' breakouttime = 35//easy to apply, easy to break out of gender = NEUTER var/knockdown = 0 @@ -351,6 +354,7 @@ name = "reinforced bola" desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody." icon_state = "bola_r" + item_state = "bola_r" breakouttime = 70 knockdown = 35 @@ -358,6 +362,7 @@ name = "energy bola" desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests." icon_state = "ebola" + item_state = "ebola" hitsound = 'sound/weapons/taserhit.ogg' w_class = WEIGHT_CLASS_SMALL breakouttime = 60 @@ -373,6 +378,7 @@ name = "gonbola" desc = "Hey, if you have to be hugged in the legs by anything, it might as well be this little guy." icon_state = "gonbola" + item_state = "bola_r" breakouttime = 300 slowdown = 0 var/datum/status_effect/gonbolaPacify/effectReference diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 89b290d4994..1824eaa0bff 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -244,6 +244,7 @@ name = "\improper Nar'Sien bola" desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim." icon_state = "bola_cult" + item_state = "bola_cult" breakouttime = 60 knockdown = 30 diff --git a/icons/mob/inhands/weapons/thrown_lefthand.dmi b/icons/mob/inhands/weapons/thrown_lefthand.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0fc6ea58a5407f1f34aa01dce8b9efca268b4bf9 GIT binary patch literal 1592 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSO;sTgB`&GO$wiq3C7Jno3=9=> zg2M`mO22;zF8KKMiI%sn*10q1gExd4Tr__0Nawtd=E(pc$L!IgGahGs&TBLlba@MT z2Z`p0PMP$nSZL}Fi(sSfE+E%uhsEVCq2l0fAe$#p^r*Pta-E$f%Uc$l3aPoKrM=_V zPK_Nus)`sHrZrn{dsDTvih+T((9^{+q+-t7xxOAT;Sz28Go3X{5*Mm1-0G&5a#<*9 zu>jkoLjvBf7ag8*Zc%3Qgp`ZE3mlCuxNc!lixgSz!L2l9(iE{tW>*ZZ{bLbVl1Pl1 zAuvN=aWnHPg^AOwI*gk`{KcQOMT&GkzgPVJ;`ds!Je&IWwSV5(b{F&X_VsZcd^&T1 zxWVjgkSQ*-J3MacXyuP@?=%W75{5wx_Ygu0`^NB99 zl?s*b?`tc$EiHQB?cvvbZlR}+KKi5f;?(lV+XWe;=KrZVn`-a(+ueEz*Oq_(*GtF- ztLMLtXFQ_g#+vc#Pt)pe@_cpgFZvi$n(v2|fBKn^6BUhIeL z3RYT}F1>pG@lsVmLCrJzr+}vQ^z%gim7Q?jcg3MUi`GnkRx^9~bOwjfJV|-1)JWesx=vDT!6>*`ngS|F5Fbr!BK?c&*(~7dX4L`cI07dcN}d z2B5u9Q%}D8`)JZ7(Ubmr;r zv+E*ca<G1)^ZlJWqJ4Z$RALyuskOZJ{0w~C8;MRW z7=G;&WbEo}x!P_~CY|?b+dihAqmQR#as!33BqTO`u4CBFpRXeqp3ln{Rj+VF5uAWD z8Q*nu$lTd{JXGE9caoCfvpTPR1?ndZOFwP|XX&wBB+qpYC)oBU|g;J2!Y8eZ8^@nq>0h<3UO0_~G4? zJWDO-e#`m&?c_{juW%Lnk5zZ;dQSdkJn+y=fKcYc2u^rbHB>s#yL)n&{G%JWJ5JvI z#dTrsPS=^+9vr*t`8Cjc_1y2wJ8CQL&WzUj`j7pZJVznNu1_yP384Pldr`rO*ZEC$ zzB-=y-}&PH|HogmrQdbzT{(IC*YylZVvCvn{F$@+U48%F*Raq%>>jN$arg3TVqHSJ z|E>=EX%`w7CT(2#GGj&f%>DmARdu;Z*xeGkF=H1fjNF~~-kNdp^k;VS{M8)xH}3u4 zT)yI*n2SqFvYLK2x2xxqcfcGOpuHwO*(!3rmj3Fkt&2Kx?17o_#*CBQz|6>FKV#B* zeU+{I9 zg2M`mO22;zF8KKMiI%sn*10q1gExd4Tr__0Nawtd=E(pc$L!IgGahGs&TBLlba@MT z2Z`p0PMP$nSZL}Fi(sSfE+E%uhsEVCq2l0fAe$#p^r*Pta-E$f%Uc$l3aPoKrM=_V zPK_Nus)`sHrZrn{dsDTvih+SO&eO#)q+-t7xxOAU=@Q5PUv3NHIOx>d7^N&-f8%+AxBNoMPSxx?QhqS)o$VK$IN?Ab!)3);Dl`3})qZ`q z7QTDQlB?j!!}DTuMQtD4J3OK9&vpHO{Hv~iQ5L^z>b#p(pxlD%!jHu1;k6PE*Iv}$ zx?b{&&$i^7ylp+bals55^6$sFM9=zAan|wl>0@Pwk5qWMM$g)?VG9$3Ma>sg-M!)I zMSnuh+&ZDFwZ8ab?B#EK1?H0(8Dv(hK78mBmswGFV}-&T3ICNf`!?4ixu^SMd^~b@vxXQO&I__?Hu3#`+;-Jxr~Z$1e^0oU`-U@3_;BdD z!@~du^3e{V2WkJ=8zs0tPTG(nbj$j{bMgDeRgH0P|6Ji}X6a*^!FN$5UB5nY=8OC9 zeM-EaYaH0T)s&&(So*7yYbNLR=Id)enE$UdXzw!loiEl&-qLN@aX7GHukZSbtL=hO z=U>f#%3q~+d!uMV&X-xIo^#IthR)$!*|=|8vg_{u-!n1r)hi!{1N|{2*Pr}kux@zH z%)&5_e}i#_-2uG^KN(a$d@v0lIk6xou5~OYjy*>5+}dwti^W&eRosC4O~1b{3Xya& z&d)n_JibKC)YnXIKkJ{>^|?9Gm-}P3T;q8w=5Xhs#(@NtN1^g=5}j_)q+>5z^KMSo z+?kH$N(nZ&K6`ec*7VY=CSD6e4)wONojG$pS$Fzj_uAT9ZY#BCe&OedsC$y+lokH?A<)=M zl1no0*%!OT%1RmCTMvq$lb;z|4pW|DX5X*lJrd9{y+w8Mg?o&8y*2q?nD!R0ISLQe zljirf_6?KXgX5k9LnxYY zU5V;_R=I-XU3M#;^_=kb?qk2GQe`5!PC{xWt~$(699l#$A|y` literal 0 HcmV?d00001 From c0c21389e360968ae7c3ef80674a00d2ec9fe70e Mon Sep 17 00:00:00 2001 From: TheVekter Date: Thu, 27 Feb 2020 16:14:18 -0600 Subject: [PATCH 06/16] Autodoc for XB and Research defines (#49575) * Adds some auto documentation for Xenobiology * Fixes spacing --- code/__DEFINES/research.dm | 20 +++++----- .../research/xenobiology/xenobiology.dm | 38 +++++++++++++++---- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm index 85314155c58..8e4fc4ca1d8 100644 --- a/code/__DEFINES/research.dm +++ b/code/__DEFINES/research.dm @@ -1,9 +1,8 @@ - +///Defines for the R&D console, see: [/modules/research/rdconsole][rdconsole] #define RDCONSOLE_UI_MODE_NORMAL 1 #define RDCONSOLE_UI_MODE_EXPERT 2 #define RDCONSOLE_UI_MODE_LIST 3 -//RDSCREEN screens #define RDSCREEN_MENU 0 #define RDSCREEN_TECHDISK 1 #define RDSCREEN_DESIGNDISK 20 @@ -27,6 +26,7 @@ #define RDSCREEN_NOBREAK "" +///Sanity check defines for when these devices aren't connected or no disk is inserted #define RDSCREEN_TEXT_NO_PROTOLATHE "

No Protolathe Linked!


" #define RDSCREEN_TEXT_NO_IMPRINTER "

No Circuit Imprinter Linked!


" #define RDSCREEN_TEXT_NO_DECONSTRUCT "

No Destructive Analyzer Linked!


" @@ -43,12 +43,14 @@ #define RDSCREEN_UI_SNODE_CHECK if(!selected_node) { return RDSCREEN_TEXT_NO_SNODE } #define RDSCREEN_UI_SDESIGN_CHECK if(!selected_design) { return RDSCREEN_TEXT_NO_SDESIGN } +///Defines for the Protolathe screens, see: [/modules/research/machinery/protolathe][Protolathe] #define RESEARCH_FABRICATOR_SCREEN_MAIN 1 #define RESEARCH_FABRICATOR_SCREEN_CHEMICALS 2 #define RESEARCH_FABRICATOR_SCREEN_MATERIALS 3 #define RESEARCH_FABRICATOR_SCREEN_SEARCH 4 #define RESEARCH_FABRICATOR_SCREEN_CATEGORYVIEW 5 +///Department flags for techwebs. Defines which department can print what from each protolathe so Cargo can't print guns, etc. #define DEPARTMENTAL_FLAG_SECURITY (1<<0) #define DEPARTMENTAL_FLAG_MEDICAL (1<<1) #define DEPARTMENTAL_FLAG_CARGO (1<<2) @@ -56,28 +58,28 @@ #define DEPARTMENTAL_FLAG_ENGINEERING (1<<4) #define DEPARTMENTAL_FLAG_SERVICE (1<<5) #define DEPARTMENTAL_FLAG_ALL (1<<6) //NO THIS DOESN'T ALLOW YOU TO PRINT EVERYTHING, IT'S FOR ALL DEPARTMENTS! -//#define DEPARTMENTAL_FLAG_MINING (1<<7) +//#define DEPARTMENTAL_FLAG_MINING (1<<7) //I swear I'm actually going to use this eventually leave it here -#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN" +#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN" ///For instances where we don't want a design showing up due to it being for debug/sanity purposes #define RESEARCH_MATERIAL_RECLAMATION_ID "__materials" -//When adding new types, update the list below! +///Techweb names for new point types. Can be used to define specific point values for specific types of research (science, security, engineering, etc.) #define TECHWEB_POINT_TYPE_GENERIC "General Research" #define TECHWEB_POINT_TYPE_NANITES "Nanite Research" #define TECHWEB_POINT_TYPE_DEFAULT TECHWEB_POINT_TYPE_GENERIC -//defined here so people don't forget to change this! +///Associative names for techweb point values, see: [/modules/research/techweb/all_nodes][all_nodes] #define TECHWEB_POINT_TYPE_LIST_ASSOCIATIVE_NAMES list(\ TECHWEB_POINT_TYPE_GENERIC = "General Research",\ TECHWEB_POINT_TYPE_NANITES = "Nanite Research"\ ) -#define TECHWEB_BOMB_POINTCAP 50000 //Adjust as needed; Stops toxins from nullifying RND progression mechanics. Current Value Cap Radius: 100 - -//research point values for slime extracts +///R&D point value for a maxcap bomb. Can be adjusted if need be. Current Value Cap Radius: 100 +#define TECHWEB_BOMB_POINTCAP 50000 +///Research point values for slime extracts, see: [/modules/research/xenobiology/xenobio_camera][xenobio_camera] #define SLIME_RESEARCH_TIER_0 100 #define SLIME_RESEARCH_TIER_1 500 #define SLIME_RESEARCH_TIER_2 1000 diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index cc8c020152f..3853f076cdb 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -11,12 +11,12 @@ throw_speed = 3 throw_range = 6 grind_results = list() - var/Uses = 1 // uses before it goes inert - var/qdel_timer = null // deletion timer, for delayed reactions - var/effectmod - var/list/activate_reagents = list() //Reagents required for activation + var/Uses = 1 ///uses before it goes inert + var/qdel_timer = null ///deletion timer, for delayed reactions + var/effectmod ///Which type of crossbred + var/list/activate_reagents = list() ///Reagents required for activation var/recurring = FALSE - var/research //Research point value + var/research ///Research point value for slime cores. These are defines stored in [/__DEFINES/research] - the actual values are updated there. /obj/item/slime_extract/examine(mob/user) . = ..() @@ -45,12 +45,24 @@ if(Uses) grind_results[/datum/reagent/toxin/slimejelly] = 20 -//Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds. +/** +* Effect when activated by a Luminescent. +* +* This proc is called whenever a Luminescent consumes a slime extract. Each one is separated into major and minor effects depending on the extract. Cooldown is measured in deciseconds. +* +* * arg1 - The mob absorbing the slime extract. +* * arg2 - The valid species for the absorbtion. Should always be a Luminescent unless something very major has changed. +* * arg3 - Whether or not the activation is major or minor. Major activations have large, complex effects, minor are simple. +*/ /obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) to_chat(user, "Nothing happened... This slime extract cannot be activated this way.") return 0 -//Core-crossing: Feeding adult slimes extracts to obtain a much more powerful, single extract. +/** +* Core-crossing: Feeding adult slimes extracts to obtain a much more powerful, single extract. +* +* By using a valid core on a living adult slime, then feeding it nine more of the same type, you can mutate it into more useful items. Not every slime type has an implemented core cross. +*/ /obj/item/slime_extract/attack(mob/living/simple_animal/slime/M, mob/user) if(!isslime(M)) return ..() @@ -628,6 +640,16 @@ ////Slime-derived potions/// +/** +* #Slime potions +* +* Feed slimes potions either by hand or using the slime console. +* +* Slime potions either augment the slime's behavior, its extract output, or its intelligence. These all come either from extract effects or cross cores. +* A few of the more powerful ones can modify someone's equipment or gender. +* New ones should probably be accessible only through cross cores as all the normal core types already have uses. Rule of thumb is 'stronger effects go in cross cores'. +*/ + /obj/item/slimepotion name = "slime potion" desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances." @@ -1001,6 +1023,8 @@ imp.implant(M, user) qdel(src) +///Definitions for slime products that don't have anywhere else to go (Floor tiles, blueprints). + /obj/item/stack/tile/bluespace name = "bluespace floor tile" singular_name = "floor tile" From 1a1533a2e3cb0c71a6e9dcbe35f3ffbee0fb1880 Mon Sep 17 00:00:00 2001 From: spookydonut Date: Fri, 28 Feb 2020 06:14:39 +0800 Subject: [PATCH 07/16] Code docs some mob stuff (#49570) * update damage proc codedocs * docs for mobs * change requests --- code/__DEFINES/mobs.dm | 10 +- code/modules/mob/inventory.dm | 2 +- .../mob/living/carbon/alien/damage_procs.dm | 18 +-- .../mob/living/carbon/carbon_defines.dm | 40 +++---- .../modules/mob/living/carbon/damage_procs.dm | 60 ++++++---- .../mob/living/carbon/human/damage_procs.dm | 3 +- code/modules/mob/living/damage_procs.dm | 53 +++++---- code/modules/mob/living/living_defines.dm | 104 +++++++++--------- code/modules/mob/mob_defines.dm | 4 +- 9 files changed, 162 insertions(+), 132 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index c5e6c1fc2ae..bbcab316b27 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -35,8 +35,8 @@ #define VENTCRAWLER_ALWAYS 2 //Bloodcrawling defines -#define BLOODCRAWL 1 -#define BLOODCRAWL_EAT 2 +#define BLOODCRAWL 1 /// bloodcrawling, see: [/mob/living/var/bloodcrawl] +#define BLOODCRAWL_EAT 2 /// crawling+mob devour //Mob bio-types flags #define MOB_ORGANIC 1 << 0 @@ -242,9 +242,9 @@ ///The shock doesn't stun. #define SHOCK_NOSTUN (1 << 3) -#define INCORPOREAL_MOVE_BASIC 1 -#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows -#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt +#define INCORPOREAL_MOVE_BASIC 1 /// normal movement, see: [/mob/living/var/incorporeal_move] +#define INCORPOREAL_MOVE_SHADOW 2 /// leaves a trail of shadows +#define INCORPOREAL_MOVE_JAUNT 3 /// is blocked by holy water/salt //Secbot and ED209 judgement criteria bitflag values #define JUDGE_EMAGGED (1<<0) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index b130a21eb7f..96b80844205 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -1,7 +1,7 @@ //These procs handle putting s tuff in your hands //as they handle all relevant stuff like adding it to the player's screen and updating their overlays. -//Returns the thing we're currently holding +///Returns the thing we're currently holding /mob/proc/get_active_held_item() return get_item_for_held_index(active_hand_index) diff --git a/code/modules/mob/living/carbon/alien/damage_procs.dm b/code/modules/mob/living/carbon/alien/damage_procs.dm index 452b162da21..1d0ad8e9d3b 100644 --- a/code/modules/mob/living/carbon/alien/damage_procs.dm +++ b/code/modules/mob/living/carbon/alien/damage_procs.dm @@ -1,13 +1,15 @@ - +///alien immune to tox damage /mob/living/carbon/alien/getToxLoss() - return 0 - -/mob/living/carbon/alien/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE) //alien immune to tox damage return FALSE -//aliens are immune to stamina damage. -/mob/living/carbon/alien/adjustStaminaLoss(amount, updating_health = 1, forced = FALSE) - return +///alien immune to tox damage +/mob/living/carbon/alien/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE) + return FALSE +///aliens are immune to stamina damage. +/mob/living/carbon/alien/adjustStaminaLoss(amount, updating_health = 1, forced = FALSE) + return FALSE + +///aliens are immune to stamina damage. /mob/living/carbon/alien/setStaminaLoss(amount, updating_health = 1) - return + return FALSE diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 97fd3e1eb4c..6b6bbb22248 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -6,13 +6,13 @@ hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) has_limbs = 1 held_items = list(null, null) - var/list/internal_organs = list() //List of /obj/item/organ in the mob. They don't go in the contents for some reason I don't want to know. - var/list/internal_organs_slot= list() //Same as above, but stores "slot ID" - "organ" pairs for easy access. - var/silent = FALSE //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU. - var/dreaming = 0 //How many dream images we have left to send + var/list/internal_organs = list() ///List of [/obj/item/organ] in the mob. They don't go in the contents for some reason I don't want to know. + var/list/internal_organs_slot= list() ///Same as [above][/mob/living/carbon/var/internal_organs], but stores "slot ID" - "organ" pairs for easy access. + var/silent = 0 ///Can't talk. Value goes down every life proc. NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU. + var/dreaming = 0 ///How many dream images we have left to send - var/obj/item/handcuffed = null //Whether or not the mob is handcuffed - var/obj/item/legcuffed = null //Same as handcuffs but for legs. Bear traps use this. + var/obj/item/handcuffed = null///Whether or not the mob is handcuffed + var/obj/item/legcuffed = null ///Same as handcuffs but for legs. Bear traps use this. var/disgust = 0 @@ -23,15 +23,15 @@ var/obj/item/tank/internal = null var/obj/item/clothing/head = null - var/obj/item/clothing/gloves = null //only used by humans - var/obj/item/clothing/shoes = null //only used by humans. - var/obj/item/clothing/glasses/glasses = null //only used by humans. - var/obj/item/clothing/ears = null //only used by humans. + var/obj/item/clothing/gloves = null ///only used by humans + var/obj/item/clothing/shoes = null ///only used by humans. + var/obj/item/clothing/glasses/glasses = null ///only used by humans. + var/obj/item/clothing/ears = null ///only used by humans. - var/datum/dna/dna = null // Carbon - var/datum/mind/last_mind = null //last mind to control this mob, for blood-based cloning + var/datum/dna/dna = null /// Carbon + var/datum/mind/last_mind = null ///last mind to control this mob, for blood-based cloning - var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. + var/failed_last_breath = 0 ///This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. var/co2overloadtime = null var/temperature_resistance = T0C+75 @@ -41,13 +41,13 @@ var/rotate_on_lying = 1 - var/tinttotal = 0 // Total level of visualy impairing items + var/tinttotal = 0 /// Total level of visualy impairing items + ///Gets filled up in [create_bodyparts()][/mob/living/carbon/proc/create_bodyparts] var/list/bodyparts = list(/obj/item/bodypart/chest, /obj/item/bodypart/head, /obj/item/bodypart/l_arm, /obj/item/bodypart/r_arm, /obj/item/bodypart/r_leg, /obj/item/bodypart/l_leg) - //Gets filled up in create_bodyparts() - var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems) + var/list/hand_bodyparts = list() ///a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems) var/icon_render_key = "" var/static/list/limb_icon_cache = list() @@ -58,12 +58,12 @@ var/obj/halitem var/hal_screwyhud = SCREWYHUD_NONE var/next_hallucination = 0 - var/cpr_time = 1 //CPR cooldown. + var/cpr_time = 1 ///CPR cooldown. var/damageoverlaytemp = 0 - var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects - var/stam_regen_start_time = 0 //used to halt stamina regen temporarily - var/stam_paralyzed = FALSE //knocks you down + var/drunkenness = 0 ///Overall drunkenness + var/stam_regen_start_time = 0 ///used to halt stamina regen temporarily + var/stam_paralyzed = FALSE ///knocks you down /// Protection (insulation) from the heat, Value 0-1 corresponding to the percentage of protection var/heat_protection = 0 // No heat protection diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 2ac4d4e69cc..a329c0c029c 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -113,31 +113,37 @@ return adjustStaminaLoss(diff, updating_health, forced) -/** adjustOrganLoss - * inputs: slot (organ slot, like ORGAN_SLOT_HEART), amount (damage to be done), and maximum (currently an arbitrarily large number, can be set so as to limit damage) - * outputs: - * description: If an organ exists in the slot requested, and we are capable of taking damage (we don't have GODMODE on), call the damage proc on that organ. +/** + * If an organ exists in the slot requested, and we are capable of taking damage (we don't have [GODMODE] on), call the damage proc on that organ. + * + * Arguments: + * * slot - organ slot, like [ORGAN_SLOT_HEART] + * * amount - damage to be done + * * maximum - currently an arbitrarily large number, can be set so as to limit damage */ /mob/living/carbon/adjustOrganLoss(slot, amount, maximum) var/obj/item/organ/O = getorganslot(slot) if(O && !(status_flags & GODMODE)) O.applyOrganDamage(amount, maximum) -/** setOrganLoss - * inputs: slot (organ slot, like ORGAN_SLOT_HEART), amount(damage to be set to) - * outputs: - * description: If an organ exists in the slot requested, and we are capable of taking damage (we don't have GODMODE on), call the set damage proc on that organ, which can - * set or clear the failing variable on that organ, making it either cease or start functions again, unlike adjustOrganLoss. +/** + * If an organ exists in the slot requested, and we are capable of taking damage (we don't have [GODMODE] on), call the set damage proc on that organ, which can + * set or clear the failing variable on that organ, making it either cease or start functions again, unlike adjustOrganLoss. + * + * Arguments: + * * slot - organ slot, like [ORGAN_SLOT_HEART] + * * amount - damage to be set to */ /mob/living/carbon/setOrganLoss(slot, amount) var/obj/item/organ/O = getorganslot(slot) if(O && !(status_flags & GODMODE)) O.setOrganDamage(amount) -/** getOrganLoss - * inputs: slot (organ slot, like ORGAN_SLOT_HEART) - * outputs: organ damage - * description: If an organ exists in the slot requested, return the amount of damage that organ has +/** + * If an organ exists in the slot requested, return the amount of damage that organ has + * + * Arguments: + * * slot - organ slot, like [ORGAN_SLOT_HEART] */ /mob/living/carbon/getOrganLoss(slot) var/obj/item/organ/O = getorganslot(slot) @@ -146,7 +152,7 @@ //////////////////////////////////////////// -//Returns a list of damaged bodyparts +///Returns a list of damaged bodyparts /mob/living/carbon/proc/get_damaged_bodyparts(brute = FALSE, burn = FALSE, stamina = FALSE, status) var/list/obj/item/bodypart/parts = list() for(var/X in bodyparts) @@ -157,7 +163,7 @@ parts += BP return parts -//Returns a list of damageable bodyparts +///Returns a list of damageable bodyparts /mob/living/carbon/proc/get_damageable_bodyparts(status) var/list/obj/item/bodypart/parts = list() for(var/X in bodyparts) @@ -168,9 +174,13 @@ parts += BP return parts -//Heals ONE bodypart randomly selected from damaged ones. -//It automatically updates damage overlays if necessary -//It automatically updates health status +/** + * Heals ONE bodypart randomly selected from damaged ones. + * + * It automatically updates damage overlays if necessary + * + * It automatically updates health status + */ /mob/living/carbon/heal_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status) var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute,burn,stamina,required_status) if(!parts.len) @@ -182,9 +192,13 @@ return max(damage_calculator - picked.get_damage(TRUE), 0) -//Damages ONE bodypart randomly selected from damagable ones. -//It automatically updates damage overlays if necessary -//It automatically updates health status +/** + * Damages ONE bodypart randomly selected from damagable ones. + * + * It automatically updates damage overlays if necessary + * + * It automatically updates health status + */ /mob/living/carbon/take_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status, check_armor = FALSE) var/list/obj/item/bodypart/parts = get_damageable_bodyparts(required_status) if(!parts.len) @@ -193,7 +207,7 @@ if(picked.receive_damage(brute, burn, stamina,check_armor ? run_armor_check(picked, (brute ? "melee" : burn ? "fire" : stamina ? "bullet" : null)) : FALSE)) update_damage_overlays() -//Heal MANY bodyparts, in random order +///Heal MANY bodyparts, in random order /mob/living/carbon/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE) var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute, burn, stamina, required_status) @@ -218,7 +232,7 @@ if(update) update_damage_overlays() -// damage MANY bodyparts, in random order +/// damage MANY bodyparts, in random order /mob/living/carbon/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status) if(status_flags & GODMODE) return //godmode diff --git a/code/modules/mob/living/carbon/human/damage_procs.dm b/code/modules/mob/living/carbon/human/damage_procs.dm index 6b193c740f4..466747fc075 100644 --- a/code/modules/mob/living/carbon/human/damage_procs.dm +++ b/code/modules/mob/living/carbon/human/damage_procs.dm @@ -1,5 +1,4 @@ - +/// depending on the species, it will run the corresponding apply_damage code there /mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE, spread_damage = FALSE) - // depending on the species, it will run the corresponding apply_damage code there return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src, forced, spread_damage) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index cac062b25ff..65d27edf672 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -1,18 +1,24 @@ -/* - apply_damage(a,b,c) - args - a:damage - How much damage to take - b:damage_type - What type of damage to take, brute, burn - c:def_zone - Where to take the damage if its brute or burn - Returns - standard 0 if fail -*/ +/** + * Applies damage to this mob + * + * Sends [COMSIG_MOB_APPLY_DAMGE] + * + * Arguuments: + * * damage - amount of damage + * * damagetype - one of [BRUTE], [BURN], [TOX], [OXY], [CLONE], [STAMINA] + * * def_zone - zone that is being hit if any + * * blocked - armor value applied + * * forced - bypass hit percentage + * * spread_damage - used in overrides + * + * Returns TRUE if damage applied + */ /mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE, spread_damage = FALSE) SEND_SIGNAL(src, COMSIG_MOB_APPLY_DAMGE, damage, damagetype, def_zone) var/hit_percent = (100-blocked)/100 if(!damage || (!forced && hit_percent <= 0)) - return 0 + return FALSE var/damage_amount = forced ? damage : damage * hit_percent switch(damagetype) if(BRUTE) @@ -27,9 +33,10 @@ adjustCloneLoss(damage_amount, forced = forced) if(STAMINA) adjustStaminaLoss(damage_amount, forced = forced) - return 1 + return TRUE -/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs +///like [apply_damage][/mob/living/proc/apply_damage] except it always uses the damage procs +/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) switch(damagetype) if(BRUTE) return adjustBruteLoss(damage) @@ -44,6 +51,7 @@ if(STAMINA) return adjustStaminaLoss(damage) +/// return the damage amount for the type given /mob/living/proc/get_damage_amount(damagetype = BRUTE) switch(damagetype) if(BRUTE) @@ -59,7 +67,7 @@ if(STAMINA) return getStaminaLoss() - +/// applies multiple damages at once via [/mob/living/proc/apply_damage] /mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0, brain = 0) if(blocked >= 100) return 0 @@ -80,7 +88,7 @@ return 1 - +/// applies various common status effects or common hardcoded mob effects /mob/living/proc/apply_effect(effect = 0,effecttype = EFFECT_STUN, blocked = FALSE) var/hit_percent = (100-blocked)/100 if(!effect || (hit_percent <= 0)) @@ -112,7 +120,7 @@ jitteriness = max(jitteriness,(effect * hit_percent)) return 1 - +/// applies multiple effects at once via [/mob/living/proc/apply_effect] /mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0, paralyze = 0, immobilize = 0) if(blocked >= 100) return BULLET_ACT_BLOCK @@ -240,15 +248,18 @@ /mob/living/proc/setStaminaLoss(amount, updating_health = TRUE, forced = FALSE) return -// heal ONE external organ, organ gets randomly selected from damaged ones. -/// needs to return amount healed in order to calculate things like tend wounds xp gain +/** + * heal ONE external organ, organ gets randomly selected from damaged ones. + * + * needs to return amount healed in order to calculate things like tend wounds xp gain + */ /mob/living/proc/heal_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status) . = (adjustBruteLoss(-brute, FALSE) + adjustFireLoss(-burn, FALSE) + adjustStaminaLoss(-stamina, FALSE)) //zero as argument for no instant health update if(updating_health) updatehealth() update_stamina() -// damage ONE external organ, organ gets randomly selected from damaged ones. +/// damage ONE external organ, organ gets randomly selected from damaged ones. /mob/living/proc/take_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status, check_armor = FALSE) adjustBruteLoss(brute, FALSE) //zero as argument for no instant health update adjustFireLoss(burn, FALSE) @@ -257,7 +268,7 @@ updatehealth() update_stamina() -// heal MANY bodyparts, in random order +/// heal MANY bodyparts, in random order /mob/living/proc/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE) adjustBruteLoss(-brute, FALSE) //zero as argument for no instant health update adjustFireLoss(-burn, FALSE) @@ -266,7 +277,7 @@ updatehealth() update_stamina() -// damage MANY bodyparts, in random order +/// damage MANY bodyparts, in random order /mob/living/proc/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status = null) adjustBruteLoss(brute, FALSE) //zero as argument for no instant health update adjustFireLoss(burn, FALSE) @@ -275,7 +286,7 @@ updatehealth() update_stamina() -//heal up to amount damage, in a given order +///heal up to amount damage, in a given order /mob/living/proc/heal_ordered_damage(amount, list/damage_types) . = amount //we'll return the amount of damage healed for(var/i in damage_types) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 3e7dbf13cae..935411b3b0b 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -7,92 +7,96 @@ hud_type = /datum/hud/living - var/resize = 1 //Badminnery resize + var/resize = 1 ///Badminnery resize var/lastattacker = null var/lastattackerckey = null //Health and life related vars - var/maxHealth = 100 //Maximum health that should be possible. - var/health = 100 //A mob's health + var/maxHealth = 100 ///Maximum health that should be possible. + var/health = 100 ///A mob's health //Damage related vars, NOTE: THESE SHOULD ONLY BE MODIFIED BY PROCS - var/bruteloss = 0 //Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage) - var/oxyloss = 0 //Oxygen depravation damage (no air in lungs) - var/toxloss = 0 //Toxic damage caused by being poisoned or radiated - var/fireloss = 0 //Burn damage caused by being way too hot, too cold or burnt. - var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims - var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this. - var/crit_threshold = HEALTH_THRESHOLD_CRIT // when the mob goes from "normal" to crit + var/bruteloss = 0 ///Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage) + var/oxyloss = 0 ///Oxygen depravation damage (no air in lungs) + var/toxloss = 0 ///Toxic damage caused by being poisoned or radiated + var/fireloss = 0 ///Burn damage caused by being way too hot, too cold or burnt. + var/cloneloss = 0 ///Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims + var/staminaloss = 0 ///Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this. + var/crit_threshold = HEALTH_THRESHOLD_CRIT /// when the mob goes from "normal" to crit var/mobility_flags = MOBILITY_FLAGS_DEFAULT var/resting = FALSE - var/lying = 0 //number of degrees. DO NOT USE THIS IN CHECKS. CHECK FOR MOBILITY FLAGS INSTEAD!! - var/lying_prev = 0 //last value of lying on update_mobility + var/lying = 0 ///number of degrees. DO NOT USE THIS IN CHECKS. CHECK FOR MOBILITY FLAGS INSTEAD!! + var/lying_prev = 0 ///last value of lying on update_mobility - var/confused = 0 //Makes the mob move in random directions. + var/confused = 0 ///Makes the mob move in random directions. - var/hallucination = 0 //Directly affects how long a mob will hallucinate for + var/hallucination = 0 ///Directly affects how long a mob will hallucinate for - var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. + var/last_special = 0 ///Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out. var/timeofdeath = 0 - //Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. - var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas - //and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt + /** + * Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects. + * + * FALSE is off, [INCORPOREAL_MOVE_BASIC] is normal, [INCORPOREAL_MOVE_SHADOW] is for ninjas + * and [INCORPOREAL_MOVE_JAUNT] is blocked by holy water/salt + */ + var/incorporeal_move = FALSE var/list/roundstart_quirks = list() - var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them. + var/list/surgeries = list() ///a list of surgery datums. generally empty, they're added when the player wants them. - var/now_pushing = null //used by living/Bump() and living/PushAM() to prevent potential infinite loop. + var/now_pushing = null ///used by [living/Bump()][/mob/living/Bump] and [living/PushAM()][/mob/living/PushAM] to prevent potential infinite loop. var/cameraFollow = null - var/tod = null // Time of death + var/tod = null /// Time of death - var/on_fire = 0 //The "Are we on fire?" var - var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20 + var/on_fire = 0 ///The "Are we on fire?" var + var/fire_stacks = 0 ///Tracks how many stacks of fire we have on, max is usually 20 - var/bloodcrawl = 0 //0 No blood crawling, BLOODCRAWL for bloodcrawling, BLOODCRAWL_EAT for crawling+mob devour - var/holder = null //The holder for blood crawling - var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always - var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. + var/bloodcrawl = 0 ///0 No blood crawling, [BLOODCRAWL] for bloodcrawling, [BLOODCRAWL_EAT] for crawling+mob devour + var/holder = null ///The holder for blood crawling + var/ventcrawler = 0 ///0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always + var/limb_destroyer = 0 ///1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack. var/mob_size = MOB_SIZE_HUMAN var/mob_biotypes = MOB_ORGANIC - var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. - var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head) + var/metabolism_efficiency = 1 ///more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. + var/has_limbs = 0 ///does the mob have distinct limbs?(arms,legs, chest,head) var/list/pipes_shown = list() var/last_played_vent - var/smoke_delay = 0 //used to prevent spam with smoke reagent reaction on mob. + var/smoke_delay = 0 ///used to prevent spam with smoke reagent reaction on mob. - var/bubble_icon = "default" //what icon the mob uses for speechbubbles - var/health_doll_icon //if this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi + var/bubble_icon = "default" ///what icon the mob uses for speechbubbles + var/health_doll_icon ///if this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi var/last_bumped = 0 - var/unique_name = 0 //if a mob's name should be appended with an id when created e.g. Mob (666) - var/numba = 0 //the id a mob gets when it's created + var/unique_name = 0 ///if a mob's name should be appended with an id when created e.g. Mob (666) + var/numba = 0 ///the id a mob gets when it's created - var/list/butcher_results = null //these will be yielded from butchering with a probability chance equal to the butcher item's effectiveness - var/list/guaranteed_butcher_results = null //these will always be yielded from butchering - var/butcher_difficulty = 0 //effectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier + var/list/butcher_results = null ///these will be yielded from butchering with a probability chance equal to the butcher item's effectiveness + var/list/guaranteed_butcher_results = null ///these will always be yielded from butchering + var/butcher_difficulty = 0 ///effectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier - var/hellbound = 0 //People who've signed infernal contracts are unrevivable. + var/hellbound = 0 ///People who've signed infernal contracts are unrevivable. var/list/weather_immunities = list() - var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added + 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/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override + var/blood_volume = 0 ///how much blood the mob has + var/obj/effect/proc_holder/ranged_ability ///Any ranged ability the mob has, as a click override - var/see_override = 0 //0 for no override, sets see_invisible = see_override in silicon & carbon life process via update_sight() + var/see_override = 0 ///0 for no override, sets see_invisible = see_override in silicon & carbon life process via update_sight() - var/list/status_effects //a list of all status effects the mob has + var/list/status_effects ///a list of all status effects the mob has var/druggy = 0 //Speech @@ -105,21 +109,21 @@ var/datum/riding/riding_datum - var/last_words //used for database logging + var/last_words ///used for database logging var/list/obj/effect/proc_holder/abilities = list() - var/can_be_held = FALSE //whether this can be picked up and held. + var/can_be_held = FALSE ///whether this can be picked up and held. - var/radiation = 0 //If the mob is irradiated. + var/radiation = 0 ///If the mob is irradiated. var/ventcrawl_layer = PIPING_LAYER_DEFAULT var/losebreath = 0 //List of active diseases - var/list/diseases = list() // list of all diseases in a mob + var/list/diseases = list() /// list of all diseases in a mob var/list/disease_resistances = list() - var/slowed_by_drag = TRUE //Whether the mob is slowed down when dragging another prone mob + var/slowed_by_drag = TRUE ///Whether the mob is slowed down when dragging another prone mob - var/list/ownedSoullinks //soullinks we are the owner of - var/list/sharedSoullinks //soullinks we are a/the sharer of + var/list/ownedSoullinks ///soullinks we are the owner of + var/list/sharedSoullinks ///soullinks we are a/the sharer of diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 81aecc74996..8befdae13a4 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -122,7 +122,7 @@ * NB: contains nulls! * * held_items[active_hand_index] is the actively held item, but please use - * get_active_held_item() instead, because OOP + * [get_active_held_item()][/mob/proc/get_active_held_item] instead, because OOP */ var/list/held_items = list() @@ -195,7 +195,7 @@ var/memory_throttle_time = 0 - var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly + var/list/alerts = list() /// contains [/obj/screen/alert only] // On /mob so clientless mobs will throw alerts properly var/list/screens = list() var/list/client_colours = list() var/hud_type = /datum/hud From 84b1dff5e03c3f69e7ce4cf6a6fa3c720a5c4767 Mon Sep 17 00:00:00 2001 From: ArcaneDefence Date: Thu, 27 Feb 2020 15:52:05 -0700 Subject: [PATCH 08/16] Update cigs_lighters.dm --- code/game/objects/items/cigs_lighters.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 0c6e2172f33..fd501938225 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -330,9 +330,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A Carp Classic brand cigarette. A small label on its side indicates that it does NOT contain carpotoxin." /obj/item/clothing/mask/cigarette/carp/Initialize() - if(prob(5)) - list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/carpotoxin = 3) //they lied - . = ..() + . = ..() + if(!prob(5)) + return + reagents?.add_reagent(/datum/reagent/toxin/carpotoxin , 3) // They lied /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." From 2675496ce7492262cf6813bfdc3c99833387b589 Mon Sep 17 00:00:00 2001 From: Farquaar <44147031+Farquaar@users.noreply.github.com> Date: Thu, 27 Feb 2020 22:10:28 -0500 Subject: [PATCH 09/16] Felinids "blither" --- code/modules/mob/living/carbon/human/species_types/felinid.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index f4e61847cb3..26666a926b4 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -2,7 +2,7 @@ /datum/species/human/felinid name = "Felinid" id = "felinid" - say_mod = "yaps" + say_mod = "blithers" limbs_id = "human" mutant_bodyparts = list("ears", "tail_human") From 87817d0984de9b8f66d04ea633b94e1b369789c5 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 27 Feb 2020 20:35:29 -0800 Subject: [PATCH 10/16] Automatic changelog generation for PR #49606 [ci skip] --- html/changelogs/AutoChangeLog-pr-49606.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49606.yml diff --git a/html/changelogs/AutoChangeLog-pr-49606.yml b/html/changelogs/AutoChangeLog-pr-49606.yml new file mode 100644 index 00000000000..c8345dd1bed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49606.yml @@ -0,0 +1,4 @@ +author: "Twaticus" +delete-after: True +changes: + - imageadd: "bola inhand sprites" From a1df9ff735db699bb652daea1392f1a2375b9881 Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Thu, 27 Feb 2020 20:37:02 -0800 Subject: [PATCH 11/16] Automatic changelog generation for PR #49596 [ci skip] --- html/changelogs/AutoChangeLog-pr-49596.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49596.yml diff --git a/html/changelogs/AutoChangeLog-pr-49596.yml b/html/changelogs/AutoChangeLog-pr-49596.yml new file mode 100644 index 00000000000..e5243ad5c50 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49596.yml @@ -0,0 +1,4 @@ +author: "ArcaneDefence" +delete-after: True +changes: + - bugfix: "The recipe for Carp Classic cigarettes has been brought up to company standards." From e8f0794d6c2b444653cb5712ccb9a245bd14864e Mon Sep 17 00:00:00 2001 From: Farquaar <44147031+Farquaar@users.noreply.github.com> Date: Fri, 28 Feb 2020 07:37:18 -0500 Subject: [PATCH 12/16] Felinids "meow" --- code/modules/mob/living/carbon/human/species_types/felinid.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index 26666a926b4..20926b5dce9 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -2,7 +2,7 @@ /datum/species/human/felinid name = "Felinid" id = "felinid" - say_mod = "blithers" + say_mod = "meows" limbs_id = "human" mutant_bodyparts = list("ears", "tail_human") From 063d9bd0c785c552c933638de1c044fb1f0c409c Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 28 Feb 2020 04:53:18 -0800 Subject: [PATCH 13/16] Automatic changelog generation for PR #49555 [ci skip] --- html/changelogs/AutoChangeLog-pr-49555.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49555.yml diff --git a/html/changelogs/AutoChangeLog-pr-49555.yml b/html/changelogs/AutoChangeLog-pr-49555.yml new file mode 100644 index 00000000000..cb6bd9f6477 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49555.yml @@ -0,0 +1,4 @@ +author: "Farquaar" +delete-after: True +changes: + - tweak: "Felinid speech is now audibly distinct from human speech." From 2e0a2257ebe8182097fab3f7bacc8418fc3fbe3e Mon Sep 17 00:00:00 2001 From: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Date: Fri, 28 Feb 2020 22:28:42 -0800 Subject: [PATCH 14/16] Makes the tesla gun more METAL (#49470) * Adds fun * Makes it hurt * Makes mechs hit harder * Removes stun --- .../projectiles/projectile/energy/tesla.dm | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/code/modules/projectiles/projectile/energy/tesla.dm b/code/modules/projectiles/projectile/energy/tesla.dm index b858365445b..0bce20a3d23 100644 --- a/code/modules/projectiles/projectile/energy/tesla.dm +++ b/code/modules/projectiles/projectile/energy/tesla.dm @@ -2,24 +2,20 @@ name = "tesla bolt" icon_state = "tesla_projectile" impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser - var/chain + damage = 10 //A worse lasergun var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE var/zap_range = 3 var/power = 10000 -/obj/projectile/energy/tesla/fire(setAngle) - if(firer) - chain = firer.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY) - ..() - /obj/projectile/energy/tesla/on_hit(atom/target) . = ..() - tesla_zap(target, zap_range, power, zap_flags) + tesla_zap(src, zap_range, power, zap_flags) qdel(src) -/obj/projectile/energy/tesla/Destroy() - QDEL_NULL(chain) - return ..() +/obj/projectile/energy/tesla/process() + . = ..() + //Many coders have given their blood for this speed + tesla_zap(src, zap_range, power, zap_flags) /obj/projectile/energy/tesla/revolver name = "energy orb" @@ -27,3 +23,4 @@ /obj/projectile/energy/tesla/cannon name = "tesla orb" power = 20000 + damage = 15 //Mech man big From 6de320130e6c16892ee84d27492fe69b0dfa8cfa Mon Sep 17 00:00:00 2001 From: tgstation-server Date: Fri, 28 Feb 2020 22:28:45 -0800 Subject: [PATCH 15/16] Automatic changelog generation for PR #49470 [ci skip] --- html/changelogs/AutoChangeLog-pr-49470.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-49470.yml diff --git a/html/changelogs/AutoChangeLog-pr-49470.yml b/html/changelogs/AutoChangeLog-pr-49470.yml new file mode 100644 index 00000000000..2f3e08eac0a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-49470.yml @@ -0,0 +1,5 @@ +author: "LemonInTheDark" +delete-after: True +changes: + - tweak: "The tesla revolver/cannon's projectiles now arc while in flight." + - balance: "The projectiles now deal light burn damage on hit." From 5a4a3771da84b8cfcecebea86119e28afc5701dd Mon Sep 17 00:00:00 2001 From: Aleksej Komarov Date: Sat, 29 Feb 2020 09:20:38 +0200 Subject: [PATCH 16/16] tgui: Update dependencies (#49496) * Update tgui dependencies * Handle the missing stack trace in case of IE8 * Remove the now useless pow polyfill for sass * Inferno fixed some interesting bug --- tgui/packages/tgui-dev-server/link/server.js | 9 +- tgui/packages/tgui/interfaces/Bepis.js | 4 +- tgui/packages/tgui/interfaces/Canvas.js | 2 +- .../tgui/interfaces/GravityGenerator.js | 2 +- tgui/packages/tgui/interfaces/HypnoChair.js | 2 +- tgui/packages/tgui/interfaces/LanguageMenu.js | 2 +- tgui/packages/tgui/interfaces/Launchpad.js | 2 +- tgui/packages/tgui/interfaces/MiningVendor.js | 8 +- tgui/packages/tgui/interfaces/NaniteRemote.js | 10 +- .../tgui/interfaces/NtosAiRestorer.js | 2 +- tgui/packages/tgui/interfaces/NtosCard.js | 2 - .../tgui/interfaces/NtosConfiguration.js | 2 +- .../tgui/interfaces/NtosCrewManifest.js | 2 +- .../tgui/interfaces/OperatingComputer.js | 2 +- tgui/packages/tgui/interfaces/Roulette.js | 8 +- .../packages/tgui/interfaces/TransferValve.js | 6 +- tgui/packages/tgui/interfaces/Vending.js | 8 +- tgui/packages/tgui/public/tgui.bundle.js | 4 +- tgui/packages/tgui/styles/functions.scss | 35 +- tgui/packages/tgui/webpack.config.js | 16 +- tgui/yarn.lock | 2174 ++++++++--------- 21 files changed, 1114 insertions(+), 1188 deletions(-) diff --git a/tgui/packages/tgui-dev-server/link/server.js b/tgui/packages/tgui-dev-server/link/server.js index 4d0e22d3413..652d403973f 100644 --- a/tgui/packages/tgui-dev-server/link/server.js +++ b/tgui/packages/tgui-dev-server/link/server.js @@ -29,10 +29,13 @@ export const broadcastMessage = (link, msg) => { } }; -const deserializeObject = obj => { - return JSON.parse(obj, (key, value) => { +const deserializeObject = str => { + return JSON.parse(str, (key, value) => { if (typeof value === 'object' && value !== null) { if (value.__error__) { + if (!value.stack) { + return value.string; + } return retrace(value.stack); } if (value.__number__) { @@ -102,7 +105,7 @@ const setupHttpLink = () => { body += chunk.toString(); }); req.on('end', () => { - const msg = JSON.parse(body); + const msg = deserializeObject(body); handleLinkMessage(msg); res.end(); }); diff --git a/tgui/packages/tgui/interfaces/Bepis.js b/tgui/packages/tgui/interfaces/Bepis.js index bc47d59ca77..71ba5c8cb64 100644 --- a/tgui/packages/tgui/interfaces/Bepis.js +++ b/tgui/packages/tgui/interfaces/Bepis.js @@ -87,10 +87,10 @@ export const Bepis = props => {
- Average technology cost: {data.mean_value} + Average technology cost: {data.mean_value} - Current chance of Success: Est. {data.success_estimate}% + Current chance of Success: Est. {data.success_estimate}% {data.error_name && ( diff --git a/tgui/packages/tgui/interfaces/Canvas.js b/tgui/packages/tgui/interfaces/Canvas.js index b30639697c2..9571d94e225 100644 --- a/tgui/packages/tgui/interfaces/Canvas.js +++ b/tgui/packages/tgui/interfaces/Canvas.js @@ -73,7 +73,7 @@ class PaintCanvas extends Component { height={y_size || 300} {...rest} onClick={e => this.clickwrapper(e)}> - Canvas failed to render. + Canvas failed to render. ); } diff --git a/tgui/packages/tgui/interfaces/GravityGenerator.js b/tgui/packages/tgui/interfaces/GravityGenerator.js index 9fbf263a381..080ac327e19 100644 --- a/tgui/packages/tgui/interfaces/GravityGenerator.js +++ b/tgui/packages/tgui/interfaces/GravityGenerator.js @@ -55,7 +55,7 @@ export const GravityGenerator = props => { )} {charging_state === 2 && ( - Discharging + Discharging )} diff --git a/tgui/packages/tgui/interfaces/HypnoChair.js b/tgui/packages/tgui/interfaces/HypnoChair.js index 00ef2e819dc..6348ca272e0 100644 --- a/tgui/packages/tgui/interfaces/HypnoChair.js +++ b/tgui/packages/tgui/interfaces/HypnoChair.js @@ -12,7 +12,7 @@ export const HypnoChair = props => { The Enhanced Interrogation Chamber is designed to induce a deep-rooted trance trigger into the subject. Once the procedure is complete, by using the implanted trigger phrase, the authorities are able to - ensure immediate and complete obedience and truthfulness. + ensure immediate and complete obedience and truthfulness.
{ )}> {language.desc} {' '} - Key: ,{language.key} + Key: ,{language.key} {' '} {!!language.shadow && '(gained from mob)'} {' '} diff --git a/tgui/packages/tgui/interfaces/Launchpad.js b/tgui/packages/tgui/interfaces/Launchpad.js index e96ab310f85..781f6b3dd2f 100644 --- a/tgui/packages/tgui/interfaces/Launchpad.js +++ b/tgui/packages/tgui/interfaces/Launchpad.js @@ -154,7 +154,7 @@ export const LaunchpadControl = props => { inline bold mr={1}> - Y: + Y: {
{data.user && ( - Welcome, {data.user.name || "Unknown"}, + Welcome, {data.user.name || "Unknown"}, {' '} {data.user.job || "Unemployed"}!
- Your balance is {data.user.points} mining points. + Your balance is {data.user.points} mining points.
) || ( - No registered ID card!
- Please contact your local HoP! + No registered ID card!
+ Please contact your local HoP!
)}
diff --git a/tgui/packages/tgui/interfaces/NaniteRemote.js b/tgui/packages/tgui/interfaces/NaniteRemote.js index ebe1a635858..9abc4c2dbd4 100644 --- a/tgui/packages/tgui/interfaces/NaniteRemote.js +++ b/tgui/packages/tgui/interfaces/NaniteRemote.js @@ -109,16 +109,16 @@ export const NaniteRemote = props => { - Name + Name - Mode + Mode - Code + Code - Relay + Relay {saved_settings.map(setting => ( @@ -156,7 +156,7 @@ export const NaniteRemote = props => {
) : ( - No settings currently saved + No settings currently saved )}
diff --git a/tgui/packages/tgui/interfaces/NtosAiRestorer.js b/tgui/packages/tgui/interfaces/NtosAiRestorer.js index ee68bbd5c41..a50bd41034b 100644 --- a/tgui/packages/tgui/interfaces/NtosAiRestorer.js +++ b/tgui/packages/tgui/interfaces/NtosAiRestorer.js @@ -61,7 +61,7 @@ export const NtosAiRestorer = props => { fontSize="20px" color="good" mt={1}> - RECONSTRUCTION IN PROGRESS + RECONSTRUCTION IN PROGRESS )}