From b57ea6a75288ea66040093d9afba5a1975f8ef77 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Fri, 29 Apr 2016 17:19:08 +0100 Subject: [PATCH 1/6] Adds colored smoke grenades and ability for them to take color --- code/game/objects/effects/effect_system.dm | 11 ++++++----- .../items/weapons/grenades/smokebomb.dm | 18 +++++++++++------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 586ba9b721e..3142022acde 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -321,7 +321,7 @@ steam.start() -- spawns the effect if(direct) direction = direct -/datum/effect/effect/system/smoke_spread/start() +/datum/effect/effect/system/smoke_spread/start(var/I) var/i = 0 for(i=0, i 20) @@ -331,6 +331,7 @@ steam.start() -- spawns the effect src.location = get_turf(holder) var/obj/effect/effect/smoke/smoke = PoolOrNew(smoke_type, src.location) src.total_smoke++ + smoke.color = I var/direction = src.direction if(!direction) if(src.cardinals) @@ -507,9 +508,9 @@ steam.start() -- spawns the effect M << "The solution violently explodes." explosion( - location, - round(min(devst, BOMBCAP_DVSTN_RADIUS)), - round(min(heavy, BOMBCAP_HEAVY_RADIUS)), - round(min(light, BOMBCAP_LIGHT_RADIUS)), + location, + round(min(devst, BOMBCAP_DVSTN_RADIUS)), + round(min(heavy, BOMBCAP_HEAVY_RADIUS)), + round(min(light, BOMBCAP_LIGHT_RADIUS)), round(min(flash, BOMBCAP_FLASH_RADIUS)) ) diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 704df83db8a..6ba4ffb9886 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -7,6 +7,14 @@ item_state = "flashbang" slot_flags = SLOT_BELT var/datum/effect/effect/system/smoke_spread/bad/smoke + var/smoke_color + var/smoke_strength = 4 + +/obj/item/weapon/grenade/smokebomb/red + smoke_color = "#FF0000" + +/obj/item/weapon/grenade/smokebomb/blue + smoke_color = "#0000FF" /obj/item/weapon/grenade/smokebomb/New() ..() @@ -22,13 +30,9 @@ playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) src.smoke.set_up(10, 0, usr.loc) spawn(0) - src.smoke.start() - sleep(10) - src.smoke.start() - sleep(10) - src.smoke.start() - sleep(10) - src.smoke.start() + for(var/i = 1 to smoke_strength) + src.smoke.start(smoke_color) + sleep(10) for(var/obj/effect/blob/B in view(8,src)) var/damage = round(30/(get_dist(B,src)+1)) From c4929aa43fbad6663bb01eaceac82c3b81c060e0 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Fri, 29 Apr 2016 20:30:31 +0100 Subject: [PATCH 2/6] Adds ability to change color of smoke of smoke grenades with a multitool --- .../game/objects/items/weapons/grenades/smokebomb.dm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 6ba4ffb9886..8f5c701d86b 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -1,5 +1,5 @@ /obj/item/weapon/grenade/smokebomb - desc = "It is set to detonate in 2 seconds." + desc = "It is set to detonate in 2 seconds. These high-tech grenades can have their color adapted on the fly with a multitool!" name = "smoke bomb" icon = 'icons/obj/grenade.dmi' icon_state = "flashbang" @@ -10,12 +10,6 @@ var/smoke_color var/smoke_strength = 4 -/obj/item/weapon/grenade/smokebomb/red - smoke_color = "#FF0000" - -/obj/item/weapon/grenade/smokebomb/blue - smoke_color = "#0000FF" - /obj/item/weapon/grenade/smokebomb/New() ..() src.smoke = PoolOrNew(/datum/effect/effect/system/smoke_spread/bad) @@ -41,3 +35,7 @@ sleep(80) qdel(src) return + +/obj/item/weapon/grenade/smokebomb/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I,/obj/item/device/multitool)) + smoke_color = input(user, "Choose a color for the smoke:") as color|null \ No newline at end of file From 1e78ff97e1d5efd27f22aa0760bda6f7d4f4b5bb Mon Sep 17 00:00:00 2001 From: Yoshax Date: Sat, 30 Apr 2016 14:29:46 +0100 Subject: [PATCH 3/6] Adjust smoke color selection --- code/game/objects/items/weapons/grenades/smokebomb.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 8f5c701d86b..00d682ec981 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -38,4 +38,6 @@ /obj/item/weapon/grenade/smokebomb/attackby(obj/item/I as obj, mob/user as mob) if(istype(I,/obj/item/device/multitool)) - smoke_color = input(user, "Choose a color for the smoke:") as color|null \ No newline at end of file + var/new_smoke_color = input(user, "Choose a color for the smoke:", "Smoke Color", smoke_color) as color|null + if(new_smoke_color) + smoke_color = new_smoke_color From 5bc7eaa212099b405751e174739ab4dc4988431b Mon Sep 17 00:00:00 2001 From: Yoshax Date: Sat, 30 Apr 2016 20:04:43 +0100 Subject: [PATCH 4/6] Removes stupid vars, adjusts smoke code --- code/game/objects/effects/effect_system.dm | 51 +++++++++++----------- code/modules/mob/mob_defines.dm | 2 - 2 files changed, 25 insertions(+), 28 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3142022acde..8d4e69a2a7f 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -193,7 +193,7 @@ steam.start() -- spawns the effect affect(M) /obj/effect/effect/smoke/proc/affect(var/mob/living/carbon/M) - if (istype(M)) + if (!istype(M)) return 0 if (M.internal != null) if(M.wear_mask && (M.wear_mask.item_flags & AIRTIGHT)) @@ -226,6 +226,7 @@ steam.start() -- spawns the effect /obj/effect/effect/smoke/bad time_to_live = 200 + var/list/projectiles /obj/effect/effect/smoke/bad/Move() ..() @@ -235,20 +236,23 @@ steam.start() -- spawns the effect /obj/effect/effect/smoke/bad/affect(var/mob/living/carbon/M) if (!..()) return 0 - M.drop_item() M.adjustOxyLoss(1) - if (M.coughedtime != 1) - M.coughedtime = 1 + if(prob(25)) M.emote("cough") - spawn ( 20 ) - M.coughedtime = 0 -/obj/effect/effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 - if(istype(mover, /obj/item/projectile/beam)) - var/obj/item/projectile/beam/B = mover - B.damage = (B.damage/2) +/obj/effect/effect/smoke/bad/Crossed(atom/movable/M as mob|obj) + ..() + if(istype(M, /obj/item/projectile/beam)) + var/obj/item/projectile/beam/B = M + if(!(B in projectiles)) + B.damage = (B.damage/2) + projectiles += B + destroyed_event.register(B, src, /obj/effect/effect/smoke/bad/proc/on_projectile_delete) + world << "Damage is: [B.damage]" return 1 + +/obj/effect/effect/smoke/bad/proc/on_projectile_delete(obj/item/projectile/beam/proj) + projectiles -= proj ///////////////////////////////////////////// // Sleep smoke ///////////////////////////////////////////// @@ -266,11 +270,8 @@ steam.start() -- spawns the effect M.drop_item() M:sleeping += 1 - if (M.coughedtime != 1) - M.coughedtime = 1 + if(prob(20)) M.emote("cough") - spawn ( 20 ) - M.coughedtime = 0 ///////////////////////////////////////////// // Mustard Gas ///////////////////////////////////////////// @@ -282,22 +283,20 @@ steam.start() -- spawns the effect /obj/effect/effect/smoke/mustard/Move() ..() - for(var/mob/living/carbon/human/R in get_turf(src)) - affect(R) + for(var/mob/living/carbon/human/M in get_turf(src)) + affect(M) -/obj/effect/effect/smoke/mustard/affect(var/mob/living/carbon/human/R) +/obj/effect/effect/smoke/mustard/affect(var/mob/living/carbon/human/M) if (!..()) return 0 - if (R.wear_suit != null) + if (M.wear_suit != null) return 0 - R.burn_skin(0.75) - if (R.coughedtime != 1) - R.coughedtime = 1 - R.emote("gasp") - spawn (20) - R.coughedtime = 0 - R.updatehealth() + M.burn_skin(0.75) + if(prob(20)) + M.emote("cough") + M.emote("gasp") + M.updatehealth() return ///////////////////////////////////////////// diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 7eb32ea8db6..7b7f994e8f0 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -130,8 +130,6 @@ var/in_throw_mode = 0 - var/coughedtime = null - var/inertia_dir = 0 var/music_lastplayed = "null" From 5824f0a7c17f1e7165c7975c04c88066c283afab Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 2 May 2016 13:44:47 +0100 Subject: [PATCH 5/6] Comments out smoke reducing laser damage until there's a nice way to do it --- code/game/objects/effects/effect_system.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 8d4e69a2a7f..4305efd5665 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -240,6 +240,7 @@ steam.start() -- spawns the effect if(prob(25)) M.emote("cough") +/* Not feasile until a later date /obj/effect/effect/smoke/bad/Crossed(atom/movable/M as mob|obj) ..() if(istype(M, /obj/item/projectile/beam)) @@ -253,6 +254,8 @@ steam.start() -- spawns the effect /obj/effect/effect/smoke/bad/proc/on_projectile_delete(obj/item/projectile/beam/proj) projectiles -= proj +*/ + ///////////////////////////////////////////// // Sleep smoke ///////////////////////////////////////////// From 6072ad758a978bec2120b604ca3b03467f727886 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 2 May 2016 14:13:50 +0100 Subject: [PATCH 6/6] Removes a bunch of old, unused code --- code/game/objects/effects/effect_system.dm | 56 +--------------------- 1 file changed, 1 insertion(+), 55 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 4305efd5665..56c216809c7 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -226,7 +226,7 @@ steam.start() -- spawns the effect /obj/effect/effect/smoke/bad time_to_live = 200 - var/list/projectiles + //var/list/projectiles /obj/effect/effect/smoke/bad/Move() ..() @@ -256,52 +256,6 @@ steam.start() -- spawns the effect projectiles -= proj */ -///////////////////////////////////////////// -// Sleep smoke -///////////////////////////////////////////// - -/obj/effect/effect/smoke/sleepy - -/obj/effect/effect/smoke/sleepy/Move() - ..() - for(var/mob/living/carbon/M in get_turf(src)) - affect(M) - -/obj/effect/effect/smoke/sleepy/affect(mob/living/carbon/M as mob ) - if (!..()) - return 0 - - M.drop_item() - M:sleeping += 1 - if(prob(20)) - M.emote("cough") -///////////////////////////////////////////// -// Mustard Gas -///////////////////////////////////////////// - - -/obj/effect/effect/smoke/mustard - name = "mustard gas" - icon_state = "mustard" - -/obj/effect/effect/smoke/mustard/Move() - ..() - for(var/mob/living/carbon/human/M in get_turf(src)) - affect(M) - -/obj/effect/effect/smoke/mustard/affect(var/mob/living/carbon/human/M) - if (!..()) - return 0 - if (M.wear_suit != null) - return 0 - - M.burn_skin(0.75) - if(prob(20)) - M.emote("cough") - M.emote("gasp") - M.updatehealth() - return - ///////////////////////////////////////////// // Smoke spread ///////////////////////////////////////////// @@ -351,14 +305,6 @@ steam.start() -- spawns the effect /datum/effect/effect/system/smoke_spread/bad smoke_type = /obj/effect/effect/smoke/bad -/datum/effect/effect/system/smoke_spread/sleepy - smoke_type = /obj/effect/effect/smoke/sleepy - - -/datum/effect/effect/system/smoke_spread/mustard - smoke_type = /obj/effect/effect/smoke/mustard - - ///////////////////////////////////////////// //////// Attach an Ion trail to any object, that spawns when it moves (like for the jetpack) /// just pass in the object to attach it to in set_up