From b53b7dc0c127d6bc11e20771ed06573c50e06f54 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 15 Jun 2016 19:03:18 +0100 Subject: [PATCH 1/5] Adds the fun balloon base item and sound --- code/modules/admin/fun_balloon.dm | 24 ++++++++++++++++++++++++ sound/items/party_horn.ogg | Bin 0 -> 31264 bytes 2 files changed, 24 insertions(+) create mode 100644 code/modules/admin/fun_balloon.dm create mode 100644 sound/items/party_horn.ogg diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm new file mode 100644 index 00000000000..b66169d44a1 --- /dev/null +++ b/code/modules/admin/fun_balloon.dm @@ -0,0 +1,24 @@ +/obj/effect/fun_balloon + name = "fun balloon" + desc = "This is going to be a laugh riot." + anchoured = TRUE + +/obj/effect/fun_balloon/New() + . = ..() + SSobj.processing |= src + +/obj/effect/fun_balloon/Destroy() + SSobj.processing -= src + . = ..() + +/obj/effect/fun_balloon/process() + if(check()) + pop() + +/obj/effect/fun_balloon/proc/check() + return TRUE + +/obj/effect/fun_balloon/proc/pop() + visual_message("[src] pops!") + playsound(get_turf(src), 'sound/items/party_horn.ogg', 50, 1, -1) + qdel(src) diff --git a/sound/items/party_horn.ogg b/sound/items/party_horn.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ffdd49b1e72415d29d359faf4a8f28a184b83474 GIT binary patch literal 31264 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 apG;Hwh~XwFb+=p-4>fHl$CrP}0RJEVIJSHM literal 0 HcmV?d00001 From 5722bbe714690e7f7745aa1ff1d92fb0348ed73b Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 15 Jun 2016 21:12:39 +0100 Subject: [PATCH 2/5] Sentience balloon added --- code/modules/admin/fun_balloon.dm | 52 +++++++++++++++++++++-- code/modules/spells/spell_types/wizard.dm | 13 ++---- tgstation.dme | 1 + 3 files changed, 53 insertions(+), 13 deletions(-) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index b66169d44a1..a398d25528a 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -1,7 +1,9 @@ /obj/effect/fun_balloon name = "fun balloon" desc = "This is going to be a laugh riot." - anchoured = TRUE + icon = 'icons/obj/weapons.dmi' + icon_state = "syndballoon" + anchored = TRUE /obj/effect/fun_balloon/New() . = ..() @@ -14,11 +16,55 @@ /obj/effect/fun_balloon/process() if(check()) pop() + visible_message("[src] pops!") + playsound(get_turf(src), 'sound/items/party_horn.ogg', 50, 1, -1) + qdel(src) /obj/effect/fun_balloon/proc/check() return TRUE /obj/effect/fun_balloon/proc/pop() - visual_message("[src] pops!") - playsound(get_turf(src), 'sound/items/party_horn.ogg', 50, 1, -1) + return + +/obj/effect/fun_balloon/sentience + name = "sentience fun balloon" + desc = "When this pops, things are gonna get more aware around here." + var/effect_range = 3 + var/group_name = "a bunch of giant spiders" + +/obj/effect/fun_balloon/sentience/pop() + var/list/bodies = list() + for(var/mob/living/M in range(effect_range, get_turf(src))) + bodies += M + + var/question = "Would you like to be [group_name]?" + var/list/candidates = pollCandidates(question, "pAI", null, FALSE, 100) + while(candidates.len && bodies.len) + var/mob/dead/observer/ghost = pick_n_take(candidates) + var/mob/living/body = pick_n_take(bodies) + + body << "Your mob has been taken over by a ghost!" + message_admins("[key_name_admin(ghost)] has taken control \ + of ([key_name_admin(body)])") + body.ghostize(0) + body.key = ghost.key + new /obj/effect/overlay/sparkle(null, body) + +/obj/effect/overlay/sparkle + icon = 'icons/effects/effects.dmi' + icon_state = "shieldsparkles" + mouse_opacity = 0 + density = 0 + var/lifetime = 10 + +/obj/effect/overlay/sparkle/New(atom/movable/AM) + . = ..(null) + AM.overlays += src + addtimer(src, "expire", lifetime, FALSE, AM) + +/obj/effect/overlay/sparkle/proc/expire(atom/movable/AM) + AM.overlays -= src qdel(src) + +/obj/effect/overlay/sparkle/tailsweep + icon_state = "tailsweep" diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index 7643044a24b..96f05020bba 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -298,7 +298,7 @@ selection_type = "view" sound = 'sound/magic/Repulse.ogg' var/maxthrow = 5 - var/animation = "shieldsparkles" + var/sparkle_path = /obj/effect/overlay/sparkle action_icon_state = "repulse" @@ -314,12 +314,9 @@ for(var/atom/movable/AM in thrownatoms) if(AM == user || AM.anchored) continue - var/obj/effect/overlay/targeteffect = new /obj/effect/overlay{icon='icons/effects/effects.dmi'; icon_state="shieldsparkles"; mouse_opacity=0; density = 0}() - targeteffect.icon_state = animation - AM.overlays += targeteffect + new sparkle_path(AM) // created sparkles will disappear on their own throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(AM, user))) distfromcaster = get_dist(user, AM) - addtimer(src, "remove_sparkles", 10, FALSE, AM, targeteffect) if(distfromcaster == 0) if(istype(AM, /mob/living)) var/mob/living/M = AM @@ -333,10 +330,6 @@ M << "You're thrown back by [user]!" AM.throw_at_fast(throwtarget, ((Clamp((maxthrow - (Clamp(distfromcaster - 2, 0, distfromcaster))), 3, maxthrow))), 1,user)//So stuff gets tossed around at the same time. -/obj/effect/proc_holder/spell/aoe_turf/repulse/proc/remove_sparkles(atom/movable/AM, obj/effect/overlay/targeteffect) - AM.overlays -= targeteffect - qdel(targeteffect) - /obj/effect/proc_holder/spell/aoe_turf/repulse/xeno //i fixed conflicts only to find out that this is in the WIZARD file instead of the xeno file?! name = "Tail Sweep" desc = "Throw back attackers with a sweep of your tail." @@ -346,7 +339,7 @@ range = 2 cooldown_min = 150 invocation_type = "none" - animation = "tailsweep" + sparkle_path = /obj/effect/overlay/sparkle/tailsweep action_icon_state = "tailsweep" action_background_icon_state = "bg_alien" diff --git a/tgstation.dme b/tgstation.dme index e2da9e92263..2357a0627a0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -828,6 +828,7 @@ #include "code\modules\admin\create_object.dm" #include "code\modules\admin\create_poll.dm" #include "code\modules\admin\create_turf.dm" +#include "code\modules\admin\fun_balloon.dm" #include "code\modules\admin\holder2.dm" #include "code\modules\admin\IsBanned.dm" #include "code\modules\admin\NewBan.dm" From 75d4c6553a221e5d69b1cffc506e3c0770b5df73 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 15 Jun 2016 21:16:59 +0100 Subject: [PATCH 3/5] Emergency shuttle sentience balloon --- code/modules/admin/fun_balloon.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index a398d25528a..0b0a9ffe99e 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -50,6 +50,15 @@ body.key = ghost.key new /obj/effect/overlay/sparkle(null, body) +/obj/effect/fun_balloon/sentience/emergency_shuttle + name = "shuttle sentience fun balloon" + var/trigger_time = 60 + +/obj/effect/fun_balloon/sentience/emergency_shuttle/check() + . = FALSE + if(SSshuttle.emergency && (SSshuttle.emergency.timeLeft() <= trigger_time) && (SSshuttle.emergency.mode == SHUTTLE_CALL)) + . = TRUE + /obj/effect/overlay/sparkle icon = 'icons/effects/effects.dmi' icon_state = "shieldsparkles" From e257cef9c53469613f7da8559f728e278ea90781 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Wed, 15 Jun 2016 21:49:03 +0100 Subject: [PATCH 4/5] Adds fun balloons to shuttle templates Emergency Escape Bar and Shuttle 667 now have sentience balloons. --- _maps/shuttles/emergency_bar.dmm | 156 ++++++++++++++-------------- _maps/shuttles/emergency_narnar.dmm | 8 +- 2 files changed, 85 insertions(+), 79 deletions(-) diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 4c352622d1e..7ae3bb52c6b 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -385,85 +385,21 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, /area/shuttle/escape) -"bE" = ( +"bo" = ( /turf/closed/wall/shuttle{ - tag = "icon-gwall_space (EAST)"; - icon_state = "gwall_space"; - dir = 4 - }, -/area/shuttle/escape) -"bD" = ( -/turf/closed/wall/shuttle{ - tag = "icon-wall3"; - icon_state = "wall3"; + icon_state = "swall_s6"; dir = 2 }, /area/shuttle/escape) -"bC" = ( +"bp" = ( /turf/closed/wall/shuttle{ - tag = "icon-gwall_space"; - icon_state = "gwall_space"; + icon_state = "swall_s10"; dir = 2 }, /area/shuttle/escape) -"bB" = ( +"bq" = ( /turf/closed/wall/shuttle{ - icon_state = "swall11"; - dir = 2 - }, -/area/shuttle/escape) -"bA" = ( -/turf/closed/wall/shuttle{ - icon_state = "swallc2"; - dir = 2 - }, -/area/shuttle/escape) -"bz" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall1"; - dir = 2 - }, -/area/shuttle/escape) -"by" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall7"; - dir = 2 - }, -/area/shuttle/escape) -"bx" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall4"; - dir = 2 - }, -/area/shuttle/escape) -"bw" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall8"; - dir = 2 - }, -/area/shuttle/escape) -"bv" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall14"; - dir = 2 - }, -/area/shuttle/escape) -"bu" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall12"; - dir = 2 - }, -/area/shuttle/escape) -"bt" = ( -/turf/closed/wall/shuttle{ - tag = "icon-swall13"; - icon_state = "swall13"; - dir = 2 - }, -/area/shuttle/escape) -"bs" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall3"; + icon_state = "swallc4"; dir = 2 }, /area/shuttle/escape) @@ -474,24 +410,90 @@ dir = 2 }, /area/shuttle/escape) -"bq" = ( +"bs" = ( /turf/closed/wall/shuttle{ - icon_state = "swallc4"; + icon_state = "swall3"; dir = 2 }, /area/shuttle/escape) -"bp" = ( +"bt" = ( /turf/closed/wall/shuttle{ - icon_state = "swall_s10"; + tag = "icon-swall13"; + icon_state = "swall13"; dir = 2 }, /area/shuttle/escape) -"bo" = ( +"bu" = ( /turf/closed/wall/shuttle{ - icon_state = "swall_s6"; + icon_state = "swall12"; dir = 2 }, /area/shuttle/escape) +"bv" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall14"; + dir = 2 + }, +/area/shuttle/escape) +"bw" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall8"; + dir = 2 + }, +/area/shuttle/escape) +"bx" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall4"; + dir = 2 + }, +/area/shuttle/escape) +"by" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall7"; + dir = 2 + }, +/area/shuttle/escape) +"bz" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall1"; + dir = 2 + }, +/area/shuttle/escape) +"bA" = ( +/turf/closed/wall/shuttle{ + icon_state = "swallc2"; + dir = 2 + }, +/area/shuttle/escape) +"bB" = ( +/turf/closed/wall/shuttle{ + icon_state = "swall11"; + dir = 2 + }, +/area/shuttle/escape) +"bC" = ( +/turf/closed/wall/shuttle{ + tag = "icon-gwall_space"; + icon_state = "gwall_space"; + dir = 2 + }, +/area/shuttle/escape) +"bD" = ( +/obj/structure/table/wood/bar{ + boot_dir = 8 + }, +/obj/effect/fun_balloon/sentience/emergency_shuttle{ + group_name = "barstaff for the Emergency Escape Bar" + }, +/turf/open/floor/plasteel/bar, +/area/shuttle/escape) +"bE" = ( +/turf/closed/wall/shuttle{ + tag = "icon-gwall_space (EAST)"; + icon_state = "gwall_space"; + dir = 4 + }, +/area/shuttle/escape) (1,1,1) = {" aa @@ -672,7 +674,7 @@ av aF aH aH -aH +bD aH aH aT diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm index 97cef835f5d..39f48dd580b 100644 --- a/_maps/shuttles/emergency_narnar.dmm +++ b/_maps/shuttles/emergency_narnar.dmm @@ -135,10 +135,10 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "B" = ( -/obj/effect/rune/true_sight, /obj/effect/decal/remains/human, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/core, +/obj/effect/rune/raise_dead, /turf/open/floor/plasteel/cult, /area/shuttle/escape) "C" = ( @@ -146,8 +146,8 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "D" = ( -/obj/effect/rune/true_sight, /obj/effect/decal/remains/human, +/obj/effect/rune/raise_dead, /turf/open/floor/plasteel/cult, /area/shuttle/escape) "E" = ( @@ -181,6 +181,10 @@ /area/shuttle/escape) "I" = ( /obj/effect/rune/narsie, +/obj/effect/fun_balloon/sentience/emergency_shuttle{ + effect_range = 5; + group_name = "horrible monsters on Shuttle 667" + }, /turf/open/floor/plasteel/cult, /area/shuttle/escape) "J" = ( From ab938547869a0a1c84cde8b3ab82fc8c1fd5ce44 Mon Sep 17 00:00:00 2001 From: Jack Edge Date: Thu, 16 Jun 2016 00:00:55 +0100 Subject: [PATCH 5/5] Bug fixes, attempting to stop multiple messages --- code/modules/admin/fun_balloon.dm | 44 ++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index 0b0a9ffe99e..d8fdeb32e80 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/weapons.dmi' icon_state = "syndballoon" anchored = TRUE + var/popped = FALSE /obj/effect/fun_balloon/New() . = ..() @@ -14,17 +15,24 @@ . = ..() /obj/effect/fun_balloon/process() - if(check()) + if(!popped && check() && !qdeleted(src)) + popped = TRUE pop() - visible_message("[src] pops!") - playsound(get_turf(src), 'sound/items/party_horn.ogg', 50, 1, -1) - qdel(src) /obj/effect/fun_balloon/proc/check() - return TRUE + return FALSE /obj/effect/fun_balloon/proc/pop() - return + visible_message("[src] pops!") + playsound(get_turf(src), 'sound/items/party_horn.ogg', 50, 1, -1) + qdel(src) + +/obj/effect/fun_balloon/attack_ghost(mob/user) + if(!user.client || !user.client.holder || popped) + return + switch(alert("Pop [src]?","Fun Balloon","Yes","No")) + if("Yes") + pop() /obj/effect/fun_balloon/sentience name = "sentience fun balloon" @@ -48,7 +56,9 @@ of ([key_name_admin(body)])") body.ghostize(0) body.key = ghost.key - new /obj/effect/overlay/sparkle(null, body) + new /obj/effect/overlay/sparkle(body) + + . = ..() /obj/effect/fun_balloon/sentience/emergency_shuttle name = "shuttle sentience fun balloon" @@ -59,6 +69,19 @@ if(SSshuttle.emergency && (SSshuttle.emergency.timeLeft() <= trigger_time) && (SSshuttle.emergency.mode == SHUTTLE_CALL)) . = TRUE +/obj/effect/fun_balloon/scatter + name = "scatter fun balloon" + desc = "When this pops, you're not going to be around here anymore." + var/effect_range = 5 + +/obj/effect/fun_balloon/scatter/pop() + for(var/mob/living/M in range(effect_range, get_turf(src))) + var/turf/T = find_safe_turf() + new /obj/effect/overlay/sparkle(M) + M.forceMove(T) + M << "Pop!" + . = ..() + /obj/effect/overlay/sparkle icon = 'icons/effects/effects.dmi' icon_state = "shieldsparkles" @@ -68,8 +91,11 @@ /obj/effect/overlay/sparkle/New(atom/movable/AM) . = ..(null) - AM.overlays += src - addtimer(src, "expire", lifetime, FALSE, AM) + if(AM) + AM.overlays += src + addtimer(src, "expire", lifetime, FALSE, AM) + else + qdel(AM) /obj/effect/overlay/sparkle/proc/expire(atom/movable/AM) AM.overlays -= src