Files
Paradise/code/modules/admin/verbs/onlyoneteam.dm
T
Tigercat2000 14ba6fded6 Ported /tg/'s outfit datums, refactored job controller to support them
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 :) )
2017-02-17 11:35:45 -08:00

93 lines
3.2 KiB
Plaintext

/client/proc/only_one_team()
if(!ticker)
alert("The game hasn't started yet!")
return
var/list/incompatible_species = list("Plasmaman", "Vox")
var/team_toggle = 0
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)
for(var/obj/item/I in H)
if(istype(I, /obj/item/weapon/implant))
continue
if(istype (I, /obj/item/organ))
continue
qdel(I)
to_chat(H, "<B>You are part of the [station_name()] dodgeball tournament. Throw dodgeballs at crewmembers wearing a different color than you. OOC: Use THROW on an EMPTY-HAND to catch thrown dodgeballs.</B>")
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/weapon/beach_ball/dodgeball(H), slot_r_hand)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
if(!team_toggle)
team_alpha += H
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/red/dodgeball(H), slot_w_uniform)
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 = "Professional Pee-Wee League Dodgeball Player"
W.registered_name = H.real_name
H.equip_to_slot_or_del(W, slot_wear_id)
else
team_bravo += H
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/blue/dodgeball(H), slot_w_uniform)
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 = "Professional Pee-Wee League Dodgeball Player"
W.registered_name = H.real_name
H.equip_to_slot_or_del(W, slot_wear_id)
team_toggle = !team_toggle
H.species.after_equip_job(null, H)
H.regenerate_icons()
message_admins("[key_name_admin(usr)] used DODGEBAWWWWWWWL! -NO ATTACK LOGS WILL BE SENT TO ADMINS FROM THIS POINT FORTH-", 1)
log_admin("[key_name(usr)] used dodgeball.")
nologevent = 1
/obj/item/weapon/beach_ball/dodgeball
name = "dodgeball"
icon = 'icons/obj/basketball.dmi'
icon_state = "dodgeball"
item_state = "basketball"
desc = "Used for playing the most violent and degrading of childhood games."
/obj/item/weapon/beach_ball/dodgeball/throw_impact(atom/hit_atom)
..()
if((ishuman(hit_atom)))
var/mob/living/carbon/human/H = hit_atom
if(H.r_hand == src) return
if(H.l_hand == src) return
var/mob/A = H.LAssailant
if((H in team_alpha) && (A in team_alpha))
to_chat(A, "<span class='warning'>He's on your team!</span>")
return
else if((H in team_bravo) && (A in team_bravo))
to_chat(A, "<span class='warning'>He's on your team!</span>")
return
else if(!A in team_alpha && !A in team_bravo)
to_chat(A, "<span class='warning'>You're not part of the dodgeball game, sorry!</span>")
return
else
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
visible_message("<span class='danger'>[H] HAS BEEN ELIMINATED!</span>")
H.melt()
return