diff --git a/modular_citadel/code/game/objects/items/balls.dm b/modular_citadel/code/game/objects/items/balls.dm new file mode 100644 index 0000000000..4095a4bb20 --- /dev/null +++ b/modular_citadel/code/game/objects/items/balls.dm @@ -0,0 +1,92 @@ +/* BALLS - GLORIOUS BALLS +// +// Includes:- +// 1) Tennis balls, lines 10 - 92 +// +// +// +*/ + +/obj/item/toy/tennis + name = "tennis ball" + desc = "A classical tennis ball. It appears to have faint bite marks scattered all over its surface." + icon = 'modular_citadel/icons/obj/balls.dmi' + icon_state = "tennis_classic" + lefthand_file = 'modular_citadel/icons/mob/inhands/balls_left.dmi' + righthand_file = 'modular_citadel/icons/mob/inhands/balls_right.dmi' + item_state = "tennis_classic" + alternate_worn_icon = 'modular_citadel/icons/mob/mouthball.dmi' + slot_flags = SLOT_HEAD | SLOT_NECK | SLOT_EARS //Fluff item, put it wherever you want! + throw_range = 14 + w_class = WEIGHT_CLASS_SMALL + +/obj/item/toy/tennis/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/toy/tennis/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] waggles [src] at [target].", "You waggle [src] at [target].") + return TRUE + +/obj/item/toy/tennis/rainbow + name = "pseudo-euclidean interdimensional tennis sphere" + desc = "A tennis ball from another plane of existance. Really groovy." + icon_state = "tennis_rainbow" + item_state = "tennis_rainbow" + actions_types = list(/datum/action/item_action/squeeze) //Giving the masses easy access to unilimted honks would be annoying + +/obj/item/toy/tennis/rainbow/Initialize() + . = ..() + AddComponent(/datum/component/squeak) + +/obj/item/toy/tennis/rainbow/izzy //izzyinbox's donator item + name = "Katlin's Ball" + desc = "A tennis ball that's seen a good bit of love, being covered in a few black and white hairs and slobber." + icon_state = "tennis_izzy" + item_state = "tennis_izzy" + +/obj/item/toy/tennis/red //da red wuns go fasta + name = "red tennis ball" + desc = "A red tennis ball. It goes three times faster!" + icon_state = "tennis_red" + item_state = "tennis_red" + throw_speed = 9 + +/obj/item/toy/tennis/yellow //because yellow is hot I guess + name = "yellow tennis ball" + desc = "A yellow tennis ball. It seems to have a flame-retardant coating." + icon_state = "tennis_yellow" + item_state = "tennis_yellow" + resistance_flags = FIRE_PROOF + +/obj/item/toy/tennis/green //pestilence + name = "green tennis ball" + desc = "A green tennis ball. It seems to have an impermeable coating." + icon_state = "tennis_green" + item_state = "tennis_green" + permeability_coefficient = 0.9 + +/obj/item/toy/tennis/cyan //electric + name = "cyan tennis ball" + desc = "A cyan tennis ball. It seems to have odd electrical properties." + icon_state = "tennis_cyan" + item_state = "tennis_cyan" + siemens_coefficient = 0.9 + +/obj/item/toy/tennis/blue //reliability + name = "blue tennis ball" + desc = "A blue tennis ball. It seems ever so slightly more robust than normal." + icon_state = "tennis_blue" + item_state = "tennis_blue" + max_integrity = 300 + +/obj/item/toy/tennis/purple //because purple dyes have high pH and would neutralize acids I guess + name = "purple tennis ball" + desc = "A purple tennis ball. It seems to have an acid-resistant coating." + icon_state = "tennis_purple" + item_state = "tennis_purple" + resistance_flags = ACID_PROOF + +/datum/action/item_action/squeeze + name = "Squeak!" \ No newline at end of file diff --git a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm index 29de14a120..0d03d21c0f 100644 --- a/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm +++ b/modular_citadel/code/game/objects/items/melee/eutactic_blades.dm @@ -26,6 +26,15 @@ light_color = "#37FFF7" actions_types = list() +/obj/item/melee/transforming/energy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/melee/transforming/energy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") + return TRUE + /obj/item/melee/transforming/energy/sword/cx/transform_weapon(mob/living/user, supress_message_text) active = !active //I'd use a ..() here but it'd inherit from the regular esword's proc instead, so SPAGHETTI CODE if(active) //also I'd need to rip out the iconstate changing bits @@ -120,6 +129,15 @@ var/light_brightness = 3 actions_types = list() +/obj/item/toy/sword/cx/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/toy/sword/cx/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") + return TRUE + /obj/item/toy/sword/cx/attack_self(mob/user) active = !( active ) @@ -233,6 +251,16 @@ var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD flags_2 = SLOWS_WHILE_IN_HAND_2 +/obj/item/twohanded/hypereutactic/pre_altattackby(atom/A, mob/living/user, params) //checks if it can do right click memes + altafterattack(A, user, TRUE, params) + return TRUE + +/obj/item/twohanded/hypereutactic/altafterattack(atom/target, mob/living/carbon/user, proximity_flag, click_parameters) //does right click memes + if(istype(user)) + user.visible_message("[user] points the tip of [src] at [target].", "You point the tip of [src] at [target].") + return TRUE + + /obj/item/twohanded/hypereutactic/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds. if(M.has_dna()) if(M.dna.check_mutation(HULK)) @@ -402,4 +430,22 @@ /obj/item/melee/transforming/energy/sword/cx/traitor/transform_messages(mob/living/user, supress_message_text) playsound(user, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, 1) if(!supress_message_text) - to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") \ No newline at end of file + to_chat(user, "[src] [active ? "is now active":"can now be concealed"].") + +//RAINBOW MEMES + +/obj/item/twohanded/hypereutactic/toy/rainbow + name = "\improper Hyper-Euclidean Reciprocating Trigonometric Zweihander" + desc = "A custom-built toy with fancy rainbow lights built-in." + flags_2 = NONE + var/list/rainbow_colors = list("#FF0000", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF","#FF00FF", "#3399ff", "#ff9900", "#fb008b", "#9800ff", "#00ffa3", "#ccff00") + +/obj/item/twohanded/hypereutactic/toy/rainbow/process() + . = ..() + var/set_color = pick(rainbow_colors) + light_color = set_color + update_light() + update_icon() + +/obj/item/twohanded/hypereutactic/toy/rainbow/AltClick(mob/living/user) + return \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 9836b3b2ed..640e728c2d 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -217,6 +217,12 @@ path = /obj/item/clothing/suit/toggle/labcoat/labredblack ckeywhitelist = list("blakeryan") +/datum/gear/torisword + name = "Rainbow Zweihander" + category = slot_in_backpack + path = /obj/item/twohanded/hypereutactic/toy/rainbow + ckeywhitelist = list("annoymous35") + /datum/gear/darksabre name = "Dark Sabre" category = slot_in_backpack @@ -229,8 +235,14 @@ datum/gear/darksabresheath path = /obj/item/storage/belt/sabre/darksabre ckeywhitelist = list("inferno707") +/datum/gear/toriball + name = "Rainbow Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/rainbow + ckeywhitelist = list("annoymous35") - - - - +/datum/gear/izzyball + name = "Katlin's Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/rainbow/izzy + ckeywhitelist = list("izzyinbox") \ No newline at end of file diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index 2779d6f124..3c8d74cdac 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -18,7 +18,42 @@ category = slot_in_backpack path = /obj/item/toy/plush/slimeplushie +/datum/gear/tennis + name = "Classic Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis + +/datum/gear/tennisred + name = "Red Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/red + +/datum/gear/tennisyellow + name = "Yellow Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/yellow + +/datum/gear/tennisgreen + name = "Green Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/green + +/datum/gear/tenniscyan + name = "Cyan Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/cyan + +/datum/gear/tennisblue + name = "Blue Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/blue + +/datum/gear/tennispurple + name = "Purple Tennis Ball" + category = slot_in_backpack + path = /obj/item/toy/tennis/purple + /datum/gear/dildo name = "Customizable dildo" category = slot_in_backpack - path = /obj/item/dildo/custom + path = /obj/item/dildo/custom \ No newline at end of file diff --git a/modular_citadel/icons/mob/inhands/balls_left.dmi b/modular_citadel/icons/mob/inhands/balls_left.dmi new file mode 100644 index 0000000000..2e751d0f44 Binary files /dev/null and b/modular_citadel/icons/mob/inhands/balls_left.dmi differ diff --git a/modular_citadel/icons/mob/inhands/balls_right.dmi b/modular_citadel/icons/mob/inhands/balls_right.dmi new file mode 100644 index 0000000000..45ee6864f0 Binary files /dev/null and b/modular_citadel/icons/mob/inhands/balls_right.dmi differ diff --git a/modular_citadel/icons/mob/mouthball.dmi b/modular_citadel/icons/mob/mouthball.dmi new file mode 100644 index 0000000000..b5c08dd648 Binary files /dev/null and b/modular_citadel/icons/mob/mouthball.dmi differ diff --git a/modular_citadel/icons/obj/balls.dmi b/modular_citadel/icons/obj/balls.dmi new file mode 100644 index 0000000000..9b9f4575b3 Binary files /dev/null and b/modular_citadel/icons/obj/balls.dmi differ diff --git a/tgstation.dme b/tgstation.dme index e57765a3dc..a0c0b60e8c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2586,7 +2586,6 @@ #include "interface\interface.dm" #include "interface\menu.dm" #include "interface\stylesheet.dm" -#include "modular_citadel\cit_medkits.dm" #include "modular_citadel\cit_screenshake.dm" #include "modular_citadel\cit_turfs.dm" #include "modular_citadel\citadel_ghostrole_spawners.dm" @@ -2636,6 +2635,7 @@ #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\impact.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm" #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" +#include "modular_citadel\code\game\objects\items\balls.dm" #include "modular_citadel\code\game\objects\items\handcuffs.dm" #include "modular_citadel\code\game\objects\items\holy_weapons.dm" #include "modular_citadel\code\game\objects\items\stunsword.dm"