From 0779dd560ee61292b47ba699f1fee2ae37fde0cd Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 29 Jun 2020 18:52:37 +0200 Subject: [PATCH] More and more fixes. --- code/__DEFINES/dcs/signals.dm | 6 +++--- code/__DEFINES/materials.dm | 3 +-- code/datums/status_effects/debuffs.dm | 3 ++- code/game/atoms.dm | 2 +- code/game/mecha/mecha_topic.dm | 2 +- code/game/objects/items/melee/misc.dm | 2 +- code/game/objects/items/stacks/stack.dm | 4 ++-- code/game/objects/items/storage/toolbox.dm | 2 +- .../objects/structures/beds_chairs/chair.dm | 4 ++-- code/game/objects/structures/tables_racks.dm | 2 +- code/game/objects/structures/watercloset.dm | 4 ++-- code/modules/clothing/head/helmet.dm | 2 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/mining/ores_coins.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 2 +- .../mob/living/carbon/human/species.dm | 2 +- code/modules/mob/say.dm | 6 ++++++ .../icons/mob/mutant_bodyparts.dmi | Bin 8936 -> 8947 bytes 18 files changed, 28 insertions(+), 22 deletions(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 4a1739437a..c6b008329a 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -141,10 +141,10 @@ #define HEARING_SPEAKER 2 // #define HEARING_LANGUAGE 3 #define HEARING_RAW_MESSAGE 4 - /* #define HEARING_RADIO_FREQ 5 - #define HEARING_SPANS 6 +// #define HEARING_RADIO_FREQ 5 +// #define HEARING_SPANS 6 #define HEARING_MESSAGE_MODE 7 - #define HEARING_SOURCE 8*/ +// #define HEARING_SOURCE 8 #define COMSIG_MOVABLE_DISPOSING "movable_disposing" //called when the movable is added to a disposal holder object for disposal movement: (obj/structure/disposalholder/holder, obj/machinery/disposal/source) #define COMSIG_MOVABLE_TELEPORTED "movable_teleported" //from base of do_teleport(): (channel, turf/origin, turf/destination) diff --git a/code/__DEFINES/materials.dm b/code/__DEFINES/materials.dm index e7e62aafe1..72e827a7c8 100644 --- a/code/__DEFINES/materials.dm +++ b/code/__DEFINES/materials.dm @@ -10,7 +10,6 @@ /// Flag for atoms, this flag ensures it isn't re-colored by materials. Useful for snowflake icons such as default toolboxes. #define MATERIAL_COLOR (1<<0) #define MATERIAL_ADD_PREFIX (1<<1) -#define MATERIAL_EFFECTS (1<<2) -#define MATERIAL_AFFECT_STATISTICS (1<<3) +#define MATERIAL_AFFECT_STATISTICS (1<<2) #define MATERIAL_SOURCE(mat) "[mat.name]_material" \ No newline at end of file diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 3493661028..f6cfc79879 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -711,8 +711,9 @@ datum/status_effect/pacify if(hearing_args[HEARING_SPEAKER] == owner) return var/mob/living/carbon/C = owner + var/hypnomsg = uncostumize_say(hearing_args[HEARING_RAW_MESSAGE], hearing_args[HEARING_MESSAGE_MODE]) C.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) //clear previous hypnosis - addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10) + addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hypnomsg), 10) addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it qdel(src) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f3c3588c07..ee348670e6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1019,7 +1019,7 @@ Proc for attack log creation, because really why not custom_materials = null return - if(material_flags & MATERIAL_EFFECTS) + if(material_flags) for(var/x in materials) var/datum/material/custom_material = SSmaterials.GetMaterialRef(x) custom_material.on_applied(src, materials[x] * multiplier * material_modifier, material_flags) diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index b1ab944b49..8b6146dee7 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -256,7 +256,7 @@ output_access_dialog(id_card, usr) if(href_list["del_req_access"] && add_req_access) - operation_req_access -= text2num(href_list["add_req_access"]) + operation_req_access -= text2num(href_list["del_req_access"]) output_access_dialog(id_card, usr) if(href_list["finish_req_access"]) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 741607edc3..c6aa9f7bf4 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -689,7 +689,7 @@ item_state = "mace_greyscale" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS //Material type changes the prefix as well as the color. + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Material type changes the prefix as well as the color. custom_materials = list(/datum/material/iron = 12000) //Defaults to an Iron Mace. slot_flags = ITEM_SLOT_BELT force = 14 diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index b124908bf2..16b46567c7 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -312,14 +312,14 @@ /obj/item/stack/use(used, transfer = FALSE, check = TRUE) // return 0 = borked; return 1 = had enough if(check && zero_amount()) - return TRUE + return FALSE if (is_cyborg) return source.use_charge(used * cost) if (amount < used) return FALSE amount -= used if(check && zero_amount()) - return FALSE + return TRUE if(length(mats_per_unit)) var/temp_materials = custom_materials.Copy() for(var/i in mats_per_unit) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 7e89ddbd8d..fd50bd022f 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -25,7 +25,7 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) icon_state = "toolbox_default" item_state = "toolbox_default" can_rubberify = FALSE - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS /obj/item/storage/toolbox/Initialize(mapload) if(has_latches) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 2225c4c0c2..299ba7b659 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -155,7 +155,7 @@ ///Material chair /obj/structure/chair/greyscale icon_state = "chair_greyscale" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS item_chair = /obj/item/chair/greyscale buildstacktype = null //Custom mats handle this @@ -384,7 +384,7 @@ /obj/item/chair/greyscale icon_state = "chair_greyscale_toppled" item_state = "chair_greyscale" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS origin_type = /obj/structure/chair/greyscale /obj/item/chair/stool diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 575310191a..777be608b5 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -220,7 +220,7 @@ /obj/structure/table/greyscale icon = 'icons/obj/smooth_structures/table_greyscale.dmi' icon_state = "table" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS buildstack = null //No buildstack, so generate from mat datums ///Table on wheels diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 41e7c6c60f..fdb01be661 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -157,7 +157,7 @@ secret_type = /obj/effect/spawner/lootdrop/prison_loot_toilet /obj/structure/toilet/greyscale - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR buildstacktype = null /obj/structure/urinal @@ -723,7 +723,7 @@ /obj/structure/sink/greyscale icon_state = "sink_greyscale" - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR buildstacktype = null //Shower Curtains// diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 8f852356b7..662318fb82 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -244,7 +244,7 @@ icon_state = "knight_greyscale" item_state = "knight_greyscale" armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40) - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS //Can change color and add prefix + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix /obj/item/clothing/head/helmet/skull name = "skull helmet" diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 557b4860c9..0ef1a83bf5 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -286,7 +286,7 @@ icon_state = "knight_greyscale" item_state = "knight_greyscale" armor = list("melee" = 35, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 10, "bio" = 10, "rad" = 10, "fire" = 40, "acid" = 40) - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS //Can change color and add prefix + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix /obj/item/clothing/suit/armor/vest/durathread name = "makeshift vest" diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index f429230453..36e607c0b8 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -334,7 +334,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ throwforce = 2 w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron = 400) - material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_EFFECTS + material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS var/string_attached var/list/sideslist = list("heads","tails") var/cooldown = 0 diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 7ce0fd38da..bfa9c40a7c 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -76,7 +76,7 @@ if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest) affecting = bodyparts[1] SEND_SIGNAL(I, COMSIG_ITEM_ATTACK_ZONE, src, user, affecting) - send_item_attack_message(I, user, affecting.name) + send_item_attack_message(I, user, affecting.name, totitemdamage) I.do_stagger_action(src, user, totitemdamage) if(I.force) apply_damage(totitemdamage, I.damtype, affecting) //CIT CHANGE - replaces I.force with totitemdamage diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index f7ba185800..65313dbc37 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1727,7 +1727,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/weakness = H.check_weakness(I, user) apply_damage(totitemdamage * weakness, I.damtype, def_zone, armor_block, H) //CIT CHANGE - replaces I.force with totitemdamage - H.send_item_attack_message(I, user, hit_area) + H.send_item_attack_message(I, user, hit_area, totitemdamage) I.do_stagger_action(H, user, totitemdamage) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index a403845ee2..14ddc5c720 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -57,6 +57,12 @@ else return ..() +/proc/uncostumize_say(input, message_mode) + . = input + if(message_mode == MODE_CUSTOM_SAY) + var/customsayverb = findtext(input, "*") + return lowertext(copytext_char(input, 1, customsayverb)) + /mob/proc/whisper_keybind() var/message = input(src, "", "whisper") as text|null if(!length(message)) diff --git a/modular_citadel/icons/mob/mutant_bodyparts.dmi b/modular_citadel/icons/mob/mutant_bodyparts.dmi index 95b121b4533bcc1115c37f46c9de951609bfc25d..6098dd356795760387859e41a85d15a47fc6c3b6 100644 GIT binary patch delta 3657 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