From 01450122b2fe581d56c6b34e758064d05bcd62b1 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Mon, 9 Jan 2017 20:47:13 -0800 Subject: [PATCH 1/5] Adds preliminary robot module sight actions No icons yet, that's another commit --- .../modules/mob/living/silicon/robot/robot.dm | 7 ++--- .../silicon/robot/robot_module_actions.dm | 26 +++++++++++++++++++ .../mob/living/silicon/robot/robot_modules.dm | 12 +++++++-- paradise.dme | 1 + 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 code/modules/mob/living/silicon/robot/robot_module_actions.dm diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 64b6da638c0..cc68b0b8f0a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -86,6 +86,7 @@ var/list/robot_verbs_default = list( var/datum/effect/system/ion_trail_follow/ion_trail // Ionpulse effect. var/datum/action/item_action/toggle_research_scanner/scanner = null + var/list/module_actions = list() /mob/living/silicon/robot/New(loc,var/syndie = 0,var/unfinished = 0, var/alien = 0) spark_system = new /datum/effect/system/spark_spread() @@ -371,7 +372,7 @@ var/list/robot_verbs_default = list( //languages module.add_languages(src) //subsystems - module.add_subsystems(src) + module.add_subsystems_and_actions(src) //Custom_sprite check and entry if(custom_sprite == 1) @@ -1424,7 +1425,7 @@ var/list/robot_verbs_default = list( //languages module.add_languages(src) //subsystems - module.add_subsystems(src) + module.add_subsystems_and_actions(src) status_flags &= ~CANPUSH @@ -1443,7 +1444,7 @@ var/list/robot_verbs_default = list( //languages module.add_languages(src) //subsystems - module.add_subsystems(src) + module.add_subsystems_and_actions(src) status_flags &= ~CANPUSH diff --git a/code/modules/mob/living/silicon/robot/robot_module_actions.dm b/code/modules/mob/living/silicon/robot/robot_module_actions.dm new file mode 100644 index 00000000000..59ad0f59bf6 --- /dev/null +++ b/code/modules/mob/living/silicon/robot/robot_module_actions.dm @@ -0,0 +1,26 @@ +/datum/action/innate/robot_sight + var/sight_mode = null + +/datum/action/innate/robot_sight/Activate() + var/mob/living/silicon/robot/R = owner + R.sight_mode |= sight_mode + R.update_sight() + active = 1 + +/datum/action/innate/robot_sight/Deactivate() + var/mob/living/silicon/robot/R = owner + R.sight_mode &= ~sight_mode + R.update_sight() + active = 0 + +/datum/action/innate/robot_sight/xray + name = "X-ray Vision" + sight_mode = BORGXRAY + +/datum/action/innate/sight/thermal + name = "Thermal Vision" + sight_mode = BORGTHERM + +/datum/action/innate/robot_sight/meson + name = "Meson Vision" + sight_mode = BORGMESON diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index d99bad202d7..dabb45a8e0c 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -9,6 +9,7 @@ var/list/modules = list() var/obj/item/emag = null var/list/subsystems = list() + var/list/module_actions = list() var/module_type = "NoMod" // For icon usage @@ -92,11 +93,18 @@ R.add_language("Orluum", 0) R.add_language("Clownish",0) -/obj/item/weapon/robot_module/proc/add_subsystems(mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/proc/add_subsystems_and_actions(mob/living/silicon/robot/R) R.verbs |= subsystems + for(var/A in module_actions) + var/datum/action/act = new A() + A.grant(R) + R.module_actions += A -/obj/item/weapon/robot_module/proc/remove_subsystems(mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R) R.verbs -= subsystems + for(var/datum/action/A in R.module_actions) + A.Remove(R) + R.module_actions.cut() /obj/item/weapon/robot_module/standard name = "standard robot module" diff --git a/paradise.dme b/paradise.dme index 2c8c24688fa..cdaf2b9c9fd 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1610,6 +1610,7 @@ #include "code\modules\mob\living\silicon\robot\robot_damage.dm" #include "code\modules\mob\living\silicon\robot\robot_items.dm" #include "code\modules\mob\living\silicon\robot\robot_modules.dm" +#include "code\modules\mob\living\silicon\robot\robot_module_actions.dm" #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\update_status.dm" #include "code\modules\mob\living\silicon\robot\drone\drone.dm" From 3408f63f6df62bd503c2fc073af6f148edf3452a Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Mon, 9 Jan 2017 21:06:04 -0800 Subject: [PATCH 2/5] Borgs now have vision actions instead of items to toggle vision modes --- .../silicon/robot/robot_module_actions.dm | 8 +++++- .../mob/living/silicon/robot/robot_modules.dm | 28 +++++++++++++------ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_module_actions.dm b/code/modules/mob/living/silicon/robot/robot_module_actions.dm index 59ad0f59bf6..91a4dec8393 100644 --- a/code/modules/mob/living/silicon/robot/robot_module_actions.dm +++ b/code/modules/mob/living/silicon/robot/robot_module_actions.dm @@ -1,5 +1,7 @@ /datum/action/innate/robot_sight var/sight_mode = null + icon_icon = 'icons/obj/decals.dmi' + button_icon_state = "securearea" /datum/action/innate/robot_sight/Activate() var/mob/living/silicon/robot/R = owner @@ -17,10 +19,14 @@ name = "X-ray Vision" sight_mode = BORGXRAY -/datum/action/innate/sight/thermal +/datum/action/innate/robot_sight/thermal name = "Thermal Vision" sight_mode = BORGTHERM + icon_icon = 'icons/obj/clothing/glasses.dmi' + button_icon_state = "thermal" /datum/action/innate/robot_sight/meson name = "Meson Vision" sight_mode = BORGMESON + icon_icon = 'icons/obj/clothing/glasses.dmi' + button_icon_state = "meson" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index dabb45a8e0c..6ba42633477 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -97,14 +97,15 @@ R.verbs |= subsystems for(var/A in module_actions) var/datum/action/act = new A() - A.grant(R) - R.module_actions += A + act.Grant(R) + R.module_actions += act /obj/item/weapon/robot_module/proc/remove_subsystems_and_actions(mob/living/silicon/robot/R) R.verbs -= subsystems for(var/datum/action/A in R.module_actions) A.Remove(R) - R.module_actions.cut() + qdel(A) + R.module_actions.Cut() /obj/item/weapon/robot_module/standard name = "standard robot module" @@ -174,6 +175,9 @@ name = "engineering robot module" module_type = "Engineer" subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor) + module_actions = list( + /datum/action/innate/robot_sight/meson, + ) stacktypes = list( /obj/item/stack/sheet/metal/cyborg = 50, @@ -186,7 +190,6 @@ /obj/item/weapon/robot_module/engineering/New() ..() - modules += new /obj/item/borg/sight/meson(src) modules += new /obj/item/weapon/rcd/borg(src) modules += new /obj/item/weapon/extinguisher(src) modules += new /obj/item/weapon/weldingtool/largetank/cyborg(src) @@ -305,10 +308,13 @@ /obj/item/weapon/robot_module/miner name = "miner robot module" module_type = "Miner" + module_actions = list( + /datum/action/innate/robot_sight/meson, + ) + /obj/item/weapon/robot_module/miner/New() ..() - modules += new /obj/item/borg/sight/meson(src) modules += new /obj/item/weapon/storage/bag/ore/cyborg(src) modules += new /obj/item/weapon/pickaxe/drill/cyborg(src) modules += new /obj/item/weapon/shovel(src) @@ -325,10 +331,12 @@ /obj/item/weapon/robot_module/deathsquad name = "NT advanced combat module" module_type = "Malf" + module_actions = list( + /datum/action/innate/robot_sight/thermal, + ) /obj/item/weapon/robot_module/deathsquad/New() ..() - modules += new /obj/item/borg/sight/thermal(src) modules += new /obj/item/weapon/melee/energy/sword/cyborg(src) modules += new /obj/item/weapon/gun/energy/pulse/cyborg(src) modules += new /obj/item/weapon/crowbar(src) @@ -393,11 +401,13 @@ /obj/item/weapon/robot_module/combat name = "combat robot module" module_type = "Malf" + module_actions = list( + /datum/action/innate/robot_sight/thermal, + ) /obj/item/weapon/robot_module/combat/New() ..() modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src) - modules += new /obj/item/borg/sight/thermal(src) modules += new /obj/item/weapon/gun/energy/gun/cyborg(src) modules += new /obj/item/weapon/pickaxe/drill/jackhammer(src) modules += new /obj/item/borg/combat/shield(src) @@ -426,11 +436,13 @@ /obj/item/weapon/robot_module/alien/hunter name = "alien hunter module" module_type = "Standard" + module_actions = list( + /datum/action/innate/robot_sight/thermal, + ) /obj/item/weapon/robot_module/alien/hunter/New() modules += new /obj/item/weapon/melee/energy/alien/claws(src) modules += new /obj/item/device/flash/cyborg/alien(src) - modules += new /obj/item/borg/sight/thermal/alien(src) var/obj/item/weapon/reagent_containers/spray/alien/stun/S = new /obj/item/weapon/reagent_containers/spray/alien/stun(src) S.reagents.add_reagent("ether",250) //nerfed to sleeptoxin to make it less instant drop. modules += S From 131978db2dfb8d6139ee1bf4d8316047138844c2 Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Mon, 9 Jan 2017 21:11:48 -0800 Subject: [PATCH 3/5] Borgs now actually have their module actions revoked upon module removal --- code/game/machinery/cryopod.dm | 1 + code/game/objects/items/robot/robot_upgrades.dm | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index e48a5f44b32..1d9e02f52a1 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -705,6 +705,7 @@ for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags O.loc = R qdel(I) + R.module.remove_subsystems_and_actions(R) qdel(R.module) return ..() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index ffb1d31faa8..bd6f3acfdee 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -35,6 +35,7 @@ R.uneq_all() R.hands.icon_state = "nomod" R.icon_state = "robot" + R.module.remove_subsystems_and_actions(R) qdel(R.module) R.module = null @@ -328,4 +329,4 @@ to_chat(cyborg, "Self-repair is active in [msgmode] mode.") msg_cooldown = world.time else - deactivate() \ No newline at end of file + deactivate() From 53977e2729e554986a0534607b7e13f18f43985b Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Mon, 9 Jan 2017 21:16:02 -0800 Subject: [PATCH 4/5] Ayyyyyy --- .../modules/mob/living/silicon/robot/robot_module_actions.dm | 5 +++++ code/modules/mob/living/silicon/robot/robot_modules.dm | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_module_actions.dm b/code/modules/mob/living/silicon/robot/robot_module_actions.dm index 91a4dec8393..e7ef9961a95 100644 --- a/code/modules/mob/living/silicon/robot/robot_module_actions.dm +++ b/code/modules/mob/living/silicon/robot/robot_module_actions.dm @@ -25,6 +25,11 @@ icon_icon = 'icons/obj/clothing/glasses.dmi' button_icon_state = "thermal" +// ayylmao +/datum/action/innate/robot_sight/thermal/alien + icon_icon = 'icons/mob/alien.dmi' + button_icon_state = "borg-extra-vision" + /datum/action/innate/robot_sight/meson name = "Meson Vision" sight_mode = BORGMESON diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 6ba42633477..8f936dab55a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -437,7 +437,7 @@ name = "alien hunter module" module_type = "Standard" module_actions = list( - /datum/action/innate/robot_sight/thermal, + /datum/action/innate/robot_sight/thermal/alien, ) /obj/item/weapon/robot_module/alien/hunter/New() From 36b967c93b5179b83f1a1063f74a6bb9813723ec Mon Sep 17 00:00:00 2001 From: Crazylemon64 Date: Mon, 9 Jan 2017 21:16:41 -0800 Subject: [PATCH 5/5] Fully rips out cyborg sight modules --- code/game/objects/items/robot/robot_items.dm | 48 ------------------- .../objects/items/weapons/alien_specific.dm | 7 --- .../mob/living/silicon/robot/inventory.dm | 12 ----- .../mob/living/silicon/robot/robot_modules.dm | 1 - 4 files changed, 68 deletions(-) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index eae834731a9..0e9d9a0ac09 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -34,51 +34,3 @@ name = "Overdrive" icon = 'icons/obj/decals.dmi' icon_state = "shock" - -/********************************************************************** - HUD/SIGHT things -***********************************************************************/ -/obj/item/borg/sight - icon = 'icons/obj/decals.dmi' - icon_state = "securearea" - var/sight_mode = null - -/obj/item/borg/sight/xray - name = "X-ray Vision" - sight_mode = BORGXRAY - -/obj/item/borg/sight/thermal - name = "Thermal Vision" - sight_mode = BORGTHERM - icon_state = "thermal" - icon = 'icons/obj/clothing/glasses.dmi' - -/obj/item/borg/sight/meson - name = "Meson Vision" - sight_mode = BORGMESON - icon_state = "meson" - icon = 'icons/obj/clothing/glasses.dmi' - -/obj/item/borg/sight/hud - name = "Hud" - var/obj/item/clothing/glasses/hud/hud = null - -/obj/item/borg/sight/hud/med - name = "medical hud" - icon_state = "healthhud" - icon = 'icons/obj/clothing/glasses.dmi' - -/obj/item/borg/sight/hud/med/New() - ..() - hud = new /obj/item/clothing/glasses/hud/health(src) - return - -/obj/item/borg/sight/hud/sec - name = "security hud" - icon_state = "securityhud" - icon = 'icons/obj/clothing/glasses.dmi' - -/obj/item/borg/sight/hud/sec/New() - ..() - hud = new /obj/item/clothing/glasses/hud/security(src) - return diff --git a/code/game/objects/items/weapons/alien_specific.dm b/code/game/objects/items/weapons/alien_specific.dm index c487af03cd6..922f4004714 100644 --- a/code/game/objects/items/weapons/alien_specific.dm +++ b/code/game/objects/items/weapons/alien_specific.dm @@ -64,10 +64,3 @@ desc = "Useful for taking pictures, making friends and flash-frying chips." icon = 'icons/mob/alien.dmi' icon_state = "borg-flash" - -//heat vision - -/obj/item/borg/sight/thermal/alien - name = "thermal module" - icon = 'icons/mob/alien.dmi' - icon_state = "borg-extra-vision" \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 97ec1b0a46f..cf5a44884d1 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -14,10 +14,6 @@ return 0 O.mouse_opacity = 2 - if(istype(O,/obj/item/borg/sight)) - var/obj/item/borg/sight/S = O - sight_mode &= ~S.sight_mode - update_sight() if(client) client.screen -= O @@ -53,7 +49,6 @@ if((cell.charge * 100 / cell.maxcharge) < B.powerneeded) to_chat(src, "Not enough power to activate [B.name]!") return - var/activated_thingy = null if(!module_state_1) O.mouse_opacity = initial(O.mouse_opacity) module_state_1 = O @@ -61,7 +56,6 @@ O.plane = HUD_PLANE O.screen_loc = inv1.screen_loc contents += O - activated_thingy = O else if(!module_state_2) O.mouse_opacity = initial(O.mouse_opacity) module_state_2 = O @@ -69,7 +63,6 @@ O.plane = HUD_PLANE O.screen_loc = inv2.screen_loc contents += O - activated_thingy = O else if(!module_state_3) O.mouse_opacity = initial(O.mouse_opacity) module_state_3 = O @@ -77,13 +70,8 @@ O.plane = HUD_PLANE O.screen_loc = inv3.screen_loc contents += O - activated_thingy = O else to_chat(src, "You need to disable a module first!") - if(istype(activated_thingy,/obj/item/borg/sight)) - var/obj/item/borg/sight/such_a_thing = activated_thingy - sight_mode |= such_a_thing.sight_mode - update_sight() update_icons() /mob/living/silicon/robot/proc/uneq_active() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 8f936dab55a..39f73310566 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -312,7 +312,6 @@ /datum/action/innate/robot_sight/meson, ) - /obj/item/weapon/robot_module/miner/New() ..() modules += new /obj/item/weapon/storage/bag/ore/cyborg(src)