mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-30 04:02:33 +00:00
Players: - The only thing that you should notice is that your backpack options have changed. Instead of being "None", "Backpack", "Satchel", and "Satchel Alt", there are 6 options: - "Grey Backpack": Ensures you always recieve a plain grey backpack. - "Grey Satchel": Same as the above, grey, plain, satchel. - "Grey Dufflebag": So you don't have to rush the locker room, I guess. Just kinda ransacked it from /tg/. Happy to revert it, please do not post a five paragraph text wall calling me a shitlord powergaming hitler-loving furry. - "Leather Satchel": It's a leather satchel. What the hell did you think it was? - "Department Backpack": Gives you the department's default backpack. Grey for most jobs. - "Department Satchel": It gives you the department's default satchel; A grey satchel if the department doesn't have one. Coders: - The above means this needs a minor SQL change: ``` SQL goes here I'll write a query later Can't be bothered now Kill me please ``` - This is a cleaner method of handling job equipment than "M.equip_or_collect" x 1000. Jobs specify a '/datum/outfit' datum, which defines all of the things to equip to the user. - Minor note: equip_or_collect will no longer ever generate a plastic bag. It will instead just drop stuff on the floor if it can't stuff it into a mob. If this is even slightly a point of contention, more than happy to revert it; It was just requested by Fox. - Addendum: This also has the effect of making it so that labcoats are just thrown onto the floor if you have a loadout suit. It's not really avoidable. Uniforms and suits are equipped before the backpack. - Changes from /tg/: - Changed all of the "H.equip_to_slot_or_del" calls into invoking a new "equip_item" proc; This is used to support a new variable called "collect_not_del". Job outfits use this, it makes it so that the system calls equip_or_collect instead of equip_to_slot_or_del. The idea being that job items should never be lost to the void, especially because they can conflict with loadout items. TODO: - Retrofit "Equip Mob" verb to use this for all of the non-job options - Fully implement head announcements(?) - May be best for a second PR that addresses all of the real issues with our current job system ( Now go reread that SQL code block :) )
105 lines
3.7 KiB
Plaintext
105 lines
3.7 KiB
Plaintext
/client/proc/only_one()
|
|
if(!ticker)
|
|
alert("The game hasn't started yet!")
|
|
return
|
|
|
|
var/list/incompatible_species = list("Plasmaman", "Vox")
|
|
for(var/mob/living/carbon/human/H in player_list)
|
|
if(H.stat == DEAD || !(H.client))
|
|
continue
|
|
if(is_special_character(H))
|
|
continue
|
|
if(H.species.name in incompatible_species)
|
|
H.set_species("Human")
|
|
var/datum/preferences/A = new() // Randomize appearance
|
|
A.copy_to(H)
|
|
|
|
ticker.mode.traitors += H.mind
|
|
H.mind.special_role = SPECIAL_ROLE_TRAITOR
|
|
|
|
var/datum/objective/hijack/hijack_objective = new
|
|
hijack_objective.owner = H.mind
|
|
H.mind.objectives += hijack_objective
|
|
|
|
to_chat(H, "<B>You are a Highlander. Kill all other Highlanders. There can be only one.</B>")
|
|
var/obj_count = 1
|
|
for(var/datum/objective/OBJ in H.mind.objectives)
|
|
to_chat(H, "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]")
|
|
obj_count++
|
|
|
|
for(var/obj/item/I in H)
|
|
if(istype(I, /obj/item/weapon/implant))
|
|
continue
|
|
if(istype(I, /obj/item/organ))
|
|
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/device/radio/headset/heads/captain(H), slot_l_ear)
|
|
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_r_hand)
|
|
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)
|
|
|
|
var/obj/item/weapon/card/id/W = new(H)
|
|
W.name = "[H.real_name]'s ID Card"
|
|
W.icon_state = "centcom"
|
|
W.access = get_all_accesses()
|
|
W.access += get_all_centcom_access()
|
|
W.assignment = "Highlander"
|
|
W.registered_name = H.real_name
|
|
H.equip_to_slot_or_del(W, slot_wear_id)
|
|
H.species.after_equip_job(null, H)
|
|
H.regenerate_icons()
|
|
|
|
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ONE! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
|
log_admin("[key_name(usr)] used there can be only one.")
|
|
nologevent = 1
|
|
world << sound('sound/music/THUNDERDOME.ogg')
|
|
|
|
/client/proc/only_me()
|
|
if(!ticker)
|
|
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
|
|
|
|
to_chat(H, "<B>You are the multiverse summoner. Activate your blade to summon copies of yourself from another universe to fight by your side.</B>")
|
|
var/obj_count = 1
|
|
for(var/datum/objective/OBJ in H.mind.objectives)
|
|
to_chat(H, "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]")
|
|
obj_count++
|
|
|
|
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_by_slot(slot_r_hand)
|
|
H.unEquip(slot_item_hand)
|
|
|
|
var /obj/item/weapon/multisword/pure_evil/multi = new(H)
|
|
H.equip_to_slot_or_del(multi, slot_r_hand)
|
|
|
|
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)
|
|
|
|
H.update_icons()
|
|
|
|
message_admins("[key_name_admin(usr)] used THERE CAN BE ONLY ME! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
|
|
log_admin("[key_name(usr)] used there can be only me.")
|
|
nologevent = 1
|
|
world << sound('sound/music/THUNDERDOME.ogg')
|