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:
LordFowl
2016-12-25 01:11:09 +02:00
committed by skull132
parent 7724f096fa
commit 93143a8e45
83 changed files with 1621 additions and 1277 deletions
+1 -1
View File
@@ -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)
..()
+11
View File
@@ -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")
+4 -2
View File
@@ -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
+23 -3
View File
@@ -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
+3 -12
View File
@@ -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.
+4 -4
View File
@@ -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)
+12 -3
View File
@@ -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(