diff --git a/code/datums/spells/wizard.dm b/code/datums/spells/wizard.dm index dffde794d51..9c8c7b2c723 100644 --- a/code/datums/spells/wizard.dm +++ b/code/datums/spells/wizard.dm @@ -32,6 +32,43 @@ amt_weakened = 3 sound = 'sound/magic/MM_Hit.ogg' + +/obj/effect/proc_holder/spell/targeted/projectile/honk_missile + name = "Honk Missile" + desc = "This spell fires several, slow moving, magic bikehorns at nearby targets." + + school = "evocation" + charge_max = 60 + clothes_req = 0 + invocation = "HONK GY AMA" + invocation_type = "shout" + range = 7 + cooldown_min = 60 //35 deciseconds reduction per rank + + max_targets = 0 + + proj_icon = 'icons/obj/items.dmi' + proj_icon_state = "bike_horn" + proj_name = "A bike horn" + proj_lingering = 1 + proj_type = "/obj/effect/proc_holder/spell/targeted/inflict_handler/honk_missile" + + proj_lifespan = 20 + proj_step_delay = 5 + + proj_trail_icon = 'icons/obj/items.dmi' + proj_trail = 1 + proj_trail_lifespan = 5 + proj_trail_icon_state = "bike_horn" + + action_icon_state = "magicm" + + sound = 'sound/items/bikehorn.ogg' + +/obj/effect/proc_holder/spell/targeted/inflict_handler/honk_missile + amt_weakened = 3 + sound = 'sound/items/bikehorn.ogg' + /obj/effect/proc_holder/spell/noclothes name = "No Clothes" desc = "This always-on spell allows you to cast magic without your garments." diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index c90cbd12777..abe41483bc6 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -170,6 +170,7 @@ var/list/event_last_fired = list() new /datum/event_meta(EVENT_LEVEL_MODERATE, "Brand Intelligence", /datum/event/brand_intelligence, 50, list(ASSIGNMENT_ENGINEER = 25), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 50, list(ASSIGNMENT_ENGINEER = 50)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Dimensional Tear", /datum/event/tear, 0, list(ASSIGNMENT_SECURITY = 35)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Honknomoly", /datum/event/tear/honk, 0), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Vent Clog", /datum/event/vent_clog, 250), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Wormholes", /datum/event/wormholes, 150), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Pyro Anomaly", /datum/event/anomaly/anomaly_pyro, 75, list(ASSIGNMENT_ENGINEER = 60)), diff --git a/code/modules/events/koi_mirgration.dm b/code/modules/events/koi_mirgration.dm index cd82f54e37d..64e4c6afadd 100644 --- a/code/modules/events/koi_mirgration.dm +++ b/code/modules/events/koi_mirgration.dm @@ -1,4 +1,4 @@ -/datum/event/carp_migration +/datum/event/carp_migration/koi spawned_mobs = list( /mob/living/simple_animal/hostile/retaliate/carp/koi = 95, /mob/living/simple_animal/hostile/retaliate/carp/koi/honk = 2, diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index 7a13c239de0..dcc63ba4770 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -28,6 +28,7 @@ density = 0 anchored = 1 luminosity = 3 + var/list/tear_critters = list() /obj/effect/tear/New() ..() @@ -38,10 +39,10 @@ animation.master = src // flick("newtear",usr) spawn(15) - if(animation) qdel(animation) + if(animation) + qdel(animation) spawn(rand(30,120)) - var/list/tear_critters = list() for(var/T in typesof(/mob/living/simple_animal)) var/mob/living/simple_animal/SA = T if(initial(SA.gold_core_spawnable) == CHEM_MOB_SPAWN_HOSTILE) diff --git a/code/modules/events/tear_honk.dm b/code/modules/events/tear_honk.dm new file mode 100644 index 00000000000..96e3a7b1b23 --- /dev/null +++ b/code/modules/events/tear_honk.dm @@ -0,0 +1,41 @@ +/datum/event/tear + var/obj/effect/tear/honk/HE //i could just inherit but its being finicky. + +/datum/event/tear/honk/announce() + event_announcement.Announce("A Honknomoly has opened. Expected location: [impact_area.name].", "Honknomoly Alert", 'sound/items/airhorn.ogg') + +/datum/event/tear/honk/start() + var/turf/T = pick(get_area_turfs(impact_area)) + if(T) + HE = new /obj/effect/tear/honk(T.loc) + +/datum/event/tear/end() + if(HE) + qdel(HE) + +/obj/effect/tear/honk + name="Honkmensional Tear" + desc="A tear in the dimensional fabric of sanity." + icon='icons/effects/tear.dmi' + icon_state="tear" + tear_critters = list(/mob/living/simple_animal/hostile/retaliate/clown/goblin) + +/obj/effect/tear/honk/New() + var/atom/movable/overlay/animation = null + animation = new(loc) + animation.icon_state = "newtear" + animation.icon = 'icons/effects/tear.dmi' + animation.master = src + spawn(15) + if(animation) + qdel(animation) + + spawn(rand(30,120)) + + for(var/i in 1 to 6) + var/chosen = pick(tear_critters) + var/mob/living/simple_animal/C = new chosen + C.forceMove(get_turf(src)) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(C, pick(NORTH,SOUTH,EAST,WEST)) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 4fefd0ac4f6..6f6317ec839 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -29,3 +29,23 @@ heat_damage_per_tick = 15 //amount of damage applied if animal's body temperature is higher than maxbodytemp cold_damage_per_tick = 10 //same as heat_damage_per_tick, only if the bodytemperature it's lower than minbodytemp unsuitable_atmos_damage = 10 + + +/mob/living/simple_animal/hostile/retaliate/clown/goblin + name = "clown goblin" + desc = "A tiny walking mask and clown shoes. You want to honk his nose!" + icon_state = "clowngoblin" + icon_living = "clowngoblin" + icon_dead = null + response_help = "honks the" + speak = list("Honk!") + speak_emote = list("sqeaks") + emote_see = list("honks") + maxHealth = 100 + health = 100 + + speed = -1 + turns_per_move = 1 + + del_on_death = TRUE + loot = list(/obj/item/clothing/mask/gas/clown_hat, /obj/item/clothing/shoes/clown_shoes) diff --git a/icons/effects/tear.dmi b/icons/effects/tear.dmi index 305b63bcb0c..db544043ed0 100644 Binary files a/icons/effects/tear.dmi and b/icons/effects/tear.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index c82f0d6ccf3..4fcd7a58fe9 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/paradise.dme b/paradise.dme index 4200726faf5..48290761e6a 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1409,6 +1409,7 @@ #include "code\modules\events\spider_terror.dm" #include "code\modules\events\spontaneous_appendicitis.dm" #include "code\modules\events\tear.dm" +#include "code\modules\events\tear_honk.dm" #include "code\modules\events\traders.dm" #include "code\modules\events\undead.dm" #include "code\modules\events\vent_clog.dm"