mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +00:00
Merge
This commit is contained in:
@@ -26,7 +26,6 @@
|
|||||||
G.assailant = src
|
G.assailant = src
|
||||||
G.layer = 20
|
G.layer = 20
|
||||||
G.affecting = target
|
G.affecting = target
|
||||||
target.grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
target.LAssailant = src
|
target.LAssailant = src
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,6 @@
|
|||||||
M.r_hand = G
|
M.r_hand = G
|
||||||
G.layer = 20
|
G.layer = 20
|
||||||
G.affecting = src
|
G.affecting = src
|
||||||
grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
|
|
||||||
LAssailant = M
|
LAssailant = M
|
||||||
@@ -150,7 +149,6 @@
|
|||||||
M.r_hand = G
|
M.r_hand = G
|
||||||
G.layer = 20
|
G.layer = 20
|
||||||
G.affecting = src
|
G.affecting = src
|
||||||
grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
|
|
||||||
LAssailant = M
|
LAssailant = M
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
if(!resolved && A && W)
|
if(!resolved && A && W)
|
||||||
W.afterattack(A,src,1,params) // 1 indicates adjacency
|
W.afterattack(A,src,1,params) // 1 indicates adjacency
|
||||||
else
|
else
|
||||||
UnarmedAttack(A)
|
UnarmedAttack(A, 1)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!isturf(loc)) // This is going to stop you from telekinesing from inside a closet, but I don't shed many tears for that
|
if(!isturf(loc)) // This is going to stop you from telekinesing from inside a closet, but I don't shed many tears for that
|
||||||
|
|||||||
@@ -121,9 +121,6 @@ datum/controller/game_controller/proc/setup_objects()
|
|||||||
//Set up spawn points.
|
//Set up spawn points.
|
||||||
populate_spawn_points()
|
populate_spawn_points()
|
||||||
|
|
||||||
//Set up gear list.
|
|
||||||
populate_gear_list()
|
|
||||||
|
|
||||||
//Set up roundstart seed list.
|
//Set up roundstart seed list.
|
||||||
populate_seed_list()
|
populate_seed_list()
|
||||||
|
|
||||||
|
|||||||
@@ -23,9 +23,6 @@
|
|||||||
src.cure()
|
src.cure()
|
||||||
|
|
||||||
if(stage == 1)
|
if(stage == 1)
|
||||||
if(affected_mob.op_stage.appendix == 2.0)
|
|
||||||
// appendix is removed, can't get infected again
|
|
||||||
src.cure()
|
|
||||||
if(prob(5))
|
if(prob(5))
|
||||||
affected_mob << "\red You feel a stinging pain in your abdomen!"
|
affected_mob << "\red You feel a stinging pain in your abdomen!"
|
||||||
affected_mob.emote("me",1,"winces slightly.")
|
affected_mob.emote("me",1,"winces slightly.")
|
||||||
@@ -48,7 +45,6 @@
|
|||||||
var/mob/living/carbon/human/H = affected_mob
|
var/mob/living/carbon/human/H = affected_mob
|
||||||
H << "\red Your abdomen is a world of pain!"
|
H << "\red Your abdomen is a world of pain!"
|
||||||
H.Weaken(10)
|
H.Weaken(10)
|
||||||
H.op_stage.appendix = 2.0
|
|
||||||
|
|
||||||
var/datum/organ/external/groin = H.get_organ("groin")
|
var/datum/organ/external/groin = H.get_organ("groin")
|
||||||
var/datum/wound/W = new /datum/wound/internal_bleeding(20)
|
var/datum/wound/W = new /datum/wound/internal_bleeding(20)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/var/datum/announcement/priority/priority_announcement = new(do_log = 0)
|
/var/datum/announcement/priority/priority_announcement = new(do_log = 0)
|
||||||
/var/datum/announcement/priority/command/command_announcement = new(do_log = 0, do_newscast = 1)
|
/var/datum/announcement/priority/command/command_announcement = new(do_log = 0, do_newscast = 1)
|
||||||
/var/datum/announcement/priority/security/security_announcement = new(do_log = 0, do_newscast = 1)
|
|
||||||
|
|
||||||
/datum/announcement
|
/datum/announcement
|
||||||
var/title = "Attention"
|
var/title = "Attention"
|
||||||
@@ -16,17 +15,17 @@
|
|||||||
log = do_log
|
log = do_log
|
||||||
newscast = do_newscast
|
newscast = do_newscast
|
||||||
|
|
||||||
/datum/announcement/priority/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'), var/do_newscast = 0)
|
/datum/announcement/priority/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
|
||||||
..(do_log, new_sound, do_newscast)
|
..(do_log, new_sound, do_newscast)
|
||||||
title = "Priority Announcement"
|
title = "Priority Announcement"
|
||||||
announcement_type = "Priority Announcement"
|
announcement_type = "Priority Announcement"
|
||||||
|
|
||||||
/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'), var/do_newscast = 0)
|
/datum/announcement/priority/command/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
|
||||||
..(do_log, new_sound, do_newscast)
|
..(do_log, new_sound, do_newscast)
|
||||||
title = "[command_name()] Update"
|
title = "[command_name()] Update"
|
||||||
announcement_type = "[command_name()] Update"
|
announcement_type = "[command_name()] Update"
|
||||||
|
|
||||||
/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = sound('sound/items/AirHorn.ogg'), var/do_newscast = 0)
|
/datum/announcement/priority/security/New(var/do_log = 1, var/new_sound = sound('sound/misc/notice2.ogg'), var/do_newscast = 0)
|
||||||
..(do_log, new_sound, do_newscast)
|
..(do_log, new_sound, do_newscast)
|
||||||
title = "Security Announcement"
|
title = "Security Announcement"
|
||||||
announcement_type = "Security Announcement"
|
announcement_type = "Security Announcement"
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
M.mutations.Add(mutation)
|
M.mutations.Add(mutation)
|
||||||
if(disability)
|
if(disability)
|
||||||
M.disabilities|=disability
|
M.disabilities|=disability
|
||||||
if(mutation)
|
if(sdisability)
|
||||||
M.sdisabilities|=sdisability
|
M.sdisabilities|=sdisability
|
||||||
if(activation_message)
|
if(activation_message)
|
||||||
M << "\red [activation_message]"
|
M << "\red [activation_message]"
|
||||||
@@ -43,9 +43,9 @@
|
|||||||
if(mutation && (mutation in M.mutations))
|
if(mutation && (mutation in M.mutations))
|
||||||
M.mutations.Remove(mutation)
|
M.mutations.Remove(mutation)
|
||||||
if(disability)
|
if(disability)
|
||||||
M.disabilities-=disability
|
M.disabilities &= (~disability)
|
||||||
if(mutation)
|
if(sdisability)
|
||||||
M.sdisabilities-=sdisability
|
M.sdisabilities &= (~sdisability)
|
||||||
if(deactivation_message)
|
if(deactivation_message)
|
||||||
M << "\red [deactivation_message]"
|
M << "\red [deactivation_message]"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -415,7 +415,7 @@ As such, it's hard-coded for now. No reason for it not to be, really.
|
|||||||
if(13)
|
if(13)
|
||||||
directive += "Some disgruntled NanoTrasen employees have been supportive of our operations. Be wary of any mistreatment by command staff."
|
directive += "Some disgruntled NanoTrasen employees have been supportive of our operations. Be wary of any mistreatment by command staff."
|
||||||
if(14)
|
if(14)
|
||||||
var/xenorace = pick("Unathi","Tajaran", "Skrellian")
|
var/xenorace = pick("Unathi","Tajara", "Skrell")
|
||||||
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
|
directive += "A group of [xenorace] radicals have been loyal supporters of the Spider Clan. Favor [xenorace] crew whenever possible."
|
||||||
if(15)
|
if(15)
|
||||||
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false."
|
directive += "The Spider Clan has recently been accused of religious insensitivity. Attempt to speak with the Chaplain and prove these accusations false."
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ datum/directive/terminations/alien_fraud
|
|||||||
|
|
||||||
proc/is_alien(mob/M)
|
proc/is_alien(mob/M)
|
||||||
var/species = M.get_species()
|
var/species = M.get_species()
|
||||||
return species == "Tajaran" || species == "Unathi"
|
return species == "Tajara" || species == "Unathi"
|
||||||
|
|
||||||
datum/directive/terminations/alien_fraud/get_crew_to_terminate()
|
datum/directive/terminations/alien_fraud/get_crew_to_terminate()
|
||||||
var/list/aliens[0]
|
var/list/aliens[0]
|
||||||
@@ -30,7 +30,7 @@ datum/directive/terminations/alien_fraud/meets_prerequisites()
|
|||||||
var/unathi = 0
|
var/unathi = 0
|
||||||
for(var/mob/M in player_list)
|
for(var/mob/M in player_list)
|
||||||
var/species = M.get_species()
|
var/species = M.get_species()
|
||||||
if(species == "Tajaran")
|
if(species == "Tajara")
|
||||||
tajarans++
|
tajarans++
|
||||||
if(species == "Unathi")
|
if(species == "Unathi")
|
||||||
unathi++
|
unathi++
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ datum/directive/tau_ceti_needs_women
|
|||||||
var/list/aliens[0]
|
var/list/aliens[0]
|
||||||
for(var/mob/M in get_crew_of_target_gender())
|
for(var/mob/M in get_crew_of_target_gender())
|
||||||
var/species = M.get_species()
|
var/species = M.get_species()
|
||||||
if(species == "Tajaran" || species == "Unathi" || species == "Skrell")
|
if(species == "Tajara" || species == "Unathi" || species == "Skrell")
|
||||||
aliens.Add(M)
|
aliens.Add(M)
|
||||||
return aliens
|
return aliens
|
||||||
|
|
||||||
|
|||||||
@@ -232,8 +232,8 @@ var/global/list/turf/synd_spawn = list()
|
|||||||
switch(race)
|
switch(race)
|
||||||
if("Unathi")
|
if("Unathi")
|
||||||
new_suit.species_restricted = list("Unathi")
|
new_suit.species_restricted = list("Unathi")
|
||||||
if("Tajaran")
|
if("Tajara")
|
||||||
new_suit.species_restricted = list("Tajaran")
|
new_suit.species_restricted = list("Tajara")
|
||||||
if("Skrell")
|
if("Skrell")
|
||||||
new_suit.species_restricted = list("Skrell")
|
new_suit.species_restricted = list("Skrell")
|
||||||
|
|
||||||
|
|||||||
@@ -480,7 +480,7 @@ var/global/datum/controller/occupations/job_master
|
|||||||
|
|
||||||
//TODO: Generalize this by-species
|
//TODO: Generalize this by-species
|
||||||
if(H.species)
|
if(H.species)
|
||||||
if(H.species.name == "Tajaran" || H.species.name == "Unathi")
|
if(H.species.name == "Tajara" || H.species.name == "Unathi")
|
||||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes,1)
|
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes,1)
|
||||||
else if(H.species.name == "Vox")
|
else if(H.species.name == "Vox")
|
||||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
|
H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ var/list/whitelist = list()
|
|||||||
return 1
|
return 1
|
||||||
if(findtext(s,"[M.ckey] - All"))
|
if(findtext(s,"[M.ckey] - All"))
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
#undef WHITELISTFILE
|
#undef WHITELISTFILE
|
||||||
|
|||||||
@@ -311,6 +311,9 @@
|
|||||||
M:reagents.add_reagent("inaprovaline", 5)
|
M:reagents.add_reagent("inaprovaline", 5)
|
||||||
return
|
return
|
||||||
proc/toggle_filter()
|
proc/toggle_filter()
|
||||||
|
if(!src.occupant)
|
||||||
|
filtering = 0
|
||||||
|
return
|
||||||
if(filtering)
|
if(filtering)
|
||||||
filtering = 0
|
filtering = 0
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1310,6 +1310,11 @@ FIRE ALARM
|
|||||||
user.visible_message("\red [user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.")
|
user.visible_message("\red [user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.")
|
||||||
else
|
else
|
||||||
user.visible_message("\red [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.")
|
user.visible_message("\red [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.")
|
||||||
|
else if (istype(W, /obj/item/weapon/wirecutters))
|
||||||
|
user.visible_message("\red [user] has cut the wires inside \the [src]!", "You have cut the wires inside \the [src].")
|
||||||
|
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
|
||||||
|
buildstage = 1
|
||||||
|
update_icon()
|
||||||
if(1)
|
if(1)
|
||||||
if(istype(W, /obj/item/stack/cable_coil))
|
if(istype(W, /obj/item/stack/cable_coil))
|
||||||
var/obj/item/stack/cable_coil/C = W
|
var/obj/item/stack/cable_coil/C = W
|
||||||
|
|||||||
@@ -5,6 +5,9 @@
|
|||||||
desc = "It's a machine that grows replacement organs."
|
desc = "It's a machine that grows replacement organs."
|
||||||
icon = 'icons/obj/surgery.dmi'
|
icon = 'icons/obj/surgery.dmi'
|
||||||
|
|
||||||
|
anchored = 1
|
||||||
|
density = 1
|
||||||
|
|
||||||
icon_state = "bioprinter"
|
icon_state = "bioprinter"
|
||||||
|
|
||||||
var/prints_prosthetics
|
var/prints_prosthetics
|
||||||
|
|||||||
@@ -11,24 +11,24 @@
|
|||||||
var/mode = 0.0
|
var/mode = 0.0
|
||||||
var/printing = null
|
var/printing = null
|
||||||
|
|
||||||
proc/is_centcom()
|
/obj/machinery/computer/card/proc/is_centcom()
|
||||||
return istype(src, /obj/machinery/computer/card/centcom)
|
return 0
|
||||||
|
|
||||||
proc/is_authenticated()
|
/obj/machinery/computer/card/proc/is_authenticated()
|
||||||
return scan ? check_access(scan) : 0
|
return scan ? check_access(scan) : 0
|
||||||
|
|
||||||
proc/get_target_rank()
|
/obj/machinery/computer/card/proc/get_target_rank()
|
||||||
return modify && modify.assignment ? modify.assignment : "Unassigned"
|
return modify && modify.assignment ? modify.assignment : "Unassigned"
|
||||||
|
|
||||||
proc/format_jobs(list/jobs)
|
/obj/machinery/computer/card/proc/format_jobs(list/jobs)
|
||||||
var/list/formatted = list()
|
var/list/formatted = list()
|
||||||
for(var/job in jobs)
|
for(var/job in jobs)
|
||||||
formatted.Add(list(list(
|
formatted.Add(list(list(
|
||||||
"display_name" = replacetext(job, " ", " "),
|
"display_name" = replacetext(job, " ", " "),
|
||||||
"target_rank" = get_target_rank(),
|
"target_rank" = get_target_rank(),
|
||||||
"job" = job)))
|
"job" = job)))
|
||||||
|
|
||||||
return formatted
|
return formatted
|
||||||
|
|
||||||
/obj/machinery/computer/card/verb/eject_id()
|
/obj/machinery/computer/card/verb/eject_id()
|
||||||
set category = "Object"
|
set category = "Object"
|
||||||
@@ -288,3 +288,7 @@
|
|||||||
name = "CentCom Identification Computer"
|
name = "CentCom Identification Computer"
|
||||||
circuit = "/obj/item/weapon/circuitboard/card/centcom"
|
circuit = "/obj/item/weapon/circuitboard/card/centcom"
|
||||||
req_access = list(access_cent_captain)
|
req_access = list(access_cent_captain)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/computer/card/centcom/is_centcom()
|
||||||
|
return 1
|
||||||
|
|||||||
@@ -602,7 +602,7 @@
|
|||||||
//Departments that the cycler can paint suits to look like.
|
//Departments that the cycler can paint suits to look like.
|
||||||
var/list/departments = list("Engineering","Mining","Medical","Security","Atmos")
|
var/list/departments = list("Engineering","Mining","Medical","Security","Atmos")
|
||||||
//Species that the suits can be configured to fit.
|
//Species that the suits can be configured to fit.
|
||||||
var/list/species = list("Human","Skrell","Unathi","Tajaran")
|
var/list/species = list("Human","Skrell","Unathi","Tajara")
|
||||||
|
|
||||||
var/target_department
|
var/target_department
|
||||||
var/target_species
|
var/target_species
|
||||||
@@ -622,35 +622,35 @@
|
|||||||
model_text = "Engineering"
|
model_text = "Engineering"
|
||||||
req_access = list(access_construction)
|
req_access = list(access_construction)
|
||||||
departments = list("Engineering","Atmos")
|
departments = list("Engineering","Atmos")
|
||||||
species = list("Human","Tajaran","Skrell","Unathi") //Add Unathi when sprites exist for their suits.
|
species = list("Human","Tajara","Skrell","Unathi") //Add Unathi when sprites exist for their suits.
|
||||||
|
|
||||||
/obj/machinery/suit_cycler/mining
|
/obj/machinery/suit_cycler/mining
|
||||||
name = "Mining suit cycler"
|
name = "Mining suit cycler"
|
||||||
model_text = "Mining"
|
model_text = "Mining"
|
||||||
req_access = list(access_mining)
|
req_access = list(access_mining)
|
||||||
departments = list("Mining")
|
departments = list("Mining")
|
||||||
species = list("Human","Tajaran","Skrell","Unathi")
|
species = list("Human","Tajara","Skrell","Unathi")
|
||||||
|
|
||||||
/obj/machinery/suit_cycler/security
|
/obj/machinery/suit_cycler/security
|
||||||
name = "Security suit cycler"
|
name = "Security suit cycler"
|
||||||
model_text = "Security"
|
model_text = "Security"
|
||||||
req_access = list(access_security)
|
req_access = list(access_security)
|
||||||
departments = list("Security")
|
departments = list("Security")
|
||||||
species = list("Human","Tajaran","Skrell","Unathi")
|
species = list("Human","Tajara","Skrell","Unathi")
|
||||||
|
|
||||||
/obj/machinery/suit_cycler/medical
|
/obj/machinery/suit_cycler/medical
|
||||||
name = "Medical suit cycler"
|
name = "Medical suit cycler"
|
||||||
model_text = "Medical"
|
model_text = "Medical"
|
||||||
req_access = list(access_medical)
|
req_access = list(access_medical)
|
||||||
departments = list("Medical")
|
departments = list("Medical")
|
||||||
species = list("Human","Tajaran","Skrell","Unathi")
|
species = list("Human","Tajara","Skrell","Unathi")
|
||||||
|
|
||||||
/obj/machinery/suit_cycler/syndicate
|
/obj/machinery/suit_cycler/syndicate
|
||||||
name = "Nonstandard suit cycler"
|
name = "Nonstandard suit cycler"
|
||||||
model_text = "Nonstandard"
|
model_text = "Nonstandard"
|
||||||
req_access = list(access_syndicate)
|
req_access = list(access_syndicate)
|
||||||
departments = list("Mercenary")
|
departments = list("Mercenary")
|
||||||
species = list("Human","Tajaran","Skrell","Unathi")
|
species = list("Human","Tajara","Skrell","Unathi")
|
||||||
can_repair = 1
|
can_repair = 1
|
||||||
|
|
||||||
/obj/machinery/suit_cycler/attack_ai(mob/user as mob)
|
/obj/machinery/suit_cycler/attack_ai(mob/user as mob)
|
||||||
|
|||||||
@@ -1136,16 +1136,13 @@
|
|||||||
M.verbs -= /obj/mecha/proc/move_inside_passenger
|
M.verbs -= /obj/mecha/proc/move_inside_passenger
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/passenger/get_equip_info()
|
/obj/item/mecha_parts/mecha_equipment/tool/passenger/get_equip_info()
|
||||||
var/output = ..()
|
return "[..()] <br />[occupant? "\[Occupant: [occupant]\]|" : ""]Exterior Hatch: <a href='?src=\ref[src];toggle_lock=1'>Toggle Lock</a>"
|
||||||
if(output)
|
|
||||||
var/temp = "<br />[occupant? "\[Occupant: [occupant]\]|" : ""]Exterior Hatch: <a href='?src=\ref[src];toggle_lock=1'>[door_locked? "Locked" : "Unlocked"]</a>"
|
|
||||||
return "[output] [temp]"
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/mecha_parts/mecha_equipment/tool/passenger/Topic(href,href_list)
|
/obj/item/mecha_parts/mecha_equipment/tool/passenger/Topic(href,href_list)
|
||||||
..()
|
..()
|
||||||
if (href_list["toggle_lock"])
|
if (href_list["toggle_lock"])
|
||||||
door_locked = !door_locked
|
door_locked = !door_locked
|
||||||
|
occupant_message("Passenger compartment hatch [door_locked? "locked" : "unlocked"].")
|
||||||
if (chassis)
|
if (chassis)
|
||||||
chassis.visible_message("The hatch on \the [chassis] [door_locked? "locks" : "unlocks"].", "You hear something latching.")
|
chassis.visible_message("The hatch on \the [chassis] [door_locked? "locks" : "unlocks"].", "You hear something latching.")
|
||||||
|
|
||||||
@@ -1200,6 +1197,4 @@
|
|||||||
if (OCCUPIED|LOCKED)
|
if (OCCUPIED|LOCKED)
|
||||||
usr << "\red All of the passenger compartments are already occupied or locked!"
|
usr << "\red All of the passenger compartments are already occupied or locked!"
|
||||||
if (0)
|
if (0)
|
||||||
usr << "\red \The [src] doesn't have a passenger compartment."
|
usr << "\red \The [src] doesn't have a passenger compartment."
|
||||||
|
|
||||||
/obj/mecha/proc/remove_passenger()
|
|
||||||
@@ -1575,14 +1575,19 @@
|
|||||||
|
|
||||||
var/pname = input(user, "Choose a passenger to forcibly remove.", "Forcibly Remove Passenger") as null|anything in passengers
|
var/pname = input(user, "Choose a passenger to forcibly remove.", "Forcibly Remove Passenger") as null|anything in passengers
|
||||||
|
|
||||||
if (pname)
|
if (!pname)
|
||||||
var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P = passengers[pname]
|
return
|
||||||
var/mob/occupant = P.occupant
|
|
||||||
|
|
||||||
visible_message("\red [user] opens the hatch on \the [P] and removes [occupant]!")
|
var/obj/item/mecha_parts/mecha_equipment/tool/passenger/P = passengers[pname]
|
||||||
P.go_out()
|
var/mob/occupant = P.occupant
|
||||||
P.log_message("[occupant] was removed.")
|
|
||||||
occupant_message("\red [occupant] was removed from \the [P] by [user]!")
|
user.visible_message("\red [user] begins opening the hatch on \the [P]...", "\red You begin opening the hatch on \the [P]...")
|
||||||
|
if (!do_after(user, 40, needhand=0))
|
||||||
|
return
|
||||||
|
|
||||||
|
user.visible_message("\red [user] opens the hatch on \the [P] and removes [occupant]!", "\red You open the hatch on \the [P] and remove [occupant]!")
|
||||||
|
P.go_out()
|
||||||
|
P.log_message("[occupant] was removed.")
|
||||||
return
|
return
|
||||||
if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card"))
|
if(href_list["add_req_access"] && add_req_access && filter.getObj("id_card"))
|
||||||
if(!in_range(src, usr)) return
|
if(!in_range(src, usr)) return
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
/* Species-specific sprites, concept stolen from Paradise//vg/.
|
/* Species-specific sprites, concept stolen from Paradise//vg/.
|
||||||
ex:
|
ex:
|
||||||
sprite_sheets = list(
|
sprite_sheets = list(
|
||||||
"Tajaran" = 'icons/cat/are/bad'
|
"Tajara" = 'icons/cat/are/bad'
|
||||||
)
|
)
|
||||||
If index term exists and icon_override is not set, this sprite sheet will be used.
|
If index term exists and icon_override is not set, this sprite sheet will be used.
|
||||||
*/
|
*/
|
||||||
@@ -261,6 +261,9 @@
|
|||||||
//START HUMAN
|
//START HUMAN
|
||||||
var/mob/living/carbon/human/H = M
|
var/mob/living/carbon/human/H = M
|
||||||
|
|
||||||
|
if(H.species && !(slot in H.species.hud.equip_slots))
|
||||||
|
return 0
|
||||||
|
|
||||||
switch(slot)
|
switch(slot)
|
||||||
if(slot_l_hand)
|
if(slot_l_hand)
|
||||||
if(H.l_hand)
|
if(H.l_hand)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
/obj/item/device/modkit/afterattack(obj/O, mob/user as mob, proximity)
|
/obj/item/device/modkit/afterattack(obj/O, mob/user as mob, proximity)
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
|
|
||||||
if (!target_species)
|
if (!target_species)
|
||||||
return //it shouldn't be null, okay?
|
return //it shouldn't be null, okay?
|
||||||
|
|
||||||
@@ -31,12 +31,12 @@
|
|||||||
for (var/permitted_type in permitted_types)
|
for (var/permitted_type in permitted_types)
|
||||||
if(istype(O, permitted_type))
|
if(istype(O, permitted_type))
|
||||||
allowed = 1
|
allowed = 1
|
||||||
|
|
||||||
var/obj/item/clothing/I = O
|
var/obj/item/clothing/I = O
|
||||||
if (!istype(I) || !allowed)
|
if (!istype(I) || !allowed)
|
||||||
user << "<span class='notice'>[src] is unable to modify that.</span>"
|
user << "<span class='notice'>[src] is unable to modify that.</span>"
|
||||||
return
|
return
|
||||||
|
|
||||||
var/excluding = ("exclude" in I.species_restricted)
|
var/excluding = ("exclude" in I.species_restricted)
|
||||||
var/in_list = (target_species in I.species_restricted)
|
var/in_list = (target_species in I.species_restricted)
|
||||||
if (excluding ^ in_list)
|
if (excluding ^ in_list)
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
parts &= ~MODKIT_HELMET
|
parts &= ~MODKIT_HELMET
|
||||||
if (istype(I, /obj/item/clothing/suit))
|
if (istype(I, /obj/item/clothing/suit))
|
||||||
parts &= ~MODKIT_SUIT
|
parts &= ~MODKIT_SUIT
|
||||||
|
|
||||||
if(!parts)
|
if(!parts)
|
||||||
user.drop_from_inventory(src)
|
user.drop_from_inventory(src)
|
||||||
del(src)
|
del(src)
|
||||||
@@ -69,4 +69,4 @@
|
|||||||
/obj/item/device/modkit/tajaran
|
/obj/item/device/modkit/tajaran
|
||||||
name = "tajaran hardsuit modification kit"
|
name = "tajaran hardsuit modification kit"
|
||||||
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajaran."
|
||||||
target_species = "Tajaran"
|
target_species = "Tajara"
|
||||||
@@ -14,7 +14,7 @@ var/global/vox_tick = 1
|
|||||||
if(1) // Vox raider!
|
if(1) // Vox raider!
|
||||||
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit)
|
equip_to_slot_or_del(new /obj/item/clothing/suit/space/vox/carapace(src), slot_wear_suit)
|
||||||
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head)
|
equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/vox/carapace(src), slot_head)
|
||||||
equip_to_slot_or_del(new /obj/item/weapon/melee/telebaton(src), slot_belt)
|
equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(src), slot_belt)
|
||||||
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE.
|
||||||
equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store)
|
equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store)
|
||||||
|
|
||||||
@@ -66,4 +66,4 @@ var/global/vox_tick = 1
|
|||||||
vox_tick++
|
vox_tick++
|
||||||
if (vox_tick > 4) vox_tick = 1
|
if (vox_tick > 4) vox_tick = 1
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -277,15 +277,15 @@ datum/preferences
|
|||||||
dat += "<br><b>Custom Loadout:</b> "
|
dat += "<br><b>Custom Loadout:</b> "
|
||||||
var/total_cost = 0
|
var/total_cost = 0
|
||||||
|
|
||||||
if(isnull(gear) || !islist(gear)) gear = list()
|
if(!islist(gear)) gear = list()
|
||||||
|
|
||||||
if(gear && gear.len)
|
if(gear && gear.len)
|
||||||
dat += "<br>"
|
dat += "<br>"
|
||||||
for(var/gear_name in gear)
|
for(var/i = 1; i <= gear.len; i++)
|
||||||
if(gear_datums[gear_name])
|
var/datum/gear/G = gear_datums[gear[i]]
|
||||||
var/datum/gear/G = gear_datums[gear_name]
|
if(G)
|
||||||
total_cost += G.cost
|
total_cost += G.cost
|
||||||
dat += "[gear_name] <a href='byond://?src=\ref[user];preference=loadout;task=remove;gear=[gear_name]'>\[remove\]</a><br>"
|
dat += "[gear[i]] ([G.cost] points) <a href='byond://?src=\ref[user];preference=loadout;task=remove;gear=[i]'>\[remove\]</a><br>"
|
||||||
|
|
||||||
dat += "<b>Used:</b> [total_cost] points."
|
dat += "<b>Used:</b> [total_cost] points."
|
||||||
else
|
else
|
||||||
@@ -294,7 +294,7 @@ datum/preferences
|
|||||||
if(total_cost < MAX_GEAR_COST)
|
if(total_cost < MAX_GEAR_COST)
|
||||||
dat += " <a href='byond://?src=\ref[user];preference=loadout;task=input'>\[add\]</a>"
|
dat += " <a href='byond://?src=\ref[user];preference=loadout;task=input'>\[add\]</a>"
|
||||||
if(gear && gear.len)
|
if(gear && gear.len)
|
||||||
dat += " <a href='byond://?src=\ref[user];preference=loadout;task=remove'>\[remove\]</a>"
|
dat += " <a href='byond://?src=\ref[user];preference=loadout;task=clear'>\[clear\]</a>"
|
||||||
|
|
||||||
dat += "<br><br><b>Occupation Choices</b><br>"
|
dat += "<br><br><b>Occupation Choices</b><br>"
|
||||||
dat += "\t<a href='?_src_=prefs;preference=job;task=menu'><b>Set Preferences</b></a><br>"
|
dat += "\t<a href='?_src_=prefs;preference=job;task=menu'><b>Set Preferences</b></a><br>"
|
||||||
@@ -882,17 +882,17 @@ datum/preferences
|
|||||||
total_cost += C.cost
|
total_cost += C.cost
|
||||||
if(C && total_cost <= MAX_GEAR_COST)
|
if(C && total_cost <= MAX_GEAR_COST)
|
||||||
gear += choice
|
gear += choice
|
||||||
user << "\blue Added [choice] for [C.cost] points ([MAX_GEAR_COST - total_cost] points remaining)."
|
user << "<span class='notice'>Added \the '[choice]' for [C.cost] points ([MAX_GEAR_COST - total_cost] points remaining).</span>"
|
||||||
else
|
else
|
||||||
user << "\red That item will exceed the maximum loadout cost of [MAX_GEAR_COST] points."
|
user << "<span class='warning'>Adding \the '[choice]' will exceed the maximum loadout cost of [MAX_GEAR_COST] points.</span>"
|
||||||
|
|
||||||
else if(href_list["task"] == "remove")
|
else if(href_list["task"] == "remove")
|
||||||
var/to_remove = href_list["gear"]
|
var/i_remove = text2num(href_list["gear"])
|
||||||
if(!to_remove) return
|
if(i_remove < 1 || i_remove > gear.len) return
|
||||||
for(var/gear_name in gear)
|
gear.Cut(i_remove, i_remove + 1)
|
||||||
if(gear_name == to_remove)
|
|
||||||
gear -= gear_name
|
else if(href_list["task"] == "clear")
|
||||||
break
|
gear.Cut()
|
||||||
|
|
||||||
else if(href_list["preference"] == "flavor_text")
|
else if(href_list["preference"] == "flavor_text")
|
||||||
switch(href_list["task"])
|
switch(href_list["task"])
|
||||||
@@ -1187,7 +1187,7 @@ datum/preferences
|
|||||||
b_type = new_b_type
|
b_type = new_b_type
|
||||||
|
|
||||||
if("hair")
|
if("hair")
|
||||||
if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell")
|
if(species == "Human" || species == "Unathi" || species == "Tajara" || species == "Skrell")
|
||||||
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null
|
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null
|
||||||
if(new_hair)
|
if(new_hair)
|
||||||
r_hair = hex2num(copytext(new_hair, 2, 4))
|
r_hair = hex2num(copytext(new_hair, 2, 4))
|
||||||
@@ -1267,7 +1267,7 @@ datum/preferences
|
|||||||
s_tone = 35 - max(min( round(new_s_tone), 220),1)
|
s_tone = 35 - max(min( round(new_s_tone), 220),1)
|
||||||
|
|
||||||
if("skin")
|
if("skin")
|
||||||
if(species == "Unathi" || species == "Tajaran" || species == "Skrell")
|
if(species == "Unathi" || species == "Tajara" || species == "Skrell")
|
||||||
var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference") as color|null
|
var/new_skin = input(user, "Choose your character's skin colour: ", "Character Preference") as color|null
|
||||||
if(new_skin)
|
if(new_skin)
|
||||||
r_skin = hex2num(copytext(new_skin, 2, 4))
|
r_skin = hex2num(copytext(new_skin, 2, 4))
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
var/global/list/gear_datums = list()
|
var/global/list/gear_datums = list()
|
||||||
|
|
||||||
proc/populate_gear_list()
|
/hook/startup/proc/populate_gear_list()
|
||||||
for(var/type in typesof(/datum/gear)-/datum/gear)
|
for(var/type in typesof(/datum/gear)-/datum/gear)
|
||||||
var/datum/gear/G = new type()
|
var/datum/gear/G = new type()
|
||||||
gear_datums[G.display_name] = G
|
gear_datums[G.display_name] = G
|
||||||
|
return 1
|
||||||
|
|
||||||
/datum/gear
|
/datum/gear
|
||||||
var/display_name //Name/index.
|
var/display_name //Name/index.
|
||||||
@@ -176,12 +177,14 @@ proc/populate_gear_list()
|
|||||||
cost = 2
|
cost = 2
|
||||||
slot = slot_head
|
slot = slot_head
|
||||||
|
|
||||||
|
// This was sprited and coded specifically for Zhan-Khazan characters. Before you
|
||||||
|
// decide that it's 'not even Taj themed' maybe you should read the wiki, gamer. ~ Z
|
||||||
/datum/gear/zhan_scarf
|
/datum/gear/zhan_scarf
|
||||||
display_name = "headscarf, white"
|
display_name = "Zhan headscarf"
|
||||||
path = /obj/item/clothing/head/tajaran/scarf
|
path = /obj/item/clothing/head/tajaran/scarf
|
||||||
cost = 2
|
cost = 2
|
||||||
slot = slot_head
|
slot = slot_head
|
||||||
// whitelisted = "Tajaran" // It's a headscarf. It isn't even a taj-themed headscarf!
|
whitelisted = "Tajara"
|
||||||
|
|
||||||
// Eyes
|
// Eyes
|
||||||
|
|
||||||
@@ -459,7 +462,7 @@ proc/populate_gear_list()
|
|||||||
path = /obj/item/clothing/suit/tajaran/furs
|
path = /obj/item/clothing/suit/tajaran/furs
|
||||||
cost = 3
|
cost = 3
|
||||||
slot = slot_wear_suit
|
slot = slot_wear_suit
|
||||||
whitelisted = "Tajaran" // You do have a monopoly on a fur suit tho
|
whitelisted = "Tajara" // You do have a monopoly on a fur suit tho
|
||||||
|
|
||||||
// Gloves
|
// Gloves
|
||||||
|
|
||||||
@@ -653,4 +656,4 @@ proc/populate_gear_list()
|
|||||||
/datum/gear/comb
|
/datum/gear/comb
|
||||||
display_name = "purple comb"
|
display_name = "purple comb"
|
||||||
path = /obj/item/weapon/fluff/cado_keppel_1
|
path = /obj/item/weapon/fluff/cado_keppel_1
|
||||||
cost = 2
|
cost = 2
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
//Set species_restricted list
|
//Set species_restricted list
|
||||||
switch(target_species)
|
switch(target_species)
|
||||||
if("Human", "Skrell") //humanoid bodytypes
|
if("Human", "Skrell") //humanoid bodytypes
|
||||||
species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox")
|
species_restricted = list("exclude","Unathi","Tajara","Diona","Vox")
|
||||||
else
|
else
|
||||||
species_restricted = list(target_species)
|
species_restricted = list(target_species)
|
||||||
|
|
||||||
@@ -63,9 +63,9 @@
|
|||||||
//Set species_restricted list
|
//Set species_restricted list
|
||||||
switch(target_species)
|
switch(target_species)
|
||||||
if("Skrell")
|
if("Skrell")
|
||||||
species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox")
|
species_restricted = list("exclude","Unathi","Tajara","Diona","Vox")
|
||||||
if("Human")
|
if("Human")
|
||||||
species_restricted = list("exclude","Skrell","Unathi","Tajaran","Diona","Vox")
|
species_restricted = list("exclude","Skrell","Unathi","Tajara","Diona","Vox")
|
||||||
else
|
else
|
||||||
species_restricted = list(target_species)
|
species_restricted = list(target_species)
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ BLIND // can't see anything
|
|||||||
body_parts_covered = HANDS
|
body_parts_covered = HANDS
|
||||||
slot_flags = SLOT_GLOVES
|
slot_flags = SLOT_GLOVES
|
||||||
attack_verb = list("challenged")
|
attack_verb = list("challenged")
|
||||||
species_restricted = list("exclude","Unathi","Tajaran")
|
species_restricted = list("exclude","Unathi","Tajara")
|
||||||
sprite_sheets = list("Vox" = 'icons/mob/species/vox/gloves.dmi')
|
sprite_sheets = list("Vox" = 'icons/mob/species/vox/gloves.dmi')
|
||||||
|
|
||||||
/obj/item/clothing/gloves/examine()
|
/obj/item/clothing/gloves/examine()
|
||||||
@@ -214,7 +214,7 @@ BLIND // can't see anything
|
|||||||
desc = "[desc]<br>They have had the fingertips cut off of them."
|
desc = "[desc]<br>They have had the fingertips cut off of them."
|
||||||
if("exclude" in species_restricted)
|
if("exclude" in species_restricted)
|
||||||
species_restricted -= "Unathi"
|
species_restricted -= "Unathi"
|
||||||
species_restricted -= "Tajaran"
|
species_restricted -= "Tajara"
|
||||||
return
|
return
|
||||||
|
|
||||||
//Head
|
//Head
|
||||||
@@ -248,7 +248,7 @@ BLIND // can't see anything
|
|||||||
|
|
||||||
permeability_coefficient = 0.50
|
permeability_coefficient = 0.50
|
||||||
slowdown = SHOES_SLOWDOWN
|
slowdown = SHOES_SLOWDOWN
|
||||||
species_restricted = list("exclude","Unathi","Tajaran")
|
species_restricted = list("exclude","Unathi","Tajara")
|
||||||
sprite_sheets = list("Vox" = 'icons/mob/species/vox/shoes.dmi')
|
sprite_sheets = list("Vox" = 'icons/mob/species/vox/shoes.dmi')
|
||||||
|
|
||||||
//Suit
|
//Suit
|
||||||
|
|||||||
@@ -3,29 +3,29 @@
|
|||||||
user << "<span class='notice'>That won't work.</span>" //i'm not putting my lips on that!
|
user << "<span class='notice'>That won't work.</span>" //i'm not putting my lips on that!
|
||||||
..()
|
..()
|
||||||
return
|
return
|
||||||
|
|
||||||
//add wires
|
//add wires
|
||||||
if(istype(W, /obj/item/stack/cable_coil))
|
if(istype(W, /obj/item/stack/cable_coil))
|
||||||
var/obj/item/stack/cable_coil/C = W
|
var/obj/item/stack/cable_coil/C = W
|
||||||
if (clipped)
|
if (clipped)
|
||||||
user << "<span class='notice'>The [src] are too badly mangled for wiring.</span>"
|
user << "<span class='notice'>The [src] are too badly mangled for wiring.</span>"
|
||||||
return
|
return
|
||||||
|
|
||||||
if(wired)
|
if(wired)
|
||||||
user << "<span class='notice'>The [src] are already wired.</span>"
|
user << "<span class='notice'>The [src] are already wired.</span>"
|
||||||
return
|
return
|
||||||
|
|
||||||
if(C.get_amount() < 2)
|
if(C.get_amount() < 2)
|
||||||
user << "<span class='notice'>There is not enough wire to cover the [src].</span>"
|
user << "<span class='notice'>There is not enough wire to cover the [src].</span>"
|
||||||
return
|
return
|
||||||
|
|
||||||
C.use(2)
|
C.use(2)
|
||||||
wired = 1
|
wired = 1
|
||||||
siemens_coefficient = 3.0
|
siemens_coefficient = 3.0
|
||||||
user << "<span class='notice'>You wrap some wires around the [src].</span>"
|
user << "<span class='notice'>You wrap some wires around the [src].</span>"
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
//add cell
|
//add cell
|
||||||
else if(istype(W, /obj/item/weapon/cell))
|
else if(istype(W, /obj/item/weapon/cell))
|
||||||
if(!wired)
|
if(!wired)
|
||||||
@@ -56,26 +56,26 @@
|
|||||||
user << "<span class='notice'>You cut the wires away from the [src].</span>"
|
user << "<span class='notice'>You cut the wires away from the [src].</span>"
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
//clipping fingertips
|
//clipping fingertips
|
||||||
if(!clipped)
|
if(!clipped)
|
||||||
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
|
||||||
user.visible_message("\red [user] cuts the fingertips off of the [src].","\red You cut the fingertips off of the [src].")
|
user.visible_message("\red [user] cuts the fingertips off of the [src].","\red You cut the fingertips off of the [src].")
|
||||||
|
|
||||||
clipped = 1
|
clipped = 1
|
||||||
name = "mangled [name]"
|
name = "mangled [name]"
|
||||||
desc = "[desc]<br>They have had the fingertips cut off of them."
|
desc = "[desc]<br>They have had the fingertips cut off of them."
|
||||||
if("exclude" in species_restricted)
|
if("exclude" in species_restricted)
|
||||||
species_restricted -= "Unathi"
|
species_restricted -= "Unathi"
|
||||||
species_restricted -= "Tajaran"
|
species_restricted -= "Tajara"
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
user << "<span class='notice'>The [src] have already been clipped!</span>"
|
user << "<span class='notice'>The [src] have already been clipped!</span>"
|
||||||
update_icon()
|
update_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/clothing/gloves/update_icon()
|
/obj/item/clothing/gloves/update_icon()
|
||||||
|
|||||||
@@ -14,15 +14,15 @@
|
|||||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
|
|
||||||
//Species-specific stuff.
|
//Species-specific stuff.
|
||||||
species_restricted = list("exclude","Unathi","Tajaran","Skrell","Diona","Vox")
|
species_restricted = list("exclude","Unathi","Tajara","Skrell","Diona","Vox")
|
||||||
sprite_sheets_refit = list(
|
sprite_sheets_refit = list(
|
||||||
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
|
||||||
"Tajaran" = 'icons/mob/species/tajaran/helmet.dmi',
|
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
|
||||||
"Skrell" = 'icons/mob/species/skrell/helmet.dmi',
|
"Skrell" = 'icons/mob/species/skrell/helmet.dmi',
|
||||||
)
|
)
|
||||||
sprite_sheets_obj = list(
|
sprite_sheets_obj = list(
|
||||||
"Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi',
|
"Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi',
|
||||||
"Tajaran" = 'icons/obj/clothing/species/tajaran/hats.dmi',
|
"Tajara" = 'icons/obj/clothing/species/tajaran/hats.dmi',
|
||||||
"Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi',
|
"Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi',
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -64,15 +64,15 @@
|
|||||||
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||||
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
|
||||||
|
|
||||||
species_restricted = list("exclude","Unathi","Tajaran","Diona","Vox")
|
species_restricted = list("exclude","Unathi","Tajara","Diona","Vox")
|
||||||
sprite_sheets_refit = list(
|
sprite_sheets_refit = list(
|
||||||
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
|
||||||
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
|
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
|
||||||
"Skrell" = 'icons/mob/species/skrell/suit.dmi',
|
"Skrell" = 'icons/mob/species/skrell/suit.dmi',
|
||||||
)
|
)
|
||||||
sprite_sheets_obj = list(
|
sprite_sheets_obj = list(
|
||||||
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
|
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
|
||||||
"Tajaran" = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
"Tajara" = 'icons/obj/clothing/species/tajaran/suits.dmi',
|
||||||
"Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi',
|
"Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi',
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -364,7 +364,7 @@
|
|||||||
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
|
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
|
||||||
siemens_coefficient = 0.6
|
siemens_coefficient = 0.6
|
||||||
var/obj/machinery/camera/camera
|
var/obj/machinery/camera/camera
|
||||||
species_restricted = list("exclude","Unathi","Tajaran","Skrell","Vox")
|
species_restricted = list("exclude","Unathi","Tajara","Skrell","Vox")
|
||||||
|
|
||||||
|
|
||||||
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
|
/obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user)
|
||||||
@@ -392,7 +392,7 @@
|
|||||||
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
|
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
|
||||||
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs)
|
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs)
|
||||||
siemens_coefficient = 0.6
|
siemens_coefficient = 0.6
|
||||||
species_restricted = list("exclude","Unathi","Tajaran","Skrell","Vox")
|
species_restricted = list("exclude","Unathi","Tajara","Skrell","Vox")
|
||||||
|
|
||||||
|
|
||||||
//Wizard Rig
|
//Wizard Rig
|
||||||
|
|||||||
@@ -1005,8 +1005,9 @@
|
|||||||
desc = "A well maintained uniform from one of the many Private Security firms Nanotrasen hires from. The name Harper is printed on the back."
|
desc = "A well maintained uniform from one of the many Private Security firms Nanotrasen hires from. The name Harper is printed on the back."
|
||||||
icon = 'icons/obj/custom_items.dmi'
|
icon = 'icons/obj/custom_items.dmi'
|
||||||
icon_state = "harper_uniform"
|
icon_state = "harper_uniform"
|
||||||
item_state = "harper_uniform"
|
item_state = "jensensuit"
|
||||||
item_color = "harper_uniform"
|
item_color = "harper_uniform"
|
||||||
|
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS
|
||||||
|
|
||||||
//////////////////// Layla's Dress - Layla Davies-Halabi - sabirm ///////////////
|
//////////////////// Layla's Dress - Layla Davies-Halabi - sabirm ///////////////
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
set category = "Object"
|
set category = "Object"
|
||||||
set name = "Draw"
|
set name = "Draw"
|
||||||
set desc = "Draw a card from a deck."
|
set desc = "Draw a card from a deck."
|
||||||
set src in oview(1)
|
set src in view(1)
|
||||||
|
|
||||||
if(usr.stat || !Adjacent(usr)) return
|
if(usr.stat || !Adjacent(usr)) return
|
||||||
|
|
||||||
@@ -93,6 +93,7 @@
|
|||||||
set category = "Object"
|
set category = "Object"
|
||||||
set name = "Deal"
|
set name = "Deal"
|
||||||
set desc = "Deal a card from a deck."
|
set desc = "Deal a card from a deck."
|
||||||
|
set src in view(1)
|
||||||
|
|
||||||
if(usr.stat || !Adjacent(usr)) return
|
if(usr.stat || !Adjacent(usr)) return
|
||||||
|
|
||||||
@@ -101,28 +102,35 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/list/players = list()
|
var/list/players = list()
|
||||||
for(var/mob/living/player in orange(3))
|
for(var/mob/living/player in viewers(3))
|
||||||
if(!player.stat)
|
if(!player.stat)
|
||||||
players += player
|
players += player
|
||||||
players -= usr
|
//players -= usr
|
||||||
|
|
||||||
var/mob/living/M = input("Who do you wish to deal a card?") as null|anything in players
|
var/mob/living/M = input("Who do you wish to deal a card?") as null|anything in players
|
||||||
if(!usr || !src || !M) return
|
if(!usr || !src || !M) return
|
||||||
|
|
||||||
var/obj/item/weapon/hand/H = new(get_turf(src))
|
deal_at(usr, M)
|
||||||
|
|
||||||
|
/obj/item/weapon/deck/proc/deal_at(mob/user, mob/target)
|
||||||
|
var/obj/item/weapon/hand/H = new(get_step(user, user.dir))
|
||||||
|
|
||||||
H.cards += cards[1]
|
H.cards += cards[1]
|
||||||
cards -= cards[1]
|
cards -= cards[1]
|
||||||
H.concealed = 1
|
H.concealed = 1
|
||||||
H.update_icon()
|
H.update_icon()
|
||||||
usr.visible_message("\The [usr] deals a card to \the [M].")
|
if(user==target)
|
||||||
H.throw_at(get_step(M,M.dir),10,1,H)
|
user.visible_message("\The [user] deals a card to \himself.")
|
||||||
|
else
|
||||||
|
user.visible_message("\The [user] deals a card to \the [target].")
|
||||||
|
H.throw_at(get_step(target,target.dir),10,1,H)
|
||||||
|
|
||||||
/obj/item/weapon/hand/attackby(obj/O as obj, mob/user as mob)
|
/obj/item/weapon/hand/attackby(obj/O as obj, mob/user as mob)
|
||||||
if(istype(O,/obj/item/weapon/hand))
|
if(istype(O,/obj/item/weapon/hand))
|
||||||
var/obj/item/weapon/hand/H = O
|
var/obj/item/weapon/hand/H = O
|
||||||
for(var/datum/playingcard/P in H.cards)
|
for(var/datum/playingcard/P in H.cards)
|
||||||
cards += P
|
cards += P
|
||||||
|
src.concealed = H.concealed
|
||||||
del(O)
|
del(O)
|
||||||
user.put_in_hands(src)
|
user.put_in_hands(src)
|
||||||
update_icon()
|
update_icon()
|
||||||
@@ -139,6 +147,18 @@
|
|||||||
cards = newcards
|
cards = newcards
|
||||||
user.visible_message("\The [user] shuffles [src].")
|
user.visible_message("\The [user] shuffles [src].")
|
||||||
|
|
||||||
|
/obj/item/weapon/deck/MouseDrop(atom/over)
|
||||||
|
if(!usr || !over) return
|
||||||
|
if(!Adjacent(usr) || !over.Adjacent(usr)) return // should stop you from dragging through windows
|
||||||
|
|
||||||
|
if(!ishuman(over) || !(over in viewers(3))) return
|
||||||
|
|
||||||
|
if(!cards.len)
|
||||||
|
usr << "There are no cards in the deck."
|
||||||
|
return
|
||||||
|
|
||||||
|
deal_at(usr, over)
|
||||||
|
|
||||||
/obj/item/weapon/hand
|
/obj/item/weapon/hand
|
||||||
name = "hand of cards"
|
name = "hand of cards"
|
||||||
desc = "Some playing cards."
|
desc = "Some playing cards."
|
||||||
@@ -170,6 +190,7 @@
|
|||||||
cards -= card
|
cards -= card
|
||||||
H.concealed = 0
|
H.concealed = 0
|
||||||
H.update_icon()
|
H.update_icon()
|
||||||
|
src.update_icon()
|
||||||
usr.visible_message("\The [usr] plays \the [discarding].")
|
usr.visible_message("\The [usr] plays \the [discarding].")
|
||||||
H.loc = get_step(usr,usr.dir)
|
H.loc = get_step(usr,usr.dir)
|
||||||
|
|
||||||
@@ -188,7 +209,7 @@
|
|||||||
for(var/datum/playingcard/P in cards)
|
for(var/datum/playingcard/P in cards)
|
||||||
usr << "The [P.name]."
|
usr << "The [P.name]."
|
||||||
|
|
||||||
/obj/item/weapon/hand/update_icon()
|
/obj/item/weapon/hand/update_icon(var/direction = 0)
|
||||||
|
|
||||||
if(!cards.len)
|
if(!cards.len)
|
||||||
del(src)
|
del(src)
|
||||||
@@ -211,12 +232,43 @@
|
|||||||
overlays += I
|
overlays += I
|
||||||
return
|
return
|
||||||
|
|
||||||
var/origin = -12
|
var/offset = Floor(20/cards.len)
|
||||||
var/offset = Floor(32/cards.len)
|
|
||||||
|
|
||||||
|
var/matrix/M = matrix()
|
||||||
|
if(direction)
|
||||||
|
switch(direction)
|
||||||
|
if(NORTH)
|
||||||
|
M.Translate( 0, 0)
|
||||||
|
if(SOUTH)
|
||||||
|
M.Translate( 0, 4)
|
||||||
|
if(WEST)
|
||||||
|
M.Turn(90)
|
||||||
|
M.Translate( 3, 0)
|
||||||
|
if(EAST)
|
||||||
|
M.Turn(90)
|
||||||
|
M.Translate(-2, 0)
|
||||||
var/i = 0
|
var/i = 0
|
||||||
for(var/datum/playingcard/P in cards)
|
for(var/datum/playingcard/P in cards)
|
||||||
var/image/I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") )
|
var/image/I = new(src.icon, (concealed ? "card_back" : "[P.card_icon]") )
|
||||||
I.pixel_x = origin+(offset*i)
|
//I.pixel_x = origin+(offset*i)
|
||||||
|
switch(direction)
|
||||||
|
if(SOUTH)
|
||||||
|
I.pixel_x = 8-(offset*i)
|
||||||
|
if(WEST)
|
||||||
|
I.pixel_y = -6+(offset*i)
|
||||||
|
if(EAST)
|
||||||
|
I.pixel_y = 8-(offset*i)
|
||||||
|
else
|
||||||
|
I.pixel_x = -7+(offset*i)
|
||||||
|
I.transform = M
|
||||||
overlays += I
|
overlays += I
|
||||||
i++
|
i++
|
||||||
|
|
||||||
|
/obj/item/weapon/hand/dropped(mob/user as mob)
|
||||||
|
if(locate(/obj/structure/table, loc))
|
||||||
|
src.update_icon(user.dir)
|
||||||
|
else
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
/obj/item/weapon/hand/pickup(mob/user as mob)
|
||||||
|
src.update_icon()
|
||||||
@@ -179,6 +179,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
|
|
||||||
|
|
||||||
/mob/dead/observer/Move(NewLoc, direct)
|
/mob/dead/observer/Move(NewLoc, direct)
|
||||||
|
following = null
|
||||||
dir = direct
|
dir = direct
|
||||||
if(NewLoc)
|
if(NewLoc)
|
||||||
loc = NewLoc
|
loc = NewLoc
|
||||||
@@ -306,6 +307,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
usr << "No area available."
|
usr << "No area available."
|
||||||
|
|
||||||
usr.loc = pick(L)
|
usr.loc = pick(L)
|
||||||
|
following = null
|
||||||
|
|
||||||
/mob/dead/observer/verb/follow()
|
/mob/dead/observer/verb/follow()
|
||||||
set category = "Ghost"
|
set category = "Ghost"
|
||||||
@@ -325,18 +327,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
following = target
|
following = target
|
||||||
src << "\blue Now following [target]"
|
src << "\blue Now following [target]"
|
||||||
spawn(0)
|
spawn(0)
|
||||||
var/turf/pos = get_turf(src)
|
while(target && following == target && client)
|
||||||
while(loc == pos && target && following == target && client)
|
|
||||||
var/turf/T = get_turf(target)
|
var/turf/T = get_turf(target)
|
||||||
if(!T)
|
if(!T)
|
||||||
break
|
break
|
||||||
// To stop the ghost flickering.
|
// To stop the ghost flickering.
|
||||||
if(loc != T)
|
if(loc != T)
|
||||||
loc = T
|
loc = T
|
||||||
pos = loc
|
|
||||||
sleep(15)
|
sleep(15)
|
||||||
following = null
|
|
||||||
|
|
||||||
|
|
||||||
/mob/dead/observer/verb/jumptomob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak
|
/mob/dead/observer/verb/jumptomob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak
|
||||||
set category = "Ghost"
|
set category = "Ghost"
|
||||||
@@ -361,6 +359,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
|||||||
|
|
||||||
if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination.
|
if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination.
|
||||||
A.loc = T
|
A.loc = T
|
||||||
|
following = null
|
||||||
else
|
else
|
||||||
A << "This mob is not located in the game world."
|
A << "This mob is not located in the game world."
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
//Stand-in until this is made more lore-friendly.
|
//Stand-in until this is made more lore-friendly.
|
||||||
/datum/species/xenos
|
/datum/species/xenos
|
||||||
name = "Xenomorph"
|
name = "Xenomorph"
|
||||||
|
name_plural = "Xenomorphs"
|
||||||
|
|
||||||
default_language = "Xenomorph"
|
default_language = "Xenomorph"
|
||||||
language = "Hivemind"
|
language = "Hivemind"
|
||||||
unarmed_type = /datum/unarmed_attack/claws/strong
|
unarmed_type = /datum/unarmed_attack/claws/strong
|
||||||
@@ -40,7 +42,6 @@
|
|||||||
|
|
||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
|
||||||
"brain" = /datum/organ/internal/brain/xeno,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel,
|
||||||
"hive node" = /datum/organ/internal/xenos/hivenode,
|
"hive node" = /datum/organ/internal/xenos/hivenode,
|
||||||
@@ -116,7 +117,6 @@
|
|||||||
|
|
||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
|
||||||
"brain" = /datum/organ/internal/brain/xeno,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
||||||
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
||||||
@@ -155,7 +155,6 @@
|
|||||||
|
|
||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
|
||||||
"brain" = /datum/organ/internal/brain/xeno,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/hunter,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/hunter,
|
||||||
"hive node" = /datum/organ/internal/xenos/hivenode,
|
"hive node" = /datum/organ/internal/xenos/hivenode,
|
||||||
@@ -183,7 +182,6 @@
|
|||||||
|
|
||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
|
||||||
"brain" = /datum/organ/internal/brain/xeno,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/sentinel,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/sentinel,
|
||||||
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
"acid gland" = /datum/organ/internal/xenos/acidgland,
|
||||||
@@ -214,7 +212,6 @@
|
|||||||
|
|
||||||
has_organ = list(
|
has_organ = list(
|
||||||
"heart" = /datum/organ/internal/heart,
|
"heart" = /datum/organ/internal/heart,
|
||||||
"lungs" = /datum/organ/internal/lungs,
|
|
||||||
"brain" = /datum/organ/internal/brain/xeno,
|
"brain" = /datum/organ/internal/brain/xeno,
|
||||||
"egg sac" = /datum/organ/internal/xenos/eggsac,
|
"egg sac" = /datum/organ/internal/xenos/eggsac,
|
||||||
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
"plasma vessel" = /datum/organ/internal/xenos/plasmavessel/queen,
|
||||||
|
|||||||
@@ -1210,7 +1210,7 @@
|
|||||||
src << msg
|
src << msg
|
||||||
|
|
||||||
organ.take_damage(rand(1,3), 0, 0)
|
organ.take_damage(rand(1,3), 0, 0)
|
||||||
if(!(organ.status & ORGAN_ROBOT)) //There is no blood in protheses.
|
if(!(organ.status & ORGAN_ROBOT) && !(species.flags & NO_BLOOD)) //There is no blood in protheses.
|
||||||
organ.status |= ORGAN_BLEEDING
|
organ.status |= ORGAN_BLEEDING
|
||||||
src.adjustToxLoss(rand(1,3))
|
src.adjustToxLoss(rand(1,3))
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,6 @@
|
|||||||
if(!G) //the grab will delete itself in New if affecting is anchored
|
if(!G) //the grab will delete itself in New if affecting is anchored
|
||||||
return
|
return
|
||||||
M.put_in_active_hand(G)
|
M.put_in_active_hand(G)
|
||||||
grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
LAssailant = M
|
LAssailant = M
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
/mob/living/carbon/human/tajaran/New(var/new_loc)
|
/mob/living/carbon/human/tajaran/New(var/new_loc)
|
||||||
h_style = "Tajaran Ears"
|
h_style = "Tajaran Ears"
|
||||||
..(new_loc, "Tajaran")
|
..(new_loc, "Tajara")
|
||||||
|
|
||||||
/mob/living/carbon/human/unathi/New(var/new_loc)
|
/mob/living/carbon/human/unathi/New(var/new_loc)
|
||||||
h_style = "Unathi Horns"
|
h_style = "Unathi Horns"
|
||||||
|
|||||||
@@ -687,6 +687,7 @@ It can still be worn/put on as normal.
|
|||||||
for (var/obj/item/weapon/grab/G in target.grabbed_by)
|
for (var/obj/item/weapon/grab/G in target.grabbed_by)
|
||||||
if (G.loc == source && G.state >= GRAB_AGGRESSIVE)
|
if (G.loc == source && G.state >= GRAB_AGGRESSIVE)
|
||||||
grabbing = 1
|
grabbing = 1
|
||||||
|
break
|
||||||
if (!grabbing)
|
if (!grabbing)
|
||||||
slot_to_process = null
|
slot_to_process = null
|
||||||
source << "\red Your grasp was broken before you could restrain [target]!"
|
source << "\red Your grasp was broken before you could restrain [target]!"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
/datum/species
|
/datum/species
|
||||||
|
|
||||||
var/name // Species name.
|
var/name // Species name.
|
||||||
|
var/name_plural
|
||||||
|
|
||||||
var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set.
|
var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set.
|
||||||
var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set.
|
var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set.
|
||||||
@@ -202,6 +203,7 @@
|
|||||||
|
|
||||||
/datum/species/human
|
/datum/species/human
|
||||||
name = "Human"
|
name = "Human"
|
||||||
|
name_plural = "Humans"
|
||||||
language = "Sol Common"
|
language = "Sol Common"
|
||||||
primitive = /mob/living/carbon/monkey
|
primitive = /mob/living/carbon/monkey
|
||||||
unarmed_type = /datum/unarmed_attack/punch
|
unarmed_type = /datum/unarmed_attack/punch
|
||||||
@@ -213,6 +215,7 @@
|
|||||||
|
|
||||||
/datum/species/unathi
|
/datum/species/unathi
|
||||||
name = "Unathi"
|
name = "Unathi"
|
||||||
|
name_plural = "Unathi"
|
||||||
icobase = 'icons/mob/human_races/r_lizard.dmi'
|
icobase = 'icons/mob/human_races/r_lizard.dmi'
|
||||||
deform = 'icons/mob/human_races/r_def_lizard.dmi'
|
deform = 'icons/mob/human_races/r_def_lizard.dmi'
|
||||||
language = "Sinta'unathi"
|
language = "Sinta'unathi"
|
||||||
@@ -239,7 +242,8 @@
|
|||||||
base_color = "#066000"
|
base_color = "#066000"
|
||||||
|
|
||||||
/datum/species/tajaran
|
/datum/species/tajaran
|
||||||
name = "Tajaran"
|
name = "Tajara"
|
||||||
|
name_plural = "Tajaran"
|
||||||
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
icobase = 'icons/mob/human_races/r_tajaran.dmi'
|
||||||
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
|
deform = 'icons/mob/human_races/r_def_tajaran.dmi'
|
||||||
language = "Siik'tajr"
|
language = "Siik'tajr"
|
||||||
@@ -264,6 +268,7 @@
|
|||||||
|
|
||||||
/datum/species/skrell
|
/datum/species/skrell
|
||||||
name = "Skrell"
|
name = "Skrell"
|
||||||
|
name_plural = "Skrell"
|
||||||
icobase = 'icons/mob/human_races/r_skrell.dmi'
|
icobase = 'icons/mob/human_races/r_skrell.dmi'
|
||||||
deform = 'icons/mob/human_races/r_def_skrell.dmi'
|
deform = 'icons/mob/human_races/r_def_skrell.dmi'
|
||||||
language = "Skrellian"
|
language = "Skrellian"
|
||||||
@@ -278,6 +283,7 @@
|
|||||||
|
|
||||||
/datum/species/vox
|
/datum/species/vox
|
||||||
name = "Vox"
|
name = "Vox"
|
||||||
|
name_plural = "Vox"
|
||||||
icobase = 'icons/mob/human_races/r_vox.dmi'
|
icobase = 'icons/mob/human_races/r_vox.dmi'
|
||||||
deform = 'icons/mob/human_races/r_def_vox.dmi'
|
deform = 'icons/mob/human_races/r_def_vox.dmi'
|
||||||
default_language = "Vox-pidgin"
|
default_language = "Vox-pidgin"
|
||||||
@@ -324,6 +330,7 @@
|
|||||||
|
|
||||||
/datum/species/vox/armalis
|
/datum/species/vox/armalis
|
||||||
name = "Vox Armalis"
|
name = "Vox Armalis"
|
||||||
|
name_plural = "Vox"
|
||||||
icobase = 'icons/mob/human_races/r_armalis.dmi'
|
icobase = 'icons/mob/human_races/r_armalis.dmi'
|
||||||
deform = 'icons/mob/human_races/r_armalis.dmi'
|
deform = 'icons/mob/human_races/r_armalis.dmi'
|
||||||
rarity_value = 10
|
rarity_value = 10
|
||||||
@@ -364,6 +371,7 @@
|
|||||||
|
|
||||||
/datum/species/diona
|
/datum/species/diona
|
||||||
name = "Diona"
|
name = "Diona"
|
||||||
|
name_plural = "Dionaea"
|
||||||
icobase = 'icons/mob/human_races/r_diona.dmi'
|
icobase = 'icons/mob/human_races/r_diona.dmi'
|
||||||
deform = 'icons/mob/human_races/r_def_plant.dmi'
|
deform = 'icons/mob/human_races/r_def_plant.dmi'
|
||||||
language = "Rootspeak"
|
language = "Rootspeak"
|
||||||
@@ -428,6 +436,8 @@
|
|||||||
|
|
||||||
/datum/species/machine
|
/datum/species/machine
|
||||||
name = "Machine"
|
name = "Machine"
|
||||||
|
name_plural = "machines"
|
||||||
|
|
||||||
icobase = 'icons/mob/human_races/r_machine.dmi'
|
icobase = 'icons/mob/human_races/r_machine.dmi'
|
||||||
deform = 'icons/mob/human_races/r_machine.dmi'
|
deform = 'icons/mob/human_races/r_machine.dmi'
|
||||||
language = "Tradeband"
|
language = "Tradeband"
|
||||||
@@ -551,6 +561,7 @@
|
|||||||
var/has_throw = 1 // Set to draw throw button.
|
var/has_throw = 1 // Set to draw throw button.
|
||||||
var/has_resist = 1 // Set to draw resist button.
|
var/has_resist = 1 // Set to draw resist button.
|
||||||
var/has_internals = 1 // Set to draw the internals toggle button.
|
var/has_internals = 1 // Set to draw the internals toggle button.
|
||||||
|
var/list/equip_slots = list() // Checked by mob_can_equip().
|
||||||
|
|
||||||
// Contains information on the position and tag for all inventory slots
|
// Contains information on the position and tag for all inventory slots
|
||||||
// to be drawn for the mob. This is fairly delicate, try to avoid messing with it
|
// to be drawn for the mob. This is fairly delicate, try to avoid messing with it
|
||||||
@@ -572,3 +583,18 @@
|
|||||||
"storage2" = list("loc" = ui_storage2, "slot" = slot_r_store, "state" = "pocket"),
|
"storage2" = list("loc" = ui_storage2, "slot" = slot_r_store, "state" = "pocket"),
|
||||||
"belt" = list("loc" = ui_belt, "slot" = slot_belt, "state" = "belt")
|
"belt" = list("loc" = ui_belt, "slot" = slot_belt, "state" = "belt")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/datum/hud_data/New()
|
||||||
|
..()
|
||||||
|
for(var/slot in gear)
|
||||||
|
equip_slots |= gear[slot]["slot"]
|
||||||
|
|
||||||
|
if(has_hands)
|
||||||
|
equip_slots |= slot_l_hand
|
||||||
|
equip_slots |= slot_r_hand
|
||||||
|
equip_slots |= slot_handcuffed
|
||||||
|
|
||||||
|
if(slot_back in equip_slots)
|
||||||
|
equip_slots |= slot_in_backpack
|
||||||
|
|
||||||
|
equip_slots |= slot_legcuffed
|
||||||
@@ -177,6 +177,7 @@ var/global/list/damage_icon_parts = list()
|
|||||||
proc/get_damage_icon_part(damage_state, body_part)
|
proc/get_damage_icon_part(damage_state, body_part)
|
||||||
if(damage_icon_parts["[damage_state]/[body_part]"] == null)
|
if(damage_icon_parts["[damage_state]/[body_part]"] == null)
|
||||||
var/icon/DI = new /icon('icons/mob/dam_human.dmi', damage_state) // the damage icon for whole human
|
var/icon/DI = new /icon('icons/mob/dam_human.dmi', damage_state) // the damage icon for whole human
|
||||||
|
// TODO: Convert dam_human.dmi to greyscale and blend in species.blood_colour here.
|
||||||
DI.Blend(new /icon('icons/mob/dam_mask.dmi', body_part), ICON_MULTIPLY) // mask with this organ's pixels
|
DI.Blend(new /icon('icons/mob/dam_mask.dmi', body_part), ICON_MULTIPLY) // mask with this organ's pixels
|
||||||
damage_icon_parts["[damage_state]/[body_part]"] = DI
|
damage_icon_parts["[damage_state]/[body_part]"] = DI
|
||||||
return DI
|
return DI
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
..()
|
..()
|
||||||
dna.mutantrace = "tajaran"
|
dna.mutantrace = "tajaran"
|
||||||
greaterform = "Tajaran"
|
greaterform = "Tajara"
|
||||||
add_language("Siik'tajr")
|
add_language("Siik'tajr")
|
||||||
|
|
||||||
/mob/living/carbon/monkey/movement_delay()
|
/mob/living/carbon/monkey/movement_delay()
|
||||||
@@ -231,7 +231,6 @@
|
|||||||
|
|
||||||
M.put_in_active_hand(G)
|
M.put_in_active_hand(G)
|
||||||
|
|
||||||
grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
|
|
||||||
LAssailant = M
|
LAssailant = M
|
||||||
@@ -256,6 +255,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/mob/living/carbon/monkey/attack_animal(mob/living/M as mob)
|
/mob/living/carbon/monkey/attack_animal(mob/living/M as mob)
|
||||||
|
|
||||||
if(M.melee_damage_upper == 0)
|
if(M.melee_damage_upper == 0)
|
||||||
M.emote("[M.friendly] [src]")
|
M.emote("[M.friendly] [src]")
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -861,6 +861,7 @@ var/list/robot_verbs_default = list(
|
|||||||
spark_system.start()
|
spark_system.start()
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
|
||||||
/mob/living/silicon/robot/attack_slime(mob/living/carbon/slime/M as mob)
|
/mob/living/silicon/robot/attack_slime(mob/living/carbon/slime/M as mob)
|
||||||
if (!ticker)
|
if (!ticker)
|
||||||
M << "You cannot attack people before the game has started."
|
M << "You cannot attack people before the game has started."
|
||||||
|
|||||||
@@ -181,6 +181,9 @@
|
|||||||
H.internal_organs_by_name["brain"] = B
|
H.internal_organs_by_name["brain"] = B
|
||||||
H.internal_organs |= B
|
H.internal_organs |= B
|
||||||
|
|
||||||
|
var/datum/organ/external/affecting = H.get_organ("head")
|
||||||
|
affecting.implants -= src
|
||||||
|
|
||||||
var/s2h_id = src.computer_id
|
var/s2h_id = src.computer_id
|
||||||
var/s2h_ip= src.lastKnownIP
|
var/s2h_ip= src.lastKnownIP
|
||||||
src.computer_id = null
|
src.computer_id = null
|
||||||
|
|||||||
@@ -250,7 +250,6 @@
|
|||||||
|
|
||||||
M.put_in_active_hand(G)
|
M.put_in_active_hand(G)
|
||||||
|
|
||||||
grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
G.affecting = src
|
G.affecting = src
|
||||||
LAssailant = M
|
LAssailant = M
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
del(src)
|
del(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
affecting.grabbed_by += src
|
||||||
|
|
||||||
hud = new /obj/screen/grab(src)
|
hud = new /obj/screen/grab(src)
|
||||||
hud.icon_state = "reinforce"
|
hud.icon_state = "reinforce"
|
||||||
hud.name = "reinforce grab"
|
hud.name = "reinforce grab"
|
||||||
|
|||||||
@@ -496,7 +496,7 @@
|
|||||||
name = "Shaved"
|
name = "Shaved"
|
||||||
icon_state = "bald"
|
icon_state = "bald"
|
||||||
gender = NEUTER
|
gender = NEUTER
|
||||||
species_allowed = list("Human","Unathi","Tajaran","Skrell","Vox","Machine")
|
species_allowed = list("Human","Unathi","Tajara","Skrell","Vox","Machine")
|
||||||
|
|
||||||
watson
|
watson
|
||||||
name = "Watson Mustache"
|
name = "Watson Mustache"
|
||||||
@@ -636,62 +636,62 @@
|
|||||||
taj_ears
|
taj_ears
|
||||||
name = "Tajaran Ears"
|
name = "Tajaran Ears"
|
||||||
icon_state = "ears_plain"
|
icon_state = "ears_plain"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_clean
|
taj_ears_clean
|
||||||
name = "Tajara Clean"
|
name = "Tajara Clean"
|
||||||
icon_state = "hair_clean"
|
icon_state = "hair_clean"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_bangs
|
taj_ears_bangs
|
||||||
name = "Tajara Bangs"
|
name = "Tajara Bangs"
|
||||||
icon_state = "hair_bangs"
|
icon_state = "hair_bangs"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_braid
|
taj_ears_braid
|
||||||
name = "Tajara Braid"
|
name = "Tajara Braid"
|
||||||
icon_state = "hair_tbraid"
|
icon_state = "hair_tbraid"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_shaggy
|
taj_ears_shaggy
|
||||||
name = "Tajara Shaggy"
|
name = "Tajara Shaggy"
|
||||||
icon_state = "hair_shaggy"
|
icon_state = "hair_shaggy"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_mohawk
|
taj_ears_mohawk
|
||||||
name = "Tajaran Mohawk"
|
name = "Tajaran Mohawk"
|
||||||
icon_state = "hair_mohawk"
|
icon_state = "hair_mohawk"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_plait
|
taj_ears_plait
|
||||||
name = "Tajara Plait"
|
name = "Tajara Plait"
|
||||||
icon_state = "hair_plait"
|
icon_state = "hair_plait"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_straight
|
taj_ears_straight
|
||||||
name = "Tajara Straight"
|
name = "Tajara Straight"
|
||||||
icon_state = "hair_straight"
|
icon_state = "hair_straight"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_long
|
taj_ears_long
|
||||||
name = "Tajara Long"
|
name = "Tajara Long"
|
||||||
icon_state = "hair_long"
|
icon_state = "hair_long"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_rattail
|
taj_ears_rattail
|
||||||
name = "Tajara Rat Tail"
|
name = "Tajara Rat Tail"
|
||||||
icon_state = "hair_rattail"
|
icon_state = "hair_rattail"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_spiky
|
taj_ears_spiky
|
||||||
name = "Tajara Spiky"
|
name = "Tajara Spiky"
|
||||||
icon_state = "hair_tajspiky"
|
icon_state = "hair_tajspiky"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_ears_messy
|
taj_ears_messy
|
||||||
name = "Tajara Messy"
|
name = "Tajara Messy"
|
||||||
icon_state = "hair_messy"
|
icon_state = "hair_messy"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
vox_quills_short
|
vox_quills_short
|
||||||
name = "Short Vox Quills"
|
name = "Short Vox Quills"
|
||||||
@@ -703,32 +703,32 @@
|
|||||||
taj_sideburns
|
taj_sideburns
|
||||||
name = "Tajara Sideburns"
|
name = "Tajara Sideburns"
|
||||||
icon_state = "facial_mutton"
|
icon_state = "facial_mutton"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_mutton
|
taj_mutton
|
||||||
name = "Tajara Mutton"
|
name = "Tajara Mutton"
|
||||||
icon_state = "facial_mutton"
|
icon_state = "facial_mutton"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_pencilstache
|
taj_pencilstache
|
||||||
name = "Tajara Pencilstache"
|
name = "Tajara Pencilstache"
|
||||||
icon_state = "facial_pencilstache"
|
icon_state = "facial_pencilstache"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_moustache
|
taj_moustache
|
||||||
name = "Tajara Moustache"
|
name = "Tajara Moustache"
|
||||||
icon_state = "facial_moustache"
|
icon_state = "facial_moustache"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_goatee
|
taj_goatee
|
||||||
name = "Tajara Goatee"
|
name = "Tajara Goatee"
|
||||||
icon_state = "facial_goatee"
|
icon_state = "facial_goatee"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
taj_smallstache
|
taj_smallstache
|
||||||
name = "Tajara Smallsatche"
|
name = "Tajara Smallsatche"
|
||||||
icon_state = "facial_smallstache"
|
icon_state = "facial_smallstache"
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
//skin styles - WIP
|
//skin styles - WIP
|
||||||
//going to have to re-integrate this with surgery
|
//going to have to re-integrate this with surgery
|
||||||
@@ -750,7 +750,7 @@
|
|||||||
name = "Default tajaran skin"
|
name = "Default tajaran skin"
|
||||||
icon_state = "default"
|
icon_state = "default"
|
||||||
icon = 'icons/mob/human_races/r_tajaran.dmi'
|
icon = 'icons/mob/human_races/r_tajaran.dmi'
|
||||||
species_allowed = list("Tajaran")
|
species_allowed = list("Tajara")
|
||||||
|
|
||||||
unathi
|
unathi
|
||||||
name = "Default Unathi skin"
|
name = "Default Unathi skin"
|
||||||
|
|||||||
@@ -8,10 +8,14 @@ mob/var/last_typed_time
|
|||||||
var/global/image/typing_indicator
|
var/global/image/typing_indicator
|
||||||
|
|
||||||
/mob/proc/set_typing_indicator(var/state)
|
/mob/proc/set_typing_indicator(var/state)
|
||||||
|
|
||||||
|
if(!typing_indicator)
|
||||||
|
typing_indicator = image('icons/mob/talk.dmi',null,"typing")
|
||||||
|
|
||||||
if(client)
|
if(client)
|
||||||
if(!(client.prefs.toggles & SHOW_TYPING))
|
if(client.prefs.toggles & SHOW_TYPING)
|
||||||
if(!typing_indicator)
|
overlays -= typing_indicator
|
||||||
typing_indicator = image('icons/mob/talk.dmi',null,"typing")
|
else
|
||||||
if(state)
|
if(state)
|
||||||
if(!typing)
|
if(!typing)
|
||||||
overlays += typing_indicator
|
overlays += typing_indicator
|
||||||
@@ -72,5 +76,10 @@ var/global/image/typing_indicator
|
|||||||
set desc = "Toggles showing an indicator when you are typing emote or say message."
|
set desc = "Toggles showing an indicator when you are typing emote or say message."
|
||||||
prefs.toggles ^= SHOW_TYPING
|
prefs.toggles ^= SHOW_TYPING
|
||||||
prefs.save_preferences()
|
prefs.save_preferences()
|
||||||
src << "You will [(prefs.toggles & CHAT_OOC) ? "no longer" : "now"] display typing indicator."
|
src << "You will [(prefs.toggles & SHOW_TYPING) ? "no longer" : "now"] display a typing indicator."
|
||||||
feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
|
||||||
|
// Clear out any existing typing indicator.
|
||||||
|
if(prefs.toggles & SHOW_TYPING)
|
||||||
|
if(istype(mob)) mob.set_typing_indicator(0)
|
||||||
|
|
||||||
|
feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
@@ -32,7 +32,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122
|
|||||||
if(B.id == "blood")
|
if(B.id == "blood")
|
||||||
B.data = list( "donor"=src,"viruses"=null,"species"=species.name,"blood_DNA"=dna.unique_enzymes,"blood_colour"= species.blood_color,"blood_type"=dna.b_type, \
|
B.data = list( "donor"=src,"viruses"=null,"species"=species.name,"blood_DNA"=dna.unique_enzymes,"blood_colour"= species.blood_color,"blood_type"=dna.b_type, \
|
||||||
"resistances"=null,"trace_chem"=null, "virus2" = null, "antibodies" = null)
|
"resistances"=null,"trace_chem"=null, "virus2" = null, "antibodies" = null)
|
||||||
B.color = B.data["blood_color"]
|
B.color = B.data["blood_colour"]
|
||||||
|
|
||||||
// Takes care blood loss and regeneration
|
// Takes care blood loss and regeneration
|
||||||
/mob/living/carbon/human/proc/handle_blood()
|
/mob/living/carbon/human/proc/handle_blood()
|
||||||
|
|||||||
@@ -96,8 +96,8 @@
|
|||||||
if(!istype(H))
|
if(!istype(H))
|
||||||
return
|
return
|
||||||
|
|
||||||
var/datum/reagent/blood = H.vessel.reagent_list["blood"]
|
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in H.vessel.reagent_list
|
||||||
blood_splatter(H,blood,1)
|
blood_splatter(H,B,1)
|
||||||
var/obj/effect/decal/cleanable/blood/splatter/goo = locate() in get_turf(owner)
|
var/obj/effect/decal/cleanable/blood/splatter/goo = locate() in get_turf(owner)
|
||||||
if(goo)
|
if(goo)
|
||||||
goo.name = "husk ichor"
|
goo.name = "husk ichor"
|
||||||
@@ -170,27 +170,31 @@
|
|||||||
name = "xeno organ"
|
name = "xeno organ"
|
||||||
icon = 'icons/effects/blood.dmi'
|
icon = 'icons/effects/blood.dmi'
|
||||||
desc = "It smells like an accident in a chemical factory."
|
desc = "It smells like an accident in a chemical factory."
|
||||||
organ_tag = "special" //TODO functionality for transplants.
|
|
||||||
|
|
||||||
/obj/item/organ/xenos/eggsac
|
/obj/item/organ/xenos/eggsac
|
||||||
name = "egg sac"
|
name = "egg sac"
|
||||||
icon_state = "xgibmid1"
|
icon_state = "xgibmid1"
|
||||||
|
organ_tag = "egg sac"
|
||||||
|
|
||||||
/obj/item/organ/xenos/plasmavessel
|
/obj/item/organ/xenos/plasmavessel
|
||||||
name = "plasma vessel"
|
name = "plasma vessel"
|
||||||
icon_state = "xgibdown"
|
icon_state = "xgibdown1"
|
||||||
|
organ_tag = "plasma vessel"
|
||||||
|
|
||||||
/obj/item/organ/xenos/acidgland
|
/obj/item/organ/xenos/acidgland
|
||||||
name = "acid gland"
|
name = "acid gland"
|
||||||
icon_state = "xgibtorso"
|
icon_state = "xgibtorso"
|
||||||
|
organ_tag = "acid gland"
|
||||||
|
|
||||||
/obj/item/organ/xenos/hivenode
|
/obj/item/organ/xenos/hivenode
|
||||||
name = "hive node"
|
name = "hive node"
|
||||||
icon_state = "xgibmid2"
|
icon_state = "xgibmid2"
|
||||||
|
organ_tag = "hive node"
|
||||||
|
|
||||||
/obj/item/organ/xenos/resinspinner
|
/obj/item/organ/xenos/resinspinner
|
||||||
name = "hive node"
|
name = "hive node"
|
||||||
icon_state = "xgibmid2"
|
icon_state = "xgibmid2"
|
||||||
|
organ_tag = "resin spinner"
|
||||||
|
|
||||||
//VOX ORGANS.
|
//VOX ORGANS.
|
||||||
/datum/organ/internal/stack
|
/datum/organ/internal/stack
|
||||||
|
|||||||
@@ -490,13 +490,18 @@ Note that amputating the affected organ does in fact remove the infection from t
|
|||||||
burn_dam = 0
|
burn_dam = 0
|
||||||
status &= ~ORGAN_BLEEDING
|
status &= ~ORGAN_BLEEDING
|
||||||
var/clamped = 0
|
var/clamped = 0
|
||||||
|
|
||||||
|
var/mob/living/carbon/human/H
|
||||||
|
if(istype(owner,/mob/living/carbon/human))
|
||||||
|
H = owner
|
||||||
|
|
||||||
for(var/datum/wound/W in wounds)
|
for(var/datum/wound/W in wounds)
|
||||||
if(W.damage_type == CUT || W.damage_type == BRUISE)
|
if(W.damage_type == CUT || W.damage_type == BRUISE)
|
||||||
brute_dam += W.damage
|
brute_dam += W.damage
|
||||||
else if(W.damage_type == BURN)
|
else if(W.damage_type == BURN)
|
||||||
burn_dam += W.damage
|
burn_dam += W.damage
|
||||||
|
|
||||||
if(!(status & ORGAN_ROBOT) && W.bleeding())
|
if(!(status & ORGAN_ROBOT) && W.bleeding() && (H && !(H.species.flags & NO_BLOOD)))
|
||||||
W.bleed_timer--
|
W.bleed_timer--
|
||||||
status |= ORGAN_BLEEDING
|
status |= ORGAN_BLEEDING
|
||||||
|
|
||||||
@@ -504,7 +509,7 @@ Note that amputating the affected organ does in fact remove the infection from t
|
|||||||
|
|
||||||
number_wounds += W.amount
|
number_wounds += W.amount
|
||||||
|
|
||||||
if (open && !clamped) //things tend to bleed if they are CUT OPEN
|
if (open && !clamped && (H && !(H.species.flags & NO_BLOOD))) //things tend to bleed if they are CUT OPEN
|
||||||
status |= ORGAN_BLEEDING
|
status |= ORGAN_BLEEDING
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -83,14 +83,15 @@
|
|||||||
if(rejecting % 10 == 0) //Only fire every ten rejection ticks.
|
if(rejecting % 10 == 0) //Only fire every ten rejection ticks.
|
||||||
switch(rejecting)
|
switch(rejecting)
|
||||||
if(1 to 50)
|
if(1 to 50)
|
||||||
take_damage(rand(1,2))
|
take_damage(1)
|
||||||
if(51 to 200)
|
if(51 to 200)
|
||||||
take_damage(rand(2,3))
|
|
||||||
if(201 to 500)
|
|
||||||
take_damage(rand(3,4))
|
|
||||||
owner.reagents.add_reagent("toxin", 1)
|
owner.reagents.add_reagent("toxin", 1)
|
||||||
|
take_damage(1)
|
||||||
|
if(201 to 500)
|
||||||
|
take_damage(rand(2,3))
|
||||||
|
owner.reagents.add_reagent("toxin", 2)
|
||||||
if(501 to INFINITY)
|
if(501 to INFINITY)
|
||||||
take_damage(5)
|
take_damage(4)
|
||||||
owner.reagents.add_reagent("toxin", rand(3,5))
|
owner.reagents.add_reagent("toxin", rand(3,5))
|
||||||
|
|
||||||
/datum/organ/internal/proc/take_damage(amount, var/silent=0)
|
/datum/organ/internal/proc/take_damage(amount, var/silent=0)
|
||||||
|
|||||||
@@ -46,8 +46,8 @@
|
|||||||
|
|
||||||
if(fresh && prob(40))
|
if(fresh && prob(40))
|
||||||
fresh--
|
fresh--
|
||||||
var/datum/reagent/blood = reagents.reagent_list["blood"]
|
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
|
||||||
blood_splatter(src,blood,1)
|
blood_splatter(src,B,1)
|
||||||
|
|
||||||
health -= rand(1,3)
|
health -= rand(1,3)
|
||||||
if(health <= 0)
|
if(health <= 0)
|
||||||
@@ -215,8 +215,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
user << "\blue You take an experimental bite out of \the [src]."
|
user << "\blue You take an experimental bite out of \the [src]."
|
||||||
var/datum/reagent/blood = reagents.reagent_list["blood"]
|
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
|
||||||
blood_splatter(src,blood,1)
|
blood_splatter(src,B,1)
|
||||||
|
|
||||||
|
|
||||||
user.drop_from_inventory(src)
|
user.drop_from_inventory(src)
|
||||||
|
|||||||
@@ -66,13 +66,13 @@
|
|||||||
// TG uses a special garbage collector.. qdel(P)
|
// TG uses a special garbage collector.. qdel(P)
|
||||||
del(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all.
|
del(P) //so 10 thousand pictures items are not left in memory should an AI take them and then view them all.
|
||||||
|
|
||||||
/obj/item/device/camera/siliconcam/proc/deletepicture(obj/item/device/camera/siliconcam/cam)
|
/obj/item/device/camera/siliconcam/proc/deletepicture()
|
||||||
var/datum/picture/selection = selectpicture(cam)
|
var/datum/picture/selection = selectpicture()
|
||||||
|
|
||||||
if(!selection)
|
if(!selection)
|
||||||
return
|
return
|
||||||
|
|
||||||
cam.aipictures -= selection
|
aipictures -= selection
|
||||||
usr << "<span class='unconscious'>Image deleted</span>"
|
usr << "<span class='unconscious'>Image deleted</span>"
|
||||||
|
|
||||||
/obj/item/device/camera/siliconcam/ai_camera/can_capture_turf(turf/T, mob/user)
|
/obj/item/device/camera/siliconcam/ai_camera/can_capture_turf(turf/T, mob/user)
|
||||||
@@ -147,7 +147,12 @@
|
|||||||
set src in usr
|
set src in usr
|
||||||
|
|
||||||
// Explicitly only allow deletion from the local camera
|
// Explicitly only allow deletion from the local camera
|
||||||
deletepicture(src)
|
var/mob/living/silicon/robot/C = src.loc
|
||||||
|
if(C.connected_ai)
|
||||||
|
C << "Not allowed to delete from the remote database."
|
||||||
|
return
|
||||||
|
|
||||||
|
deletepicture()
|
||||||
|
|
||||||
obj/item/device/camera/siliconcam/proc/getsource()
|
obj/item/device/camera/siliconcam/proc/getsource()
|
||||||
if(istype(src.loc, /mob/living/silicon/ai))
|
if(istype(src.loc, /mob/living/silicon/ai))
|
||||||
|
|||||||
@@ -234,7 +234,7 @@
|
|||||||
user << "There is already a [nicetype] at that location."
|
user << "There is already a [nicetype] at that location."
|
||||||
return
|
return
|
||||||
|
|
||||||
anchored = 1
|
anchored = 1
|
||||||
if(ispipe)
|
if(ispipe)
|
||||||
level = 1 // We don't want disposal bins to disappear under the floors
|
level = 1 // We don't want disposal bins to disappear under the floors
|
||||||
density = 0
|
density = 0
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
//3 = code delta
|
//3 = code delta
|
||||||
|
|
||||||
//config.alert_desc_blue_downto
|
//config.alert_desc_blue_downto
|
||||||
|
/var/datum/announcement/priority/security/security_announcement_up = new(do_log = 0, do_newscast = 1, new_sound = sound('sound/misc/notice1.ogg'))
|
||||||
|
/var/datum/announcement/priority/security/security_announcement_down = new(do_log = 0, do_newscast = 1)
|
||||||
|
|
||||||
/proc/set_security_level(var/level)
|
/proc/set_security_level(var/level)
|
||||||
switch(level)
|
switch(level)
|
||||||
@@ -21,7 +23,7 @@
|
|||||||
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level)
|
if(level >= SEC_LEVEL_GREEN && level <= SEC_LEVEL_DELTA && level != security_level)
|
||||||
switch(level)
|
switch(level)
|
||||||
if(SEC_LEVEL_GREEN)
|
if(SEC_LEVEL_GREEN)
|
||||||
security_announcement.Announce("[config.alert_desc_green]", "Attention! Security level lowered to green")
|
security_announcement_down.Announce("[config.alert_desc_green]", "Attention! Security level lowered to green")
|
||||||
security_level = SEC_LEVEL_GREEN
|
security_level = SEC_LEVEL_GREEN
|
||||||
for(var/obj/machinery/firealarm/FA in machines)
|
for(var/obj/machinery/firealarm/FA in machines)
|
||||||
if(FA.z == 1 || FA.z == 5)
|
if(FA.z == 1 || FA.z == 5)
|
||||||
@@ -29,9 +31,9 @@
|
|||||||
FA.overlays += image('icons/obj/monitors.dmi', "overlay_green")
|
FA.overlays += image('icons/obj/monitors.dmi', "overlay_green")
|
||||||
if(SEC_LEVEL_BLUE)
|
if(SEC_LEVEL_BLUE)
|
||||||
if(security_level < SEC_LEVEL_BLUE)
|
if(security_level < SEC_LEVEL_BLUE)
|
||||||
security_announcement.Announce("[config.alert_desc_blue_upto]", "Attention! Security level elevated to blue")
|
security_announcement_up.Announce("[config.alert_desc_blue_upto]", "Attention! Security level elevated to blue")
|
||||||
else
|
else
|
||||||
security_announcement.Announce("[config.alert_desc_blue_downto]", "Attention! Security level lowered to blue")
|
security_announcement_down.Announce("[config.alert_desc_blue_downto]", "Attention! Security level lowered to blue")
|
||||||
security_level = SEC_LEVEL_BLUE
|
security_level = SEC_LEVEL_BLUE
|
||||||
for(var/obj/machinery/firealarm/FA in machines)
|
for(var/obj/machinery/firealarm/FA in machines)
|
||||||
if(FA.z == 1 || FA.z == 5)
|
if(FA.z == 1 || FA.z == 5)
|
||||||
@@ -39,9 +41,9 @@
|
|||||||
FA.overlays += image('icons/obj/monitors.dmi', "overlay_blue")
|
FA.overlays += image('icons/obj/monitors.dmi', "overlay_blue")
|
||||||
if(SEC_LEVEL_RED)
|
if(SEC_LEVEL_RED)
|
||||||
if(security_level < SEC_LEVEL_RED)
|
if(security_level < SEC_LEVEL_RED)
|
||||||
security_announcement.Announce("[config.alert_desc_red_upto]", "Attention! Code red!")
|
security_announcement_up.Announce("[config.alert_desc_red_upto]", "Attention! Code red!")
|
||||||
else
|
else
|
||||||
security_announcement.Announce("[config.alert_desc_red_downto]", "Attention! Code red!")
|
security_announcement_down.Announce("[config.alert_desc_red_downto]", "Attention! Code red!")
|
||||||
security_level = SEC_LEVEL_RED
|
security_level = SEC_LEVEL_RED
|
||||||
|
|
||||||
/* - At the time of commit, setting status displays didn't work properly
|
/* - At the time of commit, setting status displays didn't work properly
|
||||||
@@ -55,7 +57,7 @@
|
|||||||
FA.overlays += image('icons/obj/monitors.dmi', "overlay_red")
|
FA.overlays += image('icons/obj/monitors.dmi', "overlay_red")
|
||||||
|
|
||||||
if(SEC_LEVEL_DELTA)
|
if(SEC_LEVEL_DELTA)
|
||||||
security_announcement.Announce("[config.alert_desc_delta]", "Attention! Delta security level reached!")
|
security_announcement_up.Announce("[config.alert_desc_delta]", "Attention! Delta security level reached!")
|
||||||
security_level = SEC_LEVEL_DELTA
|
security_level = SEC_LEVEL_DELTA
|
||||||
for(var/obj/machinery/firealarm/FA in machines)
|
for(var/obj/machinery/firealarm/FA in machines)
|
||||||
if(FA.z == 1 || FA.z == 5)
|
if(FA.z == 1 || FA.z == 5)
|
||||||
|
|||||||
@@ -52,7 +52,10 @@
|
|||||||
"\blue You have made a bloodless incision on [target]'s [affected.display_name] with \the [tool].",)
|
"\blue You have made a bloodless incision on [target]'s [affected.display_name] with \the [tool].",)
|
||||||
//Could be cleaner ...
|
//Could be cleaner ...
|
||||||
affected.open = 1
|
affected.open = 1
|
||||||
affected.status |= ORGAN_BLEEDING
|
|
||||||
|
if(istype(target) && !(target.species.flags & NO_BLOOD))
|
||||||
|
affected.status |= ORGAN_BLEEDING
|
||||||
|
|
||||||
affected.createwound(CUT, 1)
|
affected.createwound(CUT, 1)
|
||||||
affected.clamp()
|
affected.clamp()
|
||||||
spread_germs_to_organ(affected, user)
|
spread_germs_to_organ(affected, user)
|
||||||
@@ -89,7 +92,10 @@
|
|||||||
user.visible_message("\blue [user] has constructed a prepared incision on and within [target]'s [affected.display_name] with \the [tool].", \
|
user.visible_message("\blue [user] has constructed a prepared incision on and within [target]'s [affected.display_name] with \the [tool].", \
|
||||||
"\blue You have constructed a prepared incision on and within [target]'s [affected.display_name] with \the [tool].",)
|
"\blue You have constructed a prepared incision on and within [target]'s [affected.display_name] with \the [tool].",)
|
||||||
affected.open = 1
|
affected.open = 1
|
||||||
affected.status |= ORGAN_BLEEDING
|
|
||||||
|
if(istype(target) && !(target.species.flags & NO_BLOOD))
|
||||||
|
affected.status |= ORGAN_BLEEDING
|
||||||
|
|
||||||
affected.createwound(CUT, 1)
|
affected.createwound(CUT, 1)
|
||||||
affected.clamp()
|
affected.clamp()
|
||||||
affected.open = 2
|
affected.open = 2
|
||||||
@@ -128,7 +134,10 @@
|
|||||||
user.visible_message("\blue [user] has made an incision on [target]'s [affected.display_name] with \the [tool].", \
|
user.visible_message("\blue [user] has made an incision on [target]'s [affected.display_name] with \the [tool].", \
|
||||||
"\blue You have made an incision on [target]'s [affected.display_name] with \the [tool].",)
|
"\blue You have made an incision on [target]'s [affected.display_name] with \the [tool].",)
|
||||||
affected.open = 1
|
affected.open = 1
|
||||||
affected.status |= ORGAN_BLEEDING
|
|
||||||
|
if(istype(target) && !(target.species.flags & NO_BLOOD))
|
||||||
|
affected.status |= ORGAN_BLEEDING
|
||||||
|
|
||||||
affected.createwound(CUT, 1)
|
affected.createwound(CUT, 1)
|
||||||
|
|
||||||
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||||
|
|||||||
@@ -327,7 +327,7 @@
|
|||||||
O.organ_data.rejecting = null
|
O.organ_data.rejecting = null
|
||||||
|
|
||||||
// Transfer over some blood data, if the organ doesn't have data.
|
// Transfer over some blood data, if the organ doesn't have data.
|
||||||
var/datum/reagent/blood/organ_blood = O.reagents.reagent_list["blood"]
|
var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in O.reagents.reagent_list
|
||||||
if(!organ_blood || !organ_blood.data["blood_DNA"])
|
if(!organ_blood || !organ_blood.data["blood_DNA"])
|
||||||
target.vessel.trans_to(O, 5, 1, 1)
|
target.vessel.trans_to(O, 5, 1, 1)
|
||||||
|
|
||||||
@@ -367,32 +367,32 @@
|
|||||||
|
|
||||||
if(!target.species)
|
if(!target.species)
|
||||||
user << "\red You have no idea what species this person is. Report this on the bug tracker."
|
user << "\red You have no idea what species this person is. Report this on the bug tracker."
|
||||||
return 0
|
return 2
|
||||||
|
|
||||||
var/o_is = (O.gender == PLURAL) ? "are" : "is"
|
var/o_is = (O.gender == PLURAL) ? "are" : "is"
|
||||||
var/o_a = (O.gender == PLURAL) ? "" : " a"
|
var/o_a = (O.gender == PLURAL) ? "" : "a "
|
||||||
var/o_do = (O.gender == PLURAL) ? "don't" : "doesn't"
|
var/o_do = (O.gender == PLURAL) ? "don't" : "doesn't"
|
||||||
|
|
||||||
if(target.species.has_organ[O.organ_tag])
|
if(target.species.has_organ[O.organ_tag])
|
||||||
|
|
||||||
if(!O.health)
|
if(!O.health)
|
||||||
user << "\red \The [O.organ_tag] [o_is] in no state to be transplanted."
|
user << "\red \The [O.organ_tag] [o_is] in no state to be transplanted."
|
||||||
return 0
|
return 2
|
||||||
|
|
||||||
if(!target.internal_organs_by_name[O.organ_tag])
|
if(!target.internal_organs_by_name[O.organ_tag])
|
||||||
organ_missing = 1
|
organ_missing = 1
|
||||||
else
|
else
|
||||||
user << "\red \The [target] already has [o_a][O.organ_tag]."
|
user << "\red \The [target] already has [o_a][O.organ_tag]."
|
||||||
return 0
|
return 2
|
||||||
|
|
||||||
if(O.organ_data && affected.name == O.organ_data.parent_organ)
|
if(O.organ_data && affected.name == O.organ_data.parent_organ)
|
||||||
organ_compatible = 1
|
organ_compatible = 1
|
||||||
else
|
else
|
||||||
user << "\red \The [O.organ_tag] [o_do] normally go in \the [affected.display_name]."
|
user << "\red \The [O.organ_tag] [o_do] normally go in \the [affected.display_name]."
|
||||||
return 0
|
return 2
|
||||||
else
|
else
|
||||||
user << "\red \A [target.species.name] doesn't normally have [o_a][O.organ_tag]."
|
user << "\red You're pretty sure [target.species.name_plural] don't normally have [o_a][O.organ_tag]."
|
||||||
return 0
|
return 2
|
||||||
|
|
||||||
return ..() && organ_missing && organ_compatible
|
return ..() && organ_missing && organ_compatible
|
||||||
|
|
||||||
@@ -412,7 +412,7 @@
|
|||||||
|
|
||||||
if(istype(O))
|
if(istype(O))
|
||||||
|
|
||||||
var/datum/reagent/blood/transplant_blood = O.reagents.reagent_list["blood"]
|
var/datum/reagent/blood/transplant_blood = locate(/datum/reagent/blood) in O.reagents.reagent_list
|
||||||
if(!transplant_blood)
|
if(!transplant_blood)
|
||||||
O.organ_data.transplant_data = list()
|
O.organ_data.transplant_data = list()
|
||||||
O.organ_data.transplant_data["species"] = target.species.name
|
O.organ_data.transplant_data["species"] = target.species.name
|
||||||
|
|||||||
@@ -77,21 +77,34 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
|||||||
|
|
||||||
E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no.
|
E.germ_level = max(germ_level,E.germ_level) //as funny as scrubbing microbes out with clean gloves is - no.
|
||||||
|
|
||||||
proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool)
|
proc/do_surgery(mob/living/carbon/M, mob/living/user, obj/item/tool)
|
||||||
if(!istype(M,/mob/living/carbon))
|
if(!istype(M))
|
||||||
return 0
|
return 0
|
||||||
if (user.a_intent == "harm") //check for Hippocratic Oath
|
if (user.a_intent == "harm") //check for Hippocratic Oath
|
||||||
return 0
|
return 0
|
||||||
|
if(M.op_stage.in_progress) //Can't operate on someone repeatedly.
|
||||||
|
user << "\red You can't operate on the patient while surgery is already in progress."
|
||||||
|
return 1
|
||||||
|
|
||||||
for(var/datum/surgery_step/S in surgery_steps)
|
for(var/datum/surgery_step/S in surgery_steps)
|
||||||
//check if tool is right or close enough and if this step is possible
|
//check if tool is right or close enough and if this step is possible
|
||||||
if( S.tool_quality(tool) && S.can_use(user, M, user.zone_sel.selecting, tool) && S.is_valid_target(M))
|
if(S.tool_quality(tool))
|
||||||
S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it
|
var/step_is_valid = S.can_use(user, M, user.zone_sel.selecting, tool)
|
||||||
//We had proper tools! (or RNG smiled.) and user did not move or change hands.
|
if(step_is_valid && S.is_valid_target(M))
|
||||||
if( prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
|
if(step_is_valid == 2) // This is a failure that already has a message for failing.
|
||||||
S.end_step(user, M, user.zone_sel.selecting, tool) //finish successfully
|
return 1
|
||||||
else if (tool in user.contents && user.Adjacent(M)) //or
|
M.op_stage.in_progress = 1
|
||||||
S.fail_step(user, M, user.zone_sel.selecting, tool) //malpractice~
|
S.begin_step(user, M, user.zone_sel.selecting, tool) //start on it
|
||||||
return 1 //don't want to do weapony things after surgery
|
//We had proper tools! (or RNG smiled.) and user did not move or change hands.
|
||||||
|
if(prob(S.tool_quality(tool)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
|
||||||
|
S.end_step(user, M, user.zone_sel.selecting, tool) //finish successfully
|
||||||
|
else if (tool in user.contents && user.Adjacent(M)) //or
|
||||||
|
S.fail_step(user, M, user.zone_sel.selecting, tool) //malpractice~
|
||||||
|
else // This failing silently was a pain.
|
||||||
|
user << "\red You must remain close to your patient to conduct surgery."
|
||||||
|
M.op_stage.in_progress = 0 // Clear the in-progress flag.
|
||||||
|
return 1 //don't want to do weapony things after surgery
|
||||||
|
|
||||||
if (user.a_intent == "help")
|
if (user.a_intent == "help")
|
||||||
user << "\red You can't see any useful way to use [tool] on [M]."
|
user << "\red You can't see any useful way to use [tool] on [M]."
|
||||||
return 1
|
return 1
|
||||||
@@ -116,6 +129,6 @@ proc/sort_surgeries()
|
|||||||
/datum/surgery_status/
|
/datum/surgery_status/
|
||||||
var/eyes = 0
|
var/eyes = 0
|
||||||
var/face = 0
|
var/face = 0
|
||||||
var/appendix = 0
|
|
||||||
var/head_reattach = 0
|
var/head_reattach = 0
|
||||||
var/current_organ
|
var/current_organ = "organ"
|
||||||
|
var/in_progress = 0
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
var/list/datum/disease2/effectholder/effects = list()
|
var/list/datum/disease2/effectholder/effects = list()
|
||||||
var/antigen = 0 // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here
|
var/antigen = 0 // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here
|
||||||
var/max_stage = 4
|
var/max_stage = 4
|
||||||
var/list/affected_species = list("Human","Unathi","Skrell","Tajaran")
|
var/list/affected_species = list("Human","Unathi","Skrell","Tajara")
|
||||||
|
|
||||||
/datum/disease2/disease/New()
|
/datum/disease2/disease/New()
|
||||||
uniqueID = rand(0,10000)
|
uniqueID = rand(0,10000)
|
||||||
|
|||||||
@@ -207,7 +207,6 @@
|
|||||||
M.r_hand = G
|
M.r_hand = G
|
||||||
G.layer = 20
|
G.layer = 20
|
||||||
G.affecting = src
|
G.affecting = src
|
||||||
src.grabbed_by += G
|
|
||||||
G.synch()
|
G.synch()
|
||||||
playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||||
for(var/mob/O in viewers(src, null))
|
for(var/mob/O in viewers(src, null))
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
@@ -347,7 +347,7 @@ macro "hotkeymode"
|
|||||||
is-disabled = false
|
is-disabled = false
|
||||||
elem
|
elem
|
||||||
name = "T"
|
name = "T"
|
||||||
command = "say"
|
command = ".say"
|
||||||
is-disabled = false
|
is-disabled = false
|
||||||
elem "w_key"
|
elem "w_key"
|
||||||
name = "W+REP"
|
name = "W+REP"
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
<div class="item" style="padding-top: 10px">
|
<div class="item" style="padding-top: 10px">
|
||||||
{{for data.auth_list}}
|
{{for data.auth_list}}
|
||||||
{{if value.auth_hash}}
|
{{if value.auth_hash}}
|
||||||
{{:helper.link(auth_name, 'eject', {'removeid' : value.auth_hash}, null, 'itemContentWide')}}
|
{{:helper.link(value.auth_name, 'eject', {'removeid' : value.auth_hash}, null, 'itemContentWide')}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{:helper.link("", 'eject', {'scanid' : 1}, null, 'itemContentWide')}}
|
{{:helper.link("", 'eject', {'scanid' : 1}, null, 'itemContentWide')}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|||||||
@@ -209,7 +209,7 @@
|
|||||||
<div class='item' style='width: 100%'>
|
<div class='item' style='width: 100%'>
|
||||||
{{for data.all_centcom_access}}
|
{{for data.all_centcom_access}}
|
||||||
<div class='itemContentWide'>
|
<div class='itemContentWide'>
|
||||||
{{:helper.link(value.desc, '', {'choice' : 'access', 'access_target' : value.ref, 'allowed' : allowed}, null, value.allowed ? 'selected' : null)}}
|
{{:helper.link(value.desc, '', {'choice' : 'access', 'access_target' : value.ref, 'allowed' : value.allowed}, null, value.allowed ? 'selected' : null)}}
|
||||||
</div>
|
</div>
|
||||||
{{/for}}
|
{{/for}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
BIN
sound/misc/notice1.ogg
Normal file
BIN
sound/misc/notice1.ogg
Normal file
Binary file not shown.
BIN
sound/misc/notice2.ogg
Normal file
BIN
sound/misc/notice2.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user