From 346760d34beeed4e98bccac80a0e8c33169b5e9c Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Sun, 6 Nov 2016 19:01:27 -0500 Subject: [PATCH] Ratvarian Spears are more powerful in melee and less easily turned against Servants (#21324) * yes, you should be hearing the song in your head * i listened to that song the entire time i was coding this * kind of like a spear * fine --- .../clock_cult/clock_items/ratvarian_spear.dm | 78 +++++++++++-------- .../clock_scriptures/scripture_scripts.dm | 1 + 2 files changed, 45 insertions(+), 34 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm index d84bfcfed90..d49a74f25d7 100644 --- a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm +++ b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm @@ -2,11 +2,11 @@ /obj/item/clockwork/ratvarian_spear name = "ratvarian spear" desc = "A razor-sharp spear made of brass. It thrums with barely-contained energy." - clockwork_desc = "A fragile spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last long." + clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons." icon = 'icons/obj/clockwork_objects.dmi' icon_state = "ratvarian_spear" item_state = "ratvarian_spear" - force = 17 //Extra damage is dealt to silicons in attack() + force = 15 //Extra damage is dealt to targets in attack() throwforce = 40 sharpness = IS_SHARP_ACCURATE attack_verb = list("stabbed", "poked", "slashed") @@ -22,11 +22,13 @@ /obj/item/clockwork/ratvarian_spear/proc/update_force() if(ratvar_awakens) //If Ratvar is alive, the spear is extremely powerful - force = 30 + force = 25 throwforce = 50 + armour_penetration = 10 else force = initial(force) throwforce = initial(throwforce) + armour_penetration = 0 /obj/item/clockwork/ratvarian_spear/examine(mob/user) ..() @@ -45,31 +47,32 @@ else impaling = TRUE attack_verb = list("impaled") - force += 23 //40 damage if ratvar isn't alive, 53 if he is + force += 22 //40 damage if ratvar isn't alive, 50 if he is + armour_penetration += 10 //if you're impaling someone, armor sure isn't that useful user.stop_pulling() - if(impaling) - if(hitsound) - playsound(loc, hitsound, get_clamped_volume(), 1, -1) - user.lastattacked = target - target.lastattacker = user - if(!target.attacked_by(src, user)) - impaling = FALSE //if we got blocked, stop impaling - add_logs(user, target, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") - add_fingerprint(user) - else //todo yell at someone to make attack() use proper return values - ..() + if(hitsound) + playsound(loc, hitsound, get_clamped_volume(), 1, -1) + user.lastattacked = target + target.lastattacker = user + if(!target.attacked_by(src, user)) //TODO MAKE ATTACK() USE PROPER RETURN VALUES + impaling = FALSE //if we got blocked, stop impaling + else + if(issilicon(target)) + var/mob/living/silicon/S = target + if(S.stat != DEAD) + S.visible_message("[S] shudders violently at [src]'s touch!", "ERROR: Temperature rising!") + S.adjustFireLoss(22) + else if(iscultist(target) || isconstruct(target)) //Cultists take extra fire damage + var/mob/living/M = target + if(M.stat != DEAD) + M << "Your body flares with agony at [src]'s presence!" + M.adjustFireLoss(15) + else + target.adjustFireLoss(3) + add_logs(user, target, "attacked", src.name, "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") + add_fingerprint(user) - if(issilicon(target)) - var/mob/living/silicon/S = target - if(S.stat != DEAD) - S.visible_message("[S] shudders violently at [src]'s touch!", "ERROR: Temperature rising!") - S.adjustFireLoss(25) - else if(iscultist(target) || isconstruct(target)) //Cultists take extra fire damage - var/mob/living/M = target - if(M.stat != DEAD) - M << "Your body flares with agony at [src]'s presence!" - M.adjustFireLoss(10) attack_verb = list("stabbed", "poked", "slashed") update_force() if(impaling) @@ -106,16 +109,23 @@ /obj/item/clockwork/ratvarian_spear/throw_impact(atom/target) var/turf/T = get_turf(target) - if(..() || !isliving(target)) - return - var/mob/living/L = target - if(issilicon(L) || iscultist(L)) - L.Stun(6) - L.Weaken(6) + if(isliving(target)) + var/mob/living/L = target + if(is_servant_of_ratvar(L)) + if(L.put_in_active_hand(src)) + L.visible_message("[L] catches [src] out of the air!") + else + L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") + else if(!..()) + if(issilicon(L) || iscultist(L)) + L.Stun(6) + L.Weaken(6) + else + L.Stun(2) + L.Weaken(2) + break_spear(T) else - L.Stun(2) - L.Weaken(2) - break_spear(T) + ..() /obj/item/clockwork/ratvarian_spear/proc/break_spear(turf/T) if(src) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm index bc62c7b1157..4803ce5cd0e 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm @@ -185,6 +185,7 @@ var/obj/item/clockwork/ratvarian_spear/R = new(get_turf(usr)) owner.put_in_hands(R) if(!ratvar_awakens) + R.clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long." owner << "Your spear begins to break down in this plane of existence. You can't use it for long!" addtimer(R, "break_spear", base_cooldown, FALSE) cooldown = base_cooldown + world.time