From 9c425cbed39768a5a73ba24dfb9093f99117bce5 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Sun, 14 Mar 2021 06:44:43 -0400 Subject: [PATCH] Ports Slapping and Kissing (#15539) * Ports Slapping and Kissing * forgot this * table slapping --- code/__HELPERS/traits.dm | 3 + code/_globalvars/traits.dm | 1 + code/_onclick/item_attack.dm | 4 +- code/game/objects/items/hand_item.dm | 116 ++++++++++++++++++ .../objects/items/weapons/extinguisher.dm | 2 +- .../living/carbon/alien/special/facehugger.dm | 2 +- code/modules/mob/living/carbon/human/emote.dm | 37 ++++-- code/modules/power/lighting.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- paradise.dme | 1 + sound/effects/kiss.ogg | Bin 0 -> 8415 bytes sound/effects/tableslam.ogg | Bin 0 -> 7233 bytes sound/weapons/slap.ogg | Bin 0 -> 8529 bytes 13 files changed, 151 insertions(+), 19 deletions(-) create mode 100644 code/game/objects/items/hand_item.dm create mode 100644 sound/effects/kiss.ogg create mode 100644 sound/effects/tableslam.ogg create mode 100644 sound/weapons/slap.ogg diff --git a/code/__HELPERS/traits.dm b/code/__HELPERS/traits.dm index 6faff552ff5..74760fd22b4 100644 --- a/code/__HELPERS/traits.dm +++ b/code/__HELPERS/traits.dm @@ -152,6 +152,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NOEXAMINE "no_examine" #define TRAIT_NOPAIN "no_pain" +/// Blowing kisses actually does damage to the victim +#define TRAIT_KISS_OF_DEATH "kiss_of_death" + // // common trait sources #define TRAIT_GENERIC "generic" diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 906b4b608c1..382303c1212 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -45,6 +45,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DWARF" = TRAIT_DWARF, "TRAIT_SILENT_FOOTSTEPS" = TRAIT_SILENT_FOOTSTEPS, "TRAIT_ALCOHOL_TOLERANCE" = TRAIT_ALCOHOL_TOLERANCE, + "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, "TRAIT_COMIC_SANS" = TRAIT_COMIC_SANS, "TRAIT_NOFINGERPRINTS" = TRAIT_NOFINGERPRINTS, diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 456d30c0059..1fe1c68522b 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -31,7 +31,7 @@ return FALSE /obj/attackby(obj/item/I, mob/living/user, params) - return ..() || (can_be_hit && I.attack_obj(src, user)) + return ..() || (can_be_hit && I.attack_obj(src, user, params)) /mob/living/attackby(obj/item/I, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) @@ -87,7 +87,7 @@ //the equivalent of the standard version of attack() but for object targets. -/obj/item/proc/attack_obj(obj/O, mob/living/user) +/obj/item/proc/attack_obj(obj/O, mob/living/user, params) if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_NO_ATTACK_OBJ) return if(flags & (NOBLUDGEON)) diff --git a/code/game/objects/items/hand_item.dm b/code/game/objects/items/hand_item.dm new file mode 100644 index 00000000000..7f378aa6cdc --- /dev/null +++ b/code/game/objects/items/hand_item.dm @@ -0,0 +1,116 @@ +/obj/item/slapper + name = "slapper" + desc = "This is how real men fight." + icon_state = "latexballon" + item_state = "nothing" + force = 0 + throwforce = 0 + flags = DROPDEL | ABSTRACT + attack_verb = list("slaps") + hitsound = 'sound/weapons/slap.ogg' + /// How many smaller table smacks we can do before we're out + var/table_smacks_left = 3 + +/obj/item/slapper/attack(mob/M, mob/living/carbon/human/user) + user.do_attack_animation(M) + playsound(M, hitsound, 50, TRUE, -1) + user.visible_message("[user] slaps [M]!", "You slap [M]!", "You hear a slap.") + +/obj/item/slapper/attack_obj(obj/O, mob/living/user, params) + if(!istype(O, /obj/structure/table)) + return ..() + + var/obj/structure/table/the_table = O + + if(user.a_intent == INTENT_HARM && table_smacks_left == initial(table_smacks_left)) // so you can't do 2 weak slaps followed by a big slam + transform = transform.Scale(1.5) // BIG slap + if(HAS_TRAIT(user, TRAIT_HULK)) + transform = transform.Scale(2) + color = COLOR_GREEN + user.do_attack_animation(the_table) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + if(istype(human_user.shoes, /obj/item/clothing/shoes/cowboy)) + human_user.say(pick("Hot damn!", "Hoo-wee!", "Got-dang!")) + playsound(get_turf(the_table), 'sound/effects/tableslam.ogg', 110, TRUE) + user.visible_message("[user] slams [user.p_their()] fist down on [the_table]!", "You slam your fist down on [the_table]!") + qdel(src) + else + user.do_attack_animation(the_table) + playsound(get_turf(the_table), 'sound/effects/tableslam.ogg', 40, TRUE) + user.visible_message("[user] slaps [user.p_their()] hand on [the_table].", "You slap your hand on [the_table].") + table_smacks_left-- + if(table_smacks_left <= 0) + qdel(src) + +/obj/item/kisser + name = "kiss" + desc = "I want you all to know, everyone and anyone, to seal it with a kiss." + icon = 'icons/mob/animal.dmi' + icon_state = "heart" + item_state = "nothing" + force = 0 + throwforce = 0 + flags = DROPDEL | ABSTRACT + /// The kind of projectile this version of the kiss blower fires + var/kiss_type = /obj/item/projectile/kiss + +/obj/item/kisser/afterattack(atom/target, mob/user, flag, params) + var/turf/user_turf = get_turf(user) + var/obj/item/projectile/blown_kiss = new kiss_type(user_turf) + user.visible_message("[user] blows \a [blown_kiss] at [target]!", "You blow \a [blown_kiss] at [target]!") + + //Shooting Code: + blown_kiss.spread = 0 + blown_kiss.original = target + blown_kiss.firer = user // don't hit ourself that would be really annoying + blown_kiss.preparePixelProjectile(target, user_turf, user, params) + blown_kiss.fire() + qdel(src) + +/obj/item/kisser/death + name = "kiss of death" + desc = "If looks could kill, they'd be this." + color = COLOR_BLACK + kiss_type = /obj/item/projectile/kiss/death + +/obj/item/projectile/kiss + name = "kiss" + icon = 'icons/mob/animal.dmi' + icon_state = "heart" + hitsound = 'sound/effects/kiss.ogg' + hitsound_wall = 'sound/effects/kiss.ogg' + pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + speed = 1.6 + damage_type = BRUTE + damage = 0 + nodamage = TRUE // love can't actually hurt you + armour_penetration = 100 // but if it could, it would cut through even the thickest plate + flag = "magic" // and most importantly, love is magic~ + +/obj/item/projectile/kiss/fire(angle) + if(firer) + name = "[name] blown by [firer]" + return ..() + +/obj/item/projectile/kiss/on_hit(atom/target, blocked, hit_zone) + def_zone = BODY_ZONE_HEAD // let's keep it PG, people + . = ..() + +/obj/item/projectile/kiss/death + name = "kiss of death" + nodamage = FALSE // okay i kinda lied about love not being able to hurt you + damage = 35 + sharp = TRUE + color = COLOR_BLACK + +/obj/item/projectile/kiss/death/on_hit(atom/target, blocked, pierce_hit) + . = ..() + if(!iscarbon(target)) + return + var/mob/living/carbon/heartbreakee = target + var/obj/item/organ/internal/heart/dont_go_breakin_my_heart = heartbreakee.get_organ_slot("heart") + if(dont_go_breakin_my_heart) + dont_go_breakin_my_heart.receive_damage(999) + else // You're probably a snowflakey species or Xenomorph + heartbreakee.adjustFireLoss(1000) // the sickest of burns diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 1b1352c372f..ecc485737a4 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -57,7 +57,7 @@ to_chat(user, "The safety is [safety ? "on" : "off"].") return -/obj/item/extinguisher/attack_obj(obj/O, mob/living/user) +/obj/item/extinguisher/attack_obj(obj/O, mob/living/user, params) if(AttemptRefill(O, user)) refilling = TRUE return FALSE diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index c7c776f631d..ee160ed3bcc 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -38,7 +38,7 @@ Die() /obj/item/clothing/mask/facehugger/attackby(obj/item/O, mob/user, params) - return O.attack_obj(src, user) + return O.attack_obj(src, user, params) /obj/item/clothing/mask/facehugger/attack_alien(mob/user) //can be picked up by aliens return attack_hand(user) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index cec48e0a9ea..b8257bb877f 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -123,7 +123,7 @@ on_CD = handle_emote_CD(50) //longer cooldown if("fart", "farts", "flip", "flips", "snap", "snaps") on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm - if("cough", "coughs", "slap", "slaps", "highfive") + if("cough", "coughs", "highfive") on_CD = handle_emote_CD() if("gasp", "gasps") on_CD = handle_emote_CD() @@ -133,6 +133,8 @@ on_CD = handle_emote_CD() if("clap", "claps") on_CD = handle_emote_CD() + if("kiss", "kisses", "slap", "slaps") + on_CD = handle_emote_CD(3 SECONDS) //Everything else, including typos of the above emotes else on_CD = FALSE //If it doesn't induce the cooldown, we won't check for the cooldown @@ -502,6 +504,19 @@ message = "[src] nods[M ? " at [M]" : ""]." m_type = 1 + if("kiss", "kisses") + var/kiss_type = /obj/item/kisser + + if(HAS_TRAIT(src, TRAIT_KISS_OF_DEATH)) + kiss_type = /obj/item/kisser/death + + var/obj/item/kiss_blower = new kiss_type(src) + if(put_in_hands(kiss_blower)) + to_chat(src, "You ready your kiss-blowing hand.") + else + qdel(kiss_blower) + to_chat(src, "You're incapable of blowing a kiss in your current state.") + if("blush", "blushes") message = "[src] blushes." m_type = 1 @@ -841,16 +856,12 @@ message = "[src] sadly can't find anybody to give daps to, and daps [p_them()]self. Shameful." if("slap", "slaps") - m_type = 1 - if(!restrained()) - var/M = handle_emote_param(param, null, 1) - - if(M) - message = "[src] slaps [M] across the face. Ouch!" - else - message = "[src] slaps [p_them()]self!" - adjustFireLoss(4) - playsound(loc, 'sound/effects/snap.ogg', 50, 1) + var/obj/item/slapper/N = new(src) + if(put_in_hands(N)) + to_chat(src, "You ready your slapping hand.") + else + qdel(N) + to_chat(src, "You're incapable of slapping in your current state.") if("scream", "screams") var/M = handle_emote_param(param) @@ -934,8 +945,8 @@ if("help") var/emotelist = "aflap(s), airguitar, blink(s), blink(s)_r, blush(es), bow(s)-none/mob, burp(s), choke(s), chuckle(s), clap(s), collapse(s), cough(s), cry, cries, custom, dance, dap(s)-none/mob," \ + " deathgasp(s), drool(s), eyebrow, fart(s), faint(s), flap(s), flip(s), frown(s), gasp(s), giggle(s), glare(s)-none/mob, grin(s), groan(s), grumble(s), grin(s)," \ - + " handshake-mob, hug(s)-none/mob, hem, highfive, johnny, jump, laugh(s), look(s)-none/mob, moan(s), mumble(s), nod(s), pale(s), point(s)-atom, quiver(s), raise(s), salute(s)-none/mob, scream(s), shake(s)," \ - + " shiver(s), shrug(s), sigh(s), signal(s)-#1-10,slap(s)-none/mob, smile(s),snap(s), sneeze(s), sniff(s), snore(s), stare(s)-none/mob, tremble(s), twitch(es), twitch(es)_s," \ + + " handshake-mob, hug(s)-none/mob, hem, highfive, johnny, jump, kiss(es), laugh(s), look(s)-none/mob, moan(s), mumble(s), nod(s), pale(s), point(s)-atom, quiver(s), raise(s), salute(s)-none/mob, scream(s), shake(s)," \ + + " shiver(s), shrug(s), sigh(s), signal(s)-#1-10, slap(s), smile(s),snap(s), sneeze(s), sniff(s), snore(s), stare(s)-none/mob, tremble(s), twitch(es), twitch(es)_s," \ + " wave(s), whimper(s), wink(s), yawn(s)" switch(dna.species.name) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 01e707063a4..e7aafa88fac 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -830,7 +830,7 @@ ..() shatter() -/obj/item/light/attack_obj(obj/O, mob/living/user) +/obj/item/light/attack_obj(obj/O, mob/living/user, params) ..() shatter() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 5f1e84b2316..96f89935f6d 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -291,7 +291,7 @@ else return ..() -/obj/item/gun/attack_obj(obj/O, mob/user) +/obj/item/gun/attack_obj(obj/O, mob/user, params) if(user.a_intent == INTENT_HARM) if(bayonet) O.attackby(bayonet, user) diff --git a/paradise.dme b/paradise.dme index 062734bc36e..cb57760a665 100644 --- a/paradise.dme +++ b/paradise.dme @@ -827,6 +827,7 @@ #include "code\game\objects\items\dehy_carp.dm" #include "code\game\objects\items\documents.dm" #include "code\game\objects\items\flag.dm" +#include "code\game\objects\items\hand_item.dm" #include "code\game\objects\items\latexballoon.dm" #include "code\game\objects\items\misc.dm" #include "code\game\objects\items\mixing_bowl.dm" diff --git a/sound/effects/kiss.ogg b/sound/effects/kiss.ogg new file mode 100644 index 0000000000000000000000000000000000000000..699b13a8de84a65421744ea450e42f51824666da GIT binary patch literal 8415 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 Dv|lH6 literal 0 HcmV?d00001 diff --git a/sound/effects/tableslam.ogg b/sound/effects/tableslam.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6d1ba5ce21548b84af2c4e956916dc2884ae8668 GIT binary patch literal 7233 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 S#6YN3dUCHW$09j`^S=O13D2Ma literal 0 HcmV?d00001 diff --git a/sound/weapons/slap.ogg b/sound/weapons/slap.ogg new file mode 100644 index 0000000000000000000000000000000000000000..99a9ec788c4c095d7a16c46ea638455e851ebe0b GIT binary patch literal 8529 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 literal 0 HcmV?d00001