From 03bd806c7387097f1b7282eb9faa8cf247d0eb1f Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Thu, 16 Jul 2020 02:51:07 +0100 Subject: [PATCH] pickle --- code/__DEFINES/admin.dm | 1 + code/modules/admin/verbs/randomverbs.dm | 6 +++-- .../mob/living/simple_animal/pickle.dm | 24 +++++++++++++++++- code/modules/mob/transform_procs.dm | 17 +++++++++++++ .../projectiles/ammunition/energy/special.dm | 7 ++++- .../projectiles/guns/energy/special.dm | 8 ++++++ .../projectiles/projectile/energy/misc.dm | 10 ++++++++ code/modules/projectiles/projectile/magic.dm | 3 ++- icons/mob/32x64.dmi | Bin 3779 -> 4777 bytes tgstation.dme | 2 ++ 10 files changed, 73 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index e8e75c132a..054a8e36eb 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -74,6 +74,7 @@ #define ADMIN_PUNISHMENT_MAZING "Puzzle" #define ADMIN_PUNISHMENT_PIE "Cream Pie" #define ADMIN_PUNISHMENT_CUSTOM_PIE "Custom Cream Pie" +#define ADMIN_PUNISHMENT_PICKLE "Pickle-ify" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index d335cfb171..0cdf29b305 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1276,7 +1276,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!check_rights(R_ADMIN) || !check_rights(R_FUN)) return - var/list/punishment_list = list(ADMIN_PUNISHMENT_PIE, ADMIN_PUNISHMENT_CUSTOM_PIE, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_SUPPLYPOD_QUICK, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING, ADMIN_PUNISHMENT_ROD) + var/list/punishment_list = list(ADMIN_PUNISHMENT_PIE, ADMIN_PUNISHMENT_CUSTOM_PIE, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_SUPPLYPOD_QUICK, ADMIN_PUNISHMENT_SUPPLYPOD, ADMIN_PUNISHMENT_MAZING, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_PICKLE) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1341,7 +1341,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(ADMIN_PUNISHMENT_PIE) var/obj/item/reagent_containers/food/snacks/pie/cream/nostun/creamy = new(get_turf(target)) creamy.splat(target) - if (ADMIN_PUNISHMENT_CUSTOM_PIE) + if(ADMIN_PUNISHMENT_CUSTOM_PIE) var/obj/item/reagent_containers/food/snacks/pie/cream/nostun/A = new() if(!A.reagents) var/amount = input(usr, "Specify the reagent size of [A]", "Set Reagent Size", 50) as num|null @@ -1354,6 +1354,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(amount) A.reagents.add_reagent(chosen_id, amount) A.splat(target) + if(ADMIN_PUNISHMENT_PICKLE) + target.turn_into_pickle() punish_log(target, punishment) diff --git a/code/modules/mob/living/simple_animal/pickle.dm b/code/modules/mob/living/simple_animal/pickle.dm index ded183b2bd..e7da388fb3 100644 --- a/code/modules/mob/living/simple_animal/pickle.dm +++ b/code/modules/mob/living/simple_animal/pickle.dm @@ -2,6 +2,28 @@ /mob/living/simple_animal/pickle name = "pickle" - desc = "funniest shit i've ever seen" + desc = "It's a pickle. It might just be the funniest thing you have ever seen." health = 100 maxHealth = 100 + icon = 'icons/mob/32x64.dmi' + icon_state = "pickle" + del_on_death = TRUE + deathmessage = "The pickle implodes into its own existential dread and disappears!" + friendly_verb_continous = "tickles" + friendly_verb_simple = "tickle" + var/mob/living/original_body + +/mob/living/simple_animal/pickle/UnarmedAttack(atom/A) + ..() //we want the tickle emote to go before the laugh + if(ismob(A)) + var/mob/laugher = A + laugher.emote("laugh") + +/mob/living/simple_animal/pickle/Destroy(force, kill_body = TRUE) + if(original_body) + if(kill_body) + original_body.adjustOrganLoss(ORGAN_SLOT_BRAIN, 200) //to be fair, you have to have a very high iq to understand- + original_body.forceMove(get_turf(src)) + if(mind) + mind.transfer_to(original_body) + ..() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 5fd94c8a89..8f86f8edc4 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -581,3 +581,20 @@ . = new_mob qdel(src) + +/mob/living/proc/turn_into_pickle() + //if they're already a pickle, turn them back instead + if(istype(src, /mob/living/simple_animal/pickle)) + qdel(src, FALSE) //this means the body inside the pickle will be dropped without killing it + else + //make a new pickle on the tile and move their mind into it if possible + var/mob/living/simple_animal/pickle/new_pickle = new /mob/living/simple_animal/pickle(get_turf(src)) + new_pickle.original_body = src + if(mind) + mind.transfer_to(new_pickle) + //give them their old access if any + var/obj/item/card/id/mob_access_card = get_idcard() + if(mob_access_card) + new_pickle.access_card = mob_access_card + //move old body inside the pickle for safekeeping (when they die, we'll return the corpse because we're nice) + src.forceMove(new_pickle) diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm index 994b0f7f01..ab180cb629 100644 --- a/code/modules/projectiles/ammunition/energy/special.dm +++ b/code/modules/projectiles/ammunition/energy/special.dm @@ -75,4 +75,9 @@ /obj/item/ammo_casing/energy/shrink projectile_type = /obj/item/projectile/beam/shrink select_name = "shrink ray" - e_cost = 200 \ No newline at end of file + e_cost = 200 + +/obj/item/ammo_casing/energy/pickle //ammo for an adminspawn gun + projectile_type = /obj/item/projectile/energy/pickle + select_name = "pickle ray" + e_cost = 0 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index b55e26b6a3..6489920b98 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -329,3 +329,11 @@ add_overlay("emitter_carbine_empty") else add_overlay("emitter_carbine") + +//the pickle ray +/obj/item/gun/energy/pickle_gun + name = "pickle ray" + desc = "funniest shit i've ever seen" + icon_state = "decloner" + no_pin_required = TRUE + ammo_type = list(/obj/item/ammo_casing/energy/pickle) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/energy/misc.dm b/code/modules/projectiles/projectile/energy/misc.dm index d5346b954d..bfa15e9ef8 100644 --- a/code/modules/projectiles/projectile/energy/misc.dm +++ b/code/modules/projectiles/projectile/energy/misc.dm @@ -13,3 +13,13 @@ damage_type = TOX knockdown = 100 range = 7 + +/obj/item/projectile/energy/pickle //projectile for adminspawn only gun + name = "pickle-izing beam" + icon_state = "declone" + +/obj/item/projectile/energy/pickle/on_hit(atom/target) + //we don't care if they blocked it, they're turning into a pickle + if(isliving(target)) + var/mob/living/living_target = target + living_target.turn_into_pickle() //yes this is a real proc diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 7ef52aef25..c9ca4e9ba3 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -207,7 +207,8 @@ /mob/living/simple_animal/pet/fox, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/pet/cat/cak, - /mob/living/simple_animal/chick) + /mob/living/simple_animal/chick, + /mob/living/simple_animal/pickle) new_mob = new path(M.loc) if("humanoid") diff --git a/icons/mob/32x64.dmi b/icons/mob/32x64.dmi index 32b25ba739343e7c109f6bd0377fd35e8fc23d48..79a4c8a7fd867e19258cfc2233eb4003f2a98928 100644 GIT binary patch delta 4670 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