This commit is contained in:
Fermi
2019-06-01 03:24:16 +01:00
9 changed files with 259 additions and 3 deletions

View File

@@ -0,0 +1,36 @@
/obj/item/clothing/shoes/clown_shoes/taeclowndo
var/list/spelltypes = list (
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pie,
/obj/effect/proc_holder/spell/aimed/banana_peel,
/obj/effect/proc_holder/spell/targeted/touch/megahonk,
/obj/effect/proc_holder/spell/targeted/touch/bspie,
)
var/list/spells = list()
/obj/item/clothing/shoes/clown_shoes/taeclowndo/equipped(mob/user, slot)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(!(H.has_trait(TRAIT_CLUMSY)) && !(H.mind && H.mind.assigned_role == "Clown"))
return
if(slot == SLOT_SHOES)
spells = new
for(var/spell in spelltypes)
var/obj/effect/proc_holder/spell/S = new spell
spells += S
S.charge_counter = 0
S.start_recharge()
H.mind.AddSpell(S)
/obj/item/clothing/shoes/clown_shoes/taeclowndo/dropped(mob/user)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(H.get_item_by_slot(SLOT_SHOES) == src)
for(var/spell in spells)
var/obj/effect/proc_holder/spell/S = spell
H.mind.spell_list.Remove(S)
qdel(S)

View File

@@ -62,6 +62,28 @@
/obj/item/reagent_containers/food/snacks/pie/cream/nostun
stunning = FALSE
/obj/item/reagent_containers/food/snacks/pie/cream/body
/obj/item/reagent_containers/food/snacks/pie/cream/body/Destroy()
var/turf/T = get_turf(src)
for(var/atom/movable/A in contents)
A.forceMove(T)
A.throw_at(T, 1, 1)
. = ..()
/obj/item/reagent_containers/food/snacks/pie/cream/body/On_Consume(mob/living/carbon/M)
if(!reagents.total_volume) //so that it happens on the last bite
if(iscarbon(M) && contents.len)
var/turf/T = get_turf(src)
for(var/atom/movable/A in contents)
A.forceMove(T)
A.throw_at(T, 1, 1)
M.visible_message("[src] bursts out of [M]!</span>")
M.emote("scream")
M.Knockdown(40)
M.adjustBruteLoss(60)
return ..()
/obj/item/reagent_containers/food/snacks/pie/berryclafoutis
name = "berry clafoutis"
desc = "No black birds, this is a good sign."

View File

@@ -215,7 +215,7 @@
The 'fire' activator will cause the mechanism to attempt to launch objects at the coordinates, if possible. Note that the \
projectile needs to be inside the machine, or on an adjacent tile, and must be medium sized or smaller. The assembly \
must also be a gun if you wish to launch something while the assembly is in hand."
complexity = 75
complexity = 50
w_class = WEIGHT_CLASS_SMALL
size = 4
cooldown_per_use = 30
@@ -306,7 +306,7 @@
desc = "Used to stun a target holding the device via electricity."
icon_state = "power_relay"
extended_desc = "Attempts to stun the holder of this device, with the strength input being the strength of the stun, from 1 to 70."
complexity = 60
complexity = 30
size = 4
inputs = list("strength" = IC_PINTYPE_NUMBER)
activators = list("stun" = IC_PINTYPE_PULSE_IN, "on success" = IC_PINTYPE_PULSE_OUT, "on fail" = IC_PINTYPE_PULSE_OUT)
@@ -340,4 +340,4 @@
var/mob/living/carbon/human/H = L
H.forcesay(GLOB.hit_appends)
return 1
return 1

View File

@@ -74,6 +74,8 @@
/obj/effect/proc_holder/spell/aimed/proc/fire_projectile(mob/living/user, atom/target)
current_amount--
if(!projectile_type)
return
for(var/i in 1 to projectiles_per_fire)
var/obj/item/projectile/P = new projectile_type(user.loc)
P.firer = user

View File

@@ -94,3 +94,87 @@
M.Stun(40)
M.petrify()
return ..()
/obj/item/melee/touch_attack/megahonk
name = "\improper honkmother's blessing"
desc = "You've got a feeling they won't be laughing after this one. Honk honk."
catchphrase = "HONKDOOOOUKEN!"
on_use_sound = 'sound/items/airhorn.ogg'
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "mecha_honker"
/obj/item/melee/touch_attack/megahonk/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity || !iscarbon(target) || !iscarbon(user) || user.handcuffed)
return
user.say(catchphrase, forced = "spell")
playsound(get_turf(target), on_use_sound,100,1)
for(var/mob/living/carbon/M in (hearers(1, target) - user)) //3x3 around the target, not affecting the user
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
continue
var/mul = (M==target ? 1 : 0.5)
to_chat(M, "<font color='red' size='7'>HONK</font>")
M.SetSleeping(0)
M.stuttering += 20*mul
M.adjustEarDamage(0, 30*mul)
M.Knockdown(60*mul)
if(prob(40))
M.Knockdown(200*mul)
else
M.Jitter(500*mul)
charges--
if(charges <= 0)
qdel(src)
/obj/item/melee/touch_attack/megahonk/attack_self(mob/user)
. = ..()
to_chat(user, "<span class='notice'>\The [src] disappears, to honk another day.</span>")
qdel(src)
/obj/item/melee/touch_attack/bspie
name = "\improper bluespace pie"
desc = "A thing you can barely comprehend as you hold it in your hand. You're fairly sure you could fit an entire body inside."
on_use_sound = 'sound/magic/demon_consume.ogg'
icon = 'icons/obj/food/piecake.dmi'
icon_state = "frostypie"
color = "#000077"
/obj/item/melee/touch_attack/bspie/attack_self(mob/user)
. = ..()
to_chat(user, "<span class='notice'>You smear \the [src] on your chest! </span>")
qdel(src)
/obj/item/melee/touch_attack/bspie/afterattack(atom/target, mob/living/carbon/user, proximity)
if(!proximity || !iscarbon(target) || !iscarbon(user) || user.handcuffed)
return
if(target == user)
to_chat(user, "<span class='notice'>You smear \the [src] on your chest!</span>")
qdel(src)
return
var/mob/living/carbon/M = target
user.visible_message("<span class='warning'>[user] is trying to stuff [M]\s body into \the [src]!</span>")
if(do_mob(user, M, 250))
var/name = M.real_name
var/obj/item/reagent_containers/food/snacks/pie/cream/body/pie = new(get_turf(M))
pie.name = "\improper [name] [pie.name]"
playsound(get_turf(target), on_use_sound, 50, 1)
/*
var/obj/item/bodypart/head = M.get_bodypart("head")
if(head)
head.drop_limb()
head.throw_at(get_turf(head), 1, 1)
qdel(M)
*/
M.forceMove(pie)
charges--
if(charges <= 0)
qdel(src)

View File

@@ -0,0 +1,86 @@
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pie
name = "Summon Creampie"
desc = "A clown's weapon of choice. Use this to summon a fresh pie, just waiting to acquaintain itself with someone's face."
invocation_type = "none"
include_user = 1
range = -1
clothes_req = 0
item_type = /obj/item/reagent_containers/food/snacks/pie/cream
charge_max = 30
cooldown_min = 30
action_icon = 'icons/obj/food/piecake.dmi'
action_icon_state = "pie"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/effect/proc_holder/spell/aimed/banana_peel
name = "Conjure Banana Peel"
desc = "Make a banana peel appear out of thin air right under someone's feet!"
charge_type = "recharge"
charge_max = 100
cooldown_min = 100
clothes_req = 0
invocation_type = "none"
range = 7
selection_type = "view"
projectile_type = null
active_msg = "You focus, your mind reaching to the clown dimension, ready to make a peel matrialize wherever you want!"
deactive_msg = "You relax, the peel remaining right in the \"thin air\" it would appear out of."
action_icon = 'icons/obj/hydroponics/harvest.dmi'
base_icon_state = "banana_peel"
action_icon_state = "banana"
/obj/effect/proc_holder/spell/aimed/banana_peel/cast(list/targets, mob/user = usr)
var/target = get_turf(targets[1])
if(get_dist(user,target)>range)
to_chat(user, "<span class='notice'>\The [target] is too far away!</span>")
return
. = ..()
new /obj/item/grown/bananapeel(target)
/obj/effect/proc_holder/spell/aimed/banana_peel/update_icon()
if(!action)
return
if(active)
action.button_icon_state = base_icon_state
else
action.button_icon_state = action_icon_state
action.UpdateButtonIcon()
return
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/effect/proc_holder/spell/targeted/touch/megahonk
name = "Mega HoNk"
desc = "This spell channels your inner clown powers, concentrating them into one massive HONK."
hand_path = /obj/item/melee/touch_attack/megahonk
charge_max = 100
clothes_req = 0
cooldown_min = 100
action_icon = 'icons/mecha/mecha_equipment.dmi'
action_icon_state = "mecha_honker"
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/obj/effect/proc_holder/spell/targeted/touch/bspie
name = "Bluespace Banana Pie"
desc = "An entire body would fit in there!"
hand_path = /obj/item/melee/touch_attack/bspie
charge_max = 450
clothes_req = 0
cooldown_min = 450
action_icon = 'icons/obj/food/piecake.dmi'
action_icon_state = "frostypie"

View File

@@ -837,6 +837,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 0
include_modes = list(/datum/game_mode/nuclear/clown_ops)
datum/uplink_item/stealthy_tools/taeclowndo_shoes
name = "Tae-clown-do Shoes"
desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
cost = 12
item = /obj/item/clothing/shoes/clown_shoes/taeclowndo
include_modes = list(/datum/game_mode/nuclear/clown_ops)
/datum/uplink_item/stealthy_tools/frame
name = "F.R.A.M.E. PDA Cartridge"
desc = "When inserted into a personal digital assistant, this cartridge gives you five PDA viruses which \
@@ -1382,6 +1389,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/dnainjector/clumsymut
restricted_roles = list("Clown")
/datum/uplink_item/role_restricted/taeclowndo_shoes
name = "Tae-clown-do Shoes"
desc = "A pair of shoes for the most elite agents of the honkmotherland. They grant the mastery of taeclowndo with some honk-fu moves as long as they're worn."
cost = 14
item = /obj/item/clothing/shoes/clown_shoes/taeclowndo
restricted_roles = list("Clown")
/datum/uplink_item/role_restricted/mimery
name = "Guide to Advanced Mimery Series"
desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. Obviously only works for Mimes."

View File

@@ -0,0 +1,10 @@
author: "Useroth"
delete-after: True
changes:
- rscadd: "Taeclowndo shoes which grant the four following abilities:
- Conjuring a cream pie right into their hand. Every three seconds.
- Making a banana peel appear out of thin air at the tile of the clown's choice. Every ten seconds.
- Mega HoNk. A touch-ranged, very small AOE ability, with effect equal to being honked by a Honkerblast on a clown mech, with the effects halved for anyone who isn't its direct target. Every ten seconds.
- Bluespace Banana Pie. You don't throw this one... not right away at least. This baby can fit an entire body inside. Good for disposal of evidence. 25 second-long action, 45 second cooldown. Also produces a \"[victim's name] cream pie\". The body drops out of the pie if you splat it somewhere or destroy the pie. If you eat it, it will chestburst out of you a'la monkey cube.
It's a 14 TC item for traitor clowns and a 12 TC item for clown-ops."

View File

@@ -1497,6 +1497,7 @@
#include "code\modules\clothing\shoes\colour.dm"
#include "code\modules\clothing\shoes\magboots.dm"
#include "code\modules\clothing\shoes\miscellaneous.dm"
#include "code\modules\clothing\shoes\taeclowndo.dm"
#include "code\modules\clothing\shoes\vg_shoes.dm"
#include "code\modules\clothing\spacesuits\_spacesuits.dm"
#include "code\modules\clothing\spacesuits\chronosuit.dm"
@@ -2664,6 +2665,7 @@
#include "code\modules\spells\spell_types\shapeshift.dm"
#include "code\modules\spells\spell_types\spacetime_distortion.dm"
#include "code\modules\spells\spell_types\summonitem.dm"
#include "code\modules\spells\spell_types\taeclowndo.dm"
#include "code\modules\spells\spell_types\the_traps.dm"
#include "code\modules\spells\spell_types\touch_attacks.dm"
#include "code\modules\spells\spell_types\trigger.dm"