[Ready for Review] Unapologetic Vaurca Buffs III: Revenge of the Buffs (#4885)

Implements various changes at the behest of lore-dev BygoneHero, namely:

Vaurca can now wear specially modified softsuits.
Vaurca now have their own special rigsuit a la the breacher: the combat exoskeleton. It comes with various special modules, including a boring laser that allows them to dig below themselves rapidly, a vaurca variant of the combat injector which includes phoron and k'ois paste, and a neural lattice which reduces halloss by sharing it with everyone else wearing a neural lattice.
Vaurca also have received various other currently unavailable event items, including a variant of the tactical mask that filters out nitrogen and allows the Vaurca wearing it to eat, tachyon rifles and carbines which penetrate up to three layers of walls and possess other fringe benefits, the gauss rifle which is a semi-automatic variant of the crossbow with greater power and a 6 rod magazine, the energy zweihander, commando armor and scout armor.
Introduces a general climbing mechanic. Climbing can be initiated by clicking on a wall or an open turf, and it is a percentage chance that is modified by the amount of stable/large items beneath you, and decreased by the amount of unstable/small items. Vaurca are naturally proficient and always succeed at climbing.
Changes Vaurca to see in blue-green vision. Their vision is generally brighter and reddish colors are converted to a blue-green color.
Adds the Sedantis flag, an interhive flag that celebrates the universal longing for Sedantis and is a symbol of the Vaurca diaspora.
This commit is contained in:
LordFowl
2018-07-22 19:17:03 +03:00
committed by Erki
parent b8fd0de694
commit 76372c4b15
84 changed files with 1315 additions and 178 deletions
@@ -1296,6 +1296,9 @@
if (src.is_diona())
setup_gestalt(1)
burn_mod = species.burn_mod
brute_mod = species.brute_mod
max_stamina = species.stamina
stamina = max_stamina
sprint_speed_factor = species.sprint_speed_factor
@@ -102,7 +102,7 @@
/mob/living/carbon/human/adjustBruteLoss(var/amount)
amount = amount*species.brute_mod
amount *= brute_mod
if(amount > 0)
take_overall_damage(amount, 0)
else
@@ -110,7 +110,7 @@
BITSET(hud_updateflag, HEALTH_HUD)
/mob/living/carbon/human/adjustFireLoss(var/amount)
amount = amount*species.burn_mod
amount *= burn_mod
if(amount > 0)
take_overall_damage(0, amount)
else
@@ -118,7 +118,7 @@
BITSET(hud_updateflag, HEALTH_HUD)
/mob/living/carbon/human/proc/adjustBruteLossByPart(var/amount, var/organ_name, var/obj/damage_source = null)
amount = amount*species.brute_mod
amount *= brute_mod
if (organ_name in organs_by_name)
var/obj/item/organ/external/O = get_organ(organ_name)
@@ -131,7 +131,7 @@
BITSET(hud_updateflag, HEALTH_HUD)
/mob/living/carbon/human/proc/adjustFireLossByPart(var/amount, var/organ_name, var/obj/damage_source = null)
amount = amount*species.burn_mod
amount *= burn_mod
if (organ_name in organs_by_name)
var/obj/item/organ/external/O = get_organ(organ_name)
@@ -245,6 +245,23 @@
else
..()
/mob/living/carbon/human/adjustHalLoss(var/amount, var/ignoreImmunity = 0)//An inherited version so this doesnt affect cyborgs
if(status_flags & GODMODE) return 0 //godmode
if(!ignoreImmunity)//Adjusting how hallloss works. Species with the NO_PAIN flag will suffer most of the effects of halloss, but will be immune to most conventional sources of accumulating it
if (species && species.flags & NO_PAIN)//Species with this flag will only gather halloss through species-specific mechanics, which apply it with the ignoreImmunity flag
return 0
if(wearing_rig) //I don't know if this is the best way, but I'm hard-pressed to think of a different way. Thanks Vaurca.
for(var/obj/item/rig_module/lattice/L in wearing_rig.installed_modules)
if(L.active && lattice_users.len)
amount = amount / (lattice_users.len + 1)
for(var/mob/living/carbon/human/H in lattice_users)
if(H != src)
H.setHalLoss(min(max(H.getHalLoss() + amount, 0),(H.maxHealth*2)))
H << "<span class='danger'>Your neural lattice buzzes, filling your mind with pain!</span>"
halloss = min(max(halloss + amount, 0),(maxHealth*2))
////////////////////////////////////////////
//Returns a list of damaged organs
@@ -566,3 +566,189 @@
G.affecting.forceMove(locate(T.x + rand(-1,1), T.y + rand(-1,1), T.z))
else
qdel(G)
/mob/living/carbon/human/proc/trample()
set category = "Abilities"
set name = "Trample"
set desc = "Charge forward, trampling anything in your path until you hit something more stubborn than you are."
if(last_special > world.time)
to_chat(src, "<span class='danger'>You are too tired to charge!.</span>")
return
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
to_chat(src, "<span class='danger'>You cannot charge in your current state!.</span>")
return
last_special = world.time
src.visible_message("<span class='warning'>\The [src] takes a step backwards and rears up.</span>",
"<span class='notice'>You take a step backwards and then...</span>")
if(do_after(src,5))
playsound(loc, 'sound/species/shadow/grue_screech.ogg', 100, 1)
src.visible_message("<span class='danger'>\The [src] charges!</span>")
trampling()
/mob/living/carbon/human/proc/trampling()
var/brokesomething = 0//true if we break anything
var/done = 0//Set true if we fail to break something. We won't try to break anything for the rest of the proc
var/turf/target = get_step(src, dir)
for(var/obj/obstacle in get_turf(src))
if((obstacle.flags & ON_BORDER) && (src != obstacle))
if(!obstacle.CheckExit(src, target))
brokesomething++
if (!crash_into(obstacle))
done = 1
if (!done && !target.CanPass(src, target))
crash_into(target)
brokesomething++
if (!target.CanPass(src, target))
done = 1
if (!done)
for (var/atom/A in target)
if (A.density && A != src && A.loc != src)
brokesomething++
if (!crash_into(A))
done = 1
if(istype(A, /mob/living) && !A.density)
brokesomething++
crash_into(A)
if (brokesomething)
playsound(get_turf(target), 'sound/weapons/heavysmash.ogg', 100, 1)
attack_log += "\[[time_stamp()]\]<font color='red'>crashed into [brokesomething] objects at ([target.x];[target.y];[target.z]) </font>"
msg_admin_attack("[key_name(src)] crashed into [brokesomething] objects at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)" )
if (!done && target.Enter(src, null))
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
return 0
step(src, dir)
playsound(src,'sound/mecha/mechstep.ogg',25,1)
if (brokesomething)
src.visible_message("<span class='danger'>[src.name] breaks through!</span>")
addtimer(CALLBACK(src, .proc/trampling), 1)
else
target = get_step(src, dir)
do_attack_animation(target)
/mob/living/carbon/human/proc/crash_into(var/atom/A)
var/aname = A.name
var/oldtype = A.type
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
return 0
if (istype(A, /mob/living))
var/mob/living/M = A
attack_log += "\[[time_stamp()]\]<font color='red'> Crashed into [key_name(M)]</font>"
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Was rammed by [key_name(src)]</font>"
msg_admin_attack("[key_name(src)] crashed into [key_name(M)] at (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[M.x];Y=[M.y];Z=[M.z]'>JMP</a>)" )
A.ex_act(2)
sleep(1)
if (A && !(A.gcDestroyed) && A.type == oldtype)
src.visible_message("<span class='danger'>[src.name] plows into \the [aname]!</span>")
return 0
return 1
/mob/living/carbon/human/proc/rebel_yell()
set category = "Abilities"
set name = "Screech"
set desc = "Emit a powerful screech which stuns hearers in a two-tile radius."
if(last_special > world.time)
to_chat(src, "<span class='danger'>You are too tired to screech!.</span>")
return
if(stat || paralysis || stunned || weakened)
to_chat(src, "<span class='danger'>You cannot screech in your current state!.</span>")
return
last_special = world.time
visible_message("<span class='danger'>[src.name] lets out an ear piercing shriek!</span>",
"<span class='danger'>You let out an ear-shattering shriek!</span>",
"<span class='danger'>You hear a painfully loud shriek!</span>")
var/list/victims = list()
for (var/mob/living/carbon/human/T in hearers(2, src))
if (T == src)
continue
if (istype(T) && (T:l_ear || T:r_ear) && istype((T:l_ear || T:r_ear), /obj/item/clothing/ears/earmuffs))
continue
if (!vampire_can_affect_target(T, 0))
continue
to_chat(T, "<span class='danger'>You hear an ear piercing shriek and feel your senses go dull!</span>")
T.Weaken(5)
T.ear_deaf = 20
T.stuttering = 20
T.Stun(5)
victims += T
for (var/obj/structure/window/W in view(2))
W.shatter()
for (var/obj/machinery/light/L in view(4))
L.broken()
playsound(loc, 'sound/voice/shriek1.ogg', 100, 1)
if (victims.len)
admin_attacker_log_many_victims(src, victims, "used rebel yell to stun", "was stunned by [key_name(src)] using rebel yell", "used rebel yell to stun")
/mob/living/carbon/human/proc/formic_spray()
set category = "Abilities"
set name = "Napalm"
set desc = "Spew a cone of ignited napalm in front of you"
if(last_special > world.time)
to_chat(src,"<span class='notice'>You are too tired to spray napalm.</span>")
return
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
to_chat(src,"<span class='notice'>You cannot spray napalm in your current state.</span>")
return
last_special = world.time
playsound(loc, 'sound/species/shadow/grue_screech.ogg', 100, 1)
visible_message("<span class='danger'>\The [src] unleashes a torrent of raging flame!</span>",
"<span class='danger'>You unleash a gust of fire!</span>",
"<span class='danger'>You hear the roar of an inferno!</span>")
var/turf/T = get_step(get_step(src, dir), dir)
var/turf/T1 = get_step(T, dir)
var/turf/T2 = get_step(T1,turn(dir, 90))
var/turf/T3 = get_step(T1,turn(dir, -90))
var/turf/T4 = get_step(T1, dir)
var/turf/T5 = get_step(T2, dir)
var/turf/T6 = get_step(T3, dir)
var/turf/T7 = get_step(T5,turn(dir, 90))
var/turf/T8 = get_step(T6,turn(dir, -90))
var/list/the_targets = list(T,T1,T2,T3,T4,T5,T6,T7,T8)
playsound(src.loc, 'sound/magic/Fireball.ogg', 200, 1)
for(var/turf/FuelSpot in the_targets)
spawn(0)
var/obj/effect/effect/water/firewater/D = new/obj/effect/effect/water/firewater(get_turf(get_step(src, dir)))
var/turf/my_target = FuelSpot
D.create_reagents(200)
if(!src)
return
D.reagents.add_reagent("greekfire", 200)
D.set_color()
D.set_up(my_target, rand(6,8), 1, 50)
return
@@ -78,6 +78,14 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy/mannequin)
/mob/living/carbon/human/type_c
layer = 5
/mob/living/carbon/human/type_big/Initialize(mapload)
. = ..(mapload, "Vaurca Warform")
src.gender = NEUTER
src.mutations.Add(HULK)
/mob/living/carbon/human/type_big
layer = 5
/mob/living/carbon/human/msai_tajara/Initialize(mapload)
h_style = "Tajaran Ears"
. = ..(mapload, "M'sai Tajara")
@@ -28,6 +28,7 @@
var/icon_x_offset = 0
var/icon_y_offset = 0
var/eyes = "eyes_s" // Icon for eyes.
var/eyes_icons = 'icons/mob/human_face/eyes.dmi' // DMI file for eyes, mostly for none 32x32 species.
var/has_floating_eyes // Eyes will overlay over darkness (glow)
var/eyes_icon_blend = ICON_ADD // The icon blending mode to use for eyes.
var/blood_color = "#A10808" // Red.
@@ -70,11 +71,12 @@
var/radiation_mod = 1 // Radiation modifier
var/flash_mod = 1 // Stun from blindness modifier.
var/fall_mod = 1 // Fall damage modifier, further modified by brute damage modifier
var/vision_flags = DEFAULT_SIGHT // Same flags as glasses.
var/vision_flags = DEFAULT_SIGHT // Same flags as glasses.
var/inherent_eye_protection // If set, this species has this level of inherent eye protection.
var/eyes_are_impermeable = FALSE // If TRUE, this species' eyes are not damaged by phoron.
var/list/breakcuffs = list() //used in resist.dm to check if they can break hand/leg cuffs
var/list/breakcuffs = list() //used in resist.dm to check if they can break hand/leg cuffs
var/natural_climbing = FALSE //If true, the species always succeeds at climbing.
var/climb_coeff = 1.25 //The coefficient to the climbing speed of the individual = 60 SECONDS * climb_coeff
// Death vars.
var/meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/human
var/gibber_type = /obj/effect/gibspawner/human
@@ -115,3 +115,36 @@
step_away(target,user,15)
sleep(1)
target.apply_effect(attack_damage * 0.4, WEAKEN, armour)
/datum/unarmed_attack/claws/cleave
attack_verb = list("cleaved", "plowed", "swiped")
attack_noun = list("massive claws")
damage = 25
sharp = 1
edge = 1
attack_name = "massive claws"
shredding = 1
/datum/unarmed_attack/claws/cleave/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone)
..()
var/hit_mobs = 0
for(var/mob/living/L in orange(1,user))
if(L == user)
continue
if(L == target)
continue
L.apply_damage(rand(5,20), BRUTE, zone, armour)
to_chat(L, "<span class='danger'>\The [user] [pick(attack_verb)] you with its [attack_noun]!</span>")
hit_mobs++
if(hit_mobs)
to_chat(user, "<span class='danger'>You used \the [attack_noun] to attack [hit_mobs] other target\s!</span>")
/datum/unarmed_attack/bite/mandibles
attack_verb = list("mauled","gored","perforated")
attack_noun = list("mandibles")
damage = 35
shredding = 1
sharp = 1
edge = 1
attack_name = "mandibles"
@@ -33,6 +33,7 @@
brute_mod = 1.5
burn_mod = 1.5
fall_mod = 0.5
natural_climbing = 1
spawn_flags = IS_RESTRICTED
@@ -33,6 +33,8 @@
sprint_speed_factor = 0.9
sprint_cost_factor = 0.5
climb_coeff = 1
/datum/species/unathi
name = "Unathi"
short_name = "una"
@@ -69,6 +71,7 @@
rarity_value = 3
breakcuffs = list(MALE)
mob_size = 10
climb_coeff = 1.35
blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the Uuosa-Eso \
system, which roughly translates to 'burning mother'. A relatively recent addition to the galactic stage, they \
@@ -326,6 +329,7 @@
stamina = -1 // Diona sprinting uses energy instead of stamina
sprint_speed_factor = 0.5 //Speed gained is minor
sprint_cost_factor = 0.8
climb_coeff = 1.3
/datum/species/diona/handle_sprint_cost(var/mob/living/carbon/H, var/cost)
var/datum/dionastats/DS = H.get_dionastats()
@@ -657,6 +661,8 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
breath_type = "phoron"
poison_type = "nitrogen" //a species that breathes plasma shouldn't be poisoned by it.
mob_size = 13 //their half an inch thick exoskeleton and impressive height, plus all of their mechanical organs.
natural_climbing = TRUE
climb_coeff = 0.75
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 \
@@ -701,15 +707,15 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
has_organ = list(
"neural socket" = /obj/item/organ/vaurca/neuralsocket,
"lungs" = /obj/item/organ/lungs,
"lungs" = /obj/item/organ/lungs/vaurca,
"filtration bit" = /obj/item/organ/vaurca/filtrationbit,
"right heart" = /obj/item/organ/heart/right,
"left heart" = /obj/item/organ/heart/left,
"phoron reserve tank" = /obj/item/organ/vaurca/preserve,
"liver" = /obj/item/organ/liver,
"kidneys" = /obj/item/organ/kidneys,
"brain" = /obj/item/organ/brain,
"eyes" = /obj/item/organ/eyes
"liver" = /obj/item/organ/liver/vaurca,
"kidneys" = /obj/item/organ/kidneys/vaurca,
"brain" = /obj/item/organ/brain/vaurca,
"eyes" = /obj/item/organ/eyes/vaurca
)
/datum/species/bug/equip_survival_gear(var/mob/living/carbon/human/H)
@@ -723,8 +729,8 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
var/obj/item/clothing/mask/breath/M = new /obj/item/clothing/mask/breath(H)
if(H.equip_to_slot_or_del(M, slot_wear_mask))
M.autodrobe_no_remove = 1
H.gender = NEUTER
/datum/species/bug/handle_post_spawn(var/mob/living/carbon/human/H)
H.gender = NEUTER
H.add_client_color(/datum/client_color/vaurca)
return ..()
@@ -16,6 +16,7 @@
stamina = 100 // As opposed to 90
brute_mod = 1.1 // Less Brute Damage
ethanol_resistance = 1 // Default value
climb_coeff = 1.1
cold_level_1 = 160 //RaceDefault 200 Default 260
cold_level_2 = 100 //RaceDefault 140 Default 200
@@ -47,8 +47,9 @@
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
eyes = "breeder_eyes" //makes it so that eye colour is not changed when skin colour is.
eyes_icons = 'icons/mob/human_face/eyes48x48.dmi'
brute_mod = 0.1 //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.
breakcuffs = list(MALE,FEMALE,NEUTER)
@@ -58,9 +59,9 @@
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'
damage_overlays = 'icons/mob/human_races/masks/dam_mask_warform.dmi'
damage_mask = 'icons/mob/human_races/masks/dam_mask_warform.dmi'
blood_mask = 'icons/mob/human_races/masks/dam_mask_warform.dmi'
stamina = 175
sprint_speed_factor = 1
@@ -80,5 +81,79 @@
return
/datum/species/bug/type_c/handle_post_spawn(var/mob/living/carbon/human/H)
..()
H.gender = FEMALE
return ..()
return
/datum/species/bug/type_big
name = "Vaurca Warform"
short_name = "vam"
name_plural = "Type BA"
bodytype = "Vaurca Warform"
primitive_form = "Vaurca Warrior"
icon_template = 'icons/mob/human_races/subspecies/r_vaurcamecha.dmi'
icobase = 'icons/mob/human_races/subspecies/r_vaurcamecha.dmi'
deform = 'icons/mob/human_races/subspecies/r_vaurcamecha.dmi'
default_language = LANGUAGE_GIBBERING
language = LANGUAGE_VAURCA
icon_x_offset = -8
unarmed_types = list(/datum/unarmed_attack/claws/cleave, /datum/unarmed_attack/bite/strong)
rarity_value = 10
slowdown = 0
eyes = "warform_eyes"
eyes_icons = 'icons/mob/human_face/warform_eyes.dmi'
brute_mod = 0.5
burn_mod = 0.1
toxins_mod = 1
total_health = 200
breakcuffs = list(MALE,FEMALE,NEUTER)
mob_size = 30
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 = 200
stamina_recovery = 5
sprint_speed_factor = 0.9
sprint_cost_factor = 0.5
heat_level_1 = 1000 //Default 360
heat_level_2 = 4000 //Default 400
heat_level_3 = 16000 //Default 1000
hazard_high_pressure = 55000 //Default 550
warning_high_pressure = 3250 //Default 325
spawn_flags = IS_RESTRICTED
flags = NO_SCAN | NO_SLIP | NO_PAIN | NO_BREATHE
inherent_verbs = list(
/mob/living/carbon/human/proc/rebel_yell,
/mob/living/carbon/human/proc/devour_head,
/mob/living/carbon/human/proc/formic_spray,
/mob/living/carbon/human/proc/trample
)
has_organ = list(
"neural socket" = /obj/item/organ/vaurca/neuralsocket,
"lungs" = /obj/item/organ/lungs/vaurca,
"right heart" = /obj/item/organ/heart/right,
"left heart" = /obj/item/organ/heart/left,
"phoron reservoir" = /obj/item/organ/vaurca/reservoir,
"mechanical liver" = /obj/item/organ/liver/vaurca/robo,
"mechanical kidneys" = /obj/item/organ/kidneys/vaurca/robo,
"brain" = /obj/item/organ/brain/vaurca,
"eyes" = /obj/item/organ/eyes/vaurca,
"filtration bit" = /obj/item/organ/vaurca/filtrationbit
)
/datum/species/bug/type_big/equip_survival_gear(var/mob/living/carbon/human/H)
return
/datum/species/bug/type_big/handle_post_spawn(var/mob/living/carbon/human/H)
H.mutations.Add(HULK)
return ..()
@@ -37,6 +37,8 @@
sprint_speed_factor = 2
sprint_cost_factor = 0.80
stamina_recovery = 5
natural_climbing = 1
climb_coeff = 0.1
virus_immune = 1
@@ -279,7 +279,7 @@ There are several things that need to be remembered:
else
base_icon.Blend(temp, ICON_OVERLAY)
if(!skeleton)
if(!(species.flags & NO_SCAN))
if(husk)
base_icon.ColorTone(husk_color_mod)
else if(hulk)
+2
View File
@@ -250,6 +250,7 @@ default behaviour is:
/mob/living/proc/adjustBruteLoss(var/amount)
if(status_flags & GODMODE) return 0 //godmode
amount *= brute_mod
bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2))
/mob/living/proc/getOxyLoss()
@@ -279,6 +280,7 @@ default behaviour is:
/mob/living/proc/adjustFireLoss(var/amount)
if(status_flags & GODMODE) return 0 //godmode
amount *= burn_mod
fireloss = min(max(fireloss + amount, 0),(maxHealth*2))
/mob/living/proc/getCloneLoss()
@@ -75,3 +75,6 @@
var/tesla_ignore = 0 // If true, mob is not affected by tesla bolts.
var/stop_sight_update = 0 //If true, it won't reset the mob vision flags
var/burn_mod = 1
var/brute_mod = 1
+3 -1
View File
@@ -60,12 +60,14 @@
/proc/isvaurca(A)
if(istype(A, /mob/living/carbon/human))
switch(A:get_species())
if ("Vaurca Worker")
if("Vaurca Worker")
return 1
if("Vaurca Warrior")
return 1
if("Vaurca Breeder")
return 1
if("Vaurca Warform")
return 1
if("V'krexi")
return 1
return 0