From 98f817cc059c7705e3e943e89b047191442f22c9 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 00:07:32 +0100 Subject: [PATCH 01/18] Adds jestosterone --- code/modules/mob/living/carbon/carbon.dm | 2 + .../mob/living/carbon/carbon_defense.dm | 7 ++++ code/modules/mob/living/carbon/human/say.dm | 2 +- .../living/carbon/human/species/_species.dm | 3 +- .../reagents/chemistry/reagents/misc.dm | 38 +++++++++++++++++++ .../reagents/chemistry/recipes/others.dm | 9 +++++ paradise.dme | 2 +- 7 files changed, 60 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ca791c9e400..018a039568c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -25,6 +25,8 @@ /mob/living/carbon/Move(NewLoc, direct) . = ..() if(.) + if(reagents.has_reagent("jestosterone")) + playsound(loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! if(nutrition && stat != DEAD) nutrition -= hunger_drain / 10 if(m_intent == MOVE_INTENT_RUN) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index d4cafa847fd..10e83e07b5f 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -26,6 +26,8 @@ for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 + if(reagents.has_reagent("jestosterone") && I.force) + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) return ..() /mob/living/carbon/attack_hand(mob/living/carbon/human/user) @@ -61,6 +63,11 @@ updatehealth("slime attack") return 1 +/mob/living/carbon/attack_alien(mob/living/carbon/alien/humanoid/M) + if((M.a_intent == INTENT_HARM) && reagents.has_reagent("jestosterone")) + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) + ..() + /mob/living/carbon/is_mouth_covered(head_only = FALSE, mask_only = FALSE) if((!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))) return TRUE diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 8d9355c1f26..840c45e389e 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -116,7 +116,7 @@ || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) \ || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) span = "sans" - + var/list/parent = ..() verb = parent["verb"] diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index fd376b8022c..5714b29085c 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -381,7 +381,8 @@ playsound(target.loc, attack.attack_sound, 25, 1, -1) target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!") - + if(target.reagents.has_reagent("jestosterone")) + playsound(target.loc, 'sound/items/bikehorn.ogg', 50, 1) target.apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway. if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold) target.visible_message("[user] has weakened [target]!", \ diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 531202b153e..cf0b3650c5e 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -410,6 +410,44 @@ /datum/reagent/love/reaction_mob(mob/living/M, method=TOUCH, volume) to_chat(M, "You feel loved!") +/datum/reagent/jestosterone //Formerly known as Nitrogen tungstide hypochlorite before NT fired the chemists for trying to be funny + name = "Jestosterone" + id = "jestosterone" + description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication." + color = "#ff00ff" //Fuchsia, pity we can't do rainbow here + taste_message = "a funny flavour" + +/datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) + if(ishuman(M) && M.job in list("Clown")) + to_chat(M, "Whatever that was, it feels great!") + else + to_chat(M, "Something doesn't feel right...") + M.AdjustDizzy(volume) + ..() + +/datum/reagent/jestosterone/on_mob_life(mob/living/M) + if(prob(10)) + M.emote("giggle") + if(ishuman(M) && M.job in list("Clown")) + M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + else + M.AdjustDizzy(10, 0, 500) + M.Druggy(15) + if(prob(10)) + M.EyeBlurry(5) + else if(prob(5)) + var/list/clown_message = list("You feel light-headed.", + "You can't see straight.", + "You feel about as funny as the station clown.", + "Bright colours and rainbows cloud your vision.", + "Your funny bone aches.", + "You can hear bike horns in the distance.", + "You feel like SHOUTING!", + "Sinister laughter echoes in your ears.", + "Your legs feel like jelly.", + "You feel like telling a pun.") + to_chat(M, "[pick(clown_message)]") + ..() /datum/reagent/royal_bee_jelly name = "royal bee jelly" diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 4651ba0f87c..b56c22d8069 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -290,6 +290,15 @@ result_amount = 2 mix_message = "The substance gives off a lovely scent!" +/datum/chemical_reaction/jestosterone + name = "Jestosterone" + id = "jestosterone" + result = "jestosterone" + required_reagents = list("blood" = 1, "sodiumchloride" = 1, "banana" = 1, "lube" = 1, "mercury" = 1) //Or one freshly-squeezed clown + min_temp = 374 + result_amount = 5 + mix_message = "The substance quickly shifts colour, cycling from red, to yellow, to green, to blue, and finally settles at a vibrant fuchsia." + /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" diff --git a/paradise.dme b/paradise.dme index 3d9f758719f..a760aa77b87 100644 --- a/paradise.dme +++ b/paradise.dme @@ -2350,4 +2350,4 @@ #include "goon\code\datums\browserOutput.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -// END_INCLUDE \ No newline at end of file +// END_INCLUDE From 10ec28deb9d3481c728e0fc0c20de75e71e23302 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 08:15:27 +0100 Subject: [PATCH 02/18] Removes jestosterone triggering upon alien attack, uses space drugs instead of mercury in its creation --- code/modules/mob/living/carbon/carbon_defense.dm | 5 ----- code/modules/reagents/chemistry/recipes/others.dm | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 10e83e07b5f..c26dd5168c7 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -63,11 +63,6 @@ updatehealth("slime attack") return 1 -/mob/living/carbon/attack_alien(mob/living/carbon/alien/humanoid/M) - if((M.a_intent == INTENT_HARM) && reagents.has_reagent("jestosterone")) - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) - ..() - /mob/living/carbon/is_mouth_covered(head_only = FALSE, mask_only = FALSE) if((!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))) return TRUE diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index b56c22d8069..ae04f1320d0 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -294,7 +294,7 @@ name = "Jestosterone" id = "jestosterone" result = "jestosterone" - required_reagents = list("blood" = 1, "sodiumchloride" = 1, "banana" = 1, "lube" = 1, "mercury" = 1) //Or one freshly-squeezed clown + required_reagents = list("blood" = 1, "sodiumchloride" = 1, "banana" = 1, "lube" = 1, "space_drugs" = 1) //Or one freshly-squeezed clown min_temp = 374 result_amount = 5 mix_message = "The substance quickly shifts colour, cycling from red, to yellow, to green, to blue, and finally settles at a vibrant fuchsia." From 7262e4f326e146036234ee7c81b3fcd9af6e3439 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 21:22:24 +0100 Subject: [PATCH 03/18] Jestosterone plays a honk when mixed; better way of handling job check --- code/modules/reagents/chemistry/reagents/misc.dm | 10 ++++++---- code/modules/reagents/chemistry/recipes/others.dm | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index cf0b3650c5e..a116efcfda4 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -418,24 +418,26 @@ taste_message = "a funny flavour" /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) - if(ishuman(M) && M.job in list("Clown")) + ..() + if(M.reagents.has_reagent("jestosterone")) + return + if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) to_chat(M, "Whatever that was, it feels great!") else to_chat(M, "Something doesn't feel right...") M.AdjustDizzy(volume) - ..() /datum/reagent/jestosterone/on_mob_life(mob/living/M) if(prob(10)) M.emote("giggle") - if(ishuman(M) && M.job in list("Clown")) + if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! else M.AdjustDizzy(10, 0, 500) M.Druggy(15) if(prob(10)) M.EyeBlurry(5) - else if(prob(5)) + if(prob(6)) var/list/clown_message = list("You feel light-headed.", "You can't see straight.", "You feel about as funny as the station clown.", diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index ae04f1320d0..0259ed89e86 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -299,6 +299,9 @@ result_amount = 5 mix_message = "The substance quickly shifts colour, cycling from red, to yellow, to green, to blue, and finally settles at a vibrant fuchsia." +/datum/chemical_reaction/jestosterone/on_reaction(datum/reagents/holder, created_volume) + playsound(get_turf(holder.my_atom), 'sound/items/bikehorn.ogg', 50, 1) + /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" From d69de66e13ea1c6e2c5b6fc9f883e0de1a90e176 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 21:30:10 +0100 Subject: [PATCH 04/18] Moves stuff round slightly --- code/modules/reagents/chemistry/reagents/misc.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index a116efcfda4..bdfbc5c8560 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -419,13 +419,12 @@ /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) ..() - if(M.reagents.has_reagent("jestosterone")) - return if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) to_chat(M, "Whatever that was, it feels great!") else - to_chat(M, "Something doesn't feel right...") M.AdjustDizzy(volume) + if(!M.reagents.has_reagent("jestosterone")) + to_chat(M, "Something doesn't feel right...") /datum/reagent/jestosterone/on_mob_life(mob/living/M) if(prob(10)) From 449d0246e80968673f621fb71d27a385c4204053 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 4 Aug 2018 17:01:08 +0100 Subject: [PATCH 05/18] Adds jestosterone component --- code/__DEFINES/components.dm | 4 ++ code/_onclick/item_attack.dm | 6 ++- code/datums/components/jestosterone.dm | 44 ++++++++++++++++++ code/modules/admin/verbs/honksquad.dm | 1 + code/modules/mob/living/carbon/carbon.dm | 2 - .../mob/living/carbon/carbon_defense.dm | 2 - .../living/carbon/human/species/_species.dm | 3 +- code/modules/mob/living/living.dm | 1 + code/modules/mob/living/living_defense.dm | 1 + .../reagents/chemistry/reagents/misc.dm | 38 ++++++--------- .../reagents/reagent_containers/patch.dm | 8 +++- icons/obj/chemical.dmi | Bin 36362 -> 36539 bytes paradise.dme | 1 + 13 files changed, 77 insertions(+), 34 deletions(-) create mode 100644 code/datums/components/jestosterone.dm diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 87b9094b47e..8bf1fa25429 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -55,6 +55,7 @@ #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob) +#define COMSIG_ATOM_ATTACK_ALIEN "atom_attack_alien" //from base of atom/attack_alien() #define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): () #define COMSIG_ATOM_RAD_ACT "atom_rad_act" //from base of atom/rad_act(intensity) @@ -220,6 +221,9 @@ //Food #define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) +//Reagents +#define COMSIG_ON_MOB_LIFE "on_mob_life" //Called when a reagent calls on_mob_life + //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index e36d5c027f5..370a5bb7db7 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -63,8 +63,10 @@ if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) - else if(hitsound) - playsound(loc, hitsound, get_clamped_volume(), 1, -1) + else + M.SendSignal(COMSIG_ITEM_ATTACK, M) + if(hitsound) + playsound(loc, hitsound, get_clamped_volume(), 1, -1) user.lastattacked = M M.lastattacker = user diff --git a/code/datums/components/jestosterone.dm b/code/datums/components/jestosterone.dm new file mode 100644 index 00000000000..04752403508 --- /dev/null +++ b/code/datums/components/jestosterone.dm @@ -0,0 +1,44 @@ +/datum/component/jestosterone + var/mob_is_clown //Is the affected mob a clown? + +/datum/component/jestosterone/Initialize(mob/user, is_this_mob_a_clown) + mob_is_clown = is_this_mob_a_clown + if(mob_is_clown) + to_chat(user, "Whatever that was, it feels great!") + else + to_chat(user, "Something doesn't feel right...") + RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/on_move) + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/mob_was_attacked) + RegisterSignal(COMSIG_ITEM_ATTACK, .proc/mob_was_attacked) + RegisterSignal(COMSIG_ATOM_ATTACK_ALIEN, .proc/mob_was_attacked) + RegisterSignal(COMSIG_ON_MOB_LIFE, .proc/process_jestosterone) + +/datum/component/jestosterone/proc/on_move(mob/user) + playsound(user.loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! + +/datum/component/jestosterone/proc/mob_was_attacked(mob/user) + to_chat(user, "was attacked") + playsound(user.loc, 'sound/items/bikehorn.ogg', 50, 1) + +/datum/component/jestosterone/proc/process_jestosterone(mob/living/user) + if(prob(10)) + user.emote("giggle") + if(mob_is_clown) + user.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + else + user.AdjustDizzy(10, 0, 500) + user.Druggy(15) + if(prob(10)) + user.EyeBlurry(5) + if(prob(6)) + var/list/clown_message = list("You feel light-headed.", + "You can't see straight.", + "You feel about as funny as the station clown.", + "Bright colours and rainbows cloud your vision.", + "Your funny bone aches.", + "You can hear bike horns in the distance.", + "You feel like SHOUTING!", + "Sinister laughter echoes in your ears.", + "Your legs feel like jelly.", + "You feel like telling a pun.") + to_chat(user, "[pick(clown_message)]") diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index c9068049c75..ce1803c2067 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -119,6 +119,7 @@ var/global/sent_honksquad = 0 equip_to_slot_or_del(new /obj/item/stamp/clown(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/toy/crayon/rainbow(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/reagent_containers/spray/waterflower(src), slot_in_backpack) + equip_to_slot_or_del(new /obj/item/reagent_containers/food/pill/patch/jestosterone(src), slot_r_store) if(prob(50)) equip_to_slot_or_del(new /obj/item/gun/energy/clown(src), slot_in_backpack) else diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 018a039568c..ca791c9e400 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -25,8 +25,6 @@ /mob/living/carbon/Move(NewLoc, direct) . = ..() if(.) - if(reagents.has_reagent("jestosterone")) - playsound(loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! if(nutrition && stat != DEAD) nutrition -= hunger_drain / 10 if(m_intent == MOVE_INTENT_RUN) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index c26dd5168c7..d4cafa847fd 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -26,8 +26,6 @@ for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 - if(reagents.has_reagent("jestosterone") && I.force) - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) return ..() /mob/living/carbon/attack_hand(mob/living/carbon/human/user) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 5714b29085c..37ad1545eca 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -381,8 +381,6 @@ playsound(target.loc, attack.attack_sound, 25, 1, -1) target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!") - if(target.reagents.has_reagent("jestosterone")) - playsound(target.loc, 'sound/items/bikehorn.ogg', 50, 1) target.apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway. if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold) target.visible_message("[user] has weakened [target]!", \ @@ -391,6 +389,7 @@ target.forcesay(GLOB.hit_appends) else if(target.lying) target.forcesay(GLOB.hit_appends) + target.SendSignal(COMSIG_PARENT_ATTACKBY, target) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) if(target.check_block()) //cqc diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 62b9cf6cd65..4c303c476f0 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -508,6 +508,7 @@ var/turf/T = loc . = ..() if(.) + SendSignal(COMSIG_MOVABLE_MOVED, src) handle_footstep(loc) step_count++ diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index cfe35b58983..2677b5a0f9e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -333,6 +333,7 @@ return FALSE if(INTENT_HARM) M.do_attack_animation(src) + SendSignal(COMSIG_ATOM_ATTACK_ALIEN, src) return TRUE if(INTENT_DISARM) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index bdfbc5c8560..942772b654b 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -419,37 +419,25 @@ /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) ..() + if(istype(M, /mob/living/carbon) + return + var/is_a_clown = FALSE if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) - to_chat(M, "Whatever that was, it feels great!") - else + is_a_clown = TRUE + if(!is_a_clown) M.AdjustDizzy(volume) - if(!M.reagents.has_reagent("jestosterone")) - to_chat(M, "Something doesn't feel right...") + if(!issilicon(user)) + M.AddComponent(/datum/component/jestosterone, M, is_a_clown) /datum/reagent/jestosterone/on_mob_life(mob/living/M) - if(prob(10)) - M.emote("giggle") - if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) - M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! - else - M.AdjustDizzy(10, 0, 500) - M.Druggy(15) - if(prob(10)) - M.EyeBlurry(5) - if(prob(6)) - var/list/clown_message = list("You feel light-headed.", - "You can't see straight.", - "You feel about as funny as the station clown.", - "Bright colours and rainbows cloud your vision.", - "Your funny bone aches.", - "You can hear bike horns in the distance.", - "You feel like SHOUTING!", - "Sinister laughter echoes in your ears.", - "Your legs feel like jelly.", - "You feel like telling a pun.") - to_chat(M, "[pick(clown_message)]") + M.SendSignal(COMSIG_ON_MOB_LIFE, M) ..() +/datum/reagent/jestosterone/on_mob_delete(mob/living/M) + ..() + GET_COMPONENT_FROM(remove_fun, /datum/component/jestosterone, M) + remove_fun.Destroy() + /datum/reagent/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index b9faa296987..486111821f1 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -37,4 +37,10 @@ /obj/item/reagent_containers/food/pill/patch/nicotine name = "nicotine patch" desc = "Helps temporarily curb the cravings of nicotine dependency." - list_reagents = list("nicotine" = 20) \ No newline at end of file + list_reagents = list("nicotine" = 20) + +/obj/item/reagent_containers/food/pill/patch/jestosterone + name = "jestosterone patch" + desc = "Helps with brute injuries if the affected person is a clown, otherwise inflicts various annoying effects." + icon_state = "bandaid_clown" + list_reagents = list("jestosterone" = 30) diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index f12159de67dc8954110b8f915eeafefc38722950..f692814d18c64efa250846bcc98f1744cfe5fa92 100644 GIT binary patch literal 36539 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 eAP7S1=Klji61KO|N+?qR0000 Date: Sat, 4 Aug 2018 17:04:51 +0100 Subject: [PATCH 06/18] Whoops --- code/datums/components/jestosterone.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/datums/components/jestosterone.dm b/code/datums/components/jestosterone.dm index 04752403508..82ad7e57436 100644 --- a/code/datums/components/jestosterone.dm +++ b/code/datums/components/jestosterone.dm @@ -14,10 +14,9 @@ RegisterSignal(COMSIG_ON_MOB_LIFE, .proc/process_jestosterone) /datum/component/jestosterone/proc/on_move(mob/user) - playsound(user.loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! + playsound(user.loc, "clownstep", 25, 1) /datum/component/jestosterone/proc/mob_was_attacked(mob/user) - to_chat(user, "was attacked") playsound(user.loc, 'sound/items/bikehorn.ogg', 50, 1) /datum/component/jestosterone/proc/process_jestosterone(mob/living/user) From 5dc1dc2b48aed617d2622245a5c3d41b4cecaae1 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 4 Aug 2018 17:16:07 +0100 Subject: [PATCH 07/18] whoopsie --- code/modules/reagents/chemistry/reagents/misc.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 942772b654b..8ea8692beff 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -419,15 +419,14 @@ /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) ..() - if(istype(M, /mob/living/carbon) + if(istype(M, /mob/living/carbon)) return var/is_a_clown = FALSE if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) is_a_clown = TRUE if(!is_a_clown) M.AdjustDizzy(volume) - if(!issilicon(user)) - M.AddComponent(/datum/component/jestosterone, M, is_a_clown) + M.AddComponent(/datum/component/jestosterone, M, is_a_clown) /datum/reagent/jestosterone/on_mob_life(mob/living/M) M.SendSignal(COMSIG_ON_MOB_LIFE, M) From 772cfec02bd5f920c9ba1a1cac2ebaec740e8cdc Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 5 Jan 2019 16:50:11 +0000 Subject: [PATCH 08/18] Uses squeak component to do this, fixes broken stuff & Travis --- code/__DEFINES/components.dm | 4 -- code/_onclick/item_attack.dm | 2 +- code/datums/components/jestosterone.dm | 44 +------------- code/datums/components/squeak.dm | 17 ++++-- code/modules/mob/living/carbon/human/say.dm | 3 +- .../living/carbon/human/species/_species.dm | 2 +- code/modules/mob/living/living.dm | 4 +- code/modules/mob/living/living_defense.dm | 1 - code/modules/reagents/chemistry/holder.dm | 2 +- .../reagents/chemistry/reagents/misc.dm | 60 +++++++++++++++---- 10 files changed, 70 insertions(+), 69 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 8bf1fa25429..87b9094b47e 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -55,7 +55,6 @@ #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob) -#define COMSIG_ATOM_ATTACK_ALIEN "atom_attack_alien" //from base of atom/attack_alien() #define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): () #define COMSIG_ATOM_RAD_ACT "atom_rad_act" //from base of atom/rad_act(intensity) @@ -221,9 +220,6 @@ //Food #define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) -//Reagents -#define COMSIG_ON_MOB_LIFE "on_mob_life" //Called when a reagent calls on_mob_life - //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 370a5bb7db7..0492fe10d20 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -64,7 +64,7 @@ if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) else - M.SendSignal(COMSIG_ITEM_ATTACK, M) + SEND_SIGNAL(M, COMSIG_ITEM_ATTACK) if(hitsound) playsound(loc, hitsound, get_clamped_volume(), 1, -1) diff --git a/code/datums/components/jestosterone.dm b/code/datums/components/jestosterone.dm index 82ad7e57436..f37f1f03efb 100644 --- a/code/datums/components/jestosterone.dm +++ b/code/datums/components/jestosterone.dm @@ -1,43 +1,5 @@ /datum/component/jestosterone - var/mob_is_clown //Is the affected mob a clown? + var/mind_type //Is the affected mob a clown / mime? -/datum/component/jestosterone/Initialize(mob/user, is_this_mob_a_clown) - mob_is_clown = is_this_mob_a_clown - if(mob_is_clown) - to_chat(user, "Whatever that was, it feels great!") - else - to_chat(user, "Something doesn't feel right...") - RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/on_move) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/mob_was_attacked) - RegisterSignal(COMSIG_ITEM_ATTACK, .proc/mob_was_attacked) - RegisterSignal(COMSIG_ATOM_ATTACK_ALIEN, .proc/mob_was_attacked) - RegisterSignal(COMSIG_ON_MOB_LIFE, .proc/process_jestosterone) - -/datum/component/jestosterone/proc/on_move(mob/user) - playsound(user.loc, "clownstep", 25, 1) - -/datum/component/jestosterone/proc/mob_was_attacked(mob/user) - playsound(user.loc, 'sound/items/bikehorn.ogg', 50, 1) - -/datum/component/jestosterone/proc/process_jestosterone(mob/living/user) - if(prob(10)) - user.emote("giggle") - if(mob_is_clown) - user.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! - else - user.AdjustDizzy(10, 0, 500) - user.Druggy(15) - if(prob(10)) - user.EyeBlurry(5) - if(prob(6)) - var/list/clown_message = list("You feel light-headed.", - "You can't see straight.", - "You feel about as funny as the station clown.", - "Bright colours and rainbows cloud your vision.", - "Your funny bone aches.", - "You can hear bike horns in the distance.", - "You feel like SHOUTING!", - "Sinister laughter echoes in your ears.", - "Your legs feel like jelly.", - "You feel like telling a pun.") - to_chat(user, "[pick(clown_message)]") +/datum/component/jestosterone/Initialize(mind_type_arg) + mind_type = mind_type_arg diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index e9b6bb6e42a..3fe88f7d0e9 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -14,7 +14,7 @@ var/last_use = 0 var/use_delay = 20 -/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override) +/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override, squeak_on_move) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) @@ -22,6 +22,8 @@ RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/play_squeak_crossed) RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) + if(squeak_on_move) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_squeak) if(isitem(parent)) RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak) @@ -47,12 +49,15 @@ else playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1) -/datum/component/squeak/proc/step_squeak() - if(steps > step_delay) - play_squeak() - steps = 0 +/datum/component/squeak/proc/step_squeak(datum/source, mob/living/carbon/human/H) + if(H.m_intent == MOVE_INTENT_RUN) + if(steps > step_delay) + play_squeak() + steps = 0 + else + steps++ else - steps++ + play_squeak() /datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot) RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 840c45e389e..3bdcf33362c 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -114,7 +114,8 @@ if((COMIC in mutations) \ || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) \ - || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) + || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown) \ + || GetComponent(/datum/component/jestosterone)) span = "sans" var/list/parent = ..() diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 37ad1545eca..a9aa56bf4d7 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -389,7 +389,7 @@ target.forcesay(GLOB.hit_appends) else if(target.lying) target.forcesay(GLOB.hit_appends) - target.SendSignal(COMSIG_PARENT_ATTACKBY, target) + SEND_SIGNAL(target, COMSIG_PARENT_ATTACKBY) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) if(target.check_block()) //cqc diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4c303c476f0..aef51257512 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -508,7 +508,7 @@ var/turf/T = loc . = ..() if(.) - SendSignal(COMSIG_MOVABLE_MOVED, src) + SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED) handle_footstep(loc) step_count++ @@ -883,7 +883,7 @@ // If we're pulling something then drop what we're currently pulling and pull this instead. AM.add_fingerprint(src) if(pulling) - if(AM == pulling)// Are we trying to pull something we are already pulling? Then just stop here, no need to continue. + if(AM == pulling)// Are we trying to pull something we are already pulling? Then just stop here, no need to continue. return stop_pulling() if(AM.pulledby) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 2677b5a0f9e..cfe35b58983 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -333,7 +333,6 @@ return FALSE if(INTENT_HARM) M.do_attack_animation(src) - SendSignal(COMSIG_ATOM_ATTACK_ALIEN, src) return TRUE if(INTENT_DISARM) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index cbe8c43b936..b04cbd9494f 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -577,9 +577,9 @@ var/const/INGEST = 2 reagent_list += R R.holder = src R.volume = amount + R.on_new(data) if(data) R.data = data - R.on_new(data) update_total() if(my_atom) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 8ea8692beff..f4e37590bac 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -417,25 +417,63 @@ color = "#ff00ff" //Fuchsia, pity we can't do rainbow here taste_message = "a funny flavour" -/datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) +/datum/reagent/jestosterone/on_new() ..() - if(istype(M, /mob/living/carbon)) + var/mob/living/carbon/C = holder.my_atom + if(!istype(C)) return - var/is_a_clown = FALSE - if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) - is_a_clown = TRUE - if(!is_a_clown) - M.AdjustDizzy(volume) - M.AddComponent(/datum/component/jestosterone, M, is_a_clown) + var/mind_type = FALSE + if(C.mind) + if(C.mind.assigned_role == "Clown" || C.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD) + mind_type = "Clown" + to_chat(C, "Whatever that was, it feels great!") + else if(C.mind.assigned_role == "Mime") + mind_type = "Mime" + to_chat(C, "You feel nauseous.") + C.AdjustDizzy(volume) + else + to_chat(C, "Something doesn't feel right...") + C.AdjustDizzy(volume) + C.AddComponent(/datum/component/jestosterone, mind_type) + C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE) -/datum/reagent/jestosterone/on_mob_life(mob/living/M) - M.SendSignal(COMSIG_ON_MOB_LIFE, M) - ..() +/datum/reagent/jestosterone/on_mob_life(mob/living/carbon/M) + if(!istype(M)) + return ..() + var/update_flags = STATUS_UPDATE_NONE + if(prob(10)) + M.emote("giggle") + GET_COMPONENT_FROM(jestosterone_component, /datum/component/jestosterone, M) + if(jestosterone_component.mind_type == "Clown") + update_flags |= M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + else + M.AdjustDizzy(10, 0, 500) + M.Druggy(15) + if(prob(10)) + M.EyeBlurry(5) + if(prob(6)) + var/list/clown_message = list("You feel light-headed.", + "You can't see straight.", + "You feel about as funny as the station clown.", + "Bright colours and rainbows cloud your vision.", + "Your funny bone aches.", + "What was that?!", + "You can hear bike horns in the distance.", + "You feel like SHOUTING!", + "Sinister laughter echoes in your ears.", + "Your legs feel like jelly.", + "You feel like telling a pun.") + to_chat(M, "[pick(clown_message)]") + if(jestosterone_component.mind_type == "Mime") + update_flags |= M.adjustToxLoss(1.5 * REAGENTS_EFFECT_MULTIPLIER) + return ..() | update_flags /datum/reagent/jestosterone/on_mob_delete(mob/living/M) ..() GET_COMPONENT_FROM(remove_fun, /datum/component/jestosterone, M) + GET_COMPONENT_FROM(squeaking, /datum/component/squeak, M) remove_fun.Destroy() + squeaking.Destroy() /datum/reagent/royal_bee_jelly name = "royal bee jelly" From ce1f62030cb23041b29badaf51324bd18a645013 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 5 Jan 2019 18:58:01 +0000 Subject: [PATCH 09/18] slight jestosterone description tweak --- code/modules/reagents/chemistry/reagents/misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index f4e37590bac..4d0aa16d101 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -413,7 +413,7 @@ /datum/reagent/jestosterone //Formerly known as Nitrogen tungstide hypochlorite before NT fired the chemists for trying to be funny name = "Jestosterone" id = "jestosterone" - description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication." + description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication, and is toxic to mimes." color = "#ff00ff" //Fuchsia, pity we can't do rainbow here taste_message = "a funny flavour" From 3f57d62efbdd2855e7e80de5ff5e9ce4ca6995b1 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 00:07:32 +0100 Subject: [PATCH 10/18] Adds jestosterone --- code/modules/mob/living/carbon/carbon.dm | 2 + .../mob/living/carbon/carbon_defense.dm | 7 ++++ code/modules/mob/living/carbon/human/say.dm | 3 -- .../living/carbon/human/species/_species.dm | 3 +- .../reagents/chemistry/reagents/misc.dm | 38 +++++++++++++++++++ .../reagents/chemistry/recipes/others.dm | 9 +++++ 6 files changed, 58 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 8a6324e0ebd..bfad9a4db9a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -25,6 +25,8 @@ /mob/living/carbon/Move(NewLoc, direct) . = ..() if(.) + if(reagents.has_reagent("jestosterone")) + playsound(loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! if(nutrition && stat != DEAD) nutrition -= hunger_drain / 10 if(m_intent == MOVE_INTENT_RUN) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index d4cafa847fd..10e83e07b5f 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -26,6 +26,8 @@ for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 + if(reagents.has_reagent("jestosterone") && I.force) + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) return ..() /mob/living/carbon/attack_hand(mob/living/carbon/human/user) @@ -61,6 +63,11 @@ updatehealth("slime attack") return 1 +/mob/living/carbon/attack_alien(mob/living/carbon/alien/humanoid/M) + if((M.a_intent == INTENT_HARM) && reagents.has_reagent("jestosterone")) + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) + ..() + /mob/living/carbon/is_mouth_covered(head_only = FALSE, mask_only = FALSE) if((!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))) return TRUE diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 4d97ddfd78a..0410a179cc9 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -124,9 +124,6 @@ || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) span = "sans" - if(WINGDINGS in mutations) - span = "wingdings" - var/list/parent = ..() verb = parent["verb"] diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index bc276b05b00..d7a9ed07f21 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -381,7 +381,8 @@ playsound(target.loc, attack.attack_sound, 25, 1, -1) target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!") - + if(target.reagents.has_reagent("jestosterone")) + playsound(target.loc, 'sound/items/bikehorn.ogg', 50, 1) target.apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway. if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold) target.visible_message("[user] has weakened [target]!", \ diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 02e8d1da21c..a5d665b1d0a 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -419,6 +419,44 @@ /datum/reagent/love/reaction_mob(mob/living/M, method=TOUCH, volume) to_chat(M, "You feel loved!") +/datum/reagent/jestosterone //Formerly known as Nitrogen tungstide hypochlorite before NT fired the chemists for trying to be funny + name = "Jestosterone" + id = "jestosterone" + description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication." + color = "#ff00ff" //Fuchsia, pity we can't do rainbow here + taste_message = "a funny flavour" + +/datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) + if(ishuman(M) && M.job in list("Clown")) + to_chat(M, "Whatever that was, it feels great!") + else + to_chat(M, "Something doesn't feel right...") + M.AdjustDizzy(volume) + ..() + +/datum/reagent/jestosterone/on_mob_life(mob/living/M) + if(prob(10)) + M.emote("giggle") + if(ishuman(M) && M.job in list("Clown")) + M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + else + M.AdjustDizzy(10, 0, 500) + M.Druggy(15) + if(prob(10)) + M.EyeBlurry(5) + else if(prob(5)) + var/list/clown_message = list("You feel light-headed.", + "You can't see straight.", + "You feel about as funny as the station clown.", + "Bright colours and rainbows cloud your vision.", + "Your funny bone aches.", + "You can hear bike horns in the distance.", + "You feel like SHOUTING!", + "Sinister laughter echoes in your ears.", + "Your legs feel like jelly.", + "You feel like telling a pun.") + to_chat(M, "[pick(clown_message)]") + ..() /datum/reagent/royal_bee_jelly name = "royal bee jelly" diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 4651ba0f87c..b56c22d8069 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -290,6 +290,15 @@ result_amount = 2 mix_message = "The substance gives off a lovely scent!" +/datum/chemical_reaction/jestosterone + name = "Jestosterone" + id = "jestosterone" + result = "jestosterone" + required_reagents = list("blood" = 1, "sodiumchloride" = 1, "banana" = 1, "lube" = 1, "mercury" = 1) //Or one freshly-squeezed clown + min_temp = 374 + result_amount = 5 + mix_message = "The substance quickly shifts colour, cycling from red, to yellow, to green, to blue, and finally settles at a vibrant fuchsia." + /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" From d45e33efb5ab7984d32df72f69f66ba48f90a6b3 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 08:15:27 +0100 Subject: [PATCH 11/18] Removes jestosterone triggering upon alien attack, uses space drugs instead of mercury in its creation --- code/modules/mob/living/carbon/carbon_defense.dm | 5 ----- code/modules/reagents/chemistry/recipes/others.dm | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 10e83e07b5f..c26dd5168c7 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -63,11 +63,6 @@ updatehealth("slime attack") return 1 -/mob/living/carbon/attack_alien(mob/living/carbon/alien/humanoid/M) - if((M.a_intent == INTENT_HARM) && reagents.has_reagent("jestosterone")) - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) - ..() - /mob/living/carbon/is_mouth_covered(head_only = FALSE, mask_only = FALSE) if((!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))) return TRUE diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index b56c22d8069..ae04f1320d0 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -294,7 +294,7 @@ name = "Jestosterone" id = "jestosterone" result = "jestosterone" - required_reagents = list("blood" = 1, "sodiumchloride" = 1, "banana" = 1, "lube" = 1, "mercury" = 1) //Or one freshly-squeezed clown + required_reagents = list("blood" = 1, "sodiumchloride" = 1, "banana" = 1, "lube" = 1, "space_drugs" = 1) //Or one freshly-squeezed clown min_temp = 374 result_amount = 5 mix_message = "The substance quickly shifts colour, cycling from red, to yellow, to green, to blue, and finally settles at a vibrant fuchsia." From c1e9137fa3d12e100fbcb749afdb7ee389e7bdc5 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 21:22:24 +0100 Subject: [PATCH 12/18] Jestosterone plays a honk when mixed; better way of handling job check --- code/modules/reagents/chemistry/reagents/misc.dm | 10 ++++++---- code/modules/reagents/chemistry/recipes/others.dm | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index a5d665b1d0a..f83cf0022be 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -427,24 +427,26 @@ taste_message = "a funny flavour" /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) - if(ishuman(M) && M.job in list("Clown")) + ..() + if(M.reagents.has_reagent("jestosterone")) + return + if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) to_chat(M, "Whatever that was, it feels great!") else to_chat(M, "Something doesn't feel right...") M.AdjustDizzy(volume) - ..() /datum/reagent/jestosterone/on_mob_life(mob/living/M) if(prob(10)) M.emote("giggle") - if(ishuman(M) && M.job in list("Clown")) + if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! else M.AdjustDizzy(10, 0, 500) M.Druggy(15) if(prob(10)) M.EyeBlurry(5) - else if(prob(5)) + if(prob(6)) var/list/clown_message = list("You feel light-headed.", "You can't see straight.", "You feel about as funny as the station clown.", diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index ae04f1320d0..0259ed89e86 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -299,6 +299,9 @@ result_amount = 5 mix_message = "The substance quickly shifts colour, cycling from red, to yellow, to green, to blue, and finally settles at a vibrant fuchsia." +/datum/chemical_reaction/jestosterone/on_reaction(datum/reagents/holder, created_volume) + playsound(get_turf(holder.my_atom), 'sound/items/bikehorn.ogg', 50, 1) + /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" From e71dfaf730ff2a094f79bea24d63ae034555d207 Mon Sep 17 00:00:00 2001 From: Citinited Date: Wed, 1 Aug 2018 21:30:10 +0100 Subject: [PATCH 13/18] Moves stuff round slightly --- code/modules/reagents/chemistry/reagents/misc.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index f83cf0022be..a5376cf06a8 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -428,13 +428,12 @@ /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) ..() - if(M.reagents.has_reagent("jestosterone")) - return if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) to_chat(M, "Whatever that was, it feels great!") else - to_chat(M, "Something doesn't feel right...") M.AdjustDizzy(volume) + if(!M.reagents.has_reagent("jestosterone")) + to_chat(M, "Something doesn't feel right...") /datum/reagent/jestosterone/on_mob_life(mob/living/M) if(prob(10)) From 4913f343ede9884dc8865e861d4b75779bf11df9 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 4 Aug 2018 17:01:08 +0100 Subject: [PATCH 14/18] Adds jestosterone component --- code/__DEFINES/components.dm | 4 ++ code/_onclick/item_attack.dm | 6 ++- code/datums/components/jestosterone.dm | 44 ++++++++++++++++++ code/modules/admin/verbs/honksquad.dm | 1 + code/modules/mob/living/carbon/carbon.dm | 2 - .../mob/living/carbon/carbon_defense.dm | 2 - .../living/carbon/human/species/_species.dm | 3 +- code/modules/mob/living/living.dm | 1 + code/modules/mob/living/living_defense.dm | 1 + .../reagents/chemistry/reagents/misc.dm | 38 ++++++--------- .../reagents/reagent_containers/patch.dm | 8 +++- icons/obj/chemical.dmi | Bin 36362 -> 36539 bytes paradise.dme | 1 + 13 files changed, 77 insertions(+), 34 deletions(-) create mode 100644 code/datums/components/jestosterone.dm diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 87b9094b47e..8bf1fa25429 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -55,6 +55,7 @@ #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob) +#define COMSIG_ATOM_ATTACK_ALIEN "atom_attack_alien" //from base of atom/attack_alien() #define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): () #define COMSIG_ATOM_RAD_ACT "atom_rad_act" //from base of atom/rad_act(intensity) @@ -220,6 +221,9 @@ //Food #define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) +//Reagents +#define COMSIG_ON_MOB_LIFE "on_mob_life" //Called when a reagent calls on_mob_life + //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index d69c7fbf28f..da462cb97ed 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -63,8 +63,10 @@ if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) - else if(hitsound) - playsound(loc, hitsound, get_clamped_volume(), 1, -1) + else + M.SendSignal(COMSIG_ITEM_ATTACK, M) + if(hitsound) + playsound(loc, hitsound, get_clamped_volume(), 1, -1) user.lastattacked = M M.lastattacker = user diff --git a/code/datums/components/jestosterone.dm b/code/datums/components/jestosterone.dm new file mode 100644 index 00000000000..04752403508 --- /dev/null +++ b/code/datums/components/jestosterone.dm @@ -0,0 +1,44 @@ +/datum/component/jestosterone + var/mob_is_clown //Is the affected mob a clown? + +/datum/component/jestosterone/Initialize(mob/user, is_this_mob_a_clown) + mob_is_clown = is_this_mob_a_clown + if(mob_is_clown) + to_chat(user, "Whatever that was, it feels great!") + else + to_chat(user, "Something doesn't feel right...") + RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/on_move) + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/mob_was_attacked) + RegisterSignal(COMSIG_ITEM_ATTACK, .proc/mob_was_attacked) + RegisterSignal(COMSIG_ATOM_ATTACK_ALIEN, .proc/mob_was_attacked) + RegisterSignal(COMSIG_ON_MOB_LIFE, .proc/process_jestosterone) + +/datum/component/jestosterone/proc/on_move(mob/user) + playsound(user.loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! + +/datum/component/jestosterone/proc/mob_was_attacked(mob/user) + to_chat(user, "was attacked") + playsound(user.loc, 'sound/items/bikehorn.ogg', 50, 1) + +/datum/component/jestosterone/proc/process_jestosterone(mob/living/user) + if(prob(10)) + user.emote("giggle") + if(mob_is_clown) + user.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + else + user.AdjustDizzy(10, 0, 500) + user.Druggy(15) + if(prob(10)) + user.EyeBlurry(5) + if(prob(6)) + var/list/clown_message = list("You feel light-headed.", + "You can't see straight.", + "You feel about as funny as the station clown.", + "Bright colours and rainbows cloud your vision.", + "Your funny bone aches.", + "You can hear bike horns in the distance.", + "You feel like SHOUTING!", + "Sinister laughter echoes in your ears.", + "Your legs feel like jelly.", + "You feel like telling a pun.") + to_chat(user, "[pick(clown_message)]") diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index c9068049c75..ce1803c2067 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -119,6 +119,7 @@ var/global/sent_honksquad = 0 equip_to_slot_or_del(new /obj/item/stamp/clown(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/toy/crayon/rainbow(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/reagent_containers/spray/waterflower(src), slot_in_backpack) + equip_to_slot_or_del(new /obj/item/reagent_containers/food/pill/patch/jestosterone(src), slot_r_store) if(prob(50)) equip_to_slot_or_del(new /obj/item/gun/energy/clown(src), slot_in_backpack) else diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index bfad9a4db9a..8a6324e0ebd 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -25,8 +25,6 @@ /mob/living/carbon/Move(NewLoc, direct) . = ..() if(.) - if(reagents.has_reagent("jestosterone")) - playsound(loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! if(nutrition && stat != DEAD) nutrition -= hunger_drain / 10 if(m_intent == MOVE_INTENT_RUN) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index c26dd5168c7..d4cafa847fd 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -26,8 +26,6 @@ for(var/datum/surgery/S in surgeries) if(S.next_step(user, src)) return 1 - if(reagents.has_reagent("jestosterone") && I.force) - playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) return ..() /mob/living/carbon/attack_hand(mob/living/carbon/human/user) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index d7a9ed07f21..fc5d3156b01 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -381,8 +381,6 @@ playsound(target.loc, attack.attack_sound, 25, 1, -1) target.visible_message("[user] [pick(attack.attack_verb)]ed [target]!") - if(target.reagents.has_reagent("jestosterone")) - playsound(target.loc, 'sound/items/bikehorn.ogg', 50, 1) target.apply_damage(damage, BRUTE, affecting, armor_block, sharp = attack.sharp) //moving this back here means Armalis are going to knock you down 70% of the time, but they're pure adminbus anyway. if((target.stat != DEAD) && damage >= user.dna.species.punchstunthreshold) target.visible_message("[user] has weakened [target]!", \ @@ -391,6 +389,7 @@ target.forcesay(GLOB.hit_appends) else if(target.lying) target.forcesay(GLOB.hit_appends) + target.SendSignal(COMSIG_PARENT_ATTACKBY, target) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) if(target.check_block()) //cqc diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 25380d26fb2..f045b54b8d8 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -508,6 +508,7 @@ var/turf/T = loc . = ..() if(.) + SendSignal(COMSIG_MOVABLE_MOVED, src) handle_footstep(loc) step_count++ diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index cfe35b58983..2677b5a0f9e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -333,6 +333,7 @@ return FALSE if(INTENT_HARM) M.do_attack_animation(src) + SendSignal(COMSIG_ATOM_ATTACK_ALIEN, src) return TRUE if(INTENT_DISARM) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index a5376cf06a8..bd004ff2c20 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -428,37 +428,25 @@ /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) ..() + if(istype(M, /mob/living/carbon) + return + var/is_a_clown = FALSE if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) - to_chat(M, "Whatever that was, it feels great!") - else + is_a_clown = TRUE + if(!is_a_clown) M.AdjustDizzy(volume) - if(!M.reagents.has_reagent("jestosterone")) - to_chat(M, "Something doesn't feel right...") + if(!issilicon(user)) + M.AddComponent(/datum/component/jestosterone, M, is_a_clown) /datum/reagent/jestosterone/on_mob_life(mob/living/M) - if(prob(10)) - M.emote("giggle") - if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) - M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! - else - M.AdjustDizzy(10, 0, 500) - M.Druggy(15) - if(prob(10)) - M.EyeBlurry(5) - if(prob(6)) - var/list/clown_message = list("You feel light-headed.", - "You can't see straight.", - "You feel about as funny as the station clown.", - "Bright colours and rainbows cloud your vision.", - "Your funny bone aches.", - "You can hear bike horns in the distance.", - "You feel like SHOUTING!", - "Sinister laughter echoes in your ears.", - "Your legs feel like jelly.", - "You feel like telling a pun.") - to_chat(M, "[pick(clown_message)]") + M.SendSignal(COMSIG_ON_MOB_LIFE, M) ..() +/datum/reagent/jestosterone/on_mob_delete(mob/living/M) + ..() + GET_COMPONENT_FROM(remove_fun, /datum/component/jestosterone, M) + remove_fun.Destroy() + /datum/reagent/royal_bee_jelly name = "royal bee jelly" id = "royal_bee_jelly" diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index b9faa296987..486111821f1 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -37,4 +37,10 @@ /obj/item/reagent_containers/food/pill/patch/nicotine name = "nicotine patch" desc = "Helps temporarily curb the cravings of nicotine dependency." - list_reagents = list("nicotine" = 20) \ No newline at end of file + list_reagents = list("nicotine" = 20) + +/obj/item/reagent_containers/food/pill/patch/jestosterone + name = "jestosterone patch" + desc = "Helps with brute injuries if the affected person is a clown, otherwise inflicts various annoying effects." + icon_state = "bandaid_clown" + list_reagents = list("jestosterone" = 30) diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index f12159de67dc8954110b8f915eeafefc38722950..f692814d18c64efa250846bcc98f1744cfe5fa92 100644 GIT binary patch literal 36539 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 eAP7S1=Klji61KO|N+?qR0000 Date: Sat, 4 Aug 2018 17:04:51 +0100 Subject: [PATCH 15/18] Whoops --- code/datums/components/jestosterone.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/datums/components/jestosterone.dm b/code/datums/components/jestosterone.dm index 04752403508..82ad7e57436 100644 --- a/code/datums/components/jestosterone.dm +++ b/code/datums/components/jestosterone.dm @@ -14,10 +14,9 @@ RegisterSignal(COMSIG_ON_MOB_LIFE, .proc/process_jestosterone) /datum/component/jestosterone/proc/on_move(mob/user) - playsound(user.loc, "clownstep", 25, 1) //Yes, this means that if you put jestosterone inside an alien, it will squeak. Also it stacks with shoes, THE HORROR! + playsound(user.loc, "clownstep", 25, 1) /datum/component/jestosterone/proc/mob_was_attacked(mob/user) - to_chat(user, "was attacked") playsound(user.loc, 'sound/items/bikehorn.ogg', 50, 1) /datum/component/jestosterone/proc/process_jestosterone(mob/living/user) From 27b7c87585625ac14fc5e75c8ede56d67d2f399a Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 4 Aug 2018 17:16:07 +0100 Subject: [PATCH 16/18] whoopsie --- code/modules/reagents/chemistry/reagents/misc.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index bd004ff2c20..993edd5ec44 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -428,15 +428,14 @@ /datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) ..() - if(istype(M, /mob/living/carbon) + if(istype(M, /mob/living/carbon)) return var/is_a_clown = FALSE if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) is_a_clown = TRUE if(!is_a_clown) M.AdjustDizzy(volume) - if(!issilicon(user)) - M.AddComponent(/datum/component/jestosterone, M, is_a_clown) + M.AddComponent(/datum/component/jestosterone, M, is_a_clown) /datum/reagent/jestosterone/on_mob_life(mob/living/M) M.SendSignal(COMSIG_ON_MOB_LIFE, M) From eebd8d782f9cb905d3165b06850ec83d1786ed15 Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 5 Jan 2019 16:50:11 +0000 Subject: [PATCH 17/18] Uses squeak component to do this, fixes broken stuff & Travis --- code/__DEFINES/components.dm | 4 -- code/_onclick/item_attack.dm | 2 +- code/datums/components/jestosterone.dm | 44 +------------- code/datums/components/squeak.dm | 17 ++++-- code/modules/mob/living/carbon/human/say.dm | 3 +- .../living/carbon/human/species/_species.dm | 2 +- code/modules/mob/living/living.dm | 4 +- code/modules/mob/living/living_defense.dm | 1 - code/modules/reagents/chemistry/holder.dm | 2 +- .../reagents/chemistry/reagents/misc.dm | 60 +++++++++++++++---- 10 files changed, 70 insertions(+), 69 deletions(-) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 8bf1fa25429..87b9094b47e 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -55,7 +55,6 @@ #define COMSIG_ATOM_FIRE_ACT "atom_fire_act" //from base of atom/fire_act(): (exposed_temperature, exposed_volume) #define COMSIG_ATOM_BULLET_ACT "atom_bullet_act" //from base of atom/bullet_act(): (/obj/item/projectile, def_zone) #define COMSIG_ATOM_BLOB_ACT "atom_blob_act" //from base of atom/blob_act(): (/obj/structure/blob) -#define COMSIG_ATOM_ATTACK_ALIEN "atom_attack_alien" //from base of atom/attack_alien() #define COMSIG_ATOM_ACID_ACT "atom_acid_act" //from base of atom/acid_act(): (acidpwr, acid_volume) #define COMSIG_ATOM_EMAG_ACT "atom_emag_act" //from base of atom/emag_act(): () #define COMSIG_ATOM_RAD_ACT "atom_rad_act" //from base of atom/rad_act(intensity) @@ -221,9 +220,6 @@ //Food #define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder) -//Reagents -#define COMSIG_ON_MOB_LIFE "on_mob_life" //Called when a reagent calls on_mob_life - //Mood #define COMSIG_ADD_MOOD_EVENT "add_mood" //Called when you send a mood event from anywhere in the code. #define COMSIG_CLEAR_MOOD_EVENT "clear_mood" //Called when you clear a mood event from anywhere in the code. diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index da462cb97ed..87d0a3e93b1 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -64,7 +64,7 @@ if(!force) playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1) else - M.SendSignal(COMSIG_ITEM_ATTACK, M) + SEND_SIGNAL(M, COMSIG_ITEM_ATTACK) if(hitsound) playsound(loc, hitsound, get_clamped_volume(), 1, -1) diff --git a/code/datums/components/jestosterone.dm b/code/datums/components/jestosterone.dm index 82ad7e57436..f37f1f03efb 100644 --- a/code/datums/components/jestosterone.dm +++ b/code/datums/components/jestosterone.dm @@ -1,43 +1,5 @@ /datum/component/jestosterone - var/mob_is_clown //Is the affected mob a clown? + var/mind_type //Is the affected mob a clown / mime? -/datum/component/jestosterone/Initialize(mob/user, is_this_mob_a_clown) - mob_is_clown = is_this_mob_a_clown - if(mob_is_clown) - to_chat(user, "Whatever that was, it feels great!") - else - to_chat(user, "Something doesn't feel right...") - RegisterSignal(COMSIG_MOVABLE_MOVED, .proc/on_move) - RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/mob_was_attacked) - RegisterSignal(COMSIG_ITEM_ATTACK, .proc/mob_was_attacked) - RegisterSignal(COMSIG_ATOM_ATTACK_ALIEN, .proc/mob_was_attacked) - RegisterSignal(COMSIG_ON_MOB_LIFE, .proc/process_jestosterone) - -/datum/component/jestosterone/proc/on_move(mob/user) - playsound(user.loc, "clownstep", 25, 1) - -/datum/component/jestosterone/proc/mob_was_attacked(mob/user) - playsound(user.loc, 'sound/items/bikehorn.ogg', 50, 1) - -/datum/component/jestosterone/proc/process_jestosterone(mob/living/user) - if(prob(10)) - user.emote("giggle") - if(mob_is_clown) - user.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! - else - user.AdjustDizzy(10, 0, 500) - user.Druggy(15) - if(prob(10)) - user.EyeBlurry(5) - if(prob(6)) - var/list/clown_message = list("You feel light-headed.", - "You can't see straight.", - "You feel about as funny as the station clown.", - "Bright colours and rainbows cloud your vision.", - "Your funny bone aches.", - "You can hear bike horns in the distance.", - "You feel like SHOUTING!", - "Sinister laughter echoes in your ears.", - "Your legs feel like jelly.", - "You feel like telling a pun.") - to_chat(user, "[pick(clown_message)]") +/datum/component/jestosterone/Initialize(mind_type_arg) + mind_type = mind_type_arg diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index e9b6bb6e42a..3fe88f7d0e9 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -14,7 +14,7 @@ var/last_use = 0 var/use_delay = 20 -/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override) +/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override, squeak_on_move) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) @@ -22,6 +22,8 @@ RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/play_squeak_crossed) RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) + if(squeak_on_move) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/play_squeak) if(isitem(parent)) RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak) RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak) @@ -47,12 +49,15 @@ else playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1) -/datum/component/squeak/proc/step_squeak() - if(steps > step_delay) - play_squeak() - steps = 0 +/datum/component/squeak/proc/step_squeak(datum/source, mob/living/carbon/human/H) + if(H.m_intent == MOVE_INTENT_RUN) + if(steps > step_delay) + play_squeak() + steps = 0 + else + steps++ else - steps++ + play_squeak() /datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot) RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 0410a179cc9..2ea891d04f9 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -121,7 +121,8 @@ span = mind.speech_span if((COMIC in mutations) \ || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) \ - || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) + || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown) \ + || GetComponent(/datum/component/jestosterone)) span = "sans" var/list/parent = ..() diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index fc5d3156b01..d07ef2b9f32 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -389,7 +389,7 @@ target.forcesay(GLOB.hit_appends) else if(target.lying) target.forcesay(GLOB.hit_appends) - target.SendSignal(COMSIG_PARENT_ATTACKBY, target) + SEND_SIGNAL(target, COMSIG_PARENT_ATTACKBY) /datum/species/proc/disarm(mob/living/carbon/human/user, mob/living/carbon/human/target, datum/martial_art/attacker_style) if(target.check_block()) //cqc diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index f045b54b8d8..cfb16c0f04a 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -508,7 +508,7 @@ var/turf/T = loc . = ..() if(.) - SendSignal(COMSIG_MOVABLE_MOVED, src) + SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED) handle_footstep(loc) step_count++ @@ -883,7 +883,7 @@ // If we're pulling something then drop what we're currently pulling and pull this instead. AM.add_fingerprint(src) if(pulling) - if(AM == pulling)// Are we trying to pull something we are already pulling? Then just stop here, no need to continue. + if(AM == pulling)// Are we trying to pull something we are already pulling? Then just stop here, no need to continue. return stop_pulling() if(AM.pulledby) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 2677b5a0f9e..cfe35b58983 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -333,7 +333,6 @@ return FALSE if(INTENT_HARM) M.do_attack_animation(src) - SendSignal(COMSIG_ATOM_ATTACK_ALIEN, src) return TRUE if(INTENT_DISARM) M.do_attack_animation(src, ATTACK_EFFECT_DISARM) diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index cbe8c43b936..b04cbd9494f 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -577,9 +577,9 @@ var/const/INGEST = 2 reagent_list += R R.holder = src R.volume = amount + R.on_new(data) if(data) R.data = data - R.on_new(data) update_total() if(my_atom) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 993edd5ec44..f86f463e08e 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -426,25 +426,63 @@ color = "#ff00ff" //Fuchsia, pity we can't do rainbow here taste_message = "a funny flavour" -/datum/reagent/jestosterone/reaction_mob(mob/living/M, method, volume) +/datum/reagent/jestosterone/on_new() ..() - if(istype(M, /mob/living/carbon)) + var/mob/living/carbon/C = holder.my_atom + if(!istype(C)) return - var/is_a_clown = FALSE - if(M.mind && (M.mind.assigned_role == "Clown" || M.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD)) - is_a_clown = TRUE - if(!is_a_clown) - M.AdjustDizzy(volume) - M.AddComponent(/datum/component/jestosterone, M, is_a_clown) + var/mind_type = FALSE + if(C.mind) + if(C.mind.assigned_role == "Clown" || C.mind.assigned_role == SPECIAL_ROLE_HONKSQUAD) + mind_type = "Clown" + to_chat(C, "Whatever that was, it feels great!") + else if(C.mind.assigned_role == "Mime") + mind_type = "Mime" + to_chat(C, "You feel nauseous.") + C.AdjustDizzy(volume) + else + to_chat(C, "Something doesn't feel right...") + C.AdjustDizzy(volume) + C.AddComponent(/datum/component/jestosterone, mind_type) + C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE) -/datum/reagent/jestosterone/on_mob_life(mob/living/M) - M.SendSignal(COMSIG_ON_MOB_LIFE, M) - ..() +/datum/reagent/jestosterone/on_mob_life(mob/living/carbon/M) + if(!istype(M)) + return ..() + var/update_flags = STATUS_UPDATE_NONE + if(prob(10)) + M.emote("giggle") + GET_COMPONENT_FROM(jestosterone_component, /datum/component/jestosterone, M) + if(jestosterone_component.mind_type == "Clown") + update_flags |= M.adjustBruteLoss(-1.5 * REAGENTS_EFFECT_MULTIPLIER) //Screw those pesky clown beatings! + else + M.AdjustDizzy(10, 0, 500) + M.Druggy(15) + if(prob(10)) + M.EyeBlurry(5) + if(prob(6)) + var/list/clown_message = list("You feel light-headed.", + "You can't see straight.", + "You feel about as funny as the station clown.", + "Bright colours and rainbows cloud your vision.", + "Your funny bone aches.", + "What was that?!", + "You can hear bike horns in the distance.", + "You feel like SHOUTING!", + "Sinister laughter echoes in your ears.", + "Your legs feel like jelly.", + "You feel like telling a pun.") + to_chat(M, "[pick(clown_message)]") + if(jestosterone_component.mind_type == "Mime") + update_flags |= M.adjustToxLoss(1.5 * REAGENTS_EFFECT_MULTIPLIER) + return ..() | update_flags /datum/reagent/jestosterone/on_mob_delete(mob/living/M) ..() GET_COMPONENT_FROM(remove_fun, /datum/component/jestosterone, M) + GET_COMPONENT_FROM(squeaking, /datum/component/squeak, M) remove_fun.Destroy() + squeaking.Destroy() /datum/reagent/royal_bee_jelly name = "royal bee jelly" From e542258e645fea77aacb0507c7703ffac9d28c0a Mon Sep 17 00:00:00 2001 From: Citinited Date: Sat, 5 Jan 2019 18:58:01 +0000 Subject: [PATCH 18/18] slight jestosterone description tweak --- code/modules/reagents/chemistry/reagents/misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index f86f463e08e..031732b65cc 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -422,7 +422,7 @@ /datum/reagent/jestosterone //Formerly known as Nitrogen tungstide hypochlorite before NT fired the chemists for trying to be funny name = "Jestosterone" id = "jestosterone" - description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication." + description = "Jestosterone is an odd chemical compound that induces a variety of annoying side-effects in the average person. It also causes mild intoxication, and is toxic to mimes." color = "#ff00ff" //Fuchsia, pity we can't do rainbow here taste_message = "a funny flavour"