mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
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:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user