mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-19 02:54:41 +01:00
Merge branch 'master' into findnreplace
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
|
||||
|
||||
/mob/living/carbon/human/virtual_reality
|
||||
var/mob/living/carbon/human/real_me //The human controlling us, can be any human (including virtual ones... inception...)
|
||||
var/datum/action/quit_vr/quit_action
|
||||
var/datum/action/back_to_lobby/back_to_lobby
|
||||
var/datum/action/detach_from_avatar/detach_from_avatar
|
||||
|
||||
/mob/living/carbon/human/virtual_reality/New()
|
||||
quit_action = new()
|
||||
quit_action.Grant(src)
|
||||
back_to_lobby = new()
|
||||
back_to_lobby.Grant(src)
|
||||
detach_from_avatar = new()
|
||||
detach_from_avatar.Grant(src)
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/virtual_reality/death()
|
||||
return_to_lobby()
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/virtual_reality/Destroy()
|
||||
return_to_lobby()
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/virtual_reality/ghost()
|
||||
set category = "OOC"
|
||||
set name = "Ghost"
|
||||
set desc = "Relinquish your life and enter the land of the dead."
|
||||
var/mob/living/carbon/human/H = real_me
|
||||
revert_to_reality(FALSE)
|
||||
if(H)
|
||||
H.ghost()
|
||||
qdel(src)
|
||||
|
||||
/mob/living/carbon/human/virtual_reality/proc/revert_to_reality(remove = 0)
|
||||
if(real_me && mind)
|
||||
mind.transfer_to(real_me)
|
||||
real_me.EyeBlind(2)
|
||||
real_me.Confused(2)
|
||||
if(remove)
|
||||
qdel(src)
|
||||
else
|
||||
return src
|
||||
|
||||
/mob/living/carbon/human/virtual_reality/proc/return_to_lobby()
|
||||
if(real_me && mind)
|
||||
var/mob/living/carbon/human/virtual_reality/new_vr
|
||||
new_vr = spawn_vr_avatar(src, "Lobby")
|
||||
var/obj/item/clothing/glasses/vr_goggles/g = new_vr.real_me.glasses
|
||||
g.vr_human = new_vr
|
||||
qdel(src)
|
||||
|
||||
/datum/action/quit_vr
|
||||
name = "Quit Virtual Reality"
|
||||
|
||||
/datum/action/quit_vr/Trigger()
|
||||
if(..())
|
||||
if(istype(owner, /mob/living/carbon/human/virtual_reality))
|
||||
var/mob/living/carbon/human/virtual_reality/vr = owner
|
||||
vr.revert_to_reality(1)
|
||||
else
|
||||
Remove(owner)
|
||||
|
||||
/datum/action/back_to_lobby
|
||||
name = "Return To Lobby"
|
||||
|
||||
/datum/action/back_to_lobby/Trigger()
|
||||
if(..())
|
||||
if(istype(owner, /mob/living/carbon/human/virtual_reality))
|
||||
var/mob/living/carbon/human/virtual_reality/vr = owner
|
||||
vr.return_to_lobby()
|
||||
else
|
||||
Remove(owner)
|
||||
|
||||
/datum/action/detach_from_avatar
|
||||
name = "Detach From Avatar"
|
||||
|
||||
/datum/action/detach_from_avatar/Trigger()
|
||||
if(..())
|
||||
if(istype(owner, /mob/living/carbon/human/virtual_reality))
|
||||
var/mob/living/carbon/human/virtual_reality/vr = owner
|
||||
var/obj/item/clothing/glasses/vr_goggles/g = vr.real_me.glasses
|
||||
g.vr_human = vr
|
||||
vr.revert_to_reality(0)
|
||||
else
|
||||
Remove(owner)
|
||||
@@ -0,0 +1,41 @@
|
||||
//Glorified teleporter that puts you in a new human body.
|
||||
// it's """VR"""
|
||||
|
||||
/obj/item/clothing/glasses/vr_goggles
|
||||
desc = "A long time ago, people used these glasses to makes images from screens threedimensional."
|
||||
name = "3D glasses"
|
||||
icon_state = "3d"
|
||||
item_state = "3d"
|
||||
prescription_upgradable = 0
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/eyes.dmi'
|
||||
)
|
||||
|
||||
var/you_die_in_the_game_you_die_for_real = FALSE
|
||||
var/mob/living/carbon/human/virtual_reality/vr_human
|
||||
|
||||
|
||||
/obj/item/clothing/glasses/vr_goggles/Destroy()
|
||||
..()
|
||||
vr_human.revert_to_reality(1)
|
||||
cleanup_vr_avatar()
|
||||
|
||||
/obj/item/clothing/glasses/vr_goggles/dropped()
|
||||
..()
|
||||
if(vr_human)
|
||||
vr_human.revert_to_reality(0)
|
||||
|
||||
/obj/item/clothing/glasses/vr_goggles/proc/cleanup_vr_avatar()
|
||||
if(vr_human)
|
||||
vr_human = null
|
||||
|
||||
/obj/item/clothing/glasses/vr_goggles/equipped()
|
||||
..()
|
||||
var/mob/living/carbon/human/H = loc
|
||||
spawn(1)
|
||||
if(H.glasses == src)
|
||||
if(vr_human == null)
|
||||
vr_human = spawn_vr_avatar(H, "Lobby")
|
||||
else
|
||||
control_remote(H, vr_human)
|
||||
@@ -118,6 +118,11 @@
|
||||
path = /obj/item/clothing/head/beret/sci
|
||||
allowed_roles = list("Research Director", "Scientist")
|
||||
|
||||
/datum/gear/hat/med_beret
|
||||
display_name = "medical beret"
|
||||
path = /obj/item/clothing/head/beret/med
|
||||
allowed_roles = list("Chief Medical Officer", "Medical Doctor" , "Virologist", "Brig Physician")
|
||||
|
||||
/datum/gear/hat/surgicalcap_purple
|
||||
display_name = "surgical cap, purple"
|
||||
path = /obj/item/clothing/head/surgery/purple
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
/datum/gear/uniform/skirt/job/cmo
|
||||
display_name = "skirt, cmo"
|
||||
path = /obj/item/clothing/under/rank/chief_medical_officer
|
||||
path = /obj/item/clothing/under/rank/chief_medical_officer/skirt
|
||||
allowed_roles = list("Chief Medical Officer")
|
||||
|
||||
/datum/gear/uniform/skirt/job/chem
|
||||
|
||||
@@ -129,6 +129,11 @@
|
||||
icon_state = "beret_sci"
|
||||
|
||||
//Medical
|
||||
/obj/item/clothing/head/beret/med
|
||||
name = "medical beret"
|
||||
desc = "A white beret with a green cross finely threaded into it. It has that sterile smell about it."
|
||||
icon_state = "beret_med"
|
||||
|
||||
/obj/item/clothing/head/surgery
|
||||
name = "surgical cap"
|
||||
desc = "A cap surgeons wear during operations. Keeps their hair from tickling your internal organs."
|
||||
|
||||
@@ -379,9 +379,6 @@
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
actions_types = list(/datum/action/item_action/caw)
|
||||
|
||||
/obj/item/clothing/head/griffin/super_hero
|
||||
flags = BLOCKHAIR|NODROP
|
||||
|
||||
/obj/item/clothing/head/griffin/attack_self()
|
||||
caw()
|
||||
|
||||
|
||||
@@ -167,8 +167,6 @@
|
||||
icon_state = "griffinboots"
|
||||
item_state = "griffinboots"
|
||||
|
||||
/obj/item/clothing/shoes/griffin/super_hero
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/shoes/fluff/noble_boot
|
||||
name = "noble boots"
|
||||
|
||||
@@ -817,8 +817,6 @@
|
||||
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs,/obj/item/device/flashlight/seclite)
|
||||
actions_types = list(/datum/action/item_action/toggle_wings)
|
||||
|
||||
/obj/item/clothing/suit/toggle/owlwings/super_hero
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings
|
||||
name = "griffon cloak"
|
||||
@@ -826,9 +824,6 @@
|
||||
icon_state = "griffin_wings"
|
||||
item_state = "griffin_wings"
|
||||
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings/super_hero
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/suit/toggle/attack_self()
|
||||
if(icon_state == initial(icon_state))
|
||||
icon_state = icon_state + "_t"
|
||||
|
||||
@@ -729,18 +729,12 @@
|
||||
icon_state = "owl"
|
||||
item_color = "owl"
|
||||
|
||||
/obj/item/clothing/under/owl/super_hero
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/under/griffin
|
||||
name = "griffon uniform"
|
||||
desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem."
|
||||
icon_state = "griffin"
|
||||
item_color = "griffin"
|
||||
|
||||
/obj/item/clothing/under/griffin/super_hero
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/clothing/under/noble_clothes
|
||||
name = "noble clothes"
|
||||
desc = "They fall just short of majestic."
|
||||
|
||||
@@ -129,6 +129,12 @@
|
||||
icon_state = "zeldacrowbar"
|
||||
item_state = "crowbar"
|
||||
|
||||
/obj/item/clothing/glasses/monocle/fluff/trubus //Trubus: Wolf O'Shaw
|
||||
name = "Gold Thermal Eyepatch"
|
||||
desc = "Wolf's non-functional thermal eyepatch."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "wolf_eyepatch"
|
||||
|
||||
/obj/item/clothing/glasses/meson/fluff/book_berner_1 // Adrkiller59: Adam Cooper
|
||||
name = "bespectacled mesonic surveyors"
|
||||
desc = "One of the older meson scanner models retrofitted to perform like its modern counterparts."
|
||||
@@ -140,6 +146,28 @@
|
||||
desc = "A weathered Vox thermonocle, doesn't seem to work anymore."
|
||||
icon_state = "thermoncle"
|
||||
|
||||
/obj/item/device/fluff/rapid_wheelchair_kit //Rapidvalj: Hakikarahiti
|
||||
name = "wheelchair conversion kit"
|
||||
desc = "An assorted set of exchangable parts for a wheelchair."
|
||||
icon_state = "modkit"
|
||||
|
||||
/obj/item/device/fluff/rapid_wheelchair_kit/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity || !ishuman(user) || user.incapacitated())
|
||||
return
|
||||
|
||||
if(istype(target, /obj/structure/stool/bed/chair/wheelchair) && !istype(target, /obj/structure/stool/bed/chair/wheelchair/bike))
|
||||
to_chat(user, "<span class='notice'>You modify the appearance of [target].</span>")
|
||||
var/obj/structure/stool/bed/chair/wheelchair/chair = target
|
||||
chair.icon = 'icons/obj/custom_items.dmi'
|
||||
chair.icon_state = "vox_wheelchair"
|
||||
chair.name = "vox wheelchair"
|
||||
chair.desc = "A luxurious Vox Wheelchair, weathered from use."
|
||||
chair.handle_rotation()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='warning'>You can't modify [target]!</span>")
|
||||
|
||||
/obj/item/weapon/lighter/zippo/fluff/purple // GodOfOreos: Jason Conrad
|
||||
name = "purple engraved zippo"
|
||||
desc = "All craftsspacemanship is of the highest quality. It is encrusted with refined plasma sheets. On the item is an image of a dwarf and the words 'Strike the Earth!' etched onto the side."
|
||||
@@ -248,7 +276,6 @@
|
||||
|
||||
if(istype(target, /obj/item/weapon/melee/baton) && !istype(target, /obj/item/weapon/melee/baton/cattleprod))
|
||||
to_chat(user, "<span class='notice'>You modify the appearance of [target].</span>")
|
||||
//because batons use the initial() proc, we can't just swap the icon state, sadly
|
||||
var/obj/item/weapon/melee/baton/the_baton = target
|
||||
the_baton.base_icon = "desolate_baton"
|
||||
the_baton.item_state = "desolate_baton"
|
||||
@@ -353,6 +380,7 @@
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses/fluff/voxxyhud //LP Spartan: Kaskreyarawkta
|
||||
name = "VoxxyHUD"
|
||||
desc = "A worn down visor from a vox raider's gear, crudely ripped from its helmet and linked into the security systems of the station. The word 'Kask' is scratched into the side."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "hud-spartan"
|
||||
|
||||
//////////// Hats ////////////
|
||||
@@ -368,13 +396,12 @@
|
||||
desc = "Fuzzy, and also stained with blood."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "polarbearpelt"
|
||||
item_state = "polarbearpelt"
|
||||
|
||||
/obj/item/clothing/head/fluff/sparkyninja_beret // Sparkyninja: Neil Wilkinson
|
||||
name = "royal marines commando beret"
|
||||
desc = "Dark Green beret with an old insignia on it."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "sparkyninja_beret"
|
||||
item_state = "sparkyninja_beret"
|
||||
|
||||
/obj/item/clothing/head/beret/fluff/sigholt //sigholtstarsong: Sigholt Starsong
|
||||
name = "Lieutenant Starsong's beret"
|
||||
@@ -405,25 +432,29 @@
|
||||
/obj/item/clothing/head/beret/fluff/linda //Epic_Charger: Linda Clark
|
||||
name = "Green beret"
|
||||
desc = "A beret, an artist's favorite headwear. This one has two holes cut on the edges."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "linda_beret"
|
||||
|
||||
/obj/item/clothing/head/fluff/kaki //Rapidvalj: Kakicharakiti
|
||||
name = "sleek fancy leader hat"
|
||||
desc = "A uniquely colored vox leader hat. Has some signs of wear."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "kakicharakiti"
|
||||
|
||||
//////////// Suits ////////////
|
||||
/obj/item/clothing/suit/fluff
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
actions_types = list()
|
||||
ignore_suitadjust = 1
|
||||
adjust_flavour = null
|
||||
species_fit = null
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/fluff/dusty_jacket //ComputerlessCitizen: Screech
|
||||
name = "Dusty Jacket"
|
||||
desc = "A worn leather jacket. Some burn holes have been patched."
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "dusty_jacket"
|
||||
ignore_suitadjust = 1
|
||||
actions_types = list()
|
||||
adjust_flavour = null
|
||||
species_fit = null
|
||||
sprite_sheets = null
|
||||
|
||||
/obj/item/clothing/suit/storage/labcoat/fluff/aeneas_rinil //Socialsystem: Lynn Fea
|
||||
name = "Robotics labcoat"
|
||||
@@ -448,6 +479,7 @@
|
||||
/obj/item/clothing/suit/fluff/kluys // Kluys: Cripty Pandaen
|
||||
name = "Nano Fibre Jacket"
|
||||
desc = "A Black Suit made out of nanofibre. The newest of cyberpunk fashion using hightech liquid to solid materials."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "Kluysfluff1"
|
||||
item_state = "Kluysfluff1"
|
||||
blood_overlay_type = "coat"
|
||||
@@ -494,15 +526,29 @@
|
||||
/obj/item/clothing/suit/hooded/hoodie/fluff/linda // Epic_Charger: Linda Clark
|
||||
name = "Green Nanotrasen Hoodie"
|
||||
desc = "A green hoodie with the Nanotrasen logo on the back. It looks weathered."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "linda_hoodie"
|
||||
hoodtype = /obj/item/clothing/head/hood/fluff/linda
|
||||
|
||||
/obj/item/clothing/head/hood/fluff/linda //Epic_Charger: Linda Clark
|
||||
icon_state = "greenhood"
|
||||
|
||||
/obj/item/clothing/suit/hooded/fluff/bone //Doru7: Jack Bone
|
||||
name = "skeleton suit"
|
||||
desc = "A spooky full-body suit! This one doesn't glow in the dark."
|
||||
body_parts_covered = HEAD|UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "skeleton_suit"
|
||||
hoodtype = /obj/item/clothing/head/hood/fluff/skeleton
|
||||
|
||||
/obj/item/clothing/head/hood/fluff/skeleton
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "skeleton_hood"
|
||||
|
||||
/obj/item/clothing/suit/armor/shodanscoat // RazekPraxis: SHODAN
|
||||
name = "SHODAN's Captain's Coat"
|
||||
desc = "A black coat with gold trim and an old US Chevron printed on the back. Edgy."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "shodancoat"
|
||||
|
||||
//////////// Uniforms ////////////
|
||||
@@ -523,6 +569,15 @@
|
||||
item_color = "elishirt"
|
||||
displays_id = 0
|
||||
|
||||
/obj/item/clothing/under/fluff/jay_turtleneck // Jayfeather: Jay Wingler
|
||||
name = "Mar's Pattern Custom Turtleneck"
|
||||
desc = "It seems to be lightly dusted in orange fuzz, and damp with the smell of anti-freeze. It has a strange symbol in the middle."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "jaywingler"
|
||||
item_state = "jaywingler"
|
||||
item_color = "jaywingler"
|
||||
displays_id = 0
|
||||
|
||||
/obj/item/clothing/under/psysuit/fluff/isaca_sirius_1 // Xilia: Isaca Sirius
|
||||
name = "Isaca's suit"
|
||||
desc = "Black, comfortable and nicely fitting suit. Made not to hinder the wearer in any way. Made of some exotic fabric. And some strange glowing jewel at the waist. Name labels says; Property of Isaca Sirius; The Seeder."
|
||||
@@ -569,6 +624,9 @@
|
||||
/obj/item/clothing/under/fluff/aegis //PlagueWalker: A.E.G.I.S.
|
||||
name = "gilded waistcoat"
|
||||
desc = "This black, gold-trimmed, rather expensive-looking uniform laced with fine materials appears comfortable despite its stiffness."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
|
||||
icon_state = "aegisuniform"
|
||||
item_state = "aegisuniform"
|
||||
item_color = "aegisuniform"
|
||||
@@ -579,9 +637,9 @@
|
||||
/obj/item/clothing/mask/bandana/fluff/dar //sasanek12: Dar'Konr
|
||||
name = "camo bandana"
|
||||
desc = "It's a worn-out bandana in camo paint"
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "bandcamo"
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/fluff/spartan //LP Spartan: Kaskreyarawkta
|
||||
name = "minimal gasmask"
|
||||
desc = "Designed to cover as little of face as possible while still being a functional gasmask."
|
||||
@@ -723,6 +781,7 @@
|
||||
/obj/item/weapon/storage/backpack/fluff/krich_back //lizardzsi: Krichahka
|
||||
name = "Voxcaster"
|
||||
desc = "Battered, Sol-made military radio backpack that had its speakers fried from playing Vox opera. The words 'Swift-Talon' are crudely scratched onto its side."
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "voxcaster_fluff"
|
||||
|
||||
/obj/item/clothing/head/wizard/fake/fluff/dreamy //phantasmicdream : Dreamy Rockwall
|
||||
|
||||
@@ -13,6 +13,16 @@
|
||||
return 0 // Proceed with emote
|
||||
//--FalseIncarnate
|
||||
|
||||
/mob/proc/handle_emote_param(var/target, var/not_self, var/vicinity, var/return_mob) //Only returns not null if the target param is valid.
|
||||
var/view_vicinity = vicinity ? vicinity : null //not_self means we'll only return if target is valid and not us
|
||||
if(target) //vicinity is the distance passed to the view proc.
|
||||
for(var/mob/A in view(view_vicinity, null)) //if set, return_mob will cause this proc to return the mob instead of just its name if the target is valid.
|
||||
if(target == A.name && (!not_self || (not_self && target != name)))
|
||||
if(return_mob)
|
||||
return A
|
||||
else
|
||||
return target
|
||||
|
||||
// All mobs should have custom emote, really..
|
||||
/mob/proc/custom_emote(var/m_type=1,var/message = null)
|
||||
|
||||
|
||||
@@ -85,162 +85,73 @@
|
||||
if("me") //OKAY SO RANT TIME, THIS FUCKING HAS TO BE HERE OR A SHITLOAD OF THINGS BREAK
|
||||
return custom_emote(m_type, message) //DO YOU KNOW WHY SHIT BREAKS? BECAUSE SO MUCH OLDCODE CALLS mob.emote("me",1,"whatever_the_fuck_it_wants_to_emote")
|
||||
//WHO THE FUCK THOUGHT THAT WAS A GOOD FUCKING IDEA!?!?
|
||||
|
||||
if("ping", "pings")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param) //Check to see if the param is valid (mob with the param name is in view).
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> pings at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> pings."
|
||||
message = "<B>[src]</B> pings[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("buzz2")
|
||||
message = "<B>[src]</B> emits an irritated buzzing sound."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> emits an irritated buzzing sound[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("buzz", "buzzes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> buzzes at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> buzzes."
|
||||
message = "<B>[src]</B> buzzes[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("beep", "beeps")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> beeps at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> beeps."
|
||||
message = "<B>[src]</B> beeps[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/machines/twobeep.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("drone", "drones", "hum", "hums", "rumble", "rumbles")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> drones at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> rumbles."
|
||||
message = "<B>[src]</B> [M ? "drones at [M]" : "rumbles"]."
|
||||
playsound(loc, 'sound/voice/DraskTalk.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("squish", "squishes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> squishes at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> squishes."
|
||||
message = "<B>[src]</B> squishes[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/effects/slime_squish.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound.
|
||||
m_type = 2
|
||||
|
||||
if("clack", "clacks")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> clacks their mandibles at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> clacks their mandibles."
|
||||
message = "<B>[src]</B> clacks their mandibles[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/effects/Kidanclack.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound.
|
||||
m_type = 2
|
||||
|
||||
if("click", "clicks")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> clicks their mandibles at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> clicks their mandibles."
|
||||
message = "<B>[src]</B> clicks their mandibles[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/effects/Kidanclack2.ogg', 50, 0) //Credit to DrMinky (freesound.org) for the sound.
|
||||
m_type = 2
|
||||
|
||||
if("yes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> emits an affirmative blip at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> emits an affirmative blip."
|
||||
message = "<B>[src]</B> emits an affirmative blip[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/machines/synth_yes.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("no")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> emits a negative blip at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> emits a negative blip."
|
||||
message = "<B>[src]</B> emits a negative blip[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/machines/synth_no.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
@@ -293,36 +204,16 @@
|
||||
|
||||
if("bow", "bows")
|
||||
if(!buckled)
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> bows to [param]."
|
||||
else
|
||||
message = "<B>[src]</B> bows."
|
||||
message = "<B>[src]</B> bows[M ? " to [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("salute", "salutes")
|
||||
if(!buckled)
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> salutes to [param]."
|
||||
else
|
||||
message = "<B>[src]</b> salutes."
|
||||
message = "<B>[src]</B> salutes[M ? " to [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("choke", "chokes")
|
||||
@@ -461,11 +352,15 @@
|
||||
m_type = 2
|
||||
|
||||
if("frown", "frowns")
|
||||
message = "<B>[src]</B> frowns."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> frowns[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("nod", "nods")
|
||||
message = "<B>[src]</B> nods."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> nods[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("blush", "blushes")
|
||||
@@ -473,7 +368,9 @@
|
||||
m_type = 1
|
||||
|
||||
if("wave", "waves")
|
||||
message = "<B>[src]</B> waves."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> waves[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("quiver", "quivers")
|
||||
@@ -509,56 +406,27 @@
|
||||
m_type = 2
|
||||
|
||||
if("glare", "glares")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> glares at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> glares."
|
||||
message = "<B>[src]</B> glares[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("stare", "stares")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> stares at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> stares."
|
||||
message = "<B>[src]</B> stares[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("look", "looks")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(!M)
|
||||
param = null
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> looks at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> looks."
|
||||
message = "<B>[src]</B> looks[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("grin", "grins")
|
||||
message = "<B>[src]</B> grins."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> grins[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("cry", "cries")
|
||||
@@ -574,24 +442,26 @@
|
||||
m_type = 2
|
||||
|
||||
if("sigh", "sighs")
|
||||
var/M = handle_emote_param(param)
|
||||
if(miming)
|
||||
message = "<B>[src]</B> sighs."
|
||||
message = "<B>[src]</B> sighs[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
else
|
||||
if(!muzzled)
|
||||
message = "<B>[src]</B> sighs."
|
||||
message = "<B>[src]</B> sighs[M ? " at [M]" : ""]."
|
||||
m_type = 2
|
||||
else
|
||||
message = "<B>[src]</B> makes a weak noise."
|
||||
message = "<B>[src]</B> makes a weak noise"
|
||||
m_type = 2
|
||||
|
||||
if("laugh", "laughs")
|
||||
var/M = handle_emote_param(param)
|
||||
if(miming)
|
||||
message = "<B>[src]</B> acts out a laugh."
|
||||
message = "<B>[src]</B> acts out a laugh[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
else
|
||||
if(!muzzled)
|
||||
message = "<B>[src]</B> laughs."
|
||||
message = "<B>[src]</B> laughs[M ? " at [M]" : ""]."
|
||||
m_type = 2
|
||||
else
|
||||
message = "<B>[src]</B> makes a noise."
|
||||
@@ -604,11 +474,12 @@
|
||||
m_type = 1
|
||||
|
||||
if("grumble", "grumbles")
|
||||
var/M = handle_emote_param(param)
|
||||
if(miming)
|
||||
message = "<B>[src]</B> grumbles!"
|
||||
message = "<B>[src]</B> grumbles[M ? " at [M]" : ""]!"
|
||||
m_type = 1
|
||||
if(!muzzled)
|
||||
message = "<B>[src]</B> grumbles!"
|
||||
message = "<B>[src]</B> grumbles[M ? " at [M]" : ""]!"
|
||||
m_type = 2
|
||||
else
|
||||
message = "<B>[src]</B> makes a noise."
|
||||
@@ -669,7 +540,9 @@
|
||||
m_type = 1
|
||||
|
||||
if("shake", "shakes")
|
||||
message = "<B>[src]</B> shakes \his head."
|
||||
var/M = handle_emote_param(param, 1) //Check to see if the param is valid (mob with the param name is in view) but exclude ourselves.
|
||||
|
||||
message = "<B>[src]</B> shakes \his head[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("shrug", "shrugs")
|
||||
@@ -687,7 +560,9 @@
|
||||
m_type = 1
|
||||
|
||||
if("smile", "smiles")
|
||||
message = "<B>[src]</B> smiles."
|
||||
var/M = handle_emote_param(param, 1)
|
||||
|
||||
message = "<B>[src]</B> smiles[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("shiver", "shivers")
|
||||
@@ -751,7 +626,9 @@
|
||||
m_type = 2
|
||||
|
||||
if("wink", "winks")
|
||||
message = "<B>[src]</B> winks."
|
||||
var/M = handle_emote_param(param, 1)
|
||||
|
||||
message = "<B>[src]</B> winks[M ? " at [M]" : ""]."
|
||||
m_type = 1
|
||||
|
||||
if("yawn", "yawns")
|
||||
@@ -771,14 +648,7 @@
|
||||
if("hug", "hugs")
|
||||
m_type = 1
|
||||
if(!restrained())
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(1, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(M == src)
|
||||
M = null
|
||||
var/M = handle_emote_param(param, 1, 1) //Check to see if the param is valid (mob with the param name is in view) but exclude ourselves and only check mobs in our immediate vicinity (1 tile distance).
|
||||
|
||||
if(M)
|
||||
message = "<B>[src]</B> hugs [M]."
|
||||
@@ -788,14 +658,7 @@
|
||||
if("handshake")
|
||||
m_type = 1
|
||||
if(!restrained() && !r_hand)
|
||||
var/mob/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(1, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(M == src)
|
||||
M = null
|
||||
var/mob/M = handle_emote_param(param, 1, 1, 1) //Check to see if the param is valid (mob with the param name is in view) but exclude ourselves, only check mobs in our immediate vicinity (1 tile distance) and return the whole mob instead of just its name.
|
||||
|
||||
if(M)
|
||||
if(M.canmove && !M.r_hand && !M.restrained())
|
||||
@@ -806,12 +669,8 @@
|
||||
if("dap", "daps")
|
||||
m_type = 1
|
||||
if(!restrained())
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(1, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
var/M = handle_emote_param(param, null, 1)
|
||||
|
||||
if(M)
|
||||
message = "<B>[src]</B> gives daps to [M]."
|
||||
else
|
||||
@@ -820,27 +679,23 @@
|
||||
if("slap", "slaps")
|
||||
m_type = 1
|
||||
if(!restrained())
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(1, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
var/M = handle_emote_param(param, null, 1)
|
||||
|
||||
if(M)
|
||||
message = "<span class='danger'>[src] slaps [M] across the face. Ouch!</span>"
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
else
|
||||
message = "<span class='danger'>[src] slaps \himself!</span>"
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
adjustFireLoss(4)
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
|
||||
if("scream", "screams")
|
||||
var/M = handle_emote_param(param)
|
||||
if(miming)
|
||||
message = "<B>[src]</B> acts out a scream!"
|
||||
message = "<B>[src]</B> acts out a scream[M ? " at [M]" : ""]!"
|
||||
m_type = 1
|
||||
else
|
||||
if(!muzzled)
|
||||
message = "<B>[src]</B> [species.scream_verb]!"
|
||||
message = "<B>[src]</B> [species.scream_verb][M ? " at [M]" : ""]!"
|
||||
m_type = 2
|
||||
if(gender == FEMALE)
|
||||
playsound(loc, "[species.female_scream_sound]", 80, 1, 0, pitch = get_age_pitch())
|
||||
@@ -848,10 +703,9 @@
|
||||
playsound(loc, "[species.male_scream_sound]", 80, 1, 0, pitch = get_age_pitch()) //default to male screams if no gender is present.
|
||||
|
||||
else
|
||||
message = "<B>[src]</B> makes a very loud noise."
|
||||
message = "<B>[src]</B> makes a very loud noise[M ? " at [M]" : ""]."
|
||||
m_type = 2
|
||||
|
||||
|
||||
if("snap", "snaps")
|
||||
if(prob(95))
|
||||
m_type = 2
|
||||
@@ -869,13 +723,14 @@
|
||||
to_chat(usr, "You need at least one hand in good working order to snap your fingers.")
|
||||
return
|
||||
|
||||
message = "<b>[src]</b> snaps \his fingers."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<b>[src]</b> snaps \his fingers[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/effects/fingersnap.ogg', 50, 1, -3)
|
||||
else
|
||||
message = "<span class='danger'><b>[src]</b> snaps \his fingers right off!</span>"
|
||||
playsound(loc, 'sound/effects/snap.ogg', 50, 1)
|
||||
|
||||
|
||||
// Needed for M_TOXIC_FART
|
||||
if("fart", "farts")
|
||||
if(reagents.has_reagent("simethicone"))
|
||||
@@ -926,11 +781,7 @@
|
||||
else
|
||||
to_chat(src, "<span class='notice'>Unusable emote '[act]'. Say *help for a list.</span>")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(message) //Humans are special fucking snowflakes and have 735 lines of emotes, they get to handle their own emotes, not call the parent
|
||||
if(message) //Humans are special fucking snowflakes and have 800 lines of emotes, they get to handle their own emotes, not call the parent.
|
||||
log_emote("[name]/[key] : [message]")
|
||||
|
||||
//Hearing gasp and such every five seconds is not good emotes were not global for a reason.
|
||||
|
||||
@@ -14,15 +14,19 @@
|
||||
assign_genes(H)
|
||||
assign_spells(H)
|
||||
equip(H)
|
||||
fixflags(H)
|
||||
assign_id(H)
|
||||
|
||||
/datum/superheroes/proc/equip(var/mob/living/carbon/human/H)
|
||||
H.rename_character(H.real_name, name)
|
||||
for(var/obj/item/W in H)
|
||||
if(istype(W,/obj/item/organ)) continue
|
||||
for(var/obj/item/W in H.get_all_slots())
|
||||
H.unEquip(W)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_l_ear)
|
||||
|
||||
/datum/superheroes/proc/fixflags(var/mob/living/carbon/human/H)
|
||||
for(var/obj/item/W in H.get_all_slots())
|
||||
W.flags |= NODROP
|
||||
|
||||
/datum/superheroes/proc/assign_genes(var/mob/living/carbon/human/H)
|
||||
if(default_genes.len)
|
||||
for(var/gene in default_genes)
|
||||
@@ -42,14 +46,17 @@
|
||||
W.registered_name = H.real_name
|
||||
W.access = list(access_maint_tunnels)
|
||||
if(class == "Superhero")
|
||||
W.name = "[H.real_name]'s ID Card (Superhero)"
|
||||
W.assignment = "Superhero"
|
||||
W.rank = "Superhero"
|
||||
ticker.mode.superheroes += H.mind
|
||||
else if(class == "Supervillain")
|
||||
W.name = "[H.real_name]'s ID Card (Supervillain)"
|
||||
W.assignment = "Supervillain"
|
||||
W.rank = "Supervillain"
|
||||
ticker.mode.supervillains += H.mind
|
||||
|
||||
W.icon_state = "lifetimeid"
|
||||
W.SetOwnerInfo(H)
|
||||
W.UpdateName()
|
||||
W.flags |= NODROP
|
||||
H.equip_to_slot_or_del(W, slot_wear_id)
|
||||
H.regenerate_icons()
|
||||
|
||||
@@ -66,8 +73,8 @@
|
||||
..()
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/owl/super_hero(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings/super_hero(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/owl(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/owl_mask/super_hero(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/bluespace/owlman(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/night(H), slot_glasses)
|
||||
@@ -84,15 +91,13 @@
|
||||
/datum/superheroes/griffin/equip(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/griffin/super_hero(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/griffin/super_hero(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings/griffinwings/super_hero(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/griffin/super_hero(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/griffin(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/griffin(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/owlwings/griffinwings(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/griffin/(H), slot_head)
|
||||
|
||||
var/obj/item/weapon/implant/freedom/L = new/obj/item/weapon/implant/freedom(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
return 1
|
||||
L.implant(H, H)
|
||||
|
||||
|
||||
/datum/superheroes/lightnian
|
||||
@@ -217,18 +222,20 @@
|
||||
target.s_tone = 35
|
||||
// No `update_dna=0` here because the character is being over-written
|
||||
target.change_eye_color(1,1,1)
|
||||
for(var/obj/item/W in target)
|
||||
if(istype(W,/obj/item/organ)) continue
|
||||
for(var/obj/item/W in target.get_all_slots())
|
||||
target.unEquip(W)
|
||||
target.rename_character(target.real_name, "Generic Henchman ([rand(1, 1000)])")
|
||||
target.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey/greytide(target), slot_w_uniform)
|
||||
target.equip_to_slot_or_del(new /obj/item/clothing/shoes/black/greytide(target), slot_shoes)
|
||||
target.equip_to_slot_or_del(new /obj/item/weapon/storage/toolbox/mechanical/greytide(target), slot_l_hand)
|
||||
var/obj/item/weapon/card/id/syndicate/W = new(target)
|
||||
W.registered_name = target.real_name
|
||||
W.access = list(access_maint_tunnels)
|
||||
W.name = "[target.real_name]'s ID Card (Greyshirt)"
|
||||
W.assignment = "Greyshirt"
|
||||
target.equip_to_slot_or_del(W, slot_wear_id)
|
||||
target.equip_to_slot_or_del(new /obj/item/device/radio/headset(target), slot_l_ear)
|
||||
var/obj/item/weapon/card/id/syndicate/W = new(target)
|
||||
W.icon_state = "lifetimeid"
|
||||
W.access = list(access_maint_tunnels)
|
||||
W.assignment = "Greyshirt"
|
||||
W.rank = "Greyshirt"
|
||||
W.flags |= NODROP
|
||||
W.SetOwnerInfo(target)
|
||||
W.UpdateName()
|
||||
target.equip_to_slot_or_del(W, slot_wear_id)
|
||||
target.regenerate_icons()
|
||||
|
||||
@@ -26,97 +26,51 @@
|
||||
|
||||
switch(act)
|
||||
if("ping","pings")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> pings at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> pings."
|
||||
message = "<B>[src]</B> pings[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("buzz","buzzs","buzzes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> buzzes at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> buzzes."
|
||||
message = "<B>[src]</B> buzzes[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("beep","beeps")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> beeps at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> beeps."
|
||||
message = "<B>[src]</B> beeps[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("yes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> emits an affirmative blip at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> emits an affirmative blip."
|
||||
message = "<B>[src]</B> emits an affirmative blip[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/synth_yes.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("no")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> emits a negative blip at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> emits a negative blip."
|
||||
message = "<B>[src]</B> emits a negative blip[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/synth_no.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("scream", "screams")
|
||||
message = "<B>[src]</B> screams!"
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> screams[M ? " at [M]" : ""]!"
|
||||
playsound(src.loc, 'sound/goonstation/voice/robot_scream.ogg', 80, 0)
|
||||
m_type = 2
|
||||
|
||||
if("buzz2")
|
||||
message = "<B>[src]</B> emits an irritated buzzing sound."
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> emits an irritated buzzing sound[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
@@ -124,4 +78,4 @@
|
||||
if("help")
|
||||
to_chat(src, "yes, no, beep, ping, buzz, scream, buzz2")
|
||||
|
||||
..(act, m_type, message)
|
||||
..(act, m_type, message)
|
||||
|
||||
@@ -28,92 +28,44 @@
|
||||
|
||||
switch(act)
|
||||
if("ping")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> pings at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> pings."
|
||||
message = "<B>[src]</B> pings[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("buzz")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> buzzes at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> buzzes."
|
||||
message = "<B>[src]</B> buzzes[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("beep")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> beeps at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> beeps."
|
||||
message = "<B>[src]</B> beeps[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("yes")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> emits an affirmative blip at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> emits an affirmative blip."
|
||||
message = "<B>[src]</B> emits an affirmative blip[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/synth_yes.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("no")
|
||||
var/M = null
|
||||
if(param)
|
||||
for(var/mob/A in view(null, null))
|
||||
if(param == A.name)
|
||||
M = A
|
||||
break
|
||||
if(!M)
|
||||
param = null
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
if(param)
|
||||
message = "<B>[src]</B> emits a negative blip at [param]."
|
||||
else
|
||||
message = "<B>[src]</B> emits a negative blip."
|
||||
message = "<B>[src]</B> emits an negative blip[M ? " at [M]" : ""]."
|
||||
playsound(src.loc, 'sound/machines/synth_no.ogg', 50, 0)
|
||||
m_type = 2
|
||||
|
||||
if("scream", "screams")
|
||||
message = "<B>[src]</B> screams!"
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> screams[M ? " at [M]" : ""]!"
|
||||
playsound(src.loc, 'sound/goonstation/voice/robot_scream.ogg', 80, 0)
|
||||
m_type = 2
|
||||
|
||||
|
||||
@@ -287,15 +287,6 @@
|
||||
C.adjustPlasma(20)
|
||||
..()
|
||||
|
||||
/datum/reagent/plasma_dust/reaction_obj(obj/O, volume)
|
||||
if((!O) || (!volume))
|
||||
return 0
|
||||
O.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C, volume)
|
||||
|
||||
/datum/reagent/plasma_dust/reaction_turf(turf/simulated/T, volume)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C, volume)
|
||||
|
||||
/datum/reagent/plasma_dust/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma dust is stronger than fuel!
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 5)
|
||||
|
||||
@@ -96,6 +96,13 @@
|
||||
/datum/space_chunk/proc/return_turfs()
|
||||
return
|
||||
|
||||
/datum/space_chunk/proc/search_chunk(object_list)
|
||||
var/list/located = list()
|
||||
for(var/atom/object in object_list)
|
||||
if(((object.x >= x) && (object.x <= (x + width))) && ((object.y >= y) && (object.y <= (y + height))) && (object.z == zpos))
|
||||
located.Add(object)
|
||||
return located
|
||||
|
||||
#undef BOTTOM_LEFT_CHUNK
|
||||
#undef BOTTOM_RIGHT_CHUNK
|
||||
#undef TOP_LEFT_CHUNK
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
//Control file with the backbone for the vr rooms and avatars
|
||||
|
||||
var/datum/vr_rooms = list()
|
||||
var/roomcap = 20
|
||||
|
||||
/datum/vr_room
|
||||
var/name = null
|
||||
var/datum/map_template/vr/template = null
|
||||
var/datum/space_chunk/chunk = null
|
||||
var/list/spawn_points = list()
|
||||
var/expires = 1
|
||||
|
||||
proc/make_vr_room(name, template, expires)
|
||||
var/datum/vr_room/R = new
|
||||
R.name = name
|
||||
R.template = template
|
||||
R.template = vr_templates[R.template]
|
||||
R.chunk = space_manager.allocate_space(R.template.width, R.template.height)
|
||||
R.expires = expires
|
||||
vr_rooms[R.name] = R
|
||||
R.template.load(locate(R.chunk.x,R.chunk.y,R.chunk.zpos), centered = FALSE)
|
||||
|
||||
for(var/atom/landmark in R.chunk.search_chunk(landmarks_list))
|
||||
if(landmark.name == "avatarspawn")
|
||||
R.spawn_points.Add(landmark)
|
||||
|
||||
//Control code for the avatars
|
||||
proc/build_virtual_avatar(mob/living/carbon/human/H, location, datum/map_template/vr/level/template)
|
||||
if(!location)
|
||||
return
|
||||
var/mob/living/carbon/human/virtual_reality/vr_avatar
|
||||
location = get_turf(location)
|
||||
vr_avatar = new /mob/living/carbon/human/virtual_reality(location)
|
||||
vr_avatar.set_species(H.species.name)
|
||||
if(istype(H, /mob/living/carbon/human/virtual_reality))
|
||||
var/mob/living/carbon/human/virtual_reality/V = H
|
||||
vr_avatar.real_me = V.real_me
|
||||
else
|
||||
vr_avatar.real_me = H
|
||||
vr_avatar.dna = H.dna.Clone()
|
||||
vr_avatar.name = H.name
|
||||
vr_avatar.real_name = H.real_name
|
||||
vr_avatar.undershirt = H.undershirt
|
||||
vr_avatar.underwear = H.underwear
|
||||
vr_avatar.UpdateAppearance()
|
||||
vr_avatar.equipOutfit(template.outfit)
|
||||
return vr_avatar
|
||||
|
||||
proc/control_remote(mob/living/carbon/human/H, mob/living/carbon/human/virtual_reality/vr_avatar)
|
||||
if(H.mind)
|
||||
H.mind.transfer_to(vr_avatar)
|
||||
|
||||
proc/spawn_vr_avatar(mob/living/carbon/human/H, datum/vr_room/room)
|
||||
room = vr_rooms[room]
|
||||
var/mob/living/carbon/human/virtual_reality/vr_human
|
||||
vr_human = build_virtual_avatar(H, pick(room.spawn_points), room.template)
|
||||
control_remote(H, vr_human)
|
||||
return vr_human
|
||||
|
||||
//Preloaded rooms
|
||||
/hook/roundstart/proc/starting_levels()
|
||||
make_vr_room("Lobby", "lobby", 0)
|
||||
return 1
|
||||
@@ -0,0 +1,15 @@
|
||||
//place all the outfits for your levels in here.
|
||||
|
||||
/datum/outfit/vr/vr_basic
|
||||
name = "basic vr"
|
||||
uniform = /obj/item/clothing/under/psysuit
|
||||
shoes = /obj/item/clothing/shoes/black
|
||||
|
||||
/datum/outfit/vr/roman
|
||||
name = "roman"
|
||||
uniform = /obj/item/clothing/under/roman
|
||||
shoes = /obj/item/clothing/shoes/roman
|
||||
l_hand = /obj/item/weapon/shield/riot/roman
|
||||
r_hand = /obj/item/weapon/twohanded/spear
|
||||
head = /obj/item/clothing/head/helmet/roman
|
||||
back = /obj/item/weapon/twohanded/spear
|
||||
Reference in New Issue
Block a user