From 37d1c469eac2ab0a040e995f498cf2c769915c86 Mon Sep 17 00:00:00 2001 From: Sishen Date: Fri, 1 May 2020 06:59:54 -0600 Subject: [PATCH 1/9] hnmhm cultplain?? --- code/modules/uplink/uplink_items/uplink_roles.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/uplink/uplink_items/uplink_roles.dm b/code/modules/uplink/uplink_items/uplink_roles.dm index 28479f8da7..da25cf5298 100644 --- a/code/modules/uplink/uplink_items/uplink_roles.dm +++ b/code/modules/uplink/uplink_items/uplink_roles.dm @@ -89,6 +89,7 @@ desc = "A reverse engineered clockwork slab. Is this really a good idea?." item = /obj/item/clockwork/slab/traitor cost = 20 + player_minimum = 20 refundable = TRUE restricted_roles = list("Chaplain") @@ -97,6 +98,7 @@ desc = "A replica of a Nar'sian tome. This is probably a bad idea.." item = /obj/item/tome/traitor cost = 20 + player_minimum = 20 refundable = TRUE restricted_roles = list("Chaplain") From a1f252d5588e255d12ff3224e7cad4a2f00c19ca Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 1 May 2020 19:48:27 +0200 Subject: [PATCH 2/9] Fixing several reported issues. --- code/datums/elements/mob_holder.dm | 2 +- code/game/objects/items/devices/multitool.dm | 5 ++--- .../sprite_accessories/_sprite_accessories.dm | 1 - .../new_player/sprite_accessories/ears.dm | 17 +++++++++++------ .../mob/living/carbon/human/species.dm | 16 ---------------- .../mob/living/carbon/monkey/combat.dm | 8 +++----- .../surgery/bodyparts/dismemberment.dm | 2 +- icons/mob/blob.dmi | Bin 1294948 -> 1294952 bytes icons/mob/mutant_bodyparts.dmi | Bin 33996 -> 33997 bytes icons/obj/advancedtools.dmi | Bin 2446 -> 2474 bytes icons/obj/items_cyborg.dmi | Bin 2344 -> 2461 bytes modular_citadel/icons/mob/mam_ears.dmi | Bin 10613 -> 10605 bytes 12 files changed, 18 insertions(+), 33 deletions(-) diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm index a5c6e2725d..d770e0f30d 100644 --- a/code/datums/elements/mob_holder.dm +++ b/code/datums/elements/mob_holder.dm @@ -164,7 +164,7 @@ release() /obj/item/clothing/head/mob_holder/mob_can_equip(mob/living/M, mob/living/equipper, slot, disable_warning = FALSE, bypass_equip_delay_self = FALSE) - if(!ishuman(M)) //monkeys holding monkeys holding monkeys... + if(M == held_mob || !ishuman(M)) //monkeys holding monkeys holding monkeys... return FALSE return ..() diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 63092b5a13..4d0ed362fc 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -68,10 +68,9 @@ update_icon() /obj/item/multitool/update_icon_state() + icon_state = initial(icon_state) if(selected_io) - icon_state = "multitool_red" - else - icon_state = "multitool" + icon_state += "_red" /obj/item/multitool/proc/wire(var/datum/integrated_io/io, mob/user) if(!io.holder.assembly) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm index ab278b2e82..0b25132e00 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm @@ -55,7 +55,6 @@ var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations var/gender_specific //Something that can be worn by either gender, but looks different on each var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none. - var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears. var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects var/dimension_x = 32 var/dimension_y = 32 diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm index c91bd633a5..3ba1e8b3b4 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -29,9 +29,10 @@ /datum/sprite_accessory/ears/human/bigwolfinner name = "Big Wolf (ALT)" icon_state = "bigwolfinner" - hasinner = 1 icon = 'modular_citadel/icons/mob/mam_ears.dmi' color_src = MATRIXED + extra = TRUE + extra_color_src = NONE /datum/sprite_accessory/ears/human/bigwolfdark name = "Dark Big Wolf" @@ -42,15 +43,17 @@ /datum/sprite_accessory/ears/human/bigwolfinnerdark name = "Dark Big Wolf (ALT)" icon_state = "bigwolfinnerdark" - hasinner = 1 icon = 'modular_citadel/icons/mob/mam_ears.dmi' color_src = MATRIXED + extra = TRUE + extra_color_src = NONE /datum/sprite_accessory/ears/cat name = "Cat" icon_state = "cat" - hasinner = 1 color_src = HAIR + extra = TRUE + extra_color_src = NONE /datum/sprite_accessory/ears/human/cow name = "Cow" @@ -196,7 +199,8 @@ /datum/sprite_accessory/mam_ears/bigwolfinner name = "Big Wolf (ALT)" icon_state = "bigwolfinner" - hasinner = 1 + extra = TRUE + extra_color_src = NONE /datum/sprite_accessory/mam_ears/bigwolfdark name = "Dark Big Wolf" @@ -205,12 +209,13 @@ /datum/sprite_accessory/mam_ears/bigwolfinnerdark name = "Dark Big Wolf (ALT)" icon_state = "bigwolfinnerdark" - hasinner = 1 + extra = TRUE + extra_color_src = NONE /datum/sprite_accessory/mam_ears/cat name = "Cat" icon_state = "cat" - hasinner = 1 + icon = 'icons/mob/mutant_bodyparts.dmi' color_src = HAIR /datum/sprite_accessory/mam_ears/catbig diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 683c3e18fd..e3a7b72f8b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -909,22 +909,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) standing += accessory_overlay - if(S.hasinner) - var/mutable_appearance/inner_accessory_overlay = mutable_appearance(S.icon, layer = -layer) - if(S.gender_specific) - inner_accessory_overlay.icon_state = "[g]_[bodypart]inner_[S.icon_state]_[layertext]" - else - inner_accessory_overlay.icon_state = "m_[bodypart]inner_[S.icon_state]_[layertext]" - - if(S.center) - inner_accessory_overlay = center_image(inner_accessory_overlay, S.dimension_x, S.dimension_y) - - if(OFFSET_MUTPARTS in H.dna.species.offset_features) - inner_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1] - inner_accessory_overlay.pixel_y += H.dna.species.offset_features[OFFSET_MUTPARTS][2] - - standing += inner_accessory_overlay - if(S.extra) //apply the extra overlay, if there is one var/mutable_appearance/extra_accessory_overlay = mutable_appearance(S.icon, layer = -layer) if(S.gender_specific) diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index a06d65ad4b..1b0856bfcd 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -111,7 +111,7 @@ if(pickupTarget) if(restrained() || blacklistItems[pickupTarget] || HAS_TRAIT(pickupTarget, TRAIT_NODROP)) pickupTarget = null - else + else if(!isobj(loc) || istype(loc, /obj/item/clothing/head/mob_holder)) pickupTimer++ if(pickupTimer >= 4) blacklistItems[pickupTarget] ++ @@ -126,10 +126,8 @@ pickupTarget = null pickupTimer = 0 else if(ismob(pickupTarget.loc)) // in someones hand - if(istype(pickupTarget, /obj/item/clothing/head/mob_holder/)) - var/obj/item/clothing/head/mob_holder/h = pickupTarget - if(h && h.held_mob==src) - return//dont let them pickpocket themselves + if(istype(pickupTarget, /obj/item/clothing/head/mob_holder)) + return//dont let them pickpocket themselves or hold other monkys. var/mob/M = pickupTarget.loc if(!pickpocketing) pickpocketing = TRUE diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 66bca919c4..59cfcccde1 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -295,6 +295,7 @@ O.Insert(C) update_bodypart_damage_state() + update_disabled() C.updatehealth() C.update_body() @@ -302,7 +303,6 @@ C.update_damage_overlays() C.update_mobility() - /obj/item/bodypart/head/attach_limb(mob/living/carbon/C, special) //Transfer some head appearance vars over if(brain) diff --git a/icons/mob/blob.dmi b/icons/mob/blob.dmi index 6964160c042f7f5d258de17430c8614deb9f38d5..a197581533c055a36e286bd090c1f9b6eca3f4f8 100644 GIT binary patch delta 536 zcmaFT;{T$>e}YQ=rmB#L5|`BC)N?^esUFcL`~J#Z>6n^T-khn>So7yu_Dp-{A5nGd%{D}=Kg6sR8^o&V z^EgmK#ygK?iGk-KhlEIu;<^iMk}V=^(Vn+`t}ih#-m#uN@qqWzdd1dEi9Z_K+<7&7 z-hVayI6LpoCEvphi&NA+5^cKFF6zvRn8;#ue0vyA`@|<=i9)4%+6w8_VG8fLm%Dau zN{_lPR~+=h;<1=^r`7bMt2(MT{Hgi7;m!oBuUmavXGu*>j^E>S>Er)sUX{SVGmb?n zzWni{`S+sfF^^{VJYQ0Caa~A#(L(JQ| z+Fc6&ZXk5$(($tQ*Pbzb|8-)|w)abKdz~t;TXjS|Bi+_+B~zo%F0PHLXFVSlzZ94@ zn^ou9>JQ?I!6)RFOZctg2m

cM7az0ZdKI}_3L z$(NLJ>xP{1lmv^%V%lG-rXSOq7`fq1&EE??3-|PG_2o1*Giu&g;odm?fBsd$j;q;H z_W$0xe3`>JgJbT(Ev~bJPPXXPPxO8IYhJR{-}Rk|i|m8)q-wY}E$Q{r>RfY@C-wWq ztc~|-f3E)al`a43L-{a?fTO>A*L?kdf8)oz{xfNOQ?>+d|Mk-R@6Rm)KVDB=e%I-* z>x1>Z%ZpE!+cb+@S>$@N+`oF6>+D5OHDCIdB`!u%&L`{**Tc6r@8M^*mol< zp);4Rm*rnelj-{9w02wmQg7BYb?eX!;Vs+c*jF_$i!O7@@id-dpfh*!+eBxx-*bO+ zE7+cp`(XS(y7@k1`+Y_bW&&bnAZ7t#Rv=~rVs;?r0Afxc<^p1FAm#yLULfWJVtybN Q0AfKP7TSKFQMmH}0024sN&o-= diff --git a/icons/mob/mutant_bodyparts.dmi b/icons/mob/mutant_bodyparts.dmi index 2f7f9b5be91f464a907cc24e72581d74d4359190..9c531a3df26d0fa797558d558da4e76f2a41ce68 100644 GIT binary patch delta 507 zcmVne!p0X z@?nwxMjy1Zq7b+5Kjhg?*HMW=e7wmsg<7iEe+dyHib7m9RRnFS&^Q-WbvOUESe93L zR%;(bA#U?*|k9NtDwNQ)tB-+A)B6m@UF8piwFvQYqV66+^rLko#7bY5lHdTd##+ep$f`* zY9$9kH?2VyvhKV=>U?^{L&JI=tTgBow`k+FG0cje7)DxPZ`Vi@aoxkp>&2 z|1q49ETM5$vR%em$=8f3>ltL};IRX?YJwla%GLX-0l(E&hNpc*QEbM4qc5#yyp@5T zSXXGwew>w#(kBr?n;l5XiRE*i)o5TZ3Nd^4;*)0{ciPqi;Vlfdi}|t?<-;QX3+Fa-JeviJgtI;Zj)J-p{VxCj delta 506 zcmVn{;*hz z@^O*>kr<43q7XM9KjqoZ)KQBD8%d>bpPw;@;8;Kqfru>q65Sd*)bwJLKIrFm4Vy39-@g>C}At{ z-*dBbv4itntbzt?tK0GiA)B6mK;OBVMFb7lTBCF%ck2XXXE?@p1X6tTUTcpoR6%>B zR&pRr(^|rDJwB?i#BMiWmf#mF#38x;HiVe1%%c($xG%KX=Eem ze+(xiOK81QY?t*;@in8$dI4EFcq=U?A7`bb^hrc8b_a@bV)>S5wY0Dog_wPK^~p1oJLBqs@E3N?d!iFgK?%Z7lsw^N zl_2~?$rDa%3Bo5$p8js^Kq=!CZEKAw^9{k^GDzu}u$aO9nMg5l3IAan!<+p5j={a3 zNRhAv`fDlyL$wC_P38qm;9WAu5uBuqa}rt9VFsl9zP>SoOR+BGa5)rxbZck>>$cqA wuCzxtBloChYDqq^9RWOt>Wpo?JNNvxm@i9FJ}&aVKeuw#pe3hivp)ikf+Upsf&c&j diff --git a/icons/obj/advancedtools.dmi b/icons/obj/advancedtools.dmi index 974202dd58fd66882c1e24c2fbd2c0fc85419d44..19240a60eb4e8464588331abef7ee46309dd2264 100644 GIT binary patch delta 2464 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 Bh|~Z8 diff --git a/icons/obj/items_cyborg.dmi b/icons/obj/items_cyborg.dmi index a4bd75f7e51517d6e97e634cf7ee61b32a3eb9f7..769d5492c64ad8a7027401a2cef929e02d8f77e4 100644 GIT binary patch delta 2239 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 Date: Fri, 1 May 2020 19:50:53 +0200 Subject: [PATCH 3/9] leftovers. --- modular_citadel/icons/mob/mam_ears.dmi | Bin 10605 -> 10453 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modular_citadel/icons/mob/mam_ears.dmi b/modular_citadel/icons/mob/mam_ears.dmi index 55d41e33f59f31d80b345892e629602bf6668fe2..a3f09819f25890acbcc3d9dc2bff60b154efed80 100644 GIT binary patch literal 10453 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 literal 10605 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 Date: Fri, 1 May 2020 21:08:50 +0200 Subject: [PATCH 4/9] bumping up mapmerge requirements.txt --- tools/mapmerge2/requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mapmerge2/requirements.txt b/tools/mapmerge2/requirements.txt index d24cb40dcc..41ddc96c17 100644 --- a/tools/mapmerge2/requirements.txt +++ b/tools/mapmerge2/requirements.txt @@ -1,3 +1,3 @@ -pygit2==0.27.2 +pygit2==1.0.1 bidict==0.13.1 -Pillow==6.2.0 +Pillow==7.0.0 From f62aaddb1de9f59e11a7b038fdfdbd37a132eb5a Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Fri, 1 May 2020 23:22:23 +0200 Subject: [PATCH 5/9] Fixing some runtimes with kevinz skills and holodeck hotspots. --- code/datums/skills/_skill_holder.dm | 6 +++--- .../atmospherics/environmental/LINDA_fire.dm | 16 ++++++++++------ code/modules/holodeck/holo_effect.dm | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/code/datums/skills/_skill_holder.dm b/code/datums/skills/_skill_holder.dm index 352adc46ff..e16804ab7f 100644 --- a/code/datums/skills/_skill_holder.dm +++ b/code/datums/skills/_skill_holder.dm @@ -15,7 +15,7 @@ CRASH("Invalid get_skill_value call. Use typepaths.") //until a time when we somehow need text ids for dynamic skills, I'm enforcing this. if(!skills) return null - return skills[skill] + return LAZYACCESS(skills, skill) /** * Grabs our affinity for a skill. !!This is a multiplier!! @@ -25,7 +25,7 @@ CRASH("Invalid get_skill_affinity call. Use typepaths.") //until a time when we somehow need text ids for dynamic skills, I'm enforcing this. if(!skills) return 1 - var/affinity = skill_affinities[skill] + var/affinity = LAZYACCESS(skill_affinities, skill) if(isnull(affinity)) return 1 return affinity @@ -39,7 +39,7 @@ LAZYINITLIST(skills) value = sanitize_skill_value(skill, value) if(!isnull(value)) - skills[skill] = value + LAZYSET(skills, skill, value) return TRUE return FALSE diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index c47c4a44af..06d73867f8 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -9,7 +9,7 @@ return -/turf/open/hotspot_expose(exposed_temperature, exposed_volume, soh) +/turf/open/hotspot_expose(exposed_temperature, exposed_volume, soh = FALSE, holo = FALSE) var/datum/gas_mixture/air_contents = return_air() if(!air_contents) return 0 @@ -35,7 +35,7 @@ if(oxy < 0.5) return 0 - active_hotspot = new /obj/effect/hotspot(src) + active_hotspot = new /obj/effect/hotspot(src, holo) active_hotspot.temperature = exposed_temperature*50 active_hotspot.volume = exposed_volume*25 @@ -67,8 +67,10 @@ var/bypassing = FALSE var/visual_update_tick = 0 -/obj/effect/hotspot/Initialize() +/obj/effect/hotspot/Initialize(mapload, holo = FALSE) . = ..() + if(holo) + flags_1 |= HOLOGRAM_1 SSair.hotspots += src perform_exposure() setDir(pick(GLOB.cardinals)) @@ -192,7 +194,8 @@ if(bypassing) icon_state = "3" - location.burn_tile() + if(!(flags_1 & HOLOGRAM_1)) + location.burn_tile() //Possible spread due to radiated heat if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD) @@ -200,7 +203,7 @@ for(var/t in location.atmos_adjacent_turfs) var/turf/open/T = t if(!T.active_hotspot) - T.hotspot_expose(radiated_temperature, CELL_VOLUME/4) + T.hotspot_expose(radiated_temperature, CELL_VOLUME/4, flags_1 & HOLOGRAM_1) else if(volume > CELL_VOLUME*0.4) @@ -224,7 +227,8 @@ var/turf/open/T = loc if(istype(T) && T.active_hotspot == src) T.active_hotspot = null - DestroyTurf() + if(!(flags_1 & HOLOGRAM_1)) + DestroyTurf() return ..() /obj/effect/hotspot/proc/DestroyTurf() diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index 7c3754b616..09dcd7fa64 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -62,7 +62,7 @@ s.set_up(3, 1, T) s.start() T.temperature = 5000 - T.hotspot_expose(50000,50000,1) + T.hotspot_expose(50000, 50000, TRUE, TRUE) From b383066e57ccb019380fe7770e12f9ee17709d39 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 2 May 2020 00:00:49 +0200 Subject: [PATCH 6/9] Replacing the MATERIAL_NO_EFFECTS flag with MATERIAL_EFFECTS. --- code/__DEFINES/materials.dm | 2 +- code/game/atoms.dm | 2 +- code/game/mecha/equipment/tools/medical_tools.dm | 1 - code/game/mecha/mech_fabricator.dm | 1 - code/game/objects/items.dm | 8 -------- code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/stacks/sheets/glass.dm | 3 --- code/game/objects/items/stacks/sheets/mineral.dm | 1 - code/game/objects/items/stacks/sheets/sheet_types.dm | 1 - code/game/objects/items/stacks/tiles/tile_mineral.dm | 1 - code/game/objects/objs.dm | 8 ++++++++ code/game/objects/structures/beds_chairs/chair.dm | 4 ++-- code/game/objects/structures/tables_racks.dm | 2 +- code/modules/clothing/head/helmet.dm | 2 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/mining/ores_coins.dm | 3 +-- code/modules/reagents/reagent_containers/glass.dm | 1 - code/modules/research/machinery/_production.dm | 8 +++----- 18 files changed, 20 insertions(+), 32 deletions(-) diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm index 89553d9c6c..e2ae22345f 100644 --- a/code/__DEFINES/materials.dm +++ b/code/__DEFINES/materials.dm @@ -7,5 +7,5 @@ /// Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes. #define MATERIAL_COLOR (1<<0) #define MATERIAL_ADD_PREFIX (1<<1) -#define MATERIAL_NO_EFFECTS (1<<2) +#define MATERIAL_EFFECTS (1<<2) #define MATERIAL_AFFECT_STATISTICS (1<<3) \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b71f51bd07..afa8cfed3b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -965,7 +965,7 @@ Proc for attack log creation, because really why not for(var/x in materials) var/datum/material/custom_material = SSmaterials.GetMaterialRef(x) - if(!(material_flags & MATERIAL_NO_EFFECTS)) + if(material_flags & MATERIAL_EFFECTS) custom_material.on_applied(src, materials[custom_material] * multiplier * material_modifier, material_flags) custom_materials[custom_material] += materials[x] * multiplier diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 7ff8696084..4a4d58ea73 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -530,7 +530,6 @@ equip_cooldown = 0 var/obj/item/gun/medbeam/mech/medigun custom_materials = list(/datum/material/iron = 15000, /datum/material/glass = 8000, /datum/material/plasma = 3000, /datum/material/gold = 8000, /datum/material/diamond = 2000) - material_flags = MATERIAL_NO_EFFECTS /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam/Initialize() . = ..() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index fb321665bc..93228c7fee 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -188,7 +188,6 @@ var/location = get_step(src,(dir)) var/obj/item/I = new D.build_path(location) - I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this. I.set_custom_materials(res_coef) say("\The [I] is complete.") being_built = null diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9cb03c6a85..f64be72cfa 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -897,11 +897,3 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) . = ..() if(var_name == NAMEOF(src, slowdown)) set_slowdown(var_value) //don't care if it's a duplicate edit as slowdown'll be set, do it anyways to force normal behavior. - -//Called when the object is constructed by an autolathe -//Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes -/obj/item/proc/autolathe_crafted(obj/machinery/autolathe/A) - return - -/obj/item/proc/rnd_crafted(obj/machinery/rnd/production/P) - return diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 011837d48b..c2db529675 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -648,7 +648,7 @@ item_state = "mace_greyscale" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color. + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS //Material type changes the prefix as well as the color. custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace. slot_flags = ITEM_SLOT_BELT force = 14 diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index c8ee6b05c7..fa218c5caa 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -109,7 +109,6 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ merge_type = /obj/item/stack/sheet/plasmaglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10) tableVariant = /obj/structure/table/plasmaglass - material_flags = MATERIAL_NO_EFFECTS shard_type = /obj/item/shard/plasma /obj/item/stack/sheet/plasmaglass/fifty @@ -209,7 +208,6 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT, /datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5,) armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF - material_flags = MATERIAL_NO_EFFECTS merge_type = /obj/item/stack/sheet/plasmarglass grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10) point_value = 23 @@ -259,7 +257,6 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( item_state = "sheet-plastitaniumglass" custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) - material_flags = MATERIAL_NO_EFFECTS resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plastitaniumglass shard_type = /obj/item/shard diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 4a7156db72..d28ae52b52 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -324,7 +324,6 @@ GLOBAL_LIST_INIT(titanium_recipes, list ( \ custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT) point_value = 45 merge_type = /obj/item/stack/sheet/mineral/plastitanium - material_flags = MATERIAL_NO_EFFECTS /obj/item/stack/sheet/mineral/plastitanium/fifty amount = 50 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 6ddd7c136a..f19dbb2a6b 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -215,7 +215,6 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) point_value = 23 tableVariant = /obj/structure/table/reinforced - material_flags = MATERIAL_NO_EFFECTS /obj/item/stack/sheet/plasteel/get_main_recipes() . = ..() diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm index 50edc9d15a..1bcd8d72ca 100644 --- a/code/game/objects/items/stacks/tiles/tile_mineral.dm +++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm @@ -78,4 +78,3 @@ turf_type = /turf/open/floor/mineral/plastitanium mineralType = "plastitanium" custom_materials = list(/datum/material/titanium=250, /datum/material/plasma=250) - material_flags = MATERIAL_NO_EFFECTS \ No newline at end of file diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index d2d72193b7..033304c707 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -314,3 +314,11 @@ current_skin = choice icon_state = unique_reskin[choice] to_chat(M, "[src] is now skinned as '[choice]'.") + +//Called when the object is constructed by an autolathe +//Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes +/obj/proc/autolathe_crafted(obj/machinery/autolathe/A) + return + +/obj/proc/rnd_crafted(obj/machinery/rnd/production/P) + return diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index c593451c24..d3e8ecf0a6 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -153,7 +153,7 @@ ///Material chair /obj/structure/chair/greyscale icon_state = "chair_greyscale" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS item_chair = /obj/item/chair/greyscale buildstacktype = null //Custom mats handle this @@ -382,7 +382,7 @@ /obj/item/chair/greyscale icon_state = "chair_greyscale_toppled" item_state = "chair_greyscale" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS origin_type = /obj/structure/chair/greyscale /obj/item/chair/stool diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index bbdf6925f9..30e451aa14 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -211,7 +211,7 @@ /obj/structure/table/greyscale icon = 'icons/obj/smooth_structures/table_greyscale.dmi' icon_state = "table" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS buildstack = null //No buildstack, so generate from mat datums /* diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 9ad05efb7a..3d744effb0 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -243,7 +243,7 @@ icon_state = "knight_greyscale" item_state = "knight_greyscale" armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40) - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS //Can change color and add prefix /obj/item/clothing/head/helmet/skull name = "skull helmet" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8bd7ee741d..bbfab5fda7 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -285,7 +285,7 @@ icon_state = "knight_greyscale" item_state = "knight_greyscale" armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40) - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS //Can change color and add prefix /obj/item/clothing/suit/armor/vest/durathread name = "makeshift vest" diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index c7c34b0389..183b4812f2 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -70,7 +70,6 @@ singular_name = "uranium ore chunk" points = 30 custom_materials = list(/datum/material/uranium=MINERAL_MATERIAL_AMOUNT) - material_flags = MATERIAL_NO_EFFECTS refined_type = /obj/item/stack/sheet/mineral/uranium /obj/item/stack/ore/iron @@ -319,7 +318,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ throwforce = 2 w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron = 400) - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS var/string_attached var/list/sideslist = list("heads","tails") var/cooldown = 0 diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 800d66969d..368f476183 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -245,7 +245,6 @@ icon_state = "beakerbluespace" custom_materials = list(/datum/material/glass = 5000, /datum/material/plasma = 3000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000) volume = 300 - material_flags = MATERIAL_NO_EFFECTS amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300) container_HP = 5 diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 0550fa9334..2159e9eba3 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -95,11 +95,9 @@ message_admins("[ADMIN_LOOKUPFLW(user)] has built [amount] of [path] at a [src]([type]).") for(var/i in 1 to amount) var/obj/O = new path(get_turf(src)) - if(efficient_with(O.type) && isitem(O)) - var/obj/item/I = O - I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this. - I.set_custom_materials(matlist.Copy()) - I.rnd_crafted(src) + if(efficient_with(O.type)) + O.set_custom_materials(matlist.Copy()) + O.rnd_crafted(src) SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]")) investigate_log("[key_name(user)] built [amount] of [path] at [src]([type]).", INVESTIGATE_RESEARCH) From 400e2523c27a708b54edf77ab96026344007f4fd Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sat, 2 May 2020 00:55:18 +0200 Subject: [PATCH 7/9] paint remover issue webedit. --- code/game/objects/items/paint.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm index bdf9ab4270..cd65149f5d 100644 --- a/code/game/objects/items/paint.dm +++ b/code/game/objects/items/paint.dm @@ -112,7 +112,7 @@ . = ..() if(!proximity) return - if(!isturf(target) || !isobj(target)) + if(!isturf(target) && !isobj(target)) return if(target.color != initial(target.color)) target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) From 8bad031979a2391f6902ad219404e2f644fe5485 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Sat, 2 May 2020 01:01:14 +0200 Subject: [PATCH 8/9] Update shields.dm --- code/game/objects/items/shields.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index f7bf659f0a..fc7b196bd2 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -107,6 +107,8 @@ return TRUE /obj/item/shield/proc/user_shieldbash(mob/living/user, atom/target, harmful) + if(!(user.combat_flags & COMBAT_FLAG_COMBAT_ACTIVE)) //Combat mode has to be enabled for shield bashing + return FALSE if(!(shield_flags & SHIELD_CAN_BASH)) to_chat(user, "[src] can't be used to shield bash!") return FALSE From 202b517fa02d87c86264e2e54d879d4ef117f801 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Sat, 2 May 2020 02:05:56 +0200 Subject: [PATCH 9/9] Fixing more issues. --- code/__HELPERS/global_lists.dm | 23 ++++++++++ code/controllers/subsystem/atoms.dm | 23 ---------- code/game/machinery/recharger.dm | 7 ++- code/modules/clothing/under/_under.dm | 2 +- .../mining/equipment/regenerative_core.dm | 44 +++++++++---------- 5 files changed, 51 insertions(+), 48 deletions(-) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 38e25b04c5..bcfaa1bed2 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -88,6 +88,7 @@ init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes) INVOKE_ASYNC(GLOBAL_PROC, /proc/init_ref_coin_values) //so the current procedure doesn't sleep because of UNTIL() + INVOKE_ASYNC(GLOBAL_PROC, /proc/setupGenetics) //creates every subtype of prototype (excluding prototype) and adds it to list L. //if no list/L is provided, one is created. @@ -113,3 +114,25 @@ UNTIL(C.flags_1 & INITIALIZED_1) //we want to make sure the value is calculated and not null. GLOB.coin_values[path] = C.value qdel(C) + +/proc/setupGenetics() + var/list/mutations = subtypesof(/datum/mutation/human) + shuffle_inplace(mutations) + for(var/A in subtypesof(/datum/generecipe)) + var/datum/generecipe/GR = A + GLOB.mutation_recipes[initial(GR.required)] = initial(GR.result) + for(var/i in 1 to LAZYLEN(mutations)) + var/path = mutations[i] //byond gets pissy when we do it in one line + var/datum/mutation/human/B = new path () + B.alias = "Mutation #[i]" + GLOB.all_mutations[B.type] = B + GLOB.full_sequences[B.type] = generate_gene_sequence(B.blocks) + if(B.locked) + continue + if(B.quality == POSITIVE) + GLOB.good_mutations |= B + else if(B.quality == NEGATIVE) + GLOB.bad_mutations |= B + else if(B.quality == MINOR_NEGATIVE) + GLOB.not_good_mutations |= B + CHECK_TICK \ No newline at end of file diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 35feab6648..c1644df9c9 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -16,7 +16,6 @@ SUBSYSTEM_DEF(atoms) /datum/controller/subsystem/atoms/Initialize(timeofday) GLOB.fire_overlay.appearance_flags = RESET_COLOR - setupGenetics() //to set the mutations' sequence. initialized = INITIALIZATION_INNEW_MAPLOAD InitializeAtoms() return ..() @@ -107,28 +106,6 @@ SUBSYSTEM_DEF(atoms) old_initialized = SSatoms.old_initialized BadInitializeCalls = SSatoms.BadInitializeCalls -/datum/controller/subsystem/atoms/proc/setupGenetics() - var/list/mutations = subtypesof(/datum/mutation/human) - shuffle_inplace(mutations) - for(var/A in subtypesof(/datum/generecipe)) - var/datum/generecipe/GR = A - GLOB.mutation_recipes[initial(GR.required)] = initial(GR.result) - for(var/i in 1 to LAZYLEN(mutations)) - var/path = mutations[i] //byond gets pissy when we do it in one line - var/datum/mutation/human/B = new path () - B.alias = "Mutation #[i]" - GLOB.all_mutations[B.type] = B - GLOB.full_sequences[B.type] = generate_gene_sequence(B.blocks) - if(B.locked) - continue - if(B.quality == POSITIVE) - GLOB.good_mutations |= B - else if(B.quality == NEGATIVE) - GLOB.bad_mutations |= B - else if(B.quality == MINOR_NEGATIVE) - GLOB.not_good_mutations |= B - CHECK_TICK - /datum/controller/subsystem/atoms/proc/InitLog() . = "" for(var/path in BadInitializeCalls) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 24fd956677..c26c66a55f 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -53,6 +53,11 @@ using_power = FALSE update_icon() +/obj/machinery/recharger/Exited(atom/movable/M, atom/newloc) + . = ..() + if(charging == M) + setCharging() + /obj/machinery/recharger/attackby(obj/item/G, mob/user, params) if(istype(G, /obj/item/wrench)) if(charging) @@ -111,13 +116,11 @@ charging.update_icon() charging.forceMove(drop_location()) user.put_in_hands(charging) - setCharging(null) /obj/machinery/recharger/attack_tk(mob/user) if(charging) charging.update_icon() charging.forceMove(drop_location()) - setCharging(null) /obj/machinery/recharger/process() if(stat & (NOPOWER|BROKEN) || !anchored) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 0d08b59be9..c1c76e1091 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -101,7 +101,7 @@ if((flags_inv & HIDEACCESSORY) || (A.flags_inv & HIDEACCESSORY)) return TRUE - accessory_overlay = mutable_appearance('icons/mob/clothing/accessories.dmi', "attached_accessory.icon_state") + accessory_overlay = mutable_appearance('icons/mob/clothing/accessories.dmi', attached_accessory.icon_state) accessory_overlay.alpha = attached_accessory.alpha accessory_overlay.color = attached_accessory.color diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 47a1d84f58..7380a9135d 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -75,31 +75,31 @@ apply_healing_core(target, user) /obj/item/organ/regenerative_core/proc/apply_healing_core(atom/target, mob/user) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(inert) - to_chat(user, "[src] has decayed and can no longer be used to heal.") - return - else - if(H.stat == DEAD) - to_chat(user, "[src] are useless on the dead.") - return - if(H != user) - H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) - else - to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) - if(AmBloodsucker(H)) - H.revive(full_heal = FALSE) - else - H.revive(full_heal = TRUE) - qdel(src) - user.log_message("[user] used [src] to heal [H]! Wake the fuck up, Samurai!", LOG_ATTACK, color="green") //Logging for 'old' style legion core use, when clicking on a sprite of yourself or another. + if(!user || !ishuman(target)) + return + var/mob/living/carbon/human/H = target + if(inert) + to_chat(user, "[src] has decayed and can no longer be used to heal.") + return + if(H.stat == DEAD) + to_chat(user, "[src] are useless on the dead.") + return + if(H != user) + H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) + else + to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) + if(AmBloodsucker(H)) + H.revive(full_heal = FALSE) + else + H.revive(full_heal = TRUE) + qdel(src) + user.log_message("[user] used [src] to heal [H == user ? "[H.p_them()]self" : H]! Wake the fuck up, Samurai!", LOG_ATTACK, color="green") //Logging for 'old' style legion core use, when clicking on a sprite of yourself or another. /obj/item/organ/regenerative_core/attack_self(mob/user) //Knouli's first hack! Allows for the use of the core in hand rather than needing to click on the target, yourself, to selfheal. Its a rip of the proc just above - but skips on distance check and only uses 'user' rather than 'target' . = ..() - apply_healing_core(user) + apply_healing_core(user, user) /obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)