mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-04-26 18:11:54 +01:00
Merge branch 'master' of https://github.com/Fordoxia/CRUNCHParadise
This commit is contained in:
@@ -27,6 +27,7 @@ CREATE TABLE `characters` (
|
||||
`real_name` varchar(55) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`name_is_always_random` tinyint(1) NOT NULL,
|
||||
`gender` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`body_type` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`age` smallint(4) NOT NULL,
|
||||
`species` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`language` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
|
||||
9
SQL/updates/54-55.sql
Normal file
9
SQL/updates/54-55.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
# Updating DB from 54-55 - lewc
|
||||
# Adds a new `body_type` (gender sprite) column to the `characters` table
|
||||
|
||||
# Add the new column next to the existing `gender` one
|
||||
ALTER TABLE `characters`
|
||||
ADD COLUMN `body_type` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL AFTER `gender`;
|
||||
|
||||
# Set the `body_type` column to whatever's already in `gender`, so that it doesn't change existing characters
|
||||
UPDATE `characters` SET `body_type` = `gender` WHERE `gender` IS NOT NULL
|
||||
@@ -50,17 +50,18 @@
|
||||
#define DNA_UI_EYES_G 35
|
||||
#define DNA_UI_EYES_B 36
|
||||
#define DNA_UI_GENDER 37
|
||||
#define DNA_UI_BEARD_STYLE 38
|
||||
#define DNA_UI_HAIR_STYLE 39
|
||||
#define DNA_UI_HACC_STYLE 40
|
||||
#define DNA_UI_BACC_STYLE 41
|
||||
#define DNA_UI_HAIR_GRADIENT_STYLE 42
|
||||
#define DNA_UI_HEAD_MARK_STYLE 43
|
||||
#define DNA_UI_BODY_MARK_STYLE 44
|
||||
#define DNA_UI_TAIL_MARK_STYLE 45
|
||||
#define DNA_UI_PHYSIQUE 46
|
||||
#define DNA_UI_HEIGHT 47
|
||||
#define DNA_UI_LENGTH 48 // Update this when you add something, or you WILL break shit.
|
||||
#define DNA_UI_BODY_TYPE 38
|
||||
#define DNA_UI_BEARD_STYLE 39
|
||||
#define DNA_UI_HAIR_STYLE 40
|
||||
#define DNA_UI_HACC_STYLE 41
|
||||
#define DNA_UI_BACC_STYLE 42
|
||||
#define DNA_UI_HAIR_GRADIENT_STYLE 43
|
||||
#define DNA_UI_HEAD_MARK_STYLE 44
|
||||
#define DNA_UI_BODY_MARK_STYLE 45
|
||||
#define DNA_UI_TAIL_MARK_STYLE 46
|
||||
#define DNA_UI_PHYSIQUE 47
|
||||
#define DNA_UI_HEIGHT 48
|
||||
#define DNA_UI_LENGTH 49 // Update this when you add something, or you WILL break shit.
|
||||
|
||||
#define DNA_SE_LENGTH 55 // Was STRUCDNASIZE, size 27. 15 new blocks added = 42, plus room to grow.
|
||||
|
||||
|
||||
@@ -398,7 +398,7 @@
|
||||
#define INVESTIGATE_BOMB "bombs"
|
||||
|
||||
// The SQL version required by this version of the code
|
||||
#define SQL_VERSION 54
|
||||
#define SQL_VERSION 55
|
||||
|
||||
// Vending machine stuff
|
||||
#define CAT_NORMAL (1<<0)
|
||||
|
||||
@@ -43,8 +43,6 @@
|
||||
if(hairstyle == "Bald") //Just in case.
|
||||
valid_hairstyles += hairstyle
|
||||
continue
|
||||
if((gender == MALE && S.gender == FEMALE) || (gender == FEMALE && S.gender == MALE))
|
||||
continue
|
||||
if(species == "Machine") //If the user is a species who can have a robotic head...
|
||||
if(!robohead)
|
||||
robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"]
|
||||
@@ -72,8 +70,6 @@
|
||||
if(facialhairstyle == "Shaved") //Just in case.
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
continue
|
||||
if((gender == MALE && S.gender == FEMALE) || (gender == FEMALE && S.gender == MALE))
|
||||
continue
|
||||
if(species == "Machine") //If the user is a species who can have a robotic head...
|
||||
if(!robohead)
|
||||
robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"]
|
||||
@@ -171,10 +167,13 @@
|
||||
current_species = GLOB.all_species[species]
|
||||
|
||||
if(!current_species || current_species.name == "Human")
|
||||
if(gender==FEMALE)
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
switch(gender)
|
||||
if(FEMALE)
|
||||
return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
if(MALE)
|
||||
return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return capitalize(pick(GLOB.first_names_male + GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names))
|
||||
else
|
||||
return current_species.get_random_name(gender)
|
||||
|
||||
|
||||
@@ -23,15 +23,15 @@
|
||||
|
||||
|
||||
//more specialised stuff
|
||||
/proc/sanitize_gender(gender,neuter=0,plural=0, default="male")
|
||||
/proc/sanitize_gender(gender, neuter = FALSE, default = "male")
|
||||
switch(gender)
|
||||
if(MALE, FEMALE)return gender
|
||||
if(MALE, FEMALE, PLURAL)
|
||||
return gender
|
||||
if(NEUTER)
|
||||
if(neuter) return gender
|
||||
else return default
|
||||
if(PLURAL)
|
||||
if(plural) return gender
|
||||
else return default
|
||||
if(neuter)
|
||||
return gender
|
||||
else
|
||||
return default
|
||||
return default
|
||||
|
||||
/proc/sanitize_hexcolor(color, default="#000000")
|
||||
|
||||
@@ -22,12 +22,3 @@
|
||||
/area/asteroid/artifactroom
|
||||
name = "\improper Asteroid - Artifact"
|
||||
icon_state = "cave"
|
||||
|
||||
//Labor camp
|
||||
/area/mine/laborcamp
|
||||
name = "Labor Camp"
|
||||
icon_state = "brig"
|
||||
|
||||
/area/mine/laborcamp/security
|
||||
name = "Labor Camp Security"
|
||||
icon_state = "security"
|
||||
|
||||
@@ -66,14 +66,11 @@
|
||||
/area/awaycontent/a11
|
||||
icon_state = "awaycontent11"
|
||||
|
||||
/area/awaycontent/a11
|
||||
/area/awaycontent/a12
|
||||
icon_state = "awaycontent12"
|
||||
|
||||
/area/awaycontent/a12
|
||||
icon_state = "awaycontent13"
|
||||
|
||||
/area/awaycontent/a13
|
||||
icon_state = "awaycontent14"
|
||||
icon_state = "awaycontent13"
|
||||
|
||||
/area/awaycontent/a14
|
||||
icon_state = "awaycontent14"
|
||||
|
||||
@@ -136,6 +136,12 @@ GLOBAL_LIST_EMPTY(bad_blocks)
|
||||
var/list/bodyacc = GLOB.body_accessory_by_name.Find(character.body_accessory?.name || "None")
|
||||
SetUIValueRange(DNA_UI_BACC_STYLE, bodyacc, length(GLOB.body_accessory_by_name), 1)
|
||||
|
||||
switch(character.body_type)
|
||||
if(FEMALE)
|
||||
SetUIState(DNA_UI_BODY_TYPE, DNA_GENDER_FEMALE, TRUE)
|
||||
if(MALE)
|
||||
SetUIState(DNA_UI_BODY_TYPE, DNA_GENDER_MALE, TRUE)
|
||||
|
||||
//Set the Gender
|
||||
switch(character.gender)
|
||||
if(FEMALE)
|
||||
|
||||
@@ -154,6 +154,12 @@
|
||||
|
||||
H.s_tone = 35 - dna.GetUIValueRange(DNA_UI_SKIN_TONE, 220) // Value can be negative.
|
||||
|
||||
switch(dna.GetUIState(DNA_UI_BODY_TYPE))
|
||||
if(DNA_GENDER_FEMALE)
|
||||
H.change_body_type(FEMALE, FALSE)
|
||||
if(DNA_GENDER_MALE)
|
||||
H.change_body_type(MALE, FALSE)
|
||||
|
||||
switch(dna.GetUITriState(DNA_UI_GENDER))
|
||||
if(DNA_GENDER_FEMALE)
|
||||
H.change_gender(FEMALE, FALSE)
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
|
||||
|
||||
// This list is basically a copy of GLOB.greek_letters, but it also removes letters when a changeling spawns in with that ID
|
||||
GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega"))
|
||||
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/changelings = list()
|
||||
|
||||
/datum/game_mode/changeling
|
||||
name = "changeling"
|
||||
config_tag = "changeling"
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/datum/game_mode
|
||||
var/datum/team/cult/cult_team
|
||||
|
||||
/datum/game_mode/proc/get_cult_team()
|
||||
if(!cult_team)
|
||||
new /datum/team/cult() // assignment happens in create_team()
|
||||
|
||||
@@ -45,6 +45,51 @@
|
||||
/// Each item in this list can only be rolled once on average.
|
||||
var/list/single_antag_positions = list("Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer", "Quartermaster")
|
||||
|
||||
/// A list of all minds which have the traitor antag datum.
|
||||
var/list/datum/mind/traitors = list()
|
||||
/// An associative list with mindslave minds as keys and their master's minds as values.
|
||||
var/list/datum/mind/implanted = list()
|
||||
/// A list of all minds which have the changeling antag datum
|
||||
var/list/datum/mind/changelings = list()
|
||||
/// A list of all minds which have the vampire antag datum
|
||||
var/list/datum/mind/vampires = list()
|
||||
/// A list of all minds which are thralled by a vampire
|
||||
var/list/datum/mind/vampire_enthralled = list()
|
||||
/// A list of all minds which have the wizard special role
|
||||
var/list/datum/mind/wizards = list()
|
||||
/// A list of all minds that are wizard apprentices
|
||||
var/list/datum/mind/apprentices = list()
|
||||
|
||||
/// The cult team datum
|
||||
var/datum/team/cult/cult_team
|
||||
|
||||
/// How many abductor teams do we have
|
||||
var/abductor_teams = 0
|
||||
/// A list which contains the minds of all abductors
|
||||
var/list/datum/mind/abductors = list()
|
||||
/// A list which contains the minds of all abductees
|
||||
var/list/datum/mind/abductees = list()
|
||||
|
||||
/// A list of all the nuclear operatives' minds
|
||||
var/list/datum/mind/syndicates = list()
|
||||
|
||||
/// A list of all the minds of head revolutionaries
|
||||
var/list/datum/mind/head_revolutionaries = list()
|
||||
/// A list of all the minds of revolutionaries
|
||||
var/list/datum/mind/revolutionaries = list()
|
||||
/// The revololution team datum
|
||||
var/datum/team/revolution/rev_team
|
||||
|
||||
/// A list of all the minds with the superhero special role
|
||||
var/list/datum/mind/superheroes = list()
|
||||
/// A list of all the minds with the supervillain special role
|
||||
var/list/datum/mind/supervillains = list()
|
||||
/// A list of all the greyshirt minds
|
||||
var/list/datum/mind/greyshirts = list()
|
||||
|
||||
/// A list of all the minds that have the ERT special role
|
||||
var/list/datum/mind/ert = list()
|
||||
|
||||
/datum/game_mode/proc/announce() //to be calles when round starts
|
||||
to_chat(world, "<B>Notice</B>: [src] did not define announce()")
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
/datum/objective/abductee/party
|
||||
explanation_text = "You're throwing a huge rager. Make it as awesome as possible so the whole crew comes... OR ELSE!"
|
||||
|
||||
/datum/objective/abductee/pets
|
||||
/datum/objective/abductee/cooler_pets
|
||||
explanation_text = "All the pets around here suck. You need to make them cooler. Replace them with exotic beasts!"
|
||||
|
||||
/datum/objective/abductee/conspiracy
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
/datum/game_mode
|
||||
var/abductor_teams = 0
|
||||
var/list/datum/mind/abductors = list()
|
||||
var/list/datum/mind/abductees = list()
|
||||
|
||||
/datum/game_mode/abduction
|
||||
name = "abduction"
|
||||
config_tag = "abduction"
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
#define NUKESCALINGMODIFIER 6
|
||||
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/syndicates = list()
|
||||
|
||||
/proc/issyndicate(mob/living/M as mob)
|
||||
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.syndicates)
|
||||
|
||||
|
||||
@@ -4,11 +4,6 @@
|
||||
#define REV_VICTORY 1
|
||||
#define STATION_VICTORY 2
|
||||
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/head_revolutionaries = list()
|
||||
var/list/datum/mind/revolutionaries = list()
|
||||
var/datum/team/revolution/rev_team
|
||||
|
||||
/datum/game_mode/revolution
|
||||
name = "revolution"
|
||||
config_tag = "revolution"
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
/datum/game_mode
|
||||
/// A list of all minds which have the traitor antag datum.
|
||||
var/list/datum/mind/traitors = list()
|
||||
/// An associative list with mindslave minds as keys and their master's minds as values.
|
||||
var/list/datum/mind/implanted = list()
|
||||
|
||||
/datum/game_mode/traitor
|
||||
name = "traitor"
|
||||
config_tag = "traitor"
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/vampires = list()
|
||||
var/list/datum/mind/vampire_enthralled = list() //those controlled by a vampire
|
||||
|
||||
/datum/game_mode/vampire
|
||||
name = "vampire"
|
||||
config_tag = "vampire"
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/wizards = list()
|
||||
var/list/datum/mind/apprentices = list()
|
||||
|
||||
/datum/game_mode/wizard
|
||||
name = "wizard"
|
||||
config_tag = "wizard"
|
||||
|
||||
@@ -36,6 +36,10 @@
|
||||
|
||||
var/toggle_sound = 'sound/items/wirecutter.ogg'
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
var/list/localMotionTargets = list()
|
||||
var/detectTime = 0
|
||||
var/area/station/ai_monitored/area_motion = null
|
||||
var/alarm_delay = 30 // Don't forget, there's another 3 seconds in queueAlarm()
|
||||
|
||||
/obj/machinery/camera/Initialize(mapload, should_add_to_cameranet = TRUE)
|
||||
. = ..()
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
/obj/machinery/camera
|
||||
var/list/localMotionTargets = list()
|
||||
var/detectTime = 0
|
||||
var/area/station/ai_monitored/area_motion = null
|
||||
var/alarm_delay = 30 // Don't forget, there's another 3 seconds in queueAlarm()
|
||||
|
||||
/obj/machinery/camera/process()
|
||||
// motion camera event loop
|
||||
if(!isMotion())
|
||||
|
||||
@@ -134,11 +134,6 @@
|
||||
to_chat(user, "<span class='notice'>The electronic systems in this door are far too advanced for your primitive hacking peripherals.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/door/poddoor/multi_tile/impassable/two_tile_hor
|
||||
icon = 'icons/obj/doors/1x2blast_hor.dmi'
|
||||
width = 2
|
||||
dir = EAST
|
||||
|
||||
/obj/machinery/door/poddoor/multi_tile/impassable/four_tile_ver
|
||||
icon = 'icons/obj/doors/1x4blast_vert.dmi'
|
||||
width = 4
|
||||
|
||||
@@ -103,6 +103,20 @@
|
||||
|
||||
hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD)
|
||||
|
||||
//Action datums
|
||||
var/datum/action/innate/mecha/mech_eject/eject_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_internals/internals_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_lights/lights_action = new
|
||||
var/datum/action/innate/mecha/mech_view_stats/stats_action = new
|
||||
var/datum/action/innate/mecha/mech_defence_mode/defense_action = new
|
||||
var/datum/action/innate/mecha/mech_overload_mode/overload_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_thrusters/thrusters_action = new
|
||||
var/datum/effect_system/smoke_spread/smoke_system = new //not an action, but trigged by one
|
||||
var/datum/action/innate/mecha/mech_smoke/smoke_action = new
|
||||
var/datum/action/innate/mecha/mech_zoom/zoom_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new
|
||||
var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new
|
||||
|
||||
/obj/mecha/Initialize()
|
||||
. = ..()
|
||||
icon_state += "-open"
|
||||
|
||||
@@ -1,18 +1,3 @@
|
||||
/obj/mecha
|
||||
//Action datums
|
||||
var/datum/action/innate/mecha/mech_eject/eject_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_internals/internals_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_lights/lights_action = new
|
||||
var/datum/action/innate/mecha/mech_view_stats/stats_action = new
|
||||
var/datum/action/innate/mecha/mech_defence_mode/defense_action = new
|
||||
var/datum/action/innate/mecha/mech_overload_mode/overload_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_thrusters/thrusters_action = new
|
||||
var/datum/effect_system/smoke_spread/smoke_system = new //not an action, but trigged by one
|
||||
var/datum/action/innate/mecha/mech_smoke/smoke_action = new
|
||||
var/datum/action/innate/mecha/mech_zoom/zoom_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_phasing/phasing_action = new
|
||||
var/datum/action/innate/mecha/mech_switch_damtype/switch_damtype_action = new
|
||||
|
||||
/obj/mecha/proc/GrantActions(mob/living/user, human_occupant = 0)
|
||||
if(human_occupant)
|
||||
eject_action.Grant(user, src)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
var/looking_for_personality = 0
|
||||
var/mob/living/silicon/pai/pai
|
||||
var/list/faction = list("neutral") // The factions the pAI will inherit from the card
|
||||
var/current_emotion = 1
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
|
||||
|
||||
/obj/item/paicard/syndicate
|
||||
@@ -302,8 +303,6 @@
|
||||
overlays.Cut()
|
||||
overlays += "pai-off"
|
||||
|
||||
/obj/item/paicard
|
||||
var/current_emotion = 1
|
||||
/obj/item/paicard/proc/setEmotion(emotion)
|
||||
if(pai)
|
||||
overlays.Cut()
|
||||
|
||||
@@ -148,17 +148,6 @@
|
||||
icon_state = "com_cypherkey"
|
||||
channels = list("Command" = 1, "Security" = 1)
|
||||
|
||||
/*
|
||||
/obj/item/encryptionkey/headset_mine
|
||||
name = "Mining Radio Encryption Key"
|
||||
icon_state = "mine_cypherkey"
|
||||
channels = list("Mining" = 1)
|
||||
|
||||
/obj/item/encryptionkey/heads/qm
|
||||
name = "Quartermaster's Encryption Key"
|
||||
icon_state = "qm_cypherkey"
|
||||
channels = list("Cargo" = 1, "Mining" = 1)
|
||||
*/
|
||||
/obj/item/encryptionkey/headset_cargo
|
||||
name = "Supply Radio Encryption Key"
|
||||
icon_state = "cargo_cypherkey"
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
***********************************************************************/
|
||||
/obj/item/borg
|
||||
icon = 'icons/mob/robot_items.dmi'
|
||||
var/powerneeded // Percentage of power remaining required to run item
|
||||
|
||||
/obj/item/borg/stun
|
||||
name = "electrically-charged arm"
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
/obj/item/storage/box/disks
|
||||
name = "Diskette Box"
|
||||
icon_state = "disk_kit"
|
||||
icon_state = "disk_box"
|
||||
|
||||
/obj/item/storage/box/disks/populate_contents()
|
||||
for(var/i in 1 to 7)
|
||||
|
||||
@@ -209,7 +209,6 @@
|
||||
name = "DNA injector"
|
||||
desc = "Good. Let the hate flow through you."
|
||||
|
||||
|
||||
/obj/item/dnainjector/antitele
|
||||
name = "DNA-Injector (Anti-Tele.)"
|
||||
desc = "Will make you not able to control your mind."
|
||||
@@ -553,28 +552,6 @@
|
||||
block = GLOB.blindblock
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/telemut
|
||||
name = "DNA-Injector (Tele.)"
|
||||
desc = "Super brain man!"
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0xFFF
|
||||
forcedmutation = TRUE
|
||||
|
||||
/obj/item/dnainjector/telemut/Initialize()
|
||||
block = GLOB.teleblock
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/antitele
|
||||
name = "DNA-Injector (Anti-Tele.)"
|
||||
desc = "Will make you not able to control your mind."
|
||||
datatype = DNA2_BUF_SE
|
||||
value = 0x001
|
||||
forcedmutation = TRUE
|
||||
|
||||
/obj/item/dnainjector/antitele/Initialize()
|
||||
block = GLOB.teleblock
|
||||
..()
|
||||
|
||||
/obj/item/dnainjector/deafmut
|
||||
name = "DNA-Injector (Deaf)"
|
||||
desc = "Sorry, what did you say?"
|
||||
|
||||
@@ -169,16 +169,16 @@
|
||||
desc = "No matter what, do not EVER use this."
|
||||
payload = /obj/singularity
|
||||
|
||||
/obj/item/grenade/clusterbuster/tools
|
||||
name = "\improper Quick Repair Grenade"
|
||||
desc = "An assistant's every dream."
|
||||
payload = /obj/random/tool
|
||||
|
||||
/obj/item/grenade/clusterbuster/tools
|
||||
name = "\improper Engineering Deployment Platfom"
|
||||
desc = "For the that time when gearing up was just too hard."
|
||||
payload = /obj/random/tech_supply
|
||||
|
||||
/obj/item/grenade/clusterbuster/tide
|
||||
name = "\improper Quick Repair Grenade"
|
||||
desc = "An assistant's every dream."
|
||||
payload = /obj/random/tool
|
||||
|
||||
/obj/item/grenade/clusterbuster/toys
|
||||
name = "\improper Toy Delivery System"
|
||||
desc = "Who needs skill at arcades anyway?"
|
||||
|
||||
@@ -126,156 +126,6 @@
|
||||
//////////////////
|
||||
/* Common Boxes */
|
||||
//////////////////
|
||||
/obj/item/storage/box/gloves
|
||||
name = "box of latex gloves"
|
||||
desc = "Contains white gloves."
|
||||
icon_state = "latex"
|
||||
|
||||
/obj/item/storage/box/gloves/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
|
||||
/obj/item/storage/box/masks
|
||||
name = "sterile masks"
|
||||
desc = "This box contains masks of sterility."
|
||||
icon_state = "sterile"
|
||||
|
||||
/obj/item/storage/box/masks/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
|
||||
/obj/item/storage/box/syringes
|
||||
name = "syringes"
|
||||
desc = "A box full of syringes."
|
||||
desc = "A biohazard alert warning is printed on the box"
|
||||
icon_state = "syringe"
|
||||
|
||||
/obj/item/storage/box/syringes/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/reagent_containers/syringe(src)
|
||||
|
||||
/obj/item/storage/box/beakers
|
||||
name = "beaker box"
|
||||
icon_state = "beaker"
|
||||
|
||||
/obj/item/storage/box/beakers/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/reagent_containers/glass/beaker(src)
|
||||
|
||||
/obj/item/storage/box/beakers/bluespace
|
||||
name = "box of bluespace beakers"
|
||||
icon_state = "beaker"
|
||||
|
||||
/obj/item/storage/box/beakers/bluespace/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/reagent_containers/glass/beaker/bluespace(src)
|
||||
|
||||
/obj/item/storage/box/iv_bags
|
||||
name = "IV Bags"
|
||||
desc = "A box full of empty IV bags."
|
||||
icon_state = "beaker"
|
||||
|
||||
/obj/item/storage/box/iv_bags/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/reagent_containers/iv_bag(src)
|
||||
|
||||
/obj/item/storage/box/injectors
|
||||
name = "\improper DNA injectors"
|
||||
desc = "This box contains injectors it seems."
|
||||
|
||||
/obj/item/storage/box/injectors/populate_contents()
|
||||
for(var/I in 1 to 6)
|
||||
new /obj/item/dnainjector/h2m(src)
|
||||
|
||||
/obj/item/storage/box/slug
|
||||
name = "ammunition box (Slug)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "slugbox"
|
||||
|
||||
/obj/item/storage/box/slug/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun(src)
|
||||
|
||||
/obj/item/storage/box/buck
|
||||
name = "ammunition box (Buckshot)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "buckshotbox"
|
||||
|
||||
/obj/item/storage/box/buck/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
|
||||
/obj/item/storage/box/dragonsbreath
|
||||
name = "ammunition box (Dragonsbreath)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "dragonsbreathbox"
|
||||
|
||||
/obj/item/storage/box/dragonsbreath/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath(src)
|
||||
|
||||
/obj/item/storage/box/stun
|
||||
name = "ammunition box (Stun shells)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "stunbox"
|
||||
|
||||
/obj/item/storage/box/stun/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/stunslug(src)
|
||||
|
||||
/obj/item/storage/box/beanbag
|
||||
name = "ammunition box (Beanbag shells)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "beanbagbox"
|
||||
|
||||
/obj/item/storage/box/beanbag/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
/obj/item/storage/box/rubbershot
|
||||
name = "ammunition box (Rubbershot shells)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "rubbershotbox"
|
||||
|
||||
/obj/item/storage/box/rubbershot/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/rubbershot(src)
|
||||
|
||||
/obj/item/storage/box/tranquilizer
|
||||
name = "ammunition box (Tranquilizer darts)"
|
||||
desc = "A small box capable of holding seven shotgun shells."
|
||||
icon_state = "tranqbox"
|
||||
|
||||
/obj/item/storage/box/tranquilizer/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/tranquilizer(src)
|
||||
|
||||
/obj/item/storage/box/flashes
|
||||
name = "box of flashbulbs"
|
||||
desc = "<B>WARNING: Flashes can cause serious eye damage, protective eyewear is required.</B>"
|
||||
icon_state = "flashbang"
|
||||
|
||||
/obj/item/storage/box/flashes/populate_contents()
|
||||
for(var/I in 1 to 6)
|
||||
new /obj/item/flash(src)
|
||||
|
||||
/obj/item/storage/box/teargas
|
||||
name = "box of tear gas grenades (WARNING)"
|
||||
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness and skin irritation.</B>"
|
||||
icon_state = "flashbang"
|
||||
|
||||
/obj/item/storage/box/teargas/populate_contents()
|
||||
for(var/I in 1 to 7)
|
||||
new /obj/item/grenade/chem_grenade/teargas(src)
|
||||
|
||||
/obj/item/storage/box/emps
|
||||
name = "emp grenades"
|
||||
desc = "A box with 5 emp grenades."
|
||||
icon_state = "flashbang"
|
||||
|
||||
/obj/item/storage/box/emps/populate_contents()
|
||||
for(var/I in 1 to 5)
|
||||
new /obj/item/grenade/empgrenade(src)
|
||||
|
||||
/obj/item/storage/box/tapes
|
||||
name = "Tape Box"
|
||||
@@ -368,14 +218,6 @@
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/disk/plantgene(src)
|
||||
|
||||
/obj/item/storage/box/disks
|
||||
name = "genetics diskette box"
|
||||
icon_state = "disk_box"
|
||||
|
||||
/obj/item/storage/box/disks/populate_contents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/disk/data(src)
|
||||
|
||||
/obj/item/storage/box/PDAs
|
||||
name = "spare PDAs"
|
||||
desc = "A box of spare PDA microcomputers."
|
||||
|
||||
@@ -401,13 +401,6 @@
|
||||
mounted_head = null
|
||||
qdel(src)
|
||||
|
||||
/obj/item/spear/kidan
|
||||
name = "\improper Kidan spear"
|
||||
desc = "A spear brought over from the Kidan homeworld."
|
||||
base_icon_state = "kindanspear"
|
||||
icon_state = "kidanspear0"
|
||||
|
||||
|
||||
// DIY CHAINSAW
|
||||
/obj/item/chainsaw
|
||||
name = "chainsaw"
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
/turf/space/transit
|
||||
var/pushdirection // push things that get caught in the transit tile this direction
|
||||
plane = PLANE_SPACE
|
||||
icon_state = "black"
|
||||
dir = SOUTH
|
||||
|
||||
//Overwrite because we dont want people building rods in space.
|
||||
/turf/space/transit/attackby(obj/O as obj, mob/user as mob, params)
|
||||
@@ -107,10 +109,6 @@
|
||||
icon_state = "speedspace_ew_15"
|
||||
//-tg- stuff
|
||||
|
||||
/turf/space/transit
|
||||
icon_state = "black"
|
||||
dir = SOUTH
|
||||
|
||||
/turf/space/transit/horizontal
|
||||
dir = WEST
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ GLOBAL_PROTECT(href_token)
|
||||
var/rights = 0
|
||||
var/fakekey
|
||||
var/big_brother = FALSE
|
||||
var/current_tab = 0
|
||||
|
||||
/// Unique-to-session randomly generated token given to each admin to help add detail to logs on admin interactions with hrefs
|
||||
var/href_token
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/datum/admins
|
||||
var/current_tab =0
|
||||
|
||||
/datum/admins/proc/Secrets()
|
||||
|
||||
|
||||
|
||||
@@ -61,7 +61,8 @@
|
||||
custom_emotes,
|
||||
physique,
|
||||
height,
|
||||
cyborg_brain_type
|
||||
cyborg_brain_type,
|
||||
body_type
|
||||
FROM characters WHERE ckey=:ckey"}, list(
|
||||
"ckey" = C.ckey
|
||||
))
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
var/real_name //our character's name
|
||||
var/be_random_name = FALSE //whether we are a random name every round
|
||||
var/gender = MALE //gender of character (well duh)
|
||||
var/body_type = MALE //body sprite variant
|
||||
var/age = 30 //age of character
|
||||
var/b_type = "A+" //blood type (not-chooseable)
|
||||
var/underwear = "Nude" //underwear type
|
||||
@@ -118,13 +119,13 @@
|
||||
|
||||
var/markingcolourslist = list2params(m_colours)
|
||||
var/markingstyleslist = list2params(m_styles)
|
||||
if(!isemptylist(organ_data))
|
||||
if(length(organ_data))
|
||||
organ_list = list2params(organ_data)
|
||||
if(!isemptylist(rlimb_data))
|
||||
if(length(rlimb_data))
|
||||
rlimb_list = list2params(rlimb_data)
|
||||
if(!isemptylist(player_alt_titles))
|
||||
if(length(player_alt_titles))
|
||||
playertitlelist = list2params(player_alt_titles)
|
||||
if(!isemptylist(loadout_gear))
|
||||
if(length(loadout_gear))
|
||||
gearlist = json_encode(loadout_gear)
|
||||
|
||||
var/datum/db_query/firstquery = SSdbcore.NewQuery("SELECT slot FROM characters WHERE ckey=:ckey ORDER BY slot", list(
|
||||
@@ -141,6 +142,7 @@
|
||||
real_name=:real_name,
|
||||
name_is_always_random=:be_random_name,
|
||||
gender=:gender,
|
||||
body_type=:body_type,
|
||||
age=:age,
|
||||
species=:species,
|
||||
language=:language,
|
||||
@@ -193,7 +195,8 @@
|
||||
hair_gradient_colour=:h_grad_colour,
|
||||
hair_gradient_alpha=:h_grad_alpha,
|
||||
custom_emotes=:custom_emotes,
|
||||
cyborg_brain_type=:cyborg_brain_type
|
||||
cyborg_brain_type=:cyborg_brain_type,
|
||||
body_type=:body_type
|
||||
WHERE ckey=:ckey
|
||||
AND slot=:slot"}, list(
|
||||
// OH GOD SO MANY PARAMETERS
|
||||
@@ -201,6 +204,7 @@
|
||||
"real_name" = real_name,
|
||||
"be_random_name" = be_random_name,
|
||||
"gender" = gender,
|
||||
"body_type" = body_type,
|
||||
"age" = age,
|
||||
"species" = species,
|
||||
"language" = language,
|
||||
@@ -294,7 +298,7 @@
|
||||
player_alt_titles,
|
||||
disabilities, organ_data, rlimb_data, nanotrasen_relation, physique, height, speciesprefs,
|
||||
socks, body_accessory, gear, autohiss,
|
||||
hair_gradient, hair_gradient_offset, hair_gradient_colour, hair_gradient_alpha, custom_emotes, cyborg_brain_type)
|
||||
hair_gradient, hair_gradient_offset, hair_gradient_colour, hair_gradient_alpha, custom_emotes, cyborg_brain_type, body_type)
|
||||
VALUES
|
||||
(:ckey, :slot, :metadata, :name, :be_random_name, :gender,
|
||||
:age, :species, :language,
|
||||
@@ -321,7 +325,7 @@
|
||||
:playertitlelist,
|
||||
:disabilities, :organ_list, :rlimb_list, :nanotrasen_relation, :physique, :height, :speciesprefs,
|
||||
:socks, :body_accessory, :gearlist, :autohiss_mode,
|
||||
:h_grad_style, :h_grad_offset, :h_grad_colour, :h_grad_alpha, :custom_emotes, :cyborg_brain_type)
|
||||
:h_grad_style, :h_grad_offset, :h_grad_colour, :h_grad_alpha, :custom_emotes, :cyborg_brain_type, :body_type)
|
||||
"}, list(
|
||||
// This has too many params for anyone to look at this without going insae
|
||||
"ckey" = C.ckey,
|
||||
@@ -330,6 +334,7 @@
|
||||
"name" = real_name,
|
||||
"be_random_name" = be_random_name,
|
||||
"gender" = gender,
|
||||
"body_type" = body_type,
|
||||
"age" = age,
|
||||
"species" = species,
|
||||
"language" = language,
|
||||
@@ -394,6 +399,10 @@
|
||||
return 1
|
||||
|
||||
|
||||
/**
|
||||
* Load in and process the database's information on the player's character save.
|
||||
* The order of indices here is the relative order from get_query() in 20-load-characters.dm.
|
||||
*/
|
||||
/datum/character_save/proc/load(datum/db_query/query)
|
||||
//Character
|
||||
metadata = query.item[1]
|
||||
@@ -471,6 +480,7 @@
|
||||
physique = query.item[56]
|
||||
height = query.item[57]
|
||||
cyborg_brain_type = query.item[58]
|
||||
body_type = query.item[59]
|
||||
|
||||
//Sanitize
|
||||
var/datum/species/SP = GLOB.all_species[species]
|
||||
@@ -504,7 +514,7 @@
|
||||
real_name = random_name(gender, species)
|
||||
|
||||
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
|
||||
gender = sanitize_gender(gender, FALSE, !SP.has_gender)
|
||||
gender = sanitize_gender(gender, FALSE)
|
||||
age = sanitize_integer(age, SP.min_age, SP.max_age, initial(age))
|
||||
h_colour = sanitize_hexcolor(h_colour)
|
||||
h_sec_colour = sanitize_hexcolor(h_sec_colour)
|
||||
@@ -590,9 +600,10 @@
|
||||
gender = gender_override
|
||||
else
|
||||
gender = pick(MALE, FEMALE)
|
||||
underwear = random_underwear(gender, species)
|
||||
undershirt = random_undershirt(gender, species)
|
||||
socks = random_socks(gender, species)
|
||||
body_type = pick(MALE, FEMALE)
|
||||
underwear = random_underwear(body_type, species)
|
||||
undershirt = random_undershirt(body_type, species)
|
||||
socks = random_socks(body_type, species)
|
||||
if(length(GLOB.body_accessory_by_species[species]))
|
||||
body_accessory = random_body_accessory(species, S.optional_body_accessory)
|
||||
if(S.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE))
|
||||
@@ -794,7 +805,8 @@
|
||||
qdel(preview_icon)
|
||||
|
||||
var/g = "m"
|
||||
if(gender == FEMALE) g = "f"
|
||||
if(body_type == FEMALE)
|
||||
g = "f"
|
||||
|
||||
var/icon/icobase
|
||||
var/datum/species/current_species = GLOB.all_species[species]
|
||||
@@ -1808,6 +1820,7 @@
|
||||
character.gen_record = gen_record
|
||||
|
||||
character.change_gender(gender)
|
||||
character.body_type = body_type // TODO does this update the character properly or do we need a setter here
|
||||
character.age = age
|
||||
|
||||
//Head-specific
|
||||
@@ -1885,10 +1898,10 @@
|
||||
character.backbag = backbag
|
||||
|
||||
//Debugging report to track down a bug, which randomly assigned the plural gender to people.
|
||||
if(character.dna.species.has_gender && (character.gender in list(PLURAL, NEUTER)))
|
||||
if(character.gender == NEUTER)
|
||||
if(isliving(src)) //Ghosts get neuter by default
|
||||
message_admins("[key_name_admin(character)] has spawned with their gender as plural or neuter. Please notify coders.")
|
||||
character.change_gender(MALE)
|
||||
message_admins("[key_name_admin(character)] has spawned with their gender as neuter. Please notify coders.")
|
||||
character.change_gender(PLURAL)
|
||||
|
||||
character.change_eye_color(e_colour, skip_icons = TRUE)
|
||||
character.original_eye_color = e_colour
|
||||
|
||||
@@ -168,13 +168,13 @@
|
||||
if(S.bodyflags & HAS_TAIL_MARKINGS) //Species with tail markings.
|
||||
active_character.m_colours["tail"] = rand_hex_color()
|
||||
if("underwear")
|
||||
active_character.underwear = random_underwear(active_character.gender, active_character.species)
|
||||
active_character.underwear = random_underwear(active_character.body_type, active_character.species)
|
||||
ShowChoices(user)
|
||||
if("undershirt")
|
||||
active_character.undershirt = random_undershirt(active_character.gender, active_character.species)
|
||||
active_character.undershirt = random_undershirt(active_character.body_type, active_character.species)
|
||||
ShowChoices(user)
|
||||
if("socks")
|
||||
active_character.socks = random_socks(active_character.gender, active_character.species)
|
||||
active_character.socks = random_socks(active_character.body_type, active_character.species)
|
||||
ShowChoices(user)
|
||||
if("eyes")
|
||||
active_character.e_colour = rand_hex_color()
|
||||
@@ -226,8 +226,6 @@
|
||||
return
|
||||
if(prev_species != active_character.species)
|
||||
active_character.age = clamp(active_character.age, NS.min_age, NS.max_age)
|
||||
if(NS.has_gender && active_character.gender == PLURAL)
|
||||
active_character.gender = pick(MALE,FEMALE)
|
||||
var/datum/robolimb/robohead
|
||||
if(NS.bodyflags & ALL_RPARTS)
|
||||
var/head_model = "[!active_character.rlimb_data["head"] ? "Morpheus Cyberkinetics" : active_character.rlimb_data["head"]]"
|
||||
@@ -265,15 +263,15 @@
|
||||
// Don't wear another species' underwear!
|
||||
var/datum/sprite_accessory/SA = GLOB.underwear_list[active_character.underwear]
|
||||
if(!SA || !(active_character.species in SA.species_allowed))
|
||||
active_character.underwear = random_underwear(active_character.gender, active_character.species)
|
||||
active_character.underwear = random_underwear(active_character.body_type, active_character.species)
|
||||
|
||||
SA = GLOB.undershirt_list[active_character.undershirt]
|
||||
if(!SA || !(active_character.species in SA.species_allowed))
|
||||
active_character.undershirt = random_undershirt(active_character.gender, active_character.species)
|
||||
active_character.undershirt = random_undershirt(active_character.body_type, active_character.species)
|
||||
|
||||
SA = GLOB.socks_list[active_character.socks]
|
||||
if(!SA || !(active_character.species in SA.species_allowed))
|
||||
active_character.socks = random_socks(active_character.gender, active_character.species)
|
||||
active_character.socks = random_socks(active_character.body_type, active_character.species)
|
||||
|
||||
//reset skin tone and colour
|
||||
if(NS.bodyflags & (HAS_SKIN_TONE|HAS_ICON_SKIN_TONE))
|
||||
@@ -579,10 +577,6 @@
|
||||
if(facialhairstyle == "Shaved") //Just in case.
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
continue
|
||||
if(active_character.gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(active_character.gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(S.bodyflags & ALL_RPARTS) //Species that can use prosthetic heads.
|
||||
var/head_model
|
||||
if(!active_character.rlimb_data["head"]) //Handle situations where the head is default.
|
||||
@@ -608,9 +602,10 @@
|
||||
var/list/valid_underwear = list()
|
||||
for(var/underwear in GLOB.underwear_list)
|
||||
var/datum/sprite_accessory/SA = GLOB.underwear_list[underwear]
|
||||
if(active_character.gender == MALE && SA.gender == FEMALE)
|
||||
// soon...
|
||||
if(active_character.body_type == MALE && SA.body_type == FEMALE)
|
||||
continue
|
||||
if(active_character.gender == FEMALE && SA.gender == MALE)
|
||||
if(active_character.body_type == FEMALE && SA.body_type == MALE)
|
||||
continue
|
||||
if(!(active_character.species in SA.species_allowed))
|
||||
continue
|
||||
@@ -624,12 +619,12 @@
|
||||
var/list/valid_undershirts = list()
|
||||
for(var/undershirt in GLOB.undershirt_list)
|
||||
var/datum/sprite_accessory/SA = GLOB.undershirt_list[undershirt]
|
||||
if(active_character.gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(active_character.gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(!(active_character.species in SA.species_allowed))
|
||||
continue
|
||||
if(active_character.body_type == MALE && SA.body_type == FEMALE)
|
||||
continue
|
||||
if(active_character.body_type == FEMALE && SA.body_type == MALE)
|
||||
continue
|
||||
valid_undershirts[undershirt] = GLOB.undershirt_list[undershirt]
|
||||
sortTim(valid_undershirts, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
var/new_undershirt = tgui_input_list(user, "Choose your character's undershirt", "Character Preference", valid_undershirts)
|
||||
@@ -641,12 +636,12 @@
|
||||
var/list/valid_sockstyles = list()
|
||||
for(var/sockstyle in GLOB.socks_list)
|
||||
var/datum/sprite_accessory/SA = GLOB.socks_list[sockstyle]
|
||||
if(active_character.gender == MALE && SA.gender == FEMALE)
|
||||
continue
|
||||
if(active_character.gender == FEMALE && SA.gender == MALE)
|
||||
continue
|
||||
if(!(active_character.species in SA.species_allowed))
|
||||
continue
|
||||
if(active_character.body_type == MALE && SA.body_type == FEMALE)
|
||||
continue
|
||||
if(active_character.body_type == FEMALE && SA.body_type == MALE)
|
||||
continue
|
||||
valid_sockstyles[sockstyle] = GLOB.socks_list[sockstyle]
|
||||
sortTim(valid_sockstyles, GLOBAL_PROC_REF(cmp_text_asc))
|
||||
var/new_socks = tgui_input_list(user, "Choose your character's socks", "Character Preference", valid_sockstyles)
|
||||
@@ -896,23 +891,25 @@
|
||||
toggles ^= PREFTOGGLE_DONATOR_PUBLIC
|
||||
|
||||
if("gender")
|
||||
if(!S.has_gender)
|
||||
var/newgender = tgui_input_list(user, "Who are you?", "Choose Gender", list("Male", "Female", "Genderless"))
|
||||
if(!newgender)
|
||||
return
|
||||
switch(newgender)
|
||||
if("Male")
|
||||
active_character.gender = MALE
|
||||
if("Female")
|
||||
active_character.gender = FEMALE
|
||||
if("Genderless")
|
||||
active_character.gender = PLURAL
|
||||
else
|
||||
if(active_character.gender == MALE)
|
||||
active_character.gender = FEMALE
|
||||
else
|
||||
var/newgender = tgui_input_list(user, "Who are you?", "Choose Gender", list("Male", "Female", "Genderless"))
|
||||
if(!newgender)
|
||||
return
|
||||
switch(newgender)
|
||||
if("Male")
|
||||
|
||||
active_character.gender = MALE
|
||||
active_character.underwear = random_underwear(active_character.gender)
|
||||
if("Female")
|
||||
active_character.gender = FEMALE
|
||||
if("Genderless")
|
||||
active_character.gender = PLURAL
|
||||
|
||||
if("body_type")
|
||||
if(active_character.body_type == MALE)
|
||||
active_character.body_type = FEMALE
|
||||
else
|
||||
active_character.body_type = MALE
|
||||
|
||||
active_character.underwear = random_underwear(active_character.body_type)
|
||||
|
||||
if("hear_adminhelps")
|
||||
sound ^= SOUND_ADMINHELP
|
||||
|
||||
@@ -195,11 +195,12 @@ GLOBAL_LIST_INIT(special_role_times, list( //minimum age (in days) for accounts
|
||||
dat += "</td></tr></table>"
|
||||
dat += "<table width='100%'><tr><td width='405px' height='200px' valign='top'>"
|
||||
dat += "<h2>Identity</h2>"
|
||||
dat += "<b>Gender:</b> <a href='byond://?_src_=prefs;preference=gender'>[active_character.gender == MALE ? "Male" : (active_character.gender == FEMALE ? "Female" : "Genderless")]</a>"
|
||||
dat += "<br>"
|
||||
dat += "<b>Age:</b> <a href='byond://?_src_=prefs;preference=age;task=input'>[active_character.age]</a><br>"
|
||||
dat += "<b>Body:</b> <a href='byond://?_src_=prefs;preference=all;task=random'>(®)</a><br>"
|
||||
dat += "<b>Species:</b> <a href='byond://?_src_=prefs;preference=species;task=input'>[active_character.species]</a><br>"
|
||||
dat += "<b>Gender:</b> <a href='byond://?_src_=prefs;preference=gender'>[active_character.gender == MALE ? "Male" : (active_character.gender == FEMALE ? "Female" : "Genderless")]</a><br>"
|
||||
dat += "<b>Body Type:</b> <a href='byond://?_src_=prefs;preference=body_type'>[active_character.body_type == MALE ? "Masculine" : "Feminine"]</a>"
|
||||
dat += "<br>"
|
||||
if(active_character.species == "Vox") // Purge these bastards
|
||||
dat += "<b>N2 Tank:</b> <a href='byond://?_src_=prefs;preference=speciesprefs;task=input'>[active_character.speciesprefs ? "Large N2 Tank" : "Specialized N2 Tank"]</a><br>"
|
||||
if(active_character.species == "Plasmaman")
|
||||
|
||||
@@ -262,6 +262,7 @@
|
||||
var/safe_from_poison = FALSE
|
||||
strip_delay = 20
|
||||
put_on_delay = 40
|
||||
var/transfer_blood = FALSE
|
||||
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/clothing/species/vox/gloves.dmi',
|
||||
|
||||
@@ -5,6 +5,26 @@
|
||||
item_state = "boxing"
|
||||
put_on_delay = 60
|
||||
species_exception = list(/datum/species/golem) // now you too can be a golem boxing champion
|
||||
var/datum/martial_art/boxing/style
|
||||
|
||||
/obj/item/clothing/gloves/boxing/Initialize()
|
||||
. = ..()
|
||||
style = new()
|
||||
|
||||
/obj/item/clothing/gloves/boxing/equipped(mob/user, slot)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == SLOT_HUD_GLOVES)
|
||||
var/mob/living/carbon/human/H = user
|
||||
style.teach(H, TRUE)
|
||||
|
||||
/obj/item/clothing/gloves/boxing/dropped(mob/user)
|
||||
..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.get_item_by_slot(SLOT_HUD_GLOVES) == src)
|
||||
style.remove(H)
|
||||
|
||||
/obj/item/clothing/gloves/boxing/green
|
||||
icon_state = "boxinggreen"
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
name = "collectable slime cap!"
|
||||
desc = "It just latches right in place!"
|
||||
icon_state = "slime"
|
||||
icon_state = "headslime"
|
||||
item_state = "headslime"
|
||||
|
||||
/obj/item/clothing/head/collectable/xenom
|
||||
name = "collectable xenomorph helmet!"
|
||||
@@ -79,12 +80,6 @@
|
||||
"Grey" = 'icons/mob/clothing/species/grey/helmet.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/collectable/slime
|
||||
name = "collectable slime hat"
|
||||
desc = "Just like a real Brain Slug!"
|
||||
icon_state = "headslime"
|
||||
item_state = "headslime"
|
||||
|
||||
/obj/item/clothing/head/collectable/flatcap
|
||||
name = "collectable flat cap"
|
||||
desc = "A Collectable farmer's Flat Cap!"
|
||||
|
||||
@@ -126,14 +126,6 @@
|
||||
"Grey" = 'icons/mob/clothing/species/grey/head.dmi'
|
||||
)
|
||||
|
||||
/obj/item/clothing/head/that
|
||||
name = "sturdy top-hat"
|
||||
desc = "It's an amish looking armored top hat."
|
||||
icon_state = "tophat"
|
||||
item_state = "that"
|
||||
flags_inv = 0
|
||||
|
||||
|
||||
/obj/item/clothing/head/greenbandana
|
||||
name = "green bandana"
|
||||
desc = "It's a green bandana with some fine nanotech lining."
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
name = "brown shoes"
|
||||
desc = "A pair of brown shoes."
|
||||
icon_state = "brown"
|
||||
item_color = "brown"
|
||||
|
||||
/obj/item/clothing/shoes/brown/captain
|
||||
item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way.
|
||||
@@ -59,11 +60,6 @@
|
||||
icon_state = "purple"
|
||||
item_color = "purple"
|
||||
|
||||
/obj/item/clothing/shoes/brown
|
||||
name = "brown shoes"
|
||||
icon_state = "brown"
|
||||
item_color = "brown"
|
||||
|
||||
/obj/item/clothing/shoes/red
|
||||
name = "red shoes"
|
||||
desc = "Stylish red shoes."
|
||||
|
||||
@@ -146,11 +146,6 @@
|
||||
icon_state = "lightgreen"
|
||||
item_color = "lightgreen"
|
||||
|
||||
/obj/item/clothing/under/color/lightblue
|
||||
name = "light blue jumpsuit"
|
||||
icon_state = "lightblue"
|
||||
item_color = "lightblue"
|
||||
|
||||
/obj/item/clothing/under/color/lightbrown
|
||||
name = "light brown jumpsuit"
|
||||
icon_state = "lightbrown"
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/obj/item/clothing/gloves
|
||||
var/transfer_blood = 0
|
||||
|
||||
/obj/item/reagent_containers/glass/rag
|
||||
name = "damp rag"
|
||||
desc = "For cleaning up messes, you suppose."
|
||||
|
||||
@@ -562,6 +562,10 @@
|
||||
bitesize = 3
|
||||
list_reagents = list("protein" = 4, "vitamin" = 4)
|
||||
|
||||
/obj/item/food/snacks/organ/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
|
||||
/obj/item/food/snacks/appendix
|
||||
//yes, this is the same as meat. I might do something different in future
|
||||
name = "appendix"
|
||||
|
||||
@@ -387,13 +387,6 @@
|
||||
)
|
||||
result = /obj/item/food/snacks/soup/coldchili
|
||||
|
||||
/datum/recipe/microwave/spellburger
|
||||
items = list(
|
||||
/obj/item/food/snacks/bun,
|
||||
/obj/item/clothing/head/wizard/fake
|
||||
)
|
||||
result = /obj/item/food/snacks/burger/spell
|
||||
|
||||
/datum/recipe/microwave/spellburger
|
||||
items = list(
|
||||
/obj/item/food/snacks/bun,
|
||||
|
||||
@@ -1,13 +1,3 @@
|
||||
/* Example for reference when defining recipes
|
||||
/datum/crafting_recipe/food
|
||||
name = "" //in-game display name
|
||||
reqs[] = list() //type paths of items/reagents consumed associated with how many are needed (equivalent to var/list/items and var/list/reagents combined)
|
||||
result //type path of item resulting from this craft
|
||||
tools[] = list() //type paths of items needed but not consumed
|
||||
time = 30 //time in deciseconds
|
||||
parts[] = list() //type paths of items that will be placed in the result
|
||||
*/
|
||||
|
||||
/datum/crafting_recipe/sandwich
|
||||
name = "Sandwich"
|
||||
reqs = list(
|
||||
|
||||
@@ -411,8 +411,6 @@
|
||||
/obj/effect/mapping_helpers/airlock/access/all/service/chapel_office
|
||||
access = ACCESS_CHAPEL_OFFICE
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/access/all/service/crematorium
|
||||
access = ACCESS_CREMATORIUM
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/access/all/service/crematorium
|
||||
access = ACCESS_CREMATORIUM
|
||||
|
||||
@@ -414,9 +414,6 @@
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/service/crematorium
|
||||
access = ACCESS_CREMATORIUM
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/service/crematorium
|
||||
access = ACCESS_CREMATORIUM
|
||||
|
||||
/obj/effect/mapping_helpers/airlock/windoor/access/all/service/library
|
||||
access = ACCESS_LIBRARY
|
||||
|
||||
|
||||
@@ -256,31 +256,6 @@
|
||||
else
|
||||
to_chat(H, "<span class='warning'>Your hands are full.</span>")
|
||||
|
||||
//ITEMS
|
||||
|
||||
/obj/item/clothing/gloves/boxing
|
||||
var/datum/martial_art/boxing/style
|
||||
|
||||
/obj/item/clothing/gloves/boxing/Initialize()
|
||||
. = ..()
|
||||
style = new()
|
||||
|
||||
/obj/item/clothing/gloves/boxing/equipped(mob/user, slot)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == SLOT_HUD_GLOVES)
|
||||
var/mob/living/carbon/human/H = user
|
||||
style.teach(H, TRUE)
|
||||
return
|
||||
|
||||
/obj/item/clothing/gloves/boxing/dropped(mob/user)
|
||||
..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.get_item_by_slot(SLOT_HUD_GLOVES) == src)
|
||||
style.remove(H)
|
||||
|
||||
/obj/item/storage/belt/champion/wrestling
|
||||
name = "Wrestling Belt"
|
||||
var/datum/martial_art/wrestling/style
|
||||
|
||||
@@ -23,47 +23,6 @@
|
||||
prefs.active_character.autohiss_mode = AUTOHISS_OFF
|
||||
to_chat(src, "Auto-hiss is now OFF.")
|
||||
|
||||
/datum/species/unathi
|
||||
autohiss_basic_map = list(
|
||||
"s" = list("ss", "sss", "ssss")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"x" = list("ks", "kss", "ksss")
|
||||
)
|
||||
autohiss_exempt = list("Sinta'unathi")
|
||||
|
||||
/datum/species/tajaran
|
||||
autohiss_basic_map = list(
|
||||
"r" = list("rr", "rrr", "rrrr")
|
||||
)
|
||||
autohiss_exempt = list("Siik'tajr")
|
||||
|
||||
/datum/species/plasmaman
|
||||
autohiss_basic_map = list(
|
||||
"s" = list("ss", "sss", "ssss")
|
||||
)
|
||||
|
||||
/datum/species/kidan
|
||||
autohiss_basic_map = list(
|
||||
"z" = list("zz", "zzz", "zzzz"),
|
||||
"v" = list("vv", "vvv", "vvvv")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"s" = list("z", "zs", "zzz", "zzsz")
|
||||
)
|
||||
autohiss_exempt = list("Chittin")
|
||||
|
||||
/datum/species/drask
|
||||
autohiss_basic_map = list(
|
||||
"o" = list ("oo", "ooo"),
|
||||
"u" = list ("uu", "uuu")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"m" = list ("mm", "mmm")
|
||||
)
|
||||
autohiss_exempt = list("Orluum")
|
||||
|
||||
|
||||
/datum/species/proc/handle_autohiss(message, datum/language/lang, mode)
|
||||
if(!autohiss_basic_map)
|
||||
return message
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define XENO_TOTAL_LAYERS 6
|
||||
/mob/living/carbon/alien/humanoid
|
||||
name = "alien"
|
||||
icon_state = "alien_s"
|
||||
@@ -11,6 +12,7 @@
|
||||
var/alien_slash_damage = 20 //Aliens deal a good amount of damage on harm intent
|
||||
var/alien_movement_delay = 0 //This can be + or -, how fast an alien moves
|
||||
var/temperature_resistance = T0C+75
|
||||
var/list/overlays_standing[XENO_TOTAL_LAYERS]
|
||||
pass_flags = PASSTABLE
|
||||
hud_type = /datum/hud/alien
|
||||
|
||||
@@ -96,3 +98,5 @@ GLOBAL_LIST_INIT(strippable_alien_humanoid_items, create_strippable_list(list(
|
||||
|
||||
/mob/living/carbon/alien/humanoid/get_permeability_protection()
|
||||
return 0.8
|
||||
|
||||
#undef XENO_TOTAL_LAYERS
|
||||
|
||||
@@ -5,12 +5,8 @@
|
||||
#define X_R_HAND_LAYER 4
|
||||
#define X_TARGETED_LAYER 5
|
||||
#define X_FIRE_LAYER 6
|
||||
#define X_TOTAL_LAYERS 6
|
||||
/////////////////////////////////
|
||||
|
||||
/mob/living/carbon/alien/humanoid
|
||||
var/list/overlays_standing[X_TOTAL_LAYERS]
|
||||
|
||||
/mob/living/carbon/alien/humanoid/update_icons()
|
||||
overlays.Cut()
|
||||
for(var/image/I in overlays_standing)
|
||||
@@ -144,4 +140,3 @@
|
||||
#undef X_R_HAND_LAYER
|
||||
#undef X_TARGETED_LAYER
|
||||
#undef X_FIRE_LAYER
|
||||
#undef X_TOTAL_LAYERS
|
||||
|
||||
@@ -4,27 +4,28 @@
|
||||
AC.ui_interact(user)
|
||||
|
||||
/mob/living/carbon/human/proc/change_gender(new_gender, update_dna = TRUE)
|
||||
var/obj/item/organ/external/head/H = bodyparts_by_name["head"]
|
||||
if(gender == new_gender || (gender == PLURAL && !dna.species.has_gender))
|
||||
if(gender == new_gender)
|
||||
return
|
||||
|
||||
gender = new_gender
|
||||
|
||||
if(istype(H))
|
||||
var/datum/sprite_accessory/hair/current_hair = GLOB.hair_styles_full_list[H.h_style]
|
||||
if(current_hair.gender != NEUTER && current_hair.gender != gender)
|
||||
reset_head_hair()
|
||||
|
||||
var/datum/sprite_accessory/hair/current_fhair = GLOB.facial_hair_styles_list[H.f_style]
|
||||
if(current_fhair.gender != NEUTER && current_fhair.gender != gender)
|
||||
reset_facial_hair()
|
||||
|
||||
if(update_dna)
|
||||
update_dna()
|
||||
sync_organ_dna(assimilate = FALSE)
|
||||
update_body()
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/human/proc/change_body_type(new_body, update_dna = TRUE)
|
||||
if(!new_body || new_body == body_type)
|
||||
return
|
||||
|
||||
body_type = new_body
|
||||
|
||||
if(update_dna)
|
||||
update_dna()
|
||||
sync_organ_dna(FALSE)
|
||||
update_body(TRUE)
|
||||
|
||||
/mob/living/carbon/human/proc/change_hair(hair_style, fluff)
|
||||
var/obj/item/organ/external/head/H = get_organ("head")
|
||||
|
||||
@@ -373,8 +374,6 @@
|
||||
if(hairstyle == "Bald") //Just in case.
|
||||
valid_hairstyles += hairstyle
|
||||
continue
|
||||
if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE))
|
||||
continue
|
||||
if(H.dna.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
|
||||
var/datum/robolimb/robohead = GLOB.all_robolimbs[H.model]
|
||||
if((H.dna.species.name in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
||||
@@ -401,8 +400,6 @@
|
||||
if(facialhairstyle == "Shaved") //Just in case.
|
||||
valid_facial_hairstyles += facialhairstyle
|
||||
continue
|
||||
if((H.gender == MALE && S.gender == FEMALE) || (H.gender == FEMALE && S.gender == MALE))
|
||||
continue
|
||||
if(H.dna.species.bodyflags & ALL_RPARTS) //If the user is a species who can have a robotic head...
|
||||
var/datum/robolimb/robohead = GLOB.all_robolimbs[H.model]
|
||||
if(H.dna.species.name in S.species_allowed) //If this is a facial hair style native to the user's species...
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
var/height = "average height"
|
||||
/// Players physique (even MORE fluff)
|
||||
var/physique = "average"
|
||||
/// The body type associated with the body
|
||||
var/body_type = MALE
|
||||
|
||||
var/underwear = "Nude" //Which underwear the player wants
|
||||
var/undershirt = "Nude" //Which undershirt the player wants
|
||||
|
||||
@@ -1087,9 +1087,6 @@
|
||||
if(oldspecies.default_language)
|
||||
remove_language(oldspecies.default_language)
|
||||
|
||||
if(gender == PLURAL && oldspecies.has_gender)
|
||||
change_gender(pick(MALE, FEMALE))
|
||||
|
||||
oldspecies.handle_dna(src, TRUE) // Remove any mutations that belong to the old species
|
||||
|
||||
oldspecies.on_species_loss(src)
|
||||
|
||||
@@ -118,7 +118,6 @@
|
||||
var/forced_heartattack = FALSE //Some species have blood, but we still want them to have heart attacks
|
||||
var/dies_at_threshold = FALSE // Do they die or get knocked out at specific thresholds, or do they go through complex crit?
|
||||
var/can_revive_by_healing // Determines whether or not this species can be revived by simply healing them
|
||||
var/has_gender = TRUE
|
||||
var/blacklisted = FALSE
|
||||
var/dangerous_existence = FALSE
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT
|
||||
clothing_flags = HAS_SOCKS
|
||||
default_hair_colour = "#000000"
|
||||
has_gender = FALSE
|
||||
bodyflags = SHAVED
|
||||
dietflags = DIET_HERB //Diona regenerate nutrition in light and water, no diet necessary, but if they must, they eat other plants *scream
|
||||
taste_sensitivity = TASTE_SENSITIVITY_DULL
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
species_traits = list(LIPS, NO_HAIR)
|
||||
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT
|
||||
bodyflags = HAS_SKIN_TONE | HAS_BODY_MARKINGS | BALD | SHAVED
|
||||
has_gender = FALSE
|
||||
dietflags = DIET_OMNI
|
||||
|
||||
cold_level_1 = -1 //Default 260 - Lower is better
|
||||
@@ -58,6 +57,14 @@
|
||||
"eyes" = /obj/item/organ/internal/eyes/drask, //5 darksight.
|
||||
"brain" = /obj/item/organ/internal/brain/drask
|
||||
)
|
||||
autohiss_basic_map = list(
|
||||
"o" = list ("oo", "ooo"),
|
||||
"u" = list ("uu", "uuu")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"m" = list ("mm", "mmm")
|
||||
)
|
||||
autohiss_exempt = list("Orluum")
|
||||
|
||||
/datum/species/drask/get_species_runechat_color(mob/living/carbon/human/H)
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
|
||||
@@ -143,21 +143,21 @@
|
||||
/datum/species/golem/plasma/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
..()
|
||||
if(ishuman(C))
|
||||
var/datum/action/innate/ignite/ignite = new()
|
||||
ignite.Grant(C)
|
||||
var/datum/action/innate/golem_ignite/golem_ignite = new()
|
||||
golem_ignite.Grant(C)
|
||||
|
||||
/datum/species/golem/plasma/on_species_loss(mob/living/carbon/C)
|
||||
for(var/datum/action/innate/ignite/ignite in C.actions)
|
||||
ignite.Remove(C)
|
||||
for(var/datum/action/innate/golem_ignite/golem_ignite in C.actions)
|
||||
golem_ignite.Remove(C)
|
||||
..()
|
||||
|
||||
/datum/action/innate/ignite
|
||||
/datum/action/innate/golem_ignite
|
||||
name = "Ignite"
|
||||
desc = "Set yourself aflame, bringing yourself closer to exploding!"
|
||||
check_flags = AB_CHECK_CONSCIOUS
|
||||
button_icon_state = "sacredflame"
|
||||
|
||||
/datum/action/innate/ignite/Activate()
|
||||
/datum/action/innate/golem_ignite/Activate()
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
if(H.fire_stacks)
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
clothing_flags = HAS_UNDERWEAR | HAS_UNDERSHIRT | HAS_SOCKS
|
||||
bodyflags = HAS_BODY_MARKINGS | HAS_BODYACC_COLOR | SHAVED | BALD
|
||||
dietflags = DIET_HERB
|
||||
has_gender = FALSE
|
||||
reagent_tag = PROCESS_ORG
|
||||
flesh_color = "#a598ad"
|
||||
blood_color = "#A200FF"
|
||||
|
||||
@@ -47,6 +47,14 @@
|
||||
"is cracking their exoskeleton!",
|
||||
"is stabbing themselves with their mandibles!",
|
||||
"is holding their breath!")
|
||||
autohiss_basic_map = list(
|
||||
"z" = list("zz", "zzz", "zzzz"),
|
||||
"v" = list("vv", "vvv", "vvvv")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"s" = list("z", "zs", "zzz", "zzsz")
|
||||
)
|
||||
autohiss_exempt = list("Chittin")
|
||||
|
||||
|
||||
/datum/species/kidan/get_species_runechat_color(mob/living/carbon/human/H)
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
default_hair = "Blue IPC Screen"
|
||||
dies_at_threshold = TRUE
|
||||
can_revive_by_healing = 1
|
||||
has_gender = FALSE
|
||||
reagent_tag = PROCESS_SYN
|
||||
male_scream_sound = 'sound/goonstation/voice/robot_scream.ogg'
|
||||
female_scream_sound = 'sound/goonstation/voice/robot_scream.ogg'
|
||||
|
||||
@@ -47,6 +47,9 @@
|
||||
|
||||
speciesbox = /obj/item/storage/box/survival_plasmaman
|
||||
flesh_color = "#8b3fba"
|
||||
autohiss_basic_map = list(
|
||||
"s" = list("ss", "sss", "ssss")
|
||||
)
|
||||
|
||||
/datum/species/plasmaman/before_equip_job(datum/job/J, mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
var/current_job = J.title
|
||||
|
||||
@@ -51,6 +51,10 @@
|
||||
"is jamming their claws into their eye sockets!",
|
||||
"is twisting their own neck!",
|
||||
"is holding their breath!")
|
||||
autohiss_basic_map = list(
|
||||
"r" = list("rr", "rrr", "rrrr")
|
||||
)
|
||||
autohiss_exempt = list("Siik'tajr")
|
||||
|
||||
/datum/species/tajaran/handle_death(gibbed, mob/living/carbon/human/H)
|
||||
H.stop_tail_wagging()
|
||||
|
||||
@@ -54,18 +54,25 @@
|
||||
"is jamming their claws into their eye sockets!",
|
||||
"is twisting their own neck!",
|
||||
"is holding their breath!")
|
||||
autohiss_basic_map = list(
|
||||
"s" = list("ss", "sss", "ssss")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"x" = list("ks", "kss", "ksss")
|
||||
)
|
||||
autohiss_exempt = list("Sinta'unathi")
|
||||
|
||||
/datum/species/unathi/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
var/datum/action/innate/ignite/fire = new()
|
||||
var/datum/action/innate/unathi_ignite/fire = new()
|
||||
fire.Grant(H)
|
||||
|
||||
/datum/species/unathi/on_species_loss(mob/living/carbon/human/H)
|
||||
..()
|
||||
for(var/datum/action/innate/ignite/fire in H.actions)
|
||||
for(var/datum/action/innate/unathi_ignite/fire in H.actions)
|
||||
fire.Remove(H)
|
||||
|
||||
/datum/action/innate/ignite
|
||||
/datum/action/innate/unathi_ignite
|
||||
name = "Ignite"
|
||||
desc = "A fire forms in your mouth, fierce enough to... light a cigarette. Requires you to drink welding fuel beforehand."
|
||||
icon_icon = 'icons/obj/cigarettes.dmi'
|
||||
@@ -75,7 +82,7 @@
|
||||
var/welding_fuel_used = 3 //one sip, with less strict timing
|
||||
check_flags = AB_CHECK_HANDS_BLOCKED
|
||||
|
||||
/datum/action/innate/ignite/Activate()
|
||||
/datum/action/innate/unathi_ignite/Activate()
|
||||
var/mob/living/carbon/human/user = owner
|
||||
if(world.time <= cooldown)
|
||||
to_chat(user, "<span class='warning'>Your throat hurts too much to do it right now. Wait [round((cooldown - world.time) / 10)] seconds and try again.</span>")
|
||||
@@ -95,7 +102,6 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to drink welding fuel first.</span>")
|
||||
|
||||
|
||||
/datum/species/unathi/handle_death(gibbed, mob/living/carbon/human/H)
|
||||
H.stop_tail_wagging()
|
||||
|
||||
@@ -127,14 +133,14 @@
|
||||
|
||||
/datum/species/unathi/ashwalker/on_species_gain(mob/living/carbon/human/H)
|
||||
..()
|
||||
for(var/datum/action/innate/ignite/fire in H.actions)
|
||||
for(var/datum/action/innate/unathi_ignite/fire in H.actions)
|
||||
fire.Remove(H)
|
||||
var/datum/action/innate/ignite/ash_walker/fire = new()
|
||||
var/datum/action/innate/unathi_ignite/ash_walker/fire = new()
|
||||
fire.Grant(H)
|
||||
|
||||
/datum/species/unathi/ashwalker/on_species_loss(mob/living/carbon/human/H)
|
||||
..()
|
||||
for(var/datum/action/innate/ignite/ash_walker/fire in H.actions)
|
||||
for(var/datum/action/innate/unathi_ignite/ash_walker/fire in H.actions)
|
||||
fire.Remove(H)
|
||||
|
||||
/datum/species/unathi/ashwalker/movement_delay(mob/living/carbon/human/H)
|
||||
@@ -143,7 +149,7 @@
|
||||
if(!is_mining_level(our_turf.z))
|
||||
. -= speed_mod
|
||||
|
||||
/datum/action/innate/ignite/ash_walker
|
||||
/datum/action/innate/unathi_ignite/ash_walker
|
||||
desc = "You form a fire in your mouth, fierce enough to... light a cigarette."
|
||||
cooldown_duration = 3 MINUTES
|
||||
welding_fuel_used = 0 // Ash walkers dont need welding fuel to use ignite
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
flesh_color = "#808D11"
|
||||
//Default styles for created mobs.
|
||||
default_hair = "Short Vox Quills"
|
||||
has_gender = FALSE
|
||||
default_hair_colour = "#614f19" //R: 97, G: 79, B: 25
|
||||
butt_sprite = "vox"
|
||||
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/superheroes = list()
|
||||
var/list/datum/mind/supervillains = list()
|
||||
var/list/datum/mind/greyshirts = list()
|
||||
|
||||
/datum/superheroes
|
||||
var/name
|
||||
var/desc
|
||||
|
||||
@@ -65,8 +65,6 @@
|
||||
|
||||
|
||||
//Personal shielding for the combat module.
|
||||
/obj/item/borg
|
||||
var/powerneeded // Percentage of power remaining required to run item
|
||||
|
||||
/obj/item/borg/destroyer/mobility
|
||||
name = "mobility module"
|
||||
|
||||
@@ -475,10 +475,6 @@
|
||||
else if(prob(30) && ishuman(movement_target.loc)) // mean hooman has stolen it
|
||||
custom_emote(EMOTE_VISIBLE, "stares at [movement_target.loc]'s [movement_target] with a sad puppy-face.")
|
||||
|
||||
/obj/item/food/snacks/meat/corgi
|
||||
name = "Corgi meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/Ian/narsie_act()
|
||||
playsound(src, 'sound/misc/demon_dies.ogg', 75, TRUE)
|
||||
var/mob/living/simple_animal/pet/dog/corgi/narsie/N = new(loc)
|
||||
|
||||
@@ -719,7 +719,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
set category = "IC"
|
||||
|
||||
msg = copytext(msg, 1, MAX_MESSAGE_LEN)
|
||||
msg = sanitize(msg, list("\n" = "<BR>"))
|
||||
msg = sanitize_simple(html_encode(msg), list("\n" = "<br>"))
|
||||
|
||||
var/combined = length(memory + msg)
|
||||
if(mind && (combined < MAX_PAPER_MESSAGE_LEN))
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
icon = 'icons/mob/human_face.dmi' // Special case, use the bald icon in human face
|
||||
name = "Shaved"
|
||||
icon_state = "bald"
|
||||
gender = NEUTER
|
||||
species_allowed = list("Human", "Unathi", "Tajaran", "Skrell", "Vox", "Diona", "Kidan", "Greys", "Vulpkanin", "Slime People")
|
||||
|
||||
/datum/sprite_accessory/facial_hair/watson
|
||||
|
||||
@@ -563,7 +563,6 @@
|
||||
/datum/sprite_accessory/hair/joestar
|
||||
name = "Joestar"
|
||||
icon_state = "joestar"
|
||||
gender = MALE
|
||||
species_allowed = list("Human", "Slime People", "Unathi", "Tajaran", "Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/hair/nitori
|
||||
@@ -757,11 +756,6 @@
|
||||
icon_state = "longovereye"
|
||||
species_allowed = list("Human", "Slime People", "Unathi", "Tajaran", "Vulpkanin")
|
||||
|
||||
/datum/sprite_accessory/hair/father
|
||||
name = "Father"
|
||||
icon_state = "father"
|
||||
species_allowed = list("Human", "Slime People", "Unathi", "Tajaran", "Vulpkanin")
|
||||
|
||||
/// Due to a vulp hairstyle called bun
|
||||
/datum/sprite_accessory/hair/bun4
|
||||
name = "Bun 4"
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
name = "Curious Antennae"
|
||||
icon_state = "curious"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/mopey_antennae
|
||||
name = "Mopey Antennae"
|
||||
icon_state = "mopey"
|
||||
|
||||
/datum/sprite_accessory/head_accessory/kidan/crescent_antennae
|
||||
name = "Crescent Antennae"
|
||||
icon_state = "crescent"
|
||||
|
||||
@@ -5,12 +5,10 @@
|
||||
/datum/sprite_accessory/hair/skrell/skr_tentacle_m
|
||||
name = "Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_tentacle_f
|
||||
name = "Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_tentacleslong
|
||||
name = "Long Skrell Tentacles"
|
||||
@@ -23,39 +21,33 @@
|
||||
/datum/sprite_accessory/hair/skrell/skr_gold_m
|
||||
name = "Gold plated Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "gold"
|
||||
no_sec_colour = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_gold_f
|
||||
name = "Gold chained Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "gold"
|
||||
no_sec_colour = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_clothtentacle_m
|
||||
name = "Cloth draped Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "cloth"
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_clothtentacle_f
|
||||
name = "Cloth draped Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "cloth"
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_gclothtentacle_m
|
||||
name = "Ombre Dye, Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "gradient"
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_gclothtentacle_f
|
||||
name = "Ombre Dye, Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "gradient"
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_gclothtentacleslong
|
||||
@@ -71,14 +63,12 @@
|
||||
/datum/sprite_accessory/hair/skrell/skr_diablacktentacle_m
|
||||
name = "Black headress Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "blackdia"
|
||||
no_sec_colour = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_diablacktentacle_f
|
||||
name = "Black headress Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "blackdia"
|
||||
no_sec_colour = 1
|
||||
|
||||
@@ -92,14 +82,12 @@
|
||||
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacle_m
|
||||
name = "Gold headress Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "golddia"
|
||||
no_sec_colour = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_diagoldtentacle_f
|
||||
name = "Gold headress Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "golddia"
|
||||
no_sec_colour = 1
|
||||
|
||||
@@ -112,14 +100,12 @@
|
||||
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacle_m
|
||||
name = "Silver headress Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "silvdia"
|
||||
no_sec_colour = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_diasilvertentacle_f
|
||||
name = "Silver headress Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "silvdia"
|
||||
no_sec_colour = 1
|
||||
|
||||
@@ -132,14 +118,12 @@
|
||||
/datum/sprite_accessory/hair/skrell/skr_festivetentacle_m
|
||||
name = "Festive headress Skrell Male Tentacles"
|
||||
icon_state = "male"
|
||||
gender = MALE
|
||||
secondary_theme = "fest"
|
||||
no_sec_colour = 1
|
||||
|
||||
/datum/sprite_accessory/hair/skrell/skr_festivetentacle_f
|
||||
name = "Festive headress Skrell Female Tentacles"
|
||||
icon_state = "female"
|
||||
gender = FEMALE
|
||||
secondary_theme = "fest"
|
||||
no_sec_colour = 1
|
||||
|
||||
|
||||
@@ -18,10 +18,14 @@
|
||||
*/
|
||||
|
||||
/proc/init_sprite_accessory_subtypes(prototype, list/L, list/male, list/female, list/full_list)
|
||||
if(!istype(L)) L = list()
|
||||
if(!istype(male)) male = list()
|
||||
if(!istype(female)) female = list()
|
||||
if(!istype(full_list)) full_list = list()
|
||||
if(!istype(L))
|
||||
L = list()
|
||||
if(!istype(male))
|
||||
male = list()
|
||||
if(!istype(female))
|
||||
female = list()
|
||||
if(!istype(full_list))
|
||||
full_list = list()
|
||||
|
||||
for(var/path in subtypesof(prototype))
|
||||
var/datum/sprite_accessory/D = new path()
|
||||
@@ -33,9 +37,11 @@
|
||||
L[D.name] = D
|
||||
full_list[D.name] = D
|
||||
|
||||
switch(D.gender)
|
||||
if(MALE) male[D.name] = D
|
||||
if(FEMALE) female[D.name] = D
|
||||
switch(D.body_type)
|
||||
if(MALE)
|
||||
male[D.name] = D
|
||||
if(FEMALE)
|
||||
female[D.name] = D
|
||||
else
|
||||
male[D.name] = D
|
||||
female[D.name] = D
|
||||
@@ -45,7 +51,7 @@
|
||||
var/icon //the icon file the accessory is located in
|
||||
var/icon_state //the icon_state of the accessory
|
||||
var/name //the preview name of the accessory
|
||||
var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
|
||||
var/body_type = NEUTER //Determines if the accessory will be skipped or included in random hair generations
|
||||
|
||||
// Restrict some styles to specific species
|
||||
var/list/species_allowed = list("Human", "Slime People")
|
||||
@@ -74,7 +80,6 @@
|
||||
glasses_over = 1
|
||||
|
||||
/datum/sprite_accessory/facial_hair
|
||||
gender = MALE // barf (unless you're a dorf, dorfs dig chix /w beards :P)
|
||||
icon = 'icons/mob/sprite_accessories/human/human_facial_hair.dmi'
|
||||
var/over_hair
|
||||
|
||||
@@ -174,7 +179,6 @@
|
||||
"Grey" = 'icons/mob/clothing/species/grey/underwear.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi'
|
||||
)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/underwear/nude
|
||||
name = "Nude"
|
||||
@@ -182,7 +186,7 @@
|
||||
species_allowed = list("Human", "Unathi", "Diona", "Vulpkanin", "Tajaran", "Kidan", "Grey", "Plasmaman", "Machine", "Skrell", "Slime People", "Skeleton", "Drask", "Vox", "Nian")
|
||||
|
||||
/datum/sprite_accessory/underwear/male
|
||||
gender = MALE
|
||||
body_type = MALE
|
||||
|
||||
/datum/sprite_accessory/underwear/male/male_white
|
||||
name = "Mens White"
|
||||
@@ -192,7 +196,7 @@
|
||||
name = "Mens Grey"
|
||||
icon_state = "male_grey"
|
||||
|
||||
/datum/sprite_accessory/underwear/male/male_grey
|
||||
/datum/sprite_accessory/underwear/male/male_grey_alt
|
||||
name = "Mens Grey Alt"
|
||||
icon_state = "male_greyalt"
|
||||
|
||||
@@ -233,7 +237,7 @@
|
||||
icon_state = "male_mankini"
|
||||
|
||||
/datum/sprite_accessory/underwear/female
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/underwear/female/female_red
|
||||
name = "Ladies Red"
|
||||
@@ -305,7 +309,6 @@
|
||||
"Grey" = 'icons/mob/clothing/species/grey/underwear.dmi',
|
||||
"Kidan" = 'icons/mob/clothing/species/kidan/underwear.dmi'
|
||||
)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/nude
|
||||
name = "Nude"
|
||||
@@ -494,17 +497,17 @@
|
||||
/datum/sprite_accessory/undershirt/tank_redtop
|
||||
name = "Red Crop-Top"
|
||||
icon_state = "tank_redtop"
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_whitetop
|
||||
name = "White Crop-Top"
|
||||
icon_state = "tank_whitetop"
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_midriff
|
||||
name = "White Mid Tank-Top"
|
||||
icon_state = "tank_midriff"
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_white
|
||||
name = "White Tank-Top"
|
||||
@@ -547,7 +550,6 @@
|
||||
"Nian" = 'icons/mob/clothing/species/nian/underwear.dmi'
|
||||
|
||||
)
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/socks/nude
|
||||
name = "Nude"
|
||||
@@ -581,7 +583,7 @@
|
||||
/datum/sprite_accessory/socks/thin_knee
|
||||
name = "Knee-high Thin"
|
||||
icon_state = "thin_knee"
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/socks/striped_norm
|
||||
name = "Normal Striped"
|
||||
@@ -606,7 +608,7 @@
|
||||
/datum/sprite_accessory/socks/thin_thigh
|
||||
name = "Thigh-high Thin"
|
||||
icon_state = "thin_thigh"
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/socks/striped_thigh
|
||||
name = "Thigh-high Striped"
|
||||
@@ -619,7 +621,7 @@
|
||||
/datum/sprite_accessory/socks/pantyhose
|
||||
name = "Pantyhose"
|
||||
icon_state = "pantyhose"
|
||||
gender = FEMALE
|
||||
body_type = FEMALE
|
||||
|
||||
/datum/sprite_accessory/socks/black_fishnet
|
||||
name = "Black Fishnet"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/datum/sprite_accessory/facial_hair/unathi
|
||||
icon = 'icons/mob/sprite_accessories/unathi/unathi_facial_hair.dmi'
|
||||
species_allowed = list("Unathi")
|
||||
gender = NEUTER
|
||||
over_hair = 1
|
||||
|
||||
/datum/sprite_accessory/facial_hair/unathi/una_spines_long
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/datum/sprite_accessory/facial_hair/vox
|
||||
icon = 'icons/mob/sprite_accessories/vox/vox_facial_hair.dmi'
|
||||
species_allowed = list("Vox")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vox/vox_colonel
|
||||
name = "Vox Colonel Beard"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/datum/sprite_accessory/facial_hair/vulpkanin
|
||||
icon = 'icons/mob/sprite_accessories/vulpkanin/vulpkanin_facial_hair.dmi'
|
||||
species_allowed = list("Vulpkanin")
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/facial_hair/vulpkanin/vulp_earfluff
|
||||
name = "Vulpkanin Earfluff"
|
||||
|
||||
@@ -84,7 +84,6 @@
|
||||
/datum/sprite_accessory/hair/vulpkanin/vulp_hair_raine
|
||||
name = "Raine"
|
||||
icon_state = "raine"
|
||||
gender = FEMALE
|
||||
|
||||
/datum/sprite_accessory/hair/vulpkanin/vulp_hair_jeremy
|
||||
name = "Jeremy"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,10 +0,0 @@
|
||||
/obj/machinery/the_singularitygen/tesla
|
||||
name = "energy ball generator"
|
||||
desc = "Makes the wardenclyffe look like a child's plaything when shot with a particle accelerator."
|
||||
icon = 'icons/obj/tesla_engine/tesla_generator.dmi'
|
||||
icon_state = "TheSingGen"
|
||||
creation_type = /obj/singularity/energy_ball
|
||||
|
||||
/obj/machinery/the_singularitygen/tesla/zap_act(power, zap_flags)
|
||||
if(zap_flags & ZAP_MACHINE_EXPLOSIVE)
|
||||
energy += power
|
||||
@@ -187,7 +187,7 @@
|
||||
projectile_type = /obj/item/projectile/plasma
|
||||
muzzle_flash_color = LIGHT_COLOR_PURPLE
|
||||
select_name = "plasma burst"
|
||||
fire_sound = 'sound/weapons/plasma_cutter.ogg'
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
delay = 15
|
||||
e_cost = 75
|
||||
|
||||
@@ -241,15 +241,6 @@
|
||||
projectile_type = /obj/item/projectile/beam/instakill/red
|
||||
muzzle_flash_color = LIGHT_COLOR_DARKRED
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma
|
||||
projectile_type = /obj/item/projectile/plasma
|
||||
muzzle_flash_color = LIGHT_COLOR_PURPLE
|
||||
select_name = "plasma burst"
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma/adv
|
||||
projectile_type = /obj/item/projectile/plasma/adv
|
||||
|
||||
/obj/item/ammo_casing/energy/tesla_bolt
|
||||
fire_sound = 'sound/magic/lightningbolt.ogg'
|
||||
e_cost = 200
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
build_path = /obj/item/ammo_box/wt550/wttx
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/mag_laser
|
||||
/datum/design/laser_rifle_magazine
|
||||
name = "Laser Rifle Projector Magazine"
|
||||
desc = "A 20 round encased projector magazine for the IK Laser Rifle series"
|
||||
id = "mag_laser"
|
||||
@@ -200,10 +200,10 @@
|
||||
build_path = /obj/item/ammo_box/magazine/laser
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/mag_laser
|
||||
/datum/design/laser_rifle_ammo_box
|
||||
name = "Laser Rifle Projector Ammunition"
|
||||
desc = "A 20 round encased projector box for the IK Laser Rifle series."
|
||||
id = "mag_laser"
|
||||
id = "box_laser"
|
||||
build_type = PROTOLATHE
|
||||
req_tech = list("combat" = 4, "powerstorage" = 4)
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 600)
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
#define ERT_TYPE_RED 2
|
||||
#define ERT_TYPE_GAMMA 3
|
||||
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/ert = list()
|
||||
|
||||
GLOBAL_LIST_EMPTY(response_team_members)
|
||||
GLOBAL_VAR_INIT(responseteam_age, 21) // Minimum account age to play as an ERT member
|
||||
GLOBAL_DATUM(active_team, /datum/response_team)
|
||||
|
||||
@@ -18,13 +18,3 @@
|
||||
/area/ruin/powered
|
||||
requires_power = FALSE
|
||||
|
||||
//Areas
|
||||
|
||||
/area/ruin/powered/snow_biodome
|
||||
|
||||
/area/ruin/powered/golem_ship
|
||||
name = "Free Golem Ship"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
return mob_icon //Don't need to blend the above into this as it's handled in human/update_icons(). The overlays are for rendering stuff on disembodied heads.
|
||||
|
||||
/obj/item/organ/external/proc/get_icon_state(skeletal)
|
||||
var/gender
|
||||
var/body
|
||||
var/icon_file
|
||||
var/new_icon_state
|
||||
if(!dna)
|
||||
@@ -159,18 +159,17 @@
|
||||
new_icon_state = "[icon_name][gendered_icon ? "_f" : ""]"
|
||||
else
|
||||
if(gendered_icon)
|
||||
switch(dna.GetUITriState(DNA_UI_GENDER))
|
||||
switch(dna.GetUITriState(DNA_UI_BODY_TYPE))
|
||||
if(DNA_GENDER_FEMALE)
|
||||
gender = "f"
|
||||
if(DNA_GENDER_MALE)
|
||||
gender = "m"
|
||||
body = "f"
|
||||
else
|
||||
gender = "f" //Default to "f" (per line 162). Using a pick("m", "f") will make different body parts different genders for the same character.
|
||||
body = "m"
|
||||
|
||||
if(limb_name == "head")
|
||||
var/obj/item/organ/external/head/head_organ = src
|
||||
head_organ.handle_alt_icon()
|
||||
|
||||
new_icon_state = "[icon_name][gender ? "_[gender]" : ""]"
|
||||
new_icon_state = "[icon_name][body ? "_[body]" : ""]"
|
||||
|
||||
if(skeletal)
|
||||
icon_file = 'icons/mob/human_races/r_skeleton.dmi'
|
||||
|
||||
@@ -188,15 +188,6 @@
|
||||
/obj/item/organ/internal/proc/render()
|
||||
return
|
||||
|
||||
/obj/item/food/snacks/organ
|
||||
name = "appendix"
|
||||
icon_state = "appendix"
|
||||
icon = 'icons/obj/surgery.dmi'
|
||||
|
||||
/obj/item/food/snacks/organ/Initialize(mapload)
|
||||
. = ..()
|
||||
reagents.add_reagent("nutriment", 5)
|
||||
|
||||
/obj/item/organ/internal/attack(mob/living/carbon/M, mob/user)
|
||||
if(M == user && ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -214,7 +214,6 @@
|
||||
|
||||
data["specimen"] = owner.dna.species.name
|
||||
data["gender"] = owner.gender
|
||||
data["has_gender"] = owner.dna.species.has_gender
|
||||
data["change_race"] = can_change(APPEARANCE_RACE)
|
||||
if(data["change_race"])
|
||||
var/list/species = list()
|
||||
|
||||
@@ -145,7 +145,7 @@ ipc_screens = [
|
||||
# Enable/disable the database on a whole
|
||||
sql_enabled = false
|
||||
# SQL version. If this is a mismatch, round start will be delayed
|
||||
sql_version = 54
|
||||
sql_version = 55
|
||||
# SQL server address. Can be an IP or DNS name
|
||||
sql_address = "127.0.0.1"
|
||||
# SQL server port
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 900 KiB After Width: | Height: | Size: 901 KiB |
@@ -2523,7 +2523,6 @@
|
||||
#include "code\modules\power\engines\supermatter\supermatter_event.dm"
|
||||
#include "code\modules\power\engines\tesla\coil.dm"
|
||||
#include "code\modules\power\engines\tesla\energy_ball.dm"
|
||||
#include "code\modules\power\engines\tesla\generator.dm"
|
||||
#include "code\modules\power\engines\tesla\teslagen.dm"
|
||||
#include "code\modules\power\generators\solar.dm"
|
||||
#include "code\modules\power\generators\thermo_electric_generator.dm"
|
||||
|
||||
@@ -10,7 +10,6 @@ export const AppearanceChanger = (props, context) => {
|
||||
specimen,
|
||||
change_gender,
|
||||
gender,
|
||||
has_gender,
|
||||
change_eye_color,
|
||||
change_skin_tone,
|
||||
change_skin_color,
|
||||
@@ -95,13 +94,13 @@ export const AppearanceChanger = (props, context) => {
|
||||
selected={gender === 'female'}
|
||||
onClick={() => act('gender', { gender: 'female' })}
|
||||
/>
|
||||
{!has_gender && (
|
||||
{
|
||||
<Button
|
||||
content="Genderless"
|
||||
selected={gender === 'plural'}
|
||||
onClick={() => act('gender', { gender: 'plural' })}
|
||||
/>
|
||||
)}
|
||||
}
|
||||
</LabeledList.Item>
|
||||
)}
|
||||
{!!has_colours && <ColorContent />}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user