From 12f100a7b80c4df804d44f852c73971643e9126a Mon Sep 17 00:00:00 2001 From: datlo Date: Wed, 23 Jan 2019 17:13:50 +0000 Subject: [PATCH 1/5] rework chameleon flag Moved to Stealthy Tools from Explosives Cost reduced from 7 TC to 1 Now start without an explosive, but can be boobytrapped with any grenade. Buying a syndicate minibomb and boobytrapping results in the same behaviour and TC as the old chameleon flag. The grenade can only be removed by the person who installed it. The flag's hidden explosive still explodes once the flag is done burning, not immediately. --- code/datums/uplink_item.dm | 15 +++++++------- code/game/objects/items/flag.dm | 36 +++++++++++++++++++++++++++++++-- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index c4a20fbd29b..2b3e6cc8690 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -914,13 +914,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 5 surplus = 8 -/datum/uplink_item/explosives/chameleonflag - name = "Chameleon Flag" - desc = "A flag that can be disguised as any other known flag. There is a heat sensitive bomb loaded into the pole that will be detonated if the flag is lit on fire." - reference = "CHFLAG" - item = /obj/item/flag/chameleon - cost = 7 - /datum/uplink_item/explosives/grenadier name = "Grenadier's belt" desc = "A belt containing 25 lethally dangerous and destructive grenades." @@ -984,6 +977,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 1 surplus = 35 +/datum/uplink_item/stealthy_tools/chameleonflag + name = "Chameleon Flag" + desc = "A flag that can be disguised as any other known flag. There is a hidden spot in the pole to boobytrap the flag with a grenade or minibomb, which will detonate some time after the flag is set on fire." + reference = "CHFLAG" + item = /obj/item/flag/chameleon + cost = 1 + surplus = 35 + /datum/uplink_item/stealthy_tools/syndigaloshes name = "No-Slip Syndicate Shoes" desc = "These allow you to run on wet floors. They do not work on lubricated surfaces." diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 4aadebe0dcc..6359f2e9d7a 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -205,6 +205,8 @@ origin_tech = "syndicate=4;magnets=4" var/updated_icon_state = null var/used = FALSE + var/obj/item/grenade/boobytrap = null + var/mob/trapper = null /obj/item/flag/chameleon/New() updated_icon_state = icon_state @@ -236,9 +238,39 @@ desc = chosen_flag.desc used = TRUE +/obj/item/flag/chameleon/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/grenade) && !boobytrap) + if(user.drop_item()) + boobytrap = I + trapper = user + I.forceMove(src) + to_chat(user, "You hide [I] in the [src]. It will detonate some time after the flag is lit on fire.") + var/turf/bombturf = get_turf(src) + var/area/A = get_area(bombturf) + message_admins("[key_name_admin(user)] has hidden [I] in the [src] ready for detonation at [A.name] (JMP).") + log_game("[key_name(user)] has hidden [I] in the [src] ready for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).") + investigate_log("[key_name(user)] has hidden [I] in the [src] ready for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).", INVESTIGATE_BOMB) + else if(isscrewdriver(I) && boobytrap && user == trapper) + to_chat(user, "You remove [boobytrap] from the [src].") + boobytrap.forceMove(get_turf(src)) + boobytrap = null + trapper = null + else + ..() + +/obj/item/flag/chameleon/attackby(obj/item/W, mob/user, params) + if(is_hot(W) && burn_state != ON_FIRE && boobytrap && trapper) + var/turf/bombturf = get_turf(src) + var/area/A = get_area(bombturf) + message_admins("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] (JMP).") + log_game("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).") + investigate_log("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).", INVESTIGATE_BOMB) + ..() + /obj/item/flag/chameleon/burn() - explosion(loc,1,2,4,4, flame_range = 4) - qdel(src) + if(boobytrap) + boobytrap.prime() + ..() /obj/item/flag/chameleon/updateFlagIcon() icon_state = updated_icon_state From 6ed648206ae0ddc9f790ef8e9213c6ff7410b50d Mon Sep 17 00:00:00 2001 From: datlo Date: Wed, 23 Jan 2019 19:41:43 +0000 Subject: [PATCH 2/5] depot flags are prearmed with a minibomb --- _maps/map_files/cyberiad/z6.dmm | 2 +- code/game/objects/items/flag.dm | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 1e97fc39c60..ad0681b08b2 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -625,7 +625,7 @@ "ma" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/outer) "mb" = (/obj/effect/landmark{name = "syndi_depot_bot"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mc" = (/obj/machinery/light{dir = 1; on = 1},/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) -"md" = (/obj/item/flag/chameleon{icon_state = "syndiflag"; name = "Syndicate Flag"; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) +"md" = (/obj/item/flag/chameleon/prearmed{icon_state = "syndiflag"; name = "Syndicate Flag"; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "me" = (/turf/simulated/wall,/area/syndicate_depot/outer) "mf" = (/obj/effect/spawner/random_spawners/syndicate/turret/external,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mg" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index 6359f2e9d7a..a19459916a7 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -216,7 +216,7 @@ if(used) return ..() - var/list/flag_types = typesof(/obj/item/flag) - list(src.type, /obj/item/flag) + var/list/flag_types = typesof(/obj/item/flag) - list(/obj/item/flag, /obj/item/flag/chameleon, /obj/item/flag/chameleon/prearmed) var/list/flag = list() for(var/flag_type in flag_types) @@ -274,3 +274,7 @@ /obj/item/flag/chameleon/updateFlagIcon() icon_state = updated_icon_state + +/obj/item/flag/chameleon/prearmed/New() + ..() + boobytrap = new /obj/item/grenade/syndieminibomb(src) \ No newline at end of file From de18ef108347b39bc2b20dcc6cc4d2c7df152a3b Mon Sep 17 00:00:00 2001 From: datlo Date: Wed, 23 Jan 2019 19:53:45 +0000 Subject: [PATCH 3/5] fix description of depot syndi flags --- _maps/map_files/cyberiad/z6.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index ad0681b08b2..93d4efc1d47 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -625,7 +625,7 @@ "ma" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/outer) "mb" = (/obj/effect/landmark{name = "syndi_depot_bot"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mc" = (/obj/machinery/light{dir = 1; on = 1},/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) -"md" = (/obj/item/flag/chameleon/prearmed{icon_state = "syndiflag"; name = "Syndicate Flag"; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) +"md" = (/obj/item/flag/chameleon/prearmed{icon_state = "syndiflag"; name = "Syndicate Flag"; desc = "A flag proudly boasting the logo of the Syndicate, in defiance of NT."; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "me" = (/turf/simulated/wall,/area/syndicate_depot/outer) "mf" = (/obj/effect/spawner/random_spawners/syndicate/turret/external,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mg" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) From 8474974a2aba66b17ade41ff108c58c8008676e5 Mon Sep 17 00:00:00 2001 From: datlo Date: Wed, 23 Jan 2019 20:22:17 +0000 Subject: [PATCH 4/5] replaced minibomb flags in depot by plasma nades --- _maps/map_files/cyberiad/z6.dmm | 2 +- code/game/objects/items/flag.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm index 93d4efc1d47..40244a0e900 100644 --- a/_maps/map_files/cyberiad/z6.dmm +++ b/_maps/map_files/cyberiad/z6.dmm @@ -625,7 +625,7 @@ "ma" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/outer) "mb" = (/obj/effect/landmark{name = "syndi_depot_bot"},/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mc" = (/obj/machinery/light{dir = 1; on = 1},/obj/item/stack/sheet/metal{layer = 4.1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) -"md" = (/obj/item/flag/chameleon/prearmed{icon_state = "syndiflag"; name = "Syndicate Flag"; desc = "A flag proudly boasting the logo of the Syndicate, in defiance of NT."; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) +"md" = (/obj/item/flag/chameleon/depot{icon_state = "syndiflag"; name = "Syndicate Flag"; desc = "A flag proudly boasting the logo of the Syndicate, in defiance of NT."; used = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/syndicate_depot/core) "me" = (/turf/simulated/wall,/area/syndicate_depot/outer) "mf" = (/obj/effect/spawner/random_spawners/syndicate/turret/external,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) "mg" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/syndicate_depot/outer) diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index a19459916a7..a0875a2f930 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -275,6 +275,6 @@ /obj/item/flag/chameleon/updateFlagIcon() icon_state = updated_icon_state -/obj/item/flag/chameleon/prearmed/New() +/obj/item/flag/chameleon/depot/New() ..() - boobytrap = new /obj/item/grenade/syndieminibomb(src) \ No newline at end of file + boobytrap = new /obj/item/grenade/gas/plasma(src) \ No newline at end of file From c2646dbcf284472d08ae6e2e3092cb73a4d82cc3 Mon Sep 17 00:00:00 2001 From: datlo Date: Wed, 23 Jan 2019 20:42:01 +0000 Subject: [PATCH 5/5] fix flag path i forgot oof --- code/game/objects/items/flag.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm index a0875a2f930..4f8abd4ac49 100644 --- a/code/game/objects/items/flag.dm +++ b/code/game/objects/items/flag.dm @@ -216,7 +216,7 @@ if(used) return ..() - var/list/flag_types = typesof(/obj/item/flag) - list(/obj/item/flag, /obj/item/flag/chameleon, /obj/item/flag/chameleon/prearmed) + var/list/flag_types = typesof(/obj/item/flag) - list(/obj/item/flag, /obj/item/flag/chameleon, /obj/item/flag/chameleon/depot) var/list/flag = list() for(var/flag_type in flag_types)