From b3a81dce01342d97d41da71262692bb89b09ffeb Mon Sep 17 00:00:00 2001 From: deathride58 Date: Mon, 14 Oct 2019 18:18:32 -0400 Subject: [PATCH] Secborg buffs - Adds incapacitation functionality to k9 jaws, gives secborg a hybrid taser, tweaks pounces, adds config option to weaken secborgs --- .../configuration/entries/game_options.dm | 4 + .../objects/items/robot/robot_upgrades.dm | 28 ++++--- code/modules/assembly/flash.dm | 4 +- .../mob/living/silicon/robot/robot_modules.dm | 12 +++ config/game_options.txt | 7 ++ .../living/silicon/robot/dogborg_equipment.dm | 71 ++++++++++++++---- .../mob/living/silicon/robot/robot_modules.dm | 1 + sound/effects/k9_jaw_strong.ogg | Bin 0 -> 14525 bytes sound/effects/k9_jaw_weak.ogg | Bin 0 -> 11035 bytes 9 files changed, 99 insertions(+), 28 deletions(-) create mode 100644 sound/effects/k9_jaw_strong.ogg create mode 100644 sound/effects/k9_jaw_weak.ogg diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index cfd57b4850..f50b1beeb3 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -66,6 +66,10 @@ /datum/config_entry/flag/disable_human_mood +/datum/config_entry/flag/disable_borg_flash_knockdown //Should borg flashes be capable of knocking humanoid entities down? + +/datum/config_entry/flag/weaken_secborg //Brings secborgs and k9s back in-line with the other borg modules + /datum/config_entry/flag/disable_secborg // disallow secborg module to be chosen. /datum/config_entry/flag/disable_peaceborg diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 9c929a6ebf..680bf948d8 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -89,32 +89,36 @@ R.speed = initial(R.speed) /obj/item/borg/upgrade/disablercooler - name = "cyborg rapid disabler cooling module" - desc = "Used to cool a mounted disabler, increasing the potential current in it and thus its recharge rate." + name = "cyborg rapid energy blaster cooling module" + desc = "Used to cool a mounted energy-based firearm, increasing the potential current in it and thus its recharge rate." icon_state = "cyborg_upgrade3" require_module = 1 /obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R, user = usr) . = ..() if(.) - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - to_chat(user, "There's no disabler in this unit!") + var/successflag + for(var/obj/item/gun/energy/T in R.module.modules) + if(T.charge_delay <= 2) + successflag = successflag || 2 + continue + T.charge_delay = max(2, T.charge_delay - 4) + successflag = 1 + if(!successflag) + to_chat(user, "There's no energy-based firearm in this unit!") return FALSE - if(T.charge_delay <= 2) + if(successflag == 2) to_chat(R, "A cooling unit is already installed!") to_chat(user, "There's no room for another cooling unit!") return FALSE - T.charge_delay = max(2 , T.charge_delay - 4) - /obj/item/borg/upgrade/disablercooler/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules - if(!T) - return FALSE - T.charge_delay = initial(T.charge_delay) + for(var/obj/item/gun/energy/T in R.module.modules) + T.charge_delay = initial(T.charge_delay) + return . + return FALSE /obj/item/borg/upgrade/thrusters name = "ion thruster upgrade" diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 186eb1b024..ff684de243 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -201,8 +201,10 @@ /obj/item/assembly/flash/cyborg /obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) - ..() + . = ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) + if(. && !CONFIG_GET(flag/disable_borg_flash_knockdowns) && iscarbon(M) && !M.resting) + M.Knockdown(80) /obj/item/assembly/flash/cyborg/attack_self(mob/user) ..() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 7b95ced63f..086870bf6b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -8,6 +8,8 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 + var/borghealth = 100 + var/list/basic_modules = list() //a list of paths, converted to a list of instances on New() var/list/emag_modules = list() //ditto var/list/ratvar_modules = list() //ditto ditto @@ -195,6 +197,8 @@ R.update_module_innate() RM.rebuild_modules() INVOKE_ASYNC(RM, .proc/do_transform_animation) + R.maxHealth = borghealth + R.health = min(borghealth, R.health) qdel(src) return RM @@ -352,6 +356,14 @@ to_chat(loc, "While you have picked the security module, you still have to follow your laws, NOT Space Law. \ For Crewsimov, this means you must follow criminals' orders unless there is a law 1 reason not to.") +/obj/item/robot_module/security/Initialize() + . = ..() + if(!CONFIG_GET(flag/weaken_secborg)) + for(var/obj/item/gun/energy/disabler/cyborg/pewpew in basic_modules) + basic_modules -= pewpew + basic_modules += new /obj/item/gun/energy/e_gun/advtaser/cyborg(src) + qdel(pewpew) + /obj/item/robot_module/peacekeeper name = "Peacekeeper" basic_modules = list( diff --git a/config/game_options.txt b/config/game_options.txt index 2e346ce0ac..10763e9f8d 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -263,7 +263,14 @@ ALLOW_AI ## Allow the AI Multicamera feature to be used by AI players ALLOW_AI_MULTICAM +## CYBORG ## +## Uncomment to disable the ability for cyborg flashes to knock down carbon targets +#DISABLE_BORG_FLASH_KNOCKDOWN + ## Secborg ### +## Uncomment to bring secborgs and K-9s back in line with the rest of the modules available. This is strongly recommended if you have secborgs configured to be available at all times. +#WEAKEN_SECBORG + ## Uncomment to prevent the security cyborg module from being chosen #DISABLE_SECBORG diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm index de3f43f8ee..483ba65ac5 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @@ -13,13 +13,23 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! w_class = 3 hitsound = 'sound/weapons/bite.ogg' sharpness = IS_SHARP + var/stamtostunconversion = 0.1 //Total stamloss gets multiplied by this value for the help intent hard stun. Resting adds an additional 2x multiplier on top. Keep this low or so help me god. + var/stuncooldown = 4 SECONDS //How long it takes before you're able to attempt to stun a target again + var/nextstuntime + +/obj/item/dogborg/jaws/examine(mob/user) + . = ..() + if(!CONFIG_GET(flag/weaken_secborg)) + to_chat(user, "Use help intent to attempt to non-lethally incapacitate the target by latching on with your maw. This is more effective against exhausted and resting targets.") /obj/item/dogborg/jaws/big name = "combat jaws" desc = "The jaws of the law. Very sharp." icon_state = "jaws" - force = 10 //Lowered to match secborg. No reason it should be more than a secborg's baton. + force = 15 //Chomp chomp. Crew harm. attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + stamtostunconversion = 0.2 // 100*0.2*2=40. Stun's just long enough to slap on cuffs with click delay if the target is near hard stamcrit. + stuncooldown = 6 SECONDS /obj/item/dogborg/jaws/small @@ -31,11 +41,36 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! var/status = 0 /obj/item/dogborg/jaws/attack(atom/A, mob/living/silicon/robot/user) - ..() - user.do_attack_animation(A, ATTACK_EFFECT_BITE) + if(!istype(user)) + return + if(!CONFIG_GET(flag/weaken_secborg) && user.a_intent != INTENT_HARM && istype(A, /mob/living)) + if(A == user.pulling) + to_chat(user, "You already have [A] in your jaws.") + return + if(nextstuntime >= world.time) + to_chat(user, "Your jaw servos are still recharging.") + return + nextstuntime = world.time + stuncooldown + var/mob/living/M = A + var/cachedstam = M.getStaminaLoss() + var/totalstuntime = cachedstam * stamtostunconversion * (M.lying ? 2 : 1) + if(!M.resting) + M.Knockdown(cachedstam*2) //BORK BORK. GET DOWN. + M.Stun(totalstuntime) + user.do_attack_animation(A, ATTACK_EFFECT_BITE) + user.start_pulling(M, TRUE) //Yip yip. Come with. + user.changeNext_move(CLICK_CD_MELEE) + M.visible_message("[user] clamps [user.p_their()] [src] onto [M] and latches on!", "[user] clamps [user.p_their()] [src] onto you and latches on!") + if(totalstuntime >= 4 SECONDS) + playsound(usr, 'sound/effects/k9_jaw_strong.ogg', 75, FALSE, 2) //Wuff wuff. Big stun. + else + playsound(usr, 'sound/effects/k9_jaw_weak.ogg', 50, TRUE, -1) //Arf arf. Pls buff. + else + . = ..() + user.do_attack_animation(A, ATTACK_EFFECT_BITE) /obj/item/dogborg/jaws/small/attack_self(mob/user) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(R.cell && R.cell.charge > 100) if(R.emagged && status == 0) name = "combat jaws" @@ -43,14 +78,18 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! desc = "The jaws of the law." force = 12 attack_verb = list("chomped", "bit", "ripped", "mauled", "enforced") + stamtostunconversion = 0.15 + stuncooldown = 5 SECONDS status = 1 to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].") else name = "puppy jaws" icon_state = "smalljaws" desc = "The jaws of a small dog." - force = 5 + force = initial(force) attack_verb = list("nibbled", "bit", "gnawed", "chomped", "nommed") + stamtostunconversion = initial(stamtostunconversion) + stuncooldown = initial(stuncooldown) status = 0 if(R.emagged) to_chat(user, "Your jaws are now [status ? "Combat" : "Pup'd"].") @@ -167,7 +206,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! item_flags |= NOBLUDGEON //No more attack messages /obj/item/soap/tongue/attack_self(mob/user) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(R.cell && R.cell.charge > 100) if(R.emagged && status == 0) status = !status @@ -187,7 +226,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! update_icon() /obj/item/soap/tongue/afterattack(atom/target, mob/user, proximity) - var/mob/living/silicon/robot.R = user + var/mob/living/silicon/robot/R = user if(!proximity || !check_allowed_items(target)) return if(R.client && (target in R.client.screen)) @@ -307,8 +346,10 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /mob/living/silicon/robot var/leaping = 0 var/pounce_cooldown = 0 - var/pounce_cooldown_time = 20 //Buffed to counter balance changes - var/pounce_spoolup = 1 + var/pounce_cooldown_time = 30 //Time in deciseconds between pounces + var/pounce_spoolup = 5 //Time in deciseconds for the pounce to happen after clicking + var/pounce_stamloss_cap = 120 //How much staminaloss pounces alone are capable of bringing a spaceman to + var/pounce_stamloss = 80 //Base staminaloss value of the pounce var/leap_at var/disabler var/laser @@ -320,13 +361,12 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! /obj/item/dogborg/pounce/afterattack(atom/A, mob/user) var/mob/living/silicon/robot/R = user - if(R && !R.pounce_cooldown) - R.pounce_cooldown = !R.pounce_cooldown + if(R && (world.time >= R.pounce_cooldown)) + R.pounce_cooldown = world.time + R.pounce_cooldown_time to_chat(R, "Your targeting systems lock on to [A]...") + playsound(R, 'sound/effects/servostep.ogg', 100, TRUE) addtimer(CALLBACK(R, /mob/living/silicon/robot.proc/leap_at, A), R.pounce_spoolup) - spawn(R.pounce_cooldown_time) - R.pounce_cooldown = !R.pounce_cooldown - else if(R && R.pounce_cooldown) + else if(R && (world.time < R.pounce_cooldown)) to_chat(R, "Your leg actuators are still recharging!") /mob/living/silicon/robot/proc/leap_at(atom/A) @@ -349,6 +389,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! update_icons() throw_at(A, MAX_K9_LEAP_DIST, 1, spin=0, diagonals_first = 1) cell.use(750) //Less than a stunbaton since stunbatons hit everytime. + playsound(src, 'sound/effects/stealthoff.ogg', 25, TRUE, -1) weather_immunities -= "lava" /mob/living/silicon/robot/throw_impact(atom/A) @@ -366,7 +407,7 @@ SLEEPER CODE IS IN game/objects/items/devices/dogborg_sleeper.dm ! blocked = 1 if(!blocked) L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") - L.Knockdown(iscarbon(L) ? 225 : 45) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. + L.Knockdown(iscarbon(L) ? 60 : 45, override_stamdmg = CLAMP(pounce_stamloss, 0, pounce_stamloss_cap-L.getStaminaLoss())) // Temporary. If someone could rework how dogborg pounces work to accomodate for combat changes, that'd be nice. playsound(src, 'sound/weapons/Egloves.ogg', 50, 1) sleep(2)//Runtime prevention (infinite bump() calls on hulks) step_towards(src,L) diff --git a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm index b16ac1d586..cf0bc7f94c 100644 --- a/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/modular_citadel/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -53,6 +53,7 @@ has_snowflake_deadsprite = TRUE dogborg = TRUE cyborg_pixel_offset = -16 + borghealth = 80 /obj/item/robot_module/k9/do_transform_animation() ..() diff --git a/sound/effects/k9_jaw_strong.ogg b/sound/effects/k9_jaw_strong.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9f60050b9574fb305720e9d3f53c0acde180eac7 GIT binary patch literal 14525 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 literal 0 HcmV?d00001 diff --git a/sound/effects/k9_jaw_weak.ogg b/sound/effects/k9_jaw_weak.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3ef2272f01cbd8730e023ca8412f32d836bd47f3 GIT binary patch literal 11035 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 ap4+6&D$u`ZSI?W>Gk$htiZ2{sBK`xereo{? literal 0 HcmV?d00001