From 01bb640e14700e830d30dc60a2af6a803111bba3 Mon Sep 17 00:00:00 2001 From: Geeves Date: Thu, 11 Feb 2021 23:27:48 +0200 Subject: [PATCH] More Revenant Tweaks (#11146) --- aurorastation.dme | 1 + code/__defines/misc.dm | 2 + code/game/antagonist/outsider/revenant.dm | 2 +- code/game/atoms.dm | 5 +++ code/game/objects/items/weapons/tools.dm | 3 ++ code/modules/martial_arts/revenant.dm | 40 +++++++++++++++++ .../carbon/human/species/outsider/revenant.dm | 4 +- code/modules/mob/mob_helpers.dm | 7 +++ code/modules/reagents/reagent_dispenser.dm | 3 ++ .../geeves-more_revenant_tweaks.yml | 10 +++++ maps/aurora/aurora-2_under-station.dmm | 12 ++---- maps/aurora/aurora-3_sublevel.dmm | 35 +++++++-------- maps/aurora/aurora-4_mainlevel.dmm | 43 ++++++++++++++----- maps/aurora/aurora-5_interstitial.dmm | 16 +++---- maps/aurora/aurora-6_surface.dmm | 5 ++- 15 files changed, 138 insertions(+), 50 deletions(-) create mode 100644 code/modules/martial_arts/revenant.dm create mode 100644 html/changelogs/geeves-more_revenant_tweaks.yml diff --git a/aurorastation.dme b/aurorastation.dme index bab50c9d1db..05b29221f0d 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1835,6 +1835,7 @@ #include "code\modules\martial_arts\gunkata.dm" #include "code\modules\martial_arts\martial.dm" #include "code\modules\martial_arts\plasma_fist.dm" +#include "code\modules\martial_arts\revenant.dm" #include "code\modules\martial_arts\skrell.dm" #include "code\modules\martial_arts\sleeping_carp.dm" #include "code\modules\martial_arts\sol_combat.dm" diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 66a0b83481d..f22cee6970d 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -322,6 +322,7 @@ #define USE_ALLOW_NON_ADJACENT 16 #define USE_FORCE_SRC_IN_USER 32 #define USE_DISALLOW_SILICONS 64 +#define USE_DISALLOW_SPECIALS 128 // revenants, zombies, etc #define USE_SUCCESS 0 #define USE_FAIL_NON_ADJACENT 1 @@ -331,6 +332,7 @@ #define USE_FAIL_INCAPACITATED 5 #define USE_FAIL_NOT_IN_USER 6 #define USE_FAIL_IS_SILICON 7 +#define USE_FAIL_IS_MOB_SPECIAL 8 #define DEFAULT_SIGHT (SEE_SELF) diff --git a/code/game/antagonist/outsider/revenant.dm b/code/game/antagonist/outsider/revenant.dm index 6d1e35e931e..fa89ab21e3c 100644 --- a/code/game/antagonist/outsider/revenant.dm +++ b/code/game/antagonist/outsider/revenant.dm @@ -12,7 +12,7 @@ var/datum/antagonist/revenant/revenants = null hard_cap = 12 hard_cap_round = 12 - var/rifts_left = 3 + var/rifts_left = 1 var/kill_count = 0 var/obj/effect/portal/revenant/revenant_rift diff --git a/code/game/atoms.dm b/code/game/atoms.dm index f29b40aaa8e..718071062e9 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -160,6 +160,11 @@ to_chat(user, "How do you propose doing that without hands?") return USE_FAIL_IS_SILICON + if (HAS_FLAG(USE_DISALLOW_SPECIALS) && is_mob_special(user)) + if (show_messages) + to_chat(user, "Your current mob type prevents you from doing this.") + return USE_FAIL_IS_MOB_SPECIAL + if (HAS_FLAG(USE_FORCE_SRC_IN_USER) && !(src in user)) if (show_messages) to_chat(user, "You need to be holding [src] to do that.") diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 7277c46d322..e47b188b5b9 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -399,6 +399,9 @@ playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6) return else if(istype(O, /obj/structure/reagent_dispensers/fueltank) && O.Adjacent(user) && welding) + if(use_check(user, USE_DISALLOW_SPECIALS)) + to_chat(user, SPAN_WARNING("A strange force prevents you from doing this.")) //there is no way to justify this icly + return var/obj/structure/reagent_dispensers/fueltank/tank = O if(tank.armed) to_chat(user, "You are already heating \the [O]!") diff --git a/code/modules/martial_arts/revenant.dm b/code/modules/martial_arts/revenant.dm new file mode 100644 index 00000000000..793bf39434f --- /dev/null +++ b/code/modules/martial_arts/revenant.dm @@ -0,0 +1,40 @@ +#define BASH_SLASH "HHH" + +/datum/martial_art/revenant + name = "Revenant" + help_verb = /datum/martial_art/revenant/proc/revenant_help + no_guns = TRUE + no_guns_message = "Revenants cannot use guns." + +/datum/martial_art/revenant/proc/check_streak(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + if(findtext(streak, BASH_SLASH)) + streak = "" + bash_slash(A, D) + return TRUE + return FALSE + +/datum/martial_art/revenant/harm_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + add_to_streak("H", D) + if(check_streak(A, D)) + return TRUE + basic_hit(A, D) + return TRUE + +/datum/martial_art/revenant/proc/bash_slash(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) + A.do_attack_animation(D) + D.visible_message(SPAN_DANGER("[A] bashes [D] away!"), SPAN_DANGER("[A] bashes you away!")) + D.apply_damage(rand(5, 10), BRUTE, damage_flags = DAM_SHARP) + var/throw_range = rand(1, 2) + D.throw_at(get_step_away(D, A, throw_range), throw_range, THROWNOBJ_KNOCKBACK_SPEED / 3, A, FALSE) + playsound(get_turf(D), 'sound/weapons/slash.ogg', 25, 1, -1) + return TRUE + +/datum/martial_art/revenant/proc/revenant_help() + set name = "Recall Revenant Combat" + set desc = "Remember the martial techniques of the bluespace masters." + set category = "Abilities" + + to_chat(usr, "You think of your former dimension...") + to_chat(usr, "Bash Slash: Harm Harm Harm. Deliver a strong slashing strike against the enemy, pushing them away.") + +#undef BASH_SLASH \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm index b1f9d0746ef..f0b8eb7f7a2 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm @@ -123,6 +123,8 @@ H.gender = NEUTER H.universal_understand = TRUE H.add_language(LANGUAGE_REVENANT_RIFTSPEAK) + var/datum/martial_art/revenant/R = new /datum/martial_art/revenant() + R.teach(H) /datum/species/revenant/get_random_name() return "Revenant" @@ -133,7 +135,7 @@ return FALSE /datum/species/revenant/bullet_act(var/obj/item/projectile/P, var/def_zone, var/mob/living/carbon/human/H) - if((istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) && prob(30)) + if((istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) && prob(20)) H.visible_message(SPAN_CULT("The [P.name] gets absorbed by [H]!"), SPAN_CULT("You absorb the [P.name]!")) return -1 return ..() \ No newline at end of file diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 90347741f23..67f0335c5ac 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -116,6 +116,13 @@ /mob/living/carbon/alien/diona/is_diona() return DIONA_NYMPH +/proc/is_mob_special(A) // determines special mobs. has restrictions on certain things, like welderbombing + if(isrevenant(A)) + return TRUE + if(iszombie(A)) + return TRUE + return FALSE + /proc/isskeleton(A) if(istype(A, /mob/living/carbon/human) && (A:get_species() == SPECIES_SKELETON)) return 1 diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 12af5ebfc46..1d3639fbd7b 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -65,6 +65,9 @@ return if (O.iswrench()) + if(use_check(user, USE_DISALLOW_SPECIALS)) + to_chat(user, SPAN_WARNING("A strange force prevents you from doing this.")) //there is no way to justify this icly + return if(can_tamper && user.a_intent == I_HURT) user.visible_message("\The [user] wrenches \the [src]'s faucet [is_leaking ? "closed" : "open"].","You wrench \the [src]'s faucet [is_leaking ? "closed" : "open"]") is_leaking = !is_leaking diff --git a/html/changelogs/geeves-more_revenant_tweaks.yml b/html/changelogs/geeves-more_revenant_tweaks.yml new file mode 100644 index 00000000000..afc10f9345e --- /dev/null +++ b/html/changelogs/geeves-more_revenant_tweaks.yml @@ -0,0 +1,10 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Revenants now get a martial art that allows them to bash people away on a three hit combo. This replaces their ability to use guns." + - rscdel: "Revenants are no longer able to operate welderbombs." + - tweak: "Revenants now absorb 20% of laser fire instead of 30%." + - tweak: "Moved Revenant spawnpoints into the station." + - tweak: "Tweaked the rift gameplay, should be easier for the station to stop the revenants now." \ No newline at end of file diff --git a/maps/aurora/aurora-2_under-station.dmm b/maps/aurora/aurora-2_under-station.dmm index 8369c11bc15..b82811422d5 100644 --- a/maps/aurora/aurora-2_under-station.dmm +++ b/maps/aurora/aurora-2_under-station.dmm @@ -36,13 +36,6 @@ }, /turf/simulated/floor/carpet/rubber, /area/engineering/cooling) -"ep" = ( -/obj/structure/lattice, -/obj/effect/landmark{ - name = "Revenant" - }, -/turf/template_noop, -/area/template_noop) "eu" = ( /obj/structure/table/standard, /obj/item/storage/briefcase/inflatable, @@ -334,6 +327,9 @@ d2 = 2; icon_state = "0-2" }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/plating{ roof_type = null }, @@ -12774,7 +12770,7 @@ CN CN mc CN -ep +Ar CN UG sQ diff --git a/maps/aurora/aurora-3_sublevel.dmm b/maps/aurora/aurora-3_sublevel.dmm index b564985299f..276b09472c7 100644 --- a/maps/aurora/aurora-3_sublevel.dmm +++ b/maps/aurora/aurora-3_sublevel.dmm @@ -2019,6 +2019,9 @@ pixel_y = 8; specialfunctions = 4 }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/tiled/freezer, /area/engineering/bathroom) "aeP" = ( @@ -12066,6 +12069,9 @@ dir = 1; pixel_y = -28 }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/wood, /area/medical/patient_wing_gym) "avG" = ( @@ -22398,6 +22404,9 @@ /obj/effect/floor_decal/industrial/warning{ dir = 1 }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/tiled/white, /area/rnd/xenobiology/xenoflora_hazard) "aVJ" = ( @@ -29479,17 +29488,6 @@ }, /turf/simulated/floor/carpet, /area/engineering/break_room) -"iwX" = ( -/obj/effect/floor_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/effect/landmark{ - name = "Revenant" - }, -/turf/simulated/floor/airless{ - icon_state = "asteroidplating" - }, -/area/mine/unexplored) "iAw" = ( /obj/structure/table/rack, /obj/item/shovel{ @@ -32381,12 +32379,6 @@ /obj/machinery/power/crystal_agitator, /turf/simulated/floor, /area/security/penal_colony) -"oJR" = ( -/obj/effect/landmark{ - name = "Revenant" - }, -/turf/unsimulated/floor/asteroid/ash/rocky, -/area/mine/unexplored) "oKh" = ( /obj/effect/floor_decal/corner_wide/mauve{ dir = 10 @@ -35438,6 +35430,9 @@ pixel_x = -28 }, /obj/machinery/light/small/emergency, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/tiled/freezer, /area/maintenance/medsublevel_port) "vnr" = ( @@ -52092,7 +52087,7 @@ nDL nDL tkm iOl -oJR +aba aba aba ale @@ -71122,7 +71117,7 @@ aIZ aNT vnf awP -iwX +aqA ebn ayi akG @@ -80887,7 +80882,7 @@ eEq baw cFw nzR -oJR +aba aba aba aaa diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm index 9a577cc7b78..b5e8b47dfdd 100644 --- a/maps/aurora/aurora-4_mainlevel.dmm +++ b/maps/aurora/aurora-4_mainlevel.dmm @@ -2242,9 +2242,6 @@ "ael" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/generic, -/obj/effect/landmark{ - name = "RevenantRift" - }, /turf/simulated/floor/tiled/old, /area/maintenance/vault) "aem" = ( @@ -4736,6 +4733,9 @@ d2 = 8; icon_state = "2-8" }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/plating, /area/maintenance/atmos_control) "ajd" = ( @@ -60156,6 +60156,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/aft) +"dKN" = ( +/obj/random/junk, +/obj/effect/landmark{ + name = "Revenant" + }, +/turf/simulated/floor/plating, +/area/maintenance/research_port) "dKW" = ( /obj/item/stack/rods, /turf/simulated/floor/airless, @@ -62319,11 +62326,22 @@ /turf/simulated/floor/plating, /area/maintenance/substation/supply) "icb" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, /obj/effect/landmark{ name = "Revenant" }, -/turf/unsimulated/floor/asteroid/ash/rocky, -/area/mine/unexplored) +/turf/simulated/floor/plating, +/area/maintenance/security_starboard) "idi" = ( /obj/structure/cable{ d1 = 1; @@ -64020,6 +64038,9 @@ dir = 4 }, /obj/random/loot, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/plating, /area/maintenance/medbay) "mnI" = ( @@ -86076,7 +86097,7 @@ aab aab aab aab -icb +aab aab aab aab @@ -87879,7 +87900,7 @@ beG bbs bcY bbs -beC +dKN bbs bcY bbs @@ -88589,7 +88610,7 @@ aaa aaa aab aab -icb +aab aox qba aij @@ -99111,7 +99132,7 @@ aab aab aad aaA -aaI +icb aaT aaT aaT @@ -99365,7 +99386,7 @@ aab aab aab aab -icb +aab aad aaB aaJ @@ -113849,7 +113870,7 @@ vAC vAC mmQ blN -icb +aab aab aab aab diff --git a/maps/aurora/aurora-5_interstitial.dmm b/maps/aurora/aurora-5_interstitial.dmm index 655608f0533..bbc9e72341b 100644 --- a/maps/aurora/aurora-5_interstitial.dmm +++ b/maps/aurora/aurora-5_interstitial.dmm @@ -8089,12 +8089,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/interstitial_cargo) -"zN" = ( -/obj/effect/landmark{ - name = "Revenant" - }, -/turf/unsimulated/floor/asteroid/ash/rocky, -/area/mine/unexplored) "zQ" = ( /obj/structure/flora/pottedplant/random, /obj/structure/extinguisher_cabinet{ @@ -10546,6 +10540,9 @@ dir = 9 }, /obj/machinery/firealarm/east, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/tiled, /area/maintenance/interstitial_main) "LD" = ( @@ -12619,6 +12616,9 @@ /obj/machinery/alarm{ pixel_y = 28 }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/plating, /area/maintenance/security_interstitial) "WR" = ( @@ -42791,7 +42791,7 @@ mo mo mo mo -zN +ab ab ab ab @@ -50712,7 +50712,7 @@ if im wo Zt -zN +ab ab ab aa diff --git a/maps/aurora/aurora-6_surface.dmm b/maps/aurora/aurora-6_surface.dmm index b1ced109b98..2c198b6df97 100644 --- a/maps/aurora/aurora-6_surface.dmm +++ b/maps/aurora/aurora-6_surface.dmm @@ -12223,6 +12223,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, +/obj/effect/landmark{ + name = "Revenant" + }, /turf/simulated/floor/plating, /area/maintenance/cargo/surface) "kZt" = ( @@ -53955,7 +53958,7 @@ fdu fdu fdu kKF -nmN +kKF kKF kKF kKF