From 21ffcc031896debac3167a6f5f706270c52c89c4 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 18 Feb 2021 17:27:44 -0700 Subject: [PATCH 001/154] Update alien.dm --- code/modules/mob/living/simple_animal/hostile/alien.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 86467624b5..23187be3b3 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -36,7 +36,6 @@ see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE unique_name = 1 - gold_core_spawnable = NO_SPAWN death_sound = 'sound/voice/hiss6.ogg' deathmessage = "lets out a waning guttural screech, green blood bubbling from its maw..." @@ -97,6 +96,7 @@ /obj/item/stack/sheet/animalhide/xeno = 1) projectiletype = /obj/item/projectile/neurotox projectilesound = 'sound/weapons/pierce.ogg' + gold_core_spawnable = NO_SPAWN status_flags = 0 unique_name = 0 var/sterile = 1 From 3ef52e039f3105dab6acb41c4fc718301e633936 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 18 Feb 2021 17:29:40 -0700 Subject: [PATCH 002/154] Update alien.dm --- code/modules/mob/living/simple_animal/hostile/alien.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 23187be3b3..a61cd959cf 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -24,6 +24,7 @@ melee_damage_upper = 25 attack_verb_continuous = "slashes" attack_verb_simple = "slash" + gold_core_spawnable = HOSTILE_SPAWN speak_emote = list("hisses") bubble_icon = "alien" a_intent = INTENT_HARM From 81a222b90f139108bfc223ad6b4d7d97394fd16a Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sun, 28 Mar 2021 22:29:23 -0500 Subject: [PATCH 003/154] Update weaponry.dm adds Telescopic baseball bat and its telescopic functionalities. --- code/game/objects/items/weaponry.dm | 63 +++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 100cea7b9d..4a6affc5aa 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -911,6 +911,16 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 var/homerun_ready = 0 var/homerun_able = 0 total_mass = 2.7 //a regular wooden major league baseball bat weighs somewhere between 2 to 3.4 pounds, according to google + var/on_sound + var/on = TRUE // Are we on or off + var/on_icon_state // What is our sprite when turned on + var/off_icon_state // What is our sprite when turned off + var/on_item_state // What is our in-hand sprite when turned on + var/force_on // Damage when on + var/force_off // Damage when off + var/throwforce_on // Damage when on + var/throwforce_off // Damage when off + var/weight_class_on // What is the new size class when turned on /obj/item/melee/baseball_bat/Initialize() . = ..() @@ -992,6 +1002,59 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 force = 18 //Spear damage... throwforce = 30 +/obj/item/melee/baseball_bat/proc/get_on_description() + . = list() + .["local_on"] = "You extend the bat." + .["local_off"] = "You collapse the bat." + return . + +/obj/item/melee/baseball_bat/telescopic + name = "telescopic baseball bat" + desc = "A stealthy telescopic bat that can fit in a pocket when collapsed." + icon = 'icons/obj/items_and_weapons.dmi' + icon_state = "baseball_bat_telescopic_0" + lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' + item_state = null + w_class = WEIGHT_CLASS_SMALL + item_flags = NONE + force = 5 + throwforce = 10 + on = FALSE + on_sound = 'sound/weapons/batonextend.ogg' + on_icon_state = "baseball_bat_telescopic_1" + off_icon_state = "baseball_bat_telescopic_0" + on_item_state = "baseball_bat_telescopic" + force_on = 15 + force_off = 5 + throwforce_on = 20 + throwforce_off = 10 + weight_class_on = WEIGHT_CLASS_HUGE + total_mass = TOTAL_MASS_NORMAL_ITEM + +/obj/item/melee/baseball_bat/telescopic/attack_self(mob/user) + on = !on + var/list/desc = get_on_description() + if(on) + to_chat(user, desc["local_on"]) + icon_state = on_icon_state + item_state = on_item_state + w_class = weight_class_on + force = force_on + throwforce = throwforce_on + attack_verb = list("beat", "smacked") + else + to_chat(user, desc["local_off"]) + icon_state = off_icon_state + item_state = null //no sprite for concealment even when in hand + slot_flags = ITEM_SLOT_BELT + w_class = WEIGHT_CLASS_SMALL + force = force_off + throwforce = throwforce_off + attack_verb = list("drubbed", "beaned") + playsound(src.loc, on_sound, 50, 1) + add_fingerprint(user) + /obj/item/melee/flyswatter name = "flyswatter" desc = "Useful for killing pests of all sizes." From 7d19991765b03e7dd23d22ad20db72604f753f67 Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sun, 28 Mar 2021 22:35:26 -0500 Subject: [PATCH 004/154] Update uplink_stealth.dm Adds Telescopic Bat to uplink --- code/modules/uplink/uplink_items/uplink_stealth.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/uplink/uplink_items/uplink_stealth.dm b/code/modules/uplink/uplink_items/uplink_stealth.dm index 1bd75fa2b1..0ff9180576 100644 --- a/code/modules/uplink/uplink_items/uplink_stealth.dm +++ b/code/modules/uplink/uplink_items/uplink_stealth.dm @@ -7,6 +7,12 @@ When adding new entries to the file, please keep them sorted by category. */ +/datum/uplink_item/stealthy_weapons/telescopicbat + name = "Telescopic Baseball Bat" + desc = "A robust telescopic baseball bat that hits like a truck and can be consealed when collapsed." + item = /obj/item/melee/baseball_bat/telescopic + cost = 2 + /datum/uplink_item/stealthy_weapons/combatglovesplus name = "Combat Gloves Plus" desc = "A pair of gloves that are fireproof and shock resistant, however unlike the regular Combat Gloves this one uses nanotechnology \ From fe71135d7a5ebbe313f5533c7192a185eef9d455 Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sun, 28 Mar 2021 22:38:53 -0500 Subject: [PATCH 005/154] Add files via upload Updates item icons for Telescopic Bat --- icons/obj/items_and_weapons.dmi | Bin 127851 -> 128227 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 978ffbda27638d76e18b408e65458e3672b74db2..239a95ce5e1bb54ea39bde23026815164b5c4ea9 100644 GIT binary patch delta 21372 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 From 2a5d756034d7563631465d7a52ca028594c1c033 Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sun, 28 Mar 2021 22:40:50 -0500 Subject: [PATCH 006/154] Add files via upload Adds inhand sprites for Telescopic bat. --- icons/mob/inhands/weapons/melee_lefthand.dmi | Bin 2761 -> 2884 bytes icons/mob/inhands/weapons/melee_righthand.dmi | Bin 2804 -> 2965 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/inhands/weapons/melee_lefthand.dmi b/icons/mob/inhands/weapons/melee_lefthand.dmi index bd038883a0eb61c03d8e5b7bf94feb497c7d54af..7a645031bdb528b78f72fe6e7c5f56d47895c123 100644 GIT binary patch delta 2698 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 Z?*9Z%YN4p$J$?R3VrKH2G5M-<#NXDjN!$Pc delta 2575 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 From 753c25db6ad7d58ed73dbce72cc8589f1b1be786 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 29 Mar 2021 01:04:22 -0700 Subject: [PATCH 007/154] Update tgui.dm --- code/modules/tgui/tgui.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index b99783f67a..c6e5a99ac3 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -241,7 +241,7 @@ * Run an update cycle for this UI. Called internally by SStgui * every second or so. */ -/datum/tgui/process(delta_time, force = FALSE) +/datum/tgui/process(force = FALSE) if(closing) return var/datum/host = src_object.ui_host(user) From df4779dced2df3858f8e5a9dff2908c08696b6a9 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Mon, 29 Mar 2021 22:26:34 -0300 Subject: [PATCH 008/154] upload files --- code/modules/mining/lavaland/necropolis_chests.dm | 15 ++++++++++++++- .../carbon/human/species_types/lizardpeople.dm | 7 +++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index ba61169aac..5db8481806 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -989,7 +989,20 @@ switch(random) if(1) to_chat(user, "Your appearance morphs to that of a very small humanoid ash dragon! You get to look like a freak without the cool abilities.") - H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade") + H.dna.features["mcolor"] = "A02720" + H.dna.features["tail_lizard"] = "Dark Tiger" + H.dna.features["tail_human"] = "None" + H.dna.features["mam_snout"] = "Sharp" + H.dna.features["horns"] = "Curled" + H.dna.features["ears"] = "None" + H.dna.features["wings"] = "None" + H.dna.features["frills"] = "None" + H.dna.features["spines"] = "Long" + H.dna.features["body_markings"] = "Dark Tiger Body" + H.dna.features["legs"] = "Digitigrade" + H.dna.features["taur_body"] = "None" + H.hair_style = "Bald" + H.facial_hair_style = "Shaved" H.left_eye_color = "fee5a3" H.right_eye_color = "fee5a3" H.set_species(/datum/species/lizard) diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 6a9845079f..40645b13d4 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -62,9 +62,12 @@ if((C.dna.features["spines"] != "None" ) && (C.dna.features["tail_lizard"] == "None")) //tbh, it's kinda ugly for them not to have a tail yet have floating spines C.dna.features["tail_lizard"] = "Smooth" C.update_body() - if(C.dna.features["legs"] != "digitigrade") - C.dna.features["legs"] = "digitigrade" + if(C.dna.features["legs"] != "Digitigrade") + C.dna.features["legs"] = "Digitigrade" for(var/obj/item/bodypart/leggie in C.bodyparts) if(leggie.body_zone == BODY_ZONE_L_LEG || leggie.body_zone == BODY_ZONE_R_LEG) leggie.update_limb(FALSE, C) + if(C.dna.features["mam_snouts"] != "Sharp") + C.dna.features["mam_snouts"] = "Sharp" + C.update_body() return ..() From 04f90b749f6a72dfdfa097b41aa8c53c3032e975 Mon Sep 17 00:00:00 2001 From: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Tue, 30 Mar 2021 12:33:23 -0300 Subject: [PATCH 009/154] fixes material crates not shipping --- .../closets/secure/secure_closets.dm | 47 +++++++++++++++++++ code/modules/cargo/packs.dm | 5 +- code/modules/cargo/packs/materials.dm | 16 +++---- code/modules/cargo/packs/misc.dm | 2 +- code/modules/shuttle/supply.dm | 1 - 5 files changed, 60 insertions(+), 11 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 0c314d988c..5b78ca323c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -19,3 +19,50 @@ desc = "A sturdier card-locked storage unit used for bulky shipments." max_integrity = 500 // Same as crates. melee_min_damage = 25 // Idem. + +/obj/structure/closet/secure_closet/goodies/owned + name = "private locker" + desc = "A locker designed to only open for who purchased its contents." + ///Account of the person buying the crate if private purchasing. + var/datum/bank_account/buyer_account + ///Department of the person buying the crate if buying via the NIRN app. + var/datum/bank_account/department/department_account + ///Is the secure crate opened or closed? + var/privacy_lock = TRUE + ///Is the crate being bought by a person, or a budget card? + var/department_purchase = FALSE + +/obj/structure/closet/secure_closet/goodies/owned/examine(mob/user) + . = ..() + . += "It's locked with a privacy lock, and can only be unlocked by the buyer's ID." + +/obj/structure/closet/secure_closet/goodies/owned/Initialize(mapload, datum/bank_account/_buyer_account) + . = ..() + buyer_account = _buyer_account + if(istype(buyer_account, /datum/bank_account/department)) + department_purchase = TRUE + department_account = buyer_account + +/obj/structure/closet/secure_closet/goodies/owned/togglelock(mob/living/user, silent) + if(privacy_lock) + if(!broken) + var/obj/item/card/id/id_card = user.get_idcard(TRUE) + if(id_card) + if(id_card.registered_account) + if(id_card.registered_account == buyer_account || (department_purchase && (id_card.registered_account?.account_job?.paycheck_department) == (department_account.department_id))) + if(iscarbon(user)) + add_fingerprint(user) + locked = !locked + user.visible_message("[user] unlocks [src]'s privacy lock.", + "You unlock [src]'s privacy lock.") + privacy_lock = FALSE + update_icon() + else if(!silent) + to_chat(user, "Bank account does not match with buyer!") + else if(!silent) + to_chat(user, "No linked bank account detected!") + else if(!silent) + to_chat(user, "No ID detected!") + else if(!silent) + to_chat(user, "[src] is broken!") + else ..() diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 7ec3a775a5..db722436ca 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -21,7 +21,10 @@ /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) - C = new /obj/structure/closet/crate/secure/owned(A, paying_account) + if(ispath(crate_type, /obj/structure/closet/secure_closet/goodies)) + C = new /obj/structure/closet/secure_closet/goodies/owned(A, paying_account) + else + C = new /obj/structure/closet/crate/secure/owned(A, paying_account) C.name = "[crate_name] - Purchased by [paying_account.account_holder]" else C = new crate_type(A) diff --git a/code/modules/cargo/packs/materials.dm b/code/modules/cargo/packs/materials.dm index 86c6b114f0..8b063c1a30 100644 --- a/code/modules/cargo/packs/materials.dm +++ b/code/modules/cargo/packs/materials.dm @@ -14,56 +14,56 @@ ////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/materials/cardboard50 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "50 Cardboard Sheets" desc = "Create a bunch of boxes." cost = 300 //thrice their export value contains = list(/obj/item/stack/sheet/cardboard/fifty) /datum/supply_pack/materials/glass50 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "50 Glass Sheets" desc = "Let some nice light in with fifty glass sheets!" cost = 300 //double their export value contains = list(/obj/item/stack/sheet/glass/fifty) /datum/supply_pack/materials/metal50 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "50 Metal Sheets" desc = "Any construction project begins with a good stack of fifty metal sheets!" cost = 300 //double their export value contains = list(/obj/item/stack/sheet/metal/fifty) /datum/supply_pack/materials/plasteel20 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "20 Plasteel Sheets" desc = "Reinforce the station's integrity with twenty plasteel sheets!" cost = 4000 contains = list(/obj/item/stack/sheet/plasteel/twenty) /datum/supply_pack/materials/plastic50 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "50 Plastic Sheets" desc = "Build a limitless amount of toys with fifty plastic sheets!" cost = 200 // double their export contains = list(/obj/item/stack/sheet/plastic/twenty) /datum/supply_pack/materials/sandstone30 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "30 Sandstone Blocks" desc = "Neither sandy nor stoney, these thirty blocks will still get the job done." cost = 150 // five times their export contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty) /datum/supply_pack/materials/wood50 - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "50 Wood Planks" desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with fifty wooden planks!" cost = 400 // 6-7 planks shy from having equal import/export prices contains = list(/obj/item/stack/sheet/mineral/wood/twenty) /datum/supply_pack/materials/rcdammo - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "Large RCD ammo Single-Pack" desc = "A single large compressed RCD matter pack, to help with any holes or projects people might be working on." cost = 600 diff --git a/code/modules/cargo/packs/misc.dm b/code/modules/cargo/packs/misc.dm index 985c827e65..d72ee231a8 100644 --- a/code/modules/cargo/packs/misc.dm +++ b/code/modules/cargo/packs/misc.dm @@ -370,7 +370,7 @@ ////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/misc/carpet - goody = PACK_GOODY_PUBLIC + crate_type = /obj/structure/closet/secure_closet/goodies name = "Classic Carpet Single-Pack" desc = "Plasteel floor tiles getting on your nerves? This 50 units stack of extra soft carpet will tie any room together." cost = 200 diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 899e2b2f6f..60dfdd53c5 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -128,7 +128,6 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( var/value = 0 var/purchases = 0 var/list/goodies_by_buyer = list() // if someone orders more than GOODY_FREE_SHIPPING_MAX goodies, we upcharge to a normal crate so they can't carry around 20 combat shotties - for(var/datum/supply_order/SO in SSshuttle.shoppinglist) if(!empty_turfs.len) break From 2775543c9734078422075b5d2d6e6183c2a7999b Mon Sep 17 00:00:00 2001 From: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Wed, 31 Mar 2021 00:46:07 -0300 Subject: [PATCH 010/154] additional comments --- code/modules/cargo/packs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index db722436ca..f35e2d91ea 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -21,8 +21,8 @@ /datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account) var/obj/structure/closet/crate/C if(paying_account) - if(ispath(crate_type, /obj/structure/closet/secure_closet/goodies)) - C = new /obj/structure/closet/secure_closet/goodies/owned(A, paying_account) + if(ispath(crate_type, /obj/structure/closet/secure_closet/goodies)) // lets ensure private orders don't come in crates when the original one comes in lockers + C = new /obj/structure/closet/secure_closet/goodies/owned(A, paying_account) // that would lead to infinite money exploits else C = new /obj/structure/closet/crate/secure/owned(A, paying_account) C.name = "[crate_name] - Purchased by [paying_account.account_holder]" From b97a38f125d1dc22f2b5bd69827bd0da443cb0e5 Mon Sep 17 00:00:00 2001 From: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Wed, 31 Mar 2021 00:55:14 -0300 Subject: [PATCH 011/154] todo comment hopefully i will be able to do it in the future, or someone else will implement it --- code/modules/shuttle/supply.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 60dfdd53c5..74ac0fc166 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -128,6 +128,7 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list( var/value = 0 var/purchases = 0 var/list/goodies_by_buyer = list() // if someone orders more than GOODY_FREE_SHIPPING_MAX goodies, we upcharge to a normal crate so they can't carry around 20 combat shotties + // var/list/lockers_by_buyer = list() // TODO, combine orders that come in lockers into a single locker to not crowd the shuttle for(var/datum/supply_order/SO in SSshuttle.shoppinglist) if(!empty_turfs.len) break From 37be0768b3f666aa7aedd718a9bf572f2a0af697 Mon Sep 17 00:00:00 2001 From: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Wed, 31 Mar 2021 01:08:01 -0300 Subject: [PATCH 012/154] goodbye define - more comments --- code/__DEFINES/cargo.dm | 5 ++--- code/modules/cargo/packs.dm | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm index 40a50fe1e6..85e5e9d2ac 100644 --- a/code/__DEFINES/cargo.dm +++ b/code/__DEFINES/cargo.dm @@ -60,6 +60,5 @@ GLOBAL_LIST_INIT(podstyles, list(\ )) //cit -#define PACK_GOODY_NONE 0 -#define PACK_GOODY_PUBLIC 1 //can be bought by both privates and cargo -#define PACK_GOODY_PRIVATE 2 //can be bought only by privates +#define PACK_GOODY_NONE 0 // can be bought by cargo and privates +#define PACK_GOODY_PRIVATE 1 // can be bought only by privates diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index f35e2d91ea..3e3aeff592 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -15,6 +15,7 @@ var/special_enabled = FALSE var/DropPodOnly = FALSE //only usable by the Bluespace Drop Pod via the express cargo console var/admin_spawned = FALSE //Can only an admin spawn this crate? + // this might be all in all unnecessary with current code if some changes are made var/goody = PACK_GOODY_NONE //Small items can be grouped into a single crate.They also come in a closet/lockbox instead of a full crate, so the 700 min doesn't apply var/can_private_buy = TRUE //Can it be purchased privately by each crewmember? From 6ae984971cfdbc9d72d4c520efe381193babfecd Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 30 Mar 2021 23:25:36 -0700 Subject: [PATCH 013/154] Ported bluespace pipes from yogs --- code/game/machinery/pipe/construction.dm | 19 ++++ .../atmospherics/machinery/pipes/bluespace.dm | 86 ++++++++++++++++++ .../research/designs/bluespace_designs.dm | 10 ++ .../research/techweb/nodes/bluespace_nodes.dm | 2 +- icons/obj/atmospherics/pipes/bluespace.dmi | Bin 0 -> 677 bytes 5 files changed, 116 insertions(+), 1 deletion(-) create mode 100644 code/modules/atmospherics/machinery/pipes/bluespace.dm create mode 100644 icons/obj/atmospherics/pipes/bluespace.dmi diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 141afa53e7..d825cb5a23 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -236,3 +236,22 @@ Buildable meters /obj/item/pipe_meter/proc/setAttachLayer(new_layer = PIPING_LAYER_DEFAULT) piping_layer = new_layer PIPING_LAYER_DOUBLE_SHIFT(src, piping_layer) + +/obj/item/pipe/bluespace + pipe_type = /obj/machinery/atmospherics/pipe/bluespace + var/bluespace_network_name = "default" + icon_state = "bluespace" + disposable = FALSE + +/obj/item/pipe/bluespace/attack_self(mob/user) + var/new_name = input(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name) as text|null + if(!isnull(new_name)) + bluespace_network_name = new_name + +/obj/item/pipe/bluespace/make_from_existing(obj/machinery/atmospherics/pipe/bluespace/make_from) + bluespace_network_name = make_from.bluespace_network_name + return ..() + +/obj/item/pipe/bluespace/build_pipe(obj/machinery/atmospherics/pipe/bluespace/A) + A.bluespace_network_name = bluespace_network_name + return ..() diff --git a/code/modules/atmospherics/machinery/pipes/bluespace.dm b/code/modules/atmospherics/machinery/pipes/bluespace.dm new file mode 100644 index 0000000000..2735a38106 --- /dev/null +++ b/code/modules/atmospherics/machinery/pipes/bluespace.dm @@ -0,0 +1,86 @@ +GLOBAL_LIST_EMPTY(bluespace_pipe_networks) +/obj/machinery/atmospherics/pipe/bluespace + name = "bluespace pipe" + desc = "Transmits gas across large distances of space. Developed using bluespace technology." + icon = 'icons/obj/atmospherics/pipes/bluespace.dmi' + icon_state = "map" + pipe_state = "bluespace" + dir = SOUTH + initialize_directions = SOUTH + device_type = UNARY + can_buckle = FALSE + construction_type = /obj/item/pipe/bluespace + var/bluespace_network_name + +/obj/machinery/atmospherics/pipe/bluespace/New() + icon_state = "pipe" + if(bluespace_network_name) // in case someone maps one in for some reason + if(!GLOB.bluespace_pipe_networks[bluespace_network_name]) + GLOB.bluespace_pipe_networks[bluespace_network_name] = list() + GLOB.bluespace_pipe_networks[bluespace_network_name] |= src + ..() + +/obj/machinery/atmospherics/pipe/bluespace/on_construction() + . = ..() + if(bluespace_network_name) + if(!GLOB.bluespace_pipe_networks[bluespace_network_name]) + GLOB.bluespace_pipe_networks[bluespace_network_name] = list() + GLOB.bluespace_pipe_networks[bluespace_network_name] |= src + +/obj/machinery/atmospherics/pipe/bluespace/Destroy() + if(GLOB.bluespace_pipe_networks[bluespace_network_name]) + GLOB.bluespace_pipe_networks[bluespace_network_name] -= src + for(var/p in GLOB.bluespace_pipe_networks[bluespace_network_name]) + var/obj/machinery/atmospherics/pipe/bluespace/P = p + QDEL_NULL(P.parent) + P.build_network() + return ..() + +/obj/machinery/atmospherics/pipe/bluespace/examine(user) + . = ..() + . += "This one is connected to the \"[html_encode(bluespace_network_name)]\" network." + +/obj/machinery/atmospherics/pipe/bluespace/SetInitDirections() + initialize_directions = dir + +/obj/machinery/atmospherics/pipe/bluespace/pipeline_expansion() + return ..() + GLOB.bluespace_pipe_networks[bluespace_network_name] - src + +/obj/machinery/atmospherics/pipe/bluespace/hide() + update_icon() + +/obj/machinery/atmospherics/pipe/bluespace/update_icon(showpipe) + underlays.Cut() + + var/turf/T = loc + if(level == 2 || !T.intact) + showpipe = TRUE + plane = GAME_PLANE + else + showpipe = FALSE + plane = FLOOR_PLANE + + if(!showpipe) + return //no need to update the pipes if they aren't showing + + var/connected = 0 //Direction bitset + + for(var/i in 1 to device_type) //adds intact pieces + if(nodes[i]) + var/obj/machinery/atmospherics/node = nodes[i] + var/image/img = get_pipe_underlay("pipe_intact", get_dir(src, node), node.pipe_color) + underlays += img + connected |= img.dir + + for(var/direction in GLOB.cardinals) + if((initialize_directions & direction) && !(connected & direction)) + underlays += get_pipe_underlay("pipe_exposed", direction) + +/obj/machinery/atmospherics/pipe/bluespace/paint() + return FALSE + +/obj/machinery/atmospherics/pipe/bluespace/proc/get_pipe_underlay(state, dir, color = null) + if(color) + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir, color) + else + . = getpipeimage('icons/obj/atmospherics/components/binary_devices.dmi', state, dir) diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm index a70449b035..cf6aff5918 100644 --- a/code/modules/research/designs/bluespace_designs.dm +++ b/code/modules/research/designs/bluespace_designs.dm @@ -105,3 +105,13 @@ materials = list(/datum/material/iron = 2000, /datum/material/bluespace = 500) category = list("Bluespace Designs") departmental_flags = DEPARTMENTAL_FLAG_SERVICE + +/datum/design/bluespace_pipe + name = "Bluespace Pipe" + desc = "A pipe that teleports gases." + id = "bluespace_pipe" + build_type = PROTOLATHE + materials = list(/datum/material/gold = 1000, /datum/material/diamond = 750, /datum/material/uranium = 250, /datum/material/bluespace = 2000) + build_path = /obj/item/pipe/bluespace + category = list("Bluespace Designs") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING diff --git a/code/modules/research/techweb/nodes/bluespace_nodes.dm b/code/modules/research/techweb/nodes/bluespace_nodes.dm index 6c782456a8..90b69eb28d 100644 --- a/code/modules/research/techweb/nodes/bluespace_nodes.dm +++ b/code/modules/research/techweb/nodes/bluespace_nodes.dm @@ -61,7 +61,7 @@ display_name = "Bluespace Travel" description = "Application of Bluespace for static teleportation technology." prereq_ids = list("adv_power", "adv_bluespace") - design_ids = list("tele_station", "tele_hub", "quantumpad", "quantum_keycard", "launchpad", "launchpad_console", "teleconsole", "roastingstick") + design_ids = list("tele_station", "tele_hub", "quantumpad", "quantum_keycard", "launchpad", "launchpad_console", "teleconsole", "roastingstick", "bluespace_pipe") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) /datum/techweb_node/unregulated_bluespace diff --git a/icons/obj/atmospherics/pipes/bluespace.dmi b/icons/obj/atmospherics/pipes/bluespace.dmi new file mode 100644 index 0000000000000000000000000000000000000000..866e6f9b844f4f4a9c987755618f0d3ca5a9087f GIT binary patch literal 677 zcmV;W0$TlvP)V!Y0R8_htE;PQY;6CPVgJl#eSLkvz`zX+ z4PIVegM)*(xVRY^86O`X8X6k4wY41`9b#f)x3{;3hK3s(8(CRdw6wG%F=jRZ0004W zQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ> zRWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sUWi;Rf&r;C9|j)$Tj5ROe;#v zO$D*dfTF26iIpH>9g-lz^xVV(?1me1DJ!`8xqzJv05#Dr#k$KneEa!CT?#h!$R^WZnO?Z6-nypoZd+G38!XgQfoq6@ci9H62}G(+w9DyIQ0_?@P`l4G z5M2s_ra$GMmx8vH225?6X&^ew3KX5iA!PKlf-bF)x-PfEj?)4ZJrL6_qYv-Uv;L0# zoip4mXY(DrW^FiQc^8sh|G2gR3A4q>z=LcoJ z81j9J->l?+89!8=QvTQH15)RMw8Nn4vH*2HkP1EjhkLqq1~wnqd|()cVHl6W;R>dI zjQvQA5QjsYa}CI#pYwf>GMMr`%3#j-D1$lQ!*(#`d)yiP Date: Tue, 30 Mar 2021 23:35:47 -0700 Subject: [PATCH 014/154] why did this not update --- tgstation.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/tgstation.dme b/tgstation.dme index db49b62864..d3ade0623e 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1808,6 +1808,7 @@ #include "code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm" #include "code\modules\atmospherics\machinery\other\meter.dm" #include "code\modules\atmospherics\machinery\other\miner.dm" +#include "code\modules\atmospherics\machinery\pipes\bluespace.dm" #include "code\modules\atmospherics\machinery\pipes\layermanifold.dm" #include "code\modules\atmospherics\machinery\pipes\manifold.dm" #include "code\modules\atmospherics\machinery\pipes\manifold4w.dm" From 68ad5c2e5c6db6badfea8ecd22f50ee5b88bb436 Mon Sep 17 00:00:00 2001 From: Putnam Date: Tue, 30 Mar 2021 23:56:12 -0700 Subject: [PATCH 015/154] disposability --- code/game/machinery/pipe/construction.dm | 1 + code/game/objects/items/RPD.dm | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index d825cb5a23..5b30105409 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -21,6 +21,7 @@ Buildable meters level = 2 var/piping_layer = PIPING_LAYER_DEFAULT var/RPD_type + var/disposable = TRUE /obj/item/pipe/directional RPD_type = PIPE_UNARY diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 70e4441c66..635ea97902 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -375,12 +375,14 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( . = TRUE if((mode & DESTROY_MODE) && istype(A, /obj/item/pipe) || istype(A, /obj/structure/disposalconstruct) || istype(A, /obj/structure/c_transit_tube) || istype(A, /obj/structure/c_transit_tube_pod) || istype(A, /obj/item/pipe_meter)) - to_chat(user, "You start destroying a pipe...") - playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) - if(do_after(user, destroy_speed, target = A)) - activate() - qdel(A) - return + var/obj/item/pipe/P = A + if(!istype(P) || P.disposable) + to_chat(user, "You start destroying a pipe...") + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + if(do_after(user, destroy_speed, target = A)) + activate() + qdel(A) + return if((mode & PAINT_MODE)) if(istype(A, /obj/machinery/atmospherics/pipe) && !istype(A, /obj/machinery/atmospherics/pipe/layer_manifold)) From 2aa2a8c802a858324ab4473787699ade93aa7419 Mon Sep 17 00:00:00 2001 From: SandPoot <43283559+SandPoot@users.noreply.github.com> Date: Wed, 31 Mar 2021 20:28:50 -0300 Subject: [PATCH 016/154] actually not that much needed --- code/modules/mining/lavaland/necropolis_chests.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 5db8481806..129c600da6 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -1001,8 +1001,6 @@ H.dna.features["body_markings"] = "Dark Tiger Body" H.dna.features["legs"] = "Digitigrade" H.dna.features["taur_body"] = "None" - H.hair_style = "Bald" - H.facial_hair_style = "Shaved" H.left_eye_color = "fee5a3" H.right_eye_color = "fee5a3" H.set_species(/datum/species/lizard) From b363cdd5ca713961dc8b83d2b2d2fb046046e265 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Thu, 1 Apr 2021 04:29:35 -0700 Subject: [PATCH 017/154] fixes puddles, cultism checks, spellchecks --- code/__DEFINES/misc.dm | 5 +++-- code/datums/mutations/_mutations.dm | 15 +++++++-------- code/datums/mutations/radioactive.dm | 2 +- code/datums/mutations/space_adaptation.dm | 2 +- .../ark_of_the_clockwork_justicar.dm | 2 +- .../antagonists/clockcult/clockcult.dm | 2 +- code/modules/antagonists/cult/cult.dm | 2 +- .../carbon/human/innate_abilities/blobform.dm | 3 +++ .../mob/living/carbon/human/update_icons.dm | 19 +++++++++++++++++++ code/modules/mob/update_icons.dm | 3 +++ .../chemistry/reagents/other_reagents.dm | 2 +- 11 files changed, 41 insertions(+), 16 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index e56ab8dd24..fe139fff10 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -30,7 +30,8 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s //Human Overlays Indexes///////// //LOTS OF CIT CHANGES HERE. BE CAREFUL WHEN UPSTREAM ADDS MORE LAYERS -#define MUTATIONS_LAYER 33 //mutations. Tk headglows, cold resistance glow, etc +#define MUTATIONS_LAYER 34 //mutations. Tk headglows, cold resistance glow, etc +#define ANTAG_LAYER 33 //stuff for things like cultism indicators (clock cult glow, cultist red halos, whatever else new that comes up) #define GENITALS_BEHIND_LAYER 32 //Some genitalia needs to be behind everything, such as with taurs (Taurs use body_behind_layer #define BODY_BEHIND_LAYER 31 //certain mutantrace features (tail when looking south) that must appear behind the body parts #define BODYPARTS_LAYER 30 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag @@ -63,7 +64,7 @@ Will print: "/mob/living/carbon/human/death" (you can optionally embed it in a s #define HANDS_LAYER 3 #define BODY_FRONT_LAYER 2 #define FIRE_LAYER 1 //If you're on fire -#define TOTAL_LAYERS 33 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; +#define TOTAL_LAYERS 34 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_; //Human Overlay Index Shortcuts for alternate_worn_layer, layers //Because I *KNOW* somebody will think layer+1 means "above" diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index b72874c329..33a082372e 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -129,7 +129,7 @@ /datum/mutation/human/proc/get_spans() return list() -/mob/living/carbon/proc/update_mutations_overlay() +/mob/living/proc/update_mutations_overlay() return /mob/living/carbon/human/update_mutations_overlay() @@ -142,13 +142,12 @@ if(overlays_standing[CM.layer_used]) mut_overlay = overlays_standing[CM.layer_used] var/mutable_appearance/V = CM.get_visual_indicator() - if(!mut_overlay.Find(V)) //either we lack the visual indicator or we have the wrong one - remove_overlay(CM.layer_used) - for(var/mutable_appearance/MA in CM.visual_indicators[CM.type]) - mut_overlay.Remove(MA) - mut_overlay |= V - overlays_standing[CM.layer_used] = mut_overlay - apply_overlay(CM.layer_used) + remove_overlay(CM.layer_used) //trying to find its existence defeats the point because if cut_overlays is called it doesn't bother reloading it. + for(var/mutable_appearance/MA in CM.visual_indicators[CM.type]) + mut_overlay.Remove(MA) + mut_overlay |= V + overlays_standing[CM.layer_used] = mut_overlay + apply_overlay(CM.layer_used) /datum/mutation/human/proc/modify() //called when a genome is applied so we can properly update some stats without having to remove and reapply the mutation from someone if(modified || !power || !owner) diff --git a/code/datums/mutations/radioactive.dm b/code/datums/mutations/radioactive.dm index 2e6aa50d46..687f306dab 100644 --- a/code/datums/mutations/radioactive.dm +++ b/code/datums/mutations/radioactive.dm @@ -1,6 +1,6 @@ /datum/mutation/human/radioactive name = "Radioactivity" - desc = "A volatile mutation that causes the host to sent out deadly beta radiation. This affects both the hosts and their surroundings." + desc = "A volatile mutation that causes the host to send out deadly beta radiation. This affects both the hosts and their surroundings." quality = NEGATIVE text_gain_indication = "You can feel it in your bones!" time_coeff = 5 diff --git a/code/datums/mutations/space_adaptation.dm b/code/datums/mutations/space_adaptation.dm index 94c829d367..a3a2f10f2f 100644 --- a/code/datums/mutations/space_adaptation.dm +++ b/code/datums/mutations/space_adaptation.dm @@ -1,7 +1,7 @@ //Cold Resistance gives your entire body an orange halo, and makes you immune to the effects of vacuum and cold. /datum/mutation/human/space_adaptation name = "Space Adaptation" - desc = "A strange mutation that renders the host immune to the vacuum if space. Will still need an oxygen supply." + desc = "A strange mutation that renders the host immune to the vacuum of space. Will still need an oxygen supply." quality = POSITIVE difficulty = 16 text_gain_indication = "Your body feels warm!" diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm index a481415cf5..025306dae4 100644 --- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -87,7 +87,7 @@ if(!M || !M.current) continue if(ishuman(M.current)) - M.current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)) + M.current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -ANTAG_LAYER)) var/turf/T = get_turf(src) var/list/open_turfs = list() for(var/turf/open/OT in orange(1, T)) diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm index efea8ed771..6f91299cdb 100644 --- a/code/modules/antagonists/clockcult/clockcult.dm +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -139,7 +139,7 @@ current.throw_alert("clockinfo", /obj/screen/alert/clockwork/infodump) var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar if(G && G.active && ishuman(current)) - current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)) + current.add_overlay(mutable_appearance('icons/effects/genetics.dmi', "servitude", -ANTAG_LAYER)) /datum/antagonist/clockcult/remove_innate_effects(mob/living/mob_override) var/mob/living/current = owner.current diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 09d8771a62..2fed9fc0d5 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -332,7 +332,7 @@ var/mob/living/carbon/human/H = cultist new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") - H.add_overlay(mutable_appearance('icons/effects/32x64.dmi', istate, -BODY_FRONT_LAYER)) + H.add_overlay(mutable_appearance('icons/effects/32x64.dmi', istate, -ANTAG_LAYER)) /datum/team/cult/proc/setup_objectives() //SAC OBJECTIVE , todo: move this to objective internals diff --git a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm index 1aac2fd02e..be35f6298e 100644 --- a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm +++ b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm @@ -47,6 +47,7 @@ owner.cut_overlays() //we dont show our normal sprite, we show a puddle sprite var/obj/effect/puddle_effect = new puddle_into_effect(get_turf(owner), owner.dir) puddle_effect.color = mutcolor + puddle_effect.transform = H.transform //copy mob size for consistent meltdown appearance H.Stun(in_transformation_duration, ignore_canstun = TRUE) //cant move while transforming //series of traits that make up the puddle behaviour @@ -89,6 +90,7 @@ H.cut_overlay(tracked_overlay) var/obj/effect/puddle_effect = new puddle_from_effect(get_turf(owner), owner.dir) puddle_effect.color = tracked_overlay.color + puddle_effect.transform = H.transform //copy mob size for consistent transform size H.Stun(out_transformation_duration, ignore_canstun = TRUE) sleep(out_transformation_duration) REMOVE_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT) @@ -106,5 +108,6 @@ is_puddle = FALSE if(squeak) squeak.RemoveComponent() + H.regenerate_icons() transforming = FALSE UpdateButtonIcon() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index f05d795ba2..5f77d25eae 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -100,10 +100,29 @@ There are several things that need to be remembered: update_mutations_overlay() //damage overlays update_damage_overlays() + //antagonism + update_antag_overlays() /* --------------------------------------- */ //vvvvvv UPDATE_INV PROCS vvvvvv + +/mob/living/carbon/human/update_antag_overlays() + remove_overlay(ANTAG_LAYER) + var/datum/antagonist/cult/D = src?.mind?.has_antag_datum(/datum/antagonist/cult) //check for cultism + if(D && D.cult_team?.cult_ascendent == TRUE) + var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") + var/mutable_appearance/new_cult_overlay = mutable_appearance('icons/effects/32x64.dmi', istate, -ANTAG_LAYER) + overlays_standing[ANTAG_LAYER] = new_cult_overlay + var/datum/antagonist/clockcult/C = src?.mind?.has_antag_datum(/datum/antagonist/clockcult) //check for clockcultism - surely one can't be both cult and clockie, right? + if(C) + var/obj/structure/destructible/clockwork/massive/celestial_gateway/G = GLOB.ark_of_the_clockwork_justiciar + if(G && G.active && ishuman(src)) + var/mutable_appearance/new_cult_overlay = mutable_appearance('icons/effects/genetics.dmi', "servitude", -ANTAG_LAYER) + overlays_standing[ANTAG_LAYER] = new_cult_overlay + apply_overlay(ANTAG_LAYER) + + /mob/living/carbon/human/update_inv_w_uniform() if(!HAS_TRAIT(src, TRAIT_HUMAN_NO_RENDER)) remove_overlay(UNIFORM_LAYER) diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index baa849705b..47a75eb58a 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -69,3 +69,6 @@ /mob/proc/update_inv_ears() return + +/mob/proc/update_antag_overlays() + return diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index fe8f923e1a..593d77f959 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -330,7 +330,7 @@ name = "Hollow Water" description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen, but it looks kinda hollow." color = "#88878777" - taste_description = "emptyiness" + taste_description = "emptiness" /datum/reagent/water/holywater From 1dac10b1eca7e7ff81386b1f580668f4dc5c7285 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Thu, 1 Apr 2021 04:43:18 -0700 Subject: [PATCH 018/154] Might as well have it show halo stuff while puddling too --- .../modules/mob/living/carbon/human/innate_abilities/blobform.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm index be35f6298e..f2ffaec84c 100644 --- a/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm +++ b/code/modules/mob/living/carbon/human/innate_abilities/blobform.dm @@ -76,6 +76,7 @@ puddle_overlay.color = mutcolor tracked_overlay = puddle_overlay owner.add_overlay(puddle_overlay) + owner.update_antag_overlays() transforming = FALSE UpdateButtonIcon() From fcd108006940c0c8da3cbd93cf800a918f2bf760 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Thu, 1 Apr 2021 05:36:43 -0700 Subject: [PATCH 019/154] more booby and dick pill --- code/game/objects/items/storage/firstaid.dm | 4 ++-- code/modules/vending/kinkmate.dm | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 2035b67b5e..8e497743e0 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -394,7 +394,7 @@ desc = "You want penis enlargement pills?" /obj/item/storage/pill_bottle/penis_enlargement/PopulateContents() - for(var/i in 1 to 7) + for(var/i in 1 to 10) new /obj/item/reagent_containers/pill/penis_enlargement(src) /obj/item/storage/pill_bottle/breast_enlargement @@ -402,7 +402,7 @@ desc = "Made by Fermichem - They have a woman with breasts larger than she is on them. The warming states not to take more than 10u at a time." /obj/item/storage/pill_bottle/breast_enlargement/PopulateContents() - for(var/i in 1 to 7) + for(var/i in 1 to 10) new /obj/item/reagent_containers/pill/breast_enlargement(src) /obj/item/storage/pill_bottle/neurine diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm index 28e5a950ad..6d8eea1782 100644 --- a/code/modules/vending/kinkmate.dm +++ b/code/modules/vending/kinkmate.dm @@ -29,9 +29,9 @@ /obj/item/clothing/under/misc/poly_tanktop/female = 3, /obj/item/autosurgeon/penis = 3, /obj/item/autosurgeon/testicles = 3, - /obj/item/storage/pill_bottle/penis_enlargement = 5, - /obj/item/storage/pill_bottle/breast_enlargement = 5, - /obj/item/reagent_containers/glass/bottle/crocin = 5, + /obj/item/storage/pill_bottle/penis_enlargement = 10, + /obj/item/storage/pill_bottle/breast_enlargement = 10, + /obj/item/reagent_containers/glass/bottle/crocin = 10, /obj/item/reagent_containers/glass/bottle/camphor = 5, /obj/item/storage/daki = 4 ) From e7099c67a1692f0a7fdc349cadd245ac02cd5620 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Thu, 1 Apr 2021 05:45:26 -0700 Subject: [PATCH 020/154] oh right some fucker at cargo would abuse this. --- .../code/modules/reagents/chemistry/reagents/enlargement.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 9870a2cd36..3ff355b472 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -29,7 +29,7 @@ inverse_chem_val = 0.35 inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse can_synth = FALSE - value = REAGENT_VALUE_VERY_RARE + value = REAGENT_VALUE_COMMON /datum/reagent/fermi/breast_enlarger/on_mob_metabolize(mob/living/M) . = ..() @@ -167,7 +167,7 @@ inverse_chem_val = 0.35 inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE - value = REAGENT_VALUE_VERY_RARE + value = REAGENT_VALUE_COMMON /datum/reagent/fermi/penis_enlarger/on_mob_metabolize(mob/living/M) . = ..() From a7726aa383d6027f44fd972b3287b10ed4a8f9b2 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Thu, 1 Apr 2021 06:07:25 -0700 Subject: [PATCH 021/154] re-enlarging the value --- .../code/modules/reagents/chemistry/reagents/enlargement.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 3ff355b472..1265fb1769 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -29,7 +29,7 @@ inverse_chem_val = 0.35 inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse can_synth = FALSE - value = REAGENT_VALUE_COMMON + value = REAGENT_VALUE_RARE /datum/reagent/fermi/breast_enlarger/on_mob_metabolize(mob/living/M) . = ..() @@ -167,7 +167,7 @@ inverse_chem_val = 0.35 inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE - value = REAGENT_VALUE_COMMON + value = REAGENT_VALUE_RARE /datum/reagent/fermi/penis_enlarger/on_mob_metabolize(mob/living/M) . = ..() From 5152a605d8a7bbba4d8ecb7a76fd58b575a9ad43 Mon Sep 17 00:00:00 2001 From: BlueWildrose <57083662+BlueWildrose@users.noreply.github.com> Date: Thu, 1 Apr 2021 11:36:30 -0700 Subject: [PATCH 022/154] this is very warming --- code/game/objects/items/storage/firstaid.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 8e497743e0..6c3185b312 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -399,7 +399,7 @@ /obj/item/storage/pill_bottle/breast_enlargement name = "breast enlargement pills" - desc = "Made by Fermichem - They have a woman with breasts larger than she is on them. The warming states not to take more than 10u at a time." + desc = "Made by Fermichem - The bottle shows a woman with breasts larger than she is on them. The warning states to not take more than 10 units at a time." /obj/item/storage/pill_bottle/breast_enlargement/PopulateContents() for(var/i in 1 to 10) From d55bb8231d49ffe29230fffc512b252b5e3c3505 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sat, 3 Apr 2021 10:55:34 -0700 Subject: [PATCH 023/154] Buffs autotomy --- code/datums/mutations/actions.dm | 4 +-- .../surgery/bodyparts/dismemberment.dm | 26 +++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index c859d38587..fbee213585 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -283,7 +283,7 @@ desc = "Allows a creature to voluntary discard a random appendage." quality = POSITIVE text_gain_indication = "Your joints feel loose." - instability = 30 + instability = 20 power = /obj/effect/proc_holder/spell/self/self_amputation energy_coeff = 1 @@ -316,7 +316,7 @@ return var/obj/item/bodypart/BP = pick(parts) - BP.dismember() + BP.dismember(harmless=TRUE) //spider webs /datum/mutation/human/webbing diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 9c42da598d..ccd90ea474 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -4,7 +4,7 @@ return TRUE //Dismember a limb -/obj/item/bodypart/proc/dismember(dam_type = BRUTE, silent=TRUE) +/obj/item/bodypart/proc/dismember(dam_type = BRUTE, silent=TRUE, harmless=FALSE) if(!owner) return FALSE var/mob/living/carbon/C = owner @@ -14,24 +14,28 @@ return FALSE if(HAS_TRAIT(C, TRAIT_NODISMEMBER)) return FALSE - var/obj/item/bodypart/affecting = C.get_bodypart(BODY_ZONE_CHEST) - affecting.receive_damage(clamp(brute_dam/2 * affecting.body_damage_coeff, 15, 50), clamp(burn_dam/2 * affecting.body_damage_coeff, 0, 50), wound_bonus=CANT_WOUND) //Damage the chest based on limb's existing damage + if(!harmless) + var/obj/item/bodypart/affecting = C.get_bodypart(BODY_ZONE_CHEST) + affecting.receive_damage(clamp(brute_dam/2 * affecting.body_damage_coeff, 15, 50), clamp(burn_dam/2 * affecting.body_damage_coeff, 0, 50), wound_bonus=CANT_WOUND) //Damage the chest based on limb's existing damage if(!silent) C.visible_message("[C]'s [name] is violently dismembered!") - C.emote("scream") - SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) + if(!harmless) + C.emote("scream") + SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) + else C.emote("pain") drop_limb() C.update_equipment_speed_mods() // Update in case speed affecting item unequipped by dismemberment - C.bleed(40) + if(!harmless) C.bleed(40) if(QDELETED(src)) //Could have dropped into lava/explosion/chasm/whatever return TRUE - if(dam_type == BURN) - burn() - return TRUE - add_mob_blood(C) - C.bleed(rand(20, 40)) + if(!harmless) + if(dam_type == BURN) + burn() + return TRUE + add_mob_blood(C) + C.bleed(rand(20, 40)) var/direction = pick(GLOB.cardinals) var/t_range = rand(2,max(throw_range/2, 2)) var/turf/target_turf = get_turf(src) From e29beaf8529dce83f3da06b802d0d021c5cae36c Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sat, 3 Apr 2021 11:26:35 -0700 Subject: [PATCH 024/154] I'll use this linter error as an opportunity to fix some grammar --- code/datums/status_effects/debuffs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 1c25cde286..a958d20276 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -160,7 +160,7 @@ /obj/screen/alert/status_effect/mesmerized name = "Mesmerized" - desc = "You cant tear your sight from who is in front of you... their gaze is simply too enthralling.." + desc = "You can't tear your sight from who is in front of you... their gaze is simply too enthralling.." icon = 'icons/mob/actions/bloodsucker.dmi' icon_state = "power_mez" From 49c3284f16269874ea89e818c6144a2cbf423aff Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sat, 3 Apr 2021 12:45:52 -0700 Subject: [PATCH 025/154] linters quit complaining. --- code/modules/surgery/bodyparts/dismemberment.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index ccd90ea474..88b6f0f662 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -49,12 +49,12 @@ throw_at(target_turf, throw_range, throw_speed) return TRUE -/obj/item/bodypart/head/dismember() +/obj/item/bodypart/head/dismember(dam_type = BRUTE, silent=TRUE, harmless=FALSE) if(HAS_TRAIT(owner, TRAIT_NODECAP)) return FALSE ..() -/obj/item/bodypart/chest/dismember() +/obj/item/bodypart/chest/dismember(dam_type = BRUTE, silent=TRUE, harmless=FALSE) if(!owner) return FALSE var/mob/living/carbon/C = owner From 65bcb8fc358e31e25f3b0ca78a0ef511c5d14df0 Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sat, 3 Apr 2021 16:58:08 -0500 Subject: [PATCH 026/154] removes bat attaching to belt seems a little OP I guess? --- code/game/objects/items/weaponry.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 4a6affc5aa..156768354c 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -1047,7 +1047,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 to_chat(user, desc["local_off"]) icon_state = off_icon_state item_state = null //no sprite for concealment even when in hand - slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL force = force_off throwforce = throwforce_off From 08c89f421a43be300fa023a7d19a2cee59a4a4a5 Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sat, 3 Apr 2021 17:07:25 -0500 Subject: [PATCH 027/154] updates telescopic bat inhand sprites --- icons/mob/inhands/weapons/melee_lefthand.dmi | Bin 2884 -> 2886 bytes icons/mob/inhands/weapons/melee_righthand.dmi | Bin 2965 -> 2963 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/inhands/weapons/melee_lefthand.dmi b/icons/mob/inhands/weapons/melee_lefthand.dmi index 7a645031bdb528b78f72fe6e7c5f56d47895c123..7d91c1e88155a06c8b9beea6a163341c4887dba1 100644 GIT binary patch delta 2403 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 R=0@K-+u2;St~__;_CHkxmAL=_ delta 2358 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 From 7a135d2346f1d829d76c705291b6ef088346f193 Mon Sep 17 00:00:00 2001 From: Eric <51395968+brokenOculus@users.noreply.github.com> Date: Sat, 3 Apr 2021 17:11:06 -0500 Subject: [PATCH 028/154] Adds Telescopic bat to uplink Baseball bundle. --- code/game/objects/items/storage/uplink_kits.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 2d8f680c12..941ba869bb 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -62,7 +62,7 @@ new /obj/item/clothing/glasses/phantomthief/syndicate(src) new /obj/item/reagent_containers/syringe/stimulants(src) - if("baseball") // 42~ tc + if("baseball") // 44~ tc new /obj/item/melee/baseball_bat/ablative/syndi(src) //Lets say 12 tc, lesser sleeping carp new /obj/item/clothing/glasses/sunglasses/garb(src) //Lets say 2 tc new /obj/item/card/emag(src) //6 tc @@ -72,6 +72,7 @@ new /obj/item/clothing/under/syndicate/baseball(src) //3tc new /obj/item/clothing/head/soft/baseball(src) //Lets say 4 tc new /obj/item/reagent_containers/hypospray/medipen/stimulants/baseball(src) //lets say 5tc + new /obj/item/melee/baseball_bat/telescopic(src) // 2 tc if("implant") // 67+ tc holy shit what the fuck this is a lottery disguised as fun boxes isn't it? new /obj/item/implanter/freedom(src) @@ -154,18 +155,18 @@ new /obj/item/storage/belt/chameleon(src) // Unique but worth at least 2 tc new /obj/item/card/id/syndicate(src) // 2 tc new /obj/item/chameleon(src) // 7 tc - + if("ancient") //A kit so old, it's probably older than you. //This bundle is filled with the entire unlink contents traitors had access to in 2006, from OpenSS13. Notably the esword was not a choice but existed in code. new /obj/item/storage/toolbox/emergency/old/ancientbundle(src) //Items fit neatly into a classic toolbox just to remind you what the theme is. - + /obj/item/storage/toolbox/emergency/old/ancientbundle //So the subtype works - + /obj/item/storage/toolbox/emergency/old/ancientbundle/PopulateContents() - new /obj/item/card/emag(src) - new /obj/item/pen/sleepy(src) + new /obj/item/card/emag(src) + new /obj/item/pen/sleepy(src) new /obj/item/reagent_containers/pill/cyanide(src) new /obj/item/chameleon(src) //its not the original cloaking device, but it will do. - new /obj/item/gun/ballistic/revolver(src) + new /obj/item/gun/ballistic/revolver(src) new /obj/item/implanter/freedom(src) new /obj/item/stack/telecrystal(src) //The failsafe/self destruct isn't an item we can physically include in the kit, but 1 TC is technically enough to buy the equivalent. From 6c79090bc25c2127459144db2956f4bab0ff3247 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sun, 4 Apr 2021 12:25:33 -0700 Subject: [PATCH 029/154] Certain languages tongueless, machine language learnable --- code/modules/language/machine.dm | 1 + code/modules/language/mushroom.dm | 1 + code/modules/language/sylvan.dm | 1 + 3 files changed, 3 insertions(+) diff --git a/code/modules/language/machine.dm b/code/modules/language/machine.dm index b7ef701e30..d6039b1287 100644 --- a/code/modules/language/machine.dm +++ b/code/modules/language/machine.dm @@ -12,6 +12,7 @@ default_priority = 90 icon_state = "eal" + chooseable_roundstart = TRUE /datum/language/machine/get_random_name() if(prob(70)) diff --git a/code/modules/language/mushroom.dm b/code/modules/language/mushroom.dm index 038ee0f905..6afa8b0dd9 100644 --- a/code/modules/language/mushroom.dm +++ b/code/modules/language/mushroom.dm @@ -6,6 +6,7 @@ exclaim_verb = "poofs loudly" whisper_verb = "puffs quietly" key = "y" + flags = TONGUELESS_SPEECH sentence_chance = 0 default_priority = 80 syllables = list("poof", "pff", "pFfF", "piff", "puff", "pooof", "pfffff", "piffpiff", "puffpuff", "poofpoof", "pifpafpofpuf") diff --git a/code/modules/language/sylvan.dm b/code/modules/language/sylvan.dm index a1ac6725b9..b69c62d915 100644 --- a/code/modules/language/sylvan.dm +++ b/code/modules/language/sylvan.dm @@ -6,6 +6,7 @@ ask_verb = "inquires" exclaim_verb = "declares" key = "h" + flags = TONGUELESS_SPEECH space_chance = 20 syllables = list( "fii", "sii", "rii", "rel", "maa", "ala", "san", "tol", "tok", "dia", "eres", From 43d855c41339c7e16072f5abc41dcdd493b85ff4 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sun, 4 Apr 2021 17:05:18 -0700 Subject: [PATCH 030/154] Killable space pirate sleepers --- .../objects/structures/ghost_role_spawners.dm | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 306868daba..a14c1208cd 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -590,7 +590,7 @@ /obj/effect/mob_spawn/human/pirate name = "space pirate sleeper" - desc = "A cryo sleeper smelling faintly of rum." + desc = "A cryo sleeper smelling faintly of rum. The sleeper looks unstable. Perhaps the pirate within can be killed with the right tools..." job_description = "Space Pirate" random = TRUE icon = 'icons/obj/machines/sleeper.dmi' @@ -608,6 +608,45 @@ assignedrole = "Space Pirate" var/rank = "Mate" +/obj/effect/mob_spawn/human/pirate/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags) + . = ..() + if(.) + return + if(user.mind.has_antag_datum(/datum/antagonist/pirate)) + to_chat(user, "Your shipmate sails within their dreams for now. Perhaps they may wake up eventually.") + else + to_chat(user, "If you want to kill the pirate off, something to pry open the sleeper might be the best way to do it.") + + +/obj/effect/mob_spawn/human/pirate/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_CROWBAR && user.a_intent != INTENT_HARM) + if(user.mind.has_antag_datum(/datum/antagonist/pirate)) + to_chat(user,"Why would you want to do that to your shipmate? That'd kill them.") + return + user.visible_message("[usr.name] pries open the [src], disrupting the sleep of the pirate within and killing them.", + "You pry open the [src], disrupting the sleep of the pirate within and killing them.", + "You hear prying, followed by the death rattling of bones.") + W.play_tool_sound(src) + playsound(src.loc, 'modular_citadel/sound/voice/scream_skeleton.ogg', 50, 1, 4, 1.2) + if(rank == "Captain") new /obj/effect/mob_spawn/human/pirate/corpse/captain(get_turf(src)) + else new /obj/effect/mob_spawn/human/pirate/corpse(get_turf(src)) + qdel(src) + else + ..() + +/obj/effect/mob_spawn/human/pirate/corpse //occurs when someone pries a pirate out of their sleeper. + mob_name = "Dead Space Pirate" + death = TRUE + instant = TRUE + random = FALSE + +/obj/effect/mob_spawn/human/pirate/corpse/Destroy() + return ..() +/obj/effect/mob_spawn/human/pirate/corpse/captain + rank = "Captain" + mob_name = "Dead Space Pirate Captain" + outfit = /datum/outfit/pirate/space/captain + /obj/effect/mob_spawn/human/pirate/special(mob/living/new_spawn) new_spawn.fully_replace_character_name(new_spawn.real_name,generate_pirate_name()) new_spawn.mind.add_antag_datum(/datum/antagonist/pirate) From 414d9d43e3802928d2af93c6cbfd4ccd512c7a26 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sun, 4 Apr 2021 18:50:11 -0700 Subject: [PATCH 031/154] adding a gap here --- code/game/objects/structures/ghost_role_spawners.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index a14c1208cd..9a85a700e2 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -642,6 +642,7 @@ /obj/effect/mob_spawn/human/pirate/corpse/Destroy() return ..() + /obj/effect/mob_spawn/human/pirate/corpse/captain rank = "Captain" mob_name = "Dead Space Pirate Captain" From fb79a2033d68c201e2f2b4b4430defcab894f3e0 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Sun, 4 Apr 2021 21:34:27 -0700 Subject: [PATCH 032/154] usr.name into user, also adding in do_after. --- .../objects/structures/ghost_role_spawners.dm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 9a85a700e2..2e1f76cefe 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -623,14 +623,19 @@ if(user.mind.has_antag_datum(/datum/antagonist/pirate)) to_chat(user,"Why would you want to do that to your shipmate? That'd kill them.") return - user.visible_message("[usr.name] pries open the [src], disrupting the sleep of the pirate within and killing them.", - "You pry open the [src], disrupting the sleep of the pirate within and killing them.", - "You hear prying, followed by the death rattling of bones.") + user.visible_message("[user] start to pry open the [src]...", + "You start to pry open the [src]...", + "You hear prying...") W.play_tool_sound(src) - playsound(src.loc, 'modular_citadel/sound/voice/scream_skeleton.ogg', 50, 1, 4, 1.2) - if(rank == "Captain") new /obj/effect/mob_spawn/human/pirate/corpse/captain(get_turf(src)) - else new /obj/effect/mob_spawn/human/pirate/corpse(get_turf(src)) - qdel(src) + if(do_after(user, 100*W.toolspeed, target = src)) + user.visible_message("[user] pries open the [src], disrupting the sleep of the pirate within and killing them.", + "You pry open the [src], disrupting the sleep of the pirate within and killing them.", + "You hear prying, followed by the death rattling of bones.") + W.play_tool_sound(src) + playsound(src.loc, 'modular_citadel/sound/voice/scream_skeleton.ogg', 50, 1, 4, 1.2) + if(rank == "Captain") new /obj/effect/mob_spawn/human/pirate/corpse/captain(get_turf(src)) + else new /obj/effect/mob_spawn/human/pirate/corpse(get_turf(src)) + qdel(src) else ..() From 80e94373903f9a2ee0c2a687f8bfa1052f579a33 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Mon, 5 Apr 2021 21:47:15 -0700 Subject: [PATCH 033/154] add some game logging for good measure --- code/game/objects/structures/ghost_role_spawners.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 2e1f76cefe..6044912028 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -631,6 +631,7 @@ user.visible_message("[user] pries open the [src], disrupting the sleep of the pirate within and killing them.", "You pry open the [src], disrupting the sleep of the pirate within and killing them.", "You hear prying, followed by the death rattling of bones.") + log_game("[key_name(user)] has successfully pried open a [src] and disabled a space pirate spawner.") W.play_tool_sound(src) playsound(src.loc, 'modular_citadel/sound/voice/scream_skeleton.ogg', 50, 1, 4, 1.2) if(rank == "Captain") new /obj/effect/mob_spawn/human/pirate/corpse/captain(get_turf(src)) From de6b3552d5980d3b351b0c6ade1d9b1aaee70e86 Mon Sep 17 00:00:00 2001 From: BlueWildrose <57083662+BlueWildrose@users.noreply.github.com> Date: Mon, 5 Apr 2021 22:59:24 -0700 Subject: [PATCH 034/154] that grammar would make me mad if I left it there why did I do that --- code/game/objects/structures/ghost_role_spawners.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 6044912028..ffe2b8a492 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -631,7 +631,7 @@ user.visible_message("[user] pries open the [src], disrupting the sleep of the pirate within and killing them.", "You pry open the [src], disrupting the sleep of the pirate within and killing them.", "You hear prying, followed by the death rattling of bones.") - log_game("[key_name(user)] has successfully pried open a [src] and disabled a space pirate spawner.") + log_game("[key_name(user)] has successfully pried open [src] and disabled a space pirate spawner.") W.play_tool_sound(src) playsound(src.loc, 'modular_citadel/sound/voice/scream_skeleton.ogg', 50, 1, 4, 1.2) if(rank == "Captain") new /obj/effect/mob_spawn/human/pirate/corpse/captain(get_turf(src)) From 9239c1eb52efa09cee982b15c763ea7dd3c1b920 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Mon, 5 Apr 2021 23:06:35 -0700 Subject: [PATCH 035/154] Beaker swapping for Pandemic machine --- .../reagents/chemistry/machinery/pandemic.dm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 36e102be72..d92f969b0a 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -139,9 +139,12 @@ /obj/machinery/computer/pandemic/proc/eject_beaker() if(beaker) + var/obj/item/reagent_containers/B = beaker beaker.forceMove(drop_location()) beaker = null update_icon() + return B + return null /obj/machinery/computer/pandemic/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) @@ -237,14 +240,17 @@ . = TRUE //no afterattack if(stat & (NOPOWER|BROKEN)) return + var/obj/item/reagent_containers/B if(beaker) - to_chat(user, "A container is already loaded into [src]!") - return + B = eject_beaker() //now with 100% more swapping if(!user.transferItemToLoc(I, src)) return - + if(B) + if(user && Adjacent(user) && user.can_hold_items()) + user.put_in_hands(B) beaker = I - to_chat(user, "You insert [I] into [src].") + if(B) to_chat(user, "You remove [B] and insert [I] into [src].") + else to_chat(user, "You insert [I] into [src].") update_icon() else return ..() From 29bf226fe151504c2c1d8b568d17262f95ebc890 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Tue, 6 Apr 2021 18:18:08 -0300 Subject: [PATCH 036/154] upload closets.dm --- code/game/objects/structures/crates_lockers/closets.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 20e44aa093..00c4b1f7db 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -306,10 +306,12 @@ return if(user.transferItemToLoc(W, drop_location())) // so we put in unlit welder too return - else if(!opened && user.a_intent == INTENT_HELP && !W.tool_behaviour) + else if(!opened && user.a_intent == INTENT_HELP) var/item_is_id = W.GetID() if(!item_is_id) - open(user) + if(!open(user)) + togglelock(user) + return return if(item_is_id || !toggle(user)) togglelock(user) From eff724a3f51d121672e8f608e8f3eceba6afe93b Mon Sep 17 00:00:00 2001 From: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Tue, 6 Apr 2021 18:57:00 -0300 Subject: [PATCH 037/154] time to LOUD --- code/modules/power/supermatter/supermatter.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 1e82a601ea..87adcefeb3 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -390,7 +390,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) speaking = "[DisplayTimeText(i, TRUE)] remain before causality stabilization." else speaking = "[i*0.1]..." - radio.talk_into(src, speaking, common_channel) + radio.talk_into(src, speaking, common_channel, list(SPAN_COMMAND)) // IT GOT WORSE, LOUD TIME sleep(10) explode() @@ -715,7 +715,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Oh shit it's bad, time to freak out if(damage > emergency_point) - radio.talk_into(src, "[emergency_alert] Integrity: [get_integrity()]%", common_channel) + // it's bad, LETS YELL + radio.talk_into(src, "[emergency_alert] Integrity: [get_integrity()]%", common_channel, list(SPAN_YELL)) lastwarning = REALTIMEOFDAY if(!has_reached_emergency) investigate_log("has reached the emergency point for the first time.", INVESTIGATE_SUPERMATTER) From c15852f47b9920c230d6aef23b14617060cf51b3 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Tue, 6 Apr 2021 19:27:52 -0300 Subject: [PATCH 038/154] upload _machinery.dm --- code/game/machinery/_machinery.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index e37fd13106..d26f8c5639 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -519,6 +519,8 @@ Class Procs: //called on machinery construction (i.e from frame to machinery) but not on initialization /obj/machinery/proc/on_construction() + for(var/obj/I in contents) + I.moveToNullspace() return //called on deconstruction before the final deletion From 3cf25a8cc78da4e769e2c02326b7e133b74f11c7 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Tue, 6 Apr 2021 23:10:23 -0700 Subject: [PATCH 039/154] Slimeperson organs are now more confusing --- .../carbon/human/species_types/jellypeople.dm | 4 +++- code/modules/surgery/organs/heart.dm | 4 ++-- code/modules/surgery/organs/liver.dm | 5 +++++ code/modules/surgery/organs/lungs.dm | 1 + code/modules/surgery/organs/stomach.dm | 5 +++++ icons/obj/surgery.dmi | Bin 43965 -> 43972 bytes 6 files changed, 16 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 7a15fd2e5c..c37671cfc5 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -7,6 +7,9 @@ species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR,HAS_FLESH) mutantlungs = /obj/item/organ/lungs/slime mutant_heart = /obj/item/organ/heart/slime + mutantstomach = /obj/item/organ/stomach/slime + mutantliver = /obj/item/organ/liver/slime + mutant_brain = /obj/item/organ/brain/jelly mutant_bodyparts = list("mcolor" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade") inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime @@ -22,7 +25,6 @@ heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage species_language_holder = /datum/language_holder/jelly - mutant_brain = /obj/item/organ/brain/jelly tail_type = "mam_tail" wagging_type = "mam_waggingtail" diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index aaa4e34f36..4dba68ada3 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -98,8 +98,8 @@ failed = TRUE /obj/item/organ/heart/slime - name = "slime heart" - desc = "It seems we've gotten to the slimy core of the matter." + name = "mitochondria" + desc = "The powerhouse of the cell. Or in this case, the hearty organelle of a slimeperson." icon_state = "heart-s-on" icon_base = "heart-s" diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 69633c54df..16bfee8212 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -77,6 +77,11 @@ C.action_cooldown_mod *= value cachedmoveCalc = value +/obj/item/organ/liver/slime + name = "filtratum" //this is the name that Fermi came up with when testmerging that one thing that never got finished on Citadel - if Fermi ever updates this, this probably will have a lot more functionality. + icon_state = "liver-s" + desc = "An organelle resembling a liver for slimepeople." + /obj/item/organ/liver/fly name = "insectoid liver" icon_state = "liver-x" //xenomorph liver? It's just a black liver so it fits. diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 953c8b2c1b..594553c662 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -592,6 +592,7 @@ /obj/item/organ/lungs/slime name = "vacuole" desc = "A large organelle designed to store oxygen and other important gasses." + icon_state = "lungs-s" safe_toxins_max = 0 //We breathe this to gain POWER. diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index cabe49db25..7fbd1045a5 100644 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -78,6 +78,11 @@ SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "disgust") ..() +/obj/item/organ/stomach/slime + name = "macrolysosome" + icon_state = "stomach-s" + desc = "A slimeperson organelle resembling a stomach. It breaks down, or digests macromolecules. Or just food." + /obj/item/organ/stomach/fly name = "insectoid stomach" icon_state = "stomach-x" //xenomorph liver? It's just a black liver so it fits. diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 454138a2543e198d515f9cbfd5c6101705c1b7e6..be9cb74799de0c1e0762abe0252cbe4e2cc84f78 100755 GIT binary patch literal 43972 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 literal 43965 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 From 3d5878dd268352afd6c114fb08005f5024883f77 Mon Sep 17 00:00:00 2001 From: zerothebigboy Date: Wed, 7 Apr 2021 03:41:36 -0400 Subject: [PATCH 040/154] i --- _maps/map_files/BoxStation/BoxStation.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index ad4dd9ad26..2b231ff41c 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -10444,7 +10444,7 @@ /area/maintenance/port/fore) "avV" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/burger/ghost, +/obj/item/ectoplasm, /turf/open/floor/wood, /area/maintenance/port/fore) "avW" = ( From 657d1f69c81cdc57c442525cfba72492bc696cb9 Mon Sep 17 00:00:00 2001 From: zerothebigboy Date: Wed, 7 Apr 2021 04:18:04 -0400 Subject: [PATCH 041/154] sex --- .../mining/lavaland/necropolis_chests.dm | 12 +- .../hostile/megafauna/bubblegum.dm | 471 +++++++++++++----- 2 files changed, 356 insertions(+), 127 deletions(-) diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 9956fb1982..75f3913883 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -36,7 +36,7 @@ desc = "It's watching you suspiciously." /obj/structure/closet/crate/necropolis/tendril/magic/PopulateContents() - var/loot = rand(1,9) + var/loot = rand(1,10) switch(loot) if(1) new /obj/item/soulstone/anybody(src) @@ -57,6 +57,8 @@ new /obj/item/immortality_talisman(src) if(9) new /obj/item/gun/magic/wand/book/healing(src) + if(10) + new /obj/item/guardiancreator(src) /obj/structure/closet/crate/necropolis/tendril/weapon_armor/PopulateContents() var/loot = rand(1,11) @@ -128,7 +130,7 @@ new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src) /obj/structure/closet/crate/necropolis/tendril/all/PopulateContents() - var/loot = rand(1,28) + var/loot = rand(1,29) switch(loot) if(1) new /obj/item/shared_storage/red(src) @@ -192,6 +194,8 @@ new /obj/item/immortality_talisman(src) if(28) new /obj/item/gun/magic/wand/book/healing(src) + if(29) + new /obj/item/guardiancreator(src) //KA modkit design discs /obj/item/disk/design_disk/modkit_disc @@ -1094,14 +1098,12 @@ /obj/structure/closet/crate/necropolis/bubblegum/PopulateContents() new /obj/item/clothing/suit/space/hostile_environment(src) new /obj/item/clothing/head/helmet/space/hostile_environment(src) - var/loot = rand(1,3) + var/loot = rand(1,2) switch(loot) if(1) new /obj/item/mayhem(src) if(2) new /obj/item/book/granter/spell/asura(src) - if(3) - new /obj/item/guardiancreator(src) /obj/structure/closet/crate/necropolis/bubblegum/crusher name = "bloody bubblegum chest" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index d5b78b14b6..dc26057480 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -1,5 +1,3 @@ -#define MEDAL_PREFIX "Bubblegum" - /* BUBBLEGUM @@ -7,17 +5,18 @@ BUBBLEGUM Bubblegum spawns randomly wherever a lavaland creature is able to spawn. It is the most powerful slaughter demon in existence. Bubblegum's footsteps are heralded by shaking booms, proving its tremendous size. -It acts as a melee creature, chasing down and attacking its target while also using different attacks to augment its power that increase as it takes damage. +It acts as a melee creature, chasing down and attacking its target while also using different attacks to augment its power -It often charges, dealing massive damage to anything unfortunate enough to be standing where it's aiming. -Whenever it isn't chasing something down, it will sink into nearby blood pools (if possible) and springs out of the closest one to its target. -To make this possible, it sprays streams of blood at random. -From these blood pools Bubblegum may summon slaughterlings - weak, low-damage minions designed to impede the target's progress. +It leaves blood trails behind wherever it goes, its clones do as well. +It tries to strike at its target through any bloodpools under them; if it fails to do that. +If it does warp it will enter an enraged state, becoming immune to all projectiles, becoming much faster, and dealing damage and knockback to anything that gets in the cloud around it. +It may summon clones charging from all sides, one of these charges being bubblegum himself. +It can charge at its target, and also heavily damaging anything directly hit in the charge. +If at half health it will start to charge from all sides with clones. -When Bubblegum dies, it leaves behind a H.E.C.K. suit+helmet as well as a chest that can contain three things: - 1. A spellblade that can slice off limbs at range - 2. A bottle that, when activated, drives everyone nearby into a frenzy - 3. A super double-barrel shotgun that shoots both shells at the same time. +When Bubblegum dies, it leaves behind a H.E.C.K. mining suit as well as a chest that can contain three things: + 1. A bottle that, when activated, drives everyone nearby into a frenzy + 2. A scroll that teaches the reader a martial art that sacrifices health for raw demonic power with their bare hands. Difficulty: Hard @@ -42,15 +41,20 @@ Difficulty: Hard melee_damage_lower = 40 melee_damage_upper = 40 speed = 1 - move_to_delay = 10 - ranged_cooldown_time = 10 + move_to_delay = 5 + retreat_distance = 5 + minimum_distance = 5 + rapid_melee = 8 // every 1/4 second + melee_queue_distance = 20 // as far as possible really, need this because of blood warp ranged = 1 pixel_x = -32 gender = MALE del_on_death = 1 crusher_loot = list(/obj/structure/closet/crate/necropolis/bubblegum/crusher) loot = list(/obj/structure/closet/crate/necropolis/bubblegum) + blood_volume = BLOOD_VOLUME_MAXIMUM //BLEED FOR ME var/charging = 0 + var/enrage_till = null achievement_type = /datum/award/achievement/boss/bubblegum_kill crusher_achievement_type = /datum/award/achievement/boss/bubblegum_crusher @@ -67,36 +71,60 @@ Difficulty: Hard desc = "You're not quite sure how a signal can be bloody." invisibility = 100 -/mob/living/simple_animal/hostile/megafauna/bubblegum/BiologicalLife(seconds, times_fired) - if(!(. = ..())) - return - move_to_delay = clamp(round((health/maxHealth) * 10), 3, 10) +/mob/living/simple_animal/hostile/megafauna/bubblegum/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) + . = ..() + if(. > 0 && prob(25)) + var/obj/effect/decal/cleanable/blood/gibs/bubblegum/B = new /obj/effect/decal/cleanable/blood/gibs/bubblegum(loc) + if(prob(40)) + step(B, pick(GLOB.cardinals)) + else + B.setDir(pick(GLOB.cardinals)) + +/obj/effect/decal/cleanable/blood/gibs/bubblegum + name = "thick blood" + desc = "Thick, splattered blood." + random_icon_states = list("gib3", "gib5", "gib6") + bloodiness = 20 + +/obj/effect/decal/cleanable/blood/gibs/bubblegum/can_bloodcrawl_in() + return TRUE /mob/living/simple_animal/hostile/megafauna/bubblegum/OpenFire() - anger_modifier = clamp(((maxHealth - health)/50),0,20) + anger_modifier = clamp(((maxHealth - health)/60),0,20) if(charging) return - ranged_cooldown = world.time + ranged_cooldown_time + ranged_cooldown = world.time + 50 + if(!try_bloodattack()) + blood_warp() - blood_warp() - - if(prob(25)) - INVOKE_ASYNC(src, .proc/blood_spray) - - else if(prob(5+anger_modifier/2)) - slaughterlings() - else - if(health > maxHealth/2 && !client) - INVOKE_ASYNC(src, .proc/charge) + if(health > maxHealth * 0.5) + if(prob(50 + anger_modifier)) + charge(delay = 6) + charge(delay = 4) // The FitnessGram Pacer Test is a multistage aerobic capacity test that progressively gets more difficult as it continues. + charge(delay = 2) + SetRecoveryTime(15) else - INVOKE_ASYNC(src, .proc/triple_charge) + hallucination_charge_around(times = 6, delay = 10 - anger_modifier / 5) + SetRecoveryTime(10) + else + if(prob(50 - anger_modifier)) + hallucination_charge_around(times = 4, delay = 9) + hallucination_charge_around(times = 4, delay = 8) + hallucination_charge_around(times = 4, delay = 7) + SetRecoveryTime(15) + else + for(var/i = 1 to 5) + INVOKE_ASYNC(src, .proc/hallucination_charge_around, 2, 10, 2, 0) + sleep(5) + SetRecoveryTime(10) /mob/living/simple_animal/hostile/megafauna/bubblegum/Initialize() . = ..() - for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_list) - if(B != src) - return INITIALIZE_HINT_QDEL //There can be only one + if(istype(src, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination)) + return + for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_living_list) if(B != src) + return INITIALIZE_HINT_QDEL //There can be only one var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new AddSpell(bloodspell) if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) @@ -108,53 +136,79 @@ Difficulty: Hard if(.) SSshuttle.shuttle_purchase_requirements_met |= "bubblegum" -/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect) - if(charging) - return - ..() +/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon) + if(!charging) + ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/AttackingTarget() - if(charging) + if(!charging) + . = ..() + if(.) + recovery_time = world.time + 20 // can only attack melee once every 2 seconds but rapid_melee gives higher priority + +/mob/living/simple_animal/hostile/megafauna/bubblegum/bullet_act(obj/item/projectile/P) + if(is_enraged()) + visible_message("[src] deflects the projectile; [p_they()] can't be hit with ranged weapons while enraged!", "You deflect the projectile!") + playsound(src, pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg'), 300, 1) + return 0 + return ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/ex_act(severity, target) + if(severity >= EXPLODE_LIGHT) return - ..() + severity = EXPLODE_LIGHT // puny mortals + return ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination)) + return 1 + return ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/Goto(target, delay, minimum_distance) - if(charging) - return - ..() + if(!charging) + ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/MoveToTarget(list/possible_targets) + if(!charging) + ..() /mob/living/simple_animal/hostile/megafauna/bubblegum/Move() - if(!stat) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1, 2, 1) if(charging) - new/obj/effect/temp_visual/decoy/fading(loc,src) + new /obj/effect/temp_visual/decoy/fading(loc,src) DestroySurroundings() - . = ..() + ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/Moved() + new /obj/effect/decal/cleanable/blood(src.loc) if(charging) DestroySurroundings() + playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1, 2, 1) + return ..() -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/triple_charge() - charge() - sleep(10) - charge() - sleep(10) - charge() - -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge() - var/turf/T = get_turf(target) - if(!T || T == loc) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge(var/atom/chargeat = target, var/delay = 3, var/chargepast = 2) + if(!chargeat) return - new /obj/effect/temp_visual/dragon_swoop(T) + var/chargeturf = get_turf(chargeat) + if(!chargeturf) + return + var/dir = get_dir(src, chargeturf) + var/turf/T = get_ranged_target_turf(chargeturf, dir, chargepast) + if(!T) + return + new /obj/effect/temp_visual/dragon_swoop/bubblegum(T) charging = 1 DestroySurroundings() walk(src, 0) - setDir(get_dir(src, T)) + setDir(dir) var/obj/effect/temp_visual/decoy/D = new /obj/effect/temp_visual/decoy(loc,src) - animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 5) - sleep(5) - throw_at(T, get_dist(src, T), 1, src, 0) + animate(D, alpha = 0, color = "#FF0000", transform = matrix()*2, time = 3) + sleep(delay) + var/movespeed = 0.7 + walk_towards(src, T, movespeed) + sleep(get_dist(src, T) * movespeed) + walk(src, 0) // cancel the movement + try_bloodattack() charging = 0 - Goto(target, move_to_delay, minimum_distance) /** * Attack by override for bubblegum @@ -176,36 +230,147 @@ Difficulty: Hard if(isturf(A) || isobj(A) && A.density) A.ex_act(EXPLODE_HEAVY) DestroySurroundings() + if(isliving(A)) + var/mob/living/L = A + L.visible_message("[src] slams into [L]!", "[src] tramples you into the ground!") + src.forceMove(get_turf(L)) + L.apply_damage(istype(src, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination) ? 15 : 30, BRUTE) + playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1) + shake_camera(L, 4, 3) + shake_camera(src, 2, 3) ..() -/mob/living/simple_animal/hostile/megafauna/bubblegum/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - if(!charging) - return ..() +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/get_mobs_on_blood() + var/list/targets = ListTargets() + . = list() + for(var/mob/living/L in targets) + var/list/bloodpool = get_pools(get_turf(L), 0) + if(bloodpool.len && (!faction_check_mob(L) || L.stat == DEAD)) + . += L - else if(isliving(hit_atom)) - var/mob/living/L = hit_atom - L.visible_message("[src] slams into [L]!", "[src] slams into you!") - L.apply_damage(40, BRUTE) - playsound(get_turf(L), 'sound/effects/meteorimpact.ogg', 100, 1) - shake_camera(L, 4, 3) - shake_camera(src, 2, 3) - var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src))) - L.throw_at(throwtarget, 3) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack() + var/list/targets = get_mobs_on_blood() + if(targets.len) + INVOKE_ASYNC(src, .proc/bloodattack, targets, prob(50)) + return TRUE + return FALSE - charging = 0 +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodattack(list/targets, handedness) + var/mob/living/target_one = pick_n_take(targets) + var/turf/target_one_turf = get_turf(target_one) + var/mob/living/target_two + if(targets.len) + target_two = pick_n_take(targets) + var/turf/target_two_turf = get_turf(target_two) + if(target_two.stat != CONSCIOUS || prob(10)) + bloodgrab(target_two_turf, handedness) + else + bloodsmack(target_two_turf, handedness) + if(target_one) + var/list/pools = get_pools(get_turf(target_one), 0) + if(pools.len) + target_one_turf = get_turf(target_one) + if(target_one_turf) + if(target_one.stat != CONSCIOUS || prob(10)) + bloodgrab(target_one_turf, !handedness) + else + bloodsmack(target_one_turf, !handedness) + + if(!target_two && target_one) + var/list/poolstwo = get_pools(get_turf(target_one), 0) + if(poolstwo.len) + target_one_turf = get_turf(target_one) + if(target_one_turf) + if(target_one.stat != CONSCIOUS || prob(10)) + bloodgrab(target_one_turf, handedness) + else + bloodsmack(target_one_turf, handedness) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodsmack(turf/T, handedness) + if(handedness) + new /obj/effect/temp_visual/bubblegum_hands/rightsmack(T) + else + new /obj/effect/temp_visual/bubblegum_hands/leftsmack(T) + sleep(4) + for(var/mob/living/L in T) + if(!faction_check_mob(L)) + to_chat(L, "[src] rends you!") + playsound(T, attack_sound, 100, 1, -1) + var/limb_to_hit = L.get_bodypart(pick(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)) + L.apply_damage(10, BRUTE, limb_to_hit, L.run_armor_check(limb_to_hit, "melee", null, null, armour_penetration)) + sleep(3) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/bloodgrab(turf/T, handedness) + if(handedness) + new /obj/effect/temp_visual/bubblegum_hands/rightpaw(T) + new /obj/effect/temp_visual/bubblegum_hands/rightthumb(T) + else + new /obj/effect/temp_visual/bubblegum_hands/leftpaw(T) + new /obj/effect/temp_visual/bubblegum_hands/leftthumb(T) + sleep(6) + for(var/mob/living/L in T) + if(!faction_check_mob(L)) + if(L.stat != CONSCIOUS) + to_chat(L, "[src] drags you through the blood!") + playsound(T, 'sound/magic/enter_blood.ogg', 100, 1, -1) + var/turf/targetturf = get_step(src, dir) + L.forceMove(targetturf) + playsound(targetturf, 'sound/magic/exit_blood.ogg', 100, 1, -1) + addtimer(CALLBACK(src, .proc/devour, L), 2) + sleep(1) + +/obj/effect/temp_visual/dragon_swoop/bubblegum + duration = 10 + +/obj/effect/temp_visual/bubblegum_hands + icon = 'icons/effects/bubblegum.dmi' + duration = 9 + +/obj/effect/temp_visual/bubblegum_hands/rightthumb + icon_state = "rightthumbgrab" + +/obj/effect/temp_visual/bubblegum_hands/leftthumb + icon_state = "leftthumbgrab" + +/obj/effect/temp_visual/bubblegum_hands/rightpaw + icon_state = "rightpawgrab" + layer = BELOW_MOB_LAYER + +/obj/effect/temp_visual/bubblegum_hands/leftpaw + icon_state = "leftpawgrab" + layer = BELOW_MOB_LAYER + +/obj/effect/temp_visual/bubblegum_hands/rightsmack + icon_state = "rightsmack" + +/obj/effect/temp_visual/bubblegum_hands/leftsmack + icon_state = "leftsmack" /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_warp() + if(Adjacent(target) || (enrage_till + 30 > world.time)) + return FALSE + var/list/can_jaunt = get_pools(get_turf(src), 1) + if(!can_jaunt.len) + return FALSE + + var/list/pools = get_pools(get_turf(target), 2) + var/list/pools_to_remove = get_pools(get_turf(target), 1) + pools -= pools_to_remove + if(!pools.len) + return FALSE + + var/obj/effect/temp_visual/decoy/DA = new /obj/effect/temp_visual/decoy(loc,src) + DA.color = "#FF0000" + var/oldtransform = DA.transform + DA.transform = matrix()*2 + animate(DA, alpha = 255, color = initial(DA.color), transform = oldtransform, time = 3) + sleep(3) + qdel(DA) var/obj/effect/decal/cleanable/blood/found_bloodpool - var/list/pools = list() - var/can_jaunt = FALSE - for(var/obj/effect/decal/cleanable/blood/nearby in view(src,2)) - can_jaunt = TRUE - break - if(!can_jaunt) - return - for(var/obj/effect/decal/cleanable/blood/nearby in view(get_turf(target),2)) - pools += nearby + pools = get_pools(get_turf(target), 2) + pools_to_remove = get_pools(get_turf(target), 1) + pools -= pools_to_remove if(pools.len) shuffle_inplace(pools) found_bloodpool = pick(pools) @@ -215,48 +380,110 @@ Difficulty: Hard forceMove(get_turf(found_bloodpool)) playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) visible_message("And springs back out!") + blood_enrage() + return TRUE + return FALSE +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_enrage(var/boost_time = 30) + enrage_till = world.time + boost_time + retreat_distance = null + minimum_distance = 1 + change_move_delay(3.75) + var/newcolor = rgb(149, 10, 10) + add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) + var/datum/callback/cb = CALLBACK(src, .proc/blood_enrage_end) + addtimer(cb, boost_time) -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_spray() - visible_message("[src] sprays a stream of gore!") - var/turf/E = get_edge_target_turf(src, src.dir) - var/range = 10 - var/turf/previousturf = get_turf(src) - for(var/turf/J in getline(src,E)) - if(!range) - break - new /obj/effect/temp_visual/dir_setting/bloodsplatter(previousturf, get_dir(previousturf, J)) - if(!previousturf.CanAtmosPass(J)) - break - playsound(J,'sound/effects/splat.ogg', 100, 1, -1) - new /obj/effect/decal/cleanable/blood(J) - range-- - previousturf = J - sleep(1) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_enrage_end(var/newcolor = rgb(149, 10, 10)) + retreat_distance = initial(retreat_distance) + minimum_distance = initial(minimum_distance) + change_move_delay() + remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, newcolor) -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/slaughterlings() - visible_message("[src] summons a shoal of slaughterlings!") - for(var/obj/effect/decal/cleanable/blood/H in range(src, 10)) - if(prob(25)) - new /mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter(H.loc) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/is_enraged() + return (enrage_till > world.time) -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter - name = "slaughterling" - desc = "Though not yet strong enough to create a true physical form, it's nonetheless determined to murder you." - icon_state = "bloodbrood" - icon_living = "bloodbrood" - icon_aggro = "bloodbrood" - attack_verb_continuous = "pierces" - attack_verb_simple = "pierce" - color = "#C80000" - density = FALSE - faction = list("mining", "boss") - weather_immunities = list("lava","ash") - has_field_of_vision = FALSE +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/change_move_delay(var/newmove = initial(move_to_delay)) + move_to_delay = newmove + handle_automated_action() // need to recheck movement otherwise move_to_delay won't update until the next checking aka will be wrong speed for a bit -/mob/living/simple_animal/hostile/asteroid/hivelordbrood/slaughter/CanPass(atom/movable/mover, turf/target) - if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum)) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/get_pools(turf/T, range) + . = list() + for(var/obj/effect/decal/cleanable/nearby in view(T, range)) + if(nearby.can_bloodcrawl_in()) + . += nearby + +/obj/effect/decal/cleanable/blood/bubblegum + bloodiness = 0 + +/obj/effect/decal/cleanable/blood/bubblegum/can_bloodcrawl_in() + return TRUE + +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/hallucination_charge_around(var/times = 4, var/delay = 6, var/chargepast = 0, var/useoriginal = 1) + var/startingangle = rand(1, 360) + if(!target) + return + var/turf/chargeat = get_turf(target) + var/srcplaced = 0 + for(var/i = 1 to times) + var/ang = (startingangle + 360/times * i) + if(!chargeat) + return + var/turf/place = locate(chargeat.x + cos(ang) * times, chargeat.y + sin(ang) * times, chargeat.z) + if(!place) + continue + if(!srcplaced && useoriginal) + forceMove(place) + srcplaced = 1 + continue + var/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/B = new /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination(src.loc) + B.forceMove(place) + INVOKE_ASYNC(B, .proc/charge, chargeat, delay, chargepast) + if(useoriginal) + charge(chargeat, delay, chargepast) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination + name = "bubblegum's hallucination" + desc = "Is that really just a hallucination?" + health = 1 + maxHealth = 1 + alpha = 127.5 + crusher_loot = null + loot = null + deathmessage = "Explodes into a pool of blood!" + deathsound = 'sound/effects/splat.ogg' + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/Initialize() + ..() + toggle_ai(AI_OFF) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/charge() + ..() + qdel(src) + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/Destroy() + new /obj/effect/decal/cleanable/blood(get_turf(src)) + . = ..() + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/CanPass(atom/movable/mover, turf/target) + if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum)) // hallucinations should not be stopping bubblegum or eachother return 1 - return 0 + return ..() -#undef MEDAL_PREFIX +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/Life() + return + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) + return + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/OpenFire() + return + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/AttackingTarget() + return + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/try_bloodattack() + return + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/grant_achievement(medaltype,scoretype) + return From cb7259f4e2d844e6d0e7aadfaeb2f10cc6b198e5 Mon Sep 17 00:00:00 2001 From: zerothebigboy Date: Wed, 7 Apr 2021 04:44:57 -0400 Subject: [PATCH 042/154] sex --- .../mob/living/simple_animal/hostile/megafauna/bubblegum.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index dc26057480..12cbb82f9a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -71,7 +71,7 @@ Difficulty: Hard desc = "You're not quite sure how a signal can be bloody." invisibility = 100 -/mob/living/simple_animal/hostile/megafauna/bubblegum/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/simple_animal/hostile/megafauna/bubblegum/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) . = ..() if(. > 0 && prob(25)) var/obj/effect/decal/cleanable/blood/gibs/bubblegum/B = new /obj/effect/decal/cleanable/blood/gibs/bubblegum(loc) @@ -473,7 +473,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/Life() return -/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE) +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/adjustBruteLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) return /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/OpenFire() From c104ab1fc46d7bd61b2588778e9a949182e87a34 Mon Sep 17 00:00:00 2001 From: zerothebigboy Date: Wed, 7 Apr 2021 04:54:06 -0400 Subject: [PATCH 043/154] sex --- .../mob/living/simple_animal/hostile/megafauna/bubblegum.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 12cbb82f9a..72a72d3683 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -136,7 +136,7 @@ Difficulty: Hard if(.) SSshuttle.shuttle_purchase_requirements_met |= "bubblegum" -/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon) +/mob/living/simple_animal/hostile/megafauna/bubblegum/do_attack_animation(atom/A, visual_effect_icon, obj/item/used_item, no_effect) if(!charging) ..() @@ -185,7 +185,7 @@ Difficulty: Hard playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1, 2, 1) return ..() -/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge(var/atom/chargeat = target, var/delay = 3, var/chargepast = 2) +/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/charge(atom/chargeat = target, delay = 3, chargepast = 2) if(!chargeat) return var/chargeturf = get_turf(chargeat) @@ -457,7 +457,7 @@ Difficulty: Hard ..() toggle_ai(AI_OFF) -/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/charge() +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/charge(atom/chargeat = target, delay = 3, chargepast = 2) ..() qdel(src) From cd81345e9fb77a3696453d604786e6af7f030d84 Mon Sep 17 00:00:00 2001 From: Blue Wildrose Date: Wed, 7 Apr 2021 15:00:09 -0700 Subject: [PATCH 044/154] Polishing up the new slimeperson organs also WHY IS THE SLIMEBRAIN SPRITE GONE --- code/modules/mob/living/brain/brain_item.dm | 5 +++++ .../carbon/human/species_types/jellypeople.dm | 7 +------ code/modules/surgery/organs/liver.dm | 2 +- code/modules/surgery/organs/lungs.dm | 2 +- code/modules/surgery/organs/stomach.dm | 4 ++-- icons/obj/surgery.dmi | Bin 43972 -> 44539 bytes 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 59a119a89a..c31b566cf3 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -297,6 +297,11 @@ icon = 'icons/obj/surgery.dmi' icon_state = "posibrain-ipc" +/obj/item/organ/brain/slime + name = "slime nucleus" + desc = "A slimey membranous mass from a slimeperson." + icon_state = "brain-s" + ////////////////////////////////////TRAUMAS//////////////////////////////////////// diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index c37671cfc5..2f463fa8bc 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -9,7 +9,7 @@ mutant_heart = /obj/item/organ/heart/slime mutantstomach = /obj/item/organ/stomach/slime mutantliver = /obj/item/organ/liver/slime - mutant_brain = /obj/item/organ/brain/jelly + mutant_brain = /obj/item/organ/brain/slime mutant_bodyparts = list("mcolor" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade") inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime @@ -31,11 +31,6 @@ species_category = SPECIES_CATEGORY_JELLY ass_image = 'icons/ass/assslime.png' -/obj/item/organ/brain/jelly - name = "slime nucleus" - desc = "A slimey membranous mass from a slime person" - icon_state = "brain-slime" - /datum/species/jelly/on_species_loss(mob/living/carbon/C) C.faction -= "slime" if(ishuman(C)) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 16bfee8212..749f5a8c38 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -78,7 +78,7 @@ cachedmoveCalc = value /obj/item/organ/liver/slime - name = "filtratum" //this is the name that Fermi came up with when testmerging that one thing that never got finished on Citadel - if Fermi ever updates this, this probably will have a lot more functionality. + name = "viscoplasm" //this is the name that Fermis came up with when working on that organ PR that never got finished - if Fermis ever updates this, this probably will have a lot more functionality. icon_state = "liver-s" desc = "An organelle resembling a liver for slimepeople." diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 594553c662..083c71fda2 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -591,8 +591,8 @@ /obj/item/organ/lungs/slime name = "vacuole" - desc = "A large organelle designed to store oxygen and other important gasses." icon_state = "lungs-s" + desc = "A large organelle designed to store oxygen and other important gasses." safe_toxins_max = 0 //We breathe this to gain POWER. diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 7fbd1045a5..ba7b950602 100644 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -79,9 +79,9 @@ ..() /obj/item/organ/stomach/slime - name = "macrolysosome" + name = "macrolysosome" //an original cell has multiple lysosomes, but in this case a slimeperson only really has one... a big one? probably give it "macro" in the name. icon_state = "stomach-s" - desc = "A slimeperson organelle resembling a stomach. It breaks down, or digests macromolecules. Or just food." + desc = "A slimeperson organelle resembling a stomach. It breaks down, or digests macromolecules. Or food and drinks." /obj/item/organ/stomach/fly name = "insectoid stomach" diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index be9cb74799de0c1e0762abe0252cbe4e2cc84f78..0460934eee163988b724d4398cf7cade6593aadd 100755 GIT binary patch literal 44539 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