mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-27 23:14:18 +01:00
Vaurca Update Dec2016 (#1289)
Adds Vaurca subspecies and a whole slew of content related to them. Also, custom organs for them.
This commit is contained in:
@@ -167,7 +167,7 @@ note dizziness decrements automatically in the mob's Life() proc.
|
||||
pixel_x_diff = -8
|
||||
pixel_y_diff = -8
|
||||
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff, time = 2)
|
||||
animate(pixel_x = initial(pixel_x), pixel_y = initial(pixel_y), time = 2)
|
||||
animate(pixel_x = pixel_x - pixel_x_diff, pixel_y = pixel_y - pixel_y_diff, time = 2)
|
||||
|
||||
/mob/do_attack_animation(atom/A)
|
||||
..()
|
||||
|
||||
@@ -20,3 +20,14 @@
|
||||
name = "Farwa"
|
||||
desc = "Meow meow meow."
|
||||
key = "^"
|
||||
|
||||
/datum/language/bug/monkey
|
||||
name = "V'krexi"
|
||||
desc = "Buzz buzz buzz."
|
||||
key = "#"
|
||||
speech_verb = "chitters"
|
||||
ask_verb = "ponders"
|
||||
exclaim_verb = "buzzes"
|
||||
syllables = list("vaur","uyek","uyit","avek","sc'theth","k'ztak","teth","wre'ge","lii","dra'","zo'","ra'","k'lax'","zz","vh","ik","ak",
|
||||
"uhk","zir","sc'orth","sc'er","thc'yek","th'zirk","th'esk","k'ayek","ka'mil","sc'","ik'yir","yol","kig","k'zit","'","'","zrk","krg","isk'yet","na'k",
|
||||
"sc'azz","th'sc","nil","n'ahk","sc'yeth","aur'sk","iy'it","azzg","a'","i'","o'","u'","a","i","o","u","zz","kr","ak","nrk")
|
||||
|
||||
@@ -75,8 +75,8 @@
|
||||
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!")
|
||||
|
||||
/datum/language/bug
|
||||
name = "Hivenet"
|
||||
desc = "Complex Vaurcesian language comprised of rapid mandible-clicking, \"It's a bugs life.\""
|
||||
name = LANGUAGE_VAURCA
|
||||
desc = "A localised expression of the Vaurcae hivemind, allowing Vaurcae to communicate from across great distances. \"It's a bugs life.\""
|
||||
speech_verb = " broadcasts"
|
||||
colour = "vaurca"
|
||||
key = "9"
|
||||
@@ -123,6 +123,8 @@
|
||||
return 0
|
||||
if(locate(/obj/item/organ/vaurca/neuralsocket) in M.internal_organs)
|
||||
return 1
|
||||
if(istype(M,/mob/living/silicon/))
|
||||
return 1
|
||||
|
||||
if (M.l_ear || M.r_ear)
|
||||
var/obj/item/device/radio/headset/dongle
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/client/verb/toggle_autohiss()
|
||||
set name = "Toggle Auto-Hiss"
|
||||
set desc = "Toggle automatic hissing as Unathi and r-rolling as Taj"
|
||||
set desc = "Toggle automatic hissing as Unathi, r-rolling as Taj, and buzzing as Vaurca"
|
||||
set category = "OOC"
|
||||
|
||||
autohiss_mode = (autohiss_mode + 1) % AUTOHISS_NUM
|
||||
@@ -47,13 +47,33 @@
|
||||
autohiss_extra_map = list(
|
||||
"x" = list("ks", "kss", "ksss")
|
||||
)
|
||||
autohiss_exempt = list("Sinta'unathi")
|
||||
autohiss_exempt = list(LANGUAGE_UNATHI)
|
||||
|
||||
/datum/species/tajaran
|
||||
autohiss_basic_map = list(
|
||||
"r" = list("rr", "rrr", "rrrr")
|
||||
)
|
||||
autohiss_exempt = list("Siik'tajr")
|
||||
autohiss_exempt = list(LANGUAGE_SIIK_TAJR)
|
||||
|
||||
/datum/species/bug
|
||||
autohiss_basic_map = list(
|
||||
"s" = list("z","zz")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"f" = list("v", "vh"),
|
||||
"ph" = list("v", "vh")
|
||||
)
|
||||
autohiss_exempt = list(LANGUAGE_VAURCA)
|
||||
|
||||
/datum/species/bug/type_b
|
||||
autohiss_basic_map = list(
|
||||
"s" = list("z","zz", "zzz")
|
||||
)
|
||||
autohiss_extra_map = list(
|
||||
"f" = list("v", "vh"),
|
||||
"ph" = list("v", "vh")
|
||||
)
|
||||
autohiss_exempt = list(LANGUAGE_VAURCA)
|
||||
|
||||
|
||||
/datum/species/proc/handle_autohiss(message, datum/language/lang, mode)
|
||||
|
||||
@@ -49,6 +49,9 @@
|
||||
sync_organ_dna()
|
||||
make_blood()
|
||||
|
||||
pixel_x = species.icon_x_offset
|
||||
pixel_y = species.icon_y_offset
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
human_mob_list -= src
|
||||
for(var/organ in organs)
|
||||
|
||||
@@ -89,6 +89,9 @@
|
||||
for(var/obj/item/rig_module/maneuvering_jets/module in rig.installed_modules)
|
||||
thrust = module.jets
|
||||
break
|
||||
else if(istype(back,/obj/item/weapon/storage/backpack/typec))
|
||||
inertia_dir = 0
|
||||
return 1
|
||||
|
||||
if(thrust)
|
||||
if(((!check_drift) || (check_drift && thrust.stabilization_on)) && (!lying) && (thrust.allow_thrust(0.01, src)))
|
||||
|
||||
@@ -220,33 +220,29 @@
|
||||
src << "\green You said: \"[msg]\" to [M]"
|
||||
return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/mob/living/carbon/human/proc/bugbite()
|
||||
set category = "Abilities"
|
||||
set name = "Bite"
|
||||
set desc = "While grabbing someone aggressively, tear into them with your mandibles."
|
||||
|
||||
if(last_special > world.time)
|
||||
src << "\red Your mandibles still ache!"
|
||||
src << "<span class='warning'>Your mandibles still ache!</span>"
|
||||
return
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying)
|
||||
src << "\red You cannot do that in your current state."
|
||||
src << "<span class='warning'> You cannot do that in your current state.</span>"
|
||||
return
|
||||
|
||||
var/obj/item/weapon/grab/G = locate() in src
|
||||
if(!G || !istype(G))
|
||||
src << "\red You are not grabbing anyone."
|
||||
src << "<span class='warning'>You are not grabbing anyone.</span>"
|
||||
return
|
||||
|
||||
if(G.state < GRAB_AGGRESSIVE)
|
||||
src << "\red You must have an aggressive grab to gut your prey!"
|
||||
src << "<span class='warning'>You must have an aggressive grab to gut your prey!</span>"
|
||||
return
|
||||
|
||||
last_special = world.time + 35
|
||||
last_special = world.time + 25
|
||||
|
||||
visible_message("<span class='warning'><b>\The [src]</b> rips viciously at \the [G.affecting]'s flesh with its mandibles!</span>")
|
||||
|
||||
@@ -260,4 +256,135 @@
|
||||
return
|
||||
M.apply_damage(25,BRUTE, sharp=1, edge=1)
|
||||
msg_admin_attack("[key_name_admin(src)] mandible'd [key_name_admin(M)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1)
|
||||
|
||||
/mob/living/carbon/human/proc/get_aggressive_grab()
|
||||
|
||||
var/obj/item/weapon/grab/G = locate() in src
|
||||
if(!G || !istype(G))
|
||||
src << "<span class='warning'>You are not grabbing anyone.</span>"
|
||||
return
|
||||
|
||||
if(G.state < GRAB_AGGRESSIVE)
|
||||
src << "<span class='warning'>You must have an aggressive grab to do this!</span>"
|
||||
return
|
||||
|
||||
return G
|
||||
|
||||
/mob/living/carbon/human/proc/devour_head()
|
||||
set category = "Abilities"
|
||||
set name = "Devour Head"
|
||||
set desc = "While grabbing someone aggressively, bite their head off."
|
||||
|
||||
if(last_special > world.time)
|
||||
src << "<span class='warning'>Your mandibles still ache!</span>"
|
||||
return
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying)
|
||||
src << "<span class='warning'>You cannot do that in your current state.</span>"
|
||||
return
|
||||
|
||||
var/obj/item/weapon/grab/G = get_aggressive_grab()
|
||||
if(!G) return
|
||||
|
||||
if(istype(G.affecting,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = G.affecting
|
||||
|
||||
if(!H.species.has_limbs["head"])
|
||||
src << "<span class='warning'>\The [H] does not have a head!</span>"
|
||||
return
|
||||
|
||||
var/obj/item/organ/external/affecting = H.get_organ("head")
|
||||
if(!istype(affecting) || affecting.is_stump())
|
||||
src << "<span class='warning'>\The [H] does not have a head!</span>"
|
||||
return
|
||||
|
||||
visible_message("<span class='danger'>\The [src] pulls \the [H] close, sticking \the [H]'s head into its maw!</span>")
|
||||
sleep(50)
|
||||
get_aggressive_grab()
|
||||
if(!G) return
|
||||
visible_message("<span class='danger'>\The [src] closes their jaws around \the [H]'s head!</span>")
|
||||
playsound(H.loc, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
affecting.droplimb(0, DROPLIMB_BLUNT)
|
||||
|
||||
else
|
||||
var/mob/living/M = G.affecting
|
||||
if(istype(M))
|
||||
visible_message("<span class='danger'>\The [src] rips viciously at \the [M]'s body with its claws!</span>")
|
||||
playsound(M.loc, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
M.gib()
|
||||
|
||||
last_special = world.time + 200
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/hivenet()
|
||||
set category = "Abilities"
|
||||
set name = "Hivenet Control"
|
||||
set desc = "Issue an order over the hivenet."
|
||||
|
||||
var/list/targets = list()
|
||||
var/target = null
|
||||
var/text = null
|
||||
|
||||
if(!(all_languages[LANGUAGE_VAURCA] in src.languages))
|
||||
src << "<span class='danger'>Your mind is dark, the unity of the hive is torn from you!</span>"
|
||||
return
|
||||
|
||||
targets += getmobs()
|
||||
target = input("Select a pawn!", "Issue an order", null, null) as null|anything in targets
|
||||
|
||||
if(!target) return
|
||||
|
||||
text = input("What is your will?", "Issue an order", null, null)
|
||||
|
||||
text = sanitize(text)
|
||||
|
||||
if(!text) return
|
||||
|
||||
var/mob/M = targets[target]
|
||||
|
||||
if(istype(M, /mob/dead/observer) || M.stat == DEAD)
|
||||
src << "<span class='danger'>[M]'s hivenet implant is inactive!</span>"
|
||||
return
|
||||
|
||||
if(!(all_languages[LANGUAGE_VAURCA] in M.languages))
|
||||
src << "<span class='danger'>[M]'s hivenet implant is inactive!</span>"
|
||||
return
|
||||
|
||||
log_say("[key_name(src)] issued a hivenet order to [key_name(M)]: [text]")
|
||||
|
||||
if(istype(M, /mob/living/carbon/human) && isvaurca(M))
|
||||
M << "<span class='danger'> You feel a buzzing in the back of your head, and your mind fills with the authority of [src.real_name], your ruler:</span>"
|
||||
M << "<span class='notice'> [text]</span>"
|
||||
else
|
||||
M << "<span class='danger'> Like lead slabs crashing into the ocean, alien thoughts drop into your mind: [text]</span>"
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species.name == src.species.name)
|
||||
return
|
||||
H << "<span class='danger'> Your nose begins to bleed...</span>"
|
||||
H.drip(1)
|
||||
|
||||
/mob/living/carbon/human/proc/quillboar(mob/target as mob in oview())
|
||||
set name = "Launch Quill"
|
||||
set desc = "Launches a quill in self-defense. Painful, but effective."
|
||||
set category = "Abilities"
|
||||
|
||||
if(last_special > world.time)
|
||||
src << "<span class='danger'>Your spine still aches!</span>"
|
||||
return
|
||||
|
||||
|
||||
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
|
||||
src << "You cannot launch a quill in your current state."
|
||||
return
|
||||
|
||||
last_special = world.time + 30
|
||||
|
||||
visible_message("<span class='warning'><b>\The [src]</b> launches a spine-quill at [target]!</span>")
|
||||
|
||||
src.apply_damage(10,BRUTE)
|
||||
playsound(src.loc, 'sound/weapons/bladeslice.ogg', 50, 1)
|
||||
var/obj/item/weapon/arrow/quill/A = new /obj/item/weapon/arrow/quill(usr.loc)
|
||||
A.throw_at(target, 10, 30, user)
|
||||
msg_admin_attack("[key_name_admin(src)] launched a quill at [key_name_admin(target)] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
|
||||
@@ -1,7 +1,7 @@
|
||||
/mob/living/carbon/human/dummy
|
||||
real_name = "Test Dummy"
|
||||
status_flags = GODMODE|CANPUSH
|
||||
|
||||
|
||||
/mob/living/carbon/human/resomi/New(var/new_loc)
|
||||
h_style = "Resomi Plumage"
|
||||
..(new_loc, "Resomi")
|
||||
@@ -22,14 +22,19 @@
|
||||
h_style = "Short Vox Quills"
|
||||
..(new_loc, "Vox")
|
||||
|
||||
/mob/living/carbon/human/voxarmalis/New(var/new_loc)
|
||||
h_style = "Bald"
|
||||
..(new_loc, "Vox Armalis")
|
||||
|
||||
/mob/living/carbon/human/diona/New(var/new_loc)
|
||||
..(new_loc, "Diona")
|
||||
src.gender = NEUTER
|
||||
|
||||
/mob/living/carbon/human/machine/New(var/new_loc)
|
||||
h_style = "blue IPC screen"
|
||||
..(new_loc, "Machine")
|
||||
|
||||
/mob/living/carbon/human/monkey/
|
||||
/mob/living/carbon/human/monkey
|
||||
mob_size = 2.6//Based on howler monkey, rough real world equivilant to on-mob sprite size
|
||||
|
||||
/mob/living/carbon/human/monkey/New(var/new_loc)
|
||||
@@ -50,8 +55,28 @@
|
||||
/mob/living/carbon/human/stok
|
||||
mob_size = 2.6//Roughly the same size as monkey
|
||||
|
||||
/mob/living/carbon/human/stok/New(var/new_loc)
|
||||
..(new_loc, "Stok")
|
||||
/mob/living/carbon/human/neaera/New(var/new_loc)
|
||||
..(new_loc, "Neaera")
|
||||
|
||||
/mob/living/carbon/human/bug
|
||||
mob_size = 2.6//Roughly the same size as monkey
|
||||
|
||||
/mob/living/carbon/human/bug/New(var/new_loc)
|
||||
..(new_loc, "Vaurca")
|
||||
..(new_loc, "V'krexi")
|
||||
src.gender = FEMALE
|
||||
|
||||
/mob/living/carbon/human/type_a/New(var/new_loc)
|
||||
..(new_loc, "Vaurca Worker")
|
||||
src.gender = NEUTER
|
||||
|
||||
/mob/living/carbon/human/type_b/New(var/new_loc)
|
||||
..(new_loc, "Vaurca Warrior")
|
||||
src.gender = NEUTER
|
||||
|
||||
/mob/living/carbon/human/type_c/New(var/new_loc)
|
||||
..(new_loc, "Vaurca Breeder")
|
||||
src.gender = FEMALE
|
||||
|
||||
/mob/living/carbon/human/type_c
|
||||
mob_size = 30 //same size as moghes lizard
|
||||
layer = 5
|
||||
@@ -442,19 +442,10 @@
|
||||
|
||||
inhaling = breath.gas[breath_type]
|
||||
|
||||
if(species.has_organ["filtration bit"] && src.get_species() == "Vaurca")
|
||||
var/obj/item/organ/vaurca/filtrationbit/F = internal_organs_by_name["filtration bit"]
|
||||
if(isnull(F))
|
||||
poison_type = "oxygen" //if Vaurca does not have filter, oxygen becomes poisonous
|
||||
else if(F.is_broken())
|
||||
poison_type = "oxygen" //if Vaurca filter breaks, oxygen becomes poisonous.
|
||||
else
|
||||
poison_type = "null"
|
||||
if(species.poison_type)
|
||||
poison_type = species.poison_type
|
||||
else
|
||||
if(species.poison_type)
|
||||
poison_type = species.poison_type
|
||||
else
|
||||
poison_type = "phoron"
|
||||
poison_type = "phoron"
|
||||
poison = breath.gas[poison_type]
|
||||
|
||||
if(species.exhale_type)
|
||||
|
||||
@@ -134,3 +134,54 @@
|
||||
|
||||
/datum/species/vox/pariah/get_bodytype()
|
||||
return "Vox"
|
||||
|
||||
/datum/species/vox/armalis
|
||||
name = "Vox Armalis"
|
||||
name_plural = "Vox"
|
||||
icobase = 'icons/mob/human_races/r_armalis.dmi'
|
||||
deform = 'icons/mob/human_races/r_armalis.dmi'
|
||||
tail = "armalis_tail"
|
||||
rarity_value = 10
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
|
||||
stamina = 120 // Vox are even faster than unathi and can go longer, but recover slowly
|
||||
sprint_speed_factor = 3
|
||||
stamina_recovery = 1
|
||||
sprint_cost_factor = 0.7
|
||||
|
||||
|
||||
cold_level_1 = 80
|
||||
cold_level_2 = 50
|
||||
cold_level_3 = 0
|
||||
|
||||
heat_level_1 = 2000
|
||||
heat_level_2 = 3000
|
||||
heat_level_3 = 4000
|
||||
|
||||
brute_mod = 0.2
|
||||
burn_mod = 0.2
|
||||
|
||||
eyes = "blank_eyes"
|
||||
breath_type = "nitrogen"
|
||||
poison_type = "oxygen"
|
||||
|
||||
flags = NO_SCAN | NO_PAIN
|
||||
spawn_flags = IS_RESTRICTED
|
||||
|
||||
blood_color = "#2299FC"
|
||||
flesh_color = "#808D11"
|
||||
|
||||
tail = "armalis_tail"
|
||||
icon_template = 'icons/mob/human_races/r_armalis.dmi'
|
||||
|
||||
reagent_tag = IS_VOX
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/leap,
|
||||
/mob/living/carbon/human/proc/gut,
|
||||
/mob/living/carbon/human/proc/commune,
|
||||
/mob/living/carbon/human/proc/quillboar
|
||||
)
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
var/blood_mask = 'icons/mob/human_races/masks/blood_human.dmi'
|
||||
|
||||
var/prone_icon // If set, draws this from icobase when mob is prone.
|
||||
var/icon_x_offset = 0
|
||||
var/icon_y_offset = 0
|
||||
var/eyes = "eyes_s" // Icon for eyes.
|
||||
var/has_floating_eyes // Eyes will overlay over darkness (glow)
|
||||
var/blood_color = "#A10808" // Red.
|
||||
|
||||
@@ -95,3 +95,49 @@
|
||||
flesh_color = "#34AF10"
|
||||
base_color = "#066000"
|
||||
reagent_tag = IS_UNATHI
|
||||
|
||||
/datum/species/monkey/bug
|
||||
name = "V'krexi"
|
||||
short_name = "kre"
|
||||
name_plural = "V'krexi"
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/bug
|
||||
|
||||
icobase = 'icons/mob/human_races/monkeys/r_vkrexi.dmi'
|
||||
deform = 'icons/mob/human_races/monkeys/r_vkrexi.dmi'
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/bugbite
|
||||
)
|
||||
|
||||
tail = "vkrexitail"
|
||||
greater_form = "Vaurca Worker"
|
||||
default_language = "V'krexi"
|
||||
blood_color = "#E6E600"
|
||||
flesh_color = "#E6E600"
|
||||
//base_color = "#E6E600"
|
||||
breath_type = "oxygen"
|
||||
poison_type = ""
|
||||
exhale_type = "phoron"
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
siemens_coefficient = 0.2
|
||||
darksight = 8
|
||||
death_message = "chitters faintly before crumbling to the ground, their eyes dead and lifeless..."
|
||||
halloss_message = "crumbles to the ground, too weak to continue fighting."
|
||||
list/heat_discomfort_strings = list(
|
||||
"Your blood feels like its boiling in the heat.",
|
||||
"You feel uncomfortably warm.",
|
||||
"Your carapace feels hot as the sun."
|
||||
)
|
||||
list/cold_discomfort_strings = list(
|
||||
"You chitter in the cold.",
|
||||
"You shiver suddenly.",
|
||||
"Your carapace is ice to the touch."
|
||||
)
|
||||
cold_level_1 = 50
|
||||
cold_level_2 = -1
|
||||
cold_level_3 = -1
|
||||
brute_mod = 0.8
|
||||
burn_mod = 2
|
||||
slowdown = -1
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
stamina_recovery = 5
|
||||
sprint_speed_factor = 0.9
|
||||
sprint_cost_factor = 0.5
|
||||
|
||||
|
||||
/datum/species/human/get_bodytype()
|
||||
return "Human"
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
brute_mod = 0.8
|
||||
ethanol_resistance = 0.4
|
||||
num_alternate_languages = 2
|
||||
secondary_langs = list("Sinta'unathi")
|
||||
name_language = "Sinta'unathi"
|
||||
secondary_langs = list(LANGUAGE_UNATHI)
|
||||
name_language = LANGUAGE_UNATHI
|
||||
stamina = 120 // Unathi have the shortest but fastest sprint of all
|
||||
sprint_speed_factor = 3.2
|
||||
stamina_recovery = 5
|
||||
@@ -109,8 +109,8 @@
|
||||
brute_mod = 1.2
|
||||
gluttonous = GLUT_TINY
|
||||
num_alternate_languages = 2
|
||||
secondary_langs = list("Siik'maas")
|
||||
name_language = "Siik'maas"
|
||||
secondary_langs = list(LANGUAGE_SIIK_MAAS)
|
||||
name_language = LANGUAGE_SIIK_MAAS
|
||||
ethanol_resistance = 0.8//Gets drunk a little faster
|
||||
rarity_value = 2
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \
|
||||
the secrets of their empire to their allies."
|
||||
num_alternate_languages = 2
|
||||
secondary_langs = list("Skrellian")
|
||||
secondary_langs = list(LANGUAGE_SKRELLIAN)
|
||||
name_language = null
|
||||
rarity_value = 3
|
||||
|
||||
@@ -367,7 +367,7 @@
|
||||
body_temperature = null
|
||||
passive_temp_gain = 10 // This should cause IPCs to stabilize at ~80 C in a 20 C environment.
|
||||
|
||||
flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON
|
||||
flags = NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | NO_POISON | NO_MINOR_CUT
|
||||
spawn_flags = CAN_JOIN | IS_WHITELISTED
|
||||
|
||||
blood_color = "#1F181F"
|
||||
@@ -431,33 +431,39 @@
|
||||
|
||||
|
||||
/datum/species/bug
|
||||
name = "Vaurca"
|
||||
name = "Vaurca Worker"
|
||||
short_name = "vau"
|
||||
name_plural = "Vaurcae"
|
||||
language = "Hivenet"
|
||||
name_plural = "Type A"
|
||||
language = LANGUAGE_VAURCA
|
||||
primitive_form = "V'krexi"
|
||||
greater_form = "Vaurca Warrior"
|
||||
icobase = 'icons/mob/human_races/r_vaurca.dmi'
|
||||
deform = 'icons/mob/human_races/r_vaurca.dmi'
|
||||
name_language = "Hivenet"
|
||||
name_language = LANGUAGE_VAURCA
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws, /datum/unarmed_attack/bite/sharp)
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/bug
|
||||
rarity_value = 4
|
||||
slowdown = 0 //may become a bonus if vaurca gain more legs.
|
||||
slowdown = 1
|
||||
darksight = 8 //USELESS
|
||||
eyes = "vaurca_eyes" //makes it so that eye colour is not changed when skin colour is.
|
||||
brute_mod = 0.5 //note to self: remove is_synthetic checks for brmod and burnmod
|
||||
brute_mod = 0.5
|
||||
burn_mod = 1.5 //2x was a bit too much. we'll see how this goes.
|
||||
toxins_mod = 3 //they're not used to all our weird human bacteria.
|
||||
toxins_mod = 2 //they're not used to all our weird human bacteria.
|
||||
oxy_mod = 0.6
|
||||
radiation_mod = 0.2 //almost total radiation protection
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
ethanol_resistance = 2
|
||||
siemens_coefficient = 1 //setting it to 0 would be redundant due to LordLag's snowflake checks, plus batons/tasers use siemens now too.
|
||||
breath_type = "oxygen"
|
||||
poison_type = "null" //a species that breathes plasma shouldn't be poisoned by it.
|
||||
blurb = "Vaurca are a bipedal insectoid species from the first moon of Sedantis I. \
|
||||
They have a complex caste system consisting of the lower slave caste called The Bound and the higher, free-thinking caste of the Unbound. \
|
||||
The majority of Vaurca present in human-space belong to the former caste of Bound, and almost all Vaurca working on NanoTrasen Stations are similarly Bound. \
|
||||
Although tolerated on Nanotrasen stations and in Tau Ceti, they are often discriminated against and are unwelcome in most human-owned \
|
||||
sectors in the Sol Alliance. All Vaurca present in human space are colonists at the end of a 2,000 year journey, and all contact with \
|
||||
their homeworld has been lost. All Vaurca legally present in Tau Ceti belong either to the Zo'ra hive, or the K'lax hive."
|
||||
breath_type = "phoron"
|
||||
poison_type = "nitrogen" //a species that breathes plasma shouldn't be poisoned by it.
|
||||
|
||||
blurb = "Type A are the most common type of Vaurca and can be seen as the 'backbone' of Vaurcae societies. Their most prevalent feature is their hardened exoskeleton, varying in colors \
|
||||
in accordance to their hive. It is approximately half an inch thick among all Type A Vaurca. The carapace provides protection against harsh radiation, solar \
|
||||
and otherwise, and acts as a pressure-suit to seal their soft inner core from the outside world. This allows most Type A Vaurca to have extended EVA \
|
||||
expeditions, assuming they have internals. They are bipedal, and compared to warriors they are better suited for EVA and environments, and more resistant to brute force thanks to their \
|
||||
thicker carapace, but also a fair bit slower and less agile. \
|
||||
<b>Type A comfortable in any department except security. There will almost never be a Worker in a security position, as they are as a type disposed against combat.</b>"
|
||||
|
||||
cold_level_1 = 50
|
||||
cold_level_2 = -1
|
||||
@@ -466,30 +472,39 @@
|
||||
heat_level_1 = 330 //Default 360
|
||||
heat_level_2 = 380 //Default 400
|
||||
heat_level_3 = 600 //Default 1000
|
||||
flags = NO_SCAN | NO_SLIP
|
||||
flags = NO_SLIP | NO_MINOR_CUT
|
||||
spawn_flags = CAN_JOIN | IS_WHITELISTED
|
||||
appearance_flags = HAS_SKIN_COLOR
|
||||
blood_color = "#E6E600" // dark yellow
|
||||
flesh_color = "#E6E600"
|
||||
base_color = "#575757"
|
||||
flesh_color = "#330000"
|
||||
base_color = "#330000"
|
||||
|
||||
stamina = 100 // Long period of sprinting, but relatively low speed gain
|
||||
sprint_speed_factor = 0.55
|
||||
sprint_cost_factor = 0.20
|
||||
stamina_recovery = 1//slow recovery
|
||||
death_message = "chitters faintly before crumbling to the ground, their eyes dead and lifeless..."
|
||||
halloss_message = "crumbles to the ground, too weak to continue fighting."
|
||||
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/bugbite //weaker version of gut.
|
||||
list/heat_discomfort_strings = list(
|
||||
"Your blood feels like its boiling in the heat.",
|
||||
"You feel uncomfortably warm.",
|
||||
"Your carapace feels hot as the sun."
|
||||
)
|
||||
list/cold_discomfort_strings = list(
|
||||
"You chitter in the cold.",
|
||||
"You shiver suddenly.",
|
||||
"Your carapace is ice to the touch."
|
||||
)
|
||||
|
||||
stamina = 100 // Long period of sprinting, but relatively low speed gain
|
||||
sprint_speed_factor = 0.7
|
||||
sprint_cost_factor = 0.30
|
||||
stamina_recovery = 2//slow recovery
|
||||
|
||||
has_organ = list(
|
||||
"neural socket" = /obj/item/organ/vaurca/neuralsocket,
|
||||
"filtration bit" = /obj/item/organ/vaurca/filtrationbit,
|
||||
"lungs" = /obj/item/organ/lungs,
|
||||
"filtration bit" = /obj/item/organ/vaurca/filtrationbit,
|
||||
"heart" = /obj/item/organ/heart,
|
||||
"second heart" = /obj/item/organ/heart,
|
||||
"phoron reserve tank" = /obj/item/organ/vaurca/preserve,
|
||||
"right heart" = /obj/item/organ/heart/right,
|
||||
"left heart" = /obj/item/organ/heart/left,
|
||||
"liver" = /obj/item/organ/liver,
|
||||
"kidneys" = /obj/item/organ/kidneys,
|
||||
"brain" = /obj/item/organ/brain,
|
||||
@@ -499,6 +514,8 @@
|
||||
/datum/species/bug/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
|
||||
H.gender = NEUTER
|
||||
|
||||
/datum/species/bug/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
H.gender = NEUTER
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
/datum/species/bug/type_b
|
||||
name = "Vaurca Warrior"
|
||||
short_name = "vaw"
|
||||
name_plural = "Type BA"
|
||||
language = LANGUAGE_VAURCA
|
||||
primitive_form = "Vaurca Worker"
|
||||
greater_form = "Vaurca Breeder"
|
||||
icobase = 'icons/mob/human_races/subspecies/r_vaurcab.dmi'
|
||||
slowdown = 0
|
||||
brute_mod = 0.7
|
||||
burn_mod = 1.2
|
||||
oxy_mod = 1
|
||||
radiation_mod = 0.5
|
||||
|
||||
blurb = "Type BA, a sub-type of the generic Type B Warriors, are the second most prominent type of Vaurca society, taking the form of hive security and military grunts. \
|
||||
Type BA can range in size from 6ft tall to 9ft tall, and are bipedal. Unlike most other Type B's, Type BA are deprived of advanced augments, especially aboard \
|
||||
NanoTrasen stations. Warriors in general, unlike other types of Vaurca, are not typically passive. This means that they tend to be more suitable for combat \
|
||||
orientated positions, more passive unlike workers. Compared to workers, they are more physically intimidating and more resistant to heat, but have a thinner carapace \
|
||||
allowing for greater mobility at the cost of some trauma resistance. \
|
||||
<b>Type BA are most comfortable obviously in security positions, but can rarely be found in the lower hierarchies of other departments.</b>"
|
||||
|
||||
heat_level_1 = 360 //Default 360
|
||||
heat_level_2 = 400 //Default 400
|
||||
heat_level_3 = 800 //Default 1000
|
||||
|
||||
stamina = 115
|
||||
sprint_speed_factor = 1.0
|
||||
sprint_cost_factor = 0.40
|
||||
stamina_recovery = 3
|
||||
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/bugbite //weaker version of gut.
|
||||
)
|
||||
|
||||
/datum/species/bug/type_c
|
||||
name = "Vaurca Breeder"
|
||||
short_name = "vab"
|
||||
name_plural = "Type CB"
|
||||
primitive_form = "Vaurca Warrior"
|
||||
icon_template = 'icons/mob/human_races/subspecies/r_vaurcac.dmi'
|
||||
icobase = 'icons/mob/human_races/subspecies/r_vaurcac.dmi'
|
||||
deform = 'icons/mob/human_races/subspecies/r_vaurcac.dmi'
|
||||
icon_x_offset = -8
|
||||
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/strong, /datum/unarmed_attack/bite/strong)
|
||||
rarity_value = 10
|
||||
slowdown = 2
|
||||
eyes = "blank_eyes" //makes it so that eye colour is not changed when skin colour is.
|
||||
brute_mod = 0.2 //note to self: remove is_synthetic checks for brmod and burnmod
|
||||
burn_mod = 0.8 //2x was a bit too much. we'll see how this goes.
|
||||
toxins_mod = 1 //they're not used to all our weird human bacteria.
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
ethanol_resistance = 2
|
||||
|
||||
speech_sounds = list('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
|
||||
speech_chance = 100
|
||||
|
||||
death_sound = 'sound/voice/hiss6.ogg'
|
||||
damage_overlays = 'icons/mob/human_races/masks/dam_breeder.dmi'
|
||||
damage_mask = 'icons/mob/human_races/masks/dam_mask_breeder.dmi'
|
||||
blood_mask = 'icons/mob/human_races/masks/blood_breeder.dmi'
|
||||
|
||||
stamina = 175
|
||||
sprint_speed_factor = 1
|
||||
sprint_cost_factor = 0.80
|
||||
stamina_recovery = 3
|
||||
|
||||
vision_flags = SEE_SELF
|
||||
|
||||
spawn_flags = IS_RESTRICTED
|
||||
flags = NO_SCAN | HAS_SKIN_COLOR | NO_SLIP
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/bugbite,
|
||||
/mob/living/carbon/human/proc/devour_head,
|
||||
/mob/living/carbon/human/proc/hivenet
|
||||
)
|
||||
|
||||
/datum/species/bug/type_c/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/magboots/typec(H),slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/typec(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/gearharness(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/typec(H), slot_back)
|
||||
return
|
||||
|
||||
/datum/species/bug/type_c/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
H.gender = FEMALE
|
||||
return ..()
|
||||
@@ -15,8 +15,13 @@
|
||||
|
||||
eyes = "blank_eyes"
|
||||
|
||||
stamina = 175
|
||||
sprint_speed_factor = 2
|
||||
sprint_cost_factor = 0.80
|
||||
stamina_recovery = 5
|
||||
|
||||
brute_mod = 0.25 // Hardened carapace.
|
||||
burn_mod = 1.1 // Weak to fire.
|
||||
burn_mod = 2 // Weak to fire.
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = -1
|
||||
@@ -199,6 +204,11 @@
|
||||
"nutrient channel" = /obj/item/organ/diona/nutrients
|
||||
)
|
||||
|
||||
stamina = 200
|
||||
sprint_speed_factor = 2.25
|
||||
sprint_cost_factor = 1
|
||||
stamina_recovery = 4
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/proc/ventcrawl,
|
||||
/mob/living/carbon/human/proc/tackle,
|
||||
|
||||
@@ -246,6 +246,9 @@ var/global/list/damage_icon_parts = list()
|
||||
var/skeleton = (SKELETON in src.mutations)
|
||||
var/g = (gender == FEMALE ? "f" : "m")
|
||||
|
||||
pixel_x = species.icon_x_offset
|
||||
pixel_y = species.icon_y_offset
|
||||
|
||||
//CACHING: Generate an index key from visible bodyparts.
|
||||
//0 = destroyed, 1 = normal, 2 = robotic, 3 = necrotic.
|
||||
|
||||
|
||||
@@ -146,12 +146,12 @@ var/list/ai_verbs_default = list(
|
||||
add_language("Robot Talk", 1)
|
||||
add_language("Ceti Basic", 1)
|
||||
add_language("Sol Common", 0)
|
||||
add_language("Sinta'unathi", 0)
|
||||
add_language("Siik'maas", 0)
|
||||
add_language("Skrellian", 0)
|
||||
add_language(LANGUAGE_UNATHI, 0)
|
||||
add_language(LANGUAGE_SIIK_MAAS, 0)
|
||||
add_language(LANGUAGE_SKRELLIAN, 0)
|
||||
add_language("Tradeband", 1)
|
||||
add_language("Gutter", 0)
|
||||
add_language("Hivenet", 0)
|
||||
add_language(LANGUAGE_VAURCA, 0)
|
||||
add_language("Rootsong", 0)
|
||||
add_language(LANGUAGE_EAL, 1)
|
||||
|
||||
|
||||
@@ -468,16 +468,16 @@
|
||||
// Sol Common, Tradeband and Gutter are added with New() and are therefore the current default, always active languages
|
||||
user.translator_on = !user.translator_on
|
||||
if(user.translator_on)
|
||||
user.add_language("Sinta'unathi")
|
||||
user.add_language("Siik'maas")
|
||||
user.add_language("Skrellian")
|
||||
user.add_language(LANGUAGE_UNATHI)
|
||||
user.add_language(LANGUAGE_SIIK_MAAS)
|
||||
user.add_language(LANGUAGE_SKRELLIAN)
|
||||
// user.add_language("Vaurcese")
|
||||
user.add_language("Rootsong")
|
||||
else
|
||||
user.remove_language("Sinta'unathi")
|
||||
user.remove_language("Siik'maas")
|
||||
user.remove_language("Skrellian")
|
||||
//user.add_language("Hivenet") //I can buy an AI core and its cyborgs having access to the local hivenet for security reasons, but a pAI?
|
||||
user.remove_language(LANGUAGE_UNATHI)
|
||||
user.remove_language(LANGUAGE_SIIK_MAAS)
|
||||
user.remove_language(LANGUAGE_SKRELLIAN)
|
||||
//user.add_language(LANGUAGE_VAURCA) //I can buy an AI core and its cyborgs having access to the local hivenet for security reasons, but a pAI?
|
||||
user.add_language("Rootsong")
|
||||
|
||||
is_active(mob/living/silicon/pai/user)
|
||||
|
||||
@@ -52,8 +52,16 @@
|
||||
return 0
|
||||
|
||||
/proc/isvaurca(A)
|
||||
if(istype(A, /mob/living/carbon/human) && (A:get_species() == "Vaurca"))
|
||||
return 1
|
||||
if(istype(A, /mob/living/carbon/human))
|
||||
switch(A:get_species())
|
||||
if ("Vaurca Worker")
|
||||
return 1
|
||||
if("Vaurca Warrior")
|
||||
return 1
|
||||
if("Vaurca Breeder")
|
||||
return 1
|
||||
if("V'krexi")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isipc(A)
|
||||
@@ -941,7 +949,8 @@ var/list/humanoid_mobs_specific = list( /mob/living/carbon/human,
|
||||
/mob/living/carbon/human/tajaran,
|
||||
/mob/living/carbon/human/vox,
|
||||
/mob/living/carbon/human/machine,
|
||||
/mob/living/carbon/human/bug
|
||||
/mob/living/carbon/human/type_a,
|
||||
/mob/living/carbon/human/type_b
|
||||
)
|
||||
|
||||
var/list/humanoid_mobs_inclusive = list(
|
||||
|
||||
Reference in New Issue
Block a user