mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-25 22:28:00 +01:00
@@ -27,7 +27,7 @@
|
||||
|
||||
// Prevents cloning, actual effect is on the cloning machine
|
||||
/datum/modifier/no_clone
|
||||
name = "Cloning Incompatability"
|
||||
name = "Cloning Incompatibility"
|
||||
desc = "For whatever reason, you cannot be cloned."
|
||||
|
||||
//WIP, but these may never be seen anyway, so *shrug
|
||||
@@ -39,8 +39,8 @@
|
||||
|
||||
// Prevents borging (specifically the MMI part), actual effect is on the MMI.
|
||||
/datum/modifier/no_borg
|
||||
name = "Cybernetic Incompatability"
|
||||
desc = "For whatever reason, your brain is incompatable with direct cybernetic interfaces, such as the MMI."
|
||||
name = "Cybernetic Incompatibility"
|
||||
desc = "For whatever reason, your brain is incompatible with direct cybernetic interfaces, such as the MMI."
|
||||
|
||||
flags = MODIFIER_GENETIC
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
var/filter_instance = null // Instance of a filter created with the `filter_parameters` list. This exists to make `animate()` calls easier. Don't set manually.
|
||||
|
||||
// Now for all the different effects.
|
||||
// Percentage modifiers are expressed as a multipler. (e.g. +25% damage should be written as 1.25)
|
||||
// Percentage modifiers are expressed as a multiplier. (e.g. +25% damage should be written as 1.25)
|
||||
var/max_health_flat // Adjusts max health by a flat (e.g. +20) amount. Note this is added to base health.
|
||||
var/max_health_percent // Adjusts max health by a percentage (e.g. -30%).
|
||||
var/disable_duration_percent // Adjusts duration of 'disables' (stun, weaken, paralyze, confusion, sleep, halloss, etc) Setting to 0 will grant immunity.
|
||||
@@ -55,13 +55,13 @@
|
||||
var/emp_modifier // Added to the EMP strength, which is an inverse scale from 1 to 4, with 1 being the strongest EMP. 5 is a nullification.
|
||||
var/explosion_modifier // Added to the bomb strength, which is an inverse scale from 1 to 3, with 1 being gibstrength. 4 is a nullification.
|
||||
|
||||
// Note that these are combined with the mob's real armor values additatively. You can also omit specific armor types.
|
||||
// Note that these are combined with the mob's real armor values additively. You can also omit specific armor types.
|
||||
var/list/armor_percent = null // List of armor values to add to the holder when doing armor calculations. This is for percentage based armor. E.g. 50 = half damage.
|
||||
var/list/armor_flat = null // Same as above but only for flat armor calculations. E.g. 5 = 5 less damage (this comes after percentage).
|
||||
// Unlike armor, this is multiplicative. Two 50% protection modifiers will be combined into 75% protection (assuming no base protection on the mob).
|
||||
var/heat_protection = null // Modifies how 'heat' protection is calculated, like wearing a firesuit. 1 = full protection.
|
||||
var/cold_protection = null // Ditto, but for cold, like wearing a winter coat.
|
||||
var/siemens_coefficient = null // Similar to above two vars but 0 = full protection, to be consistant with siemens numbers everywhere else.
|
||||
var/siemens_coefficient = null // Similar to above two vars but 0 = full protection, to be consistent with siemens numbers everywhere else.
|
||||
|
||||
var/vision_flags // Vision flags to add to the mob. SEE_MOB, SEE_OBJ, etc.
|
||||
|
||||
@@ -272,7 +272,7 @@
|
||||
|
||||
|
||||
|
||||
// Helper to format multiplers (e.g. 1.4) to percentages (like '40%')
|
||||
// Helper to format multipliers (e.g. 1.4) to percentages (like '40%')
|
||||
/proc/multipler_to_percentage(var/multi, var/abs = FALSE)
|
||||
if(abs)
|
||||
return "[abs( ((multi - 1) * 100) )]%"
|
||||
|
||||
@@ -666,7 +666,7 @@
|
||||
// **********
|
||||
|
||||
/datum/modifier/trait/phobia/xenophobia/skrell
|
||||
name = "anti-skrell sentiment"
|
||||
name = "anti-Skrell sentiment"
|
||||
desc = "The Skrell pretend that they are Humanity's enlightened allies, but you can see past that."
|
||||
|
||||
on_created_text = "<span class='warning'>Hopefully no Skrell show up today.</span>"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
//If someone can do this in a neater way, be my guest-Kor
|
||||
|
||||
//This has to be seperate from the Away Mission corpses, because New() doesn't work for those, and initialize() doesn't work for these.
|
||||
//This has to be separate from the Away Mission corpses, because New() doesn't work for those, and initialize() doesn't work for these.
|
||||
|
||||
//To do: Allow corpses to appear mangled, bloody, etc. Allow customizing the bodies appearance (they're all bald and white right now).
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
"Beepsky" = "secbot"
|
||||
)
|
||||
var/last_revive_notification = null // world.time of last notification, used to avoid spamming players from defibs or cloners.
|
||||
var/cleanup_timer // Refernece to a timer that will delete this mob if no client returns
|
||||
var/cleanup_timer // Reference to a timer that will delete this mob if no client returns
|
||||
|
||||
/mob/observer/dead/Initialize()
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
//Syllable Lists
|
||||
/*
|
||||
This list really long, mainly because I can't make up my mind about which mandarin syllables should be removed,
|
||||
and the english syllables had to be duplicated so that there is roughly a 50-50 weighting.
|
||||
and the English syllables had to be duplicated so that there is roughly a 50-50 weighting.
|
||||
The other 3 languages were duplicated just so they could show occasionally.
|
||||
|
||||
Sources:
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
for(var/modifier_type in B.brainmob.modifiers) //Can't be shoved in an MMI.
|
||||
if(istype(modifier_type, /datum/modifier/no_borg))
|
||||
to_chat(user, "<span class='warning'>\The [src] appears to reject this brain. It is incompatable.</span>")
|
||||
to_chat(user, "<span class='warning'>\The [src] appears to reject this brain. It is incompatible.</span>")
|
||||
return
|
||||
|
||||
user.visible_message("<span class='notice'>\The [user] sticks \a [O] into \the [src].</span>")
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
//higher sensitivity values incur additional effects, starting with confusion/blinding/knockdown and ending with increasing amounts of damage
|
||||
//the degree of damage and duration of effects can be tweaked up or down based on the species emp_dmg_mod and emp_stun_mod vars (default 1) on top of tuning the random ranges
|
||||
/mob/living/carbon/emp_act(severity)
|
||||
//pregen our stunning stuff, had to do this seperately or else byond complained. remember that severity falls off with distance based on the source, so we don't need to do any extra distance calcs here.
|
||||
//pregen our stunning stuff, had to do this separately or else byond complained. remember that severity falls off with distance based on the source, so we don't need to do any extra distance calcs here.
|
||||
var/agony_str = ((rand(4,6)*15)-(15*severity))*species.emp_stun_mod //big ouchies at high severity, causes 0-75 halloss/agony; shotgun beanbags and revolver rubbers do 60
|
||||
var/deafen_dur = (rand(9,16)-severity)*species.emp_stun_mod //5-15 deafen, on par with a flashbang
|
||||
var/confuse_dur = (rand(4,11)-severity)*species.emp_stun_mod //0-10 wobbliness, on par with a flashbang
|
||||
|
||||
@@ -264,7 +264,7 @@
|
||||
else
|
||||
return if_no_id
|
||||
|
||||
//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a seperate proc as it'll be useful elsewhere
|
||||
//repurposed proc. Now it combines get_id_name() and get_face_name() to determine a mob's name variable. Made into a separate proc as it'll be useful elsewhere
|
||||
/mob/living/carbon/human/proc/get_visible_name()
|
||||
if( wear_mask && (wear_mask.flags_inv&HIDEFACE) ) //Wearing a mask which hides our face, use id-name if possible
|
||||
return get_id_name("Unknown")
|
||||
|
||||
@@ -336,7 +336,7 @@
|
||||
return parts
|
||||
|
||||
//Heals ONE external organ, organ gets randomly selected from damaged ones.
|
||||
//It automatically updates damage overlays if necesary
|
||||
//It automatically updates damage overlays if necessary
|
||||
//It automatically updates health status
|
||||
/mob/living/carbon/human/heal_organ_damage(var/brute, var/burn)
|
||||
var/list/obj/item/organ/external/parts = get_damaged_organs(brute,burn)
|
||||
@@ -351,8 +351,8 @@
|
||||
/*
|
||||
In most cases it makes more sense to use apply_damage() instead! And make sure to check armour if applicable.
|
||||
*/
|
||||
//Damages ONE external organ, organ gets randomly selected from damagable ones.
|
||||
//It automatically updates damage overlays if necesary
|
||||
//Damages ONE external organ, organ gets randomly selected from damageable ones.
|
||||
//It automatically updates damage overlays if necessary
|
||||
//It automatically updates health status
|
||||
/mob/living/carbon/human/take_organ_damage(var/brute, var/burn, var/sharp = 0, var/edge = 0)
|
||||
var/list/obj/item/organ/external/parts = get_damageable_organs()
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
return FBP_POSI
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/mmi/digital/robot))
|
||||
return FBP_DRONE
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/mmi)) // This needs to come last because inheritence.
|
||||
else if(istype(mmi_holder.stored_mmi, /obj/item/mmi)) // This needs to come last because inheritance.
|
||||
return FBP_CYBORG
|
||||
|
||||
return FBP_NONE
|
||||
|
||||
@@ -101,8 +101,8 @@
|
||||
handle_embedded_objects() //Moving with objects stuck in you can cause bad times.
|
||||
|
||||
// This calculates the amount of slowdown to receive from items worn. This does NOT include species modifiers.
|
||||
// It is in a seperate place to avoid an infinite loop situation with dragging mobs dragging each other.
|
||||
// Also its nice to have these things seperated.
|
||||
// It is in a separate place to avoid an infinite loop situation with dragging mobs dragging each other.
|
||||
// Also its nice to have these things separated.
|
||||
/mob/living/carbon/human/proc/calculate_item_encumbrance()
|
||||
if(!buckled && shoes) // Shoes can make you go faster.
|
||||
. += shoes.slowdown
|
||||
@@ -113,7 +113,7 @@
|
||||
. += I.slowdown
|
||||
|
||||
// Hands are also included, to make the 'take off your armor instantly and carry it with you to go faster' trick no longer viable.
|
||||
// This is done seperately to disallow negative numbers (so you can't hold shoes in your hands to go faster).
|
||||
// This is done separately to disallow negative numbers (so you can't hold shoes in your hands to go faster).
|
||||
for(var/obj/item/I in list(r_hand, l_hand))
|
||||
. += max(I.slowdown, 0)
|
||||
|
||||
|
||||
@@ -47,11 +47,11 @@
|
||||
|
||||
//Apparently, the person who wrote this code designed it so that
|
||||
//blinded get reset each cycle and then get activated later in the
|
||||
//code. Very ugly. I dont care. Moving this stuff here so its easy
|
||||
//code. Very ugly. I don't care. Moving this stuff here so its easy
|
||||
//to find it.
|
||||
blinded = 0
|
||||
|
||||
//TODO: seperate this out
|
||||
//TODO: separate this out
|
||||
// update the current life tick, can be used to e.g. only do something every 4 ticks
|
||||
life_tick++
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
pressure_adjustment_coefficient = min(pressure_adjustment_coefficient, 1)
|
||||
return pressure_adjustment_coefficient
|
||||
|
||||
// Calculate how much of the enviroment pressure-difference affects the human.
|
||||
// Calculate how much of the environment pressure-difference affects the human.
|
||||
/mob/living/carbon/human/calculate_affecting_pressure(var/pressure)
|
||||
var/pressure_difference
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
/mob/living/carbon/human/handle_disabilities()
|
||||
..()
|
||||
|
||||
if(stat != CONSCIOUS) //Let's not worry about tourettes if you're not conscious.
|
||||
if(stat != CONSCIOUS) //Let's not worry about Tourette's if you're not conscious.
|
||||
return
|
||||
|
||||
if (disabilities & EPILEPSY)
|
||||
@@ -665,7 +665,7 @@
|
||||
|
||||
/mob/living/carbon/human/proc/handle_allergens()
|
||||
if(chem_effects[CE_ALLERGEN])
|
||||
//first, multiply the basic species-level value by our allergen effect rating, so consuming multiple seperate allergen typess simultaneously hurts more
|
||||
//first, multiply the basic species-level value by our allergen effect rating, so consuming multiple separate allergen typess simultaneously hurts more
|
||||
var/damage_severity = species.allergen_damage_severity * chem_effects[CE_ALLERGEN]
|
||||
var/disable_severity = species.allergen_disable_severity * chem_effects[CE_ALLERGEN]
|
||||
if(species.allergen_reaction & AG_PHYS_DMG)
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
var/burn_mod = 1 // Burn damage multiplier.
|
||||
var/oxy_mod = 1 // Oxyloss modifier
|
||||
var/toxins_mod = 1 // Toxloss modifier. overridden by NO_POISON flag.
|
||||
var/radiation_mod = 1 // Radiation modifier, determines the practically negligable burn damage from direct exposure to extreme sources.
|
||||
var/radiation_mod = 1 // Radiation modifier, determines the practically negligible burn damage from direct exposure to extreme sources.
|
||||
var/flash_mod = 1 // Stun from blindness modifier (flashes and flashbangs)
|
||||
var/flash_burn = 0 // how much damage to take from being flashed if light hypersensitive
|
||||
var/sound_mod = 1 // Multiplier to the effective *range* of flashbangs. a flashbang's bang hits an entire screen radius, with some falloff.
|
||||
@@ -113,7 +113,7 @@
|
||||
var/chemOD_mod = 1 // Damage modifier for overdose; higher = more damage from ODs
|
||||
var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc.
|
||||
var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc.
|
||||
var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overriden by "can_feel_pain" var
|
||||
var/trauma_mod = 1 // Affects traumatic shock (how fast pain crit happens). 0 = no effect (immunity to pain crit), 2 = double etc.Overridden by "can_feel_pain" var
|
||||
// set below is EMP interactivity for nonsynth carbons
|
||||
var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG
|
||||
var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive
|
||||
|
||||
@@ -318,7 +318,7 @@ var/global/datum/species/shapeshifter/promethean/prometheans
|
||||
|
||||
H.adjust_nutrition(-(3 * nutrition_cost)) // Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired.
|
||||
|
||||
var/agony_to_apply = ((1 / starve_mod) * (nutrition_cost - strain_negation)) //Regenerating damage causes minor pain over time, if the organs responsible are nonexistant or too high on strain. Small injures will be no issue, large ones will cause problems.
|
||||
var/agony_to_apply = ((1 / starve_mod) * (nutrition_cost - strain_negation)) //Regenerating damage causes minor pain over time, if the organs responsible are nonexistent or too high on strain. Small injures will be no issue, large ones will cause problems.
|
||||
|
||||
if((starve_mod <= 0.5 && (H.getHalLoss() + agony_to_apply) <= 90) || ((H.getHalLoss() + agony_to_apply) <= 70)) // Will max out at applying halloss at 70, unless they are starving; starvation regeneration will bring them up to a maximum of 120, the same amount of agony a human receives from three taser hits.
|
||||
H.apply_damage(agony_to_apply, HALLOSS)
|
||||
|
||||
@@ -83,14 +83,14 @@
|
||||
|
||||
setClickCooldown(100)
|
||||
visible_message(
|
||||
"<span class='danger'>[src] attempts to unbuckle themself!</span>",
|
||||
"<span class='danger'>[src] attempts to unbuckle themselves!</span>",
|
||||
"<span class='warning'>You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)</span>"
|
||||
)
|
||||
|
||||
if(do_after(src, 2 MINUTES, incapacitation_flags = INCAPACITATION_DEFAULT & ~(INCAPACITATION_RESTRAINED | INCAPACITATION_BUCKLED_FULLY)))
|
||||
if(!buckled)
|
||||
return
|
||||
visible_message("<span class='danger'>[src] manages to unbuckle themself!</span>",
|
||||
visible_message("<span class='danger'>[src] manages to unbuckle themselves!</span>",
|
||||
"<span class='notice'>You successfully unbuckle yourself.</span>")
|
||||
buckled.user_unbuckle_mob(src, src)
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
to_chat(src, "<span class='notice'>You will now speak whatever your standard default language is if you do not specify one when speaking.</span>")
|
||||
default_language = language
|
||||
|
||||
// Silicons can't neccessarily speak everything in their languages list
|
||||
// Silicons can't necessarily speak everything in their languages list
|
||||
/mob/living/silicon/set_default_language(language as null|anything in speech_synthesizer_langs)
|
||||
..()
|
||||
|
||||
|
||||
@@ -1119,7 +1119,7 @@
|
||||
throw_alert("weightless", /obj/screen/alert/weightless)
|
||||
|
||||
// Tries to turn off things that let you see through walls, like mesons.
|
||||
// Each mob does vision a bit differently so this is just for inheritence and also so overrided procs can make the vision apply instantly if they call `..()`.
|
||||
// Each mob does vision a bit differently so this is just for inheritance and also so overridden procs can make the vision apply instantly if they call `..()`.
|
||||
/mob/living/proc/disable_spoiler_vision()
|
||||
handle_vision()
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ default behaviour is:
|
||||
now_pushing = 0
|
||||
return
|
||||
|
||||
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
|
||||
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being separated from their puller
|
||||
var/can_swap = 1
|
||||
if(loc.density || tmob.loc.density)
|
||||
can_swap = 0
|
||||
@@ -203,7 +203,7 @@ default behaviour is:
|
||||
// Will move our mob (probably)
|
||||
. = ..() // Moved() called at this point if successful
|
||||
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1) //seperated from our puller and not in the middle of a diagonal move
|
||||
if(pulledby && moving_diagonally != FIRST_DIAG_STEP && get_dist(src, pulledby) > 1) //separated from our puller and not in the middle of a diagonal move
|
||||
pulledby.stop_pulling()
|
||||
|
||||
if(s_active && !(s_active in contents) && get_turf(s_active) != get_turf(src)) //check !( s_active in contents ) first so we hopefully don't have to call get_turf() so much.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
..()
|
||||
if (mind)
|
||||
//Per BYOND docs key remains set if the player DCs, becomes null if switching bodies.
|
||||
if(!key) //key and mind have become seperated.
|
||||
if(!key) //key and mind have become separated.
|
||||
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
|
||||
|
||||
spawn(15 SECONDS) //15 seconds to get back into the mob before it goes wild
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
src.sight &= ~SEE_MOBS
|
||||
src.sight &= ~SEE_TURFS
|
||||
src.sight &= ~SEE_OBJS
|
||||
src.see_in_dark = 8 // see_in_dark means you can FAINTLY see in the dark, humans have a range of 3 or so, tajaran have it at 8
|
||||
src.see_in_dark = 8 // see_in_dark means you can FAINTLY see in the dark, humans have a range of 3 or so, Tajaran have it at 8
|
||||
src.see_invisible = SEE_INVISIBLE_LIVING // This is normal vision (25), setting it lower for normal vision means you don't "see" things like darkness since darkness
|
||||
// has a "invisible" value of 15
|
||||
|
||||
|
||||
@@ -1122,7 +1122,7 @@
|
||||
return
|
||||
|
||||
if(opened)//Cover is open
|
||||
if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice
|
||||
if(emagged) return//Prevents the X has hit Y with Z message also you can't emag them twice
|
||||
if(wiresexposed)
|
||||
to_chat(user, "<span class='filter_notice'>You must close the panel first.</span>")
|
||||
return
|
||||
@@ -1190,9 +1190,9 @@
|
||||
G.drop_item_nm()
|
||||
|
||||
/mob/living/silicon/robot/disable_spoiler_vision()
|
||||
if(sight_mode & (BORGMESON|BORGMATERIAL|BORGXRAY)) // Whyyyyyyyy have seperate defines.
|
||||
if(sight_mode & (BORGMESON|BORGMATERIAL|BORGXRAY)) // Whyyyyyyyy have separate defines.
|
||||
var/i = 0
|
||||
// Borg inventory code is very . . interesting and as such, unequiping a specific item requires jumping through some (for) loops.
|
||||
// Borg inventory code is very . . interesting and as such, unequipping a specific item requires jumping through some (for) loops.
|
||||
var/current_selection_index = get_selected_module() // Will be 0 if nothing is selected.
|
||||
for(var/thing in list(module_state_1, module_state_2, module_state_3))
|
||||
i++
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
//A harvest item for serviceborgs.
|
||||
/obj/item/robot_harvester
|
||||
name = "auto harvester"
|
||||
desc = "A hand-held harvest tool that resembles a sickle. It uses energy to cut plant matter very efficently."
|
||||
desc = "A hand-held harvest tool that resembles a sickle. It uses energy to cut plant matter very efficiently."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "autoharvester"
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
for(var/mob/M in listening)
|
||||
M.hear_holopad_talk(message_pieces, verb, src)
|
||||
for(var/obj/O in listening_obj)
|
||||
if(O == T) //Don't recieve your own speech
|
||||
if(O == T) //Don't receive your own speech
|
||||
continue
|
||||
O.hear_talk(src, message_pieces, verb)
|
||||
/*Radios "filter out" this conversation channel so we don't need to account for them.
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
melee_post_animation(A)
|
||||
|
||||
// This does the actual attack.
|
||||
// This is a seperate proc for the purposes of attack animations.
|
||||
// This is a separate proc for the purposes of attack animations.
|
||||
// A is the thing getting attacked, T is the turf A is/was on when attack_target was called.
|
||||
/mob/living/simple_mob/proc/do_attack(atom/A, turf/T)
|
||||
face_atom(A)
|
||||
|
||||
@@ -119,13 +119,13 @@
|
||||
|
||||
//Special attacks
|
||||
// var/special_attack_prob = 0 // The chance to ATTEMPT a special_attack_target(). If it fails, it will do a regular attack instead.
|
||||
// This is commented out to ease the AI attack logic by being (a bit more) determanistic.
|
||||
// This is commented out to ease the AI attack logic by being (a bit more) deterministic.
|
||||
// You should instead limit special attacks using the below vars instead.
|
||||
var/special_attack_min_range = null // The minimum distance required for an attempt to be made.
|
||||
var/special_attack_max_range = null // The maximum for an attempt.
|
||||
var/special_attack_charges = null // If set, special attacks will work off of a charge system, and won't be usable if all charges are expended. Good for grenades.
|
||||
var/special_attack_cooldown = null // If set, special attacks will have a cooldown between uses.
|
||||
var/last_special_attack = null // world.time when a special attack occured last, for cooldown calculations.
|
||||
var/last_special_attack = null // world.time when a special attack occurred last, for cooldown calculations.
|
||||
var/projectileverb = "fires"
|
||||
|
||||
//Damage resistances
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Borers are probably still going to be buggy as fuck, this is just bringing their mob defines up to the new system.
|
||||
// IMO they're a relic of several ages we're long past, their code and their design showing this plainly, but removing them would
|
||||
// make certain people Unhappy so here we are. They need a complete redesign but thats beyond the scope of the rewrite.
|
||||
// make certain people Unhappy so here we are. They need a complete redesign but that's beyond the scope of the rewrite.
|
||||
|
||||
/mob/living/simple_mob/animal/borer
|
||||
name = "cortical borer"
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
desc = "This specific spider has been catalogued as 'Carrier', \
|
||||
and it belongs to the 'Nurse' caste. \
|
||||
<br><br>\
|
||||
The spider has a beige and red appearnce, with bright green eyes. \
|
||||
The spider has a beige and red appearance, with bright green eyes. \
|
||||
Inside the spider are a large number of younger spiders and spiderlings, hence \
|
||||
the Carrier classification. \
|
||||
If the host dies, they will be able to exit the body and survive independantly, \
|
||||
If the host dies, they will be able to exit the body and survive independently, \
|
||||
unless the host dies catastrophically."
|
||||
value = CATALOGUER_REWARD_MEDIUM
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<br><br>\
|
||||
These spiders are very dangerous, and unusual. They have obviously been influenced by the mysterious \
|
||||
material known as phoron, however it is not known if this is the result of arachnids merely being \
|
||||
exposed to naturally-occuring phoron on some alien world, being genetically altered to produce phoron by an unknown party, \
|
||||
exposed to naturally-occurring phoron on some alien world, being genetically altered to produce phoron by an unknown party, \
|
||||
or some other unknown cause. \
|
||||
<br><br>\
|
||||
Compared to the other types of spiders in their caste, and even to those outside, this one is the \
|
||||
@@ -20,7 +20,7 @@
|
||||
Phorongenic spiders are also highly explosive, due to their infusion with phoron. \
|
||||
Should one die, it will create a large explosion. This appears to be an automatic response \
|
||||
caused from internal rupturing, as opposed to an intentional act of revenge by the spider, however \
|
||||
the result is the same, oftening ending a fight with both sides dead."
|
||||
the result is the same, often ending a fight with both sides dead."
|
||||
value = CATALOGUER_REWARD_MEDIUM
|
||||
|
||||
/mob/living/simple_mob/animal/giant_spider/phorogenic
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
// Makes the AI unable to willingly go on land.
|
||||
/mob/living/simple_mob/animal/passive/fish/IMove(turf/newloc, safety = TRUE)
|
||||
if(is_type_in_list(newloc, suitable_turf_types))
|
||||
return ..() // Procede as normal.
|
||||
return ..() // Proceed as normal.
|
||||
return MOVEMENT_FAILED // Don't leave the water!
|
||||
|
||||
// Take damage if we are not in water
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
icon_scale_y = 0.5
|
||||
|
||||
/mob/living/simple_mob/animal/passive/bird/european_robin
|
||||
name = "european robin"
|
||||
name = "European robin"
|
||||
desc = "A species of bird, they have been studied for their sense of magnetoreception."
|
||||
icon_state = "europeanrobin"
|
||||
icon_dead = "europeanrobin-dead"
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
special_attack_max_range = 4
|
||||
special_attack_cooldown = 1 MINUTE
|
||||
|
||||
// Players have 2 seperate cooldowns for these, while the AI must choose one. Both respect special_attack_cooldown
|
||||
// Players have 2 separate cooldowns for these, while the AI must choose one. Both respect special_attack_cooldown
|
||||
var/last_strike_time = 0
|
||||
var/last_flash_time = 0
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
/mob/living/simple_mob/animal/sif/kururak/IIsAlly(mob/living/L)
|
||||
. = ..()
|
||||
if(!.)
|
||||
if(issilicon(L)) // Metal things are usually reflective, or in general aggrivating.
|
||||
if(issilicon(L)) // Metal things are usually reflective, or in general aggravating.
|
||||
return FALSE
|
||||
if(ishuman(L)) // Might be metal, but they're humanoid shaped.
|
||||
var/mob/living/carbon/human/H = L
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/mob/living/simple_mob/humanoid/russian
|
||||
name = "russian"
|
||||
name = "Russian"
|
||||
desc = "For the Motherland!"
|
||||
tt_desc = "E Homo sapiens"
|
||||
icon_state = "russianmelee"
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
sleep(1 SECOND)
|
||||
|
||||
// Shoot a tesla bolt, and flashes people who are looking at the mecha without sufficent eye protection.
|
||||
// Shoot a tesla bolt, and flashes people who are looking at the mecha without sufficient eye protection.
|
||||
visible_message(span("warning", "\The [energy_ball] explodes in a flash of light, sending a shock everywhere!"))
|
||||
playsound(src, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30)
|
||||
tesla_zap(src.loc, 5, ELECTRIC_ZAP_POWER, FALSE)
|
||||
@@ -270,7 +270,7 @@
|
||||
|
||||
// The Advanced Dark Gygax's AI.
|
||||
// The mob has three special attacks, based on the current intent.
|
||||
// This AI choose the appropiate intent for the situation, and tries to ensure it doesn't kill itself by firing missiles at its feet.
|
||||
// This AI choose the appropriate intent for the situation, and tries to ensure it doesn't kill itself by firing missiles at its feet.
|
||||
/datum/ai_holder/simple_mob/intentional/adv_dark_gygax
|
||||
conserve_ammo = TRUE // Might help avoid 'I shoot the wall forever' cheese.
|
||||
var/closest_desired_distance = 1 // Otherwise run up to them to be able to potentially shock or punch them.
|
||||
@@ -285,7 +285,7 @@
|
||||
// Used to control the mob's positioning based on which special attack it has done.
|
||||
// Note that the intent will not change again until the next special attack is about to happen.
|
||||
/datum/ai_holder/simple_mob/intentional/adv_dark_gygax/on_engagement(atom/A)
|
||||
// Make the AI backpeddle if using an AoE special attack.
|
||||
// Make the AI backpedal if using an AoE special attack.
|
||||
var/list/risky_intents = list(I_GRAB, I_HURT) // Mini-singulo and missiles.
|
||||
if(holder.a_intent in risky_intents)
|
||||
var/closest_distance = 1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "Voidcraft - Hoverpod"
|
||||
desc = "This is a small space-capable craft that has a round design. Can hold up to one pilot, \
|
||||
and sometimes one or two passengers, with the right modifications made. \
|
||||
Hoverpods have existed for a very long time, and the design has remained more or less consistant over its life. \
|
||||
Hoverpods have existed for a very long time, and the design has remained more or less consistent over its life. \
|
||||
They carved out a niche in short ranged transportation of cargo or crew while in space, \
|
||||
as they were more efficient compared to using a shuttle, and required less infrastructure to use due to being compact enough \
|
||||
to use airlocks. As such, they acted as a sort of bridge between being EVA in a spacesuit, and being inside a 'real' spacecraft.\
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
tends to get deflected after slicing into someone's flesh, and as such they tend to not cut deeply. \
|
||||
The simplistic AI inside compensates for this by using the tendency to bounce away after \
|
||||
slicing as an evasive tactic to avoid harm. This allows the viscerator to cut up the target, \
|
||||
fly to the side, and then repeat, potentially causing the target to die from many seperate wounds."
|
||||
fly to the side, and then repeat, potentially causing the target to die from many separate wounds."
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/mob/living/simple_mob/mechanical/viscerator
|
||||
|
||||
@@ -34,4 +34,4 @@
|
||||
L.add_modifier(/datum/modifier/deep_wounds, 30 SECONDS)
|
||||
|
||||
/decl/mob_organ_names/wraith
|
||||
hit_zones = list("body", "eye", "crystaline spike", "left claw", "right claw")
|
||||
hit_zones = list("body", "eye", "crystalline spike", "left claw", "right claw")
|
||||
@@ -143,7 +143,7 @@ var/global/list/_slime_default_emotes = list(
|
||||
I.appearance_flags = RESET_COLOR
|
||||
add_overlay(I)
|
||||
|
||||
// Controls the 'mood' overlay. Overrided in subtypes for specific behaviour.
|
||||
// Controls the 'mood' overlay. Overridden in subtypes for specific behaviour.
|
||||
/mob/living/simple_mob/slime/proc/update_mood()
|
||||
mood = "feral" // This is to avoid another override in the /feral subtype.
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
|
||||
else
|
||||
var/list/feedback = list(
|
||||
"This subject is incompatable",
|
||||
"This subject is incompatible",
|
||||
"This subject does not have a life energy",
|
||||
"This subject is empty",
|
||||
"I am not satisfied",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Here are where all the other colors of slime live.
|
||||
// They will generally fight each other if not Unified, meaning the xenobiologist has to seperate them.
|
||||
// They will generally fight each other if not Unified, meaning the xenobiologist has to separate them.
|
||||
|
||||
// Tier 1.
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
var/status_enabled = client.is_preference_enabled(/datum/client_preference/status_indicators)
|
||||
plane_holder.set_vis(VIS_STATUS, status_enabled)
|
||||
|
||||
//set macro to normal incase it was overriden (like cyborg currently does)
|
||||
//set macro to normal incase it was overridden (like cyborg currently does)
|
||||
client.set_hotkeys_macro("macro", "hotkeymode")
|
||||
|
||||
if(!client.tooltips)
|
||||
|
||||
@@ -548,7 +548,7 @@
|
||||
|
||||
/mob/proc/start_pulling(var/atom/movable/AM)
|
||||
|
||||
if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort!
|
||||
if ( !AM || !usr || src==AM || !isturf(src.loc) ) //if there's no person pulling OR the person is pulling themselves OR the object being pulled is inside something: abort!
|
||||
return
|
||||
|
||||
if (AM.anchored)
|
||||
@@ -1163,7 +1163,7 @@
|
||||
|
||||
// This handles setting the client's color variable, which makes everything look a specific color.
|
||||
// This proc is here so it can be called without needing to check if the client exists, or if the client relogs.
|
||||
// This is for inheritence since /mob/living will serve most cases. If you need ghosts to use this you'll have to implement that yourself.
|
||||
// This is for inheritance since /mob/living will serve most cases. If you need ghosts to use this you'll have to implement that yourself.
|
||||
/mob/proc/update_client_color()
|
||||
if(client && client.color)
|
||||
animate(client, color = null, time = 10)
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
qdel(mannequin)
|
||||
|
||||
spawning = 1
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS can't last forever yo
|
||||
|
||||
|
||||
observer.started_as_observer = 1
|
||||
@@ -477,7 +477,7 @@
|
||||
dat += "<b>Welcome, [name].<br></b>"
|
||||
dat += "Round Duration: [roundduration2text()]<br>"
|
||||
|
||||
if(emergency_shuttle) //In case NanoTrasen decides reposess CentCom's shuttles.
|
||||
if(emergency_shuttle) //In case NanoTrasen decides repossess CentCom's shuttles.
|
||||
if(emergency_shuttle.going_to_centcom()) //Shuttle is going to CentCom, not recalled
|
||||
dat += "<font color='red'><b>The station has been evacuated.</b></font><br>"
|
||||
if(emergency_shuttle.online())
|
||||
@@ -545,7 +545,7 @@
|
||||
else
|
||||
client.prefs.copy_to(new_character, icon_updates = TRUE)
|
||||
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS can't last forever yo
|
||||
|
||||
if(mind)
|
||||
mind.active = 0 //we wish to transfer the key manually
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
b_skin = blue
|
||||
|
||||
/datum/preferences/proc/dress_preview_mob(var/mob/living/carbon/human/mannequin)
|
||||
if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initailized.
|
||||
if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initialized.
|
||||
mannequin.dna = new /datum/dna(null)
|
||||
copy_to(mannequin, TRUE)
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
|
||||
/datum/preferences/proc/update_preview_icon()
|
||||
var/mob/living/carbon/human/dummy/mannequin/mannequin = get_mannequin(client_ckey)
|
||||
if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initailized.
|
||||
if(!mannequin.dna) // Special handling for preview icons before SSAtoms has initialized.
|
||||
mannequin.dna = new /datum/dna(null)
|
||||
mannequin.delete_inventory(TRUE)
|
||||
dress_preview_mob(mannequin)
|
||||
|
||||
@@ -2159,7 +2159,7 @@ shaved
|
||||
name = "Tajaran Smallsatche"
|
||||
icon_state = "facial_smallstache"
|
||||
|
||||
//unathi horn beards and the like
|
||||
//Unathi horn beards and the like
|
||||
|
||||
/datum/sprite_accessory/facial_hair/una
|
||||
name = "Unathi Chin Horn"
|
||||
@@ -4021,7 +4021,7 @@ shaved
|
||||
species_allowed = list(SPECIES_HUMAN,SPECIES_HUMAN_VATBORN)
|
||||
|
||||
/datum/sprite_accessory/skin/tajaran
|
||||
name = "Default tajaran skin"
|
||||
name = "Default Tajaran skin"
|
||||
icon_state = "default"
|
||||
icon = 'icons/mob/human_races/r_tajaran.dmi'
|
||||
species_allowed = list(SPECIES_TAJ)
|
||||
@@ -4033,7 +4033,7 @@ shaved
|
||||
species_allowed = list(SPECIES_UNATHI)
|
||||
|
||||
/datum/sprite_accessory/skin/skrell
|
||||
name = "Default skrell skin"
|
||||
name = "Default Skrell skin"
|
||||
icon_state = "default"
|
||||
icon = 'icons/mob/human_races/r_skrell.dmi'
|
||||
species_allowed = list(SPECIES_SKRELL)
|
||||
|
||||
@@ -214,35 +214,35 @@
|
||||
whitelist_allowed = list()
|
||||
|
||||
/datum/sprite_accessory/tail/special/unathi
|
||||
name = "unathi tail"
|
||||
name = "Unathi tail"
|
||||
icon_state = "sogtail_s"
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/unathi_damaged
|
||||
name = "unathi tail, damaged"
|
||||
name = "Unathi tail, damaged"
|
||||
icon_state = "unathitail_damaged_s"
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/unathi_stubby
|
||||
name = "unathi tail, stubby"
|
||||
name = "Unathi tail, stubby"
|
||||
icon_state = "unathitail_stubby_s"
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tajaran
|
||||
name = "tajaran tail"
|
||||
name = "Tajaran tail"
|
||||
icon_state = "tajtail_s"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/tajaran_damaged
|
||||
name = "tajaran tail, damaged/short"
|
||||
name = "Tajaran tail, damaged/short"
|
||||
icon_state = "tajtail_damaged_s"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tajaran_stubby
|
||||
name = "tajaran tail, stubby"
|
||||
name = "Tajaran tail, stubby"
|
||||
icon_state = "tajtail_stubby_s"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
@@ -252,65 +252,65 @@
|
||||
icon_state = "chimptail_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail
|
||||
name = "teshari tail"
|
||||
name = "Teshari tail"
|
||||
icon_state = "seromitail_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitailfeathered
|
||||
name = "teshari tail w/ feathers"
|
||||
name = "Teshari tail w/ feathers"
|
||||
icon_state = "seromitail_s"
|
||||
extra_overlay = "seromitail_feathers_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_pattern_1
|
||||
name = "teshari tail (pattern 1)"
|
||||
name = "Teshari tail (pattern 1)"
|
||||
icon_state = "teshitail"
|
||||
extra_overlay = "teshi_pattern_1"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_pattern_2
|
||||
name = "teshari tail (pattern 2)"
|
||||
name = "Teshari tail (pattern 2)"
|
||||
icon_state = "teshitail"
|
||||
extra_overlay = "teshi_pattern_2"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_noplume
|
||||
name = "teshari tail, no plumage"
|
||||
name = "Teshari tail, no plumage"
|
||||
icon_state = "teshtail_noplume_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_noplume_feathered
|
||||
name = "teshari tail, no plumage w/feathers"
|
||||
name = "Teshari tail, no plumage w/feathers"
|
||||
icon_state = "teshtail_noplume_s"
|
||||
extra_overlay = "teshtail_noplume_feathers_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged
|
||||
name = "teshari tail, damaged"
|
||||
name = "Teshari tail, damaged"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_feathered
|
||||
name = "teshari tail, damaged w/feathers"
|
||||
name = "Teshari tail, damaged w/feathers"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_feathers_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_unbranded
|
||||
name = "teshari tail, damaged w/ unbranded prosthetic"
|
||||
name = "Teshari tail, damaged w/ unbranded prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_prosthetic_unbranded_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_unbranded_feathered
|
||||
name = "teshari tail, damaged w/feathers + unbranded prosthetic"
|
||||
name = "Teshari tail, damaged w/feathers + unbranded prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_feathers_s"
|
||||
extra_overlay2 = "teshtail_damaged_prosthetic_unbranded_s"
|
||||
@@ -318,14 +318,14 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_cenilimi
|
||||
name = "teshari tail, damaged w/ Cenilimi Cybernetics prosthetic"
|
||||
name = "Teshari tail, damaged w/ Cenilimi Cybernetics prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_prosthetic_cenilimi_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_cenilimi_feathered
|
||||
name = "teshari tail, damaged w/feathers + Cenilimi Cybernetics prosthetic"
|
||||
name = "Teshari tail, damaged w/feathers + Cenilimi Cybernetics prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_feathers_s"
|
||||
extra_overlay2 = "teshtail_damaged_prosthetic_cenilimi_s"
|
||||
@@ -333,14 +333,14 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_wood
|
||||
name = "teshari tail, damaged w/ wooden prosthetic"
|
||||
name = "Teshari tail, damaged w/ wooden prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_prosthetic_wood_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_wood_feathered
|
||||
name = "teshari tail, damaged w/feathers + wooden prosthetic"
|
||||
name = "Teshari tail, damaged w/feathers + wooden prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_feathers_s"
|
||||
extra_overlay2 = "teshtail_damaged_prosthetic_wood_s"
|
||||
@@ -348,14 +348,14 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_sifwood
|
||||
name = "teshari tail, damaged w/ Sivian wooden prosthetic"
|
||||
name = "Teshari tail, damaged w/ Sivian wooden prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_prosthetic_wood_sif_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_damaged_sifwood_feathered
|
||||
name = "teshari tail, damaged w/feathers + Sivian wooden prosthetic"
|
||||
name = "Teshari tail, damaged w/feathers + Sivian wooden prosthetic"
|
||||
icon_state = "teshtail_damaged_s"
|
||||
extra_overlay = "teshtail_damaged_feathers_s"
|
||||
extra_overlay2 = "teshtail_damaged_prosthetic_wood_sif_s"
|
||||
@@ -369,21 +369,21 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_feathered
|
||||
name = "teshari tail, stubby w/feathers"
|
||||
name = "Teshari tail, stubby w/feathers"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_feathers_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_unbranded
|
||||
name = "teshari tail, stubby w/ unbranded prosthetic"
|
||||
name = "Teshari tail, stubby w/ unbranded prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_prosthetic_unbranded_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_unbranded_feathered
|
||||
name = "teshari tail, stubby w/ feathers + unbranded prosthetic"
|
||||
name = "Teshari tail, stubby w/ feathers + unbranded prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_feathers_s"
|
||||
extra_overlay2 = "teshtail_stubby_prosthetic_unbranded_s"
|
||||
@@ -391,14 +391,14 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_cenilimi
|
||||
name = "teshari tail, stubby w/ Cenilimi Cybernetics prosthetic"
|
||||
name = "Teshari tail, stubby w/ Cenilimi Cybernetics prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_prosthetic_cenilimi_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_cenilimi_feathered
|
||||
name = "teshari tail, stubby w/ feathers + Cenilimi Cybernetics prosthetic"
|
||||
name = "Teshari tail, stubby w/ feathers + Cenilimi Cybernetics prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_feathers_s"
|
||||
extra_overlay2 = "teshtail_stubby_prosthetic_cenilimi_s"
|
||||
@@ -406,14 +406,14 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_wood
|
||||
name = "teshari tail, stubby w/ wooden prosthetic"
|
||||
name = "Teshari tail, stubby w/ wooden prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_prosthetic_wood_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_wood_feathered
|
||||
name = "teshari tail, stubby w/feathers + wooden prosthetic"
|
||||
name = "Teshari tail, stubby w/feathers + wooden prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_feathers_s"
|
||||
extra_overlay2 = "teshtail_stubby_prosthetic_wood_s"
|
||||
@@ -421,14 +421,14 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_sifwood
|
||||
name = "teshari tail, stubby w/ Sivian wooden prosthetic"
|
||||
name = "Teshari tail, stubby w/ Sivian wooden prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_prosthetic_wood_sif_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_stubby_sifwood_feathered
|
||||
name = "teshari tail, stubby w/feathers + Sivian wooden prosthetic"
|
||||
name = "Teshari tail, stubby w/feathers + Sivian wooden prosthetic"
|
||||
icon_state = "teshtail_stubby_s"
|
||||
extra_overlay = "teshtail_stubby_feathers_s"
|
||||
extra_overlay2 = "teshtail_stubby_prosthetic_wood_sif_s"
|
||||
@@ -436,24 +436,24 @@
|
||||
color_blend_mode = ICON_ADD
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_prosthetic_unbranded
|
||||
name = "teshari tail, unbranded prosthetic"
|
||||
name = "Teshari tail, unbranded prosthetic"
|
||||
icon_state = "teshtail_prosthetic_unbranded_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
do_colouration = FALSE
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitail_prosthetic_cenilimi
|
||||
name = "teshari tail, Cenilimi Cybernetics prosthetic"
|
||||
name = "Teshari tail, Cenilimi Cybernetics prosthetic"
|
||||
icon_state = "teshtail_prosthetic_cenilimi_s"
|
||||
species_allowed = list(SPECIES_TESHARI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
do_colouration = FALSE
|
||||
|
||||
/datum/sprite_accessory/tail/special/unathihc
|
||||
name = "unathi tail"
|
||||
name = "Unathi tail"
|
||||
icon_state = "sogtail_hc_s"
|
||||
species_allowed = list(SPECIES_UNATHI, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
/datum/sprite_accessory/tail/special/tajaranhc
|
||||
name = "tajaran tail"
|
||||
name = "Tajaran tail"
|
||||
icon_state = "tajtail_hc_s"
|
||||
species_allowed = list(SPECIES_TAJ, SPECIES_EVENT1, SPECIES_EVENT2, SPECIES_EVENT3)
|
||||
|
||||
@@ -470,11 +470,11 @@
|
||||
icon_state = "chimptail_hc_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitailhc
|
||||
name = "teshari tail"
|
||||
name = "Teshari tail"
|
||||
icon_state = "seromitail_hc_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/tesharitailfeatheredhc
|
||||
name = "teshari tail w/ feathers"
|
||||
name = "Teshari tail w/ feathers"
|
||||
icon_state = "seromitail_feathers_hc_s"
|
||||
|
||||
/datum/sprite_accessory/tail/special/vulpan
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
/* Certain mob types have problems and should not be allowed to be controlled by players.
|
||||
*
|
||||
* This proc is here to force coders to manually place their mob in this list, hopefully tested.
|
||||
* This also gives a place to explain -why- players shouldnt be turn into certain mobs and hopefully someone can fix them.
|
||||
* This also gives a place to explain -why- players shouldn't be turn into certain mobs and hopefully someone can fix them.
|
||||
*/
|
||||
/mob/proc/safe_animal(var/MP)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user