From 41659fa56231c105aca05488191511898444363c Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 27 Apr 2019 15:03:34 +0200 Subject: [PATCH 01/11] Energy net tweak to make it less clunky to use. --- .../suit/n_suit_verbs/energy_net_nets.dm | 3 ++ .../ninja/suit/n_suit_verbs/ninja_net.dm | 35 +++++++++++++------ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 270e1f106f..e2609e8d09 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -59,6 +59,9 @@ It is possible to destroy the net by the occupant or someone else. continue H.dropItemToGround(W) + if(affecting in GLOB.alive_mob_list) //Feel free to suggest a better check if it's alive. + affecting.revive(1, 1) //Basically a full heal, including limbs/organs. + playsound(affecting, 'sound/effects/sparks4.ogg', 50, 1) new /obj/effect/temp_visual/dir_setting/ninja/phase/out(affecting.drop_location(), affecting.dir) diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm index 8c8f92e522..41f7b8af83 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm @@ -2,21 +2,34 @@ //Allows the ninja to kidnap people /obj/item/clothing/suit/space/space_ninja/proc/ninjanet() var/mob/living/carbon/human/H = affecting - var/mob/living/carbon/C = input("Select who to capture:","Capture who?",null) as null|mob in oview(H) + var/mob/living/carbon/C + + //If there's only one valid target, let's actually try to capture it, rather than forcing + //the user to fiddle with the dialog displaying a list of one + //Also, let's make this smarter and not list mobs you can't currently net. + var/Candidates[] + for(var/mob/mob in oview(H)) + if(!mob.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame. + //to_chat(H, "[C.p_they(TRUE)] will bring no honor to your Clan!") + continue + if(locate(/obj/structure/energy_net) in get_turf(mob))//Check if they are already being affected by an energy net. + //to_chat(H, "[C.p_they(TRUE)] are already trapped inside an energy net!") + continue + for(var/turf/T in getline(get_turf(H), get_turf(mob))) + if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy. + //to_chat(H, "You may not use an energy net through solid obstacles!") + continue + Candidates+=mob + + if(Candidates.len == 1) + C = Candidates[1] + else + C = input("Select who to capture:","Capture who?",null) as null|mob in Candidates + if(QDELETED(C)||!(C in oview(H))) return 0 - if(!C.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame. - to_chat(H, "[C.p_they(TRUE)] will bring no honor to your Clan!") - return - if(locate(/obj/structure/energy_net) in get_turf(C))//Check if they are already being affected by an energy net. - to_chat(H, "[C.p_they(TRUE)] are already trapped inside an energy net!") - return - for(var/turf/T in getline(get_turf(H), get_turf(C))) - if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy. - to_chat(H, "You may not use an energy net through solid obstacles!") - return if(!ninjacost(200,N_STEALTH_CANCEL)) H.Beam(C,"n_beam",time=15) H.say("Get over here!", forced = "ninja net") From 4a30cd1ce61c1b21c2373830735af0d8ff856082 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 27 Apr 2019 15:32:32 +0200 Subject: [PATCH 02/11] Energy net and capture objective tweak. --- code/game/gamemodes/objective.dm | 6 ++-- .../suit/n_suit_verbs/energy_net_nets.dm | 33 ++++++++++++++++++- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 7532d18d06..f6b1def645 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -542,6 +542,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) return checking.researched_nodes.len >= target_amount /datum/objective/capture + var/captured_amount = 0 /datum/objective/capture/proc/gen_amount_goal() target_amount = rand(5,10) @@ -549,8 +550,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) return target_amount /datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth. - var/captured_amount = 0 - var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding] + /*var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding] for(var/mob/living/carbon/human/M in A)//Humans. if(M.stat == DEAD)//Dead folks are worth less. captured_amount+=0.5 @@ -573,7 +573,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) if(M.stat == DEAD) captured_amount+=1 continue - captured_amount+=2 + captured_amount+=2*/ //Removed in favour of adding points on capture, in energy_net_nets.dm return captured_amount >= target_amount diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index e2609e8d09..6b01256b1b 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -59,9 +59,40 @@ It is possible to destroy the net by the occupant or someone else. continue H.dropItemToGround(W) - if(affecting in GLOB.alive_mob_list) //Feel free to suggest a better check if it's alive. + if(affecting.stat != DEAD) affecting.revive(1, 1) //Basically a full heal, including limbs/organs. + var/datum/antagonist/antag_datum + for(antag_datum in GLOB.antagonists) + if(antag_datum.owner == master) + break + + for(var/datum/objective/capture/capture in antag_datum) + if(istype(affecting, /mob/living/carbon/human)) //Humans. + if(affecting.stat == DEAD)//Dead folks are worth less. + capture.captured_amount+=0.5 + continue + capture.captured_amount+=1 + if(istype(affecting, /mob/living/carbon/monkey)) //Monkeys are almost worthless, you failure. + capture.captured_amount+=0.1 + if(istype(affecting, /mob/living/carbon/alien/larva)) //Larva are important for research. + if(affecting.stat == DEAD) + capture.captured_amount+=0.5 + continue + capture.captured_amount+=1 + if(istype(affecting, /mob/living/carbon/alien/humanoid)) //Aliens are worth twice as much as humans. + if(istype(affecting, /mob/living/carbon/alien/humanoid/royal/queen)) //Queens are worth three times as much as humans. + if(affecting.stat == DEAD) + capture.captured_amount+=1.5 + else + capture.captured_amount+=3 + continue + if(affecting.stat == DEAD) + capture.captured_amount+=1 + continue + capture.captured_amount+=2 + + playsound(affecting, 'sound/effects/sparks4.ogg', 50, 1) new /obj/effect/temp_visual/dir_setting/ninja/phase/out(affecting.drop_location(), affecting.dir) From 10d6b810f6bd135bffb1193fdeba380d33caf484 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 27 Apr 2019 15:34:58 +0200 Subject: [PATCH 03/11] Revert "Added myself to the admin list. Duh." This reverts commit 41a0b802e8fdc94f8880fb06de2fa2e4bf909513. --- config/admins.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/admins.txt b/config/admins.txt index 4a2b4ac8da..27a2178e2c 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -8,4 +8,4 @@ # NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. # ############################################################################################### -Useroth = Host +yourckeygoeshere = Host From e2c053e7a51e49dafdd4741f9c2896842a8b313b Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 27 Apr 2019 15:59:54 +0200 Subject: [PATCH 04/11] Makes energy nets a bit sturdier and unbreakable with bare hands. --- .../modules/ninja/suit/n_suit_verbs/energy_net_nets.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 6b01256b1b..fd9ee41510 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -14,7 +14,7 @@ It is possible to destroy the net by the occupant or someone else. mouse_opacity = MOUSE_OPACITY_ICON//So you can hit it with stuff. anchored = TRUE//Can't drag/grab the net. layer = ABOVE_ALL_MOB_LAYER - max_integrity = 25 //How much health it has. + max_integrity = 45 //How much health it has. can_buckle = 1 buckle_lying = 0 buckle_prevents_pull = TRUE @@ -63,8 +63,9 @@ It is possible to destroy the net by the occupant or someone else. affecting.revive(1, 1) //Basically a full heal, including limbs/organs. var/datum/antagonist/antag_datum - for(antag_datum in GLOB.antagonists) - if(antag_datum.owner == master) + for(var/datum/antagonist/AD in GLOB.antagonists) + if(AD.owner == master) + antag_datum = AD break for(var/datum/objective/capture/capture in antag_datum) @@ -108,7 +109,8 @@ It is possible to destroy the net by the occupant or someone else. new /obj/effect/temp_visual/dir_setting/ninja/phase(affecting.drop_location(), affecting.dir) /obj/structure/energy_net/attack_paw(mob/user) - return attack_hand() + //return attack_hand() //How about no barehanded breaking of the net? + return /obj/structure/energy_net/user_buckle_mob(mob/living/M, mob/living/user) return//We only want our target to be buckled From 4fc90142f1d3a30fea722266318985d4348c8c00 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 27 Apr 2019 16:02:40 +0200 Subject: [PATCH 05/11] Might as well crank it up a little more. --- code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index fd9ee41510..bdc9ca9fdb 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -14,7 +14,7 @@ It is possible to destroy the net by the occupant or someone else. mouse_opacity = MOUSE_OPACITY_ICON//So you can hit it with stuff. anchored = TRUE//Can't drag/grab the net. layer = ABOVE_ALL_MOB_LAYER - max_integrity = 45 //How much health it has. + max_integrity = 50 //How much health it has. can_buckle = 1 buckle_lying = 0 buckle_prevents_pull = TRUE From a4ece1cadacce657f8d438f504c48d54f084e425 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sat, 27 Apr 2019 21:04:24 +0200 Subject: [PATCH 06/11] Another attempt at the nets not being breakable with bare hands. Now with more consideration. --- .../ninja/suit/n_suit_verbs/energy_net_nets.dm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index bdc9ca9fdb..58183a8226 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -108,9 +108,19 @@ It is possible to destroy the net by the occupant or someone else. playsound(affecting, 'sound/effects/sparks2.ogg', 50, 1) new /obj/effect/temp_visual/dir_setting/ninja/phase(affecting.drop_location(), affecting.dir) -/obj/structure/energy_net/attack_paw(mob/user) - //return attack_hand() //How about no barehanded breaking of the net? - return +/obj/structure/energy_net/attackby(obj/item/I, mob/user, params) + + if(istype(user, /mob/living/carbon/alien/humanoid)) //so that aliums aren't completely cucked by nets + return attack_hand(user) + if(!I) + return + if(!I.force) + return + + return attack_hand(user) + +/*/obj/structure/energy_net/attack_paw(mob/user) + return attack_hand()*/ //How about no barehanded breaking of the net? /obj/structure/energy_net/user_buckle_mob(mob/living/M, mob/living/user) return//We only want our target to be buckled From edae316d04b806f2ec25b6da0161da67b60ec84f Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 28 Apr 2019 07:05:18 +0200 Subject: [PATCH 07/11] Makes the gloves actually stun people. --- code/modules/ninja/suit/gloves.dm | 2 ++ code/modules/ninja/suit/ninjaDrainAct.dm | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/code/modules/ninja/suit/gloves.dm b/code/modules/ninja/suit/gloves.dm index 4308120c4f..dc840d5336 100644 --- a/code/modules/ninja/suit/gloves.dm +++ b/code/modules/ninja/suit/gloves.dm @@ -37,6 +37,8 @@ var/mindrain = 200 var/maxdrain = 400 + var/stunforce = 140 //same as stunbaton, adjustable + /obj/item/clothing/gloves/space_ninja/Touch(atom/A,proximity) if(!candrain || draining) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index 861ffb9446..45ca231a4a 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -262,3 +262,18 @@ They *could* go in their appropriate files, but this is supposed to be modular playsound(src, "sparks", 50, 1) visible_message("[H] electrocutes [src] with [H.p_their()] touch!", "[H] electrocutes you with [H.p_their()] touch!") electrocute_act(25, H) + + src.Knockdown(G.stunforce) + src.adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST)) + src.apply_effect(EFFECT_STUTTER, G.stunforce) + SEND_SIGNAL(src, COMSIG_LIVING_MINOR_SHOCK) + + src.lastattacker = H.real_name + src.lastattackerckey = H.ckey + log_combat(H, src, "stunned") + + playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) + + if(ishuman(src)) + var/mob/living/carbon/human/Hsrc = src + Hsrc.forcesay(GLOB.hit_appends) From 1913737b7eaea4f89828031576adac744d4710f3 Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 28 Apr 2019 07:07:48 +0200 Subject: [PATCH 08/11] Small tweak. --- code/modules/ninja/suit/ninjaDrainAct.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index 45ca231a4a..e72000598a 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -261,7 +261,7 @@ They *could* go in their appropriate files, but this is supposed to be modular spark_system.set_up(5, 0, loc) playsound(src, "sparks", 50, 1) visible_message("[H] electrocutes [src] with [H.p_their()] touch!", "[H] electrocutes you with [H.p_their()] touch!") - electrocute_act(25, H) + electrocute_act(15, H) src.Knockdown(G.stunforce) src.adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST)) From 24ac1fa8ff9a6824f89eadf47c081a0e3952561d Mon Sep 17 00:00:00 2001 From: Useroth Date: Sun, 28 Apr 2019 07:16:47 +0200 Subject: [PATCH 09/11] An afterthought regarding healing/reviving the capturees. --- code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 58183a8226..b7f2b78e64 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -59,9 +59,6 @@ It is possible to destroy the net by the occupant or someone else. continue H.dropItemToGround(W) - if(affecting.stat != DEAD) - affecting.revive(1, 1) //Basically a full heal, including limbs/organs. - var/datum/antagonist/antag_datum for(var/datum/antagonist/AD in GLOB.antagonists) if(AD.owner == master) @@ -94,6 +91,9 @@ It is possible to destroy the net by the occupant or someone else. capture.captured_amount+=2 + affecting.revive(1, 1) //Basically a revive and full heal, including limbs/organs + //In case people who have been captured dead want to hang out at the holding area + playsound(affecting, 'sound/effects/sparks4.ogg', 50, 1) new /obj/effect/temp_visual/dir_setting/ninja/phase/out(affecting.drop_location(), affecting.dir) From 7be3f6d01a1463cac29a5a12c4459c3c4ae93eef Mon Sep 17 00:00:00 2001 From: Useroth <37159550+Useroth@users.noreply.github.com> Date: Tue, 7 May 2019 06:07:19 +0200 Subject: [PATCH 10/11] Update ninjaDrainAct.dm --- code/modules/ninja/suit/ninjaDrainAct.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index e72000598a..10fce3d74e 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -263,13 +263,13 @@ They *could* go in their appropriate files, but this is supposed to be modular visible_message("[H] electrocutes [src] with [H.p_their()] touch!", "[H] electrocutes you with [H.p_their()] touch!") electrocute_act(15, H) - src.Knockdown(G.stunforce) - src.adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST)) - src.apply_effect(EFFECT_STUTTER, G.stunforce) + Knockdown(G.stunforce) + adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST)) + apply_effect(EFFECT_STUTTER, G.stunforce) SEND_SIGNAL(src, COMSIG_LIVING_MINOR_SHOCK) - src.lastattacker = H.real_name - src.lastattackerckey = H.ckey + lastattacker = H.real_name + lastattackerckey = H.ckey log_combat(H, src, "stunned") playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) From e33c57d8ded2ec74816a1aecfe4e7b5433d0c7eb Mon Sep 17 00:00:00 2001 From: Useroth Date: Thu, 13 Jun 2019 15:19:12 +0200 Subject: [PATCH 11/11] Finally fixed the net breaking mechanics. --- .../ninja/suit/n_suit_verbs/energy_net_nets.dm | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index b7f2b78e64..2617c2a3bf 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -108,19 +108,9 @@ It is possible to destroy the net by the occupant or someone else. playsound(affecting, 'sound/effects/sparks2.ogg', 50, 1) new /obj/effect/temp_visual/dir_setting/ninja/phase(affecting.drop_location(), affecting.dir) -/obj/structure/energy_net/attackby(obj/item/I, mob/user, params) - - if(istype(user, /mob/living/carbon/alien/humanoid)) //so that aliums aren't completely cucked by nets - return attack_hand(user) - if(!I) - return - if(!I.force) - return - - return attack_hand(user) - -/*/obj/structure/energy_net/attack_paw(mob/user) - return attack_hand()*/ //How about no barehanded breaking of the net? +/obj/attack_alien(mob/living/carbon/alien/humanoid/user) + if(attack_generic(user, 15, BRUTE, "melee", 0)) //Aliens normally deal 60 damage to structures. They'd one-shot nets without this. + playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) /obj/structure/energy_net/user_buckle_mob(mob/living/M, mob/living/user) return//We only want our target to be buckled