mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 01:51:46 +00:00
* When any object is hit by an explosion, we no longer always call ex_act() on all its contents indiscriminately. The default contents_explosion() does nothing and it's overriden for certain objects only like storage items, machines with occupants, mechs. I've also overriden handle_atom_del() for many objects so that any sudden deletion of an object referenced in an object var of its container properly nullifies such references, avoiding potential runtime and updating the container's icon_state (e.g. admin-delete a mixer's beaker and the mixer's sprite updates immediately). I've tweaked bomb effect on worn clothes, having some armor but not 100% now still protects your clothes somewhat. Fixes some arguments of ex_act in living/ex_act() and other mobs. * derp and map fixes. * dem map fixes, man. * More work on code that use implants, simplified now that we can use the "implants" carbon var. * some fixes * more typos and fixes.
114 lines
4.4 KiB
Plaintext
114 lines
4.4 KiB
Plaintext
var/highlander = FALSE
|
|
/client/proc/only_one() //Gives everyone kilts, berets, claymores, and pinpointers, with the objective to hijack the emergency shuttle.
|
|
if(!ticker || !ticker.mode)
|
|
alert("The game hasn't started yet!")
|
|
return
|
|
highlander = TRUE
|
|
|
|
world << "<span class='userdanger'><i>THERE CAN BE ONLY ONE!!!</i></span>"
|
|
world << sound('sound/misc/highlander.ogg')
|
|
|
|
for(var/obj/item/weapon/disk/nuclear/N in poi_list)
|
|
N.relocate() //Gets it out of bags and such
|
|
|
|
for(var/mob/living/carbon/human/H in player_list)
|
|
if(H.stat == DEAD || !(H.client))
|
|
continue
|
|
H.make_scottish()
|
|
|
|
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)
|
|
|
|
/mob/living/carbon/human/proc/make_scottish()
|
|
ticker.mode.traitors += mind
|
|
mind.special_role = "highlander"
|
|
dna.species.specflags |= NOGUNS //nice try jackass
|
|
|
|
var/datum/objective/steal/steal_objective = new
|
|
steal_objective.owner = mind
|
|
steal_objective.set_target(new /datum/objective_item/steal/nukedisc)
|
|
mind.objectives += steal_objective
|
|
|
|
var/datum/objective/hijack/hijack_objective = new
|
|
hijack_objective.explanation_text = "Escape on the shuttle alone. Ensure that nobody else makes it out."
|
|
hijack_objective.owner = mind
|
|
mind.objectives += hijack_objective
|
|
|
|
mind.announce_objectives()
|
|
|
|
for(var/obj/item/I in get_equipped_items())
|
|
qdel(I)
|
|
for(var/obj/item/I in held_items)
|
|
qdel(I)
|
|
equip_to_slot_or_del(new /obj/item/clothing/under/kilt/highlander(src), slot_w_uniform)
|
|
equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(src), slot_ears)
|
|
equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(src), slot_head)
|
|
equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(src), slot_shoes)
|
|
equip_to_slot_or_del(new /obj/item/weapon/pinpointer(src), slot_l_store)
|
|
for(var/obj/item/weapon/pinpointer/P in src)
|
|
P.attack_self(src)
|
|
var/obj/item/weapon/card/id/W = new(src)
|
|
W.icon_state = "centcom"
|
|
W.access = get_all_accesses()
|
|
W.access += get_all_centcom_access()
|
|
W.assignment = "Highlander"
|
|
W.registered_name = real_name
|
|
W.flags |= NODROP
|
|
W.update_label(real_name)
|
|
equip_to_slot_or_del(W, slot_wear_id)
|
|
|
|
var/obj/item/weapon/claymore/highlander/H1 = new(src)
|
|
if(!highlander)
|
|
H1.admin_spawned = TRUE //To prevent announcing
|
|
put_in_hands(H1)
|
|
H1.pickup(src) //For the stun shielding
|
|
|
|
var/obj/item/weapon/bloodcrawl/antiwelder = new(src)
|
|
antiwelder.name = "compulsion of honor"
|
|
antiwelder.desc = "You are unable to hold anything in this hand until you're the last one left!"
|
|
antiwelder.icon_state = "bloodhand_right"
|
|
put_in_hands(antiwelder)
|
|
|
|
src << "<span class='boldannounce'>Your [H1.name] cries out for blood. Join in the slaughter, lest you be claimed yourself...\n\
|
|
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.</span>"
|
|
|
|
/proc/only_me()
|
|
if(!ticker || !ticker.mode)
|
|
alert("The game hasn't started yet!")
|
|
return
|
|
|
|
for(var/mob/living/carbon/human/H in player_list)
|
|
if(H.stat == 2 || !(H.client)) continue
|
|
if(is_special_character(H)) continue
|
|
|
|
ticker.mode.traitors += H.mind
|
|
H.mind.special_role = "[H.real_name] Prime"
|
|
|
|
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
|
|
hijack_objective.owner = H.mind
|
|
H.mind.objectives += hijack_objective
|
|
|
|
H << "<B>You are the multiverse summoner. Activate your blade to summon copies of yourself from another universe to fight by your side.</B>"
|
|
H.mind.announce_objectives()
|
|
|
|
var/obj/item/slot_item_ID = H.get_item_by_slot(slot_wear_id)
|
|
qdel(slot_item_ID)
|
|
var/obj/item/slot_item_hand = H.get_item_for_held_index(2)
|
|
H.unEquip(slot_item_hand)
|
|
|
|
var /obj/item/weapon/multisword/multi = new(H)
|
|
H.put_in_hands_or_del(multi)
|
|
|
|
var/obj/item/weapon/card/id/W = new(H)
|
|
W.icon_state = "centcom"
|
|
W.access = get_all_accesses()
|
|
W.access += get_all_centcom_access()
|
|
W.assignment = "Multiverse Summoner"
|
|
W.registered_name = H.real_name
|
|
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 ME!</span>")
|
|
log_admin("[key_name(usr)] used there can be only me.")
|