Merge pull request #20082 from Xhuis/highlander_patch

[s] Highlander 2.0
This commit is contained in:
oranges
2016-08-29 11:27:58 +12:00
committed by GitHub
7 changed files with 142 additions and 9 deletions

View File

@@ -54,6 +54,123 @@
user.visible_message("<span class='suicide'>[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.</span>")
return(BRUTELOSS)
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."
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
var/notches = 0 //HOW MANY PEOPLE HAVE BEEN SLAIN WITH THIS BLADE
var/announced = FALSE //IF WE ARE THE ONLY ONE LEFT STANDING
/obj/item/weapon/claymore/highlander/New()
..()
START_PROCESSING(SSobj, src)
highlander_claymores++
/obj/item/weapon/claymore/highlander/Destroy()
STOP_PROCESSING(SSobj, src)
highlander_claymores--
return ..()
/obj/item/weapon/claymore/highlander/process()
if(isliving(loc))
var/mob/living/L = loc
if(L.stat != DEAD)
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 << sound('sound/misc/highlander_only_one.ogg')
L << "<span class='notice'>YOU ARE THE ONLY ONE LEFT STANDING!</span>"
/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>"
user.add_stun_absorption("highlander", INFINITY, 1, "is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!")
/obj/item/weapon/claymore/highlander/dropped(mob/living/user)
user << "<span class='danger'>The power of Scotland fades away! You are no longer shielded from stuns.</span>"
user.add_stun_absorption("highlander", 0.1, 1, "is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!")
/obj/item/weapon/claymore/highlander/examine(mob/user)
..()
user << "It has [!notches ? "nothing" : "[notches] notches"] scratched into the blade."
/obj/item/weapon/claymore/highlander/attack(mob/living/target, mob/living/user)
var/old_target_stat = target.stat
. = ..()
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
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()
/obj/item/weapon/claymore/highlander/attack_self(mob/living/user)
var/closest_victim
var/closest_distance = 255
for(var/mob/living/carbon/human/H in player_list - user)
if(H.client && H.mind.special_role == "highlander" && (!closest_victim || get_dist(user, closest_victim) < closest_distance))
closest_victim = H
if(!closest_victim)
user << "<span class='warning'>[src] thrums for a moment and falls dark. Perhaps there's nobody nearby.</span>"
user << "<span class='danger'>[src] thrums and points to the [dir2text(get_dir(user, closest_victim))].</span>"
/obj/item/weapon/claymore/highlander/IsReflect()
return 1 //YOU THINK YOUR PUNY LASERS CAN STOP ME?
/obj/item/weapon/claymore/highlander/proc/add_notch(mob/living/user) //DYNAMIC CLAYMORE PROGRESSION SYSTEM - THIS IS THE FUTURE
notches++
force++
var/new_name = name
switch(notches)
if(1)
user << "<span class='notice'>Your first kill - hopefully one of many. You scratch a notch into [src]'s blade.</span>"
user << "<span class='warning'>You feel your fallen foe's soul entering your blade, restoring your wounds!</span>"
new_name = "notched claymore"
if(2)
user << "<span class='notice'>Another falls before you. Another soul fuses with your own. Another notch in the blade.</span>"
new_name = "double-notched claymore"
color = rgb(255, 235, 235)
if(3)
user << "<span class='notice'>You're beginning to</span> <span class='danger'><b>relish</b> the <b>thrill</b> of <b>battle.</b></span>"
new_name = "triple-notched claymore"
color = rgb(255, 215, 215)
if(4)
user << "<span class='notice'>You've lost count of</span> <span class='boldannounce'>how many you've killed.</span>"
new_name = "many-notched claymore"
color = rgb(255, 195, 195)
if(5)
user << "<span class='boldannounce'>Five voices now echo in your mind, cheering the slaughter.</span>"
new_name = "battle-tested claymore"
color = rgb(255, 175, 175)
if(6)
user << "<span class='boldannounce'>Is this what the vikings felt like? Visions of glory fill your head as you slay your sixth foe.</span>"
new_name = "battle-scarred claymore"
color = rgb(255, 155, 155)
if(7)
user << "<span class='boldannounce'>Kill. Butcher. <i>Conquer.</i></span>"
new_name = "vicious claymore"
color = rgb(255, 135, 135)
if(8)
user << "<span class='userdanger'>IT NEVER GETS OLD. THE <i>SCREAMING</i>. THE <i>BLOOD</i> AS IT <i>SPRAYS</i> ACROSS YOUR <i>FACE.</i></span>"
new_name = "bloodthirsty claymore"
color = rgb(255, 115, 115)
if(9)
user << "<span class='userdanger'>ANOTHER ONE FALLS TO YOUR BLOWS. ANOTHER WEAKLING UNFIT TO LIVE.</span>"
new_name = "gore-stained claymore"
color = rgb(255, 95, 95)
if(10)
user.visible_message("<span class='warning'>[user]'s eyes light up with a vengeful fire!</span>", \
"<span class='userdanger'>YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! <i>THERE CAN BE ONLY ONE!!!</i></span>")
user.update_icons()
new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
icon_state = "claymore_valhalla"
item_state = "cultblade"
color = initial(color)
name = new_name
playsound(user, 'sound/items/Screwdriver2.ogg', 50, 1)
/obj/item/weapon/katana
name = "katana"
desc = "Woefully underpowered in D20"

View File

@@ -3,12 +3,16 @@
alert("The game hasn't started yet!")
return
world << "<span class='userdanger'><i>THERE CAN BE ONLY ONE!!!</i></span>"
world << sound('sound/misc/highlander.ogg')
for(var/mob/living/carbon/human/H in player_list)
if(H.stat == 2 || !(H.client)) continue
if(is_special_character(H)) continue
if(H.stat == DEAD || !(H.client)) continue
ticker.mode.traitors += H.mind
H.mind.special_role = "traitor"
H.mind.special_role = "highlander"
H.dna.species.specflags |= NOGUNS //nice try jackass
var/datum/objective/steal/steal_objective = new
steal_objective.owner = H.mind
@@ -16,10 +20,10 @@
H.mind.objectives += steal_objective
var/datum/objective/hijack/hijack_objective = new
hijack_objective.explanation_text = "Escape on the shuttle alone. Ensure nobody else makes it out."
hijack_objective.owner = H.mind
H.mind.objectives += hijack_objective
H << "<B>You are the traitor.</B>"
H.mind.announce_objectives()
for (var/obj/item/I in H)
@@ -27,10 +31,9 @@
continue
qdel(I)
H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt/highlander(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears)
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/weapon/claymore(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(H.loc), slot_l_store)
@@ -40,12 +43,17 @@
W.access += get_all_centcom_access()
W.assignment = "Highlander"
W.registered_name = H.real_name
W.flags |= NODROP
W.update_label(H.real_name)
H.equip_to_slot_or_del(W, slot_wear_id)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used THERE CAN BE ONLY ONE!</span>")
log_admin("[key_name(usr)] used there can be only one.")
var/obj/item/weapon/claymore/highlander/H1 = new(H)
H.put_in_hands(H1)
H1.pickup(H)
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used THERE CAN BE ONLY ONE!</span>")
log_admin("[key_name(usr)] used THERE CAN BE ONLY ONE.")
addtimer(SSshuttle.emergency, "request", 50, FALSE, null, 1)
/proc/only_me()
if(!ticker || !ticker.mode)

View File

@@ -87,6 +87,10 @@
dog_fashion = /datum/dog_fashion/head/beret
/obj/item/clothing/head/beret/highlander
desc = "That was white fabric. <i>Was.</i>"
flags = NODROP
dog_fashion = null //THIS IS FOR SLAUGHTER, NOT PUPPIES
//Security

View File

@@ -355,6 +355,10 @@
fitted = FEMALE_UNIFORM_TOP
can_adjust = 0
/obj/item/clothing/under/kilt/highlander
desc = "You're the only one worthy of this kilt."
flags = NODROP
/obj/item/clothing/under/sexymime
name = "sexy mime outfit"
desc = "The only time when you DON'T enjoy looking at someone's rack."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 54 KiB

BIN
sound/misc/highlander.ogg Normal file

Binary file not shown.

Binary file not shown.