diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 5ed42e8922..214ff213c8 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -47,7 +47,7 @@ /area/ruin/powered/animal_hospital) "al" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /turf/open/floor/plasteel/cmo, /area/ruin/powered/animal_hospital) "am" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 6f385e23ee..a4ec56f95e 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -5118,7 +5118,7 @@ /area/maintenance/starboard/fore) "alA" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/vault{ dir = 8 diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index c39cda4929..b12cbde21c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -49068,7 +49068,7 @@ /area/bridge/showroom/corporate) "bQl" = ( /obj/structure/table/wood, -/obj/item/toy/carpplushie{ +/obj/item/toy/plush/carpplushie{ color = "red"; name = "Nanotrasen wildlife department space carp plushie" }, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index e482dcc0bc..f0476df53d 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -6423,7 +6423,7 @@ "qX" = ( /obj/structure/table, /obj/item/toy/katana, -/obj/item/toy/carpplushie, +/obj/item/toy/plush/carpplushie, /obj/effect/turf_decal/stripes/line{ dir = 1 }, diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 900b1680c4..6f20117d36 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -53,6 +53,14 @@ // /obj/item/clothing signals #define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () +// /obj/item signals +#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (mob/living/target, mob/living/user) +#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (mob) +#define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" //from base of obj/item/attack_obj(): (obj, mob) + +// /obj/item/clothing signals +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //from base of obj/item/clothing/shoes/proc/step_action(): () + // /obj/machinery signals #define COMSIG_MACHINE_PROCESS "machine_process" //from machinery subsystem fire(): () #define COMSIG_MACHINE_PROCESS_ATMOS "machine_process_atmos" //from air subsystem process_atmos_machinery(): () diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index d8ed75737d..efa8a1db44 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -218,9 +218,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/speechModification(message) //For speech modification by mask slot items. return message -/obj/item/attack_self(mob/user) - interact(user) - /obj/item/interact(mob/user) add_fingerprint(user) if(hidden_uplink && hidden_uplink.active) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 1c3c712db6..aae4aad91d 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -107,39 +107,26 @@ throw_speed = 3 throw_range = 7 attack_verb = list("HONKED") - var/next_usable = 0 - var/honksound = 'sound/items/bikehorn.ogg' - var/cooldowntime = 20 + +/obj/item/bikehorn/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) /obj/item/bikehorn/suicide_act(mob/user) user.visible_message("[user] solemnly points the horn at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") - playsound(src.loc, honksound, 50, 1) + playsound(src, 'sound/items/bikehorn.ogg', 50, 1) return (BRUTELOSS) -/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) - if(!(next_usable > world.time)) - playsound(loc, honksound, 50, 1, -1) //plays instead of tap.ogg! - return ..() - -/obj/item/bikehorn/attack_self(mob/user) - if(!(next_usable > world.time)) - next_usable = world.time + cooldowntime - playsound(src.loc, honksound, 50, 1) - src.add_fingerprint(user) - -/obj/item/bikehorn/Crossed(mob/living/L) - if(isliving(L)) - playsound(loc, honksound, 50, 1, -1) - ..() - /obj/item/bikehorn/airhorn name = "air horn" desc = "Damn son, where'd you find this?" icon_state = "air_horn" - honksound = 'sound/items/airhorn2.ogg' - cooldowntime = 50 origin_tech = "materials=4;engineering=4" +/obj/item/bikehorn/airhorn/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/items/airhorn2.ogg'=1), 50) + /obj/item/bikehorn/golden name = "golden bike horn" desc = "Golden? Clearly, it's made with bananium! Honk!" @@ -155,14 +142,13 @@ ..() /obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) - if(!(next_usable > world.time)) - var/turf/T = get_turf(src) - for(M in ohearers(7, T)) - if(ishuman(M) && M.can_hear()) - var/mob/living/carbon/human/H = M - if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) - continue - M.emote("flip") + var/turf/T = get_turf(src) + for(M in ohearers(7, T)) + if(ishuman(M) && M.can_hear()) + var/mob/living/carbon/human/H = M + if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) + continue + M.emote("flip") /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter name = "Canned Laughter" diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index 9432a434f0..649efc0802 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -4,13 +4,13 @@ */ //Child of carpplushie because this should do everything the toy does and more -/obj/item/toy/carpplushie/dehy_carp +/obj/item/toy/plush/carpplushie/dehy_carp var/mob/owner = null //Carp doesn't attack owner, set when using in hand var/owned = 0 //Boolean, no owner to begin with var/mobtype = /mob/living/simple_animal/hostile/carp //So admins can change what mob spawns via var fuckery //Attack self -/obj/item/toy/carpplushie/dehy_carp/attack_self(mob/user) +/obj/item/toy/plush/carpplushie/dehy_carp/attack_self(mob/user) src.add_fingerprint(user) //Anyone can add their fingerprints to it with this if(!owned) to_chat(user, "You pet [src]. You swear it looks up at you.") @@ -18,7 +18,7 @@ owned = 1 else return ..() -/obj/item/toy/carpplushie/dehy_carp/proc/Swell() +/obj/item/toy/plush/carpplushie/dehy_carp/proc/Swell() desc = "It's growing!" visible_message("[src] swells up!") diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm new file mode 100644 index 0000000000..778655d4b0 --- /dev/null +++ b/code/game/objects/items/plushes.dm @@ -0,0 +1,42 @@ +/obj/item/toy/plush + name = "plush" + desc = "this is the special coder plush, do not steal" + icon = 'icons/obj/plushes.dmi' + icon_state = "debug" + attack_verb = list("thumped", "whomped", "bumped") + w_class = WEIGHT_CLASS_SMALL + resistance_flags = FLAMMABLE + var/list/squeak_override //Weighted list; If you want your plush to have different squeak sounds use this + +/obj/item/toy/plush/Initialize() + . = ..() + AddComponent(/datum/component/squeak, squeak_override) + +/obj/item/toy/plush/attack_self(mob/user) + . = ..() + to_chat(user, "You pet [src]. D'awww.") + +/obj/item/toy/plush/carpplushie + name = "space carp plushie" + desc = "An adorable stuffed toy that resembles a space carp." + icon_state = "carpplush" + item_state = "carp_plushie" + attack_verb = list("bitten", "eaten", "fin slapped") + squeak_override = list('sound/weapons/bite.ogg'=1) + +/obj/item/toy/plush/bubbleplush + name = "bubblegum plushie" + desc = "The friendly red demon that gives good miners gifts." + icon_state = "bubbleplush" + attack_verb = list("rends") + squeak_override = list('sound/magic/demon_attack1.ogg'=1) + +/obj/item/toy/plush/plushvar + name = "ratvar plushie" + desc = "An adorable plushie of the clockwork justiciar himself with new and improved spring arm action." + icon_state = "plushvar" + +/obj/item/toy/plush/narplush + name = "nar'sie plushie" + desc = "A small stuffed doll of the elder god nar'sie. Who thought this was a good children's toy?" + icon_state = "narplush" \ No newline at end of file diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 87ff199dfe..a918fe494a 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -14,7 +14,6 @@ * Cards * Toy nuke * Fake meteor - * Carp plushie * Foam armblade * Toy big red button * Beach ball @@ -987,32 +986,6 @@ shake_camera(M, 3, 1) qdel(src) -/* - * Carp plushie - */ - -/obj/item/toy/carpplushie - name = "space carp plushie" - desc = "An adorable stuffed toy that resembles a space carp." - icon = 'icons/obj/toy.dmi' - icon_state = "carpplushie" - item_state = "carp_plushie" - w_class = WEIGHT_CLASS_SMALL - attack_verb = list("bitten", "eaten", "fin slapped") - resistance_flags = FLAMMABLE - var/bitesound = 'sound/weapons/bite.ogg' - -//Attack mob -/obj/item/toy/carpplushie/attack(mob/M, mob/user) - playsound(loc, bitesound, 20, 1) //Play bite sound in local area - return ..() - -//Attack self -/obj/item/toy/carpplushie/attack_self(mob/user) - playsound(src.loc, bitesound, 20, 1) - to_chat(user, "You pet [src]. D'awww.") - return ..() - /* * Toy big red button */ diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index ba536acdac..bfe0c8e776 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1643,7 +1643,7 @@ /obj/item/toy/talking/griffin, /obj/item/toy/nuke, /obj/item/toy/minimeteor, - /obj/item/toy/carpplushie, + /obj/item/toy/plush/carpplushie, /obj/item/coin/antagtoken, /obj/item/stack/tile/fakespace/loaded, /obj/item/gun/ballistic/shotgun/toy/crossbow, diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index c0ac24c1cc..081362ee9d 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -1,4 +1,5 @@ /obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking + SendSignal(COMSIG_SHOES_STEP_ACTION) /obj/item/clothing/shoes/suicide_act(mob/user) user.visible_message("[user] is bashing [user.p_their()] own head in with [src]! Ain't that a kick in the head?") @@ -79,15 +80,11 @@ item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 item_color = "clown" - var/footstep = 1 //used for squeeks whilst walking pockets = /obj/item/storage/internal/pocket/shoes/clown -/obj/item/clothing/shoes/clown_shoes/step_action() - if(footstep > 1) - playsound(src, "clownstep", 50, 1) - footstep = 0 - else - footstep++ +/obj/item/clothing/shoes/clown_shoes/Initialize() + . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg'=1,'sound/effects/clownstep2.ogg'=1), 50) /obj/item/clothing/shoes/clown_shoes/jester name = "jester shoes" diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 2415f08d6d..71ff26a17e 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -126,7 +126,7 @@ /obj/item/toy/foamblade, /obj/item/toy/prize/ripley, /obj/item/toy/prize/honk, - /obj/item/toy/carpplushie, + /obj/item/toy/plush/carpplushie, /obj/item/toy/redbutton, /obj/item/clothing/head/collectable/rabbitears) new won(where) diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 6983bed378..1a7ed0261f 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -28,6 +28,7 @@ /mob/living/simple_animal/mouse/Initialize() . = ..() + AddComponent(/datum/component/squeak, list('sound/effects/mousesqueek.ogg'=1), 100) if(!body_color) body_color = pick( list("brown","gray","white") ) icon_state = "mouse_[body_color]" @@ -58,7 +59,6 @@ if(!stat) var/mob/M = AM to_chat(M, "[icon2html(src, M)] Squeek!") - playsound(src, 'sound/effects/mousesqueek.ogg', 100, 1) ..() /mob/living/simple_animal/mouse/handle_automated_action() diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 6f0f0c4ec5..6e02cc5696 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -160,8 +160,8 @@ cube.Expand() // Dehydrated carp - else if(istype(O, /obj/item/toy/carpplushie/dehy_carp)) - var/obj/item/toy/carpplushie/dehy_carp/dehy = O + else if(istype(O, /obj/item/toy/plush/carpplushie/dehy_carp)) + var/obj/item/toy/plush/carpplushie/dehy_carp/dehy = O dehy.Swell() // Makes a carp else if(istype(O, /obj/item/stack/sheet/hairlesshide)) diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index 5fdf216b2a..70f7a76a7a 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -710,7 +710,7 @@ GLOBAL_LIST_EMPTY(uplink_items) // Global list so we only initialize this once. name = "Dehydrated Space Carp" desc = "Looks like a plush toy carp, but just add water and it becomes a real-life space carp! Activate in \ your hand before use so it knows not to kill you." - item = /obj/item/toy/carpplushie/dehy_carp + item = /obj/item/toy/plush/carpplushie/dehy_carp cost = 1 /datum/uplink_item/stealthy_weapons/soap_clusterbang diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi new file mode 100644 index 0000000000..6a7b21efec Binary files /dev/null and b/icons/obj/plushes.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index f2176c395d..d5cae1db93 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a0365fdd75..83ae47d2a5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -799,6 +799,7 @@ #include "code\game\objects\items\paint.dm" #include "code\game\objects\items\paiwire.dm" #include "code\game\objects\items\pinpointer.dm" +#include "code\game\objects\items\plushes.dm" #include "code\game\objects\items\pneumaticCannon.dm" #include "code\game\objects\items\powerfist.dm" #include "code\game\objects\items\RCD.dm"