Highlander Patch (#20211)

* Highlander changes

* Prevents losing your claymore F O R E V E R

* Adds partial bloodthirst sating from attacking

* Reworks bloodthirst

* Forgot to push this

* Adds a disk-capture mechanic

* Changes based on feedback

* Bugfixes

* Makes the pinpointer functional
This commit is contained in:
Xhuis
2016-09-20 21:37:08 +12:00
committed by oranges
parent cb7036e66c
commit ea21aa4e00
4 changed files with 117 additions and 47 deletions
+37 -2
View File
@@ -82,10 +82,14 @@
var/highlander_claymores = 0
/obj/item/weapon/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS
desc = "<b><i>THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!</i></b>\nActivate it in your hand to point to the nearest victim."
flags = CONDUCT | NODROP
slot_flags = null
block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY
attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved", "gored") //ONLY THE MOST VISCERAL ATTACK VERBS
attack_verb = list("brutalized", "eviscerated", "disemboweled", "hacked", "carved", "cleaved") //ONLY THE MOST VISCERAL ATTACK VERBS
var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE
var/announced = FALSE //IF WE ARE THE ONLY ONE LEFT STANDING
var/bloodthirst_level = 0 //HOW THIRSTY WE ARE FOR BLOOD
var/obj/item/weapon/disk/nuclear/nuke_disk //OUR STORED NUKE DISK
/obj/item/weapon/claymore/highlander/New()
..()
@@ -95,19 +99,27 @@ var/highlander_claymores = 0
/obj/item/weapon/claymore/highlander/Destroy()
STOP_PROCESSING(SSobj, src)
highlander_claymores--
if(nuke_disk)
nuke_disk.forceMove(get_turf(src))
nuke_disk.visible_message("<span class='warning'>The nuke disk is vulnerable!</span>")
nuke_disk = null
return ..()
/obj/item/weapon/claymore/highlander/process()
if(isliving(loc))
var/mob/living/L = loc
if(L.stat != DEAD)
if(!announced)
handle_bloodthirst(L)
if(announced || admin_spawned || highlander_claymores > 1)
return
announced = TRUE
L.fully_heal()
world << "<span class='userdanger'>[L.real_name] IS THE ONLY ONE LEFT STANDING!</span>"
world << "<span class='userdanger'>[uppertext(L.real_name)] IS THE ONLY ONE LEFT STANDING!</span>"
world << sound('sound/misc/highlander_only_one.ogg')
L << "<span class='notice'>YOU ARE THE ONLY ONE LEFT STANDING!</span>"
for(var/obj/item/weapon/bloodcrawl/B in L)
qdel(B)
/obj/item/weapon/claymore/highlander/pickup(mob/living/user)
user << "<span class='notice'>The power of Scotland protects you! You are shielded from all stuns and knockdowns.</span>"
@@ -120,12 +132,18 @@ var/highlander_claymores = 0
/obj/item/weapon/claymore/highlander/examine(mob/user)
..()
user << "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade."
if(nuke_disk)
user << "<span class='boldwarning'>It's holding the nuke disk!</span>"
/obj/item/weapon/claymore/highlander/attack(mob/living/target, mob/living/user)
var/old_target_stat = target.stat
. = ..()
bloodthirst_level = max(bloodthirst_level - (target.mind && target.mind.special_role == "highlander" ? 15 : 5), 0)
if(target && target.stat == DEAD && old_target_stat != DEAD && target.mind && target.mind.special_role == "highlander")
user.fully_heal() //STEAL THE LIFE OF OUR FALLEN FOES
if(bloodthirst_level >= 30)
user << "<span class='notice'>[src] shakes greedily as it devours [target]'s soul. Its bloodthirst is quenched for the moment...</span>"
bloodthirst_level = 0
add_notch(user)
target.visible_message("<span class='warning'>[target] crumbles to dust beneath [user]'s blows!</span>", "<span class='userdanger'>As you fall, your body crumbles to dust!</span>")
target.dust()
@@ -138,6 +156,7 @@ var/highlander_claymores = 0
closest_victim = H
if(!closest_victim)
user << "<span class='warning'>[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.</span>"
return
user << "<span class='danger'>[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].</span>"
/obj/item/weapon/claymore/highlander/IsReflect()
@@ -196,6 +215,22 @@ var/highlander_claymores = 0
name = new_name
playsound(user, 'sound/items/Screwdriver2.ogg', 50, 1)
/obj/item/weapon/claymore/highlander/proc/handle_bloodthirst(mob/living/S) //THE BLADE THIRSTS FOR BLOOD AND WILL PUNISH THE WEAK OR PACIFISTIC
bloodthirst_level += (1 + min(notches, 10))
if(bloodthirst_level == 30)
S << "<span class='warning'>[src] shudders in your hand. It hungers for battle...</span>"
if(bloodthirst_level == 60)
S << "<span class='boldwarning'>[src] trembles violently. Kill someone already!</span>"
if(bloodthirst_level == 90)
S << "<span class='userdanger'>[src] starts shaking viciously! Shed blood or it'll give you away!</span>"
if(bloodthirst_level >= 120)
var/turf/T = get_turf(S)
for(var/mob/M in player_list - S)
if(M.z == T.z)
M << "<span class='userdanger'>THERE IS A COWARD WHO DOES NOT FIGHT TO THE [uppertext(dir2text(get_dir(M, T)))]. THEIR NAME IS [uppertext(S.real_name)] - SLAUGHTER THEM.</span>"
S << "<span class='notice'>you fucked up</span>"
bloodthirst_level = 100
/obj/item/weapon/katana
name = "katana"
desc = "Woefully underpowered in D20"