Merge remote-tracking branch 'refs/remotes/Citadel-Station-13/master'
@@ -23,23 +23,24 @@
|
||||
#define FRIDAY_13TH "Friday the 13th"
|
||||
|
||||
//Human Overlays Indexes/////////
|
||||
#define MUTATIONS_LAYER 26 //mutations. Tk headglows, cold resistance glow, etc
|
||||
#define BODY_BEHIND_LAYER 25 //certain mutantrace features (tail when looking south) that must appear behind the body parts
|
||||
#define BODYPARTS_LAYER 24 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
|
||||
#define BODY_ADJ_LAYER 23 //certain mutantrace features (snout, body markings) that must appear above the body parts
|
||||
#define BODY_LAYER 22 //underwear, undershirts, socks, eyes, lips(makeup)
|
||||
#define FRONT_MUTATIONS_LAYER 21 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
|
||||
#define DAMAGE_LAYER 20 //damage indicators (cuts and burns)
|
||||
#define UNIFORM_LAYER 19
|
||||
#define ID_LAYER 18
|
||||
#define SHOES_LAYER 17
|
||||
#define GLOVES_LAYER 16
|
||||
#define EARS_LAYER 15
|
||||
#define SUIT_LAYER 14
|
||||
#define GLASSES_LAYER 13
|
||||
#define BELT_LAYER 12 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 11
|
||||
#define BACK_LAYER 10
|
||||
#define MUTATIONS_LAYER 27 //mutations. Tk headglows, cold resistance glow, etc
|
||||
#define BODY_BEHIND_LAYER 26 //certain mutantrace features (tail when looking south) that must appear behind the body parts
|
||||
#define BODYPARTS_LAYER 25 //Initially "AUGMENTS", this was repurposed to be a catch-all bodyparts flag
|
||||
#define BODY_ADJ_LAYER 24 //certain mutantrace features (snout, body markings) that must appear above the body parts
|
||||
#define BODY_LAYER 23 //underwear, undershirts, socks, eyes, lips(makeup)
|
||||
#define FRONT_MUTATIONS_LAYER 22 //mutations that should appear above body, body_adj and bodyparts layer (e.g. laser eyes)
|
||||
#define DAMAGE_LAYER 21 //damage indicators (cuts and burns)
|
||||
#define UNIFORM_LAYER 20
|
||||
#define ID_LAYER 19
|
||||
#define SHOES_LAYER 18
|
||||
#define GLOVES_LAYER 17
|
||||
#define EARS_LAYER 16
|
||||
#define SUIT_LAYER 15
|
||||
#define GLASSES_LAYER 14
|
||||
#define BELT_LAYER 13 //Possible make this an overlay of somethign required to wear a belt?
|
||||
#define SUIT_STORE_LAYER 12
|
||||
#define BACK_LAYER 11
|
||||
#define TAIL_LAYER 10
|
||||
#define HAIR_LAYER 9 //TODO: make part of head layer?
|
||||
#define FACEMASK_LAYER 8
|
||||
#define HEAD_LAYER 7
|
||||
@@ -49,7 +50,7 @@
|
||||
#define R_HAND_LAYER 3 //Having the two hands seperate seems rather silly, merge them together? It'll allow for code to be reused on mobs with arbitarily many hands
|
||||
#define BODY_FRONT_LAYER 2
|
||||
#define FIRE_LAYER 1 //If you're on fire
|
||||
#define TOTAL_LAYERS 26 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
|
||||
#define TOTAL_LAYERS 27 //KEEP THIS UP-TO-DATE OR SHIT WILL BREAK ;_;
|
||||
|
||||
//Human Overlay Index Shortcuts for alternate_worn_layer, layers
|
||||
//Because I *KNOW* somebody will think layer+1 means "above"
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
// Overhauled vore system
|
||||
|
||||
/* #define DM_HOLD "Hold"
|
||||
#define DM_DIGEST "Digest"
|
||||
#define DM_HEAL "Heal"
|
||||
#define DM_ABSORB "Absorb"
|
||||
#define DM_DIGESTF "Fast Digest"
|
||||
|
||||
#define VORE_STRUGGLE_EMOTE_CHANCE 40
|
||||
|
||||
var/global/list/player_sizes_list = list("Macro" = RESIZE_HUGE, "Big" = RESIZE_BIG, "Normal" = RESIZE_NORMAL, "Small" = RESIZE_SMALL, "Tiny" = RESIZE_TINY)
|
||||
|
||||
|
||||
var/global/list/digestion_sounds = list(
|
||||
'sound/vore/digest1.ogg',
|
||||
'sound/vore/digest2.ogg',
|
||||
'sound/vore/digest3.ogg',
|
||||
'sound/vore/digest4.ogg',
|
||||
'sound/vore/digest5.ogg',
|
||||
'sound/vore/digest6.ogg',
|
||||
'sound/vore/digest7.ogg',
|
||||
'sound/vore/digest8.ogg',
|
||||
'sound/vore/digest9.ogg',
|
||||
'sound/vore/digest10.ogg',
|
||||
'sound/vore/digest11.ogg',
|
||||
'sound/vore/digest12.ogg')
|
||||
|
||||
var/global/list/death_sounds = list(
|
||||
'sound/vore/death1.ogg',
|
||||
'sound/vore/death2.ogg',
|
||||
'sound/vore/death3.ogg',
|
||||
'sound/vore/death4.ogg',
|
||||
'sound/vore/death5.ogg',
|
||||
'sound/vore/death6.ogg',
|
||||
'sound/vore/death7.ogg',
|
||||
'sound/vore/death8.ogg',
|
||||
'sound/vore/death9.ogg',
|
||||
'sound/vore/death10.ogg')
|
||||
*/
|
||||
|
||||
//Species listing
|
||||
|
||||
#define iscanine(A) (is_species(A, /datum/species/canine))
|
||||
#define isfeline(A) (is_species(A, /datum/species/feline))
|
||||
#define isavian(A) (is_species(A, /datum/species/avian))
|
||||
#define isrodent(A) (is_species(A, /datum/species/rodent))
|
||||
#define isherbivorous(A) (is_species(A, /datum/species/herbivorous))
|
||||
#define isexotic(A) (is_species(A, /datum/species/exotic))
|
||||
/*
|
||||
var/list/canine_species = list (
|
||||
anubis,
|
||||
corgi,
|
||||
coyote,
|
||||
dalmatian,
|
||||
fennec,
|
||||
fox,
|
||||
husky,
|
||||
wolf,
|
||||
sheperd,
|
||||
lab,
|
||||
otusian
|
||||
)
|
||||
|
||||
var/list/feline_species = list (
|
||||
panther,
|
||||
tajaran,
|
||||
smilodon
|
||||
)
|
||||
|
||||
var/list/avian_species = list (
|
||||
corvid,
|
||||
hawk
|
||||
)
|
||||
|
||||
var/list/lizard_species = list (
|
||||
crocodile,
|
||||
drake,
|
||||
gria,
|
||||
lizard,
|
||||
naga,
|
||||
turtle,
|
||||
shark
|
||||
)
|
||||
|
||||
var/list/rodent_species = list (
|
||||
aramdillo,
|
||||
beaver,
|
||||
jackalope,
|
||||
leporid,
|
||||
murid,
|
||||
otter,
|
||||
porcupine,
|
||||
possum,
|
||||
raccoon,
|
||||
roorat,
|
||||
skunk,
|
||||
squirrel
|
||||
)
|
||||
|
||||
var/list/herbivorous_species = list (
|
||||
boar,
|
||||
capra,
|
||||
cow,
|
||||
deer,
|
||||
hippo,
|
||||
kangaroo,
|
||||
pig
|
||||
)
|
||||
|
||||
var/list/exotic_species = list (
|
||||
alien,
|
||||
carp,
|
||||
drider,
|
||||
glowfen,
|
||||
jelly,
|
||||
moth,
|
||||
plant,
|
||||
seaslug,
|
||||
slime,
|
||||
)
|
||||
|
||||
var/list/taur = list (
|
||||
panther,
|
||||
tajaran,
|
||||
horse,
|
||||
lab,
|
||||
sheperd,
|
||||
fox,
|
||||
cow,
|
||||
husky,
|
||||
naga,
|
||||
wolf,
|
||||
dirder,
|
||||
drake,
|
||||
otie
|
||||
)
|
||||
|
||||
//Mutant Human bits
|
||||
var/global/list/tails_list_human = list()
|
||||
var/global/list/animated_tails_list_human = list()
|
||||
// var/global/list/ears_list = list()
|
||||
var/global/list/wings_list = list()
|
||||
|
||||
/proc/log_debug(text)
|
||||
if (config.log_debug)
|
||||
diary << "\[[time_stamp()]]DEBUG: [text][log_end]"
|
||||
|
||||
for(var/client/C in admins)
|
||||
if(C.prefs.toggles & CHAT_DEBUGLOGS)
|
||||
C << "DEBUG: [text]" */
|
||||
@@ -17,38 +17,42 @@ datum
|
||||
adjective="spooky"
|
||||
restricted=2
|
||||
ailurus
|
||||
name="red panda"
|
||||
//name="red panda"
|
||||
id="ailurus"
|
||||
generic="ailurus"
|
||||
adjective="cuddly"
|
||||
tail=1
|
||||
restricted=2
|
||||
alien
|
||||
name="alien"
|
||||
//name="alien"
|
||||
id="alien"
|
||||
say_mod="hisses"
|
||||
generic="xeno"
|
||||
adjective="phallic"
|
||||
tail=1
|
||||
/* armadillo
|
||||
name="armadillo"
|
||||
restricted=2
|
||||
armadillo
|
||||
//name="armadillo"
|
||||
id="armadillo"
|
||||
say_mod = "drawls"
|
||||
generic = "cingulate" // Superorder Xenarthra, Order Cingulata
|
||||
adjective = "protected"
|
||||
tail=1
|
||||
attack_verb = "noms"
|
||||
attack_sound = 'sound/weapons/bite.ogg' */
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
attack_verb = "nom" // apparently attack verbs are just the verb, no S. shrug
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
restricted=2
|
||||
anubis
|
||||
name="anubis"
|
||||
//name="anubis"
|
||||
id="anubis"
|
||||
say_mod = "intones"
|
||||
generic="jackal" // mmm...jackal or canine? i'll leave it for now
|
||||
adjective="cold"
|
||||
attack_verb = "claw"
|
||||
restricted=2
|
||||
beaver
|
||||
name="beaver"
|
||||
//name="beaver"
|
||||
id="beaver"
|
||||
say_mod = "chitters"
|
||||
generic="rodent"
|
||||
@@ -56,8 +60,9 @@ datum
|
||||
tail=1
|
||||
attack_verb = "tailslap"
|
||||
attack_sound = 'sound/items/dodgeball.ogg'
|
||||
restricted=2
|
||||
beholder
|
||||
name="beholder"
|
||||
//name="beholder"
|
||||
id="beholder"
|
||||
say_mod = "jibbers"
|
||||
generic="body part"
|
||||
@@ -65,19 +70,22 @@ datum
|
||||
tail=0
|
||||
attack_verb = "visually assault"
|
||||
attack_sound = 'sound/magic/MM_Hit.ogg' // MAGIC MISSILE! MAGIC MISSILE!
|
||||
restricted=2
|
||||
boar
|
||||
name="boar"
|
||||
//name="boar"
|
||||
id="boar"
|
||||
generic="pig"
|
||||
adjective="wild and curly"
|
||||
tail=1
|
||||
restricted=2
|
||||
capra
|
||||
name="caprine"
|
||||
//name="caprine"
|
||||
id="capra"
|
||||
generic="goat"
|
||||
adjective="irritable"
|
||||
restricted=2
|
||||
carp
|
||||
name="carp"
|
||||
//name="carp"
|
||||
id="carp"
|
||||
say_mod = "glubs"
|
||||
generic = "abomination"
|
||||
@@ -86,51 +94,58 @@ datum
|
||||
eyes = "carpeyes"
|
||||
attack_verb = "nom"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
restricted=2
|
||||
corgi
|
||||
name="corgi"
|
||||
//name="corgi"
|
||||
id="corgi"
|
||||
say_mod ="yaps"
|
||||
generic="canine"
|
||||
adjective="corgalicious"
|
||||
tail=1
|
||||
restricted=2
|
||||
corvid
|
||||
name="corvid"
|
||||
//name="corvid"
|
||||
id="corvid"
|
||||
say_mod = "caws"
|
||||
generic="bird"
|
||||
adjective="mask-piercing"
|
||||
tail=1
|
||||
attack_verb = "whack"
|
||||
restricted=2
|
||||
cow
|
||||
name="cow"
|
||||
//name="cow"
|
||||
id="cow"
|
||||
say_mod = "moos"
|
||||
generic="bovine"
|
||||
adjective="wise"
|
||||
tail=1
|
||||
taur=1
|
||||
restricted=2
|
||||
coyote
|
||||
name="coyote"
|
||||
//name="coyote"
|
||||
id="coyote"
|
||||
say_mod = "yips"
|
||||
generic="canine"
|
||||
adjective="mangy"
|
||||
tail=1
|
||||
restricted=2
|
||||
crocodile
|
||||
name="crocodile"
|
||||
//name="crocodile"
|
||||
id="croc"
|
||||
generic="water reptile"
|
||||
adjective="scaled"
|
||||
tail=1
|
||||
restricted=2
|
||||
dalmatian
|
||||
name="dalmatian"
|
||||
//name="dalmatian"
|
||||
id="dalmatian"
|
||||
say_mod = "ruffs"
|
||||
generic="canine"
|
||||
adjective="spotty"
|
||||
tail=1
|
||||
restricted=2
|
||||
deer
|
||||
name="deer"
|
||||
//name="deer"
|
||||
id="deer"
|
||||
say_mod = "grunts"
|
||||
generic = "cervid"
|
||||
@@ -138,28 +153,32 @@ datum
|
||||
tail=1 // that's better
|
||||
attack_verb = "gore"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
restricted=2
|
||||
drake
|
||||
name="drake"
|
||||
//name="drake"
|
||||
id="drake"
|
||||
say_mod = "growls"
|
||||
generic = "reptile"
|
||||
adjective = "frilly"
|
||||
tail=1 // i'd use lizard tails but drakes have frills included on the icons
|
||||
taur=1
|
||||
restricted=2
|
||||
drider
|
||||
name="drider"
|
||||
//name="drider"
|
||||
id="drider"
|
||||
generic="humanoid"
|
||||
adjective="big and hairy"
|
||||
taur=1
|
||||
tail=1
|
||||
eyes="spidereyes"
|
||||
restricted=2
|
||||
fennec
|
||||
name="fennec"
|
||||
//name="fennec"
|
||||
id="fennec"
|
||||
generic="vulpine"
|
||||
adjective="foxy"
|
||||
tail=1
|
||||
restricted=2
|
||||
fox
|
||||
name="fox"
|
||||
id="fox"
|
||||
@@ -168,39 +187,44 @@ datum
|
||||
tail=1
|
||||
taur=1
|
||||
glowfen
|
||||
name="glowfen"
|
||||
//name="glowfen"
|
||||
id="glowfen"
|
||||
generic="vulpine"
|
||||
adjective="glowing"
|
||||
tail=1
|
||||
restricted=2
|
||||
gremlin
|
||||
name="gremlin"
|
||||
//name="gremlin"
|
||||
id="gremlin"
|
||||
generic="creature"
|
||||
tail=1
|
||||
attack_verb = "thwack"
|
||||
restricted=2
|
||||
gria
|
||||
name="gria"
|
||||
//name="gria"
|
||||
id="gria"
|
||||
generic="reptile"
|
||||
adjective="scaled"
|
||||
tail=1
|
||||
attack_verb = "claw"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
restricted=2
|
||||
hawk
|
||||
name="hawk"
|
||||
//name="hawk"
|
||||
id="hawk"
|
||||
say_mod = "chirps"
|
||||
generic="bird"
|
||||
adjective="feathery"
|
||||
tail=1
|
||||
attack_verb = "whack"
|
||||
restricted=2
|
||||
hippo
|
||||
name="hippo"
|
||||
//name="hippo"
|
||||
id="hippo"
|
||||
generic="hippo"
|
||||
adjective="buoyant"
|
||||
tail=1
|
||||
restricted=2
|
||||
husky
|
||||
name="husky"
|
||||
id="husky"
|
||||
@@ -210,39 +234,43 @@ datum
|
||||
tail=1
|
||||
taur=1
|
||||
jackalope
|
||||
name="jackalope"
|
||||
//name="jackalope"
|
||||
id="jackalope"
|
||||
generic="leporid"
|
||||
adjective="hoppy and horny" //hue
|
||||
attack_verb = "kick"
|
||||
tail=1
|
||||
restricted=2
|
||||
jelly
|
||||
name="jelly"
|
||||
//name="jelly"
|
||||
id="jelly"
|
||||
generic="jelly"
|
||||
adjective="jelly"
|
||||
kangaroo
|
||||
name="kangaroo"
|
||||
//name="kangaroo"
|
||||
id="kangaroo"
|
||||
generic="marsupial"
|
||||
adjective="bouncy"
|
||||
tail=1
|
||||
attack_verb = "kick"
|
||||
restricted=2
|
||||
lab
|
||||
name="lab"
|
||||
//name="lab"
|
||||
id="lab"
|
||||
say_mod = "yaps"
|
||||
generic="canine"
|
||||
adjective="sleek"
|
||||
tail=1
|
||||
taur=1
|
||||
restricted=2
|
||||
leporid
|
||||
name="leporid"
|
||||
//name="leporid"
|
||||
id="leporid"
|
||||
generic="leporid"
|
||||
adjective="hoppy"
|
||||
tail=1
|
||||
attack_verb = "kick"
|
||||
restricted=2
|
||||
lizard
|
||||
name="lizard"
|
||||
id="lizard"
|
||||
@@ -251,49 +279,55 @@ datum
|
||||
taur="naga"
|
||||
tail=1
|
||||
murid // i have no idea what this is
|
||||
name="murid"
|
||||
//name="murid"
|
||||
id="murid"
|
||||
say_mod = "squeaks"
|
||||
generic="rodent"
|
||||
adjective="squeaky"
|
||||
tail=1
|
||||
restricted=2
|
||||
moth
|
||||
name="moth"
|
||||
//name="moth"
|
||||
id="moth"
|
||||
generic="insect"
|
||||
adjective="fluttery"
|
||||
eyes="motheyes" // this SHOULD work after i've updated human_face.dmi -- iska
|
||||
restricted=2
|
||||
mushman
|
||||
name="mushroom"
|
||||
//name="mushroom"
|
||||
id="fung"
|
||||
generic="fungi"
|
||||
adjective="sporey"
|
||||
say_mod = "mushes"
|
||||
tail=0
|
||||
restricted=2
|
||||
naga
|
||||
name="naga"
|
||||
//name="naga"
|
||||
id="naga"
|
||||
generic="humanoid"
|
||||
adjective="noodly"
|
||||
taur=1
|
||||
tail=1
|
||||
restricted=2
|
||||
otter
|
||||
name="otter"
|
||||
//name="otter"
|
||||
id="otter"
|
||||
say_mod = "squeaks"
|
||||
generic="mustelid"
|
||||
adjective="slim"
|
||||
tail=1
|
||||
restricted=2
|
||||
otusian
|
||||
name="otusian"
|
||||
//name="otusian"
|
||||
id="otie"
|
||||
say_mod ="growls"
|
||||
generic="feline-canine"
|
||||
adjective="chunky" // ??? are otusians fat????
|
||||
tail=1
|
||||
taur=1
|
||||
restricted=2
|
||||
panther
|
||||
name="panther"
|
||||
//name="panther"
|
||||
id="panther"
|
||||
generic="feline"
|
||||
adjective="furry"
|
||||
@@ -301,19 +335,22 @@ datum
|
||||
taur=1
|
||||
attack_verb = "claw"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
restricted=2
|
||||
pig
|
||||
name="pig"
|
||||
//name="pig"
|
||||
id="pig"
|
||||
generic="pig"
|
||||
adjective="curly"
|
||||
tail=1
|
||||
restricted=2
|
||||
plant
|
||||
generic="plant"
|
||||
adjective="leafy"
|
||||
restricted=2
|
||||
plant/pod
|
||||
restricted=1
|
||||
porcupine
|
||||
name="porcupine"
|
||||
//name="porcupine"
|
||||
id="porcupine"
|
||||
say_mod = "snuffles"
|
||||
generic = "rodent"
|
||||
@@ -321,8 +358,9 @@ datum
|
||||
tail=1
|
||||
attack_verb = "quill-whack"
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
restricted=2
|
||||
possum
|
||||
name="possum"
|
||||
//name="possum"
|
||||
id="possum"
|
||||
say_mod = "chitters"
|
||||
generic = "marsupial"
|
||||
@@ -330,67 +368,77 @@ datum
|
||||
tail=1
|
||||
attack_verb = "nom"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
restricted=2
|
||||
raccoon
|
||||
name="raccoon"
|
||||
//name="raccoon"
|
||||
id="raccoon"
|
||||
say_mod="churrs"
|
||||
generic="procyonid" // Family Procyonidae
|
||||
adjective="stripy"
|
||||
tail=1
|
||||
restricted=2
|
||||
roorat
|
||||
name="kangaroo rat"
|
||||
//name="kangaroo rat"
|
||||
id="roorat"
|
||||
generic="Heteromyidae" // ...marsupial rat? Have you tried a google search? They're a real thing.
|
||||
adjective="bouncy"
|
||||
tail=1
|
||||
attack_verb = "kick"
|
||||
restricted=2
|
||||
saltman
|
||||
name="salt"
|
||||
//name="salt"
|
||||
id="salt"
|
||||
generic="NaCl"
|
||||
adjective="salty"
|
||||
restricted=2
|
||||
restricted=2
|
||||
seaslug
|
||||
name="sea slug"
|
||||
//name="sea slug"
|
||||
id="seaslug"
|
||||
generic="slug"
|
||||
adjective="salty"
|
||||
tail=1
|
||||
attack_verb = "smack"
|
||||
restricted=2
|
||||
shark
|
||||
name="shark"
|
||||
//name="shark"
|
||||
id="shark"
|
||||
generic="selachimorph" // Superorder Selachimorpha
|
||||
adjective="fishy"
|
||||
tail=1
|
||||
restricted=2
|
||||
shepherd
|
||||
name="shepherd"
|
||||
//name="shepherd"
|
||||
id="shepherd"
|
||||
say_mod = "barks"
|
||||
generic="canine"
|
||||
adjective="happy"
|
||||
tail=1
|
||||
taur=1
|
||||
restricted=2
|
||||
skunk
|
||||
name="skunk"
|
||||
//name="skunk"
|
||||
id="skunk"
|
||||
say_mod = "snuffles"
|
||||
generic="mephit"
|
||||
adjective="stinky"
|
||||
tail=1
|
||||
restricted=2
|
||||
slime
|
||||
name="slime"
|
||||
//name="slime"
|
||||
id="slime"
|
||||
generic="slime"
|
||||
adjective="slimy"
|
||||
restricted=2
|
||||
smilodon
|
||||
name="smilodon"
|
||||
//name="smilodon"
|
||||
id="smilodon"
|
||||
generic="smilodon"
|
||||
adjective="toothy"
|
||||
tail=1
|
||||
restricted=2
|
||||
snarby
|
||||
name="snarby"
|
||||
//name="snarby"
|
||||
id="snarby"
|
||||
generic="beast"
|
||||
adjective="snippy and snarly"
|
||||
@@ -398,12 +446,14 @@ datum
|
||||
attack_verb = "chomp"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
eyes = "snarbyeyes"
|
||||
restricted=2
|
||||
squirrel
|
||||
name="squirrel"
|
||||
//name="squirrel"
|
||||
id="squirrel"
|
||||
generic="rodent"
|
||||
adjective="nutty"
|
||||
tail=1
|
||||
restricted=2
|
||||
tajaran
|
||||
name="tajaran"
|
||||
id="tajaran"
|
||||
@@ -413,14 +463,21 @@ datum
|
||||
taur=1
|
||||
attack_verb = "claw"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
turtle
|
||||
name="turtle"
|
||||
toucan
|
||||
name="toucan"
|
||||
id="toucan"
|
||||
generic="bird"
|
||||
adjective="colorful"
|
||||
tail=1
|
||||
attack_verb = "pecks"
|
||||
/* turtle
|
||||
//name="turtle"
|
||||
id="turtle"
|
||||
generic="reptile"
|
||||
adjective="hard-shelled"
|
||||
tail=1
|
||||
ursine
|
||||
name="bear"
|
||||
//name="bear"
|
||||
id="ursine"
|
||||
generic="ursine"
|
||||
adjective="husky"
|
||||
@@ -429,7 +486,7 @@ datum
|
||||
attack_verb = "claw"
|
||||
attack_sound = 'sound/weapons/bladeslice.ogg'
|
||||
wolf
|
||||
name="wolf"
|
||||
//name="wolf"
|
||||
id="wolf"
|
||||
say_mod = "howls"
|
||||
generic="canine"
|
||||
@@ -437,11 +494,11 @@ datum
|
||||
tail=1
|
||||
taur=1
|
||||
zig
|
||||
name="zig"
|
||||
//name="zig"
|
||||
id="zig"
|
||||
generic="pokémon"
|
||||
adjective="curious"
|
||||
tail=1
|
||||
tail=1 */
|
||||
|
||||
|
||||
/*
|
||||
@@ -497,16 +554,9 @@ datum
|
||||
adjective="rocky"
|
||||
restricted=2
|
||||
zombie
|
||||
//name="zombie"
|
||||
//name = "High Functioning Zombie"
|
||||
id="zombie"
|
||||
generic="undead"
|
||||
adjective="rotten"
|
||||
restricted=2
|
||||
cosmetic_zombie // considering renaming to zombie/cosmetic
|
||||
//name="zombie"
|
||||
id="zombie"
|
||||
generic="undead"
|
||||
adjective="particularly rotten"
|
||||
say_mod="moans"
|
||||
restricted=2
|
||||
plasmaman
|
||||
//name="Plasmabone"
|
||||
@@ -527,7 +577,7 @@ datum
|
||||
adjective="refreshing"
|
||||
restricted=2 // don't want half the station to be running around with soda cans on their heads
|
||||
cutebold
|
||||
name="cutebold"
|
||||
//name="cutebold"
|
||||
id="cutebold"
|
||||
say_mod = "yips"
|
||||
generic = "kobo"
|
||||
@@ -535,22 +585,39 @@ datum
|
||||
tail=1
|
||||
attack_verb = "nom"
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
restricted=2
|
||||
pony // of the "my little" variety
|
||||
name="pony"
|
||||
//name="pony"
|
||||
id="pony"
|
||||
generic="equine"
|
||||
adjective="little"
|
||||
tail=1
|
||||
attack_verb= "kick"
|
||||
restricted=2
|
||||
hylotl
|
||||
name="hylotl"
|
||||
//name="hylotl"
|
||||
id="hylotl"
|
||||
say_mod = "glubs"
|
||||
generic="amphibian"
|
||||
adjective="fishy"
|
||||
tail=0
|
||||
eyes="jelleyes"
|
||||
/*var/list/kpcode_race_list
|
||||
restricted=2
|
||||
synth
|
||||
//name = "Synth" //inherited from the real species, for health scanners and things
|
||||
id = "synth"
|
||||
say_mod = "beep boops" //inherited from a user's real species
|
||||
restricted=2
|
||||
synth/military
|
||||
//name = "Military Synth"
|
||||
id = "military_synth"
|
||||
restricted=2
|
||||
corporate
|
||||
//name = "Corporate Agent"
|
||||
id = "agent"
|
||||
restricted=2
|
||||
/*
|
||||
var/list/kpcode_race_list
|
||||
|
||||
proc/kpcode_race_genlist()
|
||||
if(!kpcode_race_list)
|
||||
@@ -558,8 +625,9 @@ proc/kpcode_race_genlist()
|
||||
kpcode_race_list = new/list()
|
||||
for(var/path in paths)
|
||||
var/datum/species/D = new path()
|
||||
if(D.name!="undefined")
|
||||
kpcode_race_list[D.name] = D*/
|
||||
if(D.//name!="undefined")
|
||||
kpcode_race_list[D.//name] = D
|
||||
*/
|
||||
|
||||
proc/kpcode_race_getlist(var/restrict=0)
|
||||
var/list/race_options = list()
|
||||
@@ -1,4 +1,4 @@
|
||||
//Configuraton defines //TODO: Move all yes/no switches into bitflags
|
||||
f//Configuraton defines //TODO: Move all yes/no switches into bitflags
|
||||
|
||||
//Used by jobs_have_maint_access
|
||||
#define ASSISTANTS_HAVE_MAINT_ACCESS 1
|
||||
|
||||
@@ -103,12 +103,12 @@
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
|
||||
log_name = "MM"
|
||||
category = "Defensive"
|
||||
|
||||
/*
|
||||
/datum/spellbook_entry/disintegrate
|
||||
name = "Disintegrate"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/touch/disintegrate
|
||||
log_name = "DG"
|
||||
|
||||
*/
|
||||
/datum/spellbook_entry/disabletech
|
||||
name = "Disable Tech"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech
|
||||
@@ -259,7 +259,7 @@
|
||||
if(surplus>=0)
|
||||
dat += "[surplus] left.<br>"
|
||||
return dat
|
||||
|
||||
/*
|
||||
/datum/spellbook_entry/item/staffchange
|
||||
name = "Staff of Change"
|
||||
desc = "An artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself."
|
||||
@@ -278,7 +278,7 @@
|
||||
desc = "A caprious tool that can fire all sorts of magic without any rhyme or reason. Using it on people you care about is not recommended."
|
||||
item_path = /obj/item/weapon/gun/magic/staff/chaos
|
||||
log_name = "SC"
|
||||
|
||||
*/
|
||||
/datum/spellbook_entry/item/staffdoor
|
||||
name = "Staff of Door Creation"
|
||||
desc = "A particular staff that can mold solid metal into ornate doors. Useful for getting around in the absence of other transportation. Does not work on glass."
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
if(confirm == "Yes")
|
||||
suiciding = 1
|
||||
log_game("[key_name(src)] (job: [job ? "[job]" : "None"]) commited suicide at [get_area(src)].")
|
||||
message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) commited suicide at [get_area(src)].")
|
||||
var/obj/item/held_item = get_active_hand()
|
||||
if(held_item)
|
||||
var/damagetype = held_item.suicide_act(src)
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#ifdef PUTONHUB
|
||||
hub_password = "kMZy3U5jJHSiBQjr"
|
||||
#else
|
||||
hub_password = "SORRYNOPASSWORD"
|
||||
hub_password = "kMZy3U5jJHSiBQjr"
|
||||
#endif
|
||||
name = "/tg/ Station 13"
|
||||
name = "Citadel Station 13"
|
||||
|
||||
/*
|
||||
This is for any host that would like their server to appear on the main SS13 hub.
|
||||
|
||||
@@ -119,7 +119,9 @@ Thus, the two variables affect pump operation are set in New():
|
||||
switch(action)
|
||||
if("power")
|
||||
on = !on
|
||||
investigate_log("was turned [on ? "on" : "off"] by [key_name(usr)]", "atmos")
|
||||
investigate_log("Pump, [src.name], was turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [loc.loc]", "atmos")
|
||||
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [key_name(usr)] at [x], [y], [z], [loc.loc]")
|
||||
log_admin("[key_name(usr)] manipulated a pump at [x], [y], [z]")
|
||||
. = TRUE
|
||||
if("pressure")
|
||||
var/pressure = params["pressure"]
|
||||
@@ -135,7 +137,9 @@ Thus, the two variables affect pump operation are set in New():
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = Clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", "atmos")
|
||||
investigate_log("Pump, [src.name], was set to [target_pressure] kPa by [key_name(usr)] at [x], [y], [z], [loc.loc]", "atmos")
|
||||
message_admins("Pump, [src.name], was set to [target_pressure] kPa by [key_name(usr)] at [x], [y], [z], [loc.loc]")
|
||||
log_admin("[key_name(usr)] manipulated a pump at [x], [y], [z]")
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/components/binary/pump/atmosinit()
|
||||
@@ -178,5 +182,8 @@ Thus, the two variables affect pump operation are set in New():
|
||||
if(!(stat & NOPOWER) && on)
|
||||
user << "<span class='warning'>You cannot unwrench this [src], turn it off first!</span>"
|
||||
else
|
||||
investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [loc.loc]", "atmos")
|
||||
message_admins("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [loc.loc]")
|
||||
log_admin("[key_name(usr)] unwrenched a pump at [x], [y], [z]")
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell
|
||||
name = "cryo cell"
|
||||
icon = 'icons/obj/cryogenics.dmi'
|
||||
icon_state = "cell-off"
|
||||
icon_state = "pod0"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
state_open = FALSE
|
||||
var/autoeject = FALSE
|
||||
var/volume = 100
|
||||
|
||||
var/running_bob_animation = 0
|
||||
var/efficiency = 1
|
||||
var/sleep_factor = 750
|
||||
var/paralyze_factor = 1000
|
||||
@@ -54,17 +54,59 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/update_icon()
|
||||
handle_update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/proc/handle_update_icon() //making another proc to avoid spam in update_icon
|
||||
overlays.Cut() //empty the overlay proc, just in case
|
||||
|
||||
if(panel_open)
|
||||
icon_state = "cell-o"
|
||||
icon_state = "pod0-o"
|
||||
else if(state_open)
|
||||
icon_state = "cell-open"
|
||||
icon_state = "pod0"
|
||||
else if(on && is_operational())
|
||||
if(occupant)
|
||||
icon_state = "cell-occupied"
|
||||
var/image/pickle = image(occupant.icon, occupant.icon_state)
|
||||
pickle.overlays = occupant.overlays
|
||||
pickle.pixel_y = 22
|
||||
overlays += pickle
|
||||
icon_state = "pod1"
|
||||
var/up = 0 //used to see if we are going up or down, 1 is down, 2 is up
|
||||
spawn(0) // Without this, the icon update will block. The new thread will die once the occupant leaves.
|
||||
running_bob_animation = 1
|
||||
while(occupant)
|
||||
overlays -= "lid1" //have to remove the overlays first, to force an update- remove cloning pod overlay
|
||||
overlays -= pickle //remove mob overlay
|
||||
|
||||
switch(pickle.pixel_y) //this looks messy as fuck but it works, switch won't call itself twice
|
||||
|
||||
if(23) //inbetween state, for smoothness
|
||||
switch(up) //this is set later in the switch, to keep track of where the mob is supposed to go
|
||||
if(2) //2 is up
|
||||
pickle.pixel_y = 24 //set to highest
|
||||
|
||||
if(1) //1 is down
|
||||
pickle.pixel_y = 22 //set to lowest
|
||||
|
||||
if(22) //mob is at it's lowest
|
||||
pickle.pixel_y = 23 //set to inbetween
|
||||
up = 2 //have to go up
|
||||
|
||||
if(24) //mob is at it's highest
|
||||
pickle.pixel_y = 23 //set to inbetween
|
||||
up = 1 //have to go down
|
||||
|
||||
overlays += pickle //re-add the mob to the icon
|
||||
overlays += "lid1" //re-add the overlay of the pod, they are inside it, not floating
|
||||
|
||||
sleep(7) //don't want to jiggle violently, just slowly bob
|
||||
return
|
||||
running_bob_animation = 0
|
||||
else
|
||||
icon_state = "cell-on"
|
||||
icon_state = "pod1"
|
||||
overlays += "lid0" //have to remove the overlays first, to force an update- remove cloning pod overlay
|
||||
else
|
||||
icon_state = "cell-off"
|
||||
icon_state = "pod0"
|
||||
overlays += "lid0" //if no occupant, just put the lid overlay on, and ignore the rest
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/process()
|
||||
..()
|
||||
|
||||
@@ -45,7 +45,7 @@ var/list/preferences_datums = list()
|
||||
var/mutant_tail = "none"
|
||||
var/mutant_wing = "none"
|
||||
var/wingcolor = "FFF"
|
||||
var/special_color[COLOUR_LIST_SIZE]
|
||||
//var/special_color[COLOUR_LIST_SIZE]
|
||||
//var/special_color_one = null
|
||||
//var/special_color_two = null
|
||||
var/vore_banned_methods = 0
|
||||
@@ -212,11 +212,11 @@ var/list/preferences_datums = list()
|
||||
if(config.mutant_races)
|
||||
dat += "<b>Species:</b><BR><a href='?_src_=prefs;preference=species;task=input'>[pref_species.id]</a><BR>"
|
||||
dat += "<b>Human Tail:</b><a href='?_src_=prefs;preference=mutant_tail;task=input'>[mutant_tail]</a><BR>"
|
||||
dat += "<b>Taur:</b><a href='?_src_=prefs;preference=be_taur;task=input'>[be_taur ? "Yes" : "No"]</a>"
|
||||
dat += "<b>Taur (Disabled):</b><a href='?_src_=prefs;preference=be_taur;task=input'>[be_taur ? "Yes" : "No"]</a>"
|
||||
if(!kpcode_cantaur(pref_species.id))
|
||||
dat += " (not available for [pref_species.id])"
|
||||
dat += "<BR>"
|
||||
if(special_color[1])
|
||||
/*if(special_color[1])
|
||||
dat += "<span style='border:1px solid #161616; background-color: #[special_color[1]];'> </span> <a href='?_src_=prefs;preference=special_color;which=1;task=input'>Primary</a><BR>"
|
||||
else
|
||||
dat += "<a href='?_src_=prefs;preference=special_color;which=1;task=input'>Primary?</a><BR>"
|
||||
@@ -227,7 +227,7 @@ var/list/preferences_datums = list()
|
||||
if(special_color[3])
|
||||
dat += "<span style='border:1px solid #161616; background-color: #[special_color[3]];'> </span> <a href='?_src_=prefs;preference=special_color;which=3;task=input'>Tertiary</a><BR>"
|
||||
else
|
||||
dat += "<a href='?_src_=prefs;preference=special_color;which=3;task=input'>Tertiary?</a><BR>"
|
||||
dat += "<a href='?_src_=prefs;preference=special_color;which=3;task=input'>Tertiary?</a><BR>"*/
|
||||
else
|
||||
dat += "<b>Species:</b> Human<BR>"
|
||||
|
||||
@@ -382,9 +382,9 @@ var/list/preferences_datums = list()
|
||||
|
||||
dat += "<a href='?_src_=prefs;preference=wings;task=input'>[features["wings"]]</a><BR>"
|
||||
|
||||
dat += "</td>"
|
||||
dat += "</td>"*/
|
||||
|
||||
dat += "</tr></table>"*/
|
||||
dat += "</tr></table>"
|
||||
|
||||
|
||||
if (1) // Game Preferences
|
||||
@@ -996,7 +996,7 @@ var/list/preferences_datums = list()
|
||||
if(new_wingcolor)
|
||||
wingcolor = sanitize_hexcolor(new_wingcolor)
|
||||
|
||||
if("special_color")
|
||||
/*if("special_color")
|
||||
var/index_tc=href_list["which"]
|
||||
switch(alert("Use a special colour for #[index_tc]?","Character Preference","Yes","No","Cancel"))
|
||||
if("Yes")
|
||||
@@ -1004,7 +1004,7 @@ var/list/preferences_datums = list()
|
||||
if(new_color)
|
||||
special_color[text2num(index_tc)] = sanitize_hexcolor(new_color)
|
||||
if("No")
|
||||
special_color[text2num(index_tc)]=null
|
||||
special_color[text2num(index_tc)]=null*/
|
||||
|
||||
if("character_size")
|
||||
var/new_size = input(user, "Choose your character's size:", "Character Preference") in list("huge", "large", "normal", "small", "tiny")
|
||||
@@ -1016,10 +1016,11 @@ var/list/preferences_datums = list()
|
||||
VP.target=src
|
||||
VP.ShowChoices(user)
|
||||
|
||||
if("be_taur")
|
||||
be_taur = !be_taur
|
||||
//if("be_taur")
|
||||
// be_taur = !be_taur
|
||||
|
||||
/*if("tail_lizard")
|
||||
/*
|
||||
if("tail_lizard")
|
||||
var/new_tail
|
||||
new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in tails_list_lizard
|
||||
if(new_tail)
|
||||
@@ -1071,7 +1072,8 @@ var/list/preferences_datums = list()
|
||||
var/new_body_markings
|
||||
new_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in body_markings_list
|
||||
if(new_body_markings)
|
||||
features["body_markings"] = new_body_markings*/
|
||||
features["body_markings"] = new_body_markings
|
||||
*/
|
||||
|
||||
if("s_tone")
|
||||
var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in skin_tones
|
||||
@@ -1276,12 +1278,12 @@ var/list/preferences_datums = list()
|
||||
|
||||
if(mutant_tail != "none" && config.mutant_races)
|
||||
character.dna.mutanttail = mutant_tail
|
||||
if(mutant_wing != "none" && config.mutant_races)
|
||||
/*(if(mutant_wing != "none" && config.mutant_races)
|
||||
character.dna.mutantwing = mutant_wing
|
||||
character.dna.wingcolor=wingcolor
|
||||
if(be_taur)
|
||||
character.dna.taur=1
|
||||
character.dna.special_color = special_color
|
||||
character.dna.wingcolor=wingcolor*/
|
||||
//if(be_taur)
|
||||
// character.dna.taur=1
|
||||
//character.dna.special_color = special_color
|
||||
character.dna.cock=p_cock
|
||||
character.dna.vagina=p_vagina
|
||||
|
||||
|
||||
@@ -195,6 +195,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
if(needs_update == -2) //fatal, can't load any data
|
||||
return 0
|
||||
|
||||
if(!S["species"] || !config.mutant_races)
|
||||
S["species"] << new /datum/species/human()
|
||||
|
||||
//general preferences
|
||||
S["ooccolor"] >> ooccolor
|
||||
S["lastchangelog"] >> lastchangelog
|
||||
@@ -296,17 +299,21 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
return 0
|
||||
|
||||
//Species
|
||||
var/species_id
|
||||
S["species"] >> species_id
|
||||
if(config.mutant_races && species_id && (species_id in roundstart_species))
|
||||
var/newtype = roundstart_species[species_id]
|
||||
/*var/species_name
|
||||
S["species"] >> species_name
|
||||
if(config.mutant_races && species_name && (species_name in roundstart_species))
|
||||
var/newtype = roundstart_species[species_name]
|
||||
pref_species = new newtype()
|
||||
else
|
||||
var/rando_race = pick(config.roundstart_races)
|
||||
pref_species = new rando_race()
|
||||
pref_species = new /datum/species/human()
|
||||
|
||||
if(!S["features["mcolor"]"] || S["features["mcolor"]"] == "#000")
|
||||
S["features["mcolor"]"] << "#FFF"
|
||||
S["features["mcolor"]"] << "#FFF"*/
|
||||
|
||||
if(!S["species"] || !config.mutant_races)
|
||||
S["species"] << new /datum/species/human()
|
||||
//if(!S["mutant_color"] || S["mutant_color"] == "#000")
|
||||
// S["mutant_color"] << "#FFF"
|
||||
|
||||
//Character
|
||||
S["Flavor_Text"] >> flavor_text
|
||||
@@ -344,6 +351,22 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["cyborg_name"] >> custom_names["cyborg"]
|
||||
S["religion_name"] >> custom_names["religion"]
|
||||
S["deity_name"] >> custom_names["deity"]
|
||||
S["species"] >> pref_species
|
||||
|
||||
//Customs
|
||||
S["mutant_tail"] >> mutant_tail
|
||||
S["mutant_wing"] >> mutant_wing
|
||||
S["wingcolor"] >> wingcolor
|
||||
//S["special_color_one"] >> special_color_one
|
||||
//S["special_color_two"] >> special_color_two
|
||||
//S["special_color"] >> special_color
|
||||
S["be_taur"] >> be_taur
|
||||
S["vore_ability"] >> vore_ability
|
||||
S["vore_banned_methods"]>> vore_banned_methods
|
||||
S["vore_extra_bans"] >> vore_extra_bans
|
||||
S["character_size"] >> character_size
|
||||
S["p_cock"] >> p_cock
|
||||
S["p_vagina"] >> p_vagina
|
||||
|
||||
//Jobs
|
||||
S["userandomjob"] >> userandomjob
|
||||
@@ -364,10 +387,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//Sanitize
|
||||
flavor_text = sanitize_text(flavor_text, initial(flavor_text))
|
||||
real_name = reject_bad_name(real_name)
|
||||
if(!features["mcolor"] || features["mcolor"] == "#000")
|
||||
features["mcolor"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
|
||||
if(!real_name)
|
||||
real_name = random_unique_name(gender)
|
||||
//if(!(pref_species in species_list))
|
||||
if(!(pref_species))
|
||||
pref_species = new /datum/species/human()
|
||||
//if(!mutant_color || mutant_color == "#000")
|
||||
// mutant_color = "#FFF"
|
||||
if(!real_name) real_name = random_unique_name(gender)
|
||||
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
|
||||
be_random_body = sanitize_integer(be_random_body, 0, 1, initial(be_random_body))
|
||||
gender = sanitize_gender(gender)
|
||||
@@ -388,6 +413,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
eye_color = sanitize_hexcolor(eye_color, 3, 0)
|
||||
skin_tone = sanitize_inlist(skin_tone, skin_tones)
|
||||
backbag = sanitize_inlist(backbag, backbaglist, initial(backbag))
|
||||
/*
|
||||
features["mcolor"] = sanitize_hexcolor(features["mcolor"], 3, 0)
|
||||
features["tail_lizard"] = sanitize_inlist(features["tail_lizard"], tails_list_lizard)
|
||||
features["tail_human"] = sanitize_inlist(features["tail_human"], tails_list_human, "None")
|
||||
@@ -396,7 +422,20 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
features["ears"] = sanitize_inlist(features["ears"], ears_list, "None")
|
||||
features["frills"] = sanitize_inlist(features["frills"], frills_list)
|
||||
features["spines"] = sanitize_inlist(features["spines"], spines_list)
|
||||
features["body_markings"] = sanitize_inlist(features["body_markings"], body_markings_list)
|
||||
features["body_markings"] = sanitize_inlist(features["body_markings"], body_markings_list)*/
|
||||
|
||||
mutant_tail = sanitize_text(mutant_tail, initial(mutant_tail))
|
||||
mutant_wing = sanitize_text(mutant_wing, initial(mutant_wing))
|
||||
wingcolor = sanitize_hexcolor(wingcolor, 3, 0)
|
||||
character_size = sanitize_text(character_size, initial(character_size))
|
||||
// mutant_color = sanitize_hexcolor(mutant_color, 3, 0)
|
||||
|
||||
vore_ability=sanitize_vore_list(vore_ability)
|
||||
if(isnull(vore_banned_methods))vore_banned_methods=0
|
||||
if(isnull(vore_extra_bans))vore_extra_bans=65535
|
||||
if(isnull(p_vagina)) p_vagina=gender==FEMALE
|
||||
if(isnull(p_cock))
|
||||
p_cock=list("has"=gender==MALE,"type"="human","color"="900")
|
||||
|
||||
userandomjob = sanitize_integer(userandomjob, 0, 1, initial(userandomjob))
|
||||
job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high))
|
||||
@@ -454,6 +493,19 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["cyborg_name"] << custom_names["cyborg"]
|
||||
S["religion_name"] << custom_names["religion"]
|
||||
S["deity_name"] << custom_names["deity"]
|
||||
S["species"] << pref_species
|
||||
//Custom
|
||||
S["mutant_tail"] << mutant_tail
|
||||
S["mutant_wing"] << mutant_wing
|
||||
S["wingcolor"] << wingcolor
|
||||
//S["special_color"] << special_color
|
||||
S["be_taur"] << be_taur
|
||||
S["vore_ability"] << vore_ability
|
||||
S["vore_banned_methods"]<< vore_banned_methods
|
||||
S["vore_extra_bans"] << vore_extra_bans
|
||||
S["character_size"] << character_size
|
||||
S["p_cock"] << p_cock
|
||||
S["p_vagina"] << p_vagina
|
||||
|
||||
//Jobs
|
||||
S["userandomjob"] << userandomjob
|
||||
|
||||
@@ -695,22 +695,23 @@
|
||||
threatcount += 2
|
||||
|
||||
//Check for dresscode violations
|
||||
if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard))
|
||||
threatcount += 2
|
||||
if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/syndi) || istype(head, /obj/item/clothing/head/helmet/space/syndicate) || istype(head, /obj/item/clothing/head/culthood))
|
||||
threatcount += 5
|
||||
|
||||
//Check for nonhuman scum
|
||||
if(dna && dna.species.id && dna.species.id != "human")
|
||||
threatcount += 1
|
||||
threatcount += 0
|
||||
|
||||
//mindshield implants imply trustworthyness
|
||||
//Loyalty implants imply trustworthyness
|
||||
if(isloyal(src))
|
||||
threatcount -= 1
|
||||
|
||||
//Agent cards lower threatlevel.
|
||||
//Agent cards lower threatlevel, but only just enough to avoid dresscode violations.
|
||||
if(istype(idcard, /obj/item/weapon/card/id/syndicate))
|
||||
threatcount -= 5
|
||||
threatcount -= 2
|
||||
|
||||
return threatcount
|
||||
return threatcount
|
||||
|
||||
|
||||
//Used for new human mobs created by cloning/goleming/podding
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
var/darksight = 2
|
||||
|
||||
// species flags. these can be found in flags.dm
|
||||
var/list/specflags = list()
|
||||
var/list/specflags = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
|
||||
|
||||
var/attack_verb = "punch" // punch-specific attack verb
|
||||
var/sound/attack_sound = 'sound/weapons/punch1.ogg'
|
||||
@@ -294,8 +294,44 @@
|
||||
if(U3)
|
||||
standing += image("icon"=U3.icon, "icon_state"="[U3.icon_state]_s", "layer"=-BODY_LAYER)
|
||||
|
||||
if(standing.len)
|
||||
H.overlays_standing[BODY_LAYER] = standing
|
||||
//Custom Code
|
||||
if(H.dna&&H.dna.taur&&!kpcode_cantaur(id))H.dna.taur=0//VERY BAD TEMP FIX
|
||||
|
||||
if(H.underwear&&H.underwear!="Nude"&&H.underwear_active&& (!H.dna||!H.dna.taur) )
|
||||
var/datum/sprite_accessory/underwear/U = underwear_list[H.underwear]
|
||||
if(U)
|
||||
standing += image("icon"=U.icon, "icon_state"="[U.icon_state]_s", "layer"=-BODY_LAYER)
|
||||
|
||||
else if((!H.dna || !H.dna.taur) && (!H.wear_suit || !(H.wear_suit.flags_inv&HIDEJUMPSUIT)) && (!H.w_uniform||!(H.w_uniform.body_parts_covered&GROIN)) )
|
||||
if(H.dna&&H.dna.cock)
|
||||
//cock codes here
|
||||
var/list/cock=H.dna.cock
|
||||
var/cock_mod=0
|
||||
var/cock_type=cock["type"]
|
||||
if(cock["has"]==H.dna.COCK_NORMAL)cock_mod="n"
|
||||
else if(cock["has"]==H.dna.COCK_HYPER)cock_mod="h"
|
||||
else if(cock["has"]==H.dna.COCK_DOUBLE)cock_mod="d"
|
||||
if(cock_mod)
|
||||
var/icon/chk=new/icon('icons/mob/cock.dmi')
|
||||
var/list/available_states=chk.IconStates()
|
||||
if(available_states.Find("[cock_type]_c_[cock_mod]"))
|
||||
var/image/cockimtmp = image("icon"='icons/mob/cock.dmi', "icon_state"="[cock_type]_c_[cock_mod]", "layer"=-BODY_LAYER)
|
||||
var/new_color = "#" + cock["color"]
|
||||
cockimtmp.color = new_color
|
||||
standing += cockimtmp
|
||||
if(available_states.Find("[cock_type]_s_[cock_mod]"))
|
||||
var/image/cockimtmp = image("icon"='icons/mob/cock.dmi', "icon_state"="[cock_type]_s_[cock_mod]", "layer"=-BODY_LAYER)
|
||||
if(H.dna.special_color[2])
|
||||
var/new_color = "#" + H.dna.special_color[2]
|
||||
cockimtmp.color = new_color
|
||||
standing += cockimtmp
|
||||
|
||||
if(H.dna&&H.dna.taur)
|
||||
|
||||
var/taur_state="[kpcode_cantaur(H.dna.mutantrace())]_overlay"
|
||||
if(H.vore_womb_datum.has_people()||H.vore_stomach_datum.has_people())
|
||||
taur_state+="_f"
|
||||
standing += generate_colour_icon('icons/mob/special/taur.dmi',"[taur_state]",H.dna.special_color,offset_x=-16,add_layer=-BODY_LAYER)
|
||||
|
||||
H.apply_overlay(BODY_LAYER)
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
name = "Human"
|
||||
id = "human"
|
||||
default_color = "FFFFFF"
|
||||
specflags = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
|
||||
//specflags = list(EYECOLOR,HAIR,FACEHAIR,LIPS)
|
||||
mutant_bodyparts = list("tail_human", "ears", "wings")
|
||||
default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None")
|
||||
use_skintones = 1
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
|
||||
|
||||
/*
|
||||
/datum/species/human/qualifies_for_rank(rank, list/features)
|
||||
if((!features["tail_human"] || features["tail_human"] == "None") && (!features["ears"] || features["ears"] == "None"))
|
||||
return 1 //Pure humans are always allowed in all roles.
|
||||
@@ -28,7 +28,7 @@
|
||||
return 0
|
||||
if(rank == "Quartermaster") //QM is not contained in command_positions but we still want to bar mutants from it.
|
||||
return 0
|
||||
return ..()
|
||||
return ..()*/
|
||||
|
||||
|
||||
/datum/species/human/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
@@ -53,7 +53,8 @@
|
||||
id = "lizard"
|
||||
say_mod = "hisses"
|
||||
default_color = "00FF00"
|
||||
specflags = list(MUTCOLORS,EYECOLOR,LIPS)
|
||||
roundstart = 1
|
||||
specflags = list(MUTCOLORS,EYECOLOR,LIPS,HAIR,FACEHAIR)
|
||||
mutant_bodyparts = list("tail_lizard", "snout", "spines", "horns", "frills", "body_markings")
|
||||
mutant_organs = list(/obj/item/organ/tongue/lizard)
|
||||
default_features = list("mcolor" = "0F0", "tail" = "Smooth", "snout" = "Round", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None")
|
||||
@@ -147,7 +148,7 @@
|
||||
if(/obj/item/projectile/energy/florayield)
|
||||
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/*
|
||||
SHADOWPEOPLE
|
||||
@@ -188,7 +189,7 @@
|
||||
default_color = "00FF90"
|
||||
say_mod = "chirps"
|
||||
eyes = "jelleyes"
|
||||
specflags = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER)
|
||||
specflags = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
|
||||
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime
|
||||
exotic_blood = "slimejelly"
|
||||
var/datum/action/innate/regenerate_limbs/regenerate_limbs
|
||||
@@ -285,7 +286,7 @@
|
||||
id = "slime"
|
||||
default_color = "00FFFF"
|
||||
darksight = 3
|
||||
specflags = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE, TOXINLOVER)
|
||||
specflags = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD)
|
||||
say_mod = "says"
|
||||
eyes = "eyes"
|
||||
hair_color = "mutcolor"
|
||||
|
||||
@@ -85,6 +85,53 @@ There are several things that need to be remembered:
|
||||
dna.species.handle_body(src)
|
||||
update_body_parts()
|
||||
|
||||
//Tail code
|
||||
remove_overlay(TAIL_LAYER)
|
||||
var/list/t_standing = list()
|
||||
//var/icon/chk=new/icon('icons/mob/tail.dmi')
|
||||
//var/list/available_states=chk.IconStates()
|
||||
|
||||
var/wing = dna ? dna.mutantwing : null
|
||||
if(wing&&wing!="none"&&!dna.taur)
|
||||
var/image/wing_s = image("icon" = 'icons/mob/wing.dmi', "icon_state" = "[wing]", "layer" = -TAIL_LAYER)
|
||||
wing_s.color = "#" + dna.wingcolor
|
||||
t_standing += wing_s
|
||||
|
||||
var/race = dna ? dna.mutantrace() : null
|
||||
if(race&&kpcode_hastail(race) &&!dna.taur) //Temp taur fix
|
||||
t_standing+=generate_colour_icon('icons/mob/tail.dmi',"[kpcode_hastail(race)]",dna.special_color,add_layer=-TAIL_LAYER)
|
||||
/*var/list/standingt = list()
|
||||
standingt += image("icon"='icons/mob/tail.dmi', "icon_state"="[race]", "layer"=-TAIL_LAYER)
|
||||
if(dna.special_color_one)
|
||||
if(available_states.Find("[race]_1"))
|
||||
var/image/standingt_one = image("icon"='icons/mob/tail.dmi', "icon_state"="[race]_1", "layer"=-TAIL_LAYER)
|
||||
var/new_color = "#" + dna.special_color_one
|
||||
standingt_one.color = new_color
|
||||
standingt += standingt_one
|
||||
overlays_standing[TAIL_LAYER] = standingt*/
|
||||
else
|
||||
if(!race||race=="human")
|
||||
var/tail = dna ? dna.mutanttail : null
|
||||
if(tail&&kpcode_hastail(tail) &&!dna.taur) //Temp taur fix
|
||||
t_standing+=generate_colour_icon('icons/mob/tail.dmi',"[kpcode_hastail(tail)]",dna.special_color,add_layer=-TAIL_LAYER,human=hair_color)
|
||||
/*var/list/standingt = list()
|
||||
standingt += image("icon"='icons/mob/tail.dmi', "icon_state"="[kpcode_hastail(tail)]", "pixel_y"=kpcode_tail_offset(tail), "layer"=-TAIL_LAYER) //may need a +(pixel_y/2)
|
||||
var/image/standingt_one = image("icon"='icons/mob/tail.dmi', "icon_state"="[kpcode_hastail(tail)]_1", "pixel_y"=kpcode_tail_offset(tail), "layer"=-TAIL_LAYER)
|
||||
var/new_color = "#" + hair_color
|
||||
standingt_one.color = new_color
|
||||
standingt += standingt_one
|
||||
overlays_standing[TAIL_LAYER] = standingt*/
|
||||
|
||||
if(dna&&dna.taur)
|
||||
t_standing+=generate_colour_icon('icons/mob/special/taur.dmi',"[kpcode_cantaur(dna.mutantrace())]_tail",dna.special_color,offset_x=-16,add_layer=-TAIL_LAYER)
|
||||
if(src.vore_womb_datum.has_people()||src.vore_stomach_datum.has_people())
|
||||
t_standing+=generate_colour_icon('icons/mob/special/taur.dmi',"[kpcode_cantaur(dna.mutantrace())]_tail_f",dna.special_color,offset_x=-16,add_layer=-TAIL_LAYER)
|
||||
|
||||
if(t_standing.len)
|
||||
overlays_standing[TAIL_LAYER] =t_standing
|
||||
|
||||
apply_overlay(TAIL_LAYER)
|
||||
|
||||
/mob/living/carbon/human/update_fire()
|
||||
..("Standing")
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
minor_announce(config.alert_desc_blue_upto, "Attention! Security level elevated to blue:",1)
|
||||
else
|
||||
minor_announce(config.alert_desc_blue_downto, "Attention! Security level lowered to blue:")
|
||||
for(var/mob/M in player_list)
|
||||
M << 'sound/misc/voybluealert.ogg'
|
||||
security_level = SEC_LEVEL_BLUE
|
||||
for(var/obj/machinery/firealarm/FA in machines)
|
||||
if(FA.z == ZLEVEL_STATION)
|
||||
@@ -40,6 +42,8 @@
|
||||
minor_announce(config.alert_desc_red_upto, "Attention! Code red!",1)
|
||||
else
|
||||
minor_announce(config.alert_desc_red_downto, "Attention! Code red!")
|
||||
for(var/mob/M in player_list)
|
||||
M << 'sound/misc/voyalert.ogg'
|
||||
security_level = SEC_LEVEL_RED
|
||||
|
||||
/* - At the time of commit, setting status displays didn't work properly
|
||||
@@ -54,6 +58,8 @@
|
||||
pod.admin_controlled = 0
|
||||
if(SEC_LEVEL_DELTA)
|
||||
minor_announce(config.alert_desc_delta, "Attention! Delta security level reached!",1)
|
||||
for(var/mob/M in player_list)
|
||||
M << 'sound/misc/tas_red_alert.ogg'
|
||||
security_level = SEC_LEVEL_DELTA
|
||||
for(var/obj/machinery/firealarm/FA in machines)
|
||||
if(FA.z == ZLEVEL_STATION)
|
||||
|
||||
@@ -182,6 +182,7 @@
|
||||
travelDir = -90
|
||||
roundstart_move = "emergency_away"
|
||||
var/sound_played = 0 //If the launch sound has been sent to all players on the shuttle itself
|
||||
var/end_sound_played = 0 //so it doesn't loop annoyingly
|
||||
|
||||
/obj/docking_port/mobile/emergency/register()
|
||||
. = ..()
|
||||
@@ -299,7 +300,7 @@
|
||||
|
||||
if(SHUTTLE_DOCKED)
|
||||
|
||||
if(time_left <= 50 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch
|
||||
if(time_left <= 60 && !sound_played) //4 seconds left:REV UP THOSE ENGINES BOYS. - should sync up with the launch
|
||||
sound_played = 1 //Only rev them up once.
|
||||
for(var/area/shuttle/escape/E in world)
|
||||
E << 'sound/effects/hyperspace_begin.ogg'
|
||||
@@ -326,6 +327,12 @@
|
||||
timer = world.time
|
||||
priority_announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", null, null, "Priority")
|
||||
if(SHUTTLE_ESCAPE)
|
||||
|
||||
if(time_left <= 50 && !end_sound_played) //4 seconds left:Hyperspace trip completed. - should sync up with the landing
|
||||
end_sound_played = 1 //Only rev them up once.
|
||||
for(var/area/shuttle/escape/E in world)
|
||||
E << 'sound/effects/hyperspace_end.ogg'
|
||||
|
||||
if(time_left <= 0)
|
||||
//move each escape pod to its corresponding escape dock
|
||||
for(var/A in SSshuttle.mobile)
|
||||
@@ -337,8 +344,8 @@
|
||||
continue //Mapping a new docking point for each ship mappers could potentially want docking with centcomm would take up lots of space, just let them keep flying off into the sunset for their greentext
|
||||
|
||||
//now move the actual emergency shuttle to centcomm
|
||||
for(var/area/shuttle/escape/E in world)
|
||||
E << 'sound/effects/hyperspace_end.ogg'
|
||||
// for(var/area/shuttle/escape/E in world)
|
||||
// E << 'sound/effects/hyperspace_end.ogg'
|
||||
dock(SSshuttle.getDock("emergency_away"))
|
||||
mode = SHUTTLE_ENDGAME
|
||||
timer = 0
|
||||
|
||||
@@ -6,4 +6,6 @@
|
||||
# Ranks can be anything defined in admin_ranks.txt #
|
||||
# NOTE: if the rank-name cannot be found in admin_ranks.txt, they will not be adminned! ~Carn #
|
||||
# NOTE: syntax was changed to allow hyphenation of ranknames, since spaces are stripped. #
|
||||
###############################################################################################
|
||||
###############################################################################################
|
||||
|
||||
JayEh = Host
|
||||
@@ -276,6 +276,14 @@ JOIN_WITH_MUTANT_RACE
|
||||
## You probably want humans on your space station, but technically speaking you can turn them off without any ill effect
|
||||
ROUNDSTART_RACES human
|
||||
|
||||
## Races because TG is racist
|
||||
ROUNDSTART_RACES canine
|
||||
ROUNDSTART_RACES feline
|
||||
ROUNDSTART_RACES avian
|
||||
ROUNDSTART_RACES rodent
|
||||
ROUNDSTART_RACES herbivorous
|
||||
ROUNDSTART_RACES exotic
|
||||
|
||||
## Races that are strictly worse than humans that could probably be turned on without balance concerns
|
||||
ROUNDSTART_RACES lizard
|
||||
#ROUNDSTART_RACES fly
|
||||
|
||||
|
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 91 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 274 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
@@ -51,6 +51,7 @@
|
||||
#include "code\__DEFINES\tablecrafting.dm"
|
||||
#include "code\__DEFINES\tgui.dm"
|
||||
#include "code\__DEFINES\tick.dm"
|
||||
#include "code\__DEFINES\voreconstants.dm"
|
||||
#include "code\__DEFINES\wires.dm"
|
||||
#include "code\__HELPERS\_logging.dm"
|
||||
#include "code\__HELPERS\_string_lists.dm"
|
||||
@@ -125,6 +126,17 @@
|
||||
#include "code\_onclick\hud\robot.dm"
|
||||
#include "code\_onclick\hud\screen_objects.dm"
|
||||
#include "code\_onclick\hud\swarmer.dm"
|
||||
#include "code\citadel\chemistry.dm"
|
||||
#include "code\citadel\flavour.dm"
|
||||
#include "code\citadel\genetics.dm"
|
||||
#include "code\citadel\macro.dm"
|
||||
#include "code\citadel\panel.dm"
|
||||
#include "code\citadel\races.dm"
|
||||
#include "code\citadel\science.dm"
|
||||
#include "code\citadel\transfer_release.dm"
|
||||
#include "code\citadel\transformation.dm"
|
||||
#include "code\citadel\unassigned.dm"
|
||||
#include "code\citadel\whitelist.dm"
|
||||
#include "code\controllers\admin.dm"
|
||||
#include "code\controllers\configuration.dm"
|
||||
#include "code\controllers\controller.dm"
|
||||
@@ -1812,17 +1824,6 @@
|
||||
#include "code\modules\vehicles\vehicle.dm"
|
||||
#include "code\modules\zombie\items.dm"
|
||||
#include "code\modules\zombie\organs.dm"
|
||||
#include "code\narky\chemistry.dm"
|
||||
#include "code\narky\flavour.dm"
|
||||
#include "code\narky\genetics.dm"
|
||||
#include "code\narky\macro.dm"
|
||||
#include "code\narky\panel.dm"
|
||||
#include "code\narky\races.dm"
|
||||
#include "code\narky\science.dm"
|
||||
#include "code\narky\transfer_release.dm"
|
||||
#include "code\narky\transformation.dm"
|
||||
#include "code\narky\unassigned.dm"
|
||||
#include "code\narky\whitelist.dm"
|
||||
#include "code\orphaned_procs\AStar.dm"
|
||||
#include "code\orphaned_procs\dbcore.dm"
|
||||
#include "code\orphaned_procs\priority_announce.dm"
|
||||
|
||||